[MOD] Eye of the Beholder: Waterdeep Sewers
- djoldgames
- Posts: 107
- Joined: Fri Mar 23, 2012 11:28 pm
- Contact:
Re: [MOD] Eye of the Beholder: Waterdeep Sewers
I comited the new wallset on GitHub. But this is early "work in progress" version, please be patient, I must do some bug fixing like graphic glitches (secret door, illusion walls, and others not just reported).
Thank you Thomson for report the kobold rune bug, but I don't know where the problem is. It is the same object as the wall_text_long or rune_2 and there is no bug in these objects. I'm really frustrated with this, I'm spending last hour fixing it but no luck .
One of major changes is in the drainage grate and pipe objects, which are "walltext" type from now, with the clickable area, and we can set the texts for it (empty for now).
Thank you Thomson for report the kobold rune bug, but I don't know where the problem is. It is the same object as the wall_text_long or rune_2 and there is no bug in these objects. I'm really frustrated with this, I'm spending last hour fixing it but no luck .
One of major changes is in the drainage grate and pipe objects, which are "walltext" type from now, with the clickable area, and we can set the texts for it (empty for now).
[MAP] Interactive Maps of Isle Nex - using Google maps technology
[MOD] Eye of the Beholder: Waterdeep Sewers - recreation for Grimrock
www.oldgames.sk
[MOD] Eye of the Beholder: Waterdeep Sewers - recreation for Grimrock
www.oldgames.sk
Re: [MOD] Eye of the Beholder: Waterdeep Sewers
I think I know what's the problem with kobold rune. Put it more in the center. If you have it on your right side, the rune itself is not visible, so the engine does not display it (and the whole wall stripe behind it). Open this up in the editor and then change dimensions of the preview box. Don't go full screen. Resize the preview to make it wider (panoramic like 16:9 or even wider). This actually increase FOV (field of view), so you're able to see more to the sides. Keep resizing a little step by step and the bug will gone.
I'm not sure how to fix it. Perhaps locate the rune more centrally on the wall?
I'm not sure how to fix it. Perhaps locate the rune more centrally on the wall?
- djoldgames
- Posts: 107
- Joined: Fri Mar 23, 2012 11:28 pm
- Contact:
Re: [MOD] Eye of the Beholder: Waterdeep Sewers
New version (v0.02.14) with new wallset is uploaded on steam and nexus.
http://grimrock.nexusmods.com/mods/20/
Some new stuff added, like this EOB teleporter (R.A.T.S.) sign
http://grimrock.nexusmods.com/mods/20/
Some new stuff added, like this EOB teleporter (R.A.T.S.) sign
[MAP] Interactive Maps of Isle Nex - using Google maps technology
[MOD] Eye of the Beholder: Waterdeep Sewers - recreation for Grimrock
www.oldgames.sk
[MOD] Eye of the Beholder: Waterdeep Sewers - recreation for Grimrock
www.oldgames.sk
Re: [MOD] Eye of the Beholder: Waterdeep Sewers
You guys are awesome.
"I'm okay with being referred to as a goddess."
Community Model Request Thread
See what I'm working on right now: Neikun's Workshop
Lead Coordinator for Legends of the Northern Realms Project
Community Model Request Thread
See what I'm working on right now: Neikun's Workshop
Lead Coordinator for Legends of the Northern Realms Project
- Message me to join in!
- djoldgames
- Posts: 107
- Joined: Fri Mar 23, 2012 11:28 pm
- Contact:
Re: [MOD] Eye of the Beholder: Waterdeep Sewers
Now I made this drainage model with glowing red eyes. (in original EOB it is tile 16,14)thomson wrote:...The second is related to drainage gate at 25,21 on level 1. When you click it, there's empty text showing up. In original EOB, there was a creature hiding in there with only eyes visible. Once clicked, a message about unknown creature running away was printed. I suspect this is a preparation for such an action, so I'm not sure if it is a bug or a work in progress.
Added some dark fog particles to hide the empty space around it...
SpoilerShow
[MAP] Interactive Maps of Isle Nex - using Google maps technology
[MOD] Eye of the Beholder: Waterdeep Sewers - recreation for Grimrock
www.oldgames.sk
[MOD] Eye of the Beholder: Waterdeep Sewers - recreation for Grimrock
www.oldgames.sk
Re: [MOD] Eye of the Beholder: Waterdeep Sewers
Very cool, as usual!
Finished Dungeons - complete mods to play
Re: [MOD] Eye of the Beholder: Waterdeep Sewers
Very cool.
Now... It should be scripted so that the eyes disappear when clicked; (and really sharp, reappear on an adjacent drain on the other side of the wall).
Now... It should be scripted so that the eyes disappear when clicked; (and really sharp, reappear on an adjacent drain on the other side of the wall).
Re: [MOD] Eye of the Beholder: Waterdeep Sewers
And they should give exp! (at least the original did)It should be scripted so that the eyes disappear when clicked;
Waking Violet (Steam, PS4, PSVita, Switch) : http://www.wakingviolet.com
The Sunset Gate [MOD]: viewtopic.php?f=14&t=5563
My preciousss: http://www.moonsharp.org
The Sunset Gate [MOD]: viewtopic.php?f=14&t=5563
My preciousss: http://www.moonsharp.org
- djoldgames
- Posts: 107
- Joined: Fri Mar 23, 2012 11:28 pm
- Contact:
Script
Yes, now we have to accsess to original EOB srcipts in human readable form, thanks to Bifrost's & Tomsomn's EOBConverter.Xanathar wrote:It should be scripted so that the eyes disappear when clicked. And they should give exp! (at least the original did)
New version of EOBConverter (v0.9.6) is able to extract SCRIPTS from original EOB to human readable form. Now we have the right position of the triggers from the original and we able to create the right scripts in grimrock LUA. There is lot of triggers where party gets the Experience, like enter the tile or click on the object in front...
For example, this is the fulll exported script of level 1 of original EOB. Especialy I poit to something (classified as bug) in EOB scripts: it is getting the better Rock (rock +1) called "Igneous Rock" on tile [13, 22] from drainage grate...
Level 1 sripts:
SpoilerShow
Trigger 0 at [18, 23] on Enter, PutItem, FlyingObject {
1 if (trigger.flag = 1) { // if not: jump 20
2 if (party.direction = 1) { // if not: jump 10
3 if (maze.flag(31) = 0) { // if not: jump 6
4 callEncounter(10)
5 maze.setFlag(31)
}
6 show("going down...", Color.Yellow)
7 play.sound(79, 0)
8 level.change(2, 19, 23, East) // level, x, y, direction
9 } else { // jump 20
10 show("you can't go that way.", Color.White)
11 play.sound(29, 0)
12 if (1 = 0) { // if not: jump 14
13 teleport.teleport(Party, 0, 0, 18, 24) // type, srcX, srcY, dstX, dstY
}
14 if (1 = 1) { // if not: jump 16
15 teleport.teleport(Party, 0, 0, 17, 23) // type, srcX, srcY, dstX, dstY
}
16 if (1 = 2) { // if not: jump 18
17 teleport.teleport(Party, 0, 0, 18, 22) // type, srcX, srcY, dstX, dstY
}
18 if (1 = 3) { // if not: jump 20
19 teleport.teleport(Party, 0, 0, 19, 23) // type, srcX, srcY, dstX, dstY
}
}
}
20 if (trigger.flag = 4) { // if not: jump 29
21 if (1 = 0) { // if not: jump 23
22 teleport.teleport(Item, 18, 23, 18, 24) // type, srcX, srcY, dstX, dstY
}
23 if (1 = 1) { // if not: jump 25
24 teleport.teleport(Item, 18, 23, 17, 23) // type, srcX, srcY, dstX, dstY
}
25 if (1 = 2) { // if not: jump 27
26 teleport.teleport(Item, 18, 23, 18, 22) // type, srcX, srcY, dstX, dstY
}
27 if (1 = 3) { // if not: jump 29
28 teleport.teleport(Item, 18, 23, 19, 23) // type, srcX, srcY, dstX, dstY
}
}
29 end
}
Trigger 1 at [17, 23] on Enter {
30 if (maze.flag(10) = 0) { // if not: jump 33
31 experience.add(Party, 1600)
32 maze.setFlag(10)
}
33 end
}
Trigger 2 at [10, 13] on Enter {
34 experience.add(Party, 10000)
35 end
}
Trigger 3 at [22, 20] on Enter {
36 if (maze.flag(8) = 0) { // if not: jump 39
37 experience.add(Party, 1600)
38 maze.setFlag(8)
}
39 end
}
Trigger 4 at [14, 14] on PutItem, PickUpItem {
40 if (maze.flag(4) = 0) { // if not: jump 43
41 experience.add(Party, 400)
42 maze.setFlag(4)
}
43 end
}
Trigger 5 at [13, 13] on Click {
44 play.sound(1, 429)
45 door.open(14, 13)
46 if (maze.flag(1) = 0) { // if not: jump 49
47 experience.add(Party, 800)
48 maze.setFlag(1)
}
49 end
}
Trigger 6 at [16, 10] on Enter {
50 if (maze.wallNumber(21, 11) <> 1) { // if not: jump 53
51 wall.setBlock(17, 16, Wall.wall1) // x, y, wallId (id: 1)
52 wall.setBlock(14, 25, Wall.wall1) // x, y, wallId (id: 1)
}
53 if (maze.flag(2) = 0) { // if not: jump 56
54 experience.add(Party, 400)
55 maze.setFlag(2)
}
56 end
}
Trigger 7 at [17, 12] on Enter {
57 if (maze.wallNumber(17, 16) <> 1) { // if not: jump 61
58 wall.setWall(9, 22, North, Wall.wall1) // x, y, direction, wallId (id: 1)
59 wall.setBlock(21, 11, Wall.wall1) // x, y, wallId (id: 1)
60 wall.setBlock(13, 26, Wall.wall1) // x, y, wallId (id: 1)
}
61 maze.setFlag(2)
62 end
}
Trigger 8 at [23, 13] on Click {
63 if (maze.wallSide(North, 23, 13) <> 1) { // if not: jump 69
64 play.sound(7, 439)
65 door.open(22, 13)
66 if (maze.flag(5) = 0) { // if not: jump 69
67 experience.add(Party, 800)
68 maze.setFlag(5)
}
}
69 end
}
Trigger 9 at [22, 14] on Enter {
70 if (maze.wallNumber(22, 14) = 28) { // if not: jump 76
71 play.sound(12, 470)
72 door.open(22, 13)
73 if (maze.flag(7) = 0) { // if not: jump 76
74 experience.add(Party, 800)
75 maze.setFlag(7)
}
}
76 end
}
Trigger 10 at [22, 17] on Enter, Leave, PutItem, PickUpItem {
77 if (((trigger.flag = 1 && maze.itemCount(22, 17, ItemType.any/*id: 255*/) = 0) || ((trigger.flag = 4 && maze.itemCount(22, 17, ItemType.any/*id: 255*/) = 1) && party.atPosition(22, 17) = 0))) { // if not: jump 80
78 play.sound(12, 566)
79 door.open(22, 19)
}
80 if (((trigger.flag = 2 && maze.itemCount(22, 17, ItemType.any/*id: 255*/) = 0) || ((trigger.flag = 8 && maze.itemCount(22, 17, ItemType.any/*id: 255*/) = 0) && party.atPosition(22, 17) = 0))) { // if not: jump 83
81 play.sound(12, 566)
82 door.close(22, 19)
}
83 end
}
Trigger 11 at [18, 18] on Click {
84 play.sound(1, 594)
85 door.open(19, 18)
86 end
}
Trigger 12 at [14, 19] on Click {
87 if (maze.wallSide(East, 14, 19) <> 1) { // if not: jump 93
88 play.sound(7, 622)
89 door.open(14, 18)
90 if (maze.flag(5) = 0) { // if not: jump 93
91 experience.add(Party, 800)
92 maze.setFlag(5)
}
}
93 end
}
Trigger 13 at [13, 18] on Enter {
94 if (maze.wallNumber(13, 18) = 28) { // if not: jump 100
95 play.sound(12, 589)
96 door.open(14, 18)
97 if (maze.flag(7) = 0) { // if not: jump 100
98 experience.add(Party, 800)
99 maze.setFlag(7)
}
}
100 end
}
Trigger 14 at [18, 21] on Click {
101 play.sound(7, 690)
102 play.sound(13, 659)
103 wall.changeBlock(19, 20, Wall.wall1, Wall.empty) // x, y, fromWallId, toWallId (formWallId: 1, toWallId: 0)
104 teleport.teleport(Monster, 19, 20, 19, 19) // type, srcX, srcY, dstX, dstY
105 if (maze.flag(6) = 0) { // if not: jump 108
106 experience.add(Party, 1600)
107 maze.setFlag(6)
}
108 end
}
Trigger 15 at [26, 21] on Click {
109 play.sound(7, 698)
110 teleport.teleport(Monster, 25, 20, 25, 19) // type, srcX, srcY, dstX, dstY
111 play.sound(13, 665)
112 wall.changeBlock(25, 20, Wall.wall1, Wall.empty) // x, y, fromWallId, toWallId (formWallId: 1, toWallId: 0)
113 if (maze.flag(6) = 0) { // if not: jump 116
114 experience.add(Party, 1600)
115 maze.setFlag(6)
}
116 end
}
Trigger 16 at [7, 23] on Click {
117 if (maze.wallSide(East, 7, 23) <> 1) { // if not: jump 123
118 play.sound(7, 743)
119 door.open(8, 22)
120 if (maze.flag(5) = 0) { // if not: jump 123
121 experience.add(Party, 800)
122 maze.setFlag(5)
}
}
123 end
}
Trigger 17 at [9, 22] on Click {
124 play.sound(7, 713)
125 if (maze.wallSide(North, 9, 22) <> 1) { // if not: jump 131
126 door.open(8, 22)
127 wall.setWall(7, 23, East, Wall.wall1) // x, y, direction, wallId (id: 1)
128 if (maze.flag(5) = 0) { // if not: jump 131
129 experience.add(Party, 800)
130 maze.setFlag(5)
}
}
131 end
}
Trigger 18 at [17, 24] on Click {
132 play.sound(12, 785)
133 door.open(17, 23)
134 end
}
Trigger 19 at [16, 23] on Enter, PutItem {
135 if ((trigger.flag = 1 && maze.itemCount(16, 23, ItemType.any/*id: 255*/) = 0)) { // if not: jump 138
136 play.sound(12, 752)
137 door.close(17, 23)
}
138 if ((trigger.flag = 4 && (party.atPosition(16, 23) = 0 && maze.itemCount(16, 23, ItemType.any/*id: 255*/) < 2))) { // if not: jump 141
139 play.sound(12, 752)
140 door.close(17, 23)
}
141 end
}
Trigger 20 at [25, 19] on Enter {
142 if (maze.flag(0) = 0) { // if not: jump 145
143 show("it smells terrible here.", Color.Cyan)
144 maze.setFlag(0)
}
145 end
}
Trigger 21 at [7, 24] on Click {
146 show("this slimy, smelly drain pipe reveals nothing.", Color.Cyan)
147 if (maze.flag(3) = 0) { // if not: jump 150
148 experience.add(Party, 800)
149 maze.setFlag(3)
}
150 end
}
Trigger 22 at [13, 22] on Click {
151 show("there is a drainage grate here.", Color.Cyan)
152 if (maze.flag(3) = 0) { // if not: jump 155
153 experience.add(Party, 800)
154 maze.setFlag(3)
}
155 if ((party.item = 0 && maze.flag(1) = 0)) { // if not: jump 158
156 item.create(31, 31, NW, Item.rock_glowing) // x, y, position, elementType (name: "Igneous Rock", id: 58)
157 maze.setFlag(1)
}
158 end
}
Trigger 23 at [20, 24] on Click {
159 show("this slimy, smelly drain pipe reveals nothing.", Color.Cyan)
160 if (maze.flag(3) = 0) { // if not: jump 163
161 experience.add(Party, 800)
162 maze.setFlag(3)
}
163 end
}
Trigger 24 at [24, 21] on Click {
164 show("there is a drainage grate here.", Color.Cyan)
165 if (maze.flag(3) = 0) { // if not: jump 168
166 experience.add(Party, 800)
167 maze.setFlag(3)
}
168 end
}
Trigger 25 at [18, 17] on Click {
169 show("there is a drainage grate here.", Color.Cyan)
170 if (maze.flag(3) = 0) { // if not: jump 173
171 experience.add(Party, 800)
172 maze.setFlag(3)
}
173 end
}
Trigger 26 at [15, 14] on Click {
174 if (maze.flag(3) = 0) { // if not: jump 177
175 experience.add(Party, 800)
176 maze.setFlag(3)
}
177 if (party.atPosition(14, 14) = 1) { // if not: jump 185
178 if (maze.wallSide(West, 15, 14) = 44) { // if not: jump 183
179 show("something scurries deeper into the floor drain.", Color.Cyan)
180 wall.setWall(15, 14, West, Wall.sewersWallWithDrainageBent2) // x, y, direction, wallId (id: 62)
181 wall.setWall(15, 14, East, Wall.sewersWallWithDrainageBent1) // x, y, direction, wallId (id: 44)
182 } else { // jump 184
183 show("there is a drainage grate here.", Color.Cyan)
}
184 } else { // jump 191
185 if (maze.wallSide(East, 15, 14) = 44) { // if not: jump 190
186 show("something scurries deeper into the floor drain.", Color.Cyan)
187 wall.setWall(15, 14, East, Wall.sewersWallWithDrainageBent2) // x, y, direction, wallId (id: 62)
188 wall.setWall(15, 14, West, Wall.sewersWallWithDrainageBent1) // x, y, direction, wallId (id: 44)
189 } else { // jump 191
190 show("there is a drainage grate here.", Color.Cyan)
}
}
191 end
}
Trigger 27 at [14, 12] on Enter {
192 wall.setWall(15, 14, West, Wall.sewersWallWithDrainageBent1) // x, y, direction, wallId (id: 44)
193 wall.setWall(15, 14, East, Wall.sewersWallWithDrainageBent1) // x, y, direction, wallId (id: 44)
194 end
}
Trigger 28 at [20, 12] on Click {
195 show("this slimy, smelly drain pipe reveals nothing.", Color.Cyan)
196 if (maze.flag(3) = 0) { // if not: jump 199
197 experience.add(Party, 800)
198 maze.setFlag(3)
}
199 end
}
Trigger 29 at [19, 12] on Click {
200 if (maze.flag(3) = 0) { // if not: jump 203
201 experience.add(Party, 800)
202 maze.setFlag(3)
}
203 if (party.containsRace(Race.Gnome) = 1) { // if not: jump 206
204 show("kobold rune for 'entrance'.", Color.Cyan)
205 } else { // jump 207
206 show("this rune is unrecognized.", Color.Cyan)
}
207 end
}
Trigger 30 at [15, 22] on Click {
208 if (maze.flag(3) = 0) { // if not: jump 211
209 experience.add(Party, 800)
210 maze.setFlag(3)
}
211 if (party.containsRace(Race.Gnome) = 1) { // if not: jump 214
212 show("kobold rune for 'entrance'.", Color.Cyan)
213 } else { // jump 215
214 show("this rune is unrecognized.", Color.Cyan)
}
215 end
}
Trigger 31 at [12, 24] on PutItem, PickUpItem {
216 if ((maze.itemCount(12, 24, ItemType.dagger/*id: 5*/) > 0 && misc.flag(Global, 1) = 0)) { // if not: jump 223
217 show("special quest for this level!", Color.Green)
218 play.sound(28, 0)
219 global.setFlag(1)
220 item.consume(AtPosition, 5, 0, ItemType.dagger) // type, x, y, itemtype (id: 5)
221 item.create(12, 24, Alcove, Item.dagger_guinsoo) // x, y, position, elementType (name: "'Guinsoo'", id: 49)
222 global.setFlag(1)
}
223 if (maze.flag(9) = 0) { // if not: jump 226
224 experience.add(Party, 400)
225 maze.setFlag(9)
}
226 end
}
Trigger 32 at [10, 14] on Click {
227 show("fallen rocks block the way.", Color.Cyan)
228 end
}
Trigger 33 at [11, 15] on Enter {
229 wall.setWall(10, 14, South, Wall.unknown) // x, y, direction, wallId (id: 49)
230 end
}
Trigger 34 at [10, 15] on Enter {
231 wall.setWall(10, 14, South, Wall.sewersCaveIn) // x, y, direction, wallId (id: 69)
232 end
}
Trigger 35 at [1, 4] on Click {
233 if (maze.wallSide(West, 2, 3) = 8) { // if not: jump 256
234 if ((party.item.type = 38 && party.item.value = 1)) { // if not: jump 239
235 play.sound(14, 129)
236 door.open(2, 3)
237 item.consume(AtMousePointer, -1, -1, ItemType.any) // type, x, y, itemtype (id: 255)
238 } else { // jump 255
239 if (party.item.type = 38) { // if not: jump 243
240 show("it doesn't fit.", Color.LightRed)
241 play.sound(81, 129)
242 } else { // jump 255
243 if (party.item.type = 28) { // if not: jump 254
244 if (party.containsClass(Class.Thief) = 1) { // if not: jump 252
245 play.sound(81, 129)
246 show("failed lock pick attempt.", Color.Yellow)
247 if (rollDice(1D100 + 0) = 1) { // if not: jump 251
248 play.sound(82, 0)
249 show("the lock picks break!.", Color.LightRed)
250 item.consume(AtMousePointer, -1, -1, ItemType.any) // type, x, y, itemtype (id: 255)
}
251 } else { // jump 253
252 show("only a thief can pick locks.", Color.LightRed)
}
253 } else { // jump 255
254 show("this lock requires a key.", Color.White)
}
}
}
255 } else { // jump 257
256 show("the lock appears jammed.", Color.LightRed)
}
257 end
}
Trigger 36 at [1, 2] on Enter {
258 wall.setWall(2, 1, West, Wall.unknown) // x, y, direction, wallId (id: 49)
259 end
}
Trigger 37 at [1, 1] on Enter {
260 wall.setWall(2, 1, West, Wall.sewersCaveIn) // x, y, direction, wallId (id: 69)
261 end
}
1 if (trigger.flag = 1) { // if not: jump 20
2 if (party.direction = 1) { // if not: jump 10
3 if (maze.flag(31) = 0) { // if not: jump 6
4 callEncounter(10)
5 maze.setFlag(31)
}
6 show("going down...", Color.Yellow)
7 play.sound(79, 0)
8 level.change(2, 19, 23, East) // level, x, y, direction
9 } else { // jump 20
10 show("you can't go that way.", Color.White)
11 play.sound(29, 0)
12 if (1 = 0) { // if not: jump 14
13 teleport.teleport(Party, 0, 0, 18, 24) // type, srcX, srcY, dstX, dstY
}
14 if (1 = 1) { // if not: jump 16
15 teleport.teleport(Party, 0, 0, 17, 23) // type, srcX, srcY, dstX, dstY
}
16 if (1 = 2) { // if not: jump 18
17 teleport.teleport(Party, 0, 0, 18, 22) // type, srcX, srcY, dstX, dstY
}
18 if (1 = 3) { // if not: jump 20
19 teleport.teleport(Party, 0, 0, 19, 23) // type, srcX, srcY, dstX, dstY
}
}
}
20 if (trigger.flag = 4) { // if not: jump 29
21 if (1 = 0) { // if not: jump 23
22 teleport.teleport(Item, 18, 23, 18, 24) // type, srcX, srcY, dstX, dstY
}
23 if (1 = 1) { // if not: jump 25
24 teleport.teleport(Item, 18, 23, 17, 23) // type, srcX, srcY, dstX, dstY
}
25 if (1 = 2) { // if not: jump 27
26 teleport.teleport(Item, 18, 23, 18, 22) // type, srcX, srcY, dstX, dstY
}
27 if (1 = 3) { // if not: jump 29
28 teleport.teleport(Item, 18, 23, 19, 23) // type, srcX, srcY, dstX, dstY
}
}
29 end
}
Trigger 1 at [17, 23] on Enter {
30 if (maze.flag(10) = 0) { // if not: jump 33
31 experience.add(Party, 1600)
32 maze.setFlag(10)
}
33 end
}
Trigger 2 at [10, 13] on Enter {
34 experience.add(Party, 10000)
35 end
}
Trigger 3 at [22, 20] on Enter {
36 if (maze.flag(8) = 0) { // if not: jump 39
37 experience.add(Party, 1600)
38 maze.setFlag(8)
}
39 end
}
Trigger 4 at [14, 14] on PutItem, PickUpItem {
40 if (maze.flag(4) = 0) { // if not: jump 43
41 experience.add(Party, 400)
42 maze.setFlag(4)
}
43 end
}
Trigger 5 at [13, 13] on Click {
44 play.sound(1, 429)
45 door.open(14, 13)
46 if (maze.flag(1) = 0) { // if not: jump 49
47 experience.add(Party, 800)
48 maze.setFlag(1)
}
49 end
}
Trigger 6 at [16, 10] on Enter {
50 if (maze.wallNumber(21, 11) <> 1) { // if not: jump 53
51 wall.setBlock(17, 16, Wall.wall1) // x, y, wallId (id: 1)
52 wall.setBlock(14, 25, Wall.wall1) // x, y, wallId (id: 1)
}
53 if (maze.flag(2) = 0) { // if not: jump 56
54 experience.add(Party, 400)
55 maze.setFlag(2)
}
56 end
}
Trigger 7 at [17, 12] on Enter {
57 if (maze.wallNumber(17, 16) <> 1) { // if not: jump 61
58 wall.setWall(9, 22, North, Wall.wall1) // x, y, direction, wallId (id: 1)
59 wall.setBlock(21, 11, Wall.wall1) // x, y, wallId (id: 1)
60 wall.setBlock(13, 26, Wall.wall1) // x, y, wallId (id: 1)
}
61 maze.setFlag(2)
62 end
}
Trigger 8 at [23, 13] on Click {
63 if (maze.wallSide(North, 23, 13) <> 1) { // if not: jump 69
64 play.sound(7, 439)
65 door.open(22, 13)
66 if (maze.flag(5) = 0) { // if not: jump 69
67 experience.add(Party, 800)
68 maze.setFlag(5)
}
}
69 end
}
Trigger 9 at [22, 14] on Enter {
70 if (maze.wallNumber(22, 14) = 28) { // if not: jump 76
71 play.sound(12, 470)
72 door.open(22, 13)
73 if (maze.flag(7) = 0) { // if not: jump 76
74 experience.add(Party, 800)
75 maze.setFlag(7)
}
}
76 end
}
Trigger 10 at [22, 17] on Enter, Leave, PutItem, PickUpItem {
77 if (((trigger.flag = 1 && maze.itemCount(22, 17, ItemType.any/*id: 255*/) = 0) || ((trigger.flag = 4 && maze.itemCount(22, 17, ItemType.any/*id: 255*/) = 1) && party.atPosition(22, 17) = 0))) { // if not: jump 80
78 play.sound(12, 566)
79 door.open(22, 19)
}
80 if (((trigger.flag = 2 && maze.itemCount(22, 17, ItemType.any/*id: 255*/) = 0) || ((trigger.flag = 8 && maze.itemCount(22, 17, ItemType.any/*id: 255*/) = 0) && party.atPosition(22, 17) = 0))) { // if not: jump 83
81 play.sound(12, 566)
82 door.close(22, 19)
}
83 end
}
Trigger 11 at [18, 18] on Click {
84 play.sound(1, 594)
85 door.open(19, 18)
86 end
}
Trigger 12 at [14, 19] on Click {
87 if (maze.wallSide(East, 14, 19) <> 1) { // if not: jump 93
88 play.sound(7, 622)
89 door.open(14, 18)
90 if (maze.flag(5) = 0) { // if not: jump 93
91 experience.add(Party, 800)
92 maze.setFlag(5)
}
}
93 end
}
Trigger 13 at [13, 18] on Enter {
94 if (maze.wallNumber(13, 18) = 28) { // if not: jump 100
95 play.sound(12, 589)
96 door.open(14, 18)
97 if (maze.flag(7) = 0) { // if not: jump 100
98 experience.add(Party, 800)
99 maze.setFlag(7)
}
}
100 end
}
Trigger 14 at [18, 21] on Click {
101 play.sound(7, 690)
102 play.sound(13, 659)
103 wall.changeBlock(19, 20, Wall.wall1, Wall.empty) // x, y, fromWallId, toWallId (formWallId: 1, toWallId: 0)
104 teleport.teleport(Monster, 19, 20, 19, 19) // type, srcX, srcY, dstX, dstY
105 if (maze.flag(6) = 0) { // if not: jump 108
106 experience.add(Party, 1600)
107 maze.setFlag(6)
}
108 end
}
Trigger 15 at [26, 21] on Click {
109 play.sound(7, 698)
110 teleport.teleport(Monster, 25, 20, 25, 19) // type, srcX, srcY, dstX, dstY
111 play.sound(13, 665)
112 wall.changeBlock(25, 20, Wall.wall1, Wall.empty) // x, y, fromWallId, toWallId (formWallId: 1, toWallId: 0)
113 if (maze.flag(6) = 0) { // if not: jump 116
114 experience.add(Party, 1600)
115 maze.setFlag(6)
}
116 end
}
Trigger 16 at [7, 23] on Click {
117 if (maze.wallSide(East, 7, 23) <> 1) { // if not: jump 123
118 play.sound(7, 743)
119 door.open(8, 22)
120 if (maze.flag(5) = 0) { // if not: jump 123
121 experience.add(Party, 800)
122 maze.setFlag(5)
}
}
123 end
}
Trigger 17 at [9, 22] on Click {
124 play.sound(7, 713)
125 if (maze.wallSide(North, 9, 22) <> 1) { // if not: jump 131
126 door.open(8, 22)
127 wall.setWall(7, 23, East, Wall.wall1) // x, y, direction, wallId (id: 1)
128 if (maze.flag(5) = 0) { // if not: jump 131
129 experience.add(Party, 800)
130 maze.setFlag(5)
}
}
131 end
}
Trigger 18 at [17, 24] on Click {
132 play.sound(12, 785)
133 door.open(17, 23)
134 end
}
Trigger 19 at [16, 23] on Enter, PutItem {
135 if ((trigger.flag = 1 && maze.itemCount(16, 23, ItemType.any/*id: 255*/) = 0)) { // if not: jump 138
136 play.sound(12, 752)
137 door.close(17, 23)
}
138 if ((trigger.flag = 4 && (party.atPosition(16, 23) = 0 && maze.itemCount(16, 23, ItemType.any/*id: 255*/) < 2))) { // if not: jump 141
139 play.sound(12, 752)
140 door.close(17, 23)
}
141 end
}
Trigger 20 at [25, 19] on Enter {
142 if (maze.flag(0) = 0) { // if not: jump 145
143 show("it smells terrible here.", Color.Cyan)
144 maze.setFlag(0)
}
145 end
}
Trigger 21 at [7, 24] on Click {
146 show("this slimy, smelly drain pipe reveals nothing.", Color.Cyan)
147 if (maze.flag(3) = 0) { // if not: jump 150
148 experience.add(Party, 800)
149 maze.setFlag(3)
}
150 end
}
Trigger 22 at [13, 22] on Click {
151 show("there is a drainage grate here.", Color.Cyan)
152 if (maze.flag(3) = 0) { // if not: jump 155
153 experience.add(Party, 800)
154 maze.setFlag(3)
}
155 if ((party.item = 0 && maze.flag(1) = 0)) { // if not: jump 158
156 item.create(31, 31, NW, Item.rock_glowing) // x, y, position, elementType (name: "Igneous Rock", id: 58)
157 maze.setFlag(1)
}
158 end
}
Trigger 23 at [20, 24] on Click {
159 show("this slimy, smelly drain pipe reveals nothing.", Color.Cyan)
160 if (maze.flag(3) = 0) { // if not: jump 163
161 experience.add(Party, 800)
162 maze.setFlag(3)
}
163 end
}
Trigger 24 at [24, 21] on Click {
164 show("there is a drainage grate here.", Color.Cyan)
165 if (maze.flag(3) = 0) { // if not: jump 168
166 experience.add(Party, 800)
167 maze.setFlag(3)
}
168 end
}
Trigger 25 at [18, 17] on Click {
169 show("there is a drainage grate here.", Color.Cyan)
170 if (maze.flag(3) = 0) { // if not: jump 173
171 experience.add(Party, 800)
172 maze.setFlag(3)
}
173 end
}
Trigger 26 at [15, 14] on Click {
174 if (maze.flag(3) = 0) { // if not: jump 177
175 experience.add(Party, 800)
176 maze.setFlag(3)
}
177 if (party.atPosition(14, 14) = 1) { // if not: jump 185
178 if (maze.wallSide(West, 15, 14) = 44) { // if not: jump 183
179 show("something scurries deeper into the floor drain.", Color.Cyan)
180 wall.setWall(15, 14, West, Wall.sewersWallWithDrainageBent2) // x, y, direction, wallId (id: 62)
181 wall.setWall(15, 14, East, Wall.sewersWallWithDrainageBent1) // x, y, direction, wallId (id: 44)
182 } else { // jump 184
183 show("there is a drainage grate here.", Color.Cyan)
}
184 } else { // jump 191
185 if (maze.wallSide(East, 15, 14) = 44) { // if not: jump 190
186 show("something scurries deeper into the floor drain.", Color.Cyan)
187 wall.setWall(15, 14, East, Wall.sewersWallWithDrainageBent2) // x, y, direction, wallId (id: 62)
188 wall.setWall(15, 14, West, Wall.sewersWallWithDrainageBent1) // x, y, direction, wallId (id: 44)
189 } else { // jump 191
190 show("there is a drainage grate here.", Color.Cyan)
}
}
191 end
}
Trigger 27 at [14, 12] on Enter {
192 wall.setWall(15, 14, West, Wall.sewersWallWithDrainageBent1) // x, y, direction, wallId (id: 44)
193 wall.setWall(15, 14, East, Wall.sewersWallWithDrainageBent1) // x, y, direction, wallId (id: 44)
194 end
}
Trigger 28 at [20, 12] on Click {
195 show("this slimy, smelly drain pipe reveals nothing.", Color.Cyan)
196 if (maze.flag(3) = 0) { // if not: jump 199
197 experience.add(Party, 800)
198 maze.setFlag(3)
}
199 end
}
Trigger 29 at [19, 12] on Click {
200 if (maze.flag(3) = 0) { // if not: jump 203
201 experience.add(Party, 800)
202 maze.setFlag(3)
}
203 if (party.containsRace(Race.Gnome) = 1) { // if not: jump 206
204 show("kobold rune for 'entrance'.", Color.Cyan)
205 } else { // jump 207
206 show("this rune is unrecognized.", Color.Cyan)
}
207 end
}
Trigger 30 at [15, 22] on Click {
208 if (maze.flag(3) = 0) { // if not: jump 211
209 experience.add(Party, 800)
210 maze.setFlag(3)
}
211 if (party.containsRace(Race.Gnome) = 1) { // if not: jump 214
212 show("kobold rune for 'entrance'.", Color.Cyan)
213 } else { // jump 215
214 show("this rune is unrecognized.", Color.Cyan)
}
215 end
}
Trigger 31 at [12, 24] on PutItem, PickUpItem {
216 if ((maze.itemCount(12, 24, ItemType.dagger/*id: 5*/) > 0 && misc.flag(Global, 1) = 0)) { // if not: jump 223
217 show("special quest for this level!", Color.Green)
218 play.sound(28, 0)
219 global.setFlag(1)
220 item.consume(AtPosition, 5, 0, ItemType.dagger) // type, x, y, itemtype (id: 5)
221 item.create(12, 24, Alcove, Item.dagger_guinsoo) // x, y, position, elementType (name: "'Guinsoo'", id: 49)
222 global.setFlag(1)
}
223 if (maze.flag(9) = 0) { // if not: jump 226
224 experience.add(Party, 400)
225 maze.setFlag(9)
}
226 end
}
Trigger 32 at [10, 14] on Click {
227 show("fallen rocks block the way.", Color.Cyan)
228 end
}
Trigger 33 at [11, 15] on Enter {
229 wall.setWall(10, 14, South, Wall.unknown) // x, y, direction, wallId (id: 49)
230 end
}
Trigger 34 at [10, 15] on Enter {
231 wall.setWall(10, 14, South, Wall.sewersCaveIn) // x, y, direction, wallId (id: 69)
232 end
}
Trigger 35 at [1, 4] on Click {
233 if (maze.wallSide(West, 2, 3) = 8) { // if not: jump 256
234 if ((party.item.type = 38 && party.item.value = 1)) { // if not: jump 239
235 play.sound(14, 129)
236 door.open(2, 3)
237 item.consume(AtMousePointer, -1, -1, ItemType.any) // type, x, y, itemtype (id: 255)
238 } else { // jump 255
239 if (party.item.type = 38) { // if not: jump 243
240 show("it doesn't fit.", Color.LightRed)
241 play.sound(81, 129)
242 } else { // jump 255
243 if (party.item.type = 28) { // if not: jump 254
244 if (party.containsClass(Class.Thief) = 1) { // if not: jump 252
245 play.sound(81, 129)
246 show("failed lock pick attempt.", Color.Yellow)
247 if (rollDice(1D100 + 0) = 1) { // if not: jump 251
248 play.sound(82, 0)
249 show("the lock picks break!.", Color.LightRed)
250 item.consume(AtMousePointer, -1, -1, ItemType.any) // type, x, y, itemtype (id: 255)
}
251 } else { // jump 253
252 show("only a thief can pick locks.", Color.LightRed)
}
253 } else { // jump 255
254 show("this lock requires a key.", Color.White)
}
}
}
255 } else { // jump 257
256 show("the lock appears jammed.", Color.LightRed)
}
257 end
}
Trigger 36 at [1, 2] on Enter {
258 wall.setWall(2, 1, West, Wall.unknown) // x, y, direction, wallId (id: 49)
259 end
}
Trigger 37 at [1, 1] on Enter {
260 wall.setWall(2, 1, West, Wall.sewersCaveIn) // x, y, direction, wallId (id: 69)
261 end
}
[MAP] Interactive Maps of Isle Nex - using Google maps technology
[MOD] Eye of the Beholder: Waterdeep Sewers - recreation for Grimrock
www.oldgames.sk
[MOD] Eye of the Beholder: Waterdeep Sewers - recreation for Grimrock
www.oldgames.sk
Re: Script
So how does the Crystal do it? Hardcoded? As we know, click on the crystal and it tiggers a heal spell;djoldgames wrote:... of course we really need something like OnClick() hook on walltext (or other) objects...
SpoilerShow
click with Toorum, and it flags the game for Toorum mode.