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
|
// TMW2 scripts.
// Authors:
// Jesusalva
// Description:
// Generals
// FrostiaTaskMaster(lvl)
function script FrostiaTaskMaster {
.@q=General_MobHunting4;
.@q1=getq(General_MobHunting4);
.@q2=getq2(General_MobHunting4);
.@q3=getq3(General_MobHunting4);
.@d=gettimeparam(GETTIME_DAYOFMONTH);
.@lv=getarg(0, 1);
// It's a new day, so we must generate a new quest!
if (.@q1 != .@d) {
.@q1=.@d;
.@q2=any(Moggun, IcedFluffy, Fluffy, Pollet, BlueSlime, WhiteSlime, SantaSlime, AzulSlime, RudolphSlime); // WaterFairy
setq .@q, .@q1, .@q2, 0;
}
// Maybe there is no monster to kill
if (!.@q2) {
mesn;
mesq l("You've already completed this quest today. Try again tomorrow.");
return true;
}
// Maybe you finished the quest?
if (.@q3 >= 50) {
mesn;
mesq l("Good job, you've killed the @@ @@ and reported back in time!", 50, getmonsterlink(.@q2));
next;
mesn;
mesq l("It's not much of a reward, but doesn't it feels great to help others in need?! HAHAHA!");
Zeny+=.@lv*8;
// Raise LV according to monster level
.@lv+=strmobinfo(3, .@q2);
getexp BaseLevel*.@lv, .@lv;
setq2 .@q, 0;
setq3 .@q, 0;
return false;
}
mesn;
mesq l("Please kill @@/@@ @@ for us and make the world a safer place!", .@q3, 50, getmonsterlink(.@q2));
return false;
}
// FrostiaGeneralQuest( Skillname )
function script FrostiaGeneralQuest {
.@at$=getarg(0);
mesn;
mesq l("Hey. You there. Time to do @@ and show what you're made of.", .@at$);
next;
mesn;
mesq l("If you conclude the training, you'll be suitable for the difficult mission our King have to you.");
next;
mesc b(l(".:: Main Quest 4-3 ::.")), 3;
msObjective(BaseLevel >= 52, l("* @@/@@ Base Level", BaseLevel, 52));
msObjective(JobLevel >= 24, l("* @@/@@ Job Level", JobLevel, 24));
//msObjective(JobLevel >= 24, l("* Win an Arena Match"));
next;
if (BaseLevel >= 52 && JobLevel >= 24) {
mesn;
mesq l("Congrats, you did it.");
next;
mesn;
mesq l("So, if you hired a Mercenary to protect your back... Would you prefer it to attack from rearguard, or charge against certain death, buying you time?");
next;
select
l("I honestely wouldn't hire a Mercenary."),
l("Running is for noobs, we should hold our ground!"),
l("I can protect myself, so it should attack from afar.");
mes "";
// Decide which mercenary you'll get
if (@menu == 2)
.@card=MercCard_Saulc;
else if (@menu == 3)
.@card=MercCard_Arthur;
else
.@card=any(MercCard_Saulc, MercCard_Arthur);
inventoryplace ElixirOfLife, 1, .@card, 1, Grenade, 3;
mesn;
mesq l("Take this @@. It might save your life on the secret mission you're about to be assigned to.", getitemlink(.@card));
next;
mesn;
mesq l("I'll also provide you a few @@s and an Elixir. Use them wisely.", getitemlink(Grenade));
next;
mesn;
mesq l("Now go talk to the King.");
setq General_Narrator, 15;
getitem Grenade, 3;
getitem .@card, 1;
getitem ElixirOfLife, 1;
getexp 0, 400; // Get 10% JEXP. Reference: 3988~5564
close;
}
mesn;
mesq l("Now, a simple @@ quest to make you stronger...", .@at$);
next;
if (FrostiaTaskMaster(20)) {
next;
mesn;
mesq l("Or maybe... You want to try again right now? I'll do whatever needed to level you up to less-noobish levels.");
next;
if (askyesno() == ASK_YES) {
setq General_MobHunting4, 0, 0, 0;
FrostiaTaskMaster(20);
}
}
close;
}
//////////////////////////////////////////////////////////////////////
024-16,29,21,0 script Wizard General NPC_BLUESABER,{
.@q=getq(General_Narrator);
if (.@q == 14)
FrostiaGeneralQuest("Magic");
else
FrostiaTaskMaster(20);
close;
OnInit:
.distance=5;
end;
}
024-16,31,21,0 script Warrior General NPC_REDSABER,{
.@q=getq(General_Narrator);
if (.@q == 14)
FrostiaGeneralQuest("Fight");
else
FrostiaTaskMaster(20);
close;
OnInit:
.distance=5;
end;
}
|