summaryrefslogtreecommitdiff
path: root/npc/001-7/celestia_bossfight.txt
blob: eaff99c8f027a26e34e1be31ccdbe66dd9168419 (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
// TMW2 Scripts
// Author:
//   Jesusalva
// Description:
//   Celestia Yeti King's quest. This controls the final showdown, and brings you
//   back home safely.
//
//      If you cheated your way to here, you won't be able to interact with it.
//      No other safety measures are in place. Lone players cannot challenge the
//      Yeti King, there must be at least 2 players there to do the challenge.
//      BEWARE, the Yeti King gains stronger poisons the more people are attacking him.
//      
//      $@GM_OVERRIDE allows a single player to challenge him, as usual with all
//      co-op scripts.
//
//      If you do not challenge him, the chance to challenge him again is lost.

001-7,33,39,0	script	#YetiKing	NPC_YETI_KING,0,0,{
    .@q=getq(HurnscaldQuest_Celestia);
    if (.@q == 5 && !mobcount(.map$, "#YetiKing::OnVictory")) goto L_Survivor;
    if (.@q == 6) goto L_GoHome;
    end;

L_GoHome:
    mes col("Go home now?", 9);
    if (askyesno() == ASK_YES)
        warp "003-1-1", 94, 22;
    closedialog;
    if (!getareausers("001-7", 7))
        setnpcdisplay .name$, NPC_YETI_KING;
    close;

L_Survivor:
    mesn col("The Yeti King", 3);
    mesq l("Good job, kid. You've survived both the Cave Of Trials and Soren's Village.");
    next;
    mesn col("The Yeti King", 3);
    mesq l("That was only to prove you're strong enough on yourself to do whatever you want to do. You have friends.");
    next;
    mesn col("The Yeti King", 3);
    mesq l("In this world, your friends are your strength. You deserve a reward for the victory, please choose whatever you want.");
    select
        l("I want a gemstone or ore"),
        l("I want experience"),
        l("I want gold"),
        l("I want coal");

    mes "";
    .@r=rand(1,100);
    switch (@menu) {
        case 1:
            if (.@r < 30)
                getitem rand(Diamond, Amethyst), 1;
            else
                getitem rand(CopperOre, TitaniumOre), 1;
            break;
        case 2:
            getexp .@r*20, .@r; // max 2000 xp and 100 jp
            break;
        case 3:
            Zeny=Zeny+.@r*25; // max 2500 gp
            break;
        case 4:
            getitem Coal, (.@r/20); // max 5 coal
            break;
    }
    compareandsetq HurnscaldQuest_Celestia, 5, 6;
    mesn col("The Yeti King", 3);
    mesq l("Here kid. Frostia, the elf town, is somewhere near here, but I'm not sure if you can reach it from here.");
    next;
    mesn col("The Yeti King", 3);
    mesq l("I can warp you home now.");
    mes "";
    select
        l("Please, bring me back home."),
        rif((getareausers("001-7", 7) > 1 || $@GM_OVERRIDE) && !mobcount(.map$, "#YetiKing::OnVictory"), l("No, we challenge you to a duel!")),
        l("I'll walk around here a little more.");

    mes "";
    switch (@menu) {
        case 1:
            warp "003-1-1", 94, 22;
            break;
        case 2:
            compareandsetq HurnscaldQuest_Celestia, 6, 7;
            mesn col("The Yeti King", 3);
            mesq l("Foolish kids, do you think violence is the answer to everything?!");
            next;
            mesn col("The Yeti King", 3);
            mesq l("I give you three minutes to defeat me. Witness my wrath!");
            setnpcdisplay .name$, NPC_NO_SPRITE;
            monster .map$, .x, .y, strmobinfo(1, YetiKing), YetiKing, 1, "#YetiKing::OnVictory";
            initnpctimer;
            break;
    }
    close;

OnVictory:
    stopnpctimer;
    setnpcdisplay .name$, NPC_SUMMONING_CIRC;
    npctalk l("Good job... You can keep the drops. Touch here to return home.");
    areatimer "006-1", 20, 20, 141, 171, 10, "#YetiKing::OnDefeat";
    end;

// This allows the challenger to go back home without dying.
OnDefeat:
    compareandsetq HurnscaldQuest_Celestia, 7, 6;
    end;

OnTimer60000:
    npctalk "Time left: 2 minutes";
    end;

OnTimer120000:
    npctalk "Time left: 1 minute";
    end;

OnTimer150000:
    npctalk "Time left: 30 seconds";
    end;

OnTimer170000:
    npctalk "Time left: 10 seconds";
    end;

OnTimer180000:
    npctalk "Time is up!";
    killmonster(.map$, "#YetiKing::OnVictory"); // I could use "All" as label, too
    end;

}