summaryrefslogtreecommitdiff
path: root/npc/026-3/ctrl.c
blob: fd8c521389f44f40b71829f253091244536bbc64 (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
// TMW2 scripts.
// Author:
//    Jesusalva
// Description:
//   The Impregnable Fortress Control Files
// Quest: General_Fortress
//  (MaxFloor+1, internal, internal)

// 0263Event(switchID)
function	script	0263Event	{
    // Terminate the script if you already flipped it (also to stop trolls)
    if (getq(General_Fortress) != 4) end;
    if (getq2(General_Fortress) & getarg(0)) {
        dispbottom l("I have already flipped this switch earlier.");
        end;
    }
    // Flip it for good
    setq2 General_Fortress, getq2(General_Fortress) | getarg(0);
    // And if all switches are flipped...!
    if (getq2(General_Fortress) == 15) {
        setq General_Fortress, 5, 0, 0;
        specialeffect(FX_CIRCLE, SELF, getcharid(3));
    }
    return;
}

// The main entrance
026-3,55,128,0	script	Impregnable#B3F	NPC_HIDDEN,0,0,{
    end;

OnTouch:
    dispbottom l("From this point forward, you'll no longer be able to return to the previous floor.");
    if (getq(General_Fortress) > 5) goto L_Warp;
    mesc l(".:: Impregnable Fortress, %sF ::.", "B3"), 3;
    msObjective(getq(General_Fortress) == 5, l("* Flip all four switches"));
    msObjective($MK_TEMPVAR < MKIF_LV_B3F, l("Minimum wins: %d/%d", $MK_TEMPVAR, MKIF_LV_B4F));
    mes "";
    mesc l("Hint: You cannot unflip a switch, but they unflip every 12 hours.");
    end;

L_Warp:
    // Not unlocked
    if ($GAME_STORYLINE >= 3 && $MK_TEMPVAR < MKIF_LV_B4F) {
        mesc l("The gate is sealed shut."), 1;
        mesc l("The monster army is still strong on this floor!"), 1;
        mesc l("Minimum wins: %d/%d", $MK_TEMPVAR, MKIF_LV_B4F), 1;
        close;
    }
    //warp "026-4", X, Y;
    dispbottom l("Coming Soon, in Moubootaur Legends!");
    end;

// Reset the switches
OnClock0500:
OnClock1700:
	setnpcdisplay "#026-3_129_38", NPC_SWITCH_OFFLINE;
	setnpcdisplay "#026-3_59_86",  NPC_SWITCH_OFFLINE;
	setnpcdisplay "#026-3_94_80",  NPC_SWITCH_OFFLINE;
	setnpcdisplay "#026-3_53_59",  NPC_SWITCH_OFFLINE;
    end;
}