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
|
// TMW2 scripts.
// Author:
// Jesusalva
// Description:
// The Impregnable Fortress Control Files
// Quest: General_Fortress
// (MaxFloor+2, internal, internal)
// The antechamber has some traps you should avoid, but beyond the Blood Pact map
// effect, it only has some support NPCs (banker and healer) if you completed the
// Moubootaur Showdown earlier.
// TODO: The main NPC which lets you get out of the platform
026-6,21,70,0, script #026-6Gate NPC_FANCY_CIRCLE,1,0,{
if (getq(General_Fortress) < 6) { die(); end; }
if ($MK_TEMPVAR >= MKIF_LV_B7F) goto L_Warp;
mesc l(".:: Impregnable Fortress, %sF ::.", "B6"), 3;
msObjective($MK_TEMPVAR >= MKIF_LV_B7F, l("Minimum wins: %d/%d", $MK_TEMPVAR, MKIF_LV_B7F));
mes "";
mesc l("Hint: The Boss Chamber lies herein ahead.");
close;
L_Warp:
// Not unlocked (this time, require Andrei Sakar mission completion)
if ($GAME_STORYLINE < 4 || $MK_TEMPVAR < MKIF_LV_B7F) {
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_B7F), 1;
close;
}
// Busy
if ($@MK_SCENE != MK_NONE && $@MK_SCENE != MK_SHOWDOWN) {
dispbottom l("The Monster King is not there, it makes no sense going in the Throne Room.");
end;
}
// Not a hero
if (!$@MK_CHALLENGE && !islegendary() && strcharinfo(0) != $MOST_HEROIC$ && !is_master()) {
dispbottom l("I should wait for %s or one of the heroes to challenge the Monster King.", $MOST_HEROIC$);
end;
}
doevent "#DungeonCore::OnBleed";
slide any(21, 22), 63;
end;
OnGoto:
slide 46, 114;
end;
OnInit:
.distance=3;
end;
}
026-6,22,40,0, script #MKBossFightFire NPC_HIDDEN,0,0,{
end;
OnTouch:
if ($@MK_COOLDOWN > gettimetick(2) && !is_master()) {
dispbottom l("I should wait for %s.", ($GAME_STORYLINE >= 5 ? l("the Moubootaur arrange a new puppet") : l("the blood stains to be cleaned up")));
end;
}
// NOT a fortwarp() - there is no Barbara Bonus for the Showdown!
warp "026-7", 21, 28;
if (!$@MK_CHALLENGE) {
if ($GAME_STORYLINE >= 5) {
mes l("Do you want to challenge the Monster King? If so, on which difficulty?");
next;
menuint
l("No, I changed my mind."), 0,
l("Normal"), 1,
l("Hard"), 2,
l("Crazy"), 3,
l("Cadis Mode"), 5,
l("Ultimate Pandorica"), 7,
l("Portable Apocalypse"), 10,
rif(REBIRTH >= 4, l("Judgment Day")), 15;
closeclientdialog;
}
// Already started or no difficulty selected
if ($@MK_CHALLENGE) end;
if (!@menuint) cwarp "026-6", 22, 41;
// Begin the challenge! It's SHOWDOWN TIME!
$@MK_CHALLENGE=@menuint;
kamibroadcast(strcharinfo(0)+" has CHALLENGED the MONSTER KING to a SHOWDOWN!", "WORLD HEART");
sleep(2500);
mapannounce("026-6", "WORLD HEART : The teleporter is now enabled... Get to positions!", bc_map|bc_npc);
sleep(5000);
kamibroadcast("It is... SHOWDOWN TIME!", "WORLD HEART");
sleep(2500);
donpcevent "Impregnable#B7F::OnBegin";
}
end;
}
// Room Traps, only against players
026-6,0,0,0 script #0266_Trap01 NPC_TRAP_ONLINE,0,0,{
end;
OnTouch:
OnTouchNPC:
WorldHeartTrap();
sleep(500); // Wait 500ms for animation
setnpcdisplay .name$, NPC_TRAP_ONLINE;
// Move the trap away after it disarms (up to 30 attempts)
OnInit:
.@e=0;
do {
if (.@e >= 30)
break;
.@x = rand2(21, 140);
.@y = rand2(21, 120);
.@e+=1;
} while (!checknpccell("026-6", .@x, .@y, cell_chkpass));
movenpc .name$, .@x, .@y;
end;
}
// Create more traps
026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap02 NPC_TRAP_ONLINE,0,0
026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap03 NPC_TRAP_ONLINE,0,0
026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap04 NPC_TRAP_ONLINE,0,0
026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap05 NPC_TRAP_ONLINE,0,0
026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap06 NPC_TRAP_ONLINE,0,0
026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap07 NPC_TRAP_ONLINE,0,0
026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap08 NPC_TRAP_ONLINE,0,0
026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap09 NPC_TRAP_ONLINE,0,0
026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap10 NPC_TRAP_ONLINE,0,0
026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap11 NPC_TRAP_ONLINE,0,0
026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap12 NPC_TRAP_ONLINE,0,0
026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap13 NPC_TRAP_ONLINE,0,0
026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap14 NPC_TRAP_ONLINE,0,0
026-6,0,0,0 duplicate(#0266_Trap01) #0266_Trap15 NPC_TRAP_ONLINE,0,0
// Storage master (18, 57), healer (25, 57), etc. (125, 66)
026-6,18,57,0 script Barzil#FT NPC_LLOYD,{
if (!MOUBOOTAUR_WINNER) { // EPISODE_WINNER
mesn;
mesq l("Hey %s. Sorry, I only take orders from Andrei Sakar. You'll need to get his permission letter from the depths of Artis before making use of my services.", strcharinfo(0));
close;
}
Banker(.name$, "Impregnable Fortress", 999999);
close;
OnInit:
.sex = G_MALE;
.distance = 3;
end;
}
026-6,25,57,0 script Alliance's Nurse NPC_FEMALE,{
if (!EPISODE_WINNER) {
mesn;
mesq l("Hey %s. Sorry, I only take orders from the Doctor. You'll need to get his permission letter from Hurnscald Hospital before making use of my services.", strcharinfo(0));
close;
}
Nurse(.name$, 10, 6);
close;
OnInit:
.@npcId = getnpcid(.name$);
//setunitdata(.@npcId, UDT_HEADTOP, BrimmedFeatherHat);
setunitdata(.@npcId, UDT_HEADMIDDLE, MiniSkirt);
setunitdata(.@npcId, UDT_HEADBOTTOM, ShortTankTop);
setunitdata(.@npcId, UDT_HAIRSTYLE, 12);
setunitdata(.@npcId, UDT_HAIRCOLOR, 16);
.sex = G_FEMALE;
.distance = 3;
end;
}
|