summaryrefslogtreecommitdiff
path: root/npc/015-8/puzzle.txt
blob: a62a56ac5c0996c68fd7a6c252d2ccc91c0e35c7 (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
// TMW2 scripts.
// Author:
//    Jesusalva
// Description:
//    PUZZLES and TRAPS submodule - Sagratha's Cave - 015-8
// Uses setq3 - setq1 stage 3
// NPC_FAKIR + NPC_STATUE_FAFA

// Chasm at third seal
015-8,120,158,0	script	#SaggyPuzzleChasm	NPC_HIDDEN,0,4,{
    end;
OnTouch:
    do {
        if (@saggychasmok) {
            slide 125, 160;
            closedialog;
            end;
        }

        mesc l("There is a chasm.");
        select
            l("Drop a coin to hear how deep it is"),
            l("Climb on the walls!"),
            l("Run and try jumping it!"),
            l("Build a bridge with wooden logs!"),
            l("Uhh... I'm scared!");
        mes "";
        switch (@menu) {
        case 1:
            if (!Zeny) {
                mesc l("You don't have money.");
            } else {
                Zeny-=1;
                mesc l("You throw a coin on the chasm.");
                next;
                mesc l("... ... ...");
                next;
                mesc l("You don't hear anything. This chasm must be incredibly deep.");
                next;
                mesc l("Falling means certain death.");
            }
            break;
        // Let's climb the wall!
        case 2:
            if (readparam2(bStr) < 20 || (!countitem(MinerGloves) && !countitem(LeatherGloves))) {
                mesc l("You don't have proper equipment for it.");
            } else {
                mesc l("Taking your sturdy glove, you attempt to walk by the wall! You are betting your life on it!");
                next;
                mesc l("A stone seemed to be loose, but you barely managed to avoid falling!");
                next;
                mesc l("This is difficult, but you are giving your best!!");
                next;
                mesc l("You are close... You are almost there!");
                next;
                // We get a bit more than 50% - we take 60%, so your chances are
                // higher than jumping... But you need two stats, instead of one!
                // (Top will be 120 instead of 100 - thus, 720 out of 640)
                .@ponderate=(readparam2(bStr)+readparam2(bVit))/100*60;
                if (rand(0,1000) < 640-(.@ponderate*6)) {
                    mesc l("But unfortunately, a loose stone lodges and you fall to your death."), 1;
                    die();
                    close;
                }
                mesc l("You succeed in crossing the chasm!");
                @saggychasmok=true;
            }
            break;
        // Let's run it!
        case 3:
            if (readparam2(bAgi) < 20 || Weight > 1500) {
                mesc l("You don't have enough agility / is carrying too much to attempt it.");
            } else {
                mesc l("You'll give your best and attempt to run!");
                next;
                mesc l("You take distance and...");
                next;
                mesc l("YOU JUMP FOR ALL IT IS WORTH!!");
                // (You can always fall as top is 600 of 640)
                if (rand(0,1000) < 640-(readparam2(bAgi)*6)) {
                    mesc l("But unfortunately, it was harder than you thought. You are dead."), 1;
                    die();
                    close;
                }
                mesc l("You succeed in crossing the chasm!");
                @saggychasmok=true;
            }
            break;
        // Let's make a bridge!
        case 4:
            if (countitem(WoodenLog) < 5 || !getskilllv(TMW2_CRAFT)) {
                mesc l("You don't have enough wood (5 @@) or crafting skills to do it.", getitemlink(WoodenLog));
            } else {
                mesc l("...");
                next;
                mesc l("After hours of hard work...");
                next;
                mesc l("You succeed in crossing the chasm!");
                delitem WoodenLog, 5;
                @saggychasmok=true;
            }
            break;
        default:
            close;
        }
        next;
    } while (true);
    close;
}

015-8,124,158,0	script	#SaggyPuzzleChasmSkip	NPC_HIDDEN,0,4,{
    end;
OnTouch:
    slide 119, 160;
    end;
}


// Controls a chest/mimic on the trap room
015-8,0,0,0	script	#SaggyChestCtrl	NPC_HIDDEN,{
    end;

OnDelay:
    initnpctimer;
    end;

OnTimer180000:
    stopnpctimer;
OnInit:
    monster "015-8", 119+rand2(-3, 3), 35+rand2(-3, 3), "Treasure Chest", any(BronzeChest,BronzeMimic,SilverChest,SilverMimic), 1, "#SaggyChestCtrl::OnDelay";
    end;
}