1/* 2 * 3 * Iter Vehemens ad Necem (IVAN) 4 * Copyright (C) Timo Kiviluoto 5 * Released under the GNU General 6 * Public License 7 * 8 * See LICENSING which should be included 9 * along with this file for more details 10 * 11 */ 12 13/* 14 * NOTICE!!! 15 * 16 * This file contains SPOILERS, which might ruin your IVAN experience 17 * totally. Also, editing anything can DESTROY GAME BALANCE or CAUSE 18 * OBSCURE BUGS if you don't know what you're doing. So from here on, 19 * proceed at your own risk! 20 */ 21 22Dungeon REBEL_CAMP; 23{ 24 Levels = 1; 25 Description = "Rebel Camp"; 26 ShortDescription = "RC"; 27 28 Level 0; 29 { 30 LevelMessage = "You pass the sentries and draw closer to the camp."; 31 Description = "Rebel Camp"; 32 ShortDescription = "Rebel Camp"; 33 FillSquare = solidterrain(GRASS_TERRAIN), 0; 34 Size = 55, 55; 35 GenerateMonsters = false; 36 Rooms = 10:15; 37 Items = 0; 38 IsOnGround = true; 39 TeamDefault = REBEL_TEAM; 40 LOSModifier = 48; 41 IgnoreDefaultSpecialSquares = false; 42 AutoReveal = false; 43 CanGenerateBone = false; 44 DifficultyBase = 50; 45 DifficultyDelta = 0; 46 EnchantmentMinusChanceBase = 0; 47 EnchantmentMinusChanceDelta = 0; 48 EnchantmentPlusChanceBase = 5; 49 EnchantmentPlusChanceDelta = 0; 50 BackGroundType = GREEN_FRACTAL; 51 EarthquakesAffectTunnels = false; 52 AudioPlayList = 53 { 54 1, 55 "Empty.mid"; 56 } 57 58 RoomDefault 59 { 60 Pos = 2:XSize-5,2:YSize-5; 61 Size = 4:6,4:6; 62 AltarPossible = false; 63 WallSquare = solidterrain(GRASS_TERRAIN), wall(TENT_WALL); 64 FloorSquare = solidterrain(GRASS_TERRAIN), 0; 65 DoorSquare = solidterrain(GRASS_TERRAIN), door(CURTAIN); 66 GenerateDoor = true; 67 DivineMaster = 0; 68 GenerateTunnel = false; 69 GenerateLanterns = true; 70 Type = ROOM_NORMAL; 71 GenerateFountains = false; 72 AllowLockedDoors = false; 73 AllowBoobyTrappedDoors = false; 74 Shape = ROUND_CORNERS; 75 IsInside = true; 76 GenerateWindows = false; 77 UseFillSquareWalls = false; 78 Flags = 0; 79 } 80 81 Square, Pos XSize/2, 0; 82 { 83 EntryIndex = STAIRS_UP; 84 } 85 86 /* Forest trees & Decorations */ 87 Square, Random NOT_IN_ROOM|HAS_NO_OTERRAIN; 88 { 89 OTerrain = boulder(1); 90 Times = 10; 91 } 92 93 Square, Random NOT_IN_ROOM|HAS_NO_OTERRAIN; 94 { 95 OTerrain = boulder(2); 96 Times = 10; 97 } 98 99 Square, Random NOT_IN_ROOM|HAS_NO_OTERRAIN; 100 { 101 OTerrain = decoration(BIRCH); 102 Times = 50:150; 103 } 104 105 Square, Random NOT_IN_ROOM|HAS_NO_OTERRAIN; 106 { 107 OTerrain = decoration(TEAK); 108 Times = 50:150; 109 } 110 111 Square, Random NOT_IN_ROOM|HAS_NO_OTERRAIN; 112 { 113 OTerrain = decoration(DEAD_TREE); 114 Times = 10; 115 } 116 117 Square, BoundedRandom XSize/3, YSize/3, 4*XSize/3, 4*YSize/3, NOT_IN_ROOM|HAS_NO_OTERRAIN; 118 { 119 OTerrain = decoration(WELL); 120 } 121 122 Square, Random IN_ROOM|HAS_NO_OTERRAIN; 123 { 124 Items == itemcontainer(CHEST) 125 { 126 Parameters = LOCKED; 127 ItemsInside = { 3, Random { Category = WEAPON; }, potion(VIAL) { SecondaryMaterial = HEALING_LIQUID; }, DARK_BREAD loaf; } 128 } 129 } 130 131 /* People */ 132 Square, Pos 0, 0; 133 { 134 Character = guard(REBEL) { WayPoint = { 4, 0, 0, XSize - 1, 0, XSize - 1, YSize - 1, 0, YSize - 1; } } 135 } 136 137 Square, Random NOT_IN_ROOM|HAS_NO_OTERRAIN; 138 { 139 Character = cossack(REBEL_SOLDIER); 140 Times = 15; 141 } 142 143 Square, Random NOT_IN_ROOM|HAS_NO_OTERRAIN; 144 { 145 Character = cossack(REBEL_LIEUTENANT); 146 Times = 5; 147 } 148 149 Square, Random NOT_IN_ROOM; 150 { 151 Character = farmer(REBEL_CAMP); 152 Times = 5; 153 } 154 155 Square, Random NOT_IN_ROOM; 156 { 157 Character = housewife(REBEL_CAMP); 158 Times = 5; 159 } 160 161 Square, Random IN_ROOM; 162 { 163 Character = child(BOY); 164 Times = 1:3; 165 } 166 167 Square, Random IN_ROOM; 168 { 169 Character = child(GIRL); 170 Times = 1:3; 171 } 172 173 Square, Random IN_ROOM; 174 { 175 Character = guard(REBEL); 176 Times = 2:5; 177 } 178 179 Square, Random IN_ROOM; 180 { 181 Character = mysticfrog(LIGHT); 182 Times = 1:2; 183 } 184 185 Square, Random IN_ROOM; 186 { 187 Character = necromancer(MASTER_NECROMANCER); 188 Times = 2; 189 } 190 191 Square, Random NOT_IN_ROOM|HAS_NO_OTERRAIN; 192 { 193 Character = largerat; 194 Times = 1:4; 195 } 196 197 /* Leader Room */ 198 Room 199 { 200 Size = 7,7; 201 GenerateDoor = false; 202 GenerateLanterns = false; 203 Type = ROOM_OWNED_AREA; 204 205 OTerrainMap 206 { 207 Pos = 1,1; 208 Size = 5,5; 209 210 Types 211 { 212 a = decoration(ARM_CHAIR); 213 | = decoration(CARPET); 214 d = decoration(DESK); 215 b = decoration(EXPENSIVE_BED); 216 T = decoration(TABLE); 217 B = decoration(BENCH); 218 x = olterraincontainer(CHEST_OF_DRAWERS) { ItemsInside == Random { MinPrice = 100; Times = 3; Category = CLOAK|BODY_ARMOR|BELT|BOOT|GAUNTLET; ConfigFlags = NO_BROKEN; } } 219 } 220 } 221 { 222 .da.. 223 ..... 224 ..T.b 225 x.... 226 .B.B. 227 } 228 229 ItemMap 230 { 231 Pos = 0,0; 232 Size = 7,6; 233 234 Types 235 { 236 # == 0; 237 2 == lantern { SquarePosition = DOWN; } 238 3 == lantern { SquarePosition = RIGHT; } 239 4 == lantern { SquarePosition = LEFT; } 240 c == Random { MinPrice = 350; Category = WEAPON|SHIELD; ConfigFlags = NO_BROKEN; Enchantment = 3; } 241 n == trinket(POTTED_PLANT); 242 } 243 } 244 { 245 .#2###. 246 ##...## 247 #.....# 248 3c....4 249 #....n# 250 ##...## 251 } 252 253 CharacterMap 254 { 255 Pos = 1,1; 256 Size = 5,5; 257 258 Types 259 { 260 # = 0; 261 h = harvan { Flags = IS_MASTER; } 262 g = guard(REBEL); 263 } 264 } 265 { 266 #.h.# 267 g...g 268 ..... 269 ..... 270 #...# 271 } 272 273 Square, Pos 3,6; 274 { 275 OTerrain = door(CURTAIN); 276 } 277 } 278 279 /* Shop */ 280 Room 281 { 282 Size = 7,7; 283 GenerateDoor = false; 284 GenerateLanterns = false; 285 Type = ROOM_SHOP; 286 287 ItemMap 288 { 289 Pos = 0,0; 290 Size = 7,7; 291 292 Types 293 { 294 # == 0; 295 1 == lantern { SquarePosition = UP; } 296 2 == lantern { SquarePosition = DOWN; } 297 3 == lantern { SquarePosition = RIGHT; } 298 a == Random { MinPrice = 250; Category = HELMET|CLOAK|BODY_ARMOR|BELT|BOOT|GAUNTLET; } 299 d == Random { MinPrice = 250; Category = RING|AMULET; } 300 w == Random { MinPrice = 500; Category = WEAPON|SHIELD; } 301 e == Random { MinPrice = 10; Category = FOOD|POTION; } 302 u == Random { MinPrice = 200; Category = WAND|TOOL; } 303 v == Random { MinPrice = 500; Category = SCROLL|TOOL; } 304 s = { 2, belt(BELT_OF_CARRYING), wand(WAND_OF_STRIKING); } 305 } 306 } 307 { 308 .##2##. 309 ##eeu## 310 #aeeew# 311 3au.ee. 312 #adevv# 313 ##dws## 314 .##1##. 315 } 316 317 Square, Pos 3,3; 318 { 319 Character = shopkeeper(REBEL_CAMP) { Flags = IS_MASTER; } 320 OTerrain = decoration(CHAIR); 321 } 322 323 Square, Pos 6,3; 324 { 325 OTerrain = door(CURTAIN); 326 } 327 Square, Pos 7,2; 328 { 329 Character = guard(REBEL); 330 } 331 Square, Pos 7,4; 332 { 333 Character = guard(REBEL); 334 } 335 } 336 337 /* Kamikaze Room */ 338 Room 339 { 340 Size = 6,6; 341 342 CharacterMap 343 { 344 Pos = 1,1; 345 Size = 4,4; 346 347 Types 348 { 349 k = kamikazedwarf(LEGIFER); 350 K = veterankamikazedwarf(LEGIFER); 351 } 352 } 353 { 354 .kk. 355 k..k 356 kK.k 357 .kk. 358 } 359 } 360 361 /* Other Rooms */ 362 Room 363 { 364 Shape = RECTANGLE; 365 366 Square, Random; 367 { 368 OTerrain = decoration(CHEAP_BED); 369 Times = 4:10; 370 } 371 } 372 373 Room 374 { 375 Shape = RECTANGLE; 376 377 Square, Random; 378 { 379 OTerrain = decoration(CHEAP_BED); 380 Times = 4:10; 381 } 382 } 383 384 Room 385 { 386 Square, Random HAS_NO_OTERRAIN; 387 { 388 OTerrain = decoration(TABLE); 389 } 390 391 Square, Random HAS_NO_OTERRAIN; 392 { 393 OTerrain = decoration(CHAIR); 394 Times = 1:3; 395 } 396 } 397 398 Room 399 { 400 Square, Random HAS_NO_OTERRAIN; 401 { 402 OTerrain = decoration(WORK_BENCH); 403 } 404 } 405 } 406} 407