summaryrefslogtreecommitdiff
path: root/npc/003-10/kreist.txt
blob: d688aa39b9f60d6c117806958b7322e310726a6a (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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
// 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?", .name$);
    next;
    mesc l("Protip: All quests expire at 00:00 server time, be sure to finish AND report back before that!");
    // Borrowed from Arkim Code
    mesc l("Time remaining to report completion: ")+FuzzyTime($@ARKIM_TIMER+86400), 1;

    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=3;
            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=12;
            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 == 3) {
            .@q2=any(Maggot, Scorpion, Croc, FireGoblin, CaveMaggot, Duck);
        } else if (.@lv == 5) {
            .@q2=any(GiantMaggot, CaveSnake, DesertBandit, Sarracenus, DesertLogHead, RedScorpion);
        } else if (.@lv == 12) {
            .@q2=any(BlackScorpion, Snake, MountainSnake);
        } else {
            Exception("Bad setting for GMH.LV: "+.@lv, RB_DEFAULT|RB_SPEECH|RB_ISFATAL);
        }
        setq .@q, .@q1, .@q2, 0;
    }

    // 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;
    }

    // Maybe you finished the quest?
    if (.@q3 >= 50) {
        mesn l("Kreist, Taskmaster");
        mesq l("Good job, you've killed the @@ @@ and reported back in time!", 50, getmonsterlink(.@q2));
        next;
        inventoryplace MercBoxA, 1;
        if (MERCENARY_DAILYQUEST == 100) {
            inventoryplace BountyHunterHelmet, 1;
            getitem BountyHunterHelmet, 1;
        }
        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!");
        .@overkill=.@q3-50;
        Zeny+=.@lv*(42+MERCENARY_DAILYQUEST);
        // Raise LV according to monster level
        .@lv+=getmonsterinfo(MOB_LV, .@q2)+MERCENARY_DAILYQUEST*11/10;
        getexp BaseLevel*.@lv, .@lv+.@overkill;
        setq2 .@q, 0;
        setq3 .@q, 0;
        MERCENARY_DAILYQUEST+=1;
        if (MERCENARY_DAILYQUEST % 5 == 0) {
            getitem MercBoxA, 1;
        }
        close;
    }

    mesn l("Kreist, Taskmaster");
    mesq l("So, please kill @@/@@ @@ for us and make the world a safer place!", .@q3, 50, 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("@@/@@ @@ killed", .@q3, 50, 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("@@/@@ @@ killed", .@q3, 50, 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("@@/@@ @@ killed", .@q3, 50, 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("@@/@@ @@ killed", .@q3, 50, getmonsterlink(.@mobId));
    }

    return;
}