1[
2  {
3    "type": "mapgen",
4    "method": "json",
5    "om_terrain": [ "bunker" ],
6    "object": {
7      "rows": [
8        "                        ",
9        " -----------------------",
10        " |                     |",
11        " |                     |",
12        " |                     |",
13        " |                     |",
14        " |                     |",
15        " |     MMMMMMMMMM      |",
16        " |     MMMMMMMMMM      |",
17        " |     MMMM>>MMMM      |",
18        " |     MM,,,,,,MM      |",
19        " |     MMMM,,MMMM      |",
20        " |     MM,,,,,,MM      |",
21        " //*/  MMMM,,MMMM   /*//",
22        " I#,/  MM,,,,,,MM   /,#I",
23        " I00/  MMMMDDMMMM   /00I",
24        " |     MMMM  6MMM      |",
25        " +                     +",
26        " +                     +",
27        " +                     +",
28        " +                     +",
29        " +                     +",
30        " +-------++++++--------+",
31        "                        "
32      ],
33      "terrain": {
34        " ": [ "t_grass", "t_grass", "t_grass", "t_dirt" ],
35        "#": "t_floor",
36        "*": "t_door_c",
37        "+": "t_chaingate_l",
38        ",": "t_floor",
39        "-": "t_chainfence_h",
40        "/": "t_concrete_wall",
41        "0": "t_window",
42        "6": "t_card_military",
43        ">": "t_stairs_down",
44        "D": "t_door_metal_locked",
45        "I": "t_ballistic_glass",
46        "M": "t_wall_metal",
47        "|": "t_chainfence_v"
48      },
49      "furniture": { "#": "f_table" },
50      "place_monster": [
51        { "monster": "mon_turret_rifle", "x": 9, "y": 10 },
52        { "monster": "mon_turret_rifle", "x": 14, "y": 10 },
53        { "monster": "mon_turret_rifle", "x": 9, "y": 12 },
54        { "monster": "mon_turret_rifle", "x": 14, "y": 12 },
55        { "monster": "mon_turret_rifle", "x": 9, "y": 14 },
56        { "monster": "mon_turret_rifle", "x": 14, "y": 14 }
57      ]
58    }
59  },
60  {
61    "type": "mapgen",
62    "method": "json",
63    "om_terrain": [ "bunker_basement" ],
64    "weight": 1000,
65    "object": {
66      "//": "TODO: When it was hardcoded, each room had at most one of the bots, grenades, etc. groups in it, but the way it is now, it's possible for a room to have items from both the bots and grenades group in it.",
67      "rows": [
68        "########################",
69        "#MMMMMMMMMMMMMMMMMMMMMM#",
70        "#Mrrrrrrr6    6rrrrrrrM#",
71        "#M       +    +       M#",
72        "#M       |    |       M#",
73        "#M       |    |       M#",
74        "#M       |    |       M#",
75        "#MrrrrrrrM    MrrrrrrrM#",
76        "#MMMMMMMMM    MMMMMMMMM#",
77        "#Mrrrrrrr6    6rrrrrrrM#",
78        "#M       +    +       M#",
79        "#M       |    |       M#",
80        "#M       |    |       M#",
81        "#M       |    |       M#",
82        "#MrrrrrrrM    MrrrrrrrM#",
83        "#MMMMMMMMM    MMMMMMMMM#",
84        "#Mrrrrrrr6    6rrrrrrrM#",
85        "#M       +    +       M#",
86        "#M       |    |       M#",
87        "#M       |    |       M#",
88        "#M       |    |       M#",
89        "#MrrrrrrrM << MrrrrrrrM#",
90        "#MMMMMMMMMMMMMMMMMMMMMM#",
91        "########################"
92      ],
93      "terrain": {
94        " ": "t_floor",
95        "r": "t_floor",
96        "#": "t_rock",
97        "+": "t_door_metal_locked",
98        "6": "t_card_military",
99        "<": "t_stairs_up",
100        "M": "t_wall_metal",
101        "|": "t_ballistic_glass"
102      },
103      "furniture": { "r": "f_rack" },
104      "items": { "r": { "item": "bunker_basement_loot", "chance": 15, "repeat": [ 2, 8 ] } },
105      "place_monster": [
106        { "monster": "mon_mech_combat", "x": 5, "y": 5, "chance": 2 },
107        { "monster": "mon_mech_lifter", "x": 6, "y": 6, "chance": 5 },
108        { "monster": "mon_mech_recon", "x": 7, "y": 6, "chance": 3 }
109      ]
110    }
111  },
112  {
113    "type": "mapgen",
114    "method": "json",
115    "om_terrain": [ "bunker_basement" ],
116    "weight": 250,
117    "object": {
118      "fill_ter": "t_floor",
119      "rows": [
120        "########################",
121        "#MMMMMMMMMMMMMMMMMMMMMM#",
122        "#Ms  6 {{M3 5M ?A2MbCbM#",
123        "#Ms ct   ^   +    /   M#",
124        "#Mt     2M   MCCCgMbCbM#",
125        "#MMMMMMMMM   MMMMMMMMMM#",
126        "#MrrrrrrrM   2Mb  23 bM#",
127        "#M       +    Ml     lM#",
128        "#MLLLLLLLM5   *      bM#",
129        "#MMMMMMMMMM   Mb     lM#",
130        "#Mc t t t2M   Ml     bM#",
131        "#Mt c c cWM   Mlb bl lM#",
132        "#Mc       *   MMMMMMMMM#",
133        "#MMMM*MMMMM   M}   2 %M#",
134        "#M2      TM   *       M#",
135        "#MSBOCCfCCM   MYsssY{{M#",
136        "#MMMMMMMMMM ~ MMMMMMMMM#",
137        "#ML *             *  SM#",
138        "#MMMMM^MMMMM+MMM*MM2 SM#",
139        "#Ms Mr cd|   5M   M   M#",
140        "#Ms Mr cd|    M*M*M*M*M#",
141        "#Mt *   2M << M1M1M&M&M#",
142        "#MMMMMMMMMMMMMMMMMMMMMM#",
143        "########################"
144      ],
145      "palettes": [ "basement_bunker" ],
146      "furniture": {
147        "r": "f_rack",
148        "f": "f_fridge",
149        "s": "f_sofa",
150        "t": "f_table",
151        "d": "f_desk",
152        "c": "f_chair",
153        "b": "f_bunkbed",
154        "1": "f_shower",
155        "S": "f_sink",
156        "O": "f_oven",
157        "C": "f_counter",
158        "T": "f_trashcan",
159        "B": "f_cupboard",
160        "l": "f_locker",
161        "L": "f_locker",
162        "Y": "f_table",
163        "A": "f_autodoc",
164        "?": "f_autodoc_couch",
165        "g": "f_glass_fridge",
166        "{": "f_bookcase",
167        "}": "f_pinball_machine",
168        "%": "f_floor_canvas",
169        "2": "f_air_conditioner",
170        "3": "f_speaker_cabinet"
171      },
172      "items": {
173        "b": { "item": "bed", "chance": 60 },
174        "{": { "item": "bunker_basement_books", "chance": 70 },
175        "T": { "item": "trash_cart", "chance": 50 },
176        "l": { "item": "bunker_basement_clothing", "chance": 50 },
177        "t": { "item": "dining", "chance": 45 },
178        "A": { "item": "autodoc_supplies", "chance": 100 }
179      },
180      "place_fields": [ { "field": "fd_blood", "x": 2, "y": 3 }, { "field": "fd_blood", "x": 3, "y": 3 } ],
181      "place_loot": [
182        { "group": "surgery", "x": [ 14, 16 ], "y": 4, "chance": 70, "repeat": [ 1, 3 ] },
183        { "group": "bunker_basement_drugs", "x": [ 14, 16 ], "y": 4, "chance": 80, "repeat": [ 1, 3 ] },
184        { "group": "mags_milspec", "x": [ 2, 6 ], "y": 8, "chance": 100, "repeat": [ 3, 5 ] },
185        { "group": "ammo_milspec", "x": [ 2, 6 ], "y": 8, "chance": 100, "repeat": [ 30, 250 ] },
186        { "group": "grenades", "x": [ 2, 6 ], "y": 8, "chance": 100, "repeat": [ 5, 15 ] },
187        { "group": "mil_hw", "x": [ 7, 8 ], "y": 8, "chance": 100, "repeat": [ 15, 40 ] },
188        { "group": "mil_armor", "x": [ 7, 8 ], "y": 6, "chance": 65, "repeat": [ 1, 2 ] },
189        { "group": "guns_rifle_milspec", "x": [ 2, 6 ], "y": 6, "chance": 80, "repeat": [ 1, 3 ] },
190        { "group": "guns_rifle_milspec", "x": 5, "y": [ 19, 20 ], "chance": 80, "repeat": [ 1, 3 ] },
191        { "group": "guns_launcher_milspec", "x": [ 2, 6 ], "y": 6, "chance": 80, "repeat": [ 1, 3 ] },
192        { "group": "gear_soldier_sidearm", "x": [ 2, 6 ], "y": 6, "chance": 90, "repeat": [ 1, 3 ] },
193        { "group": "fridge", "x": 7, "y": 15, "chance": 70, "repeat": 3 },
194        { "group": "bunker_basement_food", "x": [ 5, 6 ], "y": 15, "chance": 75, "repeat": [ 1, 10 ] },
195        { "group": "dining", "x": [ 8, 9 ], "y": 15, "chance": 75, "repeat": [ 1, 2 ] },
196        { "group": "oven", "x": 4, "y": 15, "chance": 70 },
197        { "group": "cleaning", "x": 2, "y": 17, "chance": 70 },
198        { "group": "bionics_mil", "x": 16, "y": 4, "chance": 65 },
199        { "group": "bunker_basement_suicide", "x": 3, "y": 3 },
200        { "item": "mess_tray", "x": [ 5, 6 ], "y": 15, "chance": 50, "repeat": [ 4, 5 ] },
201        { "item": "whiskey", "x": 5, "y": 3 },
202        { "item": "glass", "x": 5, "y": 3 },
203        { "item": "militarymap", "x": 5, "y": 3 },
204        { "item": "anesthetic_kit", "x": 17, "y": 4, "ammo": 100 },
205        { "item": "television", "x": 17, "y": 13, "chance": 95 },
206        { "item": "stereo", "x": 19, "y": 15, "chance": 80 }
207      ],
208      "monster": { "~": { "monster": "mon_turret_rifle" } }
209    }
210  },
211  {
212    "type": "mapgen",
213    "method": "json",
214    "om_terrain": [ "bunker_basement" ],
215    "weight": 500,
216    "object": {
217      "fill_ter": "t_floor",
218      "rows": [
219        "########################",
220        "#MMMMMMMMMMMMMMMMMMMMMM#",
221        "#Ms  6 {{M3 5M ?A2MbCbM#",
222        "#Ms cY   ^   +    /   M#",
223        "#Mt     2M   MCCCgMbCbM#",
224        "#MMMMMMMMM   MMMMMMMMMM#",
225        "#MrrrrrrrM   2Mb  23 bM#",
226        "#M       +    Ml     lM#",
227        "#MLLLLLLLM5   *      bM#",
228        "#MMMMMMMMMM   Mb     lM#",
229        "#Mc t t t2M   Ml     bM#",
230        "#Mt c c cWM   Mlb bl lM#",
231        "#Mc       *   MMMMMMMMM#",
232        "#MMMM*MMMMM   M}   2 %M#",
233        "#M2      TM   *       M#",
234        "#MSBOCCfCCM   MYsssY{{M#",
235        "#MMMMMMMMMM ~ MMMMMMMMM#",
236        "#ML *             *  SM#",
237        "#MMMMM^MMMMM+MMM*MM2 SM#",
238        "#Ms Mr cd|   5M   M   M#",
239        "#Ms Mr cd|    M*M*M*M*M#",
240        "#Mt *   2M << M1M1M&M&M#",
241        "#MMMMMMMMMMMMMMMMMMMMMM#",
242        "########################"
243      ],
244      "palettes": [ "basement_bunker" ],
245      "furniture": {
246        "r": "f_rack",
247        "f": "f_fridge",
248        "s": "f_sofa",
249        "t": "f_table",
250        "d": "f_desk",
251        "c": "f_chair",
252        "b": "f_bunkbed",
253        "1": "f_shower",
254        "S": "f_sink",
255        "O": "f_oven",
256        "C": "f_counter",
257        "T": "f_trashcan",
258        "B": "f_cupboard",
259        "l": "f_locker",
260        "L": "f_locker",
261        "A": "f_autodoc",
262        "Y": "f_table",
263        "?": "f_autodoc_couch",
264        "g": "f_glass_fridge",
265        "{": "f_bookcase",
266        "}": "f_pinball_machine",
267        "%": "f_floor_canvas",
268        "2": "f_air_conditioner",
269        "3": "f_speaker_cabinet"
270      },
271      "items": {
272        "b": { "item": "bed", "chance": 60 },
273        "{": { "item": "bunker_basement_books", "chance": 80 },
274        "T": { "item": "trash_cart", "chance": 50 },
275        "l": { "item": "bunker_basement_clothing", "chance": 50 },
276        "t": { "item": "dining", "chance": 45 },
277        "A": { "item": "autodoc_supplies", "chance": 100 }
278      },
279      "place_loot": [
280        { "group": "surgery", "x": [ 14, 16 ], "y": 4, "chance": 70, "repeat": [ 1, 3 ] },
281        { "group": "bunker_basement_drugs", "x": [ 14, 16 ], "y": 4, "chance": 80, "repeat": [ 1, 3 ] },
282        { "group": "mags_milspec", "x": [ 2, 6 ], "y": 8, "chance": 100, "repeat": [ 2, 6 ] },
283        { "group": "ammo_milspec", "x": [ 2, 6 ], "y": 8, "chance": 100, "repeat": [ 30, 150 ] },
284        { "group": "grenades", "x": [ 2, 6 ], "y": 8, "chance": 100, "repeat": [ 10, 30 ] },
285        { "group": "mil_hw", "x": [ 7, 8 ], "y": 8, "chance": 100, "repeat": [ 5, 10 ] },
286        { "group": "mil_armor", "x": [ 7, 8 ], "y": 6, "chance": 65, "repeat": [ 1, 2 ] },
287        { "group": "guns_rifle_milspec", "x": [ 2, 6 ], "y": 6, "chance": 80, "repeat": [ 1, 2 ] },
288        { "group": "guns_rifle_milspec", "x": 5, "y": [ 19, 20 ], "chance": 80, "repeat": [ 1, 2 ] },
289        { "group": "guns_launcher_milspec", "x": [ 2, 6 ], "y": 6, "chance": 90, "repeat": [ 1, 2 ] },
290        { "group": "gear_soldier_sidearm", "x": [ 2, 6 ], "y": 6, "chance": 90, "repeat": [ 1, 2 ] },
291        { "group": "fridge", "x": 7, "y": 15, "chance": 70, "repeat": 3 },
292        { "group": "bunker_basement_food", "x": [ 5, 6 ], "y": 15, "chance": 75, "repeat": [ 1, 2 ] },
293        { "group": "dining", "x": [ 8, 9 ], "y": 15, "chance": 75, "repeat": [ 1, 2 ] },
294        { "group": "oven", "x": 4, "y": 15, "chance": 70 },
295        { "group": "cleaning", "x": 2, "y": 17, "chance": 70 },
296        { "group": "bionics_mil", "x": 16, "y": 4, "chance": 65 },
297        { "group": "alcohol", "x": 5, "y": 3 },
298        { "item": "glass", "x": 5, "y": 3 },
299        { "item": "militarymap", "x": 5, "y": 3, "chance": 80 },
300        { "item": "anesthetic_kit", "x": 17, "y": 4, "ammo": 100 },
301        { "item": "television", "x": 17, "y": 13, "chance": 95 },
302        { "item": "stereo", "x": 19, "y": 15, "chance": 80 }
303      ],
304      "monster": { "~": { "monster": "mon_turret_rifle" } }
305    }
306  },
307  {
308    "id": "bunker_basement_loot",
309    "type": "item_group",
310    "subtype": "distribution",
311    "ammo": 100,
312    "entries": [
313      { "group": "bots", "prob": 1 },
314      { "group": "guns_launcher_milspec", "prob": 1 },
315      { "group": "guns_rifle_milspec", "prob": 2 },
316      { "group": "energy_weapon_armory", "prob": 1 },
317      { "group": "mags_milspec", "prob": 1 },
318      { "group": "ammo_milspec", "prob": 120 },
319      { "group": "grenades", "prob": 30 },
320      { "group": "mil_armor", "prob": 1 },
321      { "group": "mil_hw", "prob": 30 },
322      { "group": "mil_food", "prob": 5 },
323      { "group": "bionics_mil", "prob": 1 }
324    ]
325  },
326  {
327    "type": "item_group",
328    "id": "bunker_basement_books",
329    "items": [
330      { "group": "book_military", "prob": 50 },
331      { "group": "book_survival", "prob": 50 },
332      { "group": "magazines", "prob": 80 }
333    ]
334  },
335  {
336    "type": "item_group",
337    "id": "bunker_basement_drugs",
338    "items": [ { "group": "drugs_pharmacy", "prob": 70 }, { "group": "drugs_soldier", "prob": 50 } ]
339  },
340  {
341    "type": "item_group",
342    "id": "bunker_basement_food",
343    "items": [ { "group": "cannedfood", "prob": 80 }, { "group": "pasta", "prob": 50 } ]
344  },
345  {
346    "type": "item_group",
347    "id": "bunker_basement_suicide",
348    "subtype": "collection",
349    "items": [
350      { "item": "m1911", "charges": 6, "ammo-item": "45_acp" },
351      { "item": "45_casing", "charges-min": 1, "charges-max": 1 },
352      { "group": "underwear" },
353      { "item": "corpse" }
354    ]
355  },
356  {
357    "id": "bunker_basement_clothing",
358    "type": "item_group",
359    "items": [
360      { "group": "clothing_soldier_shirt", "prob": 20 },
361      { "item": "jacket_army", "prob": 20 },
362      { "item": "pants_army", "prob": 20 },
363      { "item": "boots_combat", "prob": 20 },
364      { "item": "helmet_army", "prob": 20 },
365      { "item": "gloves_tactical", "prob": 10 },
366      { "item": "elbow_pads", "prob": 10 },
367      { "group": "clothing_tactical_leg", "prob": 15 },
368      { "group": "clothing_tactical_torso", "prob": 15 },
369      { "group": "underwear" },
370      { "distribution": [ { "item": "socks", "prob": 95 }, { "item": "socks_wool", "prob": 5 } ] },
371      {
372        "distribution": [
373          { "group": "clothing_glasses", "prob": 60 },
374          { "item": "glasses_bal", "prob": 30 },
375          { "item": "goggles_nv", "prob": 5 },
376          { "item": "goggles_ir", "prob": 5 }
377        ],
378        "prob": 20
379      },
380      { "group": "clothing_watch", "prob": 5 }
381    ]
382  }
383]
384