summaryrefslogtreecommitdiff
path: root/npc/025-1/commander.txt
blob: 52b01c846bc2cb8c6dd4d32ab47598efa8691d66 (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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
// TMW2 scripts.
// Author:
//    Jesusalva
// Description:
//   Leads the Alliance in the Fortress Town

025-1,96,26,0	script	Commander Povo	NPC_BRGUARD_SPEAR,{
    mesn;
    mesq l("Greetings %s, I am %s, the man in charge for the Alliance occupation of Fortress Town.", (strcharinfo(0) == $MOST_HEROIC$ ? lg("Hero") : lg("Adventurer")), .name$);
    next;

    // Endtrail
    mes "";
    mesc l("@@ You need to wait further releases to continue this quest!", b(l("WARNING:"))), 1;
    close;

OnInit:
    .sex = G_MALE;
    .distance = 5;
    end;
}

/////////////////////////////////////////////////////////////////////////////////
025-1,59,86,0	script	Commander Cadis	NPC_BRGUARD_SWORD,{
    function cadisReward;
    mesn;
    mesq l("Greetings %s, I am %s, I am in charge of monster extermination.", (strcharinfo(0) == $MOST_HEROIC$ ? lg("Hero") : lg("Adventurer")), .name$);
    next;
    // Check for ongoing quests
    if (getq(FortressQuest_SlimeHunter) == 1)
        goto L_SlimeHunter;
    if (getq(FortressQuest_Over100) == 1)
        goto L_Over100;
    if (getq(FortressQuest_RangedHunt) == 1)
        goto L_RangedHunt;
    mesn;
    mesq l("I have extremely difficult quests for you; They are more painful than a Grand Hunter Quest, because I don't admit wimps fighting with me.");
    next;
    mesn;
    mesq l("You will be rewarded by me shall you succeed in any of the tasks.");
    mesc l("%s: Once accepted, you must complete them before taking another one.", b(l("WARNING")));
    // Well, we *could* make it more GHQ-like but lazy devs are lazy.
    next;
    do
    {
        select
            l("I'm not interested."),
            rif(!getq(FortressQuest_SlimeHunter), l("The Great Slime Hunt")),
            rif(!getq(FortressQuest_Over100), l("The Great Over 100 Hunt")),
            rif(!getq(FortressQuest_RangedHunt), l("The Great Ranged Hunt"));
        mes "";
        switch (@menu) {
        case 1:
            close;
        case 2:
            mesn;
            mesq l("You'll have to slay %s %s for me! I don't care which ones, just SLAY THEM!", fnum(.million), l("slimes"));
            next;
            select
                l("Accept"),
                l("Reject");
            mes "";
            if (@menu == 1) {
                setq1 FortressQuest_SlimeHunter, 1;
                mesn;
                mesq l("Then get to work already!");
                close;
            }
            break;
        case 3:
            mesn;
            mesq l("You'll have to slay %s %s for me! I don't care which ones, just SLAY THEM!", fnum(.million), l("monsters of at least level 100"));
            mesc l("Each monster will be counted as %d kills.", 2);
            next;
            select
                l("Accept"),
                l("Reject");
            mes "";
            if (@menu == 1) {
                setq1 FortressQuest_Over100, 1;
                mesn;
                mesq l("Then get to work already!");
                close;
            }
            break;
        case 4:
            mesn;
            mesq l("You'll have to slay %s %s for me! I don't care which ones, just SLAY THEM!", fnum(.million), l("ranged monsters"));
            mesc l("Minimum range: %d", 3);
            next;
            select
                l("Accept"),
                l("Reject");
            mes "";
            if (@menu == 1) {
                setq1 FortressQuest_RangedHunt, 1;
                mesn;
                mesq l("Then get to work already!");
                close;
            }
            break;
        }
    } while (true);
    close;

L_SlimeHunter:
    cadisReward(FortressQuest_SlimeHunter, l("Slimes"));
    close;

L_Over100:
    cadisReward(FortressQuest_Over100, l("over 100 mobs"));
    close;

L_RangedHunt:
    cadisReward(FortressQuest_RangedHunt, l("ranged mobs"));
    close;

function cadisReward {
    .@kill=getq2(getarg(0));
    .@rewa=getq3(getarg(0));
    mesn;
    mesq l("Thus far you've slain %s/%s %s for me!", fnum(.@kill), fnum(.million), b(getarg(1, "monsters")));
    inventoryplace NPCEyes, 4, Iten, 2;

    // ***** ***** *****   Rewards   ***** ***** *****
    if (.@kill >= .tier1 && .@rewa < 1) {
        mesc l("Milestone reached: %s kills", fnum(.tier1));
        setq3 getarg(0), 1;
        getitem MercenaryBoxsetDD, 3;
        getitem SacredImmortalityPotion, 2;
        getitem MercenaryBoxsetE, 1;
    }

    if (.@kill >= .tier2 && .@rewa < 2) {
        mesc l("Milestone reached: %s kills", fnum(.tier2));
        setq3 getarg(0), 2;
        getitem MercenaryBoxsetEE, 1;
        getitem MagicApple, 1;
        getitem EquipmentBlueprintE, 1;
        getitem IridiumOre, 2;
    }

    if (.@kill >= .tier3 && .@rewa < 3) {
        mesc l("Milestone reached: %s kills", fnum(.tier3));
        setq3 getarg(0), 3;
        getitem MercenaryBoxsetEE, 2;
        getitem StrangeCoin, 50;
        getitem EarthPowder, 2;
        getitem PlatinumOre, 1;
    }

    if (.@kill >= .tier4 && .@rewa < 4) {
        mesc l("Milestone reached: %s kills", fnum(.tier4));
        setq3 getarg(0), 4;
        getitem MercenaryBoxsetEE, 3;
        getitem ElixirOfLife, 5;
        getitem EarthPowder, 2;
        getitem PlatinumOre, 1;
    }


    // Quest complete
    if (.@kill >= .million) {
        mesc b(l("Quest complete: Congratulations!")), 3;
        setq1 getarg(0), 2;
        setq3 getarg(0), 5;
        getitem MercenaryBoxsetEE, 5;
        getitem StrangeCoin, 100;
        getitem EarthPowder, 3;
        getitem any(LuckFruit, DexterityFruit, IntelligenceFruit, VitalityFruit, AgilityFruit, StrengthFruit), 1;
        getitem MysteriousFruit, 1;
    }
    return;
}

OnInit:
    .sex = G_MALE;
    .distance = 5;
    .million = 1000000;

    .tier1 =  10000;
    .tier2 =  50000;
    .tier3 = 250000;
    .tier4 = 500000;
    end;
}

// Commander Cadis Questcheck
function	script	CadisQuestCheck	{
    if (!playerattached())
        return;

    .@mobId=getarg(0, killedrid);

    if (getq(FortressQuest_SlimeHunter) == 1) {
        // Register the kill
        if (compare("slime", strtolower(strmobinfo(1, .@mobId)))) {
            setq2 FortressQuest_SlimeHunter, getq2(FortressQuest_SlimeHunter)+1;
        // Report every 1000 kills
        if (getq2(FortressQuest_SlimeHunter) % 1000 == 0)
            dispbottom l("Cadis : You have slain %s %s out of a million.", fnum(getq2(FortressQuest_SlimeHunter)), l("slimes"));
        }
    }

    if (getq(FortressQuest_Over100) == 1) {
        // Register the kill as doubled (to make easier)
        if (getmonsterinfo(.@mobId, MOB_LV) >= 100) {
            setq2 FortressQuest_Over100, getq2(FortressQuest_Over100)+2;
        // Report every 1000 kills
        if (getq2(FortressQuest_Over100) % 1000 == 0)
            dispbottom l("Cadis : You have slain %s %s out of a million.", fnum(getq2(FortressQuest_SlimeHunter)), l("mobs over lv 100"));
        }
    }

    if (getq(FortressQuest_RangedHunt) == 1) {
        // Register the kill
        if (getmonsterinfo(.@mobId, MOB_RANGE) >= 3) {
            setq2 FortressQuest_RangedHunt, getq2(FortressQuest_RangedHunt)+1;
        // Report every 1000 kills
        if (getq2(FortressQuest_RangedHunt) % 1000 == 0)
            dispbottom l("Cadis : You have slain %s %s out of a million.", fnum(getq2(FortressQuest_SlimeHunter)), l("ranged mobs"));
        }
    }

    return;
}