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
148
149
150
151
152
|
// TMW2 Scripts
// Author:
// Jesusalva
// Description:
// Tulimshar Guardhouse Taskmaster
003-10,41,63,0 script Kreist NPC_PLAYER,{
.@d=gettimeparam(GETTIME_DAYOFMONTH);
mesn l("Kreist, Taskmaster");
mesq l("Hello, and welcome to Tulimshar guard house.");
next;
mesn l("Kreist, Taskmaster");
mesq l("My name is @@ and I am the daily task master. Interested in keeping this world free from monsters, or to report back?");
next;
select
l("I want a EASY task!"),
l("I want a MODERATE task!"),
l("I want a EXPERT task!"),
l("It was nice seeing you.");
mes "";
switch (@menu) {
case 1:
.@q1=getq(General_MobHunting1);
.@q2=getq2(General_MobHunting1);
.@q3=getq3(General_MobHunting1);
.@q=General_MobHunting1;
.@lv=1;
goto L_QuestMaster;
case 2:
.@q1=getq(General_MobHunting2);
.@q2=getq2(General_MobHunting2);
.@q3=getq3(General_MobHunting2);
.@q=General_MobHunting2;
.@lv=5;
goto L_QuestMaster;
case 3:
.@q1=getq(General_MobHunting3);
.@q2=getq2(General_MobHunting3);
.@q3=getq3(General_MobHunting3);
.@q=General_MobHunting3;
.@lv=14;
goto L_QuestMaster;
}
closeclientdialog;
goodbye();
close;
L_QuestMaster:
// It's a new day, so we must generate a new quest!
if (.@q1 != .@d) {
.@q1=.@d;
if (.@lv == 1) {
.@q2=any(Maggot, Scorpion, Croc, FireGoblin, CaveMaggot, RedScorpion, Duck);
} else if (.@lv == 5) {
.@q2=any(GiantMaggot, CaveSnake, DesertBandit, Sarracenus, DesertLogHead);
} else if (.@lv == 14) {
.@q2=any(BlackScorpion, Snake);
} else {
Exception("Bad setting for GMH.LV: "+.@lv, RB_DEFAULT|RB_SPEECH|RB_ISFATAL);
}
setq .@q, .@q1, .@q2, 0;
}
// Maybe you finished the quest?
if (.@q3 >= 100) {
mesn l("Kreist, Taskmaster");
mesq l("Good job, you've killed the 100 @@ and reported back in time!", getmonsterlink(.@q2));
next;
mesn l("Kreist, Taskmaster");
mesq l("It's not much of a reward, but doesn't it feels great to help others in need?! HAHAHA!");
Zeny+=.@lv*5;
getexp BaseLevel*.@lv, .@lv;
setq2 .@q, 0;
close;
}
// Maybe there is no monster to kill
if (!.@q2) {
mesn l("Kreist, Taskmaster");
mesq l("You've already completed this quest today. Try again tomorrow.");
close;
}
mesn l("Kreist, Taskmaster");
mesq l("So, please kill @@/100 @@ for us and make the world a safer place!", .@q3, getmonsterlink(.@q2));
close;
OnInit:
// Check items.xml for info about this.
.@npcId = getnpcid(.name$);
setunitdata(.@npcId, UDT_HEADTOP, WarlordHelmet);
setunitdata(.@npcId, UDT_HEADMIDDLE, LieutenantArmor);
setunitdata(.@npcId, UDT_HEADBOTTOM, RaidTrousers);
setunitdata(.@npcId, UDT_SHIELD, LousyMoccasins); // TODO FIXME: Display Boots
setunitdata(.@npcId, UDT_WEAPON, Backsword);
setunitdata(.@npcId, UDT_HAIRSTYLE, 7);
setunitdata(.@npcId, UDT_HAIRCOLOR, 15);
npcsit;
.sex = G_MALE;
.distance = 4;
end;
}
// What is with this stupidly long quest name?
function script Guardhouse_RandQuestCheck {
if (!playerattached())
return;
.@mobId=getarg(0, killedrid);
.@d=gettimeparam(GETTIME_DAYOFMONTH);
// Easy Task
if (getq(General_MobHunting1) == .@d &&
getq2(General_MobHunting1) == .@mobId) {
.@q3=getq3(General_MobHunting1)+1;
setq3 General_MobHunting1, .@q3;
if (!(.@q3 % 10))
dispbottom l("@@/100 @@ killed", .@q3, getmonsterlink(.@mobId));
}
// Medium Task
if (getq(General_MobHunting2) == .@d &&
getq2(General_MobHunting2) == .@mobId) {
.@q3=getq3(General_MobHunting2)+1;
setq3 General_MobHunting2, .@q3;
if (!(.@q3 % 10))
dispbottom l("@@/100 @@ killed", .@q3, getmonsterlink(.@mobId));
}
// Hard Task
if (getq(General_MobHunting3) == .@d &&
getq2(General_MobHunting3) == .@mobId) {
.@q3=getq3(General_MobHunting3)+1;
setq3 General_MobHunting3, .@q3;
if (!(.@q3 % 10))
dispbottom l("@@/100 @@ killed", .@q3, getmonsterlink(.@mobId));
}
// Frostia's Task
if (getq(General_MobHunting4) == .@d &&
getq2(General_MobHunting4) == .@mobId) {
.@q3=getq3(General_MobHunting4)+1;
setq3 General_MobHunting4, .@q3;
if (!(.@q3 % 10))
dispbottom l("@@/100 @@ killed", .@q3, getmonsterlink(.@mobId));
}
return;
}
|