diff --git a/.clang-tidy b/.clang-tidy index ef41eda3bb7b5..201a1bd06defd 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,4 +1,74 @@ -Checks: 'clang-diagnostic-*,modernize-use-using' +Checks: "\ +bugprone-*,\ +clang-diagnostic-*,\ +misc-*,\ +modernize-*,\ +performance-*,\ +readability-*,\ +-bugprone-forwarding-reference-overload,\ +-bugprone-inaccurate-erase,\ +-bugprone-incorrect-roundings,\ +-bugprone-integer-division,\ +-bugprone-macro-parentheses,\ +-bugprone-misplaced-widening-cast,\ +-bugprone-narrowing-conversions,\ +-bugprone-string-integer-assignment,\ +-bugprone-too-small-loop-variable,\ +-bugprone-undefined-memory-manipulation,\ +-bugprone-unused-return-value,\ +-bugprone-use-after-move,\ +-misc-definitions-in-headers,\ +-misc-non-private-member-variables-in-classes,\ +-misc-redundant-expression,\ +-misc-static-assert,\ +-misc-unconventional-assign-operator,\ +-modernize-avoid-c-arrays,\ +-modernize-deprecated-headers,\ +-modernize-loop-convert,\ +-modernize-make-unique,\ +-modernize-pass-by-value,\ +-modernize-raw-string-literal,\ +-modernize-return-braced-init-list,\ +-modernize-use-auto,\ +-modernize-use-default-member-init,\ +-modernize-use-emplace,\ +-modernize-use-equals-default,\ +-modernize-use-equals-delete,\ +-modernize-use-nullptr,\ +-modernize-use-override,\ +-modernize-use-transparent-functors,\ +-performance-for-range-copy,\ +-performance-inefficient-vector-operation,\ +-performance-move-const-arg,\ +-performance-noexcept-move-constructor,\ +-performance-implicit-conversion-in-loop,\ +-performance-inefficient-algorithm,\ +-performance-inefficient-string-concatenation,\ +-performance-type-promotion-in-math-fn,\ +-performance-unnecessary-copy-initialization,\ +-performance-unnecessary-value-param,\ +-readability-avoid-const-params-in-decls,\ +-readability-braces-around-statements,\ +-readability-const-return-type,\ +-readability-else-after-return,\ +-readability-function-size,\ +-readability-implicit-bool-conversion,\ +-readability-inconsistent-declaration-parameter-name,\ +-readability-isolate-declaration,\ +-readability-magic-numbers,\ +-readability-named-parameter,\ +-readability-non-const-parameter,\ +-readability-container-size-empty,\ +-readability-redundant-control-flow,\ +-readability-redundant-declaration,\ +-readability-redundant-member-init,\ +-readability-redundant-preprocessor,\ +-readability-redundant-string-init,\ +-readability-simplify-boolean-expr,\ +-readability-static-accessed-through-instance,\ +-readability-string-compare,\ +-readability-uppercase-literal-suffix,\ +" WarningsAsErrors: '*' HeaderFilterRegex: '(src|test).*' FormatStyle: none diff --git a/build-scripts/requirements.sh b/build-scripts/requirements.sh index 99ad8505ab89c..bfabcca6c602e 100644 --- a/build-scripts/requirements.sh +++ b/build-scripts/requirements.sh @@ -21,6 +21,8 @@ if just_json; then export CODE_COVERAGE="" fi +set -x + if [ -n "${CODE_COVERAGE}" ]; then travis_retry pip install --user pyyaml cpp-coveralls export CXXFLAGS="$CXXFLAGS --coverage" diff --git a/data/json/flags.json b/data/json/flags.json index dcb3fa481f340..a0ee54123c657 100644 --- a/data/json/flags.json +++ b/data/json/flags.json @@ -547,5 +547,17 @@ "type": "json_flag", "context": [ "BIONIC" ], "description": "This bionic can provide power to powered armor." + }, + { + "id": "PERMANENT", + "type": "json_flag", + "context": [ "SPELL" ], + "description": "This makes the spell's effects permanent." + }, + { + "id": "IGNORE_WALLS", + "type": "json_flag", + "context": [ "SPELL" ], + "description": "This makes the spell's Area of Effect ignore walls." } ] diff --git a/data/json/furniture.json b/data/json/furniture.json index 84192655ac92a..c17f599a64482 100644 --- a/data/json/furniture.json +++ b/data/json/furniture.json @@ -692,13 +692,15 @@ "id": "f_bathtub", "name": "bathtub", "symbol": "~", - "description": "You could lay in and take a soothing bath. Only if water was running.", + "description": "You could lay in and take a soothing bath, if there were running water. The plug is intact, so you could use it to store liquids.", "color": "white", "move_cost_mod": 2, "coverage": 30, "required_str": -1, "flags": [ "TRANSPARENT", "FLAMMABLE_HARD", "CONTAINER", "PLACE_ITEM", "BLOCKSDOOR", "MOUNTABLE" ], "max_volume": 800, + "examine_action": "keg", + "keg_capacity": 600, "bash": { "str_min": 12, "str_max": 50, @@ -3451,7 +3453,9 @@ }, { "type": "furniture", - "id": "f_floor_canvas", + "id": "f_punching_bag", + "aliases": "f_floor_canvas", + "looks_like": "f_floor_canvas", "name": "heavy punching bag", "description": "Punch Punch! Exercise those arms! Main selling point: it doesn't fight back!", "symbol": "0", diff --git a/data/json/item_actions.json b/data/json/item_actions.json index 5f54c2c42de55..4c1e1dd8bf140 100644 --- a/data/json/item_actions.json +++ b/data/json/item_actions.json @@ -514,6 +514,11 @@ "id": "FLU_VACCINE", "name": "Inject" }, + { + "type": "item_action", + "id": "FOODPERSON", + "name": "Activate" + }, { "type": "item_action", "id": "FUNGICIDE", diff --git a/data/json/item_groups.json b/data/json/item_groups.json index 313072dd440e4..c846941db176e 100644 --- a/data/json/item_groups.json +++ b/data/json/item_groups.json @@ -180,6 +180,7 @@ [ "55gal_drum", 1 ], [ "flyer", 10 ], [ "one_year_old_newspaper", 2 ], + [ "foodperson_mask", 1 ], [ "months_old_newspaper", 3 ], [ "weeks_old_newspaper", 4 ], [ "newest_newspaper", 5 ], @@ -203,6 +204,7 @@ [ "colamdew", 35 ], [ "television", 30 ], [ "clock", 10 ], + [ "fp_loyalty_card", 5 ], [ "cola", 70 ], [ "choc_drink", 10 ], { "item": "cola", "prob": 20, "container-item": "bottle_plastic" }, @@ -1149,6 +1151,7 @@ [ "kimono", 2 ], [ "yukata", 6 ], [ "haori", 2 ], + [ "foodperson_mask", 1 ], [ "hakama", 4 ], [ "eclipse_glasses", 1 ], [ "thermos", 20 ] @@ -2551,6 +2554,7 @@ [ "meth", 2 ], [ "heroin", 1 ], [ "wrapper", 50 ], + [ "fp_loyalty_card", 5 ], [ "string_6", 2 ], [ "chain", 20 ], [ "glass_sheet", 5 ], @@ -2600,6 +2604,7 @@ [ "straw_doll", 1 ], [ "striped_shirt", 1 ], [ "striped_pants", 1 ], + [ "foodperson_mask", 1 ], [ "razor_blade", 10 ], [ "survnote", 5 ], [ "eclipse_glasses", 1 ], @@ -4117,6 +4122,7 @@ [ "can_sealer", 5 ], [ "knuckle_brass", 15 ], [ "platinum_small", 10 ], + [ "foodperson_mask", 10 ], [ "gold_small", 10 ], [ "silver_small", 20 ], [ "cane", 10 ], @@ -4566,7 +4572,8 @@ [ "tourist_table", 5 ], [ "chem_hexamine", 5 ], [ "esbit_stove", 10 ], - [ "mess_tin", 10 ] + [ "mess_tin", 10 ], + [ "angular_grinder", 4 ] ] }, { @@ -4722,7 +4729,9 @@ [ "chem_hexamine", 4 ], [ "esbit_stove", 8 ], [ "bottle_folding", 6 ], - [ "mess_tin", 8 ] + [ "mess_tin", 8 ], + [ "metal_file", 5 ], + [ "pin_reamer", 3 ] ] }, { @@ -6378,6 +6387,7 @@ [ "file", 10 ], [ "child_book", 2 ], [ "lsd", 1 ], + [ "foodperson_mask", 1 ], [ "55gal_drum", 10 ], [ "30gal_drum", 15 ], [ "toolbox", 1 ], @@ -8032,6 +8042,7 @@ [ "acorns", 2 ], [ "pinecone", 3 ], [ "flyer", 1 ], + [ "fp_loyalty_card", 1 ], [ "one_year_old_newspaper", 1 ], [ "months_old_newspaper", 2 ], [ "weeks_old_newspaper", 3 ], @@ -8058,6 +8069,7 @@ [ "string_6", 1 ], [ "cig_butt", 4 ], [ "string_36", 1 ], + [ "foodperson_mask", 1 ], [ "steel_lump", 1 ], [ "steel_chunk", 1 ], { "item": "scrap", "prob": 2, "count-min": 1, "count-max": 10 }, @@ -9328,7 +9340,9 @@ [ "hammer", 20 ], [ "screwdriver", 20 ], [ "lighter", 25 ], - [ "pockknife", 15 ] + [ "pockknife", 15 ], + [ "metal_file", 15 ], + [ "pin_reamer", 10 ] ] }, { @@ -9690,6 +9704,7 @@ [ "ceramic_shard", 15 ], [ "stick", 95 ], [ "joint_roach", 5 ], + [ "fp_loyalty_card", 1 ], [ "pipe", 20 ], [ "bag_plastic", 10 ], [ "bottle_plastic", 10 ], @@ -9767,6 +9782,7 @@ [ "arm", 5 ], [ "leg", 5 ], [ "fetus", 5 ], + [ "foodperson_mask", 1 ], [ "human_brain_embalmed", 5 ], [ "many_years_old_newspaper", 2 ], [ "years_old_newspaper", 2 ], diff --git a/data/json/itemgroups/ammo.json b/data/json/itemgroups/ammo.json index 191e56e9de66e..d36cad5b4812d 100644 --- a/data/json/itemgroups/ammo.json +++ b/data/json/itemgroups/ammo.json @@ -9,6 +9,8 @@ [ "380_JHP", 20 ], [ "38_fmj", 25 ], [ "38_special", 25 ], + [ "357mag_fmj", 15 ], + [ "357mag_jhp", 15 ], [ "357sig_jhp", 25 ], [ "357sig_fmj", 25 ], [ "40sw", 40 ], @@ -68,6 +70,8 @@ [ "reloaded_38_fmj", 30 ], [ "reloaded_38_special", 80 ], [ "reloaded_38_super", 40 ], + [ "reloaded_357mag_fmj", 30 ], + [ "reloaded_357mag_jhp", 30 ], [ "reloaded_380_JHP", 10 ], [ "reloaded_380_FMJ", 15 ], [ "reloaded_380_p", 5 ], diff --git a/data/json/itemgroups/books.json b/data/json/itemgroups/books.json index 7107cf51d2c00..03894b512a32f 100644 --- a/data/json/itemgroups/books.json +++ b/data/json/itemgroups/books.json @@ -52,7 +52,8 @@ [ "manual_ninjutsu", 100 ], [ "manual_pankration", 5 ], [ "manual_silat", 100 ], - [ "manual_taekwondo", 100 ] + [ "manual_taekwondo", 100 ], + [ "manual_wingchun", 100 ] ] }, { @@ -569,6 +570,7 @@ [ "manual_niten", 1 ], [ "manual_sojutsu", 1 ], [ "manual_capoeira", 1 ], + [ "manual_wingchun", 3 ], { "group": "rare_martial_arts_books", "prob": 6 } ] }, @@ -600,7 +602,8 @@ [ "mag_unarmed", 20 ], [ "manual_brawl", 10 ], [ "mag_cutting", 5 ], - [ "textbook_weapeast", 1 ] + [ "textbook_weapeast", 1 ], + [ "manual_wingchun", 3 ] ] }, { diff --git a/data/json/itemgroups/locations.json b/data/json/itemgroups/locations.json index e4e93f7eb8f18..505b027816339 100644 --- a/data/json/itemgroups/locations.json +++ b/data/json/itemgroups/locations.json @@ -610,6 +610,38 @@ "type": "item_group", "items": [ [ "oj", 35 ], [ "cooked_pumpkin", 25 ], [ "bread", 10 ], [ "fruit_waffles", 5 ], [ "grahmcrackers", 5 ] ] }, + { + "id": "gym", + "type": "item_group", + "items": [ + [ "water_clean", 12 ], + [ "lemonade", 12 ], + [ "sports_drink", 12 ], + [ "V8", 12 ], + [ "tank_top", 30 ], + [ "towel", 40 ], + [ "under_armor_shorts", 20 ], + [ "under_armor", 20 ], + [ "protein_shake", 8 ], + [ "tshirt", 30 ], + [ "sneakers", 30 ], + [ "hot_pants", 14 ], + [ "undershirt", 30 ], + [ "hoodie", 20 ], + [ "shorts", 30 ], + [ "coke", 3 ], + [ "longshirt", 30 ], + [ "bandages", 10 ], + [ "heatpack", 10 ], + [ "gum", 12 ], + [ "soap", 10 ], + [ "sports_bra", 30 ], + [ "briefs", 30 ], + [ "yoghurt", 12 ], + [ "vitamins", 10 ], + [ "aspirin", 10 ] + ] + }, { "type": "item_group", "id": "ss_merch_1", diff --git a/data/json/itemgroups/tools.json b/data/json/itemgroups/tools.json index d44b1317e16f3..88d2dc7092ac5 100644 --- a/data/json/itemgroups/tools.json +++ b/data/json/itemgroups/tools.json @@ -31,7 +31,8 @@ [ "metal_smoother", 90 ], [ "jackhammer", 40 ], [ "toolbox", 25 ], - [ "recharge_station", 10 ] + [ "recharge_station", 10 ], + [ "angular_grinder", 30 ] ] }, { @@ -55,7 +56,9 @@ [ "thermometer", 5 ], [ "multitool", 10 ], [ "recharge_station", 10 ], - [ "hand_crank_charger", 25 ] + [ "hand_crank_charger", 25 ], + [ "metal_file", 10 ], + [ "hand_vice", 10 ] ] }, { @@ -124,7 +127,9 @@ [ "heavy_flashlight", 60 ], [ "magnifying_glass", 20 ], [ "soldering_iron", 150 ], - [ "cordless_drill", 100 ] + [ "cordless_drill", 100 ], + [ "pin_reamer", 30 ], + [ "hand_vice", 10 ] ] }, { @@ -179,7 +184,9 @@ { "item": "weldtank", "prob": 60, "count": [ 1, 2 ] }, { "item": "tinyweldtank", "prob": 60, "count": [ 1, 3 ] }, [ "polisher", 70 ], - [ "welder", 10 ] + [ "angular_grinder", 5 ], + [ "welder", 10 ], + [ "hand_vice", 10 ] ] }, { @@ -258,7 +265,9 @@ [ "flint_steel", 5 ], [ "chem_hexamine", 10 ], [ "esbit_stove", 15 ], - [ "mess_tin", 5 ] + [ "mess_tin", 5 ], + [ "riding_saddle", 3 ], + [ "saddlebag", 5 ] ] }, { @@ -349,7 +358,10 @@ [ "hacksaw", 50 ], [ "chipper", 60 ], [ "boltcutters", 50 ], - [ "screwdriver", 35 ] + [ "screwdriver", 35 ], + [ "pin_reamer", 10 ], + [ "metal_file", 10 ], + [ "hand_vice", 20 ] ] }, { @@ -361,7 +373,8 @@ [ "trimmer_off", 40 ], [ "jackhammer", 50 ], [ "elec_jackhammer", 50 ], - [ "circsaw_off", 10 ] + [ "circsaw_off", 10 ], + [ "angular_grinder", 20 ] ] }, { diff --git a/data/json/items/ammo/357mag.json b/data/json/items/ammo/357mag.json index 585e3ec19f3df..4a414eec38c9e 100644 --- a/data/json/items/ammo/357mag.json +++ b/data/json/items/ammo/357mag.json @@ -28,5 +28,21 @@ "name": ".357 magnum JHP", "description": "Jacketed hollow point .357 magnum ammunition. The .357 magnum round is derived from the earlier .38 special, with a marginally longer case and generating greater pressure.", "relative": { "damage": 4, "pierce": -2 } + }, + { + "id": "reloaded_357mag_fmj", + "copy-from": "357mag_fmj", + "type": "AMMO", + "name": "reloaded .357 Magnum FMJ", + "name_plural": "reloaded .357 Magnum FMJ", + "proportional": { "price": 0.7, "damage": 0.9, "dispersion": 1.1, "recoil": 0.9 } + }, + { + "id": "reloaded_357mag_jhp", + "copy-from": "357mag_jhp", + "type": "AMMO", + "name": "reloaded .357 Magnum JHP", + "name_plural": "reloaded .357 Magnum JHP", + "proportional": { "price": 0.7, "damage": 0.9, "dispersion": 1.1, "recoil": 0.9 } } ] diff --git a/data/json/items/ammo/9mm.json b/data/json/items/ammo/9mm.json index 85353e18635f6..9b865a711f7d4 100644 --- a/data/json/items/ammo/9mm.json +++ b/data/json/items/ammo/9mm.json @@ -50,6 +50,24 @@ "relative": { "damage": 4, "pierce": 4, "dispersion": -30 }, "proportional": { "recoil": 1.2 } }, + { + "id": "bp_9mm", + "copy-from": "9mm", + "type": "AMMO", + "name": "9x19mm JHP blackpowder", + "proportional": { "price": 0.3, "damage": 0.65, "recoil": 0.65, "pierce": 0.5, "dispersion": 1.2 }, + "extend": { "effects": [ "RECYCLED", "BLACKPOWDER", "MUZZLE_SMOKE" ] }, + "delete": { "effects": [ "NEVER_MISFIRES" ] } + }, + { + "id": "bp_9mmfmj", + "copy-from": "9mmfmj", + "type": "AMMO", + "name": "9x19mm FMJ blackpowder", + "proportional": { "price": 0.3, "damage": 0.65, "recoil": 0.65, "pierce": 0.5, "dispersion": 1.2 }, + "extend": { "effects": [ "RECYCLED", "BLACKPOWDER", "MUZZLE_SMOKE" ] }, + "delete": { "effects": [ "NEVER_MISFIRES" ] } + }, { "id": "reloaded_9mm", "copy-from": "9mm", diff --git a/data/json/items/armor.json b/data/json/items/armor.json index 4320d1b50e9d3..2deef91fe2e3e 100644 --- a/data/json/items/armor.json +++ b/data/json/items/armor.json @@ -868,6 +868,15 @@ "weight": 10, "description": "A plastic name tag marking the wearer as a real doctor of the medical kind." }, + { + "id": "badge_foodkid", + "copy-from": "badge_abstract", + "type": "ARMOR", + "name": "Foodkid badge", + "material": [ "plastic" ], + "weight": 10, + "description": "A star shaped badge, on it you can read \"Foodkid\" in bold letters. This is Foodperson's trusty sidekick's badge." + }, { "id": "balclava", "type": "ARMOR", @@ -1610,6 +1619,25 @@ "material_thickness": 1, "flags": [ "VARSIZE", "SKINTIGHT" ] }, + { + "id": "cape_fp", + "type": "ARMOR", + "name": "Foodperson's cape", + "description": "A brightly-colored cape emblazoned with the \"Fp\" symbol.", + "weight": 900, + "volume": 12, + "price": 5000, + "to_hit": -1, + "material": [ "cotton" ], + "symbol": "]", + "color": "pink", + "covers": [ "TORSO" ], + "coverage": 50, + "encumbrance": 4, + "warmth": 10, + "material_thickness": 1, + "flags": [ "OVERSIZE", "BELTED" ] + }, { "id": "cassock", "type": "ARMOR", @@ -1768,6 +1796,27 @@ "material_thickness": 3, "flags": [ "OUTER" ] }, + { + "id": "chestguard_hard", + "type": "ARMOR", + "category": "armor", + "name": "hard chest guard", + "description": "A plastron of interlocking plastic plate protecting your torso.", + "weight": 1000, + "volume": 28, + "price": 60000, + "to_hit": -2, + "material": [ "plastic", "neoprene" ], + "symbol": "H", + "color": "dark_gray", + "covers": [ "TORSO" ], + "coverage": 90, + "encumbrance": 20, + "warmth": 20, + "material_thickness": 3, + "environmental_protection": 1, + "flags": [ "WATER_FRIENDLY", "STURDY", "OUTER" ] + }, { "id": "chestwrap", "type": "ARMOR", @@ -5673,6 +5722,14 @@ "material_thickness": 1, "flags": [ "VARSIZE", "POCKETS" ] }, + { + "id": "robofac_jumpsuit", + "type": "ARMOR", + "copy-from": "jumpsuit", + "name": "Hub 01 jumpsuit", + "description": "A brown jumpsuit worn by the staff of Hub 01.", + "color": "brown" + }, { "id": "jumpsuit_xl", "type": "ARMOR", diff --git a/data/json/items/armor/pets_horse_armor.json b/data/json/items/armor/pets_horse_armor.json new file mode 100644 index 0000000000000..78906f7ae7548 --- /dev/null +++ b/data/json/items/armor/pets_horse_armor.json @@ -0,0 +1,26 @@ +{ + "id": "saddlebag", + "type": "ARMOR", + "name": "saddle bags", + "description": "A pair of covered pouches laid across the back of a horse behind the saddle.", + "weight": 1000, + "volume": 30, + "price": 15000, + "material": [ + "leather" + ], + "symbol": "[", + "color": "green", + "covers": [ + "HANDS" + ], + "coverage": 50, + "encumbrance": 30, + "storage": 120, + "warmth": 10, + "material_thickness": 2, + "flags": [ + "BELTED", + "WATER_FRIENDLY" + ] +} diff --git a/data/json/items/book/martial.json b/data/json/items/book/martial.json index dc1f7451d47f0..ed84db4194f0c 100644 --- a/data/json/items/book/martial.json +++ b/data/json/items/book/martial.json @@ -214,5 +214,13 @@ "name": "The Way of the Spear", "name_plural": "The Way of the Spear", "description": "A complete guide to Sōjutsu." + }, + { + "id": "manual_wingchun", + "copy-from": "book_martial", + "type": "GENERIC", + "name": "Beautiful Springtime", + "name_plural": "Beautiful Springtime", + "description": "A complete guide to Wing Chun Kung-fu. Includes a section on butterfly swords and the use of long poles at the end." } ] diff --git a/data/json/items/classes/gun.json b/data/json/items/classes/gun.json index aa59c80e71a85..9cbd22f962528 100644 --- a/data/json/items/classes/gun.json +++ b/data/json/items/classes/gun.json @@ -5,7 +5,8 @@ "reload_noise_volume": 10, "name": "base gun", "symbol": "(", - "color": "light_gray" + "color": "light_gray", + "faults": [ "fault_gun_blackpowder", "fault_gun_clogged" ] }, { "abstract": "flamethrower_base", @@ -17,7 +18,8 @@ "ammo": "flammable", "ammo_effects": [ "NO_BOOM", "FLARE" ], "reload": 4, - "flags": [ "FIRE_100", "NEVER_JAMS", "FIRESTARTER" ] + "flags": [ "FIRE_100", "NEVER_JAMS", "FIRESTARTER" ], + "faults": [ ] }, { "abstract": "launcher_base", diff --git a/data/json/items/generic.json b/data/json/items/generic.json index ca5d572548e61..316601d9de0e8 100644 --- a/data/json/items/generic.json +++ b/data/json/items/generic.json @@ -109,6 +109,20 @@ "volume": 1, "flags": [ "TRADER_AVOID" ] }, + { + "type": "GENERIC", + "id": "fp_loyalty_card", + "category": "other", + "symbol": "-", + "color": "pink", + "name": "foodplace loyalty card", + "description": "A bright pink loyalty card, all the points are stamped. This would definitely prove your fidelity to Foodplace, if it still meant anything...", + "price": 0, + "material": "paper", + "flags": "TRADER_AVOID", + "weight": 3, + "volume": 0 + }, { "type": "GENERIC", "id": "withered", @@ -1460,6 +1474,18 @@ "weight": 80, "volume": 1 }, + { + "id": "pipe_cleaner", + "type": "GENERIC", + "name": "pipe cleaner", + "description": "This is a tool designed to clean interior surface of pipes, bottles, and similar objects. This one is thin enough to be used for cleaning firearm barrels from dirt and fouling.", + "weight": 50, + "volume": 1, + "price": 500, + "material": [ "steel", "cotton" ], + "symbol": ";", + "color": "light_gray" + }, { "type": "GENERIC", "id": "clock", diff --git a/data/json/items/generic/currency.json b/data/json/items/generic/currency.json index 1bf3c687246c9..7ed668128122c 100644 --- a/data/json/items/generic/currency.json +++ b/data/json/items/generic/currency.json @@ -5,7 +5,7 @@ "name": "Merch", "description": "The Free Merchant Certified Note, also known by names such as a 'c-note' or 'merch', is a currency based on old American bills. Fifty dollar bills and larger are printed with a promissory note signed by the treasurer of the Free Merchants, along with a complex design. The note explains that this can be exchanged for food, water, and other services through the Free Merchants in the Refugee Center.", "price": 5000, - "price_postapoc": 1500, + "price_postapoc": 320, "//": "$50 bills have substantial pre-Cataclysm value, but are worth 1 meat jerky", "weight": 1, "to_hit": -3, @@ -34,7 +34,7 @@ "name": "FlatCoin", "description": "This is a coin that has been flattened in a novelty coin flattening machine. The machine has been somewhat crudely altered so that the design - which appears to once have been Mickey Mouse - is overlayed with a handwritten emblem of a book. There is some text that faintly reads 'Campus Exchange Token'.", "price": 5, - "price_postapoc": 1500, + "price_postapoc": 320, "weight": 18, "to_hit": -3, "color": "brown", diff --git a/data/json/items/gun/9mm.json b/data/json/items/gun/9mm.json index baffdd09212b7..44f1f811394d2 100644 --- a/data/json/items/gun/9mm.json +++ b/data/json/items/gun/9mm.json @@ -16,8 +16,10 @@ "skill": "smg", "dispersion": 520, "durability": 8, + "min_cycle_recoil": 450, "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ], [ "AUTO", "auto", 5 ] ], "armor_data": { "covers": [ "ARM_EITHER", "HAND_EITHER" ], "coverage": 10, "encumbrance": 30, "material_thickness": 1 }, + "faults": [ "fault_gun_blackpowder", "fault_gun_clogged" ], "magazines": [ [ "9mm", [ "stenmag", "survivor9mm_mag" ] ] ], "flags": [ "OVERSIZE", "BELTED", "FANCY", "RESTRICT_HANDS" ] }, @@ -42,6 +44,7 @@ "ranged_damage": 2, "dispersion": 280, "durability": 6, + "min_cycle_recoil": 450, "burst": 13, "valid_mod_locations": [ [ "accessories", 3 ], @@ -57,6 +60,7 @@ [ "stock", 1 ], [ "underbarrel", 1 ] ], + "faults": [ "fault_gun_blackpowder", "fault_gun_clogged" ], "magazine_well": 1, "magazines": [ [ "9mm", [ "calicomag" ] ] ] }, @@ -95,6 +99,7 @@ [ "stock", 1 ], [ "underbarrel", 1 ] ], + "faults": [ "fault_gun_blackpowder", "fault_gun_clogged" ], "magazine_well": 1, "magazines": [ [ "9mm", [ "m9bigmag", "m9mag" ] ] ] }, @@ -116,6 +121,7 @@ "ranged_damage": -1, "dispersion": 480, "durability": 6, + "blackpowder_tolerance": 48, "magazine_well": 1, "magazines": [ [ "9mm", [ "glockmag", "glockbigmag", "glock17_17", "glock17_22", "glock_drum_50rd", "glock_drum_100rd" ] ] ] }, @@ -138,6 +144,8 @@ "ranged_damage": 1, "dispersion": 240, "durability": 8, + "min_cycle_recoil": 450, + "blackpowder_tolerance": 32, "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ], [ "AUTO", "auto", 13 ] ], "valid_mod_locations": [ [ "accessories", 3 ], @@ -153,6 +161,7 @@ [ "stock", 1 ], [ "underbarrel", 1 ] ], + "faults": [ "fault_gun_blackpowder", "fault_gun_clogged" ], "magazines": [ [ "9mm", [ "mp5mag", "mp5bigmag" ] ] ] }, { @@ -175,6 +184,7 @@ [ "stock", 1 ], [ "underbarrel", 1 ] ], + "faults": [ "fault_gun_blackpowder", "fault_gun_clogged" ], "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ], [ "AUTO", "auto", 12 ] ], "built_in_mods": [ "mp5sd_suppressor" ] }, @@ -213,6 +223,7 @@ [ "sights", 1 ], [ "sling", 1 ] ], + "faults": [ "fault_gun_blackpowder", "fault_gun_clogged" ], "magazine_well": 1, "magazines": [ [ "9mm", [ "glockmag", "glockbigmag", "glock17_17", "glock17_22", "glock_drum_50rd", "glock_drum_100rd" ] ] ] }, @@ -236,6 +247,7 @@ "description": "A selective-firing 9x19mm handgun introduced by Leadworks LLC's, L39B provides accurate single-shot placement as well as controllable short-range firepower with its three-round burst mode. Users praised its accuracy and fearsome appearance. Comes with built in red dot and laser sights. Similar to other Leadworks products it doesn't accept third-party modifications.", "price": 95000, "burst": 3, + "min_cycle_recoil": 450, "relative": { "weight": 130, "durability": -1 } }, { @@ -305,11 +317,13 @@ "ranged_damage": 1, "dispersion": 550, "durability": 6, + "blackpowder_tolerance": 60, "loudness": 25, "clip_size": 1, "reload": 200, "barrel_length": 3, "valid_mod_locations": [ [ "accessories", 2 ], [ "muzzle", 1 ], [ "sling", 1 ], [ "stock", 1 ] ], + "faults": [ "fault_gun_blackpowder", "fault_gun_clogged" ], "flags": [ "RELOAD_EJECT" ] }, { @@ -331,6 +345,8 @@ "ranged_damage": -3, "dispersion": 590, "durability": 4, + "blackpowder_tolerance": 24, + "min_cycle_recoil": 325, "modes": [ [ "DEFAULT", "auto", 10 ] ], "loudness": 25, "barrel_length": 1, @@ -367,8 +383,11 @@ "ranged_damage": 1, "dispersion": 360, "durability": 5, + "blackpowder_tolerance": 24, + "min_cycle_recoil": 450, "modes": [ [ "DEFAULT", "auto", 10 ] ], "valid_mod_locations": [ [ "accessories", 2 ], [ "muzzle", 1 ], [ "sling", 1 ], [ "stock", 1 ] ], + "faults": [ "fault_gun_blackpowder", "fault_gun_clogged" ], "magazines": [ [ "9mm", [ "stenmag", "survivor9mm_mag" ] ] ] }, { @@ -390,6 +409,7 @@ "skill": "smg", "dispersion": 520, "durability": 6, + "min_cycle_recoil": 450, "modes": [ [ "DEFAULT", "auto", 8 ] ], "valid_mod_locations": [ [ "accessories", 3 ], @@ -405,6 +425,7 @@ [ "stock", 1 ], [ "underbarrel", 1 ] ], + "faults": [ "fault_gun_blackpowder", "fault_gun_clogged" ], "magazine_well": 1, "magazines": [ [ "9mm", [ "tec9mag" ] ] ] }, @@ -427,6 +448,7 @@ "ranged_damage": -1, "dispersion": 400, "durability": 9, + "blackpowder_tolerance": 48, "magazine_well": 1, "magazines": [ [ "9mm", [ "usp9mag" ] ] ] }, @@ -449,6 +471,7 @@ "ranged_damage": 1, "dispersion": 360, "durability": 7, + "min_cycle_recoil": 450, "burst": 10, "built_in_mods": [ "folding_stock" ], "valid_mod_locations": [ @@ -485,6 +508,7 @@ "ranged_damage": -1, "dispersion": 480, "durability": 6, + "blackpowder_tolerance": 48, "magazine_well": 1, "magazines": [ [ "9mm", [ "glock17_17", "glock17_22", "glock_drum_50rd", "glock_drum_100rd", "glockbigmag" ] ] ] }, @@ -496,7 +520,8 @@ "description": "A selective fire variation on the Glock 17, originally designed for Austria's EKO Cobra unit. It has compensator cuts along its barrel to make recoil more manageable.", "price": 100000, "burst": 20, - "built_in_mods": [ "barrel_ported" ] + "built_in_mods": [ "barrel_ported" ], + "min_cycle_recoil": 325 }, { "id": "kpf9", diff --git a/data/json/items/gun/faults_gun.json b/data/json/items/gun/faults_gun.json new file mode 100644 index 0000000000000..97f63491ed895 --- /dev/null +++ b/data/json/items/gun/faults_gun.json @@ -0,0 +1,26 @@ +[ + { + "id": "fault_gun_blackpowder", + "type": "fault", + "name": "blackpowder fouling", + "description": "Firing blackpowder loads from a gun fouls it, which reduces reliability and, if left uncleaned, leads to rust.", + "time": 5000, + "skills": [ [ "mechanics", 1 ] ], + "requirements": { + "qualities": [ { "id": "SCREW", "level": 1 } ], + "tools": [ [ [ "pipe_cleaner", -1 ], [ "small_repairkit", -1 ], [ "large_repairkit", -1 ] ] ] + } + }, + { + "id": "fault_gun_clogged", + "type": "fault", + "name": "clogging", + "description": "Clogging is usually caused by firing many blackpowder loads without cleaning; it prevents firing the gun until cleaned. Some guns are more resistant to this than others.", + "time": 30000, + "skills": [ [ "mechanics", 1 ] ], + "requirements": { + "qualities": [ { "id": "SCREW", "level": 1 } ], + "tools": [ [ [ "pipe_cleaner", -1 ], [ "small_repairkit", -1 ], [ "large_repairkit", -1 ] ] ] + } + } +] diff --git a/data/json/items/magazine/38.json b/data/json/items/magazine/38.json index 62fe9768afedf..0141286f59c1a 100644 --- a/data/json/items/magazine/38.json +++ b/data/json/items/magazine/38.json @@ -35,30 +35,30 @@ { "id": "38_speedloader", "type": "MAGAZINE", - "name": ".38 7-round speedloader", - "description": "This speedloader can hold 7 rounds of .38 and quickly reload a compatible revolver.", + "name": ".38/.357 7-round speedloader", + "description": "This speedloader can hold 7 rounds of .357 Magnum or .38 Special and quickly reload a compatible revolver.", "weight": 80, "volume": 1, "price": 1000, "material": "steel", "symbol": "#", "color": "light_gray", - "ammo_type": "38", + "ammo_type": [ "357mag", "38" ], "capacity": 7, "flags": [ "SPEEDLOADER" ] }, { "id": "38_speedloader5", "type": "MAGAZINE", - "name": ".38 5-round speedloader", - "description": "This speedloader can hold 5 rounds of .38 and quickly reload a compatible revolver.", + "name": ".38/.357 5-round speedloader", + "description": "This speedloader can hold 5 rounds of .357 Magnum or .38 Special and quickly reload a compatible revolver.", "weight": 60, "volume": 1, "price": 800, "material": "steel", "symbol": "#", "color": "light_gray", - "ammo_type": "38", + "ammo_type": [ "357mag", "38" ], "capacity": 5, "flags": [ "SPEEDLOADER" ] } diff --git a/data/json/items/melee.json b/data/json/items/melee.json index a26fed7688dc2..b10cfad176540 100644 --- a/data/json/items/melee.json +++ b/data/json/items/melee.json @@ -2283,5 +2283,46 @@ "techniques": "RAPID", "qualities": [ [ "CUT", 1 ], [ "CUT_FINE", 1 ], [ "BUTCHER", 7 ] ], "flags": [ "STAB", "SHEATH_KNIFE" ] + }, + { + "id": "butterfly_swords", + "type": "TOOL", + "symbol": "/", + "color": "light_gray", + "name": "pair of butterfly swords", + "name_plural": "pairs of butterfly swords", + "description": "This is a matched pair of traditional Shaolin butterfly swords. They are about the size of machetes but have hand guards and wider blades.", + "//": "basically 2x the weight, 1.3x the damage, 2.5x the resources of a single machete to cover the fact that it's two weapons, each with a hand guard", + "price": 50000, + "price_postapoc": 80000, + "material": "steel", + "flags": [ "DURABLE_MELEE", "SHEATH_SWORD", "ALWAYS_TWOHAND" ], + "techniques": [ "WBLOCK_2" ], + "weight": 1766, + "volume": 6, + "to_hit": 2, + "bashing": 6, + "cutting": 26, + "category": "weapons", + "qualities": [ [ "CUT", 1 ], [ "BUTCHER", 8 ] ] + }, + { + "type": "GENERIC", + "id": "long_pole", + "name": "long pole", + "description": "A stout, ten-foot pole. Could be used similarly to a spear. The Cataclysm gives fresh meaning to walking softly and carrying a big stick.", + "//": "a long pole is a single piece of wood, and the heavy stick just isn't large enough.", + "to_hit": 1, + "color": "brown", + "symbol": "/", + "material": [ "wood" ], + "techniques": "WBLOCK_1", + "weight": 2250, + "volume": 15, + "bashing": 25, + "flags": [ "SPEAR", "REACH_ATTACK", "NONCONDUCTIVE" ], + "price": 4000, + "price_postapoc": 8000, + "qualities": [ [ "HAMMER", 1 ] ] } ] diff --git a/data/json/items/tool_armor.json b/data/json/items/tool_armor.json index 2f7d95ffacff1..a6147a5182a40 100644 --- a/data/json/items/tool_armor.json +++ b/data/json/items/tool_armor.json @@ -2528,5 +2528,66 @@ "power_draw": 100000, "use_action": { "type": "transform", "msg": "You turn the blanket's heating elements off.", "target": "electric_blanket" }, "magazine_well": 2 + }, + { + "id": "foodperson_mask", + "type": "TOOL_ARMOR", + "name": "Foodperson mask", + "description": "Foodperson, the mascot your stomach deserves!", + "weight": 1500, + "volume": "16L", + "price": 1500, + "to_hit": -3, + "material": [ "cotton", "plastic" ], + "symbol": "Q", + "color": "pink", + "covers": [ "HEAD", "MOUTH", "EYES" ], + "coverage": 100, + "encumbrance": 30, + "warmth": 50, + "material_thickness": 5, + "environmental_protection": 2, + "charges_per_use": 1, + "ammo": "battery", + "use_action": { + "type": "transform", + "msg": "Your HUD lights-up:\"Greetings Foodperson, your shift begins now. Good luck!\"", + "target": "foodperson_mask_on", + "active": true, + "need_worn": true, + "need_charges": 1, + "need_charges_msg": "The mask's batteries are dead." + }, + "magazines": [ + [ + "battery", + [ + "medium_battery_cell", + "medium_plus_battery_cell", + "medium_atomic_battery_cell", + "medium_disposable_cell", + "light_battery_cell", + "light_plus_battery_cell", + "light_minus_battery_cell", + "light_atomic_battery_cell", + "light_minus_atomic_battery_cell", + "light_minus_disposable_cell", + "light_disposable_cell" + ] + ] + ], + "magazine_well": 2, + "flags": [ "OUTER", "SUN_GLASSES" ] + }, + { + "id": "foodperson_mask_on", + "type": "TOOL_ARMOR", + "name": "Foodperson mask (on)", + "name_plural": "Foodperson masks (on)", + "copy-from": "foodperson_mask", + "turns_per_charge": 15, + "revert_to": "foodperson_mask", + "use_action": "FOODPERSON", + "flags": [ "OUTER", "SUN_GLASSES", "NO_TAKEOFF", "LIGHT_10", "WATCH", "NO_UNLOAD" ] } ] diff --git a/data/json/items/tools.json b/data/json/items/tools.json index 46276a90b9d7d..606ae5b7f556b 100644 --- a/data/json/items/tools.json +++ b/data/json/items/tools.json @@ -8154,7 +8154,10 @@ [ "SAW_M_FINE", 1 ], [ "WRENCH_FINE", 1 ], [ "SCREW_FINE", 1 ], - [ "BUTCHER", 11 ] + [ "BUTCHER", 11 ], + [ "FILE", 2 ], + [ "REAM", 1 ], + [ "VICE", 1 ] ], "use_action": [ "HAMMER" ] }, @@ -8198,7 +8201,9 @@ [ "CUT", 2 ], [ "PRY", 1 ], [ "DRILL", 1 ], - [ "BUTCHER", -38 ] + [ "BUTCHER", -38 ], + [ "FILE", 2 ], + [ "REAM", 1 ] ] }, { @@ -9167,5 +9172,80 @@ "name": "metal hand axe", "description": "This is a chunk of steel with one edge hammered down to something resembling a cutting edge. It works passably well as an axe but really can't compare to a proper axe.", "material": "steel" + }, + { + "id": "pin_reamer", + "type": "TOOL", + "name": "pin reamer", + "description": "Handheld pin reamers of this kind are used to enlarge existing holes, or remove any burs and such from them.", + "weight": 76, + "volume": 1, + "price": 300, + "to_hit": -2, + "bashing": 1, + "cutting": 1, + "material": "steel", + "symbol": ";", + "color": "light_gray", + "qualities": [ [ "REAM", 2 ] ] + }, + { + "id": "metal_file", + "type": "TOOL", + "name": "metal fileset", + "description": "These tools are commonly used to remove small amounts of materials from the surface of metal objects.", + "weight": 76, + "volume": 1, + "price": 300, + "to_hit": -2, + "bashing": 1, + "cutting": 1, + "material": "steel", + "symbol": ";", + "color": "light_gray", + "qualities": [ [ "FILE", 2 ] ] + }, + { + "id": "angular_grinder", + "type": "TOOL", + "name": "angular grinder", + "description": "This widespread powertool is often used for removing excess material or polishing surfaces.", + "weight": 2780, + "volume": 7, + "price": 5000, + "to_hit": -3, + "bashing": 2, + "cutting": 2, + "material": [ "steel", "plastic" ], + "symbol": "/", + "color": "yellow", + "qualities": [ [ "GRIND", 2 ] ], + "ammo": "battery", + "charges_per_use": 1, + "turns_per_charge": 20, + "flags": [ "NONCONDUCTIVE" ], + "magazines": [ + [ + "battery", + [ "medium_battery_cell", "medium_plus_battery_cell", "medium_atomic_battery_cell", "medium_disposable_cell" ] + ] + ], + "magazine_well": 2 + }, + { + "id": "hand_vice", + "type": "TOOL", + "name": "hand vice", + "description": "This small handheld metal vice is useful for keeping things still.", + "weight": 320, + "volume": 2, + "price": 500, + "to_hit": -2, + "bashing": 1, + "cutting": 1, + "material": "steel", + "symbol": ";", + "color": "light_gray", + "qualities": [ [ "VICE", 1 ] ] } ] diff --git a/data/json/mapgen/basecamps/modular_field_common.json b/data/json/mapgen/basecamps/modular_field_common.json index a238e7dbff7b8..d02837d3821f4 100644 --- a/data/json/mapgen/basecamps/modular_field_common.json +++ b/data/json/mapgen/basecamps/modular_field_common.json @@ -1,7 +1,7 @@ [ { "type": "mapgen", - "update_mapgen_id": "fbmf_0", + "update_mapgen_id": "fbmh_0", "method": "json", "object": { "set": [ @@ -12,26 +12,26 @@ }, { "type": "mapgen", - "update_mapgen_id": "fbmf_fireplace_northeast", + "update_mapgen_id": "fbmh_fireplace_northeast", "method": "json", "object": { "set": [ { "point": "furniture", "id": "f_fireplace", "x": 19, "y": 6 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_brazier_northeast", + "update_mapgen_id": "fbmh_brazier_northeast", "method": "json", "object": { "set": [ { "point": "furniture", "id": "f_brazier", "x": 19, "y": 6 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_stove_northeast", + "update_mapgen_id": "fbmh_stove_northeast", "method": "json", "object": { "set": [ { "point": "furniture", "id": "f_woodstove", "x": 19, "y": 6 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_strawbed", + "nested_mapgen_id": "fbmh_strawbed", "object": { "mapgensize": [ 2, 2 ], "set": [ @@ -42,14 +42,14 @@ }, { "type": "mapgen", - "update_mapgen_id": "fbmf_strawbed1_northeast", + "update_mapgen_id": "fbmh_strawbed1_northeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 5 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_strawbed" ], "x": 18, "y": 5 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_bedset", + "nested_mapgen_id": "fbmh_bedset", "object": { "mapgensize": [ 3, 3 ], "set": [ @@ -61,167 +61,167 @@ }, { "type": "mapgen", - "update_mapgen_id": "fbmf_bed1_northeast", + "update_mapgen_id": "fbmh_bed1_northeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 5 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_bedset" ], "x": 17, "y": 5 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_strawbed2_northeast", + "update_mapgen_id": "fbmh_strawbed2_northeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 7 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_strawbed" ], "x": 18, "y": 7 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_bed2_northeast", + "update_mapgen_id": "fbmh_bed2_northeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 7 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_bedset" ], "x": 17, "y": 7 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_tent_strawbed3_east", + "update_mapgen_id": "fbmh_tent_strawbed3_east", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 11 }, { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 13 } ] + "place_nested": [ { "chunks": [ "fbmh_strawbed" ], "x": 18, "y": 11 }, { "chunks": [ "fbmh_strawbed" ], "x": 18, "y": 13 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_tent_bed3_east", + "update_mapgen_id": "fbmh_tent_bed3_east", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 11 }, { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 13 } ] + "place_nested": [ { "chunks": [ "fbmh_bedset" ], "x": 17, "y": 11 }, { "chunks": [ "fbmh_bedset" ], "x": 17, "y": 13 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room_strawbed3_east", + "update_mapgen_id": "fbmh_room_strawbed3_east", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 10 }, { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 13 } ] + "place_nested": [ { "chunks": [ "fbmh_strawbed" ], "x": 18, "y": 10 }, { "chunks": [ "fbmh_strawbed" ], "x": 18, "y": 13 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room_bed3_east", + "update_mapgen_id": "fbmh_room_bed3_east", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 10 }, { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 13 } ] + "place_nested": [ { "chunks": [ "fbmh_bedset" ], "x": 17, "y": 10 }, { "chunks": [ "fbmh_bedset" ], "x": 17, "y": 13 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_tent_strawbed3_southeast", + "update_mapgen_id": "fbmh_tent_strawbed3_southeast", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 17 }, { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 19 } ] + "place_nested": [ { "chunks": [ "fbmh_strawbed" ], "x": 18, "y": 17 }, { "chunks": [ "fbmh_strawbed" ], "x": 18, "y": 19 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_tent_bed3_southeast", + "update_mapgen_id": "fbmh_tent_bed3_southeast", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 17 }, { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 19 } ] + "place_nested": [ { "chunks": [ "fbmh_bedset" ], "x": 17, "y": 17 }, { "chunks": [ "fbmh_bedset" ], "x": 17, "y": 19 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room_strawbed3_southeast", + "update_mapgen_id": "fbmh_room_strawbed3_southeast", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 16 }, { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 19 } ] + "place_nested": [ { "chunks": [ "fbmh_strawbed" ], "x": 18, "y": 16 }, { "chunks": [ "fbmh_strawbed" ], "x": 18, "y": 19 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room_bed3_southeast", + "update_mapgen_id": "fbmh_room_bed3_southeast", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 16 }, { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 19 } ] + "place_nested": [ { "chunks": [ "fbmh_bedset" ], "x": 17, "y": 16 }, { "chunks": [ "fbmh_bedset" ], "x": 17, "y": 19 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_strawbed3_northwest", + "update_mapgen_id": "fbmh_strawbed3_northwest", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 5 }, { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 7 } ] + "place_nested": [ { "chunks": [ "fbmh_strawbed" ], "x": 4, "y": 5 }, { "chunks": [ "fbmh_strawbed" ], "x": 4, "y": 7 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_bed3_northwest", + "update_mapgen_id": "fbmh_bed3_northwest", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 5 }, { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 7 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_bedset" ], "x": 4, "y": 5 }, { "chunks": [ "fbmh_bedset" ], "x": 4, "y": 7 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_tent_strawbed3_west", + "update_mapgen_id": "fbmh_tent_strawbed3_west", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 11 }, { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 13 } ] + "place_nested": [ { "chunks": [ "fbmh_strawbed" ], "x": 4, "y": 11 }, { "chunks": [ "fbmh_strawbed" ], "x": 4, "y": 13 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_tent_bed3_west", + "update_mapgen_id": "fbmh_tent_bed3_west", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 11 }, { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 13 } ] + "place_nested": [ { "chunks": [ "fbmh_bedset" ], "x": 4, "y": 11 }, { "chunks": [ "fbmh_bedset" ], "x": 4, "y": 13 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room_strawbed3_west", + "update_mapgen_id": "fbmh_room_strawbed3_west", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 10 }, { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 13 } ] + "place_nested": [ { "chunks": [ "fbmh_strawbed" ], "x": 4, "y": 10 }, { "chunks": [ "fbmh_strawbed" ], "x": 4, "y": 13 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room_bed3_west", + "update_mapgen_id": "fbmh_room_bed3_west", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 10 }, { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 13 } ] + "place_nested": [ { "chunks": [ "fbmh_bedset" ], "x": 4, "y": 10 }, { "chunks": [ "fbmh_bedset" ], "x": 4, "y": 13 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_tent_strawbed3_southwest", + "update_mapgen_id": "fbmh_tent_strawbed3_southwest", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 17 }, { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 19 } ] + "place_nested": [ { "chunks": [ "fbmh_strawbed" ], "x": 4, "y": 17 }, { "chunks": [ "fbmh_strawbed" ], "x": 4, "y": 19 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_tent_bed3_southwest", + "update_mapgen_id": "fbmh_tent_bed3_southwest", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 17 }, { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 19 } ] + "place_nested": [ { "chunks": [ "fbmh_bedset" ], "x": 4, "y": 17 }, { "chunks": [ "fbmh_bedset" ], "x": 4, "y": 19 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room_strawbed3_southwest", + "update_mapgen_id": "fbmh_room_strawbed3_southwest", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 16 }, { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 19 } ] + "place_nested": [ { "chunks": [ "fbmh_strawbed" ], "x": 4, "y": 16 }, { "chunks": [ "fbmh_strawbed" ], "x": 4, "y": 19 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room_bed3_southwest", + "update_mapgen_id": "fbmh_room_bed3_southwest", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 16 }, { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 19 } ] + "place_nested": [ { "chunks": [ "fbmh_bedset" ], "x": 4, "y": 16 }, { "chunks": [ "fbmh_bedset" ], "x": 4, "y": 19 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_kitchen_fireplace_center", + "update_mapgen_id": "fbmh_core_kitchen_fireplace_center", "method": "json", "object": { "mapgensize": [ 6, 6 ], @@ -233,20 +233,20 @@ }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_kitchen_butchery_center", + "update_mapgen_id": "fbmh_core_kitchen_butchery_center", "method": "json", "object": { "set": [ { "point": "furniture", "id": "f_butcher_rack", "x": 12, "y": 10 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_kitchen_toolrack_center", + "update_mapgen_id": "fbmh_core_kitchen_toolrack_center", "method": "json", "object": { "set": [ { "point": "furniture", "id": "f_bookcase", "x": 10, "y": 10 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_tableset", + "nested_mapgen_id": "fbmh_core_tableset", "object": { "mapgensize": [ 3, 3 ], "set": [ @@ -258,23 +258,23 @@ }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_kitchen_table_center", + "update_mapgen_id": "fbmh_core_kitchen_table_center", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_core_tableset" ], "x": 11, "y": 12 }, { "chunks": [ "fbmf_core_tableset" ], "x": 11, "y": 13 } ] + "place_nested": [ { "chunks": [ "fbmh_core_tableset" ], "x": 11, "y": 12 }, { "chunks": [ "fbmh_core_tableset" ], "x": 11, "y": 13 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_kitchen_table_south", + "update_mapgen_id": "fbmh_core_kitchen_table_south", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_core_tableset" ], "x": 11, "y": 16 }, { "chunks": [ "fbmf_core_tableset" ], "x": 11, "y": 15 } ] + "place_nested": [ { "chunks": [ "fbmh_core_tableset" ], "x": 11, "y": 16 }, { "chunks": [ "fbmh_core_tableset" ], "x": 11, "y": 15 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_kitchen_stove_south", + "update_mapgen_id": "fbmh_core_kitchen_stove_south", "method": "json", "object": { "set": [ @@ -285,25 +285,25 @@ }, { "type": "mapgen", - "update_mapgen_id": "fbmf_well_north", + "update_mapgen_id": "fbmh_well_north", "method": "json", "object": { "set": [ { "point": "terrain", "id": "t_water_pump", "x": 13, "y": 6 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_root_cellar_north", + "update_mapgen_id": "fbmh_root_cellar_north", "method": "json", "object": { "set": [ { "point": "terrain", "id": "t_rootcellar", "x": 12, "y": 8 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_radio_tower_north", + "update_mapgen_id": "fbmh_radio_tower_north", "method": "json", "object": { "set": [ { "point": "terrain", "id": "t_radio_tower", "x": 13, "y": 3 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_radio_console_north", + "update_mapgen_id": "fbmh_radio_console_north", "method": "json", "object": { "set": [ { "point": "terrain", "id": "t_radio_controls", "x": 13, "y": 4 } ] } } diff --git a/data/json/mapgen/basecamps/modular_field_defenses.json b/data/json/mapgen/basecamps/modular_field_defenses.json index 84388fb9754d3..369f164303924 100644 --- a/data/json/mapgen/basecamps/modular_field_defenses.json +++ b/data/json/mapgen/basecamps/modular_field_defenses.json @@ -1,62 +1,82 @@ [ { "type": "mapgen", - "update_mapgen_id": "fbmf_trench_north", + "update_mapgen_id": "fbmh_trench_north", "method": "json", - "object": { "set": [ { "line": "terrain", "id": "t_pit", "x": 3, "x2": 20, "y": 0, "y2": 0 } ] } + "object": { + "set": [ { "line": "terrain", "id": "t_pit", "x": 3, "x2": 20, "y": 0, "y2": 0 } ], + "place_items": [ { "x": [ 3, 20 ], "y": 1, "item": "digging_soil_loam_50L", "chance": 99, "repeat": 720 } ] + } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_trench_south", + "update_mapgen_id": "fbmh_trench_south", "method": "json", - "object": { "set": [ { "line": "terrain", "id": "t_pit", "x": 3, "x2": 20, "y": 23, "y2": 23 } ] } + "object": { + "set": [ { "line": "terrain", "id": "t_pit", "x": 3, "x2": 20, "y": 23, "y2": 23 } ], + "place_items": [ { "x": [ 3, 20 ], "y": 22, "item": "digging_soil_loam_50L", "chance": 99, "repeat": 720 } ] + } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_trench_corner_northeast", + "update_mapgen_id": "fbmh_trench_corner_northeast", "method": "json", - "object": { "set": [ { "line": "terrain", "id": "t_pit", "x": 21, "x2": 21, "y": 0, "y2": 4 } ] } + "object": { + "set": [ { "line": "terrain", "id": "t_pit", "x": 21, "x2": 21, "y": 0, "y2": 4 } ], + "place_items": [ { "x": 20, "y": [ 0, 4 ], "item": "digging_soil_loam_50L", "chance": 99, "repeat": 200 } ] + } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_trench_corner_northwest", + "update_mapgen_id": "fbmh_trench_corner_northwest", "method": "json", - "object": { "set": [ { "line": "terrain", "id": "t_pit", "x": 2, "x2": 2, "y": 0, "y2": 4 } ] } + "object": { + "set": [ { "line": "terrain", "id": "t_pit", "x": 2, "x2": 2, "y": 0, "y2": 4 } ], + "place_items": [ { "x": 3, "y": [ 0, 4 ], "item": "digging_soil_loam_50L", "chance": 99, "repeat": 200 } ] + } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_trench_corner_southeast", + "update_mapgen_id": "fbmh_trench_corner_southeast", "method": "json", - "object": { "set": [ { "line": "terrain", "id": "t_pit", "x": 21, "x2": 21, "y": 19, "y2": 23 } ] } + "object": { + "set": [ { "line": "terrain", "id": "t_pit", "x": 21, "x2": 21, "y": 19, "y2": 23 } ], + "place_items": [ { "x": 20, "y": [ 19, 23 ], "item": "digging_soil_loam_50L", "chance": 99, "repeat": 200 } ] + } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_trench_corner_southwest", + "update_mapgen_id": "fbmh_trench_corner_southwest", "method": "json", - "object": { "set": [ { "line": "terrain", "id": "t_pit", "x": 2, "x2": 2, "y": 19, "y2": 23 } ] } + "object": { + "set": [ { "line": "terrain", "id": "t_pit", "x": 2, "x2": 2, "y": 19, "y2": 23 } ], + "place_items": [ { "x": 2, "y": [ 19, 23 ], "item": "digging_soil_loam_50L", "chance": 99, "repeat": 200 } ] + } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_trench_east", + "update_mapgen_id": "fbmh_trench_east", "method": "json", "object": { "set": [ { "line": "terrain", "id": "t_pit", "x": 21, "x2": 22, "y": 0, "y2": 0 }, { "line": "terrain", "id": "t_pit", "x": 21, "x2": 22, "y": 23, "y2": 23 }, { "line": "terrain", "id": "t_pit", "x": 23, "x2": 23, "y": 0, "y2": 23 } - ] + ], + "place_items": [ { "x": 22, "y": [ 0, 23 ], "item": "digging_soil_loam_50L", "chance": 99, "repeat": 900 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_trench_west", + "update_mapgen_id": "fbmh_trench_west", "method": "json", "object": { "set": [ { "line": "terrain", "id": "t_pit", "x": 1, "x2": 2, "y": 0, "y2": 0 }, { "line": "terrain", "id": "t_pit", "x": 1, "x2": 2, "y": 23, "y2": 23 }, { "line": "terrain", "id": "t_pit", "x": 0, "x2": 0, "y": 0, "y2": 23 } - ] + ], + "place_items": [ { "x": 0, "y": [ 0, 23 ], "item": "digging_soil_loam_50L", "chance": 99, "repeat": 900 } ] } } ] diff --git a/data/json/mapgen/basecamps/modular_field_metal.json b/data/json/mapgen/basecamps/modular_field_metal.json index 244895d06a2a8..48a75f3f60c90 100644 --- a/data/json/mapgen/basecamps/modular_field_metal.json +++ b/data/json/mapgen/basecamps/modular_field_metal.json @@ -1,14 +1,14 @@ [ { "type": "palette", - "id": "fbmf_metal_palette", + "id": "fbmh_metal_palette", "terrain": { ";": "t_dirt", ".": "t_scrap_floor", "+": "t_door_metal_c", "v": "t_window_no_curtains", "w": "t_scrap_wall" }, "furniture": { } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_room0_metal", + "nested_mapgen_id": "fbmh_room0_metal", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -19,19 +19,19 @@ " ;;;;;", " ;;;;;" ], - "palettes": [ "fbmf_metal_palette" ] + "palettes": [ "fbmh_metal_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room0_metal_northeast", + "update_mapgen_id": "fbmh_room0_metal_northeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_room0_metal" ], "x": 15, "y": 3 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_room0_metal" ], "x": 15, "y": 3 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_room1_metal", + "nested_mapgen_id": "fbmh_room1_metal", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -42,19 +42,19 @@ " w...w", " " ], - "palettes": [ "fbmf_metal_palette" ] + "palettes": [ "fbmh_metal_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room1_metal_northeast", + "update_mapgen_id": "fbmh_room1_metal_northeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_room1_metal" ], "x": 15, "y": 3 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_room1_metal" ], "x": 15, "y": 3 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_room2_metal", + "nested_mapgen_id": "fbmh_room2_metal", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -65,19 +65,19 @@ " ", " wwwww" ], - "palettes": [ "fbmf_metal_palette" ] + "palettes": [ "fbmh_metal_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room2_metal_northeast", + "update_mapgen_id": "fbmh_room2_metal_northeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_room2_metal" ], "x": 15, "y": 3 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_room2_metal" ], "x": 15, "y": 3 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_metal_shack_east", + "nested_mapgen_id": "fbmh_metal_shack_east", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -88,19 +88,19 @@ "w....w", "w+wwww" ], - "palettes": [ "fbmf_metal_palette" ] + "palettes": [ "fbmh_metal_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_shack4_metal_east", + "update_mapgen_id": "fbmh_shack4_metal_east", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_metal_shack_east" ], "x": 15, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_metal_shack_east" ], "x": 15, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_metal_room_east", + "nested_mapgen_id": "fbmh_metal_room_east", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -111,34 +111,34 @@ "w....w", "w+wwww" ], - "palettes": [ "fbmf_metal_palette" ] + "palettes": [ "fbmh_metal_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room4_metal_east", + "update_mapgen_id": "fbmh_room4_metal_east", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_metal_room_east" ], "x": 15, "y": 9 } ], + "place_nested": [ { "chunks": [ "fbmh_metal_room_east" ], "x": 15, "y": 9 } ], "set": [ { "point": "terrain", "id": "t_wall_metal", "x": 15, "y": 8 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_shack4_metal_southeast", + "update_mapgen_id": "fbmh_shack4_metal_southeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_metal_shack_east" ], "x": 15, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_metal_shack_east" ], "x": 15, "y": 15 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room4_metal_southeast", + "update_mapgen_id": "fbmh_room4_metal_southeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_metal_room_east" ], "x": 15, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_metal_room_east" ], "x": 15, "y": 15 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_metal_shack_northwest", + "nested_mapgen_id": "fbmh_metal_shack_northwest", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -149,19 +149,19 @@ "w...w;", "wwwww;" ], - "palettes": [ "fbmf_metal_palette" ] + "palettes": [ "fbmh_metal_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room4_metal_northwest", + "update_mapgen_id": "fbmh_room4_metal_northwest", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_metal_shack_northwest" ], "x": 3, "y": 3 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_metal_shack_northwest" ], "x": 3, "y": 3 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_metal_shack_west", + "nested_mapgen_id": "fbmh_metal_shack_west", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -172,19 +172,19 @@ "w....w", "wwww+w" ], - "palettes": [ "fbmf_metal_palette" ] + "palettes": [ "fbmh_metal_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_shack4_metal_west", + "update_mapgen_id": "fbmh_shack4_metal_west", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_metal_shack_west" ], "x": 3, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_metal_shack_west" ], "x": 3, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_metal_room_west", + "nested_mapgen_id": "fbmh_metal_room_west", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -195,34 +195,34 @@ "w....w", "wwww+w" ], - "palettes": [ "fbmf_metal_palette" ] + "palettes": [ "fbmh_metal_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room4_metal_west", + "update_mapgen_id": "fbmh_room4_metal_west", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_metal_room_west" ], "x": 3, "y": 9 } ], + "place_nested": [ { "chunks": [ "fbmh_metal_room_west" ], "x": 3, "y": 9 } ], "set": [ { "point": "terrain", "id": "t_wall_metal", "x": 8, "y": 8 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_shack4_metal_southwest", + "update_mapgen_id": "fbmh_shack4_metal_southwest", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_metal_shack_west" ], "x": 3, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_metal_shack_west" ], "x": 3, "y": 15 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room4_metal_southwest", + "update_mapgen_id": "fbmh_room4_metal_southwest", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_metal_room_west" ], "x": 3, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_metal_room_west" ], "x": 3, "y": 15 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_shack_ne_metal_center", + "nested_mapgen_id": "fbmh_core_shack_ne_metal_center", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -233,19 +233,19 @@ " ..w", " ..w" ], - "palettes": [ "fbmf_metal_palette" ] + "palettes": [ "fbmh_metal_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_shack_ne_metal_center", + "update_mapgen_id": "fbmh_core_shack_ne_metal_center", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_ne_metal_center" ], "x": 9, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_shack_ne_metal_center" ], "x": 9, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_ne_metal_center", + "nested_mapgen_id": "fbmh_core_ne_metal_center", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -256,19 +256,19 @@ " ...", " ..." ], - "palettes": [ "fbmf_metal_palette" ] + "palettes": [ "fbmh_metal_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_ne_metal_center", + "update_mapgen_id": "fbmh_core_ne_metal_center", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_ne_metal_center" ], "x": 9, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_ne_metal_center" ], "x": 9, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_shack_nw_metal_center", + "nested_mapgen_id": "fbmh_core_shack_nw_metal_center", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -279,19 +279,19 @@ "w.. ", "w.. " ], - "palettes": [ "fbmf_metal_palette" ] + "palettes": [ "fbmh_metal_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_shack_nw_metal_center", + "update_mapgen_id": "fbmh_core_shack_nw_metal_center", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_nw_metal_center" ], "x": 9, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_shack_nw_metal_center" ], "x": 9, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_nw_metal_center", + "nested_mapgen_id": "fbmh_core_nw_metal_center", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -302,30 +302,30 @@ "... ", "... " ], - "palettes": [ "fbmf_metal_palette" ] + "palettes": [ "fbmh_metal_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_nw_metal_center", + "update_mapgen_id": "fbmh_core_nw_metal_center", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_nw_metal_center" ], "x": 9, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_nw_metal_center" ], "x": 9, "y": 9 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_metal_center", + "update_mapgen_id": "fbmh_core_metal_center", "method": "json", "object": { "place_nested": [ - { "chunks": [ "fbmf_core_nw_metal_center" ], "x": 9, "y": 9 }, - { "chunks": [ "fbmf_core_ne_metal_center" ], "x": 9, "y": 9 } + { "chunks": [ "fbmh_core_nw_metal_center" ], "x": 9, "y": 9 }, + { "chunks": [ "fbmh_core_ne_metal_center" ], "x": 9, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_shack_se_metal_south", + "nested_mapgen_id": "fbmh_core_shack_se_metal_south", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -336,19 +336,19 @@ " ..w", " +ww" ], - "palettes": [ "fbmf_metal_palette" ] + "palettes": [ "fbmh_metal_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_shack_se_metal_south", + "update_mapgen_id": "fbmh_core_shack_se_metal_south", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_se_metal_south" ], "x": 9, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_shack_se_metal_south" ], "x": 9, "y": 15 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_se_metal_south", + "nested_mapgen_id": "fbmh_core_se_metal_south", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -359,19 +359,19 @@ " ...", " +ww" ], - "palettes": [ "fbmf_metal_palette" ] + "palettes": [ "fbmh_metal_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_se_metal_south", + "update_mapgen_id": "fbmh_core_se_metal_south", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_se_metal_south" ], "x": 9, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_se_metal_south" ], "x": 9, "y": 15 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_shack_sw_metal_south", + "nested_mapgen_id": "fbmh_core_shack_sw_metal_south", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -382,19 +382,19 @@ "w.. ", "www " ], - "palettes": [ "fbmf_metal_palette" ] + "palettes": [ "fbmh_metal_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_shack_sw_metal_south", + "update_mapgen_id": "fbmh_core_shack_sw_metal_south", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_sw_metal_south" ], "x": 9, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_shack_sw_metal_south" ], "x": 9, "y": 15 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_sw_metal_south", + "nested_mapgen_id": "fbmh_core_sw_metal_south", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -405,23 +405,23 @@ "... ", "www " ], - "palettes": [ "fbmf_metal_palette" ] + "palettes": [ "fbmh_metal_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_sw_metal_south", + "update_mapgen_id": "fbmh_core_sw_metal_south", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_sw_metal_south" ], "x": 9, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_sw_metal_south" ], "x": 9, "y": 15 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_metal_south", + "update_mapgen_id": "fbmh_core_metal_south", "method": "json", "object": { "place_nested": [ - { "chunks": [ "fbmf_core_sw_metal_south" ], "x": 9, "y": 15 }, - { "chunks": [ "fbmf_core_se_metal_south" ], "x": 9, "y": 15 } + { "chunks": [ "fbmh_core_sw_metal_south" ], "x": 9, "y": 15 }, + { "chunks": [ "fbmh_core_se_metal_south" ], "x": 9, "y": 15 } ] } } diff --git a/data/json/mapgen/basecamps/modular_field_tent.json b/data/json/mapgen/basecamps/modular_field_tent.json index 7045c38c3f06d..e2675d80dbe0c 100644 --- a/data/json/mapgen/basecamps/modular_field_tent.json +++ b/data/json/mapgen/basecamps/modular_field_tent.json @@ -1,14 +1,14 @@ [ { "type": "palette", - "id": "fbmf_tent_palette", + "id": "fbmh_tent_palette", "terrain": { " ": "t_dirt", ".": "t_dirtfloor", "+": "t_dirtfloor", "w": "t_dirtfloor" }, "furniture": { "+": "f_canvas_door", "w": "f_canvas_wall" } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_large_tent_east", + "nested_mapgen_id": "fbmh_large_tent_east", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -19,31 +19,31 @@ " w...w", " wwwww" ], - "palettes": [ "fbmf_tent_palette" ] + "palettes": [ "fbmh_tent_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_tent_northeast", + "update_mapgen_id": "fbmh_tent_northeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_large_tent_east" ], "x": 15, "y": 3 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_large_tent_east" ], "x": 15, "y": 3 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_tent_east", + "update_mapgen_id": "fbmh_tent_east", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_large_tent_east" ], "x": 15, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_large_tent_east" ], "x": 15, "y": 9 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_tent_southeast", + "update_mapgen_id": "fbmh_tent_southeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_large_tent_east" ], "x": 15, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_large_tent_east" ], "x": 15, "y": 15 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_large_tent_west", + "nested_mapgen_id": "fbmh_large_tent_west", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -54,25 +54,25 @@ "w...w ", "wwwww " ], - "palettes": [ "fbmf_tent_palette" ] + "palettes": [ "fbmh_tent_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_tent_northwest", + "update_mapgen_id": "fbmh_tent_northwest", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_large_tent_west" ], "x": 3, "y": 3 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_large_tent_west" ], "x": 3, "y": 3 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_tent_west", + "update_mapgen_id": "fbmh_tent_west", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_large_tent_west" ], "x": 3, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_large_tent_west" ], "x": 3, "y": 9 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_tent_southwest", + "update_mapgen_id": "fbmh_tent_southwest", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_large_tent_west" ], "x": 3, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_large_tent_west" ], "x": 3, "y": 15 } ] } } ] diff --git a/data/json/mapgen/basecamps/modular_field_wad.json b/data/json/mapgen/basecamps/modular_field_wad.json index 6c83e4be8ce3c..dfd368333f5c6 100644 --- a/data/json/mapgen/basecamps/modular_field_wad.json +++ b/data/json/mapgen/basecamps/modular_field_wad.json @@ -1,14 +1,14 @@ [ { "type": "palette", - "id": "fbmf_wad_palette", + "id": "fbmh_wad_palette", "terrain": { ";": "t_dirt", ".": "t_floor_primitive", "+": "t_door_makeshift_c", "v": "t_wall_wattle_half", "w": "t_wall_wattle" }, "furniture": { } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_room0_wad", + "nested_mapgen_id": "fbmh_room0_wad", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -19,19 +19,19 @@ " ;;;;;", " ;;;;;" ], - "palettes": [ "fbmf_wad_palette" ] + "palettes": [ "fbmh_wad_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room0_wad_northeast", + "update_mapgen_id": "fbmh_room0_wad_northeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_room0_wad" ], "x": 15, "y": 3 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_room0_wad" ], "x": 15, "y": 3 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_room1_wad", + "nested_mapgen_id": "fbmh_room1_wad", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -42,19 +42,19 @@ " w...w", " " ], - "palettes": [ "fbmf_wad_palette" ] + "palettes": [ "fbmh_wad_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room1_wad_northeast", + "update_mapgen_id": "fbmh_room1_wad_northeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_room1_wad" ], "x": 15, "y": 3 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_room1_wad" ], "x": 15, "y": 3 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_room2_wad", + "nested_mapgen_id": "fbmh_room2_wad", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -65,19 +65,19 @@ " ", " wwwww" ], - "palettes": [ "fbmf_wad_palette" ] + "palettes": [ "fbmh_wad_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room2_wad_northeast", + "update_mapgen_id": "fbmh_room2_wad_northeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_room2_wad" ], "x": 15, "y": 3 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_room2_wad" ], "x": 15, "y": 3 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_wad_shack_east", + "nested_mapgen_id": "fbmh_wad_shack_east", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -88,19 +88,19 @@ "w....w", "w+wwww" ], - "palettes": [ "fbmf_wad_palette" ] + "palettes": [ "fbmh_wad_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_shack4_wad_east", + "update_mapgen_id": "fbmh_shack4_wad_east", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_wad_shack_east" ], "x": 15, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_wad_shack_east" ], "x": 15, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_wad_room_east", + "nested_mapgen_id": "fbmh_wad_room_east", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -111,34 +111,34 @@ "w....w", "w+wwww" ], - "palettes": [ "fbmf_wad_palette" ] + "palettes": [ "fbmh_wad_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room4_wad_east", + "update_mapgen_id": "fbmh_room4_wad_east", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_wad_room_east" ], "x": 15, "y": 9 } ], + "place_nested": [ { "chunks": [ "fbmh_wad_room_east" ], "x": 15, "y": 9 } ], "set": [ { "point": "terrain", "id": "t_wall_wattle", "x": 15, "y": 8 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_shack4_wad_southeast", + "update_mapgen_id": "fbmh_shack4_wad_southeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_wad_shack_east" ], "x": 15, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_wad_shack_east" ], "x": 15, "y": 15 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room4_wad_southeast", + "update_mapgen_id": "fbmh_room4_wad_southeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_wad_room_east" ], "x": 15, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_wad_room_east" ], "x": 15, "y": 15 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_wad_shack_northwest", + "nested_mapgen_id": "fbmh_wad_shack_northwest", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -149,19 +149,19 @@ "w...w;", "wwwww;" ], - "palettes": [ "fbmf_wad_palette" ] + "palettes": [ "fbmh_wad_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room4_wad_northwest", + "update_mapgen_id": "fbmh_room4_wad_northwest", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_wad_shack_northwest" ], "x": 3, "y": 3 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_wad_shack_northwest" ], "x": 3, "y": 3 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_wad_shack_west", + "nested_mapgen_id": "fbmh_wad_shack_west", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -172,19 +172,19 @@ "w....w", "wwww+w" ], - "palettes": [ "fbmf_wad_palette" ] + "palettes": [ "fbmh_wad_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_shack4_wad_west", + "update_mapgen_id": "fbmh_shack4_wad_west", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_wad_shack_west" ], "x": 3, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_wad_shack_west" ], "x": 3, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_wad_room_west", + "nested_mapgen_id": "fbmh_wad_room_west", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -195,34 +195,34 @@ "w....w", "wwww+w" ], - "palettes": [ "fbmf_wad_palette" ] + "palettes": [ "fbmh_wad_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room4_wad_west", + "update_mapgen_id": "fbmh_room4_wad_west", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_wad_room_west" ], "x": 3, "y": 9 } ], + "place_nested": [ { "chunks": [ "fbmh_wad_room_west" ], "x": 3, "y": 9 } ], "set": [ { "point": "terrain", "id": "t_wall_wattle", "x": 8, "y": 8 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_shack4_wad_southwest", + "update_mapgen_id": "fbmh_shack4_wad_southwest", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_wad_shack_west" ], "x": 3, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_wad_shack_west" ], "x": 3, "y": 15 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room4_wad_southwest", + "update_mapgen_id": "fbmh_room4_wad_southwest", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_wad_room_west" ], "x": 3, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_wad_room_west" ], "x": 3, "y": 15 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_shack_ne_wad_center", + "nested_mapgen_id": "fbmh_core_shack_ne_wad_center", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -233,19 +233,19 @@ " ..w", " ..w" ], - "palettes": [ "fbmf_wad_palette" ] + "palettes": [ "fbmh_wad_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_shack_ne_wad_center", + "update_mapgen_id": "fbmh_core_shack_ne_wad_center", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_ne_wad_center" ], "x": 9, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_shack_ne_wad_center" ], "x": 9, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_ne_wad_center", + "nested_mapgen_id": "fbmh_core_ne_wad_center", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -256,19 +256,19 @@ " ...", " ..." ], - "palettes": [ "fbmf_wad_palette" ] + "palettes": [ "fbmh_wad_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_ne_wad_center", + "update_mapgen_id": "fbmh_core_ne_wad_center", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_ne_wad_center" ], "x": 9, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_ne_wad_center" ], "x": 9, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_shack_nw_wad_center", + "nested_mapgen_id": "fbmh_core_shack_nw_wad_center", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -279,19 +279,19 @@ "w.. ", "w.. " ], - "palettes": [ "fbmf_wad_palette" ] + "palettes": [ "fbmh_wad_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_shack_nw_wad_center", + "update_mapgen_id": "fbmh_core_shack_nw_wad_center", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_nw_wad_center" ], "x": 9, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_shack_nw_wad_center" ], "x": 9, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_nw_wad_center", + "nested_mapgen_id": "fbmh_core_nw_wad_center", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -302,30 +302,30 @@ "... ", "... " ], - "palettes": [ "fbmf_wad_palette" ] + "palettes": [ "fbmh_wad_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_nw_wad_center", + "update_mapgen_id": "fbmh_core_nw_wad_center", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_nw_wad_center" ], "x": 9, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_nw_wad_center" ], "x": 9, "y": 9 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_wad_center", + "update_mapgen_id": "fbmh_core_wad_center", "method": "json", "object": { "place_nested": [ - { "chunks": [ "fbmf_core_nw_wad_center" ], "x": 9, "y": 9 }, - { "chunks": [ "fbmf_core_ne_wad_center" ], "x": 9, "y": 9 } + { "chunks": [ "fbmh_core_nw_wad_center" ], "x": 9, "y": 9 }, + { "chunks": [ "fbmh_core_ne_wad_center" ], "x": 9, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_shack_se_wad_south", + "nested_mapgen_id": "fbmh_core_shack_se_wad_south", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -336,19 +336,19 @@ " ..w", " +ww" ], - "palettes": [ "fbmf_wad_palette" ] + "palettes": [ "fbmh_wad_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_shack_se_wad_south", + "update_mapgen_id": "fbmh_core_shack_se_wad_south", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_se_wad_south" ], "x": 9, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_shack_se_wad_south" ], "x": 9, "y": 15 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_se_wad_south", + "nested_mapgen_id": "fbmh_core_se_wad_south", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -359,19 +359,19 @@ " ...", " +ww" ], - "palettes": [ "fbmf_wad_palette" ] + "palettes": [ "fbmh_wad_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_se_wad_south", + "update_mapgen_id": "fbmh_core_se_wad_south", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_se_wad_south" ], "x": 9, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_se_wad_south" ], "x": 9, "y": 15 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_shack_sw_wad_south", + "nested_mapgen_id": "fbmh_core_shack_sw_wad_south", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -382,19 +382,19 @@ "w.. ", "www " ], - "palettes": [ "fbmf_wad_palette" ] + "palettes": [ "fbmh_wad_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_shack_sw_wad_south", + "update_mapgen_id": "fbmh_core_shack_sw_wad_south", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_sw_wad_south" ], "x": 9, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_shack_sw_wad_south" ], "x": 9, "y": 15 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_sw_wad_south", + "nested_mapgen_id": "fbmh_core_sw_wad_south", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -405,23 +405,23 @@ "... ", "www " ], - "palettes": [ "fbmf_wad_palette" ] + "palettes": [ "fbmh_wad_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_sw_wad_south", + "update_mapgen_id": "fbmh_core_sw_wad_south", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_sw_wad_south" ], "x": 9, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_sw_wad_south" ], "x": 9, "y": 15 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_wad_south", + "update_mapgen_id": "fbmh_core_wad_south", "method": "json", "object": { "place_nested": [ - { "chunks": [ "fbmf_core_sw_wad_south" ], "x": 9, "y": 15 }, - { "chunks": [ "fbmf_core_se_wad_south" ], "x": 9, "y": 15 } + { "chunks": [ "fbmh_core_sw_wad_south" ], "x": 9, "y": 15 }, + { "chunks": [ "fbmh_core_se_wad_south" ], "x": 9, "y": 15 } ] } } diff --git a/data/json/mapgen/basecamps/modular_field_wood.json b/data/json/mapgen/basecamps/modular_field_wood.json index cae2a3cae11e2..5f2db459d69ef 100644 --- a/data/json/mapgen/basecamps/modular_field_wood.json +++ b/data/json/mapgen/basecamps/modular_field_wood.json @@ -1,14 +1,14 @@ [ { "type": "palette", - "id": "fbmf_wood_palette", + "id": "fbmh_wood_palette", "terrain": { ";": "t_dirt", ".": "t_floor", "+": "t_door_c", "v": "t_window_no_curtains", "w": "t_wall_wood" }, "furniture": { } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_room0_wood", + "nested_mapgen_id": "fbmh_room0_wood", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -19,19 +19,19 @@ " ;;;;;", " ;;;;;" ], - "palettes": [ "fbmf_wood_palette" ] + "palettes": [ "fbmh_wood_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room0_wood_northeast", + "update_mapgen_id": "fbmh_room0_wood_northeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_room0_wood" ], "x": 15, "y": 3 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_room0_wood" ], "x": 15, "y": 3 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_room1_wood", + "nested_mapgen_id": "fbmh_room1_wood", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -42,19 +42,19 @@ " w...w", " " ], - "palettes": [ "fbmf_wood_palette" ] + "palettes": [ "fbmh_wood_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room1_wood_northeast", + "update_mapgen_id": "fbmh_room1_wood_northeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_room1_wood" ], "x": 15, "y": 3 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_room1_wood" ], "x": 15, "y": 3 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_room2_wood", + "nested_mapgen_id": "fbmh_room2_wood", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -65,19 +65,19 @@ " ", " wwwww" ], - "palettes": [ "fbmf_wood_palette" ] + "palettes": [ "fbmh_wood_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room2_wood_northeast", + "update_mapgen_id": "fbmh_room2_wood_northeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_room2_wood" ], "x": 15, "y": 3 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_room2_wood" ], "x": 15, "y": 3 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_wood_shack_east", + "nested_mapgen_id": "fbmh_wood_shack_east", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -88,19 +88,19 @@ "w....w", "w+wwww" ], - "palettes": [ "fbmf_wood_palette" ] + "palettes": [ "fbmh_wood_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_shack4_wood_east", + "update_mapgen_id": "fbmh_shack4_wood_east", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_wood_shack_east" ], "x": 15, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_wood_shack_east" ], "x": 15, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_wood_room_east", + "nested_mapgen_id": "fbmh_wood_room_east", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -111,34 +111,34 @@ "w....w", "w+wwww" ], - "palettes": [ "fbmf_wood_palette" ] + "palettes": [ "fbmh_wood_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room4_wood_east", + "update_mapgen_id": "fbmh_room4_wood_east", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_wood_room_east" ], "x": 15, "y": 9 } ], + "place_nested": [ { "chunks": [ "fbmh_wood_room_east" ], "x": 15, "y": 9 } ], "set": [ { "point": "terrain", "id": "t_wall_wood", "x": 15, "y": 8 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_shack4_wood_southeast", + "update_mapgen_id": "fbmh_shack4_wood_southeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_wood_shack_east" ], "x": 15, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_wood_shack_east" ], "x": 15, "y": 15 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room4_wood_southeast", + "update_mapgen_id": "fbmh_room4_wood_southeast", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_wood_room_east" ], "x": 15, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_wood_room_east" ], "x": 15, "y": 15 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_wood_shack_northwest", + "nested_mapgen_id": "fbmh_wood_shack_northwest", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -149,19 +149,19 @@ "w...w;", "wwwww;" ], - "palettes": [ "fbmf_wood_palette" ] + "palettes": [ "fbmh_wood_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room4_wood_northwest", + "update_mapgen_id": "fbmh_room4_wood_northwest", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_wood_shack_northwest" ], "x": 3, "y": 3 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_wood_shack_northwest" ], "x": 3, "y": 3 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_wood_shack_west", + "nested_mapgen_id": "fbmh_wood_shack_west", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -172,19 +172,19 @@ "w....w", "wwww+w" ], - "palettes": [ "fbmf_wood_palette" ] + "palettes": [ "fbmh_wood_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_shack4_wood_west", + "update_mapgen_id": "fbmh_shack4_wood_west", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_wood_shack_west" ], "x": 3, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_wood_shack_west" ], "x": 3, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_wood_room_west", + "nested_mapgen_id": "fbmh_wood_room_west", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -195,34 +195,34 @@ "w....w", "wwww+w" ], - "palettes": [ "fbmf_wood_palette" ] + "palettes": [ "fbmh_wood_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room4_wood_west", + "update_mapgen_id": "fbmh_room4_wood_west", "method": "json", "object": { - "place_nested": [ { "chunks": [ "fbmf_wood_room_west" ], "x": 3, "y": 9 } ], + "place_nested": [ { "chunks": [ "fbmh_wood_room_west" ], "x": 3, "y": 9 } ], "set": [ { "point": "terrain", "id": "t_wall_wood", "x": 8, "y": 8 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_shack4_wood_southwest", + "update_mapgen_id": "fbmh_shack4_wood_southwest", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_wood_shack_west" ], "x": 3, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_wood_shack_west" ], "x": 3, "y": 15 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_room4_wood_southwest", + "update_mapgen_id": "fbmh_room4_wood_southwest", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_wood_room_west" ], "x": 3, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_wood_room_west" ], "x": 3, "y": 15 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_shack_ne_wood_center", + "nested_mapgen_id": "fbmh_core_shack_ne_wood_center", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -233,19 +233,19 @@ " ..w", " ..w" ], - "palettes": [ "fbmf_wood_palette" ] + "palettes": [ "fbmh_wood_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_shack_ne_wood_center", + "update_mapgen_id": "fbmh_core_shack_ne_wood_center", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_ne_wood_center" ], "x": 9, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_shack_ne_wood_center" ], "x": 9, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_ne_wood_center", + "nested_mapgen_id": "fbmh_core_ne_wood_center", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -256,19 +256,19 @@ " ...", " ..." ], - "palettes": [ "fbmf_wood_palette" ] + "palettes": [ "fbmh_wood_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_ne_wood_center", + "update_mapgen_id": "fbmh_core_ne_wood_center", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_ne_wood_center" ], "x": 9, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_ne_wood_center" ], "x": 9, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_shack_nw_wood_center", + "nested_mapgen_id": "fbmh_core_shack_nw_wood_center", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -279,19 +279,19 @@ "w.. ", "w.. " ], - "palettes": [ "fbmf_wood_palette" ] + "palettes": [ "fbmh_wood_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_shack_nw_wood_center", + "update_mapgen_id": "fbmh_core_shack_nw_wood_center", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_nw_wood_center" ], "x": 9, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_shack_nw_wood_center" ], "x": 9, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_nw_wood_center", + "nested_mapgen_id": "fbmh_core_nw_wood_center", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -302,30 +302,30 @@ "... ", "... " ], - "palettes": [ "fbmf_wood_palette" ] + "palettes": [ "fbmh_wood_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_nw_wood_center", + "update_mapgen_id": "fbmh_core_nw_wood_center", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_nw_wood_center" ], "x": 9, "y": 9 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_nw_wood_center" ], "x": 9, "y": 9 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_wood_center", + "update_mapgen_id": "fbmh_core_wood_center", "method": "json", "object": { "place_nested": [ - { "chunks": [ "fbmf_core_nw_wood_center" ], "x": 9, "y": 9 }, - { "chunks": [ "fbmf_core_ne_wood_center" ], "x": 9, "y": 9 } + { "chunks": [ "fbmh_core_nw_wood_center" ], "x": 9, "y": 9 }, + { "chunks": [ "fbmh_core_ne_wood_center" ], "x": 9, "y": 9 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_shack_se_wood_south", + "nested_mapgen_id": "fbmh_core_shack_se_wood_south", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -336,19 +336,19 @@ " ..w", " +ww" ], - "palettes": [ "fbmf_wood_palette" ] + "palettes": [ "fbmh_wood_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_shack_se_wood_south", + "update_mapgen_id": "fbmh_core_shack_se_wood_south", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_se_wood_south" ], "x": 9, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_shack_se_wood_south" ], "x": 9, "y": 15 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_se_wood_south", + "nested_mapgen_id": "fbmh_core_se_wood_south", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -359,19 +359,19 @@ " ...", " +ww" ], - "palettes": [ "fbmf_wood_palette" ] + "palettes": [ "fbmh_wood_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_se_wood_south", + "update_mapgen_id": "fbmh_core_se_wood_south", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_se_wood_south" ], "x": 9, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_se_wood_south" ], "x": 9, "y": 15 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_shack_sw_wood_south", + "nested_mapgen_id": "fbmh_core_shack_sw_wood_south", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -382,19 +382,19 @@ "w.. ", "www " ], - "palettes": [ "fbmf_wood_palette" ] + "palettes": [ "fbmh_wood_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_shack_sw_wood_south", + "update_mapgen_id": "fbmh_core_shack_sw_wood_south", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_sw_wood_south" ], "x": 9, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_shack_sw_wood_south" ], "x": 9, "y": 15 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "fbmf_core_sw_wood_south", + "nested_mapgen_id": "fbmh_core_sw_wood_south", "object": { "mapgensize": [ 6, 6 ], "rows": [ @@ -405,23 +405,23 @@ "... ", "www " ], - "palettes": [ "fbmf_wood_palette" ] + "palettes": [ "fbmh_wood_palette" ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_sw_wood_south", + "update_mapgen_id": "fbmh_core_sw_wood_south", "method": "json", - "object": { "place_nested": [ { "chunks": [ "fbmf_core_sw_wood_south" ], "x": 9, "y": 15 } ] } + "object": { "place_nested": [ { "chunks": [ "fbmh_core_sw_wood_south" ], "x": 9, "y": 15 } ] } }, { "type": "mapgen", - "update_mapgen_id": "fbmf_core_wood_south", + "update_mapgen_id": "fbmh_core_wood_south", "method": "json", "object": { "place_nested": [ - { "chunks": [ "fbmf_core_sw_wood_south" ], "x": 9, "y": 15 }, - { "chunks": [ "fbmf_core_se_wood_south" ], "x": 9, "y": 15 } + { "chunks": [ "fbmh_core_sw_wood_south" ], "x": 9, "y": 15 }, + { "chunks": [ "fbmh_core_se_wood_south" ], "x": 9, "y": 15 } ] } } diff --git a/data/json/mapgen/dock.json b/data/json/mapgen/dock.json index 09f3eaae382e0..f7cfffd798548 100644 --- a/data/json/mapgen/dock.json +++ b/data/json/mapgen/dock.json @@ -109,7 +109,11 @@ " ", " " ], - "palettes": [ "dock_small" ] + "palettes": [ "dock_small" ], + "place_vehicles": [ + { "chance": 10, "fuel": 15, "vehicle": "boat_motor_single", "x": 8, "y": 5, "rotation": 270 }, + { "chance": 10, "fuel": 15, "vehicle": "boat_motor_single", "x": 13, "y": 5, "rotation": 270 } + ] } }, { diff --git a/data/json/mapgen/gunsmith.json b/data/json/mapgen/gunsmith.json index 3e2a17aa75e54..ad2a5eacca93a 100644 --- a/data/json/mapgen/gunsmith.json +++ b/data/json/mapgen/gunsmith.json @@ -2,9 +2,10 @@ { "type": "mapgen", "method": "json", - "om_terrain": [ "s_gun" ], + "om_terrain": [ "s_gun_4" ], "weight": 300, "object": { + "fill_ter": "t_floor", "rows": [ "__________________sss___", "_,___,___,___,___,sss_%_", @@ -20,13 +21,13 @@ "s8r..rrrrrr...xb.rrrrr|_", "s8r...........#......r|_", "s|r..rrrrrr...#rr....r|_", - "s|---------D--------+-|_", - "s|#######|...|tccEc..^|_", - "s|#.c..c#|...|t.xEc...w_", + "s|----------D-------+-|_", + "s|#######|<|.|tccEc..^|_", + "s|#.c..c#|D|.|t.xEc...w_", "sL...c...L...D........w_", "_|l.###.l|..^|##FCC...|_", "_|l.rrr.l|-L-------D-D|_", - "_|l.rrr.l|ssss____WS|SW_", + "_|l.rrr.l|ssss___4WS|SW_", "_|l.....l|s__,_dd_|T|T|_", "_--WW-WW--s__,_dd_-----_", "__________s__,_dd_______" @@ -40,30 +41,21 @@ "%": "t_shrub", "+": "t_door_metal_pickable", ",": "t_pavement_y", - "-": "t_wall", + "-": "t_wall_w", ".": "t_floor", "5": "t_window_bars_alarm", "8": "t_window_bars_alarm", - "C": "t_floor", "D": "t_door_c", - "E": "t_floor", - "F": "t_floor", "L": "t_door_metal_pickable", - "S": "t_floor", - "T": "t_floor", "W": "t_window_bars_alarm", - "^": "t_floor", "_": "t_pavement", - "b": "t_floor", - "c": "t_floor", "d": "t_pavement", - "l": "t_floor", - "r": "t_floor", "s": "t_sidewalk", - "t": "t_floor", "w": "t_window_bars_alarm", "x": "t_console_broken", - "|": "t_wall" + "|": "t_wall_w", + "<": "t_stairs_up", + "4": "t_gutter_downspout" }, "furniture": { "#": "f_counter", @@ -112,5 +104,89 @@ { "item": "laptop", "x": 17, "y": 15, "chance": 30 } ] } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "s_gun_2ndfloor_4", + "object": { + "fill_ter": "t_flat_roof", + "rows": [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " |222222222222222222223 ", + " |....................3 ", + " |....................3 ", + " |.....%%%%%%%%%%%%...3 ", + " |.....%;;rrrrrr;;%...3 ", + " |.....%;;;;;;;;;;%...3 ", + " |.....%;;;;;;C;C;%...3 ", + " |.VVVV%%+%%;;;CC;%...3 ", + " |.VAA.+;;>%;;C;;;%4..3 ", + " |.V...%;;;%;;;;W;%...3 ", + " |.V^VV%%%%%%%%%%%%...3 ", + " |....................3 ", + " |.......3--------5...3 ", + " |.X.....3 |.=.3 ", + " |.....:.3 |...3 ", + " |-------3 |---3 ", + " " + ], + "palettes": [ "roof_palette" ], + "terrain": { + ";": "t_floor", + "r": "t_floor", + "C": "t_floor", + "W": "t_floor", + "%": "t_wall_w", + "V": "t_chainfence", + "^": "t_chaingate_l", + ">": "t_stairs_down", + "+": "t_door_locked" + }, + "furniture": { "W": "f_water_heater" }, + "liquids": { "W": { "liquid": "water_clean", "amount": [ 0, 100 ] } }, + "items": { "C": { "item": "ammo_common", "chance": 30 }, "r": { "item": "tools_blacksmith", "chance": 30 } } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "s_gun_roof_4", + "object": { + "fill_ter": "t_flat_roof", + "rows": [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " |22222222223 ", + " |..........3 ", + " |..........3 ", + " |.......&..3 ", + " |..........3 ", + " |..........5 ", + " |..........3 ", + " |----------3 ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "roof_palette" ] + } } ] diff --git a/data/json/mapgen/gym.json b/data/json/mapgen/gym.json index 1b13956cbf7af..0bf565cf27fb2 100644 --- a/data/json/mapgen/gym.json +++ b/data/json/mapgen/gym.json @@ -1,51 +1,20 @@ [ - { - "id": "gym", - "type": "item_group", - "items": [ - [ "water_clean", 12 ], - [ "lemonade", 12 ], - [ "sports_drink", 12 ], - [ "V8", 12 ], - [ "tank_top", 30 ], - [ "towel", 40 ], - [ "under_armor_shorts", 20 ], - [ "under_armor", 20 ], - [ "protein_shake", 8 ], - [ "tshirt", 30 ], - [ "sneakers", 30 ], - [ "hot_pants", 14 ], - [ "undershirt", 30 ], - [ "hoodie", 20 ], - [ "shorts", 30 ], - [ "coke", 3 ], - [ "longshirt", 30 ], - [ "bandages", 10 ], - [ "heatpack", 10 ], - [ "gum", 12 ], - [ "soap", 10 ], - [ "sports_bra", 30 ], - [ "briefs", 30 ], - [ "yoghurt", 12 ], - [ "vitamins", 10 ], - [ "aspirin", 10 ] - ] - }, { "type": "mapgen", "method": "json", "om_terrain": [ "gym_fitness" ], "weight": 500, "object": { + "fill_ter": "t_floor", "rows": [ - "..........,,,,..........", - "..........,,,,..........", - "........|--++--|........", - "........8 8........", - "........8## 8........", - "........8 # 8........", - "........8 # 8........", - "........8 8........", + ".........,,,,,,.........", + ".U.....,,,,,,,,,,U......", + ".......,|--==--|,.......", + ".......,8y y8,.......", + ".......,8## r8,.......", + ".......,8a# f8,.......", + ".......,8 # r8,.......", + "..,,,,,,8 8,,,,,,..", "..|55555| |55555|..", "..| |..", "..| ! ! c c @ @ |..", @@ -54,70 +23,132 @@ "..| c c |..", "..| ! ! c c @ @ |..", "..| |..", - "..| VVVVVV |..", - "..| |..", - "..|-+----------|---+-|..", - "..| OOOOOOOOOO| |..", - "..| |=|=|=|..", - "..| cccccccccc|*|*|*|..", + "..|+| VVVVVV |+|..", + "..|&| B B |&|..", + "..|--+------+--|--+--|..", + "..|cc cc||cc cc|*= =*|..", + "..| || |-| |-|..", + "..|OOOOO||OOOOO|*= =*|4.", "..|------------|-----|..", "........................" ], "terrain": { " ": "t_floor", - "!": "t_floor", - "#": "t_floor", - "*": "t_floor", "+": "t_door_c", ",": "t_sidewalk", - "-": "t_wall", - ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_shrub", "t_dirt" ], + "-": "t_wall_w", + ".": [ [ "t_grass", 5 ], [ "t_grass_long", 2 ], "t_dirt", "t_shrub" ], "5": "t_wall_glass", "8": "t_wall_glass", "=": "t_door_glass_c", - "@": "t_floor", - "O": "t_floor", - "V": "t_floor", - "c": "t_floor", - "|": "t_wall" + "U": "t_grass", + "P": "t_railroad_rubble", + "|": "t_wall_w", + "4": "t_gutter_downspout" }, "furniture": { "!": "f_ergometer", "#": "f_counter", - "&": "f_counter", "*": "f_shower", "@": "f_treadmill", "O": "f_locker", "V": "f_exercise", - "c": "f_bench" + "a": "f_stool", + "r": "f_rack", + "f": "f_glass_fridge", + "c": "f_bench", + "y": [ "f_indoor_plant_y", "f_indoor_plant" ], + "B": "f_bigmirror" }, - "place_items": [ { "item": "gym", "x": [ 5, 14 ], "y": [ 19, 19 ], "chance": 95 } ] + "toilets": { "&": { } }, + "items": { + "O": { "item": "gym", "chance": 30 }, + "c": { "item": "gym", "chance": 10 }, + "f": { "item": "vending_drink_items", "chance": 30, "repeat": [ 2, 4 ] }, + "r": { "item": "snacks", "chance": 20, "repeat": [ 2, 4 ] } + }, + "nested": { "U": { "chunks": [ [ "roof_6x6_garden_1", 50 ], [ "roof_6x6_garden_2", 50 ] ] } } } }, { "type": "mapgen", "method": "json", - "om_terrain": [ "gym_fitness" ], + "om_terrain": "gym_fitness_roof", + "object": { + "fill_ter": "t_flat_roof", + "rows": [ + " ", + " ", + " |2222223 ", + " |......3 ", + " |......3 ", + " |......3 ", + " |......3 ", + " |......3 ", + " |22222|......3222223 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................5 ", + " |------------------3 ", + " " + ], + "palettes": [ "roof_palette" ], + "place_items": [ { "item": "roof_trash", "x": [ 4, 19 ], "y": [ 10, 19 ], "chance": 50, "repeat": [ 1, 3 ] } ], + "place_nested": [ + { + "chunks": [ + [ "null", 20 ], + [ "roof_2x2_utilities_b", 15 ], + [ "roof_2x2_utilities_c", 5 ], + [ "roof_2x2_utilities_d", 40 ], + [ "roof_2x2_utilities", 50 ] + ], + "x": [ 4, 17 ], + "y": [ 10, 11 ] + }, + { + "chunks": [ [ "null", 20 ], [ "roof_4x4_utility", 40 ], [ "roof_6x6_utility", 20 ] ], + "x": [ 4, 13 ], + "y": 15 + } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "gym_fitness_1" ], "weight": 500, "object": { + "fill_ter": "t_floor", "rows": [ "..............|55===55|.", "..............|c c|.", - "..5555555555|||c ### c|.", + "..|555555555|||c ### c|.", "..5 |c # c|.", "..5 @ @ @ c ||+|||+||.", "..5 c 5 |:::|.", - "..5 @ @ @ c = |:::|.", + "..5 @ @ @ c = <|<::|.", "..| 5 |:::|.", - "..| ccccc ||||||+||.", - "..| H|OC:::CO|.", - "..| ! ! ! c H|OC:::CO|.", - "..| c |OC:::CO|.", - "..| ! ! ! c ||||||+||||.", + "..| ccccc ||+|||+||.", + "..| H|O:C|C:O|.", + "..| ! ! ! c H|O:C|C:O|.", + "..| c |O:C|C:O|.", + "..| ! ! ! c ||||+||||||.", "..| |:+:::::+t|.", ".|| ||||:|*|*|*|T|.", ".|{ V V |::::|||||||||.", - ".|{ |:~~::::::::|..", + ".|{ |:~~::::::::|4.", ".|{ V V 5:~~~~~~~~~:|..", ".|{ =:~~~~~~~~~:|..", ".|{ V V 5:~~~~~~~~~:5..", @@ -129,10 +160,6 @@ "terrain": { " ": "t_floor", "~": "t_water_pool", - "{": "t_floor", - "!": "t_floor", - "#": "t_floor", - "H": "t_floor", ":": "t_linoleum_white", "*": "t_linoleum_white", "+": "t_door_c", @@ -140,14 +167,13 @@ ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_shrub", "t_dirt" ], "5": "t_wall_glass", "=": "t_door_glass_c", - "@": "t_floor", "O": "t_linoleum_white", - "V": "t_floor", - "c": "t_floor", "C": "t_linoleum_white", - "|": "t_wall", + "|": "t_brick_wall", "T": "t_linoleum_white", - "t": "t_linoleum_white" + "t": "t_linoleum_white", + "4": "t_gutter_downspout", + "<": "t_stairs_up" }, "furniture": { "!": "f_ergometer", @@ -168,5 +194,109 @@ "toilets": { "T": { } }, "items": { "O": { "item": "gym", "chance": 80 }, "H": { "item": "vending_drink", "chance": 75, "repeat": [ 4, 8 ] } } } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "gym_fitness_2ndFloor_1", + "object": { + "fill_ter": "t_floor", + "rows": [ + " ||55555|| ", + " |I..y..F| ", + " |55555555||||Ih....F| ", + " 5t......y|..|I.....y| ", + " 5t.......|..||+|||||| ", + " 5........5..5.......| ", + " 5a.......=..=..>|>..| ", + " |........5..5.......| ", + " 5t.......|..||+|||+|| ", + " 5t.......|..|...a...| ", + " ||||||||||..5.......5 ", + " |S.&|&.S|y..=.......5 ", + " ||+|||+||...5.......5 ", + " |..........y|.......5 ", + " |||5=5||||55||......y| ", + " |{.....y|HHHH||5555||| ", + " |{......5HH HHHHHHHH| ", + " |{......5H H|4 ", + " |{......5H H5 ", + " |{....a.|H H5 ", + " |||||||||H H5 ", + " |H H5 ", + " |HHHHHHHHHHH| ", + " |||5555555||| " + ], + "set": [ + { "point": "trap", "id": "tr_rollmat", "x": 5, "y": [ 4, 8 ], "repeat": [ 2, 4 ] }, + { "point": "trap", "id": "tr_rollmat", "x": 7, "y": [ 4, 8 ], "repeat": [ 2, 4 ] }, + { "point": "trap", "id": "tr_rollmat", "x": 9, "y": [ 4, 8 ], "repeat": [ 2, 4 ] }, + { "point": "trap", "id": "tr_rollmat", "x": [ 16, 20 ], "y": 11, "repeat": [ 2, 4 ] }, + { "point": "trap", "id": "tr_rollmat", "x": [ 16, 20 ], "y": 13, "repeat": [ 2, 4 ] } + ], + "terrain": { + ".": "t_floor", + "5": "t_wall_glass", + "|": "t_brick_wall", + "+": "t_door_c", + "=": "t_door_glass_c", + ">": "t_stairs_down", + " ": "t_open_air", + "H": "t_open_air_rooved", + "4": "t_gutter_downspout" + }, + "furniture": { + "a": "f_stool", + "{": "f_bigmirror", + "S": "f_sink", + "y": [ "f_indoor_plant_y", "f_indoor_plant" ], + "I": "f_desk", + "h": "f_chair", + "F": "f_filing_cabinet", + "t": "f_table" + }, + "toilets": { "&": { } }, + "place_items": [ + { "item": "gym", "x": [ 3, 9 ], "y": [ 4, 9 ], "chance": 35, "repeat": [ 1, 5 ] }, + { "item": "gym", "x": [ 4, 7 ], "y": [ 16, 18 ], "chance": 30, "repeat": [ 1, 5 ] }, + { "item": "gym", "x": [ 16, 20 ], "y": [ 10, 13 ], "chance": 30, "repeat": [ 1, 5 ] } + ], + "items": { "F": { "item": "office_paper", "chance": 30 }, "I": { "item": "softdrugs", "chance": 20, "repeat": [ 2, 4 ] } } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "gym_fitness_roof_1", + "object": { + "fill_ter": "t_flat_roof", + "rows": [ + " |22222223 ", + " |.......3 ", + " |222222222222.......3 ", + " |...................3 ", + " |...................3 ", + " |...............&...3 ", + " |...................3 ", + " |......AA...........3 ", + " |...................3 ", + " |...................3 ", + " |...................3 ", + " |...............=...3 ", + " |...................3 ", + " |...................3 ", + " ||...................3 ", + " |...................33 ", + " |...:...............3 ", + " |.........ooooooooo.5 ", + " |.........ooooooooo.3 ", + " |.........ooooooooo.3 ", + " |-------|.ooooooooo.3 ", + " |.ooooooooo.3 ", + " |...........3 ", + " |-----------3 " + ], + "palettes": [ "roof_palette" ] + } } ] diff --git a/data/json/mapgen/lmoe.json b/data/json/mapgen/lmoe.json index d18a51c226cbb..dec22389704b9 100644 --- a/data/json/mapgen/lmoe.json +++ b/data/json/mapgen/lmoe.json @@ -7,130 +7,187 @@ "weight": 100, "object": { "rows": [ - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " $$$$$$$$ ", - " $TTTTTT$ ", - " $$T####T$$ ", - " $$T#>>#T$$ ", - " $$T#..#T$$ ", - " $$T#+##T$$ ", - " $$$ $$$$ ", - " $$$ $$$$ ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " + " S S S", + " S S S ", + " S S S ", + " S ", + " S S SSSSS S ", + " SSSSSSSSSSSS ", + " SS$$$$$$$$$$SS ", + " S$$TTTTTTTT$$S S ", + " SS$$T))))))T$$S ", + " S SS$$T)####)T$$SS ", + " SS$$T)#>>#)T$$SS ", + " SS$$T)#..#)T$$SS ", + " SS$$T)#+##)T$$SS S", + " S S$$T))_)))T$$SS ", + " S$$$$$_$$$$$$S ", + " SS$$$$_$$$$$SS S ", + " SSSSS_SSSSSS ", + "S S S SS S ", + " S S ", + " S S ", + " S S ", + " S", + " S S ", + " S " ], - "terrain": { - " ": [ "t_dirt", "t_dirt", "t_grass" ], - "#": "t_rock", - "$": [ "t_tree", "t_tree_young", "t_tree_young", "t_shrub", "t_shrub", "t_shrub" ], - "+": "t_door_metal_c", - ".": "t_rock_floor", - ">": "t_stairs_down", - "T": "t_tree" - } + "palettes": [ "bunker_ext" ] } }, { "type": "mapgen", "method": "json", - "om_terrain": [ "lmoe_under" ], - "//": "Below ground", + "om_terrain": [ "lmoe_roof" ], + "//": "Above ground", "weight": 100, "object": { + "rows": [ + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvv((((((vvvvvvvvv", + "vvvvvvvvv( (vvvvvvvvv", + "vvvvvvvvv( (vvvvvvvvv", + "vvvvvvvvv( (vvvvvvvvv", + "vvvvvvvvv( (vvvvvvvvv", + "vvvvvvvvv((v(((vvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv" + ], + "palettes": [ "bunker_ext" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "lmoe_under_empty" ], + "//": "Empty LMOE shelter that has been looted or used.", + "//2": "This particular 2-bed shelter is a more professionally done, all metal bomb shelter with kitchen, secret safe room / gun locker, and workshop.", + "weight": 100, + "object": { + "fill_ter": "t_metal_floor", "rows": [ "########################", "########################", + "##||||||||||||||||||||##", + "##|{{{{{|UUUUUU|w__BB|##", + "##|u____|U____U|d__BB|##", + "##|u___h|U_UU_U|A,,,_|##", + "##|u___D|=*==*=|_,,,}|##", + "##|A____:______+_,,,}|##", + "##|||||||_1,,1_|S__hD|##", + "##|VVVVV=_e,,P_|||||||##", + "##|_____*__,,____|s_K|##", + "##|vvvvv=_E,,f___+__t|##", + "##|||||||||++|||||||||##", + "##|c_bbbbA|,,|CSCCKCC|##", + "##|c______|,,|u_____C|##", + "##|c_TT___|,,|u_hLh_F|##", + "##|c_TTh__+__+_______|##", + "##|c_TT___|__|rrrr__~|##", + "##|c______|__|||||+|||##", + "##|c______|__*__a|__A|##", + "##|ccccccc|<<=G_a|HlW|##", + "##||||||||||||||||||||##", "########################", - "###{{{{].......|}..BB###", - "###....].......|}..BB###", - "###....].......|}....###", - "###==*=].......+.....###", - "###.......1..1.|...CD###", - "###............|.....###", - "###{{{{{.......------###", - "###............^^|.K.###", - "###{{{{{.........+..t###", - "###--------++--------###", - "###c.}}}}.|..|C..XXXX###", - "###c......|..|....XXX###", - "###c.TT...|..|.....X~###", - "###c.TTC..+..+...S.~^###", - "###c.TT...|..|....~^^###", - "###c......|..|C..~^^^###", - "###c......|..|..~^^^^###", - "###ccccccc|<<|.~^^^^^###", + "########################" + ], + "palettes": [ "bunker", "empty_bunker_items" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "lmoe_under_empty" ], + "//": "Empty LMOE shelter that has been looted or used.", + "//2": "This particular 4-bed shelter is definitely homemade, mostly carved out of bare rock, and seems to be incomplete.", + "weight": 100, + "object": { + "fill_ter": "t_rock_floor", + "rows": [ "########################", "########################", + "##<<..=...^#############", + "##....*....^############", + "##....=....^############", + "##===###Y...^###########", + "##G.R###-+|||####||||||#", + "##a.l###A.|UUVVvv|{{{{|#", + "##=*=###..|U.....:....|#", + "##c..ll-..|Uuuu.u||||||#", + "##c....+..|||||+||Dh..d#", + "##c.h..-r.+......+...BB#", + "##c.TTT-r.-r..h..------#", + "#######--+-r.hLh.+...BB#", + "#######-F.Sr..h..-Dh..d#", + "#######-C.......-------#", + "#######-CCKC.uu.+...hD-#", + "#######-----.--+-}....-#", + "#########W.~.-s.-}.BBS-#", + "#########H...-&.-w.BBr-#", + "#########l..A-Kt-------#", + "#########--------#######", + "########################", "########################" ], - "terrain": { - "#": "t_rock", - "*": "t_chaingate_c", - "+": "t_door_metal_c", - "-": "t_wall_metal", - ".": "t_rock_floor", - "1": "t_column", - "<": "t_stairs_up", - "=": "t_chainfence_h", - "B": "t_rock_floor", - "C": "t_rock_floor", - "D": "t_rock_floor", - "K": "t_rock_floor", - "S": "t_rock_floor", - "T": "t_rock_floor", - "X": "t_rock_floor", - "]": "t_chainfence_v", - "^": "t_rock_floor", - "c": "t_rock_floor", - "t": "t_rock_floor", - "{": "t_rock_floor", - "|": "t_wall_metal", - "}": "t_rock_floor", - "~": "t_water_sh" - }, - "furniture": { - "B": "f_bed", - "C": "f_chair", - "D": "f_desk", - "K": "f_sink", - "S": "f_woodstove", - "T": "f_table", - "X": "f_crate_c", - "^": "f_rubble", - "c": "f_counter", - "{": "f_rack", - "}": "f_bookcase" - }, - "toilets": { "t": { } }, - "place_items": [ - { "item": "lmoe_guns", "x": [ 3, 6 ], "y": [ 3, 3 ], "chance": 80 }, - { "item": "ammo", "x": [ 3, 6 ], "y": [ 3, 3 ], "chance": 80 }, - { "item": "cannedfood", "x": [ 3, 7 ], "y": [ 9, 9 ], "chance": 90 }, - { "item": "gear_survival", "x": [ 3, 7 ], "y": [ 11, 11 ], "chance": 80 }, - { "item": "bags", "x": [ 3, 7 ], "y": [ 11, 11 ], "chance": 50 }, - { "item": "softdrugs", "x": [ 3, 7 ], "y": [ 11, 11 ], "chance": 50 }, - { "item": "manuals", "x": [ 5, 8 ], "y": [ 13, 13 ], "chance": 60 }, - { "item": "textbooks", "x": [ 5, 8 ], "y": [ 13, 13 ], "chance": 60 }, - { "item": "tools_common", "x": [ 5, 6 ], "y": [ 15, 17 ], "chance": 90 }, - { "item": "hardware", "x": [ 3, 3 ], "y": [ 13, 20 ], "chance": 70 }, - { "item": "stash_wood", "x": [ 3, 9 ], "y": [ 20, 20 ], "chance": 70 }, - { "item": "shelter", "x": [ 18, 20 ], "y": [ 13, 14 ], "chance": 70 }, - { "item": "novels", "x": [ 16, 16 ], "y": [ 3, 5 ], "chance": 70 }, - { "item": "office", "x": [ 20, 20 ], "y": [ 7, 7 ], "chance": 50 }, - { "item": "bed", "x": [ 19, 20 ], "y": [ 3, 4 ], "chance": 60 } + "palettes": [ "bunker", "empty_bunker_items" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "lmoe_under_empty" ], + "//": "Empty LMOE shelter that has been looted or used.", + "//2": "This is a commercially built 4-bed LMOE shelter based on IRL plans.", + "//3": "There are extensive secret rooms which might contain a lot of treasure in the non-looted version.", + "weight": 100, + "object": { + "fill_ter": "t_carpet_metal", + "rows": [ + "##|||||#################", + "##|,,<|||||||###########", + "##|Y,<|w,BBd|###########", + "||||+||},BB,|###########", + "|A,,,E|,,,,,|###########", + "|f,,,,|+|||||||||||#####", + "|f,,,e|,,,,b|_____|#####", + "|f,,,,|,,h,,|_____|#####", + "|Dh,,P|,hLh,|_____|#####", + "|,,,,,|,hLh,|_____|#####", + "|,,,,,+,,h,,|_____|#####", + "|,|||||~,,,u|_____|#####", + "|,+,,B|K,,,u:_____|#####", + "|,|d,B|COC,u|_____|#####", + "|,||||||||+||_____|#####", + "|,+,,B|t,,,K|_____|#####", + "|}|d,B|WAv,s|_____|#####", + "|;|||||||||:|||+||||||||", + "|__|_____|__|_______=__|", + "|__|_____||+|_______*__|", + "|__|________|_______=__|", + "|__|________+_______=__|", + "|__+________|_______=__|", + "||||||||||||||||||||||||" + ], + "palettes": [ "bunker", "empty_bunker_items" ], + "place_nested": [ + { "chunks": [ "lmoe3_storage_11x11" ], "x": 13, "y": 6 }, + { "chunks": [ "lmoe3_tankroom_11x11" ], "x": 1, "y": 18 }, + { "chunks": [ "lmoe3_crafting_11x11" ], "x": 13, "y": 18 } ] } }, @@ -138,94 +195,39 @@ "type": "mapgen", "method": "json", "om_terrain": [ "lmoe_under" ], - "//": "Below ground", - "weight": 100, + "//": "Stocked up LMOE shelter.", + "//2": "This particular 2-bed shelter is a more professionally done, all metal bomb shelter with kitchen, secret safe room / gun locker, and workshop.", + "//3": "For now this is just filler terrain, it shouldn't spawn in game.", + "weight": 50, "object": { + "fill_ter": "t_metal_floor", "rows": [ "########################", "########################", - "##<<..].........^^^^####", - "##....*............^^^##", - "##....]..............^##", - "##===###.........#######", - "##...###-+------########", - "##===###..|{{{{{{#######", - "##.....|..+...........##", - "##.....|..|.{{...{{{{.##", - "##.....+..|----+------##", - "##.....|..+..+..ccccc{##", - "##{{{{{|..|..|.......{##", - "##------+----|}.CTTT.{##", - "##XXXX.......|}......{##", - "##...........|..------##", - "##....S......|..+...CD##", - "##......~~~..--+|.....##", - "##....~~~~~~~|K.|}.BBS##", - "###..~~~~~~~~|..|}.BB###", - "####.~~~~~~~~|t.|#######", - "#######~~~##############", + "##||||||||||||||||||||##", + "##|{{{{{|UUUUUU|w__BB|##", + "##|u____|U____U|d__BB|##", + "##|u___h|U_UU_U|A,,,_|##", + "##|u___D|=*==*=|_,,,}|##", + "##|A____:______+_,,,}|##", + "##|||||||_1,,1_|S__hD|##", + "##|VVVVV=_e,,P_|||||||##", + "##|_____*__,,____|s_K|##", + "##|vvvvv=_E,,f___+__t|##", + "##|||||||||++|||||||||##", + "##|c_bbbbA|,,|CSCCKCC|##", + "##|c______|,,|u_____C|##", + "##|c_TT___|,,|u_hLh_F|##", + "##|c_TTh__+__+_______|##", + "##|c_TT___|__|rrrr__~|##", + "##|c______|__|||||+|||##", + "##|c______|__*__a|__A|##", + "##|ccccccc|<<=G_a|HlW|##", + "##||||||||||||||||||||##", "########################", "########################" ], - "terrain": { - "#": "t_rock", - "*": "t_chaingate_c", - "+": "t_door_metal_c", - "-": "t_wall_metal", - ".": "t_rock_floor", - "<": "t_stairs_up", - "=": "t_chainfence_h", - "B": "t_rock_floor", - "C": "t_rock_floor", - "D": "t_rock_floor", - "K": "t_rock_floor", - "S": "t_rock_floor", - "T": "t_rock_floor", - "X": "t_rock_floor", - "]": "t_chainfence_v", - "^": "t_rock_floor", - "c": "t_rock_floor", - "t": "t_rock_floor", - "{": "t_rock_floor", - "|": "t_wall_metal", - "}": "t_rock_floor", - "~": "t_water_sh" - }, - "furniture": { - "B": "f_bed", - "C": "f_chair", - "D": "f_desk", - "K": "f_sink", - "S": "f_woodstove", - "T": "f_table", - "X": "f_crate_c", - "^": "f_rubble", - "c": "f_counter", - "{": "f_rack", - "}": "f_bookcase" - }, - "toilets": { "t": { } }, - "place_items": [ - { "item": "lmoe_guns", "x": [ 2, 6 ], "y": [ 12, 12 ], "chance": 80 }, - { "item": "ammo", "x": [ 2, 6 ], "y": [ 12, 12 ], "chance": 80 }, - { "item": "cannedfood", "x": [ 17, 20 ], "y": [ 9, 9 ], "chance": 90 }, - { "item": "cannedfood", "x": [ 12, 13 ], "y": [ 9, 9 ], "chance": 90 }, - { "item": "cannedfood", "x": [ 11, 16 ], "y": [ 7, 7 ], "chance": 90 }, - { "item": "gear_survival", "x": [ 21, 21 ], "y": [ 11, 14 ], "chance": 80 }, - { "item": "bags", "x": [ 21, 21 ], "y": [ 11, 14 ], "chance": 50 }, - { "item": "shelter", "x": [ 21, 21 ], "y": [ 11, 14 ], "chance": 70 }, - { "item": "tools_common", "x": [ 17, 19 ], "y": [ 13, 13 ], "chance": 90 }, - { "item": "hardware", "x": [ 16, 20 ], "y": [ 11, 11 ], "chance": 70 }, - { "item": "softdrugs", "x": [ 21, 21 ], "y": [ 16, 16 ], "chance": 50 }, - { "item": "office", "x": [ 21, 21 ], "y": [ 16, 16 ], "chance": 50 }, - { "item": "manuals", "x": [ 14, 14 ], "y": [ 13, 14 ], "chance": 60 }, - { "item": "textbooks", "x": [ 14, 14 ], "y": [ 13, 14 ], "chance": 60 }, - { "item": "stash_wood", "x": [ 10, 12 ], "y": [ 14, 16 ], "chance": 90 }, - { "item": "stash_wood", "x": [ 6, 6 ], "y": [ 16, 16 ], "chance": 90 }, - { "item": "stash_wood", "x": [ 21, 21 ], "y": [ 18, 18 ], "chance": 60 }, - { "item": "novels", "x": [ 17, 17 ], "y": [ 18, 19 ], "chance": 70 }, - { "item": "bed", "x": [ 19, 20 ], "y": [ 18, 19 ], "chance": 70 } - ] + "palettes": [ "bunker", "empty_bunker_items" ] } } ] diff --git a/data/json/mapgen/nested/city_npc_nested_spawns.json b/data/json/mapgen/nested/city_npc_nested_spawns.json index 5b1b09af17681..61b0a4f6c3b95 100644 --- a/data/json/mapgen/nested/city_npc_nested_spawns.json +++ b/data/json/mapgen/nested/city_npc_nested_spawns.json @@ -71,5 +71,66 @@ "t": { "item": "cannedfood", "chance": 100, "repeat": [ 2, 3 ] } } } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "foodperson_break_room", + "object": { + "mapgensize": [ 9, 9 ], + "rows": [ + "WWWWWWWWW", + ",,sWh,,sW", + ",,,WT,,,W", + "WDWWWWDWW", + ",,bWl,,bW", + ",,bWl,,bW", + "WDWWWWDWW", + ",,,M@,,,W", + ",,,,,,,aW" + ], + "terrain": { "W": "t_wall_p", "D": "t_door_c", ",": "t_floor" }, + "toilets": { "T": { } }, + "furniture": { + "l": "f_locker", + "b": "f_bench", + "h": "f_shower", + "s": "f_sink", + "M": "f_bigmirror", + "@": "f_mannequin", + "a": "f_armchair" + }, + "place_nested": [ { "chunks": [ [ "foodperson_barred_bathroom", 20 ], [ "null", 80 ] ], "x": 3, "y": 1 } ], + "place_npcs": [ { "chance": 100, "class": "true_foodperson", "x": 4, "y": 8 } ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "foodperson_barred_bathroom", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "Wh,,sW", + "WT,,,W", + "WWWDWW", + "Wl,,bW", + "Wl,,bW", + "WWWXWW" + ], + "terrain": { "W": "t_wall_p", "D": "t_door_c", "X": "t_rdoor_boarded", ",": "t_floor" }, + "toilets": { "T": { } }, + "furniture": { "l": "f_locker", "b": "f_bench", "h": "f_shower", "s": "f_sink" }, + "place_loot": [ + { "item": "corpse", "x": 0, "y": [ 0, 1 ], "repeat": 3, "chance": 100 }, + { "item": "foodperson_mask", "x": 0, "y": [ 0, 1 ], "repeat": 3, "chance": 100 }, + { "item": "cape_fp", "x": 0, "y": [ 0, 1 ], "repeat": 3, "chance": 100 }, + { "item": "chestguard_hard", "x": 0, "y": [ 0, 1 ], "repeat": 3, "chance": 100 }, + { "item": "legguard_hard", "x": 0, "y": [ 0, 1 ], "repeat": 3, "chance": 100 }, + { "item": "armguard_hard", "x": 0, "y": [ 0, 1 ], "repeat": 3, "chance": 100 }, + { "item": "gloves_rubber", "x": 0, "y": [ 0, 1 ], "repeat": 3, "chance": 100 }, + { "item": "boots_rubber", "x": 0, "y": [ 0, 1 ], "repeat": 3, "chance": 100 } + ] + } } ] diff --git a/data/json/mapgen/nested/lmoe_nested.json b/data/json/mapgen/nested/lmoe_nested.json new file mode 100644 index 0000000000000..86c687df753bb --- /dev/null +++ b/data/json/mapgen/nested/lmoe_nested.json @@ -0,0 +1,73 @@ +[ + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "lmoe3_storage_11x11", + "//": "This is done in a nested map to make the flooring under the furniture look right, nothing much else.", + "object": { + "mapgensize": [ 11, 11 ], + "fill_ter": "t_metal_floor", + "rows": [ + "lllll|#####", + "u___U|#####", + "u_u_U|#####", + "u_u_U|#####", + "u_u_U|#####", + "u_u_U|#####", + "__v_U|#####", + "u_v_U|#####", + "u_v_U|#####", + "u___U|#####", + "AV_VU|#####" + ], + "palettes": [ "bunker", "empty_bunker_items" ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "lmoe3_tankroom_11x11", + "//": "This is done in a nested map to make the flooring under the furniture look right, nothing much else.", + "object": { + "mapgensize": [ 11, 11 ], + "fill_ter": "t_metal_floor", + "rows": [ + "_{|l__aa|{_", + "_{|l__aa||+", + "_{|l____ll_", + "_{|l_______", + "__+________", + "|||||||||||", + "###########", + "###########", + "###########", + "###########", + "###########" + ], + "palettes": [ "bunker", "empty_bunker_items" ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "lmoe3_crafting_11x11", + "//": "This is done in a nested map to make the flooring under the furniture look right, nothing much else.", + "object": { + "mapgensize": [ 10, 10 ], + "fill_ter": "t_metal_floor", + "rows": [ + "l__RRRR=_G", + "l______*_a", + "l_____c=_a", + "__h___c=_l", + "TTTcccc=_A", + "||||||||||", + "##########", + "##########", + "##########", + "##########" + ], + "palettes": [ "bunker", "empty_bunker_items" ] + } + } +] diff --git a/data/json/mapgen/nested/nested_chunks_roof.json b/data/json/mapgen/nested/nested_chunks_roof.json index 34eddd450a461..a453ee8ee6eb0 100644 --- a/data/json/mapgen/nested/nested_chunks_roof.json +++ b/data/json/mapgen/nested/nested_chunks_roof.json @@ -149,7 +149,8 @@ "__ox" ], "terrain": { "_": "t_concrete", "x": "t_sewage_pipe" }, - "furniture": { "o": "f_water_heater", "a": "f_air_conditioner" } + "furniture": { "o": "f_water_heater", "a": "f_air_conditioner" }, + "liquids": { "o": { "liquid": "water_clean", "amount": [ 0, 100 ] } } } }, { @@ -166,7 +167,8 @@ "UUUU" ], "terrain": { "_": "t_null", "c": "t_chaingate_l", "U": "t_chainfence" }, - "furniture": { "o": "f_water_heater", "a": "f_water_purifier", "A": "f_standing_tank" } + "furniture": { "o": "f_water_heater", "a": "f_water_purifier", "A": "f_standing_tank" }, + "liquids": { "o": { "liquid": "water_clean", "amount": [ 0, 100 ] } } } }, { @@ -185,7 +187,8 @@ "xxxxxx" ], "terrain": { "_": "t_null", "x": "t_sewage_pipe" }, - "furniture": { "o": "f_water_heater", "a": "f_water_purifier", "A": "f_standing_tank" } + "furniture": { "o": "f_water_heater", "a": "f_water_purifier", "A": "f_standing_tank" }, + "liquids": { "o": { "liquid": "water_clean", "amount": [ 0, 100 ] } } } }, { @@ -396,6 +399,7 @@ "type": "mapgen", "method": "json", "nested_mapgen_id": "roof_6x6_garden_3", + "//": "herb garden", "object": { "mapgensize": [ 6, 6 ], "rotation": [ 0, 3 ], diff --git a/data/json/mapgen/refugee_center/rc_grounds_e.json b/data/json/mapgen/refugee_center/rc_grounds_e.json new file mode 100644 index 0000000000000..37d213cee93d7 --- /dev/null +++ b/data/json/mapgen/refugee_center/rc_grounds_e.json @@ -0,0 +1,260 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_E1a", "refctr_E2a", "refctr_E3a", "refctr_E4a", "refctr_E5a" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|." + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_E1b", "refctr_E2b", "refctr_E3b", "refctr_E4b", "refctr_E5b" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|." + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_E1c", "refctr_E2c", "refctr_E3c", "refctr_E4c", "refctr_E5c" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|." + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_E1d", "refctr_E2d", "refctr_E3d", "refctr_E4d", "refctr_E5d" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|." + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_E1e", "refctr_E2e", "refctr_E3e", "refctr_E4e", "refctr_E5e" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|." + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_E1a_z2", "refctr_E2a_z2", "refctr_E3a_z2", "refctr_E4a_z2", "refctr_E5a_z2" ], + [ "refctr_E1b_z2", "refctr_E2b_z2", "refctr_E3b_z2", "refctr_E4b_z2", "refctr_E5b_z2" ], + [ "refctr_E1c_z2", "refctr_E2c_z2", "refctr_E3c_z2", "refctr_E4c_z2", "refctr_E5c_z2" ], + [ "refctr_E1d_z2", "refctr_E2d_z2", "refctr_E3d_z2", "refctr_E4d_z2", "refctr_E5d_z2" ], + [ "refctr_E1e_z2", "refctr_E2e_z2", "refctr_E3e_z2", "refctr_E4e_z2", "refctr_E5e_z2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_E1a_z1", "refctr_E2a_z1", "refctr_E3a_z1", "refctr_E4a_z1", "refctr_E5a_z1" ], + [ "refctr_E1b_z1", "refctr_E2b_z1", "refctr_E3b_z1", "refctr_E4b_z1", "refctr_E5b_z1" ], + [ "refctr_E1c_z1", "refctr_E2c_z1", "refctr_E3c_z1", "refctr_E4c_z1", "refctr_E5c_z1" ], + [ "refctr_E1d_z1", "refctr_E2d_z1", "refctr_E3d_z1", "refctr_E4d_z1", "refctr_E5d_z1" ], + [ "refctr_E1e_z1", "refctr_E2e_z1", "refctr_E3e_z1", "refctr_E4e_z1", "refctr_E5e_z1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_E1a_z-1", "refctr_E2a_z-1", "refctr_E3a_z-1", "refctr_E4a_z-1", "refctr_E5a_z-1" ], + [ "refctr_E1b_z-1", "refctr_E2b_z-1", "refctr_E3b_z-1", "refctr_E4b_z-1", "refctr_E5b_z-1" ], + [ "refctr_E1c_z-1", "refctr_E2c_z-1", "refctr_E3c_z-1", "refctr_E4c_z-1", "refctr_E5c_z-1" ], + [ "refctr_E1d_z-1", "refctr_E2d_z-1", "refctr_E3d_z-1", "refctr_E4d_z-1", "refctr_E5d_z-1" ], + [ "refctr_E1e_z-1", "refctr_E2e_z-1", "refctr_E3e_z-1", "refctr_E4e_z-1", "refctr_E5e_z-1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_E1a_z-2", "refctr_E2a_z-2", "refctr_E3a_z-2", "refctr_E4a_z-2", "refctr_E5a_z-2" ], + [ "refctr_E1b_z-2", "refctr_E2b_z-2", "refctr_E3b_z-2", "refctr_E4b_z-2", "refctr_E5b_z-2" ], + [ "refctr_E1c_z-2", "refctr_E2c_z-2", "refctr_E3c_z-2", "refctr_E4c_z-2", "refctr_E5c_z-2" ], + [ "refctr_E1d_z-2", "refctr_E2d_z-2", "refctr_E3d_z-2", "refctr_E4d_z-2", "refctr_E5d_z-2" ], + [ "refctr_E1e_z-2", "refctr_E2e_z-2", "refctr_E3e_z-2", "refctr_E4e_z-2", "refctr_E5e_z-2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_E1a_z-3", "refctr_E2a_z-3", "refctr_E3a_z-3", "refctr_E4a_z-3", "refctr_E5a_z-3" ], + [ "refctr_E1b_z-3", "refctr_E2b_z-3", "refctr_E3b_z-3", "refctr_E4b_z-3", "refctr_E5b_z-3" ], + [ "refctr_E1c_z-3", "refctr_E2c_z-3", "refctr_E3c_z-3", "refctr_E4c_z-3", "refctr_E5c_z-3" ], + [ "refctr_E1d_z-3", "refctr_E2d_z-3", "refctr_E3d_z-3", "refctr_E4d_z-3", "refctr_E5d_z-3" ], + [ "refctr_E1e_z-3", "refctr_E2e_z-3", "refctr_E3e_z-3", "refctr_E4e_z-3", "refctr_E5e_z-3" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_E1a_z-4", "refctr_E2a_z-4", "refctr_E3a_z-4", "refctr_E4a_z-4", "refctr_E5a_z-4" ], + [ "refctr_E1b_z-4", "refctr_E2b_z-4", "refctr_E3b_z-4", "refctr_E4b_z-4", "refctr_E5b_z-4" ], + [ "refctr_E1c_z-4", "refctr_E2c_z-4", "refctr_E3c_z-4", "refctr_E4c_z-4", "refctr_E5c_z-4" ], + [ "refctr_E1d_z-4", "refctr_E2d_z-4", "refctr_E3d_z-4", "refctr_E4d_z-4", "refctr_E5d_z-4" ], + [ "refctr_E1e_z-4", "refctr_E2e_z-4", "refctr_E3e_z-4", "refctr_E4e_z-4", "refctr_E5e_z-4" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + } +] diff --git a/data/json/mapgen/refugee_center/rc_grounds_n.json b/data/json/mapgen/refugee_center/rc_grounds_n.json new file mode 100644 index 0000000000000..3b3c840969095 --- /dev/null +++ b/data/json/mapgen/refugee_center/rc_grounds_n.json @@ -0,0 +1,260 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_N1a", "refctr_N2a", "refctr_N3a", "refctr_N4a", "refctr_N5a" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "........................................................................................................................", + "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_N1b", "refctr_N2b", "refctr_N3b", "refctr_N4b", "refctr_N5b" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_N1c", "refctr_N2c", "refctr_N3c", "refctr_N4c", "refctr_N5c" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_N1d", "refctr_N2d", "refctr_N3d", "refctr_N4d", "refctr_N5d" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_N1e", "refctr_N2e", "refctr_N3e", "refctr_N4e", "refctr_N5e" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_N1a_z2", "refctr_N2a_z2", "refctr_N3a_z2", "refctr_N4a_z2", "refctr_N5a_z2" ], + [ "refctr_N1b_z2", "refctr_N2b_z2", "refctr_N3b_z2", "refctr_N4b_z2", "refctr_N5b_z2" ], + [ "refctr_N1c_z2", "refctr_N2c_z2", "refctr_N3c_z2", "refctr_N4c_z2", "refctr_N5c_z2" ], + [ "refctr_N1d_z2", "refctr_N2d_z2", "refctr_N3d_z2", "refctr_N4d_z2", "refctr_N5d_z2" ], + [ "refctr_N1e_z2", "refctr_N2e_z2", "refctr_N3e_z2", "refctr_N4e_z2", "refctr_N5e_z2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_N1a_z1", "refctr_N2a_z1", "refctr_N3a_z1", "refctr_N4a_z1", "refctr_N5a_z1" ], + [ "refctr_N1b_z1", "refctr_N2b_z1", "refctr_N3b_z1", "refctr_N4b_z1", "refctr_N5b_z1" ], + [ "refctr_N1c_z1", "refctr_N2c_z1", "refctr_N3c_z1", "refctr_N4c_z1", "refctr_N5c_z1" ], + [ "refctr_N1d_z1", "refctr_N2d_z1", "refctr_N3d_z1", "refctr_N4d_z1", "refctr_N5d_z1" ], + [ "refctr_N1e_z1", "refctr_N2e_z1", "refctr_N3e_z1", "refctr_N4e_z1", "refctr_N5e_z1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_N1a_z-1", "refctr_N2a_z-1", "refctr_N3a_z-1", "refctr_N4a_z-1", "refctr_N5a_z-1" ], + [ "refctr_N1b_z-1", "refctr_N2b_z-1", "refctr_N3b_z-1", "refctr_N4b_z-1", "refctr_N5b_z-1" ], + [ "refctr_N1c_z-1", "refctr_N2c_z-1", "refctr_N3c_z-1", "refctr_N4c_z-1", "refctr_N5c_z-1" ], + [ "refctr_N1d_z-1", "refctr_N2d_z-1", "refctr_N3d_z-1", "refctr_N4d_z-1", "refctr_N5d_z-1" ], + [ "refctr_N1e_z-1", "refctr_N2e_z-1", "refctr_N3e_z-1", "refctr_N4e_z-1", "refctr_N5e_z-1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_N1a_z-2", "refctr_N2a_z-2", "refctr_N3a_z-2", "refctr_N4a_z-2", "refctr_N5a_z-2" ], + [ "refctr_N1b_z-2", "refctr_N2b_z-2", "refctr_N3b_z-2", "refctr_N4b_z-2", "refctr_N5b_z-2" ], + [ "refctr_N1c_z-2", "refctr_N2c_z-2", "refctr_N3c_z-2", "refctr_N4c_z-2", "refctr_N5c_z-2" ], + [ "refctr_N1d_z-2", "refctr_N2d_z-2", "refctr_N3d_z-2", "refctr_N4d_z-2", "refctr_N5d_z-2" ], + [ "refctr_N1e_z-2", "refctr_N2e_z-2", "refctr_N3e_z-2", "refctr_N4e_z-2", "refctr_N5e_z-2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_N1a_z-3", "refctr_N2a_z-3", "refctr_N3a_z-3", "refctr_N4a_z-3", "refctr_N5a_z-3" ], + [ "refctr_N1b_z-3", "refctr_N2b_z-3", "refctr_N3b_z-3", "refctr_N4b_z-3", "refctr_N5b_z-3" ], + [ "refctr_N1c_z-3", "refctr_N2c_z-3", "refctr_N3c_z-3", "refctr_N4c_z-3", "refctr_N5c_z-3" ], + [ "refctr_N1d_z-3", "refctr_N2d_z-3", "refctr_N3d_z-3", "refctr_N4d_z-3", "refctr_N5d_z-3" ], + [ "refctr_N1e_z-3", "refctr_N2e_z-3", "refctr_N3e_z-3", "refctr_N4e_z-3", "refctr_N5e_z-3" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_N1a_z-4", "refctr_N2a_z-4", "refctr_N3a_z-4", "refctr_N4a_z-4", "refctr_N5a_z-4" ], + [ "refctr_N1b_z-4", "refctr_N2b_z-4", "refctr_N3b_z-4", "refctr_N4b_z-4", "refctr_N5b_z-4" ], + [ "refctr_N1c_z-4", "refctr_N2c_z-4", "refctr_N3c_z-4", "refctr_N4c_z-4", "refctr_N5c_z-4" ], + [ "refctr_N1d_z-4", "refctr_N2d_z-4", "refctr_N3d_z-4", "refctr_N4d_z-4", "refctr_N5d_z-4" ], + [ "refctr_N1e_z-4", "refctr_N2e_z-4", "refctr_N3e_z-4", "refctr_N4e_z-4", "refctr_N5e_z-4" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + } +] diff --git a/data/json/mapgen/refugee_center/rc_grounds_ne.json b/data/json/mapgen/refugee_center/rc_grounds_ne.json new file mode 100644 index 0000000000000..206600739fef9 --- /dev/null +++ b/data/json/mapgen/refugee_center/rc_grounds_ne.json @@ -0,0 +1,260 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_NE1a", "refctr_NE2a", "refctr_NE3a", "refctr_NE4a", "refctr_NE5a" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "........................................................................................................................", + "|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|." + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_NE1b", "refctr_NE2b", "refctr_NE3b", "refctr_NE4b", "refctr_NE5b" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|." + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_NE1c", "refctr_NE2c", "refctr_NE3c", "refctr_NE4c", "refctr_NE5c" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|." + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_NE1d", "refctr_NE2d", "refctr_NE3d", "refctr_NE4d", "refctr_NE5d" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|." + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_NE1e", "refctr_NE2e", "refctr_NE3e", "refctr_NE4e", "refctr_NE5e" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|." + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_NE1a_z2", "refctr_NE2a_z2", "refctr_NE3a_z2", "refctr_NE4a_z2", "refctr_NE5a_z2" ], + [ "refctr_NE1b_z2", "refctr_NE2b_z2", "refctr_NE3b_z2", "refctr_NE4b_z2", "refctr_NE5b_z2" ], + [ "refctr_NE1c_z2", "refctr_NE2c_z2", "refctr_NE3c_z2", "refctr_NE4c_z2", "refctr_NE5c_z2" ], + [ "refctr_NE1d_z2", "refctr_NE2d_z2", "refctr_NE3d_z2", "refctr_NE4d_z2", "refctr_NE5d_z2" ], + [ "refctr_NE1e_z2", "refctr_NE2e_z2", "refctr_NE3e_z2", "refctr_NE4e_z2", "refctr_NE5e_z2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_NE1a_z1", "refctr_NE2a_z1", "refctr_NE3a_z1", "refctr_NE4a_z1", "refctr_NE5a_z1" ], + [ "refctr_NE1b_z1", "refctr_NE2b_z1", "refctr_NE3b_z1", "refctr_NE4b_z1", "refctr_NE5b_z1" ], + [ "refctr_NE1c_z1", "refctr_NE2c_z1", "refctr_NE3c_z1", "refctr_NE4c_z1", "refctr_NE5c_z1" ], + [ "refctr_NE1d_z1", "refctr_NE2d_z1", "refctr_NE3d_z1", "refctr_NE4d_z1", "refctr_NE5d_z1" ], + [ "refctr_NE1e_z1", "refctr_NE2e_z1", "refctr_NE3e_z1", "refctr_NE4e_z1", "refctr_NE5e_z1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_NE1a_z-1", "refctr_NE2a_z-1", "refctr_NE3a_z-1", "refctr_NE4a_z-1", "refctr_NE5a_z-1" ], + [ "refctr_NE1b_z-1", "refctr_NE2b_z-1", "refctr_NE3b_z-1", "refctr_NE4b_z-1", "refctr_NE5b_z-1" ], + [ "refctr_NE1c_z-1", "refctr_NE2c_z-1", "refctr_NE3c_z-1", "refctr_NE4c_z-1", "refctr_NE5c_z-1" ], + [ "refctr_NE1d_z-1", "refctr_NE2d_z-1", "refctr_NE3d_z-1", "refctr_NE4d_z-1", "refctr_NE5d_z-1" ], + [ "refctr_NE1e_z-1", "refctr_NE2e_z-1", "refctr_NE3e_z-1", "refctr_NE4e_z-1", "refctr_NE5e_z-1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_NE1a_z-2", "refctr_NE2a_z-2", "refctr_NE3a_z-2", "refctr_NE4a_z-2", "refctr_NE5a_z-2" ], + [ "refctr_NE1b_z-2", "refctr_NE2b_z-2", "refctr_NE3b_z-2", "refctr_NE4b_z-2", "refctr_NE5b_z-2" ], + [ "refctr_NE1c_z-2", "refctr_NE2c_z-2", "refctr_NE3c_z-2", "refctr_NE4c_z-2", "refctr_NE5c_z-2" ], + [ "refctr_NE1d_z-2", "refctr_NE2d_z-2", "refctr_NE3d_z-2", "refctr_NE4d_z-2", "refctr_NE5d_z-2" ], + [ "refctr_NE1e_z-2", "refctr_NE2e_z-2", "refctr_NE3e_z-2", "refctr_NE4e_z-2", "refctr_NE5e_z-2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_NE1a_z-3", "refctr_NE2a_z-3", "refctr_NE3a_z-3", "refctr_NE4a_z-3", "refctr_NE5a_z-3" ], + [ "refctr_NE1b_z-3", "refctr_NE2b_z-3", "refctr_NE3b_z-3", "refctr_NE4b_z-3", "refctr_NE5b_z-3" ], + [ "refctr_NE1c_z-3", "refctr_NE2c_z-3", "refctr_NE3c_z-3", "refctr_NE4c_z-3", "refctr_NE5c_z-3" ], + [ "refctr_NE1d_z-3", "refctr_NE2d_z-3", "refctr_NE3d_z-3", "refctr_NE4d_z-3", "refctr_NE5d_z-3" ], + [ "refctr_NE1e_z-3", "refctr_NE2e_z-3", "refctr_NE3e_z-3", "refctr_NE4e_z-3", "refctr_NE5e_z-3" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_NE1a_z-4", "refctr_NE2a_z-4", "refctr_NE3a_z-4", "refctr_NE4a_z-4", "refctr_NE5a_z-4" ], + [ "refctr_NE1b_z-4", "refctr_NE2b_z-4", "refctr_NE3b_z-4", "refctr_NE4b_z-4", "refctr_NE5b_z-4" ], + [ "refctr_NE1c_z-4", "refctr_NE2c_z-4", "refctr_NE3c_z-4", "refctr_NE4c_z-4", "refctr_NE5c_z-4" ], + [ "refctr_NE1d_z-4", "refctr_NE2d_z-4", "refctr_NE3d_z-4", "refctr_NE4d_z-4", "refctr_NE5d_z-4" ], + [ "refctr_NE1e_z-4", "refctr_NE2e_z-4", "refctr_NE3e_z-4", "refctr_NE4e_z-4", "refctr_NE5e_z-4" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + } +] diff --git a/data/json/mapgen/refugee_center/rc_grounds_nw.json b/data/json/mapgen/refugee_center/rc_grounds_nw.json new file mode 100644 index 0000000000000..f2f1cd4c1003d --- /dev/null +++ b/data/json/mapgen/refugee_center/rc_grounds_nw.json @@ -0,0 +1,260 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_NW1a", "refctr_NW2a", "refctr_NW3a", "refctr_NW4a", "refctr_NW5a" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "........................................................................................................................", + ".|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_NW1b", "refctr_NW2b", "refctr_NW3b", "refctr_NW4b", "refctr_NW5b" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_NW1c", "refctr_NW2c", "refctr_NW3c", "refctr_NW4c", "refctr_NW5c" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_NW1d", "refctr_NW2d", "refctr_NW3d", "refctr_NW4d", "refctr_NW5d" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_NW1e", "refctr_NW2e", "refctr_NW3e", "refctr_NW4e", "refctr_NW5e" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_NW1a_z2", "refctr_NW2a_z2", "refctr_NW3a_z2", "refctr_NW4a_z2", "refctr_NW5a_z2" ], + [ "refctr_NW1b_z2", "refctr_NW2b_z2", "refctr_NW3b_z2", "refctr_NW4b_z2", "refctr_NW5b_z2" ], + [ "refctr_NW1c_z2", "refctr_NW2c_z2", "refctr_NW3c_z2", "refctr_NW4c_z2", "refctr_NW5c_z2" ], + [ "refctr_NW1d_z2", "refctr_NW2d_z2", "refctr_NW3d_z2", "refctr_NW4d_z2", "refctr_NW5d_z2" ], + [ "refctr_NW1e_z2", "refctr_NW2e_z2", "refctr_NW3e_z2", "refctr_NW4e_z2", "refctr_NW5e_z2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_NW1a_z1", "refctr_NW2a_z1", "refctr_NW3a_z1", "refctr_NW4a_z1", "refctr_NW5a_z1" ], + [ "refctr_NW1b_z1", "refctr_NW2b_z1", "refctr_NW3b_z1", "refctr_NW4b_z1", "refctr_NW5b_z1" ], + [ "refctr_NW1c_z1", "refctr_NW2c_z1", "refctr_NW3c_z1", "refctr_NW4c_z1", "refctr_NW5c_z1" ], + [ "refctr_NW1d_z1", "refctr_NW2d_z1", "refctr_NW3d_z1", "refctr_NW4d_z1", "refctr_NW5d_z1" ], + [ "refctr_NW1e_z1", "refctr_NW2e_z1", "refctr_NW3e_z1", "refctr_NW4e_z1", "refctr_NW5e_z1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_NW1a_z-1", "refctr_NW2a_z-1", "refctr_NW3a_z-1", "refctr_NW4a_z-1", "refctr_NW5a_z-1" ], + [ "refctr_NW1b_z-1", "refctr_NW2b_z-1", "refctr_NW3b_z-1", "refctr_NW4b_z-1", "refctr_NW5b_z-1" ], + [ "refctr_NW1c_z-1", "refctr_NW2c_z-1", "refctr_NW3c_z-1", "refctr_NW4c_z-1", "refctr_NW5c_z-1" ], + [ "refctr_NW1d_z-1", "refctr_NW2d_z-1", "refctr_NW3d_z-1", "refctr_NW4d_z-1", "refctr_NW5d_z-1" ], + [ "refctr_NW1e_z-1", "refctr_NW2e_z-1", "refctr_NW3e_z-1", "refctr_NW4e_z-1", "refctr_NW5e_z-1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_NW1a_z-2", "refctr_NW2a_z-2", "refctr_NW3a_z-2", "refctr_NW4a_z-2", "refctr_NW5a_z-2" ], + [ "refctr_NW1b_z-2", "refctr_NW2b_z-2", "refctr_NW3b_z-2", "refctr_NW4b_z-2", "refctr_NW5b_z-2" ], + [ "refctr_NW1c_z-2", "refctr_NW2c_z-2", "refctr_NW3c_z-2", "refctr_NW4c_z-2", "refctr_NW5c_z-2" ], + [ "refctr_NW1d_z-2", "refctr_NW2d_z-2", "refctr_NW3d_z-2", "refctr_NW4d_z-2", "refctr_NW5d_z-2" ], + [ "refctr_NW1e_z-2", "refctr_NW2e_z-2", "refctr_NW3e_z-2", "refctr_NW4e_z-2", "refctr_NW5e_z-2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_NW1a_z-3", "refctr_NW2a_z-3", "refctr_NW3a_z-3", "refctr_NW4a_z-3", "refctr_NW5a_z-3" ], + [ "refctr_NW1b_z-3", "refctr_NW2b_z-3", "refctr_NW3b_z-3", "refctr_NW4b_z-3", "refctr_NW5b_z-3" ], + [ "refctr_NW1c_z-3", "refctr_NW2c_z-3", "refctr_NW3c_z-3", "refctr_NW4c_z-3", "refctr_NW5c_z-3" ], + [ "refctr_NW1d_z-3", "refctr_NW2d_z-3", "refctr_NW3d_z-3", "refctr_NW4d_z-3", "refctr_NW5d_z-3" ], + [ "refctr_NW1e_z-3", "refctr_NW2e_z-3", "refctr_NW3e_z-3", "refctr_NW4e_z-3", "refctr_NW5e_z-3" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_NW1a_z-4", "refctr_NW2a_z-4", "refctr_NW3a_z-4", "refctr_NW4a_z-4", "refctr_NW5a_z-4" ], + [ "refctr_NW1b_z-4", "refctr_NW2b_z-4", "refctr_NW3b_z-4", "refctr_NW4b_z-4", "refctr_NW5b_z-4" ], + [ "refctr_NW1c_z-4", "refctr_NW2c_z-4", "refctr_NW3c_z-4", "refctr_NW4c_z-4", "refctr_NW5c_z-4" ], + [ "refctr_NW1d_z-4", "refctr_NW2d_z-4", "refctr_NW3d_z-4", "refctr_NW4d_z-4", "refctr_NW5d_z-4" ], + [ "refctr_NW1e_z-4", "refctr_NW2e_z-4", "refctr_NW3e_z-4", "refctr_NW4e_z-4", "refctr_NW5e_z-4" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + } +] diff --git a/data/json/mapgen/refugee_center/rc_grounds_s.json b/data/json/mapgen/refugee_center/rc_grounds_s.json new file mode 100644 index 0000000000000..3383fd936d8f3 --- /dev/null +++ b/data/json/mapgen/refugee_center/rc_grounds_s.json @@ -0,0 +1,260 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_S1a", "refctr_S2a", "refctr_S3a", "refctr_S4a", "refctr_S5a" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_S1b", "refctr_S2b", "refctr_S3b", "refctr_S4b", "refctr_S5b" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_S1c", "refctr_S2c", "refctr_S3c", "refctr_S4c", "refctr_S5c" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_S1d", "refctr_S2d", "refctr_S3d", "refctr_S4d", "refctr_S5d" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_S1e", "refctr_S2e", "refctr_S3e", "refctr_S4e", "refctr_S5e" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "||||||||||||||||||||||||||||||||||||............''''_______,,_______''''............||||||||||||||||||||||||||||||||||||", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''________________''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................", + "................................................''''_______,,_______''''................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_S1a_z2", "refctr_S2a_z2", "refctr_S3a_z2", "refctr_S4a_z2", "refctr_S5a_z2" ], + [ "refctr_S1b_z2", "refctr_S2b_z2", "refctr_S3b_z2", "refctr_S4b_z2", "refctr_S5b_z2" ], + [ "refctr_S1c_z2", "refctr_S2c_z2", "refctr_S3c_z2", "refctr_S4c_z2", "refctr_S5c_z2" ], + [ "refctr_S1d_z2", "refctr_S2d_z2", "refctr_S3d_z2", "refctr_S4d_z2", "refctr_S5d_z2" ], + [ "refctr_S1e_z2", "refctr_S2e_z2", "refctr_S3e_z2", "refctr_S4e_z2", "refctr_S5e_z2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_S1a_z1", "refctr_S2a_z1", "refctr_S3a_z1", "refctr_S4a_z1", "refctr_S5a_z1" ], + [ "refctr_S1b_z1", "refctr_S2b_z1", "refctr_S3b_z1", "refctr_S4b_z1", "refctr_S5b_z1" ], + [ "refctr_S1c_z1", "refctr_S2c_z1", "refctr_S3c_z1", "refctr_S4c_z1", "refctr_S5c_z1" ], + [ "refctr_S1d_z1", "refctr_S2d_z1", "refctr_S3d_z1", "refctr_S4d_z1", "refctr_S5d_z1" ], + [ "refctr_S1e_z1", "refctr_S2e_z1", "refctr_S3e_z1", "refctr_S4e_z1", "refctr_S5e_z1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_S1a_z-1", "refctr_S2a_z-1", "refctr_S3a_z-1", "refctr_S4a_z-1", "refctr_S5a_z-1" ], + [ "refctr_S1b_z-1", "refctr_S2b_z-1", "refctr_S3b_z-1", "refctr_S4b_z-1", "refctr_S5b_z-1" ], + [ "refctr_S1c_z-1", "refctr_S2c_z-1", "refctr_S3c_z-1", "refctr_S4c_z-1", "refctr_S5c_z-1" ], + [ "refctr_S1d_z-1", "refctr_S2d_z-1", "refctr_S3d_z-1", "refctr_S4d_z-1", "refctr_S5d_z-1" ], + [ "refctr_S1e_z-1", "refctr_S2e_z-1", "refctr_S3e_z-1", "refctr_S4e_z-1", "refctr_S5e_z-1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_S1a_z-2", "refctr_S2a_z-2", "refctr_S3a_z-2", "refctr_S4a_z-2", "refctr_S5a_z-2" ], + [ "refctr_S1b_z-2", "refctr_S2b_z-2", "refctr_S3b_z-2", "refctr_S4b_z-2", "refctr_S5b_z-2" ], + [ "refctr_S1c_z-2", "refctr_S2c_z-2", "refctr_S3c_z-2", "refctr_S4c_z-2", "refctr_S5c_z-2" ], + [ "refctr_S1d_z-2", "refctr_S2d_z-2", "refctr_S3d_z-2", "refctr_S4d_z-2", "refctr_S5d_z-2" ], + [ "refctr_S1e_z-2", "refctr_S2e_z-2", "refctr_S3e_z-2", "refctr_S4e_z-2", "refctr_S5e_z-2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_S1a_z-3", "refctr_S2a_z-3", "refctr_S3a_z-3", "refctr_S4a_z-3", "refctr_S5a_z-3" ], + [ "refctr_S1b_z-3", "refctr_S2b_z-3", "refctr_S3b_z-3", "refctr_S4b_z-3", "refctr_S5b_z-3" ], + [ "refctr_S1c_z-3", "refctr_S2c_z-3", "refctr_S3c_z-3", "refctr_S4c_z-3", "refctr_S5c_z-3" ], + [ "refctr_S1d_z-3", "refctr_S2d_z-3", "refctr_S3d_z-3", "refctr_S4d_z-3", "refctr_S5d_z-3" ], + [ "refctr_S1e_z-3", "refctr_S2e_z-3", "refctr_S3e_z-3", "refctr_S4e_z-3", "refctr_S5e_z-3" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_S1a_z-4", "refctr_S2a_z-4", "refctr_S3a_z-4", "refctr_S4a_z-4", "refctr_S5a_z-4" ], + [ "refctr_S1b_z-4", "refctr_S2b_z-4", "refctr_S3b_z-4", "refctr_S4b_z-4", "refctr_S5b_z-4" ], + [ "refctr_S1c_z-4", "refctr_S2c_z-4", "refctr_S3c_z-4", "refctr_S4c_z-4", "refctr_S5c_z-4" ], + [ "refctr_S1d_z-4", "refctr_S2d_z-4", "refctr_S3d_z-4", "refctr_S4d_z-4", "refctr_S5d_z-4" ], + [ "refctr_S1e_z-4", "refctr_S2e_z-4", "refctr_S3e_z-4", "refctr_S4e_z-4", "refctr_S5e_z-4" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + } +] diff --git a/data/json/mapgen/refugee_center/rc_grounds_se.json b/data/json/mapgen/refugee_center/rc_grounds_se.json new file mode 100644 index 0000000000000..b95f136ff8c22 --- /dev/null +++ b/data/json/mapgen/refugee_center/rc_grounds_se.json @@ -0,0 +1,260 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_SE1a", "refctr_SE2a", "refctr_SE3a", "refctr_SE4a", "refctr_SE5a" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|." + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_SE1b", "refctr_SE2b", "refctr_SE3b", "refctr_SE4b", "refctr_SE5b" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|." + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_SE1c", "refctr_SE2c", "refctr_SE3c", "refctr_SE4c", "refctr_SE5c" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|." + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_SE1d", "refctr_SE2d", "refctr_SE3d", "refctr_SE4d", "refctr_SE5d" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|." + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_SE1e", "refctr_SE2e", "refctr_SE3e", "refctr_SE4e", "refctr_SE5e" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "......................................................................................................................|.", + "|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||.", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_SE1a_z2", "refctr_SE2a_z2", "refctr_SE3a_z2", "refctr_SE4a_z2", "refctr_SE5a_z2" ], + [ "refctr_SE1b_z2", "refctr_SE2b_z2", "refctr_SE3b_z2", "refctr_SE4b_z2", "refctr_SE5b_z2" ], + [ "refctr_SE1c_z2", "refctr_SE2c_z2", "refctr_SE3c_z2", "refctr_SE4c_z2", "refctr_SE5c_z2" ], + [ "refctr_SE1d_z2", "refctr_SE2d_z2", "refctr_SE3d_z2", "refctr_SE4d_z2", "refctr_SE5d_z2" ], + [ "refctr_SE1e_z2", "refctr_SE2e_z2", "refctr_SE3e_z2", "refctr_SE4e_z2", "refctr_SE5e_z2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_SE1a_z1", "refctr_SE2a_z1", "refctr_SE3a_z1", "refctr_SE4a_z1", "refctr_SE5a_z1" ], + [ "refctr_SE1b_z1", "refctr_SE2b_z1", "refctr_SE3b_z1", "refctr_SE4b_z1", "refctr_SE5b_z1" ], + [ "refctr_SE1c_z1", "refctr_SE2c_z1", "refctr_SE3c_z1", "refctr_SE4c_z1", "refctr_SE5c_z1" ], + [ "refctr_SE1d_z1", "refctr_SE2d_z1", "refctr_SE3d_z1", "refctr_SE4d_z1", "refctr_SE5d_z1" ], + [ "refctr_SE1e_z1", "refctr_SE2e_z1", "refctr_SE3e_z1", "refctr_SE4e_z1", "refctr_SE5e_z1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_SE1a_z-1", "refctr_SE2a_z-1", "refctr_SE3a_z-1", "refctr_SE4a_z-1", "refctr_SE5a_z-1" ], + [ "refctr_SE1b_z-1", "refctr_SE2b_z-1", "refctr_SE3b_z-1", "refctr_SE4b_z-1", "refctr_SE5b_z-1" ], + [ "refctr_SE1c_z-1", "refctr_SE2c_z-1", "refctr_SE3c_z-1", "refctr_SE4c_z-1", "refctr_SE5c_z-1" ], + [ "refctr_SE1d_z-1", "refctr_SE2d_z-1", "refctr_SE3d_z-1", "refctr_SE4d_z-1", "refctr_SE5d_z-1" ], + [ "refctr_SE1e_z-1", "refctr_SE2e_z-1", "refctr_SE3e_z-1", "refctr_SE4e_z-1", "refctr_SE5e_z-1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_SE1a_z-2", "refctr_SE2a_z-2", "refctr_SE3a_z-2", "refctr_SE4a_z-2", "refctr_SE5a_z-2" ], + [ "refctr_SE1b_z-2", "refctr_SE2b_z-2", "refctr_SE3b_z-2", "refctr_SE4b_z-2", "refctr_SE5b_z-2" ], + [ "refctr_SE1c_z-2", "refctr_SE2c_z-2", "refctr_SE3c_z-2", "refctr_SE4c_z-2", "refctr_SE5c_z-2" ], + [ "refctr_SE1d_z-2", "refctr_SE2d_z-2", "refctr_SE3d_z-2", "refctr_SE4d_z-2", "refctr_SE5d_z-2" ], + [ "refctr_SE1e_z-2", "refctr_SE2e_z-2", "refctr_SE3e_z-2", "refctr_SE4e_z-2", "refctr_SE5e_z-2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_SE1a_z-3", "refctr_SE2a_z-3", "refctr_SE3a_z-3", "refctr_SE4a_z-3", "refctr_SE5a_z-3" ], + [ "refctr_SE1b_z-3", "refctr_SE2b_z-3", "refctr_SE3b_z-3", "refctr_SE4b_z-3", "refctr_SE5b_z-3" ], + [ "refctr_SE1c_z-3", "refctr_SE2c_z-3", "refctr_SE3c_z-3", "refctr_SE4c_z-3", "refctr_SE5c_z-3" ], + [ "refctr_SE1d_z-3", "refctr_SE2d_z-3", "refctr_SE3d_z-3", "refctr_SE4d_z-3", "refctr_SE5d_z-3" ], + [ "refctr_SE1e_z-3", "refctr_SE2e_z-3", "refctr_SE3e_z-3", "refctr_SE4e_z-3", "refctr_SE5e_z-3" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_SE1a_z-4", "refctr_SE2a_z-4", "refctr_SE3a_z-4", "refctr_SE4a_z-4", "refctr_SE5a_z-4" ], + [ "refctr_SE1b_z-4", "refctr_SE2b_z-4", "refctr_SE3b_z-4", "refctr_SE4b_z-4", "refctr_SE5b_z-4" ], + [ "refctr_SE1c_z-4", "refctr_SE2c_z-4", "refctr_SE3c_z-4", "refctr_SE4c_z-4", "refctr_SE5c_z-4" ], + [ "refctr_SE1d_z-4", "refctr_SE2d_z-4", "refctr_SE3d_z-4", "refctr_SE4d_z-4", "refctr_SE5d_z-4" ], + [ "refctr_SE1e_z-4", "refctr_SE2e_z-4", "refctr_SE3e_z-4", "refctr_SE4e_z-4", "refctr_SE5e_z-4" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + } +] diff --git a/data/json/mapgen/refugee_center/rc_grounds_sw.json b/data/json/mapgen/refugee_center/rc_grounds_sw.json new file mode 100644 index 0000000000000..6dcadb1fceb22 --- /dev/null +++ b/data/json/mapgen/refugee_center/rc_grounds_sw.json @@ -0,0 +1,260 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_SW1a", "refctr_SW2a", "refctr_SW3a", "refctr_SW4a", "refctr_SW5a" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_SW1b", "refctr_SW2b", "refctr_SW3b", "refctr_SW4b", "refctr_SW5b" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_SW1c", "refctr_SW2c", "refctr_SW3c", "refctr_SW4c", "refctr_SW5c" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_SW1d", "refctr_SW2d", "refctr_SW3d", "refctr_SW4d", "refctr_SW5d" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_SW1e", "refctr_SW2e", "refctr_SW3e", "refctr_SW4e", "refctr_SW5e" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................", + "........................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_SW1a_z2", "refctr_SW2a_z2", "refctr_SW3a_z2", "refctr_SW4a_z2", "refctr_SW5a_z2" ], + [ "refctr_SW1b_z2", "refctr_SW2b_z2", "refctr_SW3b_z2", "refctr_SW4b_z2", "refctr_SW5b_z2" ], + [ "refctr_SW1c_z2", "refctr_SW2c_z2", "refctr_SW3c_z2", "refctr_SW4c_z2", "refctr_SW5c_z2" ], + [ "refctr_SW1d_z2", "refctr_SW2d_z2", "refctr_SW3d_z2", "refctr_SW4d_z2", "refctr_SW5d_z2" ], + [ "refctr_SW1e_z2", "refctr_SW2e_z2", "refctr_SW3e_z2", "refctr_SW4e_z2", "refctr_SW5e_z2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_SW1a_z1", "refctr_SW2a_z1", "refctr_SW3a_z1", "refctr_SW4a_z1", "refctr_SW5a_z1" ], + [ "refctr_SW1b_z1", "refctr_SW2b_z1", "refctr_SW3b_z1", "refctr_SW4b_z1", "refctr_SW5b_z1" ], + [ "refctr_SW1c_z1", "refctr_SW2c_z1", "refctr_SW3c_z1", "refctr_SW4c_z1", "refctr_SW5c_z1" ], + [ "refctr_SW1d_z1", "refctr_SW2d_z1", "refctr_SW3d_z1", "refctr_SW4d_z1", "refctr_SW5d_z1" ], + [ "refctr_SW1e_z1", "refctr_SW2e_z1", "refctr_SW3e_z1", "refctr_SW4e_z1", "refctr_SW5e_z1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_SW1a_z-1", "refctr_SW2a_z-1", "refctr_SW3a_z-1", "refctr_SW4a_z-1", "refctr_SW5a_z-1" ], + [ "refctr_SW1b_z-1", "refctr_SW2b_z-1", "refctr_SW3b_z-1", "refctr_SW4b_z-1", "refctr_SW5b_z-1" ], + [ "refctr_SW1c_z-1", "refctr_SW2c_z-1", "refctr_SW3c_z-1", "refctr_SW4c_z-1", "refctr_SW5c_z-1" ], + [ "refctr_SW1d_z-1", "refctr_SW2d_z-1", "refctr_SW3d_z-1", "refctr_SW4d_z-1", "refctr_SW5d_z-1" ], + [ "refctr_SW1e_z-1", "refctr_SW2e_z-1", "refctr_SW3e_z-1", "refctr_SW4e_z-1", "refctr_SW5e_z-1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_SW1a_z-2", "refctr_SW2a_z-2", "refctr_SW3a_z-2", "refctr_SW4a_z-2", "refctr_SW5a_z-2" ], + [ "refctr_SW1b_z-2", "refctr_SW2b_z-2", "refctr_SW3b_z-2", "refctr_SW4b_z-2", "refctr_SW5b_z-2" ], + [ "refctr_SW1c_z-2", "refctr_SW2c_z-2", "refctr_SW3c_z-2", "refctr_SW4c_z-2", "refctr_SW5c_z-2" ], + [ "refctr_SW1d_z-2", "refctr_SW2d_z-2", "refctr_SW3d_z-2", "refctr_SW4d_z-2", "refctr_SW5d_z-2" ], + [ "refctr_SW1e_z-2", "refctr_SW2e_z-2", "refctr_SW3e_z-2", "refctr_SW4e_z-2", "refctr_SW5e_z-2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_SW1a_z-3", "refctr_SW2a_z-3", "refctr_SW3a_z-3", "refctr_SW4a_z-3", "refctr_SW5a_z-3" ], + [ "refctr_SW1b_z-3", "refctr_SW2b_z-3", "refctr_SW3b_z-3", "refctr_SW4b_z-3", "refctr_SW5b_z-3" ], + [ "refctr_SW1c_z-3", "refctr_SW2c_z-3", "refctr_SW3c_z-3", "refctr_SW4c_z-3", "refctr_SW5c_z-3" ], + [ "refctr_SW1d_z-3", "refctr_SW2d_z-3", "refctr_SW3d_z-3", "refctr_SW4d_z-3", "refctr_SW5d_z-3" ], + [ "refctr_SW1e_z-3", "refctr_SW2e_z-3", "refctr_SW3e_z-3", "refctr_SW4e_z-3", "refctr_SW5e_z-3" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_SW1a_z-4", "refctr_SW2a_z-4", "refctr_SW3a_z-4", "refctr_SW4a_z-4", "refctr_SW5a_z-4" ], + [ "refctr_SW1b_z-4", "refctr_SW2b_z-4", "refctr_SW3b_z-4", "refctr_SW4b_z-4", "refctr_SW5b_z-4" ], + [ "refctr_SW1c_z-4", "refctr_SW2c_z-4", "refctr_SW3c_z-4", "refctr_SW4c_z-4", "refctr_SW5c_z-4" ], + [ "refctr_SW1d_z-4", "refctr_SW2d_z-4", "refctr_SW3d_z-4", "refctr_SW4d_z-4", "refctr_SW5d_z-4" ], + [ "refctr_SW1e_z-4", "refctr_SW2e_z-4", "refctr_SW3e_z-4", "refctr_SW4e_z-4", "refctr_SW5e_z-4" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + } +] diff --git a/data/json/mapgen/refugee_center/rc_grounds_w.json b/data/json/mapgen/refugee_center/rc_grounds_w.json new file mode 100644 index 0000000000000..c51c9c9b1ae40 --- /dev/null +++ b/data/json/mapgen/refugee_center/rc_grounds_w.json @@ -0,0 +1,260 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_W1a", "refctr_W2a", "refctr_W3a", "refctr_W4a", "refctr_W5a" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_W1b", "refctr_W2b", "refctr_W3b", "refctr_W4b", "refctr_W5b" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_W1c", "refctr_W2c", "refctr_W3c", "refctr_W4c", "refctr_W5c" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_W1d", "refctr_W2d", "refctr_W3d", "refctr_W4d", "refctr_W5d" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "refctr_W1e", "refctr_W2e", "refctr_W3e", "refctr_W4e", "refctr_W5e" ] ], + "weight": 100, + "object": { + "fill_ter": "t_grass", + "rows": [ + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................", + ".|......................................................................................................................" + ], + "palettes": [ "rc_grounds" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_W1a_z2", "refctr_W2a_z2", "refctr_W3a_z2", "refctr_W4a_z2", "refctr_W5a_z2" ], + [ "refctr_W1b_z2", "refctr_W2b_z2", "refctr_W3b_z2", "refctr_W4b_z2", "refctr_W5b_z2" ], + [ "refctr_W1c_z2", "refctr_W2c_z2", "refctr_W3c_z2", "refctr_W4c_z2", "refctr_W5c_z2" ], + [ "refctr_W1d_z2", "refctr_W2d_z2", "refctr_W3d_z2", "refctr_W4d_z2", "refctr_W5d_z2" ], + [ "refctr_W1e_z2", "refctr_W2e_z2", "refctr_W3e_z2", "refctr_W4e_z2", "refctr_W5e_z2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_W1a_z1", "refctr_W2a_z1", "refctr_W3a_z1", "refctr_W4a_z1", "refctr_W5a_z1" ], + [ "refctr_W1b_z1", "refctr_W2b_z1", "refctr_W3b_z1", "refctr_W4b_z1", "refctr_W5b_z1" ], + [ "refctr_W1c_z1", "refctr_W2c_z1", "refctr_W3c_z1", "refctr_W4c_z1", "refctr_W5c_z1" ], + [ "refctr_W1d_z1", "refctr_W2d_z1", "refctr_W3d_z1", "refctr_W4d_z1", "refctr_W5d_z1" ], + [ "refctr_W1e_z1", "refctr_W2e_z1", "refctr_W3e_z1", "refctr_W4e_z1", "refctr_W5e_z1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_W1a_z-1", "refctr_W2a_z-1", "refctr_W3a_z-1", "refctr_W4a_z-1", "refctr_W5a_z-1" ], + [ "refctr_W1b_z-1", "refctr_W2b_z-1", "refctr_W3b_z-1", "refctr_W4b_z-1", "refctr_W5b_z-1" ], + [ "refctr_W1c_z-1", "refctr_W2c_z-1", "refctr_W3c_z-1", "refctr_W4c_z-1", "refctr_W5c_z-1" ], + [ "refctr_W1d_z-1", "refctr_W2d_z-1", "refctr_W3d_z-1", "refctr_W4d_z-1", "refctr_W5d_z-1" ], + [ "refctr_W1e_z-1", "refctr_W2e_z-1", "refctr_W3e_z-1", "refctr_W4e_z-1", "refctr_W5e_z-1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_W1a_z-2", "refctr_W2a_z-2", "refctr_W3a_z-2", "refctr_W4a_z-2", "refctr_W5a_z-2" ], + [ "refctr_W1b_z-2", "refctr_W2b_z-2", "refctr_W3b_z-2", "refctr_W4b_z-2", "refctr_W5b_z-2" ], + [ "refctr_W1c_z-2", "refctr_W2c_z-2", "refctr_W3c_z-2", "refctr_W4c_z-2", "refctr_W5c_z-2" ], + [ "refctr_W1d_z-2", "refctr_W2d_z-2", "refctr_W3d_z-2", "refctr_W4d_z-2", "refctr_W5d_z-2" ], + [ "refctr_W1e_z-2", "refctr_W2e_z-2", "refctr_W3e_z-2", "refctr_W4e_z-2", "refctr_W5e_z-2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_W1a_z-3", "refctr_W2a_z-3", "refctr_W3a_z-3", "refctr_W4a_z-3", "refctr_W5a_z-3" ], + [ "refctr_W1b_z-3", "refctr_W2b_z-3", "refctr_W3b_z-3", "refctr_W4b_z-3", "refctr_W5b_z-3" ], + [ "refctr_W1c_z-3", "refctr_W2c_z-3", "refctr_W3c_z-3", "refctr_W4c_z-3", "refctr_W5c_z-3" ], + [ "refctr_W1d_z-3", "refctr_W2d_z-3", "refctr_W3d_z-3", "refctr_W4d_z-3", "refctr_W5d_z-3" ], + [ "refctr_W1e_z-3", "refctr_W2e_z-3", "refctr_W3e_z-3", "refctr_W4e_z-3", "refctr_W5e_z-3" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "refctr_W1a_z-4", "refctr_W2a_z-4", "refctr_W3a_z-4", "refctr_W4a_z-4", "refctr_W5a_z-4" ], + [ "refctr_W1b_z-4", "refctr_W2b_z-4", "refctr_W3b_z-4", "refctr_W4b_z-4", "refctr_W5b_z-4" ], + [ "refctr_W1c_z-4", "refctr_W2c_z-4", "refctr_W3c_z-4", "refctr_W4c_z-4", "refctr_W5c_z-4" ], + [ "refctr_W1d_z-4", "refctr_W2d_z-4", "refctr_W3d_z-4", "refctr_W4d_z-4", "refctr_W5d_z-4" ], + [ "refctr_W1e_z-4", "refctr_W2e_z-4", "refctr_W3e_z-4", "refctr_W4e_z-4", "refctr_W5e_z-4" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + } +] diff --git a/data/json/mapgen/refugee_center.json b/data/json/mapgen/refugee_center/refugee_center.json similarity index 100% rename from data/json/mapgen/refugee_center.json rename to data/json/mapgen/refugee_center/refugee_center.json diff --git a/data/json/mapgen/refugee_center/z-1_refugee_center.json b/data/json/mapgen/refugee_center/z-1_refugee_center.json new file mode 100644 index 0000000000000..4f579205def81 --- /dev/null +++ b/data/json/mapgen/refugee_center/z-1_refugee_center.json @@ -0,0 +1,15 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "evac_center_1_z-1", "evac_center_2_z-1", "evac_center_3_z-1", "evac_center_4_z-1", "evac_center_5_z-1" ], + [ "evac_center_6_z-1", "evac_center_7_z-1", "evac_center_8_z-1", "evac_center_9_z-1", "evac_center_10_z-1" ], + [ "evac_center_11_z-1", "evac_center_12_z-1", "evac_center_13_z-1", "evac_center_14_z-1", "evac_center_15_z-1" ], + [ "evac_center_16_z-1", "evac_center_17_z-1", "evac_center_18_z-1", "evac_center_19_z-1", "evac_center_20_z-1" ], + [ "evac_center_21_z-1", "evac_center_22_z-1", "evac_center_23_z-1", "evac_center_24_z-1", "evac_center_25_z-1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + } +] diff --git a/data/json/mapgen/refugee_center/z-2_refugee_center.json b/data/json/mapgen/refugee_center/z-2_refugee_center.json new file mode 100644 index 0000000000000..cf9084bc160ad --- /dev/null +++ b/data/json/mapgen/refugee_center/z-2_refugee_center.json @@ -0,0 +1,15 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "evac_center_1_z-2", "evac_center_2_z-2", "evac_center_3_z-2", "evac_center_4_z-2", "evac_center_5_z-2" ], + [ "evac_center_6_z-2", "evac_center_7_z-2", "evac_center_8_z-2", "evac_center_9_z-2", "evac_center_10_z-2" ], + [ "evac_center_11_z-2", "evac_center_12_z-2", "evac_center_13_z-2", "evac_center_14_z-2", "evac_center_15_z-2" ], + [ "evac_center_16_z-2", "evac_center_17_z-2", "evac_center_18_z-2", "evac_center_19_z-2", "evac_center_20_z-2" ], + [ "evac_center_21_z-2", "evac_center_22_z-2", "evac_center_23_z-2", "evac_center_24_z-2", "evac_center_25_z-2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + } +] diff --git a/data/json/mapgen/refugee_center/z-3_refugee_center.json b/data/json/mapgen/refugee_center/z-3_refugee_center.json new file mode 100644 index 0000000000000..1eb182e37eda5 --- /dev/null +++ b/data/json/mapgen/refugee_center/z-3_refugee_center.json @@ -0,0 +1,15 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "evac_center_1_z-3", "evac_center_2_z-3", "evac_center_3_z-3", "evac_center_4_z-3", "evac_center_5_z-3" ], + [ "evac_center_6_z-3", "evac_center_7_z-3", "evac_center_8_z-3", "evac_center_9_z-3", "evac_center_10_z-3" ], + [ "evac_center_11_z-3", "evac_center_12_z-3", "evac_center_13_z-3", "evac_center_14_z-3", "evac_center_15_z-3" ], + [ "evac_center_16_z-3", "evac_center_17_z-3", "evac_center_18_z-3", "evac_center_19_z-3", "evac_center_20_z-3" ], + [ "evac_center_21_z-3", "evac_center_22_z-3", "evac_center_23_z-3", "evac_center_24_z-3", "evac_center_25_z-3" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + } +] diff --git a/data/json/mapgen/refugee_center/z-4_refugee_center.json b/data/json/mapgen/refugee_center/z-4_refugee_center.json new file mode 100644 index 0000000000000..e8b0f95cdf451 --- /dev/null +++ b/data/json/mapgen/refugee_center/z-4_refugee_center.json @@ -0,0 +1,15 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "evac_center_1_z-4", "evac_center_2_z-4", "evac_center_3_z-4", "evac_center_4_z-4", "evac_center_5_z-4" ], + [ "evac_center_6_z-4", "evac_center_7_z-4", "evac_center_8_z-4", "evac_center_9_z-4", "evac_center_10_z-4" ], + [ "evac_center_11_z-4", "evac_center_12_z-4", "evac_center_13_z-4", "evac_center_14_z-4", "evac_center_15_z-4" ], + [ "evac_center_16_z-4", "evac_center_17_z-4", "evac_center_18_z-4", "evac_center_19_z-4", "evac_center_20_z-4" ], + [ "evac_center_21_z-4", "evac_center_22_z-4", "evac_center_23_z-4", "evac_center_24_z-4", "evac_center_25_z-4" ] + ], + "weight": 100, + "object": { "fill_ter": "t_rock" } + } +] diff --git a/data/json/mapgen/refugee_center/z1_refugee_center.json b/data/json/mapgen/refugee_center/z1_refugee_center.json new file mode 100644 index 0000000000000..04fba503372fa --- /dev/null +++ b/data/json/mapgen/refugee_center/z1_refugee_center.json @@ -0,0 +1,15 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "evac_center_1_z1", "evac_center_2_z1", "evac_center_3_z1", "evac_center_4_z1", "evac_center_5_z1" ], + [ "evac_center_6_z1", "evac_center_7_z1", "evac_center_8_z1", "evac_center_9_z1", "evac_center_10_z1" ], + [ "evac_center_11_z1", "evac_center_12_z1", "evac_center_13_z1", "evac_center_14_z1", "evac_center_15_z1" ], + [ "evac_center_16_z1", "evac_center_17_z1", "evac_center_18_z1", "evac_center_19_z1", "evac_center_20_z1" ], + [ "evac_center_21_z1", "evac_center_22_z1", "evac_center_23_z1", "evac_center_24_z1", "evac_center_25_z1" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + } +] diff --git a/data/json/mapgen/refugee_center/z2_refugee_center.json b/data/json/mapgen/refugee_center/z2_refugee_center.json new file mode 100644 index 0000000000000..97ccf0393566b --- /dev/null +++ b/data/json/mapgen/refugee_center/z2_refugee_center.json @@ -0,0 +1,15 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "evac_center_1_z2", "evac_center_2_z2", "evac_center_3_z2", "evac_center_4_z2", "evac_center_5_z2" ], + [ "evac_center_6_z2", "evac_center_7_z2", "evac_center_8_z2", "evac_center_9_z2", "evac_center_10_z2" ], + [ "evac_center_11_z2", "evac_center_12_z2", "evac_center_13_z2", "evac_center_14_z2", "evac_center_15_z2" ], + [ "evac_center_16_z2", "evac_center_17_z2", "evac_center_18_z2", "evac_center_19_z2", "evac_center_20_z2" ], + [ "evac_center_21_z2", "evac_center_22_z2", "evac_center_23_z2", "evac_center_24_z2", "evac_center_25_z2" ] + ], + "weight": 100, + "object": { "fill_ter": "t_open_air" } + } +] diff --git a/data/json/mapgen/restaurant.json b/data/json/mapgen/restaurant.json index 57994d13314ef..5ebbcdd2eb62e 100644 --- a/data/json/mapgen/restaurant.json +++ b/data/json/mapgen/restaurant.json @@ -37,7 +37,7 @@ "&": "t_linoleum_gray", "+": "t_door_c", ",": "t_pavement_y", - "-": "t_wall", + "-": "t_wall_r", "C": "t_curtains", "D": "t_door_locked", "F": "t_linoleum_gray", @@ -54,7 +54,7 @@ "{": "t_linoleum_gray", "4": "t_gutter_downspout", "<": "t_ladder_up", - "|": "t_wall" + "|": "t_wall_r" }, "furniture": { "#": "f_counter", @@ -201,7 +201,7 @@ "'": "t_window", "+": "t_door_c", ",": "t_pavement_y", - "-": "t_wall", + "-": "t_wall_y", ".": "t_carpet_green", "@": "t_console_broken", "C": "t_curtains", @@ -225,7 +225,7 @@ "4": "t_gutter_downspout", "6": "t_tree_willow", " ": "t_grass_long", - "|": "t_wall" + "|": "t_wall_y" }, "furniture": { "#": "f_counter", @@ -369,7 +369,7 @@ "#": "t_linoleum_gray", "+": "t_door_c", ",": "t_pavement_y", - "-": "t_wall", + "-": "t_wall_w", ".": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt" ], "=": "t_sidewalk", "G": "t_linoleum_white", @@ -389,7 +389,7 @@ "<": "t_stairs_up", "L": "t_linoleum_white", "r": "t_linoleum_white", - "|": "t_wall" + "|": "t_wall_w" }, "furniture": { "#": "f_counter", @@ -498,5 +498,284 @@ } ] } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "s_restaurant_foodplace" ], + "weight": 1000, + "object": { + "fill_ter": "t_floor", + "rows": [ + "____,____,____,____,____", + "____,____,____,____,____", + "____,____,____,____,____", + "____,____,____,____,____", + "|-GGGGGG---++---GGGGGG-|", + "|......................|", + "C..BB...BB....BB...BB..C", + "W..TT...TT....TT...TT..W", + "W..TT...TT....TT...TT..W", + "C..BB...BB....BB...BB..C", + "|^....................^|", + "C..BB...BB....BB...BB..C", + "W..TT...TT....TT...TT..W", + "W..TT...TT....TT...TT..W", + "C..BB...BB....BB...BB..C", + "|---...................|", + "|Sg|...................|", + "|Pg+..|-------------|..|", + "|--|..|FF#SS##OO##{{|..|", + "|Pg+..|wgwgwgwgwgwgw|..|", + "|Sg|..|&&###RR###gwg+..|", + "|-----------------C-|6M|", + "______4dd___________|.<|", + "____________________|--|" + ], + "terrain": { + "#": "t_linoleum_white", + "&": "t_linoleum_gray", + "+": "t_door_c", + ",": "t_pavement_y", + "-": "t_wall_p", + "C": "t_curtains", + "D": "t_door_locked", + "F": "t_linoleum_gray", + "G": "t_wall_glass", + "M": "t_door_metal_locked", + "O": "t_linoleum_white", + "P": "t_linoleum_white", + "R": "t_linoleum_white", + "S": "t_linoleum_white", + "W": "t_window", + "_": "t_pavement", + "d": "t_pavement", + "g": "t_linoleum_gray", + "w": "t_linoleum_white", + "{": "t_linoleum_gray", + "4": "t_gutter_downspout", + "6": "t_card_fp", + "<": "t_stairs_up", + "|": "t_wall_p" + }, + "furniture": { + "#": "f_counter", + "&": "f_trashcan", + "B": "f_bench", + "F": "f_fridge", + "O": "f_oven", + "R": "f_woodstove", + "S": "f_sink", + "T": "f_table", + "^": "f_indoor_plant", + "d": "f_dumpster", + "{": "f_rack" + }, + "toilets": { "P": { } }, + "place_items": [ + { "item": "restaur_table", "x": [ 3, 4 ], "y": [ 7, 8 ], "chance": 25, "repeat": [ 1, 2 ] }, + { "item": "restaur_table", "x": [ 8, 9 ], "y": [ 7, 8 ], "chance": 25, "repeat": [ 1, 2 ] }, + { "item": "restaur_table", "x": [ 14, 15 ], "y": [ 7, 8 ], "chance": 25, "repeat": [ 1, 2 ] }, + { "item": "restaur_table", "x": [ 19, 20 ], "y": [ 7, 8 ], "chance": 25, "repeat": [ 1, 2 ] }, + { "item": "restaur_table", "x": [ 3, 4 ], "y": [ 12, 13 ], "chance": 25, "repeat": [ 1, 2 ] }, + { "item": "restaur_table", "x": [ 8, 9 ], "y": [ 12, 13 ], "chance": 25, "repeat": [ 1, 2 ] }, + { "item": "restaur_table", "x": [ 14, 15 ], "y": [ 12, 13 ], "chance": 25, "repeat": [ 1, 2 ] }, + { "item": "restaur_table", "x": [ 19, 20 ], "y": [ 12, 13 ], "chance": 25, "repeat": [ 1, 2 ] }, + { "item": "restaur_bath", "x": 2, "y": [ 17, 18 ], "chance": 25 }, + { "item": "restaur_bath", "x": 2, "y": [ 20, 21 ], "chance": 25 }, + { "item": "restaur_fridge", "x": [ 7, 8 ], "y": 18, "chance": 70, "repeat": [ 2, 3 ] }, + { "item": "restaur_sink", "x": [ 10, 11 ], "y": 18, "chance": 75, "repeat": [ 2, 3 ] }, + { "item": "restaur_kitchen", "x": 9, "y": 18, "chance": 25, "repeat": [ 1, 2 ] }, + { "item": "restaur_kitchen", "x": [ 12, 13 ], "y": 18, "chance": 25, "repeat": [ 1, 2 ] }, + { "item": "restaur_kitchen", "x": [ 16, 17 ], "y": 18, "chance": 25, "repeat": [ 1, 2 ] }, + { "item": "restaur_rack", "x": [ 18, 19 ], "y": 18, "chance": 75, "repeat": [ 1, 2 ] }, + { "item": "restaur_trash", "x": [ 7, 8 ], "y": 20, "chance": 75, "repeat": [ 1, 3 ] }, + { "item": "restaur_kitchen", "x": [ 9, 11 ], "y": 20, "chance": 25, "repeat": [ 1, 2 ] }, + { "item": "restaur_kitchen", "x": [ 14, 16 ], "y": 20, "chance": 25, "repeat": [ 1, 2 ] }, + { "item": "restaur_trash", "x": [ 7, 8 ], "y": 22, "chance": 50, "repeat": [ 1, 2 ] }, + { "item": "trash", "x": [ 7, 8 ], "y": 22, "chance": 50, "repeat": [ 1, 2 ] }, + { "item": "trash", "x": [ 0, 17 ], "y": [ 22, 23 ], "chance": 20, "repeat": [ 1, 2 ] } + ], + "place_nested": [ { "chunks": [ [ "chef_s_restaurant", 5 ], [ "null", 95 ] ], "x": 7, "y": 18 } ], + "place_monsters": [ + { "monster": "GROUP_GROCERY", "x": [ 7, 19 ], "y": 19, "chance": 5 }, + { "monster": "GROUP_ROACH", "x": [ 7, 19 ], "y": 19, "chance": 20 } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "s_restaurant_foodplace_roof" ], + "weight": 300, + "object": { + "fill_ter": "t_floor", + "rows": [ + " ", + " ", + " ", + " ", + "|......................3", + "|......................3", + "|......................3", + "|......................3", + "|......................3", + "|......................3", + "|............WWWWWWWWWWW", + "|............Wh,,sWh,,sW", + "|............WT,,,WT,,,W", + "|............WWWDWWWWDWW", + "|............Wl,,bWl,,bW", + "|...........[Wl,,bWl,,bW", + "WwWWWWwWWWWWWWWWDWWWWDWW", + "Wpccccvfuosrrq;,,,M@,,,W", + "W,,,,,,,,,,,,,,,,,,,,,aW", + "w,,,,,,,,#tt#,,,,,,,,,,w", + "Wpttttp,,#tt#,,VBBp,H,,W", + "WWWwWWWWWWWwWWWWWWWWW,,W", + " Wl>W", + " WWWW" + ], + "terrain": { + ".": "t_flat_roof", + " ": "t_open_air", + "W": "t_wall_p", + "D": "t_door_c", + "[": "t_ladder_up", + "w": "t_window_domestic", + "|": "t_gutter_west", + ",": "t_floor", + "-": "t_gutter_south", + "3": "t_gutter_east", + ">": "t_stairs_down", + "5": "t_gutter_drop" + }, + "toilets": { "T": { } }, + "furniture": { + "&": "f_roof_turbine_vent", + "l": "f_locker", + "b": "f_bench", + "h": "f_shower", + "V": "f_vending_c", + "s": "f_sink", + "v": "f_trashcan", + ";": "f_pinball_machine", + "c": "f_sofa", + "t": "f_table", + "M": "f_bigmirror", + "@": "f_mannequin", + "a": "f_armchair", + "r": "f_counter", + "u": "f_cupboard", + "f": "f_fridge", + "o": "f_oven", + "q": "f_dishwasher", + "#": "f_stool", + "B": "f_bookcase", + "p": "f_indoor_plant", + "H": "f_rack_coat" + }, + "place_items": [ + { "item": "kitchen", "x": [ 11, 12 ], "y": [ 17 ], "chance": 100, "repeat": [ 5, 10 ] }, + { "item": "cleaning", "x": [ 10 ], "y": [ 17 ], "chance": 100, "repeat": [ 1, 3 ] }, + { "item": "knifeblock", "x": [ 11, 12 ], "y": [ 17 ], "chance": 100, "repeat": [ 1, 2 ] }, + { "item": "trash", "x": [ 6 ], "y": [ 17 ], "chance": 100, "repeat": [ 2, 4 ] }, + { "item": "fridge", "x": [ 7 ], "y": [ 17 ], "chance": 100, "repeat": [ 5, 15 ] }, + { "item": "oven", "x": [ 9 ], "y": [ 17 ], "chance": 100, "repeat": [ 1, 2 ] }, + { "item": "bed", "x": [ 2, 5 ], "y": [ 17 ], "chance": 100, "repeat": [ 1, 2 ] }, + { "item": "dining", "x": [ 10, 11 ], "y": [ 19, 20 ], "chance": 40, "repeat": [ 1, 2 ] }, + { "item": "vending_drink_items", "x": [ 15 ], "y": [ 20 ], "chance": 100, "repeat": [ 5, 20 ] }, + { "item": "snacks_fancy", "x": [ 2 ], "y": [ 20 ], "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "snacks_fancy", "x": [ 2 ], "y": [ 17 ], "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "snacks_fancy", "x": [ 22 ], "y": [ 18 ], "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "fast_food", "x": [ 10, 11 ], "y": [ 19, 20 ], "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "magazines", "x": [ 2 ], "y": [ 17 ], "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "magazines", "x": [ 16, 17 ], "y": [ 20 ], "chance": 100, "repeat": [ 3, 5 ] }, + { "item": "coat_rack", "x": [ 20 ], "y": [ 20 ], "chance": 100, "repeat": [ 1, 4 ] }, + { "item": "stash_drugs", "x": [ 1 ], "y": [ 20 ], "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "livingroom", "x": [ 2, 5 ], "y": [ 20 ], "chance": 50, "repeat": [ 1, 2 ] }, + { "item": "allclothes", "x": [ 13 ], "y": [ 14, 15 ], "chance": 100, "repeat": [ 3, 4 ] }, + { "item": "allclothes", "x": [ 19 ], "y": [ 14, 15 ], "chance": 100, "repeat": [ 3, 4 ] }, + { "item": "softdrugs", "x": [ 17 ], "y": [ 11 ], "chance": 70, "repeat": [ 2, 3 ] }, + { "item": "softdrugs", "x": [ 22 ], "y": [ 11 ], "chance": 100, "repeat": [ 2, 3 ] } + ], + "place_loot": [ + { "item": "television", "x": [ 3, 4 ], "y": 20, "repeat": 1, "chance": 100 }, + { "item": "foodperson_mask", "x": 19, "y": 17, "repeat": 1, "chance": 100 }, + { "item": "cape_fp", "x": 19, "y": 17, "repeat": 1, "chance": 100 }, + { "item": "chestguard_hard", "x": 19, "y": 17, "repeat": 1, "chance": 100 }, + { "item": "legguard_hard", "x": 19, "y": 17, "repeat": 1, "chance": 100 }, + { "item": "armguard_hard", "x": 19, "y": 17, "repeat": 1, "chance": 100 }, + { "item": "gloves_rubber", "x": 19, "y": 17, "repeat": 1, "chance": 100 }, + { "item": "boots_rubber", "x": 19, "y": 17, "repeat": 1, "chance": 100 }, + { "item": "medium_disposable_cell", "x": 21, "y": 22, "repeat": 5, "chance": 100 } + ], + "place_nested": [ { "chunks": [ [ "foodperson_break_room", 5 ], [ "null", 95 ] ], "x": 15, "y": 10 } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "s_restaurant_foodplace_upper_roof" ], + "weight": 300, + "object": { + "fill_ter": "t_flat_roof", + "rows": [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " |---------3", + " |....:....3", + " |.........3", + " |.........3", + " |.........3", + " [..........3", + "|-----------...........3", + "|......................3", + "|......................3", + "|......................3", + "|...X..................3", + "|------5------------|..3", + " |..3", + " |--3" + ], + "terrain": { + ".": "t_flat_roof", + " ": "t_open_air", + "[": "t_ladder_down", + "|": "t_gutter_west", + ",": "t_floor", + "-": "t_gutter_south", + "3": "t_gutter_east", + "5": "t_gutter_drop" + }, + "furniture": { "&": "f_roof_turbine_vent", ":": "f_cellphone_booster", "X": "f_small_satelitte_dish" }, + "place_items": [ { "item": "roof_trash", "x": [ 3, 16 ], "y": [ 17, 19 ], "chance": 50, "repeat": [ 1, 3 ] } ], + "place_nested": [ + { + "chunks": [ + [ "roof_2x2_utilities_b", 20 ], + [ "roof_2x2_utilities_c", 20 ], + [ "roof_2x2_utilities_d", 20 ], + [ "roof_2x2_utilities", 20 ], + [ "null", 40 ] + ], + "x": [ 10, 11 ], + "y": [ 17, 18 ] + }, + { + "chunks": [ [ "roof_4x4_utility_1", 50 ], [ "roof_4x4_holdout", 5 ], [ "null", 80 ], [ "roof_5x5_coop", 5 ] ], + "x": 17, + "y": 16 + } + ] + } } ] diff --git a/data/json/mapgen/robofachq_static.json b/data/json/mapgen/robofachq_static.json index 1687a78a56c26..5f50166819f4a 100644 --- a/data/json/mapgen/robofachq_static.json +++ b/data/json/mapgen/robofachq_static.json @@ -59,14 +59,14 @@ ",,|,yyyyyyyyy___________ss,|? t ||((((22| |(((([| |,,,,,,,,,,,,,,,,,,,,,,|,,", ",,|,____________________ss,|? 2 YY 5 |,,,,,,,,,,,,,,,,,,,,,,|,,", ",,|,____________________ss,|^a a 2 5 |,,,,,,,,,,,,,,,,,,,,,,|,,", - ",,|,____________________ss,||||||| ||||55GI||||55|||| |,,,,,,,,,,,,,,,,,,,,,,|,,", - ",,|,____________________ss,( [ ^| | | |; | |,,,,,,,,,,,,,,,,,,,,,,|,,", - ",,|,yyyyyyyyy___________ss,( h ( ^| | | 2 i| |,,,,,,,,,,,,,,,,,,,,,,|,,", - ",,|,____________________ss,( hth |[((| ||||55|||| |,,,,,,,,,,,,,,,,,,,,,,|,,", - ",,|,____________________ss,( hth | h|eeeeee(d d( |,,,,,,,,,,,,,,,,,,,,,,|,,", - ",,|,____________________ss,( hth | dd|eeeeee(6h 66 h6( |,,,,,,,,,,,,,,,,,,,,,,|,,", - ",,|,____________________ss,( h |^ h|Eeeeee(d 66 d( |,,,,,,,,,,,,,,,,,,,,,,|,,", - ",,|,yyyyyyyyy___________ss,| | |eeeeee| | |,,,,,,,,,,,,,,,,,,,,,,|,,", + ",,|,____________________ss,|||||||||||||55GI||||55|||| |,,,,,,,,,,,,,,,,,,,,,,|,,", + ",,|,____________________ss,|hhhhhhhhh| | | |; | |,,,,,,,,,,,,,,,,,,,,,,|,,", + ",,|,yyyyyyyyy___________ss,| 2 | | 2 i| |,,,,,,,,,,,,,,,,,,,,,,|,,", + ",,|,____________________ss,| lllllll | ||||55|||| |,,,,,,,,,,,,,,,,,,,,,,|,,", + ",,|,____________________ss,|2|||||||2|eeeeee(d d( |,,,,,,,,,,,,,,,,,,,,,,|,,", + ",,|,____________________ss,| 2~|~2 |eeeeee(6h 66 h6( |,,,,,,,,,,,,,,,,,,,,,,|,,", + ",,|,____________________ss,|i ||||| i|Eeeeee(d 66 d( |,,,,,,,,,,,,,,,,,,,,,,|,,", + ",,|,yyyyyyyyy___________ss,|i 2~|~2 i|eeeeee| | |,,,,,,,,,,,,,,,,,,,,,,|,,", ",,|,,,,,,,,,,___________ss,||||||||||||||||||||||||||||||||||||||||||||,,,,,,,,,,,,,,,,,,,,,,|,,", ",,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,,", ",,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,,", @@ -103,7 +103,7 @@ "I": "t_intercom" }, "items": { - "l": [ { "item": "guns_milspec", "chance": 10 }, { "item": "ammo_milspec", "chance": 70 } ], + "l": [ { "item": "NC_ROBOFAC_FIELD_RESEARCHER_worn", "chance": 50 }, { "item": "NC_ROBOFAC_SCIENTIST_worn", "chance": 50 } ], "i": { "item": "cleaning", "chance": 50 }, "B": [ { "item": "textbooks", "chance": 50 }, { "item": "manuals", "chance": 50 } ] }, @@ -128,38 +128,38 @@ "########################| YY c|###########################|; |ii| |rY Y|#", "########################|r cc c|##|||||||||||##############| 2 2 |rY Y|#", "########################|r ch c||||rrrrrrrrr|||||||||||||||||||||| |||2| i|FY |||||||||| |#", - "#############||||||||||||r YY (Y ???| htth hh htth |Yi|F iKKKKooK| |#", + "#############||||||||||||r YY (Y ???| htth hh htth G |Yi|F iKKKKooK| |#", "#############|6:::::::::|c ( ccccc6 ^|h tth tt htth cYK|FY YY c| |#", "#############| |c cc ( ???| htth hh cYK| iKKooK |#", "#############| 66::::6 |c cc ( ccccc6 ||||Y YccY YcY Y YY |#", - "#########||||| 4 YY 2 ???|Y YccY YcY iKKooK FFF|#", - "#########|666||||| ||||||(((((((((| ^| htth hh hh ||||2(((||||||||||||#", + "#########||||| G 4 YY 2 ???|Y YccY YcY iKKooK FFF|#", + "#########|666||||| ||||||(((((((((|G ^| htth hh hh ||||2(((||||||||||||#", "#########| 5 Y Y ???| htth tt tt W|#| Y |############", - "#########| 5 Y Y ||55|||| hh hh t|#|hdh |############", + "#########| 5 Y Y ||22|||| hh hh t|#|hdh |############", "########|| |||22||||(((((2(|||| | |Y Y||==========]]==========|||||||||############", - "########|6 |c r|^ ^| 4 |Y Y|? 5 . ,,,,,,,,,|^BBB^ |#|||||######", - "########|||44|||c r| hhh |&i| ||||||||? 5 ,,,,,,,,(YY |||:::|######", + "########|6 |c r|^ ^| 4 |Y Y|? . G,,,,,,,,,|^BBB^ |#|||||######", + "########|||44|||c r| hhh |&i| ||||||||? ,,,,,,,,(YY |||:::|######", "########|6 6|c r| ttttt ||||55|eeeeee d (,,,,,,t6t ,,,,,,,,(H dd 5T Y|######", "########|6 6|c r|Y hhh Y| |eeeeee Y d (,,,,,,Y Y2 6h Y5 6|######", - "########|6 66 6|c r|^ ^|66666|Eeeeee Y dh(,,,,,,Yt Y2 hd Y5 :|######", + "########|6 66 6|c r|^ ^|66666|Eeeeee Y dh(,,,,,,Yt Y2 hd QY5 :|######", "########||||||||||||||||||||||||||||||eeeeee d (,,,,,,t6t ,,,,,,,,( dd 5T Y|######", - "#####################################|||||||| 5 ,,,,,,,,(YY |||:::|######", - "#########################################|> 5 5 ,,,,,,,,,|^ A ^|#|||||######", + "#####################################||||||||G ,,,,,,,,(YY |||:::|######", + "#########################################|> 5 G,,,,,,,,,|^ A ^|#|||||######", "##########|||||||||#|||||||||#|||||||||#|||||Y Y||==========]]==========||||5||||############", - "##########|~ ;|~ ;|#|~ ;|~ ;|#|~ ;|~ ;|#|~ ;||55||||B B| ^|##||||||######", + "##########|~ ;|~ ;|#|~ ;|~ ;|#|~ ;|~ ;|#|~ ;||22||||B B| ^|##||||||######", "##########|~Yi|~Yi|#|~Yi|~Yi|#|~Yi|~Yi|#|~Yi| d |B htth t B htth B|th ^||||i; ~|######", "#########|||2|||2|||||||||2|||||2|||2|||||2|| dh|BYhtthYt Y Y BYhtthYB|thY Y 2 Y ~|######", "#########|D @|# @|D @|D @|D @|D @|@ D| d |B t B htth B| B|2|||||||######", "#########|B @|# @|B @|B @|B @|B @|@ B| |B B| B| h6|#########", - "########||| Y|||Y ||| Y|||Y ||| Y|||Y ||| Y|| |||BBBB^YH YBBBBB||| h B| t|#########", - "########|^||2|^|2||^||2|^|2||^||2|^|2||^||2| |||||||||||||||||||||||ccY ||@Y B|#########", - "########|^ Y Y Y Y Y |#####################| c|@ B|#########", - "########|^ |#####################|KFoKK||||||#########", - "########|^ Y Y Y Y Y |#####################|||||||##############", - "########|^||2|^|2||^||2|^|2||^||2|^|2||^||2| |##########################################", - "########||| Y|||Y ||| Y|||Y ||| Y|||Y ||| Y|| |||##########################################", - "#########|B @|B @|B @|B @|B @|B @|B @||||||||############################################", - "#########|D @|D @|D @|D @|D @|D @|D @|###################################################", + "########||| Y|||Y ||| Y|||Y ||| Y|||Y ||| Y||G |||BBBB^YH YBBBBB||| h B| t|#########", + "########|^||2|^|2||^||2|^|2||^||2|^|2||^||2| ||||||||||]]|||||||||,|ccY ||@Y B|#########", + "########|^ Y Y Y Y Y ] ,,,,| c|@ B|#########", + "########|^G ] ,,,,|KFoKK||||||#########", + "########|^ Y Y Y Y Y |h tt YYtt ,,,,|||||||##############", + "########|^||2|^|2||^||2|^|2||^||2|^|2||^||2| |t ? ? ,,,,|####################", + "########||| Y|||Y ||| Y|||Y ||| Y|||Y ||| Y|| |||h ????^ G ^????t,,,,|####################", + "#########|B @|B @|B @|B @|B @|B @|B @||||||||#|||||||||||||||||||||,|####################", + "#########|D @|D @|D @|D @|D @|D @|D @|############################|||####################", "##########||2|||2|||||2|||2|||||2|||2|||||2||###################################################", "##########|~Yi|~Yi|#|~Yi|~Yi|#|~Yi|~Yi|#|~Yi|###################################################", "##########|~ ;|~ ;|#|~ ;|~ ;|#|~ ;|~ ;|#|~ ;|###################################################", @@ -173,7 +173,6 @@ "terrain": { ",": [ "t_shrub_rose", "t_shrub", "t_grass", "t_grass", "t_grass_tall" ], "-": "t_wall_metal", - "G": "t_card_science", "e": "t_elevator", "E": "t_elevator_control", "Y": "t_thconc_floor_olight", @@ -187,6 +186,156 @@ "@": { "item": "bed", "chance": 80 }, "K": { "item": "kitchen", "chance": 40 }, "o": { "item": "oven", "chance": 70 }, + "D": { "item": "NC_ROBOFAC_SCIENTIST_worn", "chance": 50 }, + "B": [ + { "item": "magazines", "chance": 75, "repeat": [ 1, 5 ] }, + { "item": "lab_bookshelves", "chance": 55, "repeat": [ 1, 3 ] } + ] + }, + "npcs": { "G": { "class": "hub_security" }, "Q": { "class": "hub_security_head" } } + } + }, + { + "type": "mapgen", + "om_terrain": [ + [ "robofachq_ai_a0", "robofachq_ai_a1", "robofachq_ai_a2", "robofachq_ai_a3" ], + [ "robofachq_ai_b0", "robofachq_ai_b1", "robofachq_ai_b2", "robofachq_ai_b3" ] + ], + "method": "json", + "object": { + "fill_ter": "t_concrete", + "rows": [ + "################################################################################################", + "################################################################################################", + "################################################################################################", + "################################################################################################", + "################################################################################################", + "################################################################################################", + "################################################################################################", + "######################################################|||||||||||||||||||||||||||||||||||||||||#", + "######################################################|:YY:YY:YY:YY:YY:YY:YY:| rrrrrrrrrrr|#", + "######################################################|: : : : : : : :| Y|#", + "######################################################|: : : : : : : :| rrr rrrr |#", + "######################################################|: : : : : : : :| Y|#", + "###################################################||||: : : : : : : :| rrrrrrrrrrr|#", + "############################################||||||||YY|: : : : : : : :||5(((||||||||||||#", + "############################################| 5 5 Y2>|##########", + "############################################| 5 5 Y Y Y Y Y Y |||||||2|||##########", + "############################################| Y||||((((((((((((((((((((|6 |############", + "############################################| 5 (````````````````````||Y |||||||######", + "#####################################|||||||| |5(````````````````````6|: ::::::|######", + "#####################################|eeeeee d | (((((((((((``````````6|||| :|######", + "#####################################|eeeeee Y d | h6``````````6|: Y 6 :|######", + "#####################################|Eeeeee Y 6h| h6``````````6|: Y 6 :|######", + "#####################################|eeeeee d | (((((((((((``````````6|||| :|######", + "#####################################|||||||| |5(````````````````````6|: ::::::|######", + "########################################|>< 5 5 (````````````````````||Y |||||||######", + "########################################| | ||||((((((((((((((((((((|6 |############", + "########################################||||| 5 5 Y Y Y Y Y Y |||||||2|||##########", + "############################################| 5 5 Y2>|##########", + "############################################||||||||YY|: : : : : : : :||5(((||||||||||||#", + "###################################################||||: : : : : : : :| rrrrrrrrrrr|#", + "######################################################|: : : : : : : :| Y|#", + "######################################################|: : : : : : : :| rrr rrrr |#", + "######################################################|: : : : : : : :| Y|#", + "######################################################|:YY:YY:YY:YY:YY:YY:YY:| rrrrrrrrrrr|#", + "######################################################|||||||||||||||||||||||||||||||||||||||||#", + "################################################################################################", + "################################################################################################", + "################################################################################################", + "################################################################################################", + "################################################################################################", + "################################################################################################", + "################################################################################################", + "################################################################################################", + "################################################################################################", + "################################################################################################", + "################################################################################################", + "################################################################################################", + "################################################################################################" + ], + "palettes": [ "robofachq" ], + "terrain": { + "-": "t_wall_metal", + "e": "t_elevator", + "E": "t_elevator_control", + "Y": "t_thconc_floor_olight", + "#": "t_rock", + "6": "t_console" + }, + "furniture": { ":": "f_server", "K": "f_counter" }, + "items": { "r": [ { "item": "electronics", "chance": 75, "repeat": [ 1, 5 ] } ] } + } + }, + { + "type": "mapgen", + "om_terrain": [ + [ "robofachq_aiutl_a0", "robofachq_aiutl_a1", "robofachq_aiutl_a2", "robofachq_aiutl_a3" ], + [ "robofachq_aiutl_b0", "robofachq_aiutl_b1", "robofachq_aiutl_b2", "robofachq_aiutl_b3" ] + ], + "method": "json", + "object": { + "fill_ter": "t_concrete", + "rows": [ + "################################################################################################", + "################################################################################################", + "################################################################################################", + "################################################################################################", + "##############################################||||##############################################", + "##############################################|66|##############################################", + "##############################################| |##############################################", + "###########################|||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||#", + "###########################|::::::::::::::::|B d ^|: : : : : : : :| :::::::::::|#", + "###########################| :|B Y h dh |: : : : : : : :| |#", + "###########################| :|B Y dd |YYYYYYYYYYYYYYYYYYYYYY| ::: :::::|#", + "###########################| :|B |: : : : : : : :| |#", + "###########################|:::::::: ||||||55||^||||: : : : : : : :| :::::::::::|#", + "###########################| 5 Y ||| |||||||||||||||||||||||||5(((||||||||||||#", + "###########################|::::::::::::| Y 5 5 2<|##########", + "###########################|||||||||||||||||| 5 5 Y Y Y Y Y Y |||||||2|||##########", + "############################################||55|||||||((((((((((((((((((((|6 |############", + "############################################| 5wwwwwwwwwwwwwwwwwwwwww||Y |||||||######", + "#####################################|||||||| |wwwwwwwwwwwwwwwwwwwwww:|: ::::::|######", + "#####################################|eeeeee (wwwwwwwwwwwwwwwwwwwwww:|||| :|######", + "#####################################|eeeeee Y (wwwwwwwwwwwwwwwwwwwwww:|: 6 :|######", + "#####################################|Eeeeee Y (wwwwwwwwwwwwwwwwwwwwww:|: 6 :|######", + "#####################################|eeeeee (wwwwwwwwwwwwwwwwwwwwww:|||| :|######", + "#####################################|||||||| |wwwwwwwwwwwwwwwwwwwwww:|: ::::::|######", + "########################################|>< 5 5wwwwwwwwwwwwwwwwwwwwww||Y |||||||######", + "########################################| ||55|||||||((((((((((((((((((((|6 |############", + "#############################|||||||||||||||| 5 5 Y Y Y Y Y Y ||2||||2|||##########", + "#############################|^ Y 5 5 | 2<|##########", + "#############################|^ Y ||| ||||||||||||||22|||||||||5(((||||||||||||#", + "#############################||2|2((((|(((2|||222||||||:::| : : : : : :| :::::::::::|#", + "#############################|i | |h B| |:::: | : : : : : :| |#", + "#############################|; | dd|dd B| Y 5 Y 2YYYYYYYYYYYYYYYYY:| :::: :::::|#", + "#############################|||| |h B| Y | | : : : : : :| |#", + "################################| h| ^|2||| |||2||:::| : : : : : :| :::::::::::|#", + "################################|2|||||||| |555||Y :|||||||||||||| |||||||||22||||||||||||||#", + "################################| ( | |:Y :|############| |#######| |: : : : : :|#", + "################################| cccc 2 2 ||2|||||||||||||||| ||||||||| |: : : : : :|#", + "################################| ||||| | |::::::::::::| 2 2 |#", + "################################| cccc | 2 2 |#", + "################################| 2 |||||||||||||||||#", + "################################| ccccccccc ||||| |||||||||||||||| |||||||||#################", + "################################| |###| :::::::::::::: :|######################", + "################################||||||||||||||###| 6 :|######################", + "#################################################| 6 :|######################", + "#################################################| :::::::::::::: :|######################", + "#################################################|||||||||||||||||||||||||######################", + "################################################################################################", + "################################################################################################" + ], + "palettes": [ "robofachq" ], + "terrain": { + "-": "t_wall_metal", + "e": "t_elevator", + "E": "t_elevator_control", + "Y": "t_thconc_floor_olight", + "#": "t_rock", + "6": "t_console" + }, + "items": { "B": [ { "item": "magazines", "chance": 75, "repeat": [ 1, 5 ] }, { "item": "lab_bookshelves", "chance": 55, "repeat": [ 1, 3 ] } diff --git a/data/json/mapgen/s_gun.json b/data/json/mapgen/s_gun.json index 3f5a002363c86..6cee2130a774e 100644 --- a/data/json/mapgen/s_gun.json +++ b/data/json/mapgen/s_gun.json @@ -3,8 +3,9 @@ "type": "mapgen", "method": "json", "om_terrain": [ "s_gun" ], - "weight": 1000, + "weight": 300, "object": { + "fill_ter": "t_floor", "rows": [ " ____________________ ", " *___*___*______*___* ", @@ -13,45 +14,57 @@ " *___*___*______*___* ", " *___*___*______*___* ", " ---:::--------:::--- ", - " |{.S..#...........{| ", " |{....#...........{| ", + " |{..S.?...........{| ", " |{....#...{{..{...{| ", " |{....#...{{..{...{| ", - " |{....#...{{..{...{| ", - " |{....#...........{| ", - " |{............{{{{{| ", - " |-:::::::::::------| ", - " |l.................| ", - " |--#--#--#--#--#--+| ", - " |..................| ", - " |..................| ", - " |..................| ", - " |..................| ", - " |..................| ", + " |---..#...{{..{...{| ", + " |&N|..............{| ", + " |..D..........{{{{{| ", + " |---:::::::::------| ", + " 4|l~~~~~~~~~~~~~~D~<| ", + " |--H--H--H--H--H-+-| ", + " |~~~~~~~~~~~~~~~~~~| ", + " |~~~~~~~~~~~~~~~~~~| ", + " |~~~~~~~~~~~~~~~~~~| ", + " |~~~~~~~~~~~~~~~~~~| ", + " |~~~~~~~~~~~~~~~~~~| ", " |ssssssssssssssssss| ", " ==================== " ], "place_terrain": [ { "ter": "t_door_metal_pickable", "x": [ 11, 14 ], "y": 6 }, - { "ter": "t_door_metal_pickable", "x": [ 5, 14 ], "y": 14 } + { "ter": "t_door_metal_pickable", "x": [ 7, 14 ], "y": 14 } ], "terrain": { " ": [ "t_grass", "t_grass", "t_grass", "t_dirt" ], - "#": "t_floor", "*": "t_pavement_y", "+": "t_door_metal_pickable", - "-": "t_wall", + "-": "t_wall_w", ".": "t_floor", ":": "t_window_bars_alarm", "=": "t_strconc_wall", "_": "t_pavement", - "S": "t_floor", - "l": "t_floor", - "s": "t_floor", - "{": "t_floor", - "|": "t_wall" + "~": "t_concrete", + "H": "t_concrete", + "s": "t_concrete", + "l": "t_concrete", + "|": "t_wall_w", + "D": "t_door_c", + "?": "t_console_broken", + "<": "t_ladder_up", + "4": "t_gutter_downspout" + }, + "toilets": { "&": { } }, + "furniture": { + "#": "f_counter", + "H": "f_counter", + "S": "f_stool", + "l": "f_locker", + "s": "f_sandbag_wall", + "{": "f_rack", + "N": "f_sink" }, - "furniture": { "#": "f_counter", "S": "f_stool", "l": "f_locker", "s": "f_sandbag_wall", "{": "f_rack" }, "place_loot": [ { "group": "guns_pistol_common", "x": 12, "y": 9, "chance": 75, "magazine": 100 }, { "group": "guns_pistol_common", "x": 13, "y": 9, "chance": 75, "magazine": 100 }, @@ -69,10 +82,10 @@ { "group": "guns_rifle_common", "x": 20, "y": 12, "chance": 50, "magazine": 100 }, { "group": "guns_smg_common", "x": 17, "y": 13, "chance": 85, "magazine": 100 }, { "group": "guns_smg_rare", "x": 18, "y": 13, "chance": 15, "magazine": 100 }, - { "group": "ammo_common", "x": 3, "y": [ 11, 13 ], "chance": 100, "repeat": 2 }, - { "group": "ammo_pistol_common", "x": 3, "y": 11, "chance": 100, "repeat": [ 1, 3 ] }, - { "group": "ammo_shotgun_common", "x": 3, "y": 12, "chance": 75, "repeat": [ 1, 2 ] }, - { "group": "ammo_rifle_common", "x": 3, "y": 13, "chance": 75, "repeat": [ 1, 2 ] }, + { "group": "ammo_common", "x": 3, "y": [ 7, 10 ], "chance": 100, "repeat": 2 }, + { "group": "ammo_pistol_common", "x": 3, "y": 7, "chance": 100, "repeat": [ 1, 3 ] }, + { "group": "ammo_shotgun_common", "x": 3, "y": 8, "chance": 75, "repeat": [ 1, 2 ] }, + { "group": "ammo_rifle_common", "x": 3, "y": 9, "chance": 75, "repeat": [ 1, 2 ] }, { "group": "mags_common", "x": 3, "y": 10, "chance": 100 }, { "group": "mags_pistol_common", "x": 3, "y": 9, "chance": 100 }, { "group": "mags_rifle_common", "x": 3, "y": 8, "chance": 75 }, @@ -96,17 +109,82 @@ { "type": "mapgen", "method": "json", - "om_terrain": [ "s_gun" ], + "om_terrain": "s_gun_roof", + "object": { + "fill_ter": "t_flat_roof", + "rows": [ + " ", + " ", + " ", + " ", + " ", + " ", + " |2222222222222222223 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..X...............3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " 5.................>3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |------------------3 " + ], + "palettes": [ "roof_palette" ], + "terrain": { ">": "t_ladder_down" }, + "place_nested": [ + { + "chunks": [ + [ "null", 20 ], + [ "roof_2x2_utilities_b", 15 ], + [ "roof_2x2_utilities_c", 5 ], + [ "roof_2x2_utilities_d", 30 ], + [ "roof_2x2_utilities", 30 ], + [ "roof_2x2_golf", 10 ], + [ "roof_3x3_wine", 10 ] + ], + "x": [ 4, 15 ], + "y": [ 8, 9 ] + }, + { + "chunks": [ + [ "null", 20 ], + [ "roof_4x4_party", 5 ], + [ "roof_4x4_holdout", 15 ], + [ "roof_4x4_utility", 40 ], + [ "roof_4x4_utility_1", 10 ], + [ "roof_6x6_survivor", 20 ], + [ "roof_6x6_utility", 20 ] + ], + "x": [ 4, 13 ], + "y": [ 11, 16 ] + } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "s_gun_1" ], "//": "Home defense gun store", "weight": 300, "object": { + "fill_ter": "t_floor", "rows": [ "_ssssssssssssssssssssss_", "_s@@@@@@@_ssss_@@@@@@@s_", "_s||555||_ssss_||555||s_", "_s|#####5_ssss_5#####|s_", - "_s|.....5_ssss_5.....|s_", - "_s|.....5_ssss_5.....|s_", + "_s|..a..5_ssss_5..a..|s_", + "_s|.#?#.5_ssss_5.#?#.|s_", "_s|.....|55++55|.....|s_", "_s|..................|s_", "_s|..................|s_", @@ -117,17 +195,16 @@ "_A|....rrr....rrr....|s_", "_||..................|s_", "_s|..................|s_", - "_s||D|||&&&&&&&&||L|||s_", - "_s|....|..####..|..cE|s_", - "_s|....|........D...E|s_", - "_s|S..;|lll##lll|l...|s_", - "_s|||||||||||||||||L||s_", + "_s||D|*|&&&&&&&&||+|||s_", + "_s|;.|.|..####..|..cE|s_", + "_s|..|.|........*...E|s_", + "_s|S.|<|lll##lll|l...|4_", + "_s|||||||||||||||||+||s_", "_ssssssssssssssssssssss_", "________________________", "________________________" ], "terrain": { - "#": "t_floor", "&": "t_bars", "*": "t_door_locked_alarm", "+": "t_door_metal_pickable", @@ -137,20 +214,17 @@ "@": "t_shrub", "A": "t_atm", "D": "t_door_c", - "E": "t_floor", "L": "t_door_metal_locked", - "S": "t_floor", - "^": "t_floor", "_": "t_pavement", - "c": "t_floor", - "l": "t_floor", - "r": "t_floor", "s": "t_sidewalk", - "u": "t_floor", - "|": "t_wall" + "|": "t_wall_w", + "?": "t_console_broken", + "<": "t_ladder_up", + "4": "t_gutter_downspout" }, "furniture": { "#": "f_counter", + "a": "f_stool", "E": "f_desk", "S": "f_sink", "^": "f_indoor_plant", @@ -181,10 +255,73 @@ { "type": "mapgen", "method": "json", - "om_terrain": [ "s_gun" ], - "//": "Public holdout based on Home Defense Gunstore.", - "weight": 30, + "om_terrain": "s_gun_roof_1", "object": { + "fill_ter": "t_flat_roof", + "rows": [ + " ", + " ", + " |222223 |222223 ", + " |.....3 |.....3 ", + " |.....3 |.....3 ", + " |.....3 |.....3 ", + " |.....3222222|.....3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |..................3 ", + " |...>..............5 ", + " |------------------3 ", + " ", + " ", + " " + ], + "palettes": [ "roof_palette" ], + "terrain": { ">": "t_ladder_down" }, + "place_nested": [ + { + "chunks": [ + [ "null", 20 ], + [ "roof_2x2_utilities_b", 15 ], + [ "roof_2x2_utilities_c", 5 ], + [ "roof_2x2_utilities_d", 30 ], + [ "roof_2x2_utilities", 30 ] + ], + "x": [ 4, 15 ], + "y": [ 7, 8 ] + }, + { + "chunks": [ + [ "null", 20 ], + [ "roof_4x4_party", 5 ], + [ "roof_4x4_holdout", 15 ], + [ "roof_4x4_utility", 40 ], + [ "roof_4x4_utility_1", 10 ], + [ "roof_6x6_survivor", 20 ], + [ "roof_6x6_utility", 20 ] + ], + "x": [ 4, 13 ], + "y": 12 + } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "s_gun_2" ], + "//": "Public holdout based on Home Defense Gunstore. Uses same roof as s_gunstore_1.", + "weight": 100, + "object": { + "fill_ter": "t_floor", "rows": [ "_ssssssssssssssssssssss_", "_s@@xx@@@_ssss_@@@@@@@s_", @@ -202,42 +339,33 @@ "_A|......rr..rr....7.|s_", "_||.....rr...........|s_", "_s|....rr..B.B.rrr.r.|s_", - "_s||D|||&&&&&&&&||p|||s_", - "_s|....|B.......|..c.|s_", - "_s|....|........C.#..|s_", - "_s|S..;|B...B...|.EE#|s_", + "_s||D|D|&&&&&&&&||p|||s_", + "_s|;.|.|B.......|..c.|s_", + "_s|..|.|........C.#..|s_", + "_s|S.|<|B...B...|.EE#|4_", "_s|||||||||||||||||L||s_", "_ssssssssssssssssssssss_", "________________________", "________________________" ], "terrain": { - "#": "t_floor", "&": "t_bars", "*": "t_door_locked_alarm", "+": "t_door_metal_pickable", ".": "t_floor", "5": "t_window_bars_alarm", - "7": "t_floor", - ";": "t_floor", "@": "t_shrub", "A": "t_atm", - "B": "t_floor", "C": "t_door_frame", "D": "t_door_o", - "E": "t_floor", "L": "t_door_metal_locked", - "S": "t_floor", - "^": "t_floor", "_": "t_pavement", - "c": "t_floor", - "l": "t_floor", "p": "t_door_metal_o", - "r": "t_floor", "s": "t_sidewalk", - "u": "t_floor", - "|": "t_wall", - "x": "t_dirt" + "|": "t_wall_w", + "x": "t_dirt", + "<": "t_ladder_up", + "4": "t_gutter_downspout" }, "furniture": { "#": "f_counter", @@ -285,56 +413,11 @@ }, { "method": "json", + "om_terrain": "s_gun_3", + "type": "mapgen", + "weight": 200, "object": { - "place_item": [ { "item": "corpse", "repeat": 1, "x": 19, "y": 12 } ], - "furniture": { - "#": "f_sandbag_wall", - "&": "f_trashcan", - "+": "f_null", - "-": "f_null", - ".": "f_null", - "C": "f_chair", - "D": "f_displaycase", - "H": "f_armchair", - "S": "f_sandbag_half", - "T": "f_table", - "W": "f_null", - "^": "f_indoor_plant_y", - "_": "f_null", - "a": "f_null", - "b": "f_sandbag_half", - "c": "f_counter", - "d": "f_null", - "e": "f_null", - "f": "f_null", - "g": "f_null", - "i": "f_indoor_plant", - "r": "f_rack", - "s": "f_null", - "t": "f_table", - "u": "f_null", - "w": "f_null", - "{": "f_locker", - "|": "f_null" - }, - "place_items": [ - { "chance": 99, "item": "corpse_male", "x": 19, "y": 12 }, - { "chance": 35, "item": "ammo_casings", "x": [ 14, 15 ], "y": 14 }, - { "chance": 35, "item": "guns_pistol_common", "x": 19, "y": 8 }, - { "chance": 75, "item": "guns_common", "x": 3, "y": 10 }, - { "chance": 40, "item": "gunmod_rare", "x": 3, "y": 12 }, - { "chance": 55, "item": "book_gunmags", "x": 9, "y": 8 }, - { "chance": 5, "item": "guns_pistol_rare", "x": 3, "y": 11 }, - { "chance": 35, "item": "ammo_rifle_common", "x": 18, "y": 14 }, - { "chance": 35, "item": "ammo_rifle_common", "x": 6, "y": 7 }, - { "chance": 30, "item": "gunmod_common", "x": [ 12, 14 ], "y": 9 }, - { "chance": 45, "item": "ammo_common", "x": 6, "y": [ 5, 6 ] }, - { "chance": 35, "item": "guns_rifle_common", "x": [ 17, 18 ], "y": 5 }, - { "chance": 35, "item": "guns_common", "x": 9, "y": [ 6, 7 ] }, - { "chance": 35, "item": "guns_common", "x": 19, "y": [ 5, 7 ] }, - { "chance": 45, "item": "trash", "x": 13, "y": 12 }, - { "chance": 45, "item": "trash", "x": 10, "y": 12 } - ], + "fill_ter": "t_floor", "rows": [ "....d...d....dss..dd.d..", ".......d......ss........", @@ -344,11 +427,11 @@ "d....W{_Cc__^____DDDWu..", "d....ar__D_________Dw...", ".d...|r__D_________D|u.d", - "...uu|__cc_________D|u..", + "...u4|__cc_________D|u..", "d.||||______DDD__||||...", - ".u|{_|||||_______|tC|u.d", - ".u|{_+______________|...", - "d.|{_|___|&_|&___|iH|...", + ".u|{_|||||_______+_C|u.d", + ".u|{_+______||+|||_t|...", + "d.|{_|___|&_|;_N|i_H|...", "..|||||e|||g|||||||||...", ".u-___________tt_tt_-u..", "du-_________________-u..", @@ -363,37 +446,111 @@ ], "terrain": { "#": "t_dirt", - "&": "t_floor", "+": "t_door_metal_pickable", "-": "t_brick_wall", ".": "t_grass", - "C": "t_floor", - "D": "t_floor", - "H": "t_floor", "S": "t_grass", "T": "t_dirt", "W": "t_wall_w", - "^": "t_floor", "_": "t_floor", "a": "t_wall_r", "b": "t_dirt", - "c": "t_floor", "d": "t_dirt", "e": "t_window_boarded", "f": "t_door_boarded", "g": "t_door_c", - "i": "t_floor", - "r": "t_floor", "s": "t_sidewalk", - "t": "t_floor", "u": "t_underbrush", "w": "t_wall_b", - "{": "t_floor", - "|": "t_wall" - } - }, - "om_terrain": "s_gun", + "|": "t_wall_w", + "4": "t_gutter_downspout" + }, + "toilets": { ";": { } }, + "place_item": [ { "item": "corpse", "repeat": 1, "x": 19, "y": 12 } ], + "furniture": { + "#": "f_sandbag_wall", + "&": "f_trashcan", + "C": "f_chair", + "D": "f_displaycase", + "H": "f_armchair", + "S": "f_sandbag_half", + "T": "f_table", + "^": "f_indoor_plant_y", + "b": "f_sandbag_half", + "c": "f_counter", + "i": "f_indoor_plant", + "r": "f_rack", + "t": "f_table", + "N": "f_sink", + "{": "f_locker" + }, + "place_items": [ + { "chance": 99, "item": "corpse_male", "x": 19, "y": 12 }, + { "chance": 35, "item": "ammo_casings", "x": [ 14, 15 ], "y": 14 }, + { "chance": 35, "item": "guns_pistol_common", "x": 19, "y": 8 }, + { "chance": 75, "item": "guns_common", "x": 3, "y": 10 }, + { "chance": 40, "item": "gunmod_rare", "x": 3, "y": 12 }, + { "chance": 55, "item": "book_gunmags", "x": 9, "y": 8 }, + { "chance": 5, "item": "guns_pistol_rare", "x": 3, "y": 11 }, + { "chance": 35, "item": "ammo_rifle_common", "x": 18, "y": 14 }, + { "chance": 35, "item": "ammo_rifle_common", "x": 6, "y": 7 }, + { "chance": 30, "item": "gunmod_common", "x": [ 12, 14 ], "y": 9 }, + { "chance": 45, "item": "ammo_common", "x": 6, "y": [ 5, 6 ] }, + { "chance": 35, "item": "guns_rifle_common", "x": [ 17, 18 ], "y": 5 }, + { "chance": 35, "item": "guns_common", "x": 9, "y": [ 6, 7 ] }, + { "chance": 35, "item": "guns_common", "x": 19, "y": [ 5, 7 ] }, + { "chance": 45, "item": "trash", "x": 13, "y": 12 }, + { "chance": 45, "item": "trash", "x": 10, "y": 12 } + ] + } + }, + { "type": "mapgen", - "weight": 100 + "method": "json", + "om_terrain": "s_gun_roof_3", + "object": { + "fill_ter": "t_flat_roof", + "rows": [ + " ", + " ", + " ", + " ", + " |222222222222223 ", + " |..............3 ", + " |..............3 ", + " |..............3 ", + " |..............3 ", + " |225..............3 ", + " |.................3 ", + " |.................3 ", + " |.................3 ", + " |-----------------3 ", + " NNNNNNNNNNNNNNNNNNN ", + " NNNNNNNNNNNNNNNNNNN ", + " N N N N ", + " N N ", + " N N ", + " N N ", + " N N ", + " N N ", + " N N ", + " NNNNNNNNNNNNNNNNNNN " + ], + "palettes": [ "roof_palette" ], + "terrain": { "N": "t_open_air_rooved" }, + "place_nested": [ + { + "chunks": [ + [ "null", 20 ], + [ "roof_2x2_utilities_b", 15 ], + [ "roof_2x2_utilities_c", 5 ], + [ "roof_2x2_utilities_d", 40 ], + [ "roof_2x2_utilities", 50 ] + ], + "x": [ 7, 17 ], + "y": [ 6, 10 ] + } + ] + } } ] diff --git a/data/json/mapgen_palettes/lmoe.json b/data/json/mapgen_palettes/lmoe.json new file mode 100644 index 0000000000000..d23231243d0e0 --- /dev/null +++ b/data/json/mapgen_palettes/lmoe.json @@ -0,0 +1,128 @@ +[ + { + "type": "palette", + "id": "bunker", + "terrain": { + "#": "t_rock", + "*": "t_chaingate_c", + "+": "t_door_metal_c", + "-": "t_scrap_wall", + "_": "t_metal_floor", + ",": "t_carpet_metal", + "1": "t_column", + "<": "t_stairs_up", + "=": "t_chainfence", + "|": "t_wall_metal", + ":": "t_secretdoor_metal_c", + ";": "t_secretdoor_metal_o", + "~": "t_water_pump", + "G": "t_generator_broken", + "t": "t_metal_floor" + }, + "furniture": { + "A": "f_air_filter", + "a": "f_standing_tank", + "b": "f_bookcase", + "B": "f_bed", + "c": "f_counter", + "C": "f_cupboard", + "d": "f_dresser", + "D": "f_desk", + "e": "f_ergometer", + "E": "f_exercise", + "F": "f_fridge", + "f": "f_sofa", + "h": "f_chair", + "H": "f_water_heater", + "K": "f_sink", + "l": "f_utility_shelf", + "L": "f_table", + "O": "f_oven", + "P": "f_punching_bag", + "r": "f_rack", + "R": "f_rack", + "s": "f_shower", + "S": "f_woodstove", + "T": "f_table", + "U": "f_utility_shelf", + "u": "f_utility_shelf", + "v": "f_utility_shelf", + "V": "f_utility_shelf", + "w": "f_wardrobe", + "W": "f_water_purifier", + "Y": "f_rack_coat", + "^": "f_rubble", + "&": "f_trashcan", + "{": "f_rack", + "}": "f_bookcase" + }, + "toilets": { "t": { } } + }, + { + "type": "palette", + "id": "empty_bunker_items", + "items": { + "b": [ { "item": "manuals", "chance": 60 }, { "item": "textbooks", "chance": 40 } ], + "B": { "item": "bed", "chance": 70, "repeat": [ 1, 2 ] }, + "c": { "item": "hardware", "chance": 50 }, + "C": [ { "item": "dining", "chance": 30, "repeat": [ 1, 3 ] }, { "item": "oven", "chance": 20 } ], + "d": { "item": "allclothes", "chance": 80, "repeat": [ 2, 4 ] }, + "D": { "item": "office", "chance": 70 }, + "l": { "item": "hardware", "chance": 50, "repeat": [ 1, 2 ] }, + "L": { "item": "dining", "chance": 30 }, + "r": { "item": "stash_wood", "chance": 85 }, + "R": { "item": "hardware", "chance": 80 }, + "S": { "item": "oven", "chance": 80 }, + "T": { "item": "tools_common", "chance": 60, "repeat": [ 1, 2 ] }, + "U": { "item": "gear_survival", "chance": 20, "repeat": [ 3, 5 ] }, + "u": [ { "item": "cannedfood", "chance": 20, "repeat": [ 1, 5 ] }, { "item": "pasta", "chance": 10, "repeat": [ 1, 3 ] } ], + "v": { "item": "softdrugs", "chance": 50 }, + "V": { "item": "bags", "chance": 30 }, + "w": { "item": "allclothes", "chance": 80, "repeat": [ 2, 4 ] }, + "Y": [ { "item": "jackets", "chance": 15 }, { "item": "hats", "chance": 15 }, { "item": "winter", "chance": 10 } ], + "^": { "item": "shelter", "chance": 30 }, + "{": [ { "item": "lmoe_guns", "chance": 80 }, { "item": "ammo", "y": 3, "chance": 5, "repeat": [ 3, 7 ] } ], + "}": { "item": "novels", "chance": 90, "repeat": [ 3, 8 ] } + } + }, + { + "type": "palette", + "id": "bunker_ext", + "terrain": { + " ": [ [ "t_grass", 10 ], [ "t_grass_long", 2 ], [ "t_shrub", 1 ], [ "t_dirt", 5 ] ], + "_": "t_dirt", + "#": "t_rock", + "$": [ + "t_tree", + "t_tree_apple", + "t_tree_peach", + "t_tree_pear", + "t_tree_hickory", + "t_tree_beech", + "t_tree_coffee", + [ "t_tree_young", 14 ], + [ "t_shrub", 20 ] + ], + "S": [ + [ "t_grass", 15 ], + [ "t_tree_young", 2 ], + [ "t_shrub", 2 ], + "t_tree", + "t_tree_apple", + "t_tree_peach", + "t_tree_pear", + "t_tree_hickory", + "t_tree_beech", + "t_tree_coffee" + ], + "v": "t_open_air", + "+": "t_door_metal_c", + ".": "t_rock_floor", + ">": "t_stairs_down", + ")": "t_slope_up", + "(": "t_slope_down", + "T": [ "t_tree", "t_tree_apple", "t_tree_peach", "t_tree_pear", "t_tree_hickory", "t_tree_beech", "t_tree_coffee" ] + }, + "items": { " ": [ { "item": "forest", "chance": 1 }, { "item": "field", "chance": 2 } ] } + } +] diff --git a/data/json/mapgen_palettes/refugee_center.json b/data/json/mapgen_palettes/refugee_center.json index 4a4c413062c7c..d69d6ede278e6 100644 --- a/data/json/mapgen_palettes/refugee_center.json +++ b/data/json/mapgen_palettes/refugee_center.json @@ -57,5 +57,26 @@ "~": "f_shower" }, "toilets": { "t": { } } + }, + { + "type": "palette", + "id": "rc_grounds", + "terrain": { + "'": [ [ "t_grass", 30 ], [ "t_dirt", 10 ], [ "t_grass_dead", 3 ] ], + ",": [ [ "t_pavement_y", 300 ], [ "t_dirt", 2 ], "t_grass_dead" ], + ".": [ + [ "t_grass", 600 ], + [ "t_dirt", 200 ], + [ "t_grass_dead", 60 ], + [ "t_shrub", 15 ], + [ "t_tree_young", 10 ], + [ "t_tree", 3 ], + [ "t_tree_dead", 2 ], + "t_water_sh", + "t_tree_pine" + ], + "|": [ [ "t_chainfence", 30 ], [ "t_chainfence_posts", 4 ], [ "t_grass", 2 ], "t_shrub" ], + "_": [ [ "t_pavement", 300 ], [ "t_dirt", 2 ], "t_grass_dead" ] + } } ] diff --git a/data/json/martialarts.json b/data/json/martialarts.json index 201c89c9e373c..b71b85556d3b0 100644 --- a/data/json/martialarts.json +++ b/data/json/martialarts.json @@ -977,5 +977,37 @@ "spear_survivor", "spear_wood" ] + }, + { + "type": "martial_art", + "id": "style_wingchun", + "name": "Wing Chun", + "description": "Wing Chun is a Chinese martial art that began by selecting the easiest-to-learn effective techniques from the various Shaolin animal forms. It has a high stance, with weight entirely on the rear leg. Wing Chun focuses on sensitivity to the opponent's direction of force, and flowing around it to get back to hitting.", + "initiate": [ + "You take your stance and prepare to receive the gift of violence.", + "%s patiently assumes a curiously pigeon-toed stance." + ], + "arm_block": 99, + "leg_block": 99, + "static_buffs": [ + { + "id": "wingchun_static", + "name": "Chi-Sao Sensitivity", + "description": "Perception increases dodging ability, +1 dodges per turn", + "unarmed_allowed": true, + "strictly_unarmed": true, + "flat_bonuses": [ [ "dodge", "per", 0.12 ] ], + "bonus_dodges": 1 + } + ], + "techniques": [ + "tec_wingchun_chainpunch", + "tec_wingchun_break", + "tec_wingchun_feint", + "tec_wingchun_stumble", + "tec_wingchun_counter", + "tec_wingchun_disarm" + ], + "weapons": [ "butterfly_swords", "long_pole" ] } ] diff --git a/data/json/morale_types.json b/data/json/morale_types.json index 53124d5931786..9809242c5e788 100644 --- a/data/json/morale_types.json +++ b/data/json/morale_types.json @@ -249,6 +249,16 @@ "type": "morale_type", "text": "Masochism" }, + { + "id": "morale_perm_noface", + "type": "morale_type", + "text": "You have no face!" + }, + { + "id": "morale_perm_fpmode_on", + "type": "morale_type", + "text": "You feel pumped!" + }, { "id": "morale_perm_hoarder", "type": "morale_type", diff --git a/data/json/mutations.json b/data/json/mutations.json index 41d3d1280c5ba..a4489774b82d5 100644 --- a/data/json/mutations.json +++ b/data/json/mutations.json @@ -610,9 +610,9 @@ "id": "MARTIAL_ARTS2", "name": "Self-Defense Classes", "points": 2, - "description": "You have taken some self-defense classes at a nearby gym. You start with your choice of Capoeira, Krav Maga, Muay Thai, Ninjutsu, or Zui Quan.", + "description": "You have taken some self-defense classes at a nearby gym. You start with your choice of Capoeira, Krav Maga, Muay Thai, Ninjutsu, Wing Chun, or Zui Quan.", "starting_trait": true, - "initial_ma_styles": [ "style_krav_maga", "style_muay_thai", "style_ninjutsu", "style_capoeira", "style_zui_quan" ], + "initial_ma_styles": [ "style_krav_maga", "style_muay_thai", "style_ninjutsu", "style_capoeira", "style_zui_quan", "style_wingchun" ], "valid": false }, { @@ -6041,6 +6041,16 @@ "purifiable": false, "profession": true }, + { + "type": "mutation", + "id": "PROF_FOODP", + "name": "True Foodperson", + "points": 0, + "description": "You are the true Foodperson, some might think Foodperson is just a mascot, but you know better. You are Foodperson, the mask has become your face, you are real and the only thing standing between this world and oblivion is you.", + "valid": false, + "purifiable": false, + "profession": true + }, { "type": "mutation", "id": "PROF_MED", diff --git a/data/json/npcs/NC_TRUE_FOODPERSON.json b/data/json/npcs/NC_TRUE_FOODPERSON.json new file mode 100644 index 0000000000000..47967f1f9d2ed --- /dev/null +++ b/data/json/npcs/NC_TRUE_FOODPERSON.json @@ -0,0 +1,35 @@ +[ + { + "type": "item_group", + "id": "NC_TRUE_FOODPERSON_worn", + "subtype": "collection", + "entries": [ + { "item": "foodperson_mask" }, + { "item": "briefs" }, + { "item": "socks" }, + { "item": "pants_cargo" }, + { "item": "dress_shirt" }, + { "item": "chestguard_hard" }, + { "item": "cape_fp" }, + { "item": "armguard_hard" }, + { "item": "legguard_hard" }, + { "item": "gloves_rubber" }, + { "item": "boots_rubber" } + ] + }, + { + "id": "NC_TRUE_FOODPERSON_melee", + "type": "item_group", + "items": [ [ "bat", 50 ], [ "null", 50 ] ] + }, + { + "type": "item_group", + "id": "NC_TRUE_FOODPERSON_misc", + "subtype": "collection", + "entries": [ + { "item": "medium_disposable_cell", "prob": 90 }, + { "item_group": "snacks_fancy", "prob": 30, "charges": 2 }, + { "item_group": "snacks", "prob": 20, "charges": 2 } + ] + } +] diff --git a/data/json/npcs/TALK_TEST.json b/data/json/npcs/TALK_TEST.json index b7080abc314ad..46dfaf5c2ab7c 100644 --- a/data/json/npcs/TALK_TEST.json +++ b/data/json/npcs/TALK_TEST.json @@ -648,7 +648,7 @@ { "type": "talk_topic", "id": "TALK_TEST_SPEAKER_EFFECT_SENTINEL_CONDITIONAL", - "speaker_effect": { "sentinel": "spend500", "condition": { "u_has_cash": 750 }, "effect": { "u_spend_cash": 500 } }, + "speaker_effect": { "sentinel": "spend500", "condition": { "u_are_owed": 750 }, "effect": { "u_spend_cash": 500 } }, "dynamic_line": "This is a test conversation that shouldn't appear in the game.", "responses": [ { "text": "This is a basic test response.", "topic": "TALK_DONE" } ] }, @@ -663,8 +663,8 @@ "type": "talk_topic", "id": "TALK_TEST_SPEAKER_EFFECT_COMPOUND_CONDITIONAL", "speaker_effect": [ - { "condition": { "u_has_cash": 1500 }, "effect": { "u_spend_cash": 1000 } }, - { "condition": { "u_has_cash": 750 }, "effect": { "u_spend_cash": 500 } } + { "condition": { "u_are_owed": 1500 }, "effect": { "u_spend_cash": 1000 } }, + { "condition": { "u_are_owed": 750 }, "effect": { "u_spend_cash": 500 } } ], "dynamic_line": "This is a test conversation that shouldn't appear in the game.", "responses": [ { "text": "This is a basic test response.", "topic": "TALK_DONE" } ] @@ -680,8 +680,8 @@ "type": "talk_topic", "id": "TALK_TEST_SPEAKER_EFFECT_COMPOUND_SENTINEL_CONDITIONAL", "speaker_effect": [ - { "sentinel": "spend250", "condition": { "u_has_cash": 750 }, "effect": { "u_spend_cash": 250 } }, - { "sentinel": "spend500", "condition": { "u_has_cash": 750 }, "effect": { "u_spend_cash": 500 } } + { "sentinel": "spend250", "condition": { "u_are_owed": 750 }, "effect": { "u_spend_cash": 250 } }, + { "sentinel": "spend500", "condition": { "u_are_owed": 750 }, "effect": { "u_spend_cash": 500 } } ], "dynamic_line": "This is a test conversation that shouldn't appear in the game.", "responses": [ { "text": "This is a basic test response.", "topic": "TALK_DONE" } ] diff --git a/data/json/npcs/TALK_TRUE_FOODPERSON.json b/data/json/npcs/TALK_TRUE_FOODPERSON.json new file mode 100644 index 0000000000000..f7f74ec7514b2 --- /dev/null +++ b/data/json/npcs/TALK_TRUE_FOODPERSON.json @@ -0,0 +1,550 @@ +[ + { + "id": "TALK_TRUE_FOODPERSON", + "type": "talk_topic", + "dynamic_line": { + "u_is_wearing": "foodperson_mask", + "yes": { + "npc_has_var": "foodperson_has_talked", + "type": "dialogue", + "context": "foodperson", + "value": "yes", + "no": "What sorcery is this?", + "yes": { + "npc_has_var": "foodperson_meeting_solved", + "type": "dialogue", + "context": "foodperson", + "value": "yes", + "no": "So you're back... Explain yourself!", + "yes": "Greetings friend, it's nice to see you." + } + }, + "no": { + "u_is_wearing": "foodkid_badge", + "yes": "Welcome home Foodkid!", + "no": { + "npc_has_var": "npc_foodperson_impressed", + "type": "dialogue", + "context": "foodperson", + "value": "yes", + "yes": "Greetings friend, it's nice to see you.", + "no": { + "npc_has_var": "foodperson_has_talked", + "type": "dialogue", + "context": "foodperson", + "value": "yes", + "no": "Greeting citizen, what brings you to the FoodLair?", + "yes": "Still here? Take your time, it's rough out there." + } + } + } + }, + "speaker_effect": { "effect": { "npc_add_var": "foodperson_has_talked", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + "responses": [ + { + "condition": { + "or": [ + { + "and": [ + { "npc_has_var": "foodperson_has_talked", "type": "dialogue", "context": "foodperson", "value": "yes" }, + { + "not": { "or": [ { "u_is_wearing": "foodperson_mask" }, { "u_is_wearing": "foodperson_mask_on" } ] } + } + ] + }, + { + "and": [ + { "npc_has_var": "foodperson_meeting_solved", "type": "dialogue", "context": "foodperson", "value": "yes" }, + { + "or": [ + { "u_has_trait": "PROF_FOODP" }, + { "or": [ { "u_is_wearing": "foodperson_mask" }, { "u_is_wearing": "foodperson_mask_on" } ] } + ] + } + ] + } + ] + }, + "text": "Hey. Let's chat for a second.", + "topic": "TALK_FOODPERSON_MAIN" + }, + { + "condition": { + "and": [ + { "not": { "npc_has_var": "foodperson_has_talked", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + { + "and": [ + { "not": { "or": [ { "u_is_wearing": "foodperson_mask" }, { "u_is_wearing": "foodperson_mask_on" } ] } }, + { "not": { "u_is_wearing": "foodkid_badge" } } + ] + } + ] + }, + "text": "Greetings... Foodperson?", + "topic": "TALK_FOODPERSON_INTRODUCTION" + }, + { + "condition": { + "and": [ + { "not": { "npc_has_var": "foodperson_meeting_solved", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + { "not": { "u_has_trait": "PROF_FOODP" } }, + { "or": [ { "u_is_wearing": "foodperson_mask" }, { "u_is_wearing": "foodperson_mask_on" } ] } + ] + }, + "text": "I am you but from an alternate reality.", + "trial": { "type": "LIE", "difficulty": 10, "opinion": { "trust": 1, "value": 1 } }, + "success": { "topic": "TALK_FOODPERSON_MULTIVERSE", "opinion": { "trust": 2, "value": 2 } }, + "failure": { "topic": "TALK_FOODPERSON_ONLYONE", "opinion": { "trust": -5, "value": -5 } } + }, + { + "condition": { + "and": [ + { "not": { "npc_has_var": "foodperson_meeting_solved", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + { "or": [ { "u_is_wearing": "foodperson_mask" }, { "u_is_wearing": "foodperson_mask_on" } ] }, + { "u_has_trait": "PROF_FOODP" } + ] + }, + "text": "I am Foodperson, who are YOU?", + "topic": "TALK_FOODPERSON_TWO" + }, + { + "condition": { + "and": [ + { "not": { "npc_has_var": "foodperson_meeting_solved", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + { "or": [ { "u_is_wearing": "foodperson_mask" }, { "u_is_wearing": "foodperson_mask_on" } ] }, + { "u_has_trait": "PROF_FOODP" } + ] + }, + "text": "There is only one real Foodperson!", + "topic": "TALK_FOODPERSON_ONLYONE" + }, + { + "condition": { + "and": [ + { "not": { "npc_has_var": "foodperson_meeting_solved", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + { "or": [ { "u_is_wearing": "foodperson_mask" }, { "u_is_wearing": "foodperson_mask_on" } ] }, + { "not": { "u_has_trait": "PROF_FOODP" } } + ] + }, + "text": "I am the REAL Foodperson!", + "topic": "TALK_FOODPERSON_ONLYONE" + }, + { "text": "Nevermind me, I'm just going to leave.", "topic": "TALK_DONE" } + ] + }, + { + "id": "TALK_FOODPERSON_INTRODUCTION", + "type": "talk_topic", + "dynamic_line": "Indeed it is I! The one and only FOODPERSON!", + "responses": [ + { + "text": "Wow! Such an honor to meet you in person!", + "topic": "TALK_FOODPERSON_MAIN", + "opinion": { "trust": 1, "value": 1 } + }, + { + "text": "Are you joking? Foodpeson is not real, it's a restaurant mascot!", + "opinion": { "trust": -1, "value": -1 }, + "topic": "TALK_FOODPERSON_DOUBTED" + }, + { + "text": "The great Foodperson in the flesh! Such an honor to finaly meet you in person!", + "trial": { "type": "LIE", "difficulty": 60, "mod": [ [ "TRUST", 2 ], [ "VALUE", 2 ] ] }, + "success": { "topic": "TALK_FOODPERSON_MAIN", "opinion": { "trust": 2, "value": 2 } }, + "failure": { "topic": "TALK_FOODPERSON_VEXED", "opinion": { "trust": -5, "value": -5 } } + }, + { "text": "Ah... Well, nice to meet you Foodperson.", "topic": "TALK_FOODPERSON_MAIN" } + ] + }, + { + "id": "TALK_FOODPERSON_VEXED", + "type": "talk_topic", + "dynamic_line": "Do not mock me, for my strength is quite real! Get out of here now!", + "responses": [ + { "text": "Sheesh, ok, calm down, I'm leaving!", "topic": "TALK_DONE" }, + { "text": "Forgive me, I didn't mean to disrespect you.", "topic": "TALK_FOODPERSON_MAIN" }, + { "text": "Oh yeah? Show me what you can do!", "topic": "TALK_DONE", "effect": "hostile" } + ] + }, + { + "id": "TALK_FOODPERSON_DOUBTED", + "type": "talk_topic", + "dynamic_line": "A common mistake, but I can assure you that I'm very real!", + "responses": [ + { "text": "Sure, whatever.", "topic": "TALK_DONE" }, + { "text": "Ok... I believe you.", "topic": "TALK_FOODPERSON_MAIN" } + ] + }, + { + "id": "TALK_FOODPERSON_MAIN", + "type": "talk_topic", + "dynamic_line": "Anyway, do you need something?", + "responses": [ + { + "text": "Are you interested in some trading?", + "condition": { + "and": [ + { "not": { "npc_has_var": "npc_failed_trade", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + { + "not": { "npc_has_var": "npc_succes_trade", "type": "dialogue", "context": "foodperson", "value": "yes" } + }, + { + "not": { + "and": [ + { "npc_has_var": "npc_foodpersons_sharing", "type": "dialogue", "context": "foodperson", "value": "yes" }, + { + "or": [ + { "u_has_trait": "PROF_FOODP" }, + { "or": [ { "u_is_wearing": "foodperson_mask" }, { "u_is_wearing": "foodperson_mask_on" } ] } + ] + } + ] + } + } + ] + }, + "trial": { "type": "PERSUADE", "difficulty": 50, "mod": [ [ "TRUST", 2 ], [ "VALUE", 2 ] ] }, + "success": { "topic": "TALK_FOODPERSON_TRADE" }, + "failure": { "topic": "TALK_FOODPERSON_NOTRADE" } + }, + { + "text": "Let's trade?", + "condition": { + "and": [ + { "not": { "npc_has_var": "npc_failed_trade", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + { + "or": [ + { "npc_has_var": "npc_succes_trade", "type": "dialogue", "context": "foodperson", "value": "yes" }, + { + "npc_has_var": "npc_foodperson_impressed", + "type": "dialogue", + "context": "foodperson", + "value": "yes" + }, + { + "and": [ + { "npc_has_var": "npc_foodpersons_sharing", "type": "dialogue", "context": "foodperson", "value": "yes" }, + { + "or": [ + { "u_has_trait": "PROF_FOODP" }, + { "or": [ { "u_is_wearing": "foodperson_mask" }, { "u_is_wearing": "foodperson_mask_on" } ] } + ] + } + ] + } + ] + } + ] + }, + "effect": "start_trade", + "topic": "TALK_DONE" + }, + { + "text": "I'm looking for a place to stay.", + "condition": { + "and": [ + { "not": { "npc_has_var": "npc_failed_shelter", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + { + "not": { "npc_has_var": "npc_succes_shelter", "type": "dialogue", "context": "foodperson", "value": "yes" } + }, + { + "not": { + "and": [ + { "npc_has_var": "npc_foodpersons_sharing", "type": "dialogue", "context": "foodperson", "value": "yes" }, + { + "or": [ + { "u_has_trait": "PROF_FOODP" }, + { "or": [ { "u_is_wearing": "foodperson_mask" }, { "u_is_wearing": "foodperson_mask_on" } ] } + ] + } + ] + } + } + ] + }, + "trial": { "type": "PERSUADE", "difficulty": 20, "mod": [ [ "TRUST", 2 ], [ "VALUE", 2 ] ] }, + "success": { "topic": "TALK_FOODPERSON_SHELTER" }, + "failure": { "topic": "TALK_FOODPERSON_NOSHELTER" } + }, + { + "text": "I want to get stronger. Please teach me.", + "condition": { + "and": [ + { "not": { "npc_has_var": "npc_failed_training", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + { + "not": { "npc_has_var": "npc_succes_training", "type": "dialogue", "context": "foodperson", "value": "yes" } + }, + { + "not": { + "and": [ + { "npc_has_var": "npc_foodpersons_sharing", "type": "dialogue", "context": "foodperson", "value": "yes" }, + { + "or": [ + { "u_has_trait": "PROF_FOODP" }, + { "or": [ { "u_is_wearing": "foodperson_mask" }, { "u_is_wearing": "foodperson_mask_on" } ] } + ] + } + ] + } + } + ] + }, + "trial": { "type": "PERSUADE", "difficulty": 20, "mod": [ [ "TRUST", 2 ], [ "VALUE", 2 ] ] }, + "success": { "topic": "TALK_FOODPERSON_TRAINING" }, + "failure": { "topic": "TALK_FOODPERSON_NOTRAINING" } + }, + { + "text": "Please share your knowledge.", + "condition": { + "and": [ + { "not": { "npc_has_var": "npc_failed_training", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + { + "or": [ + { "npc_has_var": "npc_succes_training", "type": "dialogue", "context": "foodperson", "value": "yes" }, + { + "npc_has_var": "npc_foodperson_impressed", + "type": "dialogue", + "context": "foodperson", + "value": "yes" + }, + { + "and": [ + { "npc_has_var": "npc_foodpersons_sharing", "type": "dialogue", "context": "foodperson", "value": "yes" }, + { + "or": [ + { "u_has_trait": "PROF_FOODP" }, + { "or": [ { "u_is_wearing": "foodperson_mask" }, { "u_is_wearing": "foodperson_mask_on" } ] } + ] + } + ] + } + ] + } + ] + }, + "topic": "TALK_TRAIN" + }, + { + "text": "I'm building up a team, people with special abilities.", + "condition": { + "and": [ + { "not": { "npc_has_var": "npc_failed_team", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + { + "not": { "npc_has_var": "npc_succes_team", "type": "dialogue", "context": "foodperson", "value": "yes" } + }, + { + "not": { "npc_has_var": "npc_foodperson_impressed", "type": "dialogue", "context": "foodperson", "value": "yes" } + }, + { + "not": { + "and": [ + { "npc_has_var": "npc_foodpersons_sharing", "type": "dialogue", "context": "foodperson", "value": "yes" }, + { + "or": [ + { "u_has_trait": "PROF_FOODP" }, + { "or": [ { "u_is_wearing": "foodperson_mask" }, { "u_is_wearing": "foodperson_mask_on" } ] } + ] + } + ] + } + } + ] + }, + "trial": { "type": "PERSUADE", "difficulty": 0, "mod": [ [ "TRUST", 2 ], [ "VALUE", 2 ] ] }, + "success": { + "topic": "TALK_FOODPERSON_SIDEKICK", + "effect": { "npc_add_var": "npc_succes_team_team", "type": "dialogue", "context": "foodperson", "value": "yes" } + }, + "failure": { "topic": "TALK_FOODPERSON_SOLO" } + }, + { + "text": "Can you tell me again about this sidekick offer?", + "condition": { + "and": [ + { "npc_has_var": "npc_sidekick_offer", "type": "dialogue", "context": "foodperson", "value": "yes" }, + { "not": "has_assigned_mission" } + ] + }, + "topic": "TALK_FOODPERSON_SIDEKICK" + }, + { + "text": "Alright, I thought about this, what do you say about we team up?", + "condition": { + "and": [ + { "npc_has_var": "npc_foodpersons_sharing", "type": "dialogue", "context": "foodperson", "value": "yes" }, + { + "or": [ + { "u_has_trait": "PROF_FOODP" }, + { "or": [ { "u_is_wearing": "foodperson_mask" }, { "u_is_wearing": "foodperson_mask_on" } ] } + ] + } + ] + }, + "topic": "TALK_FOODPERSON_TEAMUP" + }, + { "text": "I'm good, bye.", "topic": "TALK_DONE" } + ] + }, + { + "id": "TALK_FOODPERSON_NOTRADE", + "type": "talk_topic", + "dynamic_line": "I already have everything I need here in the FoodLair!", + "speaker_effect": { "effect": { "npc_add_var": "npc_failed_trade", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + "responses": [ { "text": "Fair enough.", "topic": "TALK_NONE" } ] + }, + { + "id": "TALK_FOODPERSON_TRADE", + "type": "talk_topic", + "dynamic_line": "Alright let's see what you've got.", + "speaker_effect": { "effect": { "npc_add_var": "npc_succes_trade", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + "responses": [ { "text": "...", "topic": "TALK_DONE", "effect": "start_trade" } ] + }, + { + "id": "TALK_FOODPERSON_NOTRAINING", + "type": "talk_topic", + "dynamic_line": "You're not ready for this.", + "speaker_effect": { "effect": { "npc_add_var": "npc_failed_training", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + "responses": [ { "text": "But I am worthy!", "topic": "TALK_NONE" } ] + }, + { + "id": "TALK_FOODPERSON_TRAINING", + "type": "talk_topic", + "dynamic_line": "I can teach you a few tricks.", + "speaker_effect": { "effect": { "npc_add_var": "npc_succes_training", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + "responses": [ { "text": "...", "topic": "TALK_TRAIN" }, { "text": "Nevermind.", "topic": "TALK_DONE" } ] + }, + { + "id": "TALK_FOODPERSON_NOSHELTER", + "type": "talk_topic", + "dynamic_line": "This is no place for a civilian. You should go to the refugee center.", + "speaker_effect": { "effect": { "npc_add_var": "npc_failed_shelter", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + "responses": [ { "text": "Damn!", "topic": "TALK_NONE" } ] + }, + { + "id": "TALK_FOODPERSON_SHELTER", + "type": "talk_topic", + "dynamic_line": "Well... You seem like a decent sort, I might have an offer for you.", + "speaker_effect": { "effect": { "npc_add_var": "npc_succes_shelter", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + "responses": [ { "text": "I'm listening.", "topic": "TALK_FOODPERSON_SIDEKICK" } ] + }, + { + "id": "TALK_FOODPERSON_SOLO", + "type": "talk_topic", + "dynamic_line": "Sorry but I work alone.", + "speaker_effect": { "effect": { "npc_add_var": "npc_failed_team", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + "responses": [ { "text": "We could really use your help!", "topic": "TALK_NONE" } ] + }, + { + "id": "TALK_FOODPERSON_SIDEKICK", + "type": "talk_topic", + "dynamic_line": "What about: you prove your worth and join me as my sidekick?", + "speaker_effect": { "effect": { "npc_add_var": "npc_sidekick_offer", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + "responses": [ + { "condition": { "not": "has_assigned_mission" }, "text": "That sounds great!", "topic": "TALK_MISSION_LIST" }, + { "condition": { "not": "has_assigned_mission" }, "text": "Ok...", "topic": "TALK_MISSION_LIST" }, + { + "condition": { "not": "has_assigned_mission" }, + "text": "I need to think about it.", + "topic": "TALK_FOODPERSON_MAIN" + }, + { "condition": { "not": "has_assigned_mission" }, "text": "Huh... No thanks.", "topic": "TALK_DONE" }, + { + "condition": "has_assigned_mission", + "text": "There's other things I'd like to discuss.", + "topic": "TALK_FOODPERSON_MAIN" + }, + { "condition": "has_assigned_mission", "text": "Alright bye.", "topic": "TALK_DONE" } + ] + }, + { + "id": "TALK_FOODPERSON_TWO", + "type": "talk_topic", + "dynamic_line": "The way you talk, the way you move... You're... You're me? But how?", + "responses": [ + { + "text": "I... I don't know. It probably has something to do with ! What do you say we team up to find out?", + "effect": { "npc_add_var": "foodperson_meeting_solved", "type": "dialogue", "context": "foodperson", "value": "yes" }, + "topic": "TALK_FOODPERSON_TEAMUP" + }, + { + "text": "It might have something to do with , mind if I stay here while we try to figure this out?", + "effect": { "npc_add_var": "foodperson_meeting_solved", "type": "dialogue", "context": "foodperson", "value": "yes" }, + "topic": "TALK_FOODPERSON_SHARING" + }, + { "text": "This can't be true, you're trying to trick me!", "topic": "TALK_FOODPERSON_ONLYONE" }, + { "text": "I need time to think.", "topic": "TALK_DONE" } + ] + }, + { + "id": "TALK_FOODPERSON_MULTIVERSE", + "type": "talk_topic", + "dynamic_line": "Wha... But. But... How?", + "responses": [ + { + "text": "No time to explain, the world is at an end and we must join forces to save it!", + "effect": { "npc_add_var": "foodperson_meeting_solved", "type": "dialogue", "context": "foodperson", "value": "yes" }, + "topic": "TALK_FOODPERSON_TEAMUP" + }, + { + "text": "The cataclysm weakened the space-time continuum, I accidentally fell through a tear in reality and ended up here. I will need access to your resources to keep fighting.", + "effect": { "npc_add_var": "foodperson_meeting_solved", "type": "dialogue", "context": "foodperson", "value": "yes" }, + "topic": "TALK_FOODPERSON_SHARING" + }, + { + "text": "I am the ultimate Foodperson, I travel the multiverse consuming powers from all the Foodpersons. And now I've come for you!", + "topic": "TALK_FOODPERSON_ONLYONE" + }, + { "text": "Can't tell you now. In due time all will be revealed.", "topic": "TALK_DONE" } + ] + }, + { + "id": "TALK_FOODPERSON_SHARING", + "type": "talk_topic", + "dynamic_line": "Of course, whatever you need... Foodperson.", + "speaker_effect": { "effect": { "npc_add_var": "npc_foodpersons_sharing", "type": "dialogue", "context": "foodperson", "value": "yes" } }, + "responses": [ + { + "text": "Thank you Foodperson! It's good to know I have a friend here.", + "topic": "TALK_FOODPERSON_MAIN", + "opinion": { "trust": 10, "value": 10 } + } + ] + }, + { + "id": "TALK_FOODPERSON_TEAMUP", + "type": "talk_topic", + "dynamic_line": "It's crazy out there, it's going to be a tough journey but I'm with you!", + "responses": [ + { + "text": "Let's go, we have a world to save!", + "topic": "TALK_DONE", + "effect": "follow", + "opinion": { "trust": 20, "value": 20 } + } + ] + }, + { + "id": "TALK_FOODPERSON_ONLYONE", + "type": "talk_topic", + "dynamic_line": "There can be only one!", + "responses": [ + { "text": "I AM THE ONE!", "topic": "TALK_DONE", "effect": "hostile", "opinion": { "trust": -20, "value": -20 } }, + { + "condition": { "not": { "u_has_trait": "PROF_FOODP" } }, + "text": "Wow calm down, it's just a prank bro.", + "topic": "TALK_DONE", + "opinion": { "trust": -20, "value": -20 } + }, + { + "condition": { "u_has_trait": "PROF_FOODP" }, + "text": "WAIT! There might be another way!", + "topic": "TALK_NONE" + }, + { + "condition": { "u_has_trait": "PROF_FOODP" }, + "text": "I don't want to fight you. I'm leaving.", + "topic": "TALK_DONE" + } + ] + } +] diff --git a/data/json/npcs/classes.json b/data/json/npcs/classes.json index 7d95f06f1f0cb..065ec05cad5a4 100644 --- a/data/json/npcs/classes.json +++ b/data/json/npcs/classes.json @@ -357,6 +357,23 @@ { "skill": "cooking", "bonus": { "rng": [ 3, 6 ] } } ] }, + { + "type": "npc_class", + "id": "NC_TRUE_FOODPERSON", + "name": "Foodperson", + "job_description": "I AM FOODPERSON. AND I BRING SUSTENANCE!", + "traits": [ { "group": "NPC_starting_traits" }, { "group": "Appearance_demographics" }, [ "PROF_FOODP", 100 ] ], + "common": false, + "worn_override": "NC_TRUE_FOODPERSON_worn", + "weapon_override": "NC_TRUE_FOODPERSON_melee", + "bonus_str": { "rng": [ 0, 2 ] }, + "skills": [ + { "skill": "ALL", "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 4, 2 ] }, { "rng": [ -4, -1 ] } ] } ] } }, + { "skill": "bashing", "bonus": { "rng": [ 1, 3 ] } }, + { "skill": "speech", "bonus": { "rng": [ 1, 3 ] } }, + { "skill": "dodge", "bonus": { "rng": [ 3, 6 ] } } + ] + }, { "type": "npc_class", "id": "NC_CYBORG", diff --git a/data/json/npcs/factions.json b/data/json/npcs/factions.json index 47cff19f4f91e..b89306234ec9f 100644 --- a/data/json/npcs/factions.json +++ b/data/json/npcs/factions.json @@ -28,7 +28,7 @@ "type": "faction", "id": "robofac", "name": "Hub 01", - "likes_u": 0, + "likes_u": -200, "respects_u": 0, "known_by_u": false, "size": 100, @@ -208,6 +208,7 @@ "power": 100, "food_supply": 115200, "wealth": 10000000, + "currency": "FMCNote", "relations": { "free_merchants": { "kill on sight": false, diff --git a/data/json/npcs/missiondef.json b/data/json/npcs/missiondef.json index c3d1fb91caade..179335327ac84 100644 --- a/data/json/npcs/missiondef.json +++ b/data/json/npcs/missiondef.json @@ -742,5 +742,33 @@ "value": 0, "origins": [ "ORIGIN_GAME_START" ], "item": "antibiotics" + }, + { + "id": "MISSION_PROVE_YOUR_WORTH", + "type": "mission_definition", + "name": "Prove your worth to Foodperson", + "goal": "MGOAL_FIND_ITEM", + "item": "fp_loyalty_card", + "count": 10, + "difficulty": 1, + "value": 0, + "end": { + "effect": [ + { "npc_add_var": "npc_foodperson_impressed", "type": "dialogue", "context": "foodperson", "value": "yes" }, + { "u_buy_item": "badge_foodkid" } + ] + }, + "origins": [ "ORIGIN_SECONDARY" ], + "dialogue": { + "describe": "Prove your dedication to Foodplace.", + "offer": "Show me the proof of your loyalty to the great Foodplace, and I'll consider you worthy of my friendship. Ten loyalty cards should be enough, I'm sure you already have much more than that waiting for you at home, right?", + "accepted": "That's the spirit! Good luck kid.", + "rejected": "That's alright not everyone is cutout for this.", + "advice": "Those are very precious, people would probably keep them on their person or in bank vaults. And definitely not throw them in the trash!", + "inquire": "How is it going? Do you have them?", + "success": "YES! I knew you could do it! You proved your worth and I'm proud to call you a friend.", + "success_lie": "Well... where are they?", + "failure": "I'm so disappointed in you kid..." + } } ] diff --git a/data/json/npcs/npc.json b/data/json/npcs/npc.json index 2f0ddb95d0101..219d3dc195796 100644 --- a/data/json/npcs/npc.json +++ b/data/json/npcs/npc.json @@ -66,10 +66,22 @@ "chat": "TALK_NC_SURVIVOR_CHEF", "faction": "wasteland_scavengers" }, + { + "type": "npc", + "id": "true_foodperson", + "//": "Foodperson mascot, except if you ask them Foodperson is a real hero and it's them!", + "name_unique": "Foodperson", + "class": "NC_TRUE_FOODPERSON", + "attitude": 7, + "mission": 7, + "chat": "TALK_TRUE_FOODPERSON", + "mission_offered": "MISSION_PROVE_YOUR_WORTH", + "faction": "wasteland_scavengers" + }, { "type": "npc", "id": "cyborg_rescued", - "//": "A broken cyborg you saved.", + "//": "A prototype cyborg you saved.", "name_suffix": "Cyborg", "class": "NC_CYBORG", "attitude": 1, diff --git a/data/json/npcs/refugee_center/surface_visitors/NPC_scavenger_mercenary.json b/data/json/npcs/refugee_center/surface_visitors/NPC_scavenger_mercenary.json index edaf28d857fe2..29962e56992db 100644 --- a/data/json/npcs/refugee_center/surface_visitors/NPC_scavenger_mercenary.json +++ b/data/json/npcs/refugee_center/surface_visitors/NPC_scavenger_mercenary.json @@ -101,17 +101,28 @@ { "id": "TALK_SCAVENGER_MERC_HIRE", "type": "talk_topic", - "dynamic_line": "I'm currently waiting for a customer to return... I'll make you a deal though, $8,000 will cover my expenses if I get a small cut of the loot. I can't accept cash cards, so you'll have to find an ATM to deposit money into your bank account.", + "dynamic_line": "I'm currently waiting for a customer to return... I'll make you a deal though, 2500 Merch will cover my expenses if I get a small cut of the loot.", "responses": [ + { "text": "What the heck is a Merch?", "topic": "TALK_SCAVENGER_MERC_MERCH" }, { "text": "I might be back.", "topic": "TALK_SCAVENGER_MERC" }, { - "text": "[$8000] You have a deal.", + "text": "[FMC2500] You have a deal.", "topic": "TALK_SCAVENGER_MERC_HIRE_SUCCESS", - "condition": { "u_has_cash": 800000 }, - "effect": { "u_spend_cash": 800000 } + "condition": { "u_has_items": { "item": "FMCNote", "count": 2500 } }, + "effect": { "u_consume_item": "FMCNote", "count": 2500 } } ] }, + { + "id": "TALK_SCAVENGER_MERC_MERCH", + "type": "talk_topic", + "dynamic_line": "Merchs are what they call dollar bills around here. Free Merchant Credit Notes or something. If you want to buy stuff around here and you don't want to barter away your guns, you need Merch.", + "responses": [ + { "text": "I see. Let's try this again from the start.", "topic": "TALK_SCAVENGER_MERC" }, + { "text": "Okay, how much Merch do I need?", "topic": "TALK_SCAVENGER_MERC_HIRE" }, + { "text": "Well, thanks for the info. Bye!", "topic": "TALK_DONE" } + ] + }, { "id": "TALK_SCAVENGER_MERC_HIRE_SUCCESS", "type": "talk_topic", diff --git a/data/json/npcs/robofac/NC_ROBOFAC_SCIENTIST.json b/data/json/npcs/robofac/NC_ROBOFAC_SCIENTIST.json new file mode 100644 index 0000000000000..45067d9802ec5 --- /dev/null +++ b/data/json/npcs/robofac/NC_ROBOFAC_SCIENTIST.json @@ -0,0 +1,14 @@ +[ + { + "type": "item_group", + "id": "NC_ROBOFAC_SCIENTIST_worn", + "subtype": "collection", + "entries": [ + { "item": "under_armor" }, + { "item": "under_armor_shorts" }, + { "item": "robofac_jumpsuit" }, + { "item": "coat_lab" }, + { "item": "boots" } + ] + } +] diff --git a/data/json/npcs/robofac/NPC_Ulysses_Rourke.json b/data/json/npcs/robofac/NPC_Ulysses_Rourke.json new file mode 100644 index 0000000000000..4539c75a1193f --- /dev/null +++ b/data/json/npcs/robofac/NPC_Ulysses_Rourke.json @@ -0,0 +1,80 @@ +[ + { + "type": "npc", + "id": "hub_security_head", + "//": "A cold ex-mercenary from a third world country you have never heard of before. Third in charge after Melchior and Director Cohen. ", + "name_unique": "U. Rourke", + "name_suffix": "Head of Security", + "gender": "male", + "class": "NC_ROBOFAC_SECURITY_HEAD", + "attitude": 0, + "mission": 8, + "//": "He needs unique dialogue. But for now he's just the boss enemy of Hub 01, if the player attmepts to invade the lab.", + "chat": "TALK_HUB_SECURITY", + "faction": "robofac" + }, + { + "type": "npc_class", + "id": "NC_ROBOFAC_SECURITY_HEAD", + "name": "intercom", + "job_description": "I'm part of the Hub security team.", + "//": "Needs his own unique background.", + "traits": [ + { "group": "BG_survival_story_POLICE" }, + [ "TOUGH2", 100 ], + [ "PAINRESIST", 100 ], + [ "GOODCARDIO", 100 ], + { "group": "Appearance_demographics" } + ], + "bonus_str": { "rng": [ 2, 4 ] }, + "bonus_int": { "rng": [ 1, 2 ] }, + "bonus_per": { "rng": [ 2, 4 ] }, + "skills": [ + { "skill": "ALL", "level": { "sum": [ { "dice": [ 3, 2 ] }, { "constant": -1 } ] } }, + { "skill": "gun", "bonus": { "rng": [ 2, 4 ] } }, + { "skill": "pistol", "bonus": { "rng": [ 2, 4 ] } }, + { "skill": "smg", "bonus": { "rng": [ 2, 6 ] } } + ], + "bionics": [ + { "id": "bio_targeting", "chance": 100 }, + { "id": "bio_memory", "chance": 100 }, + { "id": "bio_armor_arms", "chance": 100 }, + { "id": "bio_armor_legs", "chance": 100 }, + { "id": "bio_hydraulics", "chance": 100 }, + { "id": "bio_cqb", "chance": 100 }, + { "id": "bio_metabolics", "chance": 100 }, + { "id": "bio_str_enhancer", "chance": 100 }, + { "id": "bio_blade", "chance": 100 }, + { "id": "bio_power_storage", "chance": 100 }, + { "id": "bio_torsionratchet", "chance": 100 } + ], + "carry_override": "NC_robofac_security_head_misc", + "worn_override": "NC_robofac_security_head_worn" + }, + { + "type": "item_group", + "id": "NC_robofac_security_head_worn", + "subtype": "collection", + "entries": [ + { "item": "under_armor" }, + { "item": "under_armor_shorts" }, + { "item": "rm13_armor" }, + { "item": "goggles_nv" }, + { "item": "holster", "prob": 50 }, + { "item": "chestrig" } + ] + }, + { + "type": "item_group", + "id": "NC_robofac_security_head_misc", + "subtype": "collection", + "entries": [ + { "item": "EMPbomb" }, + { "item": "needlegun" }, + { "item": "goggles_nv" }, + { "item": "flashbang", "count": 2 }, + { "item": "plut_cell", "count": 5 }, + { "item": "5x50heavy", "count": 10 } + ] + } +] diff --git a/data/json/npcs/robofac/NPC_robofac_generic_security.json b/data/json/npcs/robofac/NPC_robofac_generic_security.json new file mode 100644 index 0000000000000..e2378b7db15e8 --- /dev/null +++ b/data/json/npcs/robofac/NPC_robofac_generic_security.json @@ -0,0 +1,67 @@ +[ + { + "type": "npc", + "id": "hub_security", + "//": "A generic guard for Hub 01.", + "name_suffix": "Hub Security", + "class": "NC_ROBOFAC_SECURITY", + "attitude": 0, + "mission": 8, + "chat": "TALK_HUB_SECURITY", + "faction": "robofac" + }, + { + "type": "npc_class", + "id": "NC_ROBOFAC_SECURITY", + "name": "intercom", + "job_description": "I'm part of the Hub security team.", + "traits": [ { "group": "BG_survival_story_POLICE" }, { "group": "NPC_starting_traits" }, { "group": "Appearance_demographics" } ], + "bonus_str": { "rng": [ 1, 3 ] }, + "bonus_int": { "rng": [ 1, 2 ] }, + "bonus_per": { "rng": [ 1, 2 ] }, + "skills": [ + { "skill": "ALL", "level": { "sum": [ { "dice": [ 3, 2 ] }, { "constant": -2 } ] } }, + { "skill": "gun", "bonus": { "rng": [ 2, 4 ] } }, + { "skill": "pistol", "bonus": { "rng": [ 2, 4 ] } }, + { "skill": "rifle", "bonus": { "rng": [ 2, 4 ] } } + ], + "carry_override": "NC_robofac_generic_security_misc", + "worn_override": "NC_robofac_generic_security_worn" + }, + { + "type": "item_group", + "id": "NC_robofac_generic_security_worn", + "subtype": "collection", + "entries": [ + { "item": "under_armor" }, + { "item": "under_armor_shorts" }, + { "item": "robofac_jumpsuit" }, + { "item": "tac_helmet" }, + { "item": "modularvestceramic" }, + { "item": "gloves_tactical" }, + { "item": "glasses_bal", "prob": 33 }, + { "item": "boots_combat" }, + { "item": "holster", "prob": 50 }, + { "item": "chestrig" } + ] + }, + { + "type": "item_group", + "id": "NC_robofac_generic_security_misc", + "subtype": "collection", + "entries": [ + { "item": "EMPbomb", "prob": 33 }, + { "item": "grenade", "prob": 2 }, + { "item": "PR24-extended" }, + { "item": "flashlight" }, + { "item": "l_mp_9mm" }, + { "item": "9mmP", "count": 6 } + ] + }, + { + "id": "TALK_GUARD", + "type": "talk_topic", + "dynamic_line": [ "Keep it civil, merc.", "Just on watch, move along.", { "u_male": [ "Sir." ], "no": [ "Ma'am" ] } ], + "responses": [ { "text": "...", "topic": "TALK_DONE" } ] + } +] diff --git a/data/json/npcs/tacoma_ranch/NPC_ranch_bartender.json b/data/json/npcs/tacoma_ranch/NPC_ranch_bartender.json index ca2293acbf01f..3727b5f5cd60c 100644 --- a/data/json/npcs/tacoma_ranch/NPC_ranch_bartender.json +++ b/data/json/npcs/tacoma_ranch/NPC_ranch_bartender.json @@ -48,26 +48,22 @@ { "text": "[$8] I'll take a beer", "topic": "TALK_DONE", - "condition": { "u_has_cash": 800 }, "effect": { "u_buy_item": "beer", "container": "bottle_glass", "count": 2, "cost": 800 } }, { "text": "[$10] I'll take a shot of brandy", "topic": "TALK_DONE", - "condition": { "u_has_cash": 1000 }, - "effect": { "u_buy_item": "beer", "container": "bottle_glass", "cost": 1000 } + "effect": { "u_buy_item": "brandy", "container": "bottle_glass", "cost": 1000 } }, { "text": "[$10] I'll take a shot of rum", "topic": "TALK_DONE", - "condition": { "u_has_cash": 1000 }, - "effect": { "u_buy_item": "beer", "container": "bottle_glass", "cost": 1000 } + "effect": { "u_buy_item": "rum", "container": "bottle_glass", "cost": 1000 } }, { "text": "[$12] I'll take a shot of whiskey", "topic": "TALK_DONE", - "condition": { "u_has_cash": 1200 }, - "effect": { "u_buy_item": "beer", "container": "bottle_glass", "cost": 1200 } + "effect": { "u_buy_item": "whiskey", "container": "bottle_glass", "cost": 1200 } }, { "text": "On second thought, don't bother.", "topic": "TALK_RANCH_BARKEEP" } ] diff --git a/data/json/overmap/multitile_city_buildings.json b/data/json/overmap/multitile_city_buildings.json index dd5fecfdca7cf..43e08cc6b0542 100644 --- a/data/json/overmap/multitile_city_buildings.json +++ b/data/json/overmap/multitile_city_buildings.json @@ -31,6 +31,25 @@ "locations": [ "land" ], "overmaps": [ { "point": [ 0, 0, 0 ], "overmap": "s_daycare_north" }, { "point": [ 0, 0, 1 ], "overmap": "s_daycare_roof_north" } ] }, + { + "type": "city_building", + "id": "gym_fitness", + "locations": [ "land" ], + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "gym_fitness_north" }, + { "point": [ 0, 0, 1 ], "overmap": "gym_fitness_roof_north" } + ] + }, + { + "type": "city_building", + "id": "gym_fitness_1", + "locations": [ "land" ], + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "gym_fitness_1_north" }, + { "point": [ 0, 0, 1 ], "overmap": "gym_fitness_2ndFloor_1_north" }, + { "point": [ 0, 0, 2 ], "overmap": "gym_fitness_roof_1_north" } + ] + }, { "type": "city_building", "id": "s_gardening", @@ -92,6 +111,40 @@ { "point": [ 0, 0, 1 ], "overmap": "cs_tire_shop_roof_north" } ] }, + { + "type": "city_building", + "id": "s_gun", + "locations": [ "land" ], + "overmaps": [ { "point": [ 0, 0, 0 ], "overmap": "s_gun_north" }, { "point": [ 0, 0, 1 ], "overmap": "s_gun_roof_north" } ] + }, + { + "type": "city_building", + "id": "s_gun_1", + "locations": [ "land" ], + "overmaps": [ { "point": [ 0, 0, 0 ], "overmap": "s_gun_1_north" }, { "point": [ 0, 0, 1 ], "overmap": "s_gun_roof_1_north" } ] + }, + { + "type": "city_building", + "id": "s_gun_2", + "locations": [ "land" ], + "overmaps": [ { "point": [ 0, 0, 0 ], "overmap": "s_gun_2_north" }, { "point": [ 0, 0, 1 ], "overmap": "s_gun_roof_1_north" } ] + }, + { + "type": "city_building", + "id": "s_gun_3", + "locations": [ "land" ], + "overmaps": [ { "point": [ 0, 0, 0 ], "overmap": "s_gun_3_north" }, { "point": [ 0, 0, 1 ], "overmap": "s_gun_roof_3_north" } ] + }, + { + "type": "city_building", + "id": "s_gun_4", + "locations": [ "land" ], + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "s_gun_4_north" }, + { "point": [ 0, 0, 1 ], "overmap": "s_gun_2ndfloor_4_north" }, + { "point": [ 0, 0, 2 ], "overmap": "s_gun_roof_4_north" } + ] + }, { "type": "city_building", "id": "s_bookstore", @@ -1326,6 +1379,16 @@ { "point": [ 0, 0, 1 ], "overmap": "cs_car_dealership_roof_north" } ] }, + { + "type": "city_building", + "id": "s_restaurant_foodplace", + "locations": [ "land" ], + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "s_restaurant_foodplace_north" }, + { "point": [ 0, 0, 1 ], "overmap": "s_restaurant_foodplace_roof_north" }, + { "point": [ 0, 0, 2 ], "overmap": "s_restaurant_foodplace_upper_roof_north" } + ] + }, { "type": "city_building", "id": "s_restaurant", diff --git a/data/json/overmap/specials.json b/data/json/overmap/specials.json index ff00dd3a68dc6..ae08e132c5a01 100644 --- a/data/json/overmap/specials.json +++ b/data/json/overmap/specials.json @@ -114,7 +114,11 @@ { "type": "overmap_special", "id": "LMOE Shelter", - "overmaps": [ { "point": [ 0, 0, 0 ], "overmap": "lmoe" }, { "point": [ 0, 0, -1 ], "overmap": "lmoe_under" } ], + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "lmoe" }, + { "point": [ 0, 0, 1 ], "overmap": "lmoe_roof" }, + { "point": [ 0, 0, -1 ], "overmap": "lmoe_under_empty" } + ], "locations": [ "land" ], "city_distance": [ 20, -1 ], "city_sizes": [ 0, 12 ], @@ -1276,34 +1280,1584 @@ "type": "overmap_special", "id": "evac_center", "overmaps": [ - { "point": [ 0, 0, 0 ], "overmap": "evac_center_1_north" }, - { "point": [ 1, 0, 0 ], "overmap": "evac_center_2_north" }, - { "point": [ 2, 0, 0 ], "overmap": "evac_center_3_north" }, - { "point": [ 3, 0, 0 ], "overmap": "evac_center_4_north" }, - { "point": [ 4, 0, 0 ], "overmap": "evac_center_5_north" }, - { "point": [ 0, 1, 0 ], "overmap": "evac_center_6_north" }, - { "point": [ 1, 1, 0 ], "overmap": "evac_center_7_north" }, - { "point": [ 2, 1, 0 ], "overmap": "evac_center_8_north" }, - { "point": [ 3, 1, 0 ], "overmap": "evac_center_9_north" }, - { "point": [ 4, 1, 0 ], "overmap": "evac_center_10_north" }, - { "point": [ 0, 2, 0 ], "overmap": "evac_center_11_north" }, - { "point": [ 1, 2, 0 ], "overmap": "evac_center_12_north" }, - { "point": [ 2, 2, 0 ], "overmap": "evac_center_13_north" }, - { "point": [ 3, 2, 0 ], "overmap": "evac_center_14_north" }, - { "point": [ 4, 2, 0 ], "overmap": "evac_center_15_north" }, - { "point": [ 0, 3, 0 ], "overmap": "evac_center_16_north" }, - { "point": [ 1, 3, 0 ], "overmap": "evac_center_17_north" }, - { "point": [ 2, 3, 0 ], "overmap": "evac_center_18_north" }, - { "point": [ 3, 3, 0 ], "overmap": "evac_center_19_north" }, - { "point": [ 4, 3, 0 ], "overmap": "evac_center_20_north" }, - { "point": [ 0, 4, 0 ], "overmap": "evac_center_21_north" }, - { "point": [ 1, 4, 0 ], "overmap": "evac_center_22_north" }, - { "point": [ 2, 4, 0 ], "overmap": "evac_center_23_north" }, - { "point": [ 3, 4, 0 ], "overmap": "evac_center_24_north" }, - { "point": [ 4, 4, 0 ], "overmap": "evac_center_25_north" }, - { "point": [ 2, 5, 0 ], "overmap": "road_end_south" } - ], - "connections": [ { "point": [ 2, 5, 0 ] } ], + { "point": [ 0, 0, 0 ], "overmap": "refctr_NW1a_north" }, + { "point": [ 1, 0, 0 ], "overmap": "refctr_NW2a_north" }, + { "point": [ 2, 0, 0 ], "overmap": "refctr_NW3a_north" }, + { "point": [ 3, 0, 0 ], "overmap": "refctr_NW4a_north" }, + { "point": [ 4, 0, 0 ], "overmap": "refctr_NW5a_north" }, + { "point": [ 0, 1, 0 ], "overmap": "refctr_NW1b_north" }, + { "point": [ 1, 1, 0 ], "overmap": "refctr_NW2b_north" }, + { "point": [ 2, 1, 0 ], "overmap": "refctr_NW3b_north" }, + { "point": [ 3, 1, 0 ], "overmap": "refctr_NW4b_north" }, + { "point": [ 4, 1, 0 ], "overmap": "refctr_NW5b_north" }, + { "point": [ 0, 2, 0 ], "overmap": "refctr_NW1c_north" }, + { "point": [ 1, 2, 0 ], "overmap": "refctr_NW2c_north" }, + { "point": [ 2, 2, 0 ], "overmap": "refctr_NW3c_north" }, + { "point": [ 3, 2, 0 ], "overmap": "refctr_NW4c_north" }, + { "point": [ 4, 2, 0 ], "overmap": "refctr_NW5c_north" }, + { "point": [ 0, 3, 0 ], "overmap": "refctr_NW1d_north" }, + { "point": [ 1, 3, 0 ], "overmap": "refctr_NW2d_north" }, + { "point": [ 2, 3, 0 ], "overmap": "refctr_NW3d_north" }, + { "point": [ 3, 3, 0 ], "overmap": "refctr_NW4d_north" }, + { "point": [ 4, 3, 0 ], "overmap": "refctr_NW5d_north" }, + { "point": [ 0, 4, 0 ], "overmap": "refctr_NW1e_north" }, + { "point": [ 1, 4, 0 ], "overmap": "refctr_NW2e_north" }, + { "point": [ 2, 4, 0 ], "overmap": "refctr_NW3e_north" }, + { "point": [ 3, 4, 0 ], "overmap": "refctr_NW4e_north" }, + { "point": [ 4, 4, 0 ], "overmap": "refctr_NW5e_north" }, + { "point": [ 5, 0, 0 ], "overmap": "refctr_N1a_north" }, + { "point": [ 6, 0, 0 ], "overmap": "refctr_N2a_north" }, + { "point": [ 7, 0, 0 ], "overmap": "refctr_N3a_north" }, + { "point": [ 8, 0, 0 ], "overmap": "refctr_N4a_north" }, + { "point": [ 9, 0, 0 ], "overmap": "refctr_N5a_north" }, + { "point": [ 5, 1, 0 ], "overmap": "refctr_N1b_north" }, + { "point": [ 6, 1, 0 ], "overmap": "refctr_N2b_north" }, + { "point": [ 7, 1, 0 ], "overmap": "refctr_N3b_north" }, + { "point": [ 8, 1, 0 ], "overmap": "refctr_N4b_north" }, + { "point": [ 9, 1, 0 ], "overmap": "refctr_N5b_north" }, + { "point": [ 5, 2, 0 ], "overmap": "refctr_N1c_north" }, + { "point": [ 6, 2, 0 ], "overmap": "refctr_N2c_north" }, + { "point": [ 7, 2, 0 ], "overmap": "refctr_N3c_north" }, + { "point": [ 8, 2, 0 ], "overmap": "refctr_N4c_north" }, + { "point": [ 9, 2, 0 ], "overmap": "refctr_N5c_north" }, + { "point": [ 5, 3, 0 ], "overmap": "refctr_N1d_north" }, + { "point": [ 6, 3, 0 ], "overmap": "refctr_N2d_north" }, + { "point": [ 7, 3, 0 ], "overmap": "refctr_N3d_north" }, + { "point": [ 8, 3, 0 ], "overmap": "refctr_N4d_north" }, + { "point": [ 9, 3, 0 ], "overmap": "refctr_N5d_north" }, + { "point": [ 5, 4, 0 ], "overmap": "refctr_N1e_north" }, + { "point": [ 6, 4, 0 ], "overmap": "refctr_N2e_north" }, + { "point": [ 7, 4, 0 ], "overmap": "refctr_N3e_north" }, + { "point": [ 8, 4, 0 ], "overmap": "refctr_N4e_north" }, + { "point": [ 9, 4, 0 ], "overmap": "refctr_N5e_north" }, + { "point": [ 10, 0, 0 ], "overmap": "refctr_NE1a_north" }, + { "point": [ 11, 0, 0 ], "overmap": "refctr_NE2a_north" }, + { "point": [ 12, 0, 0 ], "overmap": "refctr_NE3a_north" }, + { "point": [ 13, 0, 0 ], "overmap": "refctr_NE4a_north" }, + { "point": [ 14, 0, 0 ], "overmap": "refctr_NE5a_north" }, + { "point": [ 10, 1, 0 ], "overmap": "refctr_NE1b_north" }, + { "point": [ 11, 1, 0 ], "overmap": "refctr_NE2b_north" }, + { "point": [ 12, 1, 0 ], "overmap": "refctr_NE3b_north" }, + { "point": [ 13, 1, 0 ], "overmap": "refctr_NE4b_north" }, + { "point": [ 14, 1, 0 ], "overmap": "refctr_NE5b_north" }, + { "point": [ 10, 2, 0 ], "overmap": "refctr_NE1c_north" }, + { "point": [ 11, 2, 0 ], "overmap": "refctr_NE2c_north" }, + { "point": [ 12, 2, 0 ], "overmap": "refctr_NE3c_north" }, + { "point": [ 13, 2, 0 ], "overmap": "refctr_NE4c_north" }, + { "point": [ 14, 2, 0 ], "overmap": "refctr_NE5c_north" }, + { "point": [ 10, 3, 0 ], "overmap": "refctr_NE1d_north" }, + { "point": [ 11, 3, 0 ], "overmap": "refctr_NE2d_north" }, + { "point": [ 12, 3, 0 ], "overmap": "refctr_NE3d_north" }, + { "point": [ 13, 3, 0 ], "overmap": "refctr_NE4d_north" }, + { "point": [ 14, 3, 0 ], "overmap": "refctr_NE5d_north" }, + { "point": [ 10, 4, 0 ], "overmap": "refctr_NE1e_north" }, + { "point": [ 11, 4, 0 ], "overmap": "refctr_NE2e_north" }, + { "point": [ 12, 4, 0 ], "overmap": "refctr_NE3e_north" }, + { "point": [ 13, 4, 0 ], "overmap": "refctr_NE4e_north" }, + { "point": [ 14, 4, 0 ], "overmap": "refctr_NE5e_north" }, + { "point": [ 0, 5, 0 ], "overmap": "refctr_W1a_north" }, + { "point": [ 1, 5, 0 ], "overmap": "refctr_W2a_north" }, + { "point": [ 2, 5, 0 ], "overmap": "refctr_W3a_north" }, + { "point": [ 3, 5, 0 ], "overmap": "refctr_W4a_north" }, + { "point": [ 4, 5, 0 ], "overmap": "refctr_W5a_north" }, + { "point": [ 0, 6, 0 ], "overmap": "refctr_W1b_north" }, + { "point": [ 1, 6, 0 ], "overmap": "refctr_W2b_north" }, + { "point": [ 2, 6, 0 ], "overmap": "refctr_W3b_north" }, + { "point": [ 3, 6, 0 ], "overmap": "refctr_W4b_north" }, + { "point": [ 4, 6, 0 ], "overmap": "refctr_W5b_north" }, + { "point": [ 0, 7, 0 ], "overmap": "refctr_W1c_north" }, + { "point": [ 1, 7, 0 ], "overmap": "refctr_W2c_north" }, + { "point": [ 2, 7, 0 ], "overmap": "refctr_W3c_north" }, + { "point": [ 3, 7, 0 ], "overmap": "refctr_W4c_north" }, + { "point": [ 4, 7, 0 ], "overmap": "refctr_W5c_north" }, + { "point": [ 0, 8, 0 ], "overmap": "refctr_W1d_north" }, + { "point": [ 1, 8, 0 ], "overmap": "refctr_W2d_north" }, + { "point": [ 2, 8, 0 ], "overmap": "refctr_W3d_north" }, + { "point": [ 3, 8, 0 ], "overmap": "refctr_W4d_north" }, + { "point": [ 4, 8, 0 ], "overmap": "refctr_W5d_north" }, + { "point": [ 0, 9, 0 ], "overmap": "refctr_W1e_north" }, + { "point": [ 1, 9, 0 ], "overmap": "refctr_W2e_north" }, + { "point": [ 2, 9, 0 ], "overmap": "refctr_W3e_north" }, + { "point": [ 3, 9, 0 ], "overmap": "refctr_W4e_north" }, + { "point": [ 4, 9, 0 ], "overmap": "refctr_W5e_north" }, + { "point": [ 5, 5, 0 ], "overmap": "evac_center_1_north" }, + { "point": [ 6, 5, 0 ], "overmap": "evac_center_2_north" }, + { "point": [ 7, 5, 0 ], "overmap": "evac_center_3_north" }, + { "point": [ 8, 5, 0 ], "overmap": "evac_center_4_north" }, + { "point": [ 9, 5, 0 ], "overmap": "evac_center_5_north" }, + { "point": [ 5, 6, 0 ], "overmap": "evac_center_6_north" }, + { "point": [ 6, 6, 0 ], "overmap": "evac_center_7_north" }, + { "point": [ 7, 6, 0 ], "overmap": "evac_center_8_north" }, + { "point": [ 8, 6, 0 ], "overmap": "evac_center_9_north" }, + { "point": [ 9, 6, 0 ], "overmap": "evac_center_10_north" }, + { "point": [ 5, 7, 0 ], "overmap": "evac_center_11_north" }, + { "point": [ 6, 7, 0 ], "overmap": "evac_center_12_north" }, + { "point": [ 7, 7, 0 ], "overmap": "evac_center_13_north" }, + { "point": [ 8, 7, 0 ], "overmap": "evac_center_14_north" }, + { "point": [ 9, 7, 0 ], "overmap": "evac_center_15_north" }, + { "point": [ 5, 8, 0 ], "overmap": "evac_center_16_north" }, + { "point": [ 6, 8, 0 ], "overmap": "evac_center_17_north" }, + { "point": [ 7, 8, 0 ], "overmap": "evac_center_18_north" }, + { "point": [ 8, 8, 0 ], "overmap": "evac_center_19_north" }, + { "point": [ 9, 8, 0 ], "overmap": "evac_center_20_north" }, + { "point": [ 5, 9, 0 ], "overmap": "evac_center_21_north" }, + { "point": [ 6, 9, 0 ], "overmap": "evac_center_22_north" }, + { "point": [ 7, 9, 0 ], "overmap": "evac_center_23_north" }, + { "point": [ 8, 9, 0 ], "overmap": "evac_center_24_north" }, + { "point": [ 9, 9, 0 ], "overmap": "evac_center_25_north" }, + { "point": [ 10, 5, 0 ], "overmap": "refctr_E1a_north" }, + { "point": [ 11, 5, 0 ], "overmap": "refctr_E2a_north" }, + { "point": [ 12, 5, 0 ], "overmap": "refctr_E3a_north" }, + { "point": [ 13, 5, 0 ], "overmap": "refctr_E4a_north" }, + { "point": [ 14, 5, 0 ], "overmap": "refctr_E5a_north" }, + { "point": [ 10, 6, 0 ], "overmap": "refctr_E1b_north" }, + { "point": [ 11, 6, 0 ], "overmap": "refctr_E2b_north" }, + { "point": [ 12, 6, 0 ], "overmap": "refctr_E3b_north" }, + { "point": [ 13, 6, 0 ], "overmap": "refctr_E4b_north" }, + { "point": [ 14, 6, 0 ], "overmap": "refctr_E5b_north" }, + { "point": [ 10, 7, 0 ], "overmap": "refctr_E1c_north" }, + { "point": [ 11, 7, 0 ], "overmap": "refctr_E2c_north" }, + { "point": [ 12, 7, 0 ], "overmap": "refctr_E3c_north" }, + { "point": [ 13, 7, 0 ], "overmap": "refctr_E4c_north" }, + { "point": [ 14, 7, 0 ], "overmap": "refctr_E5c_north" }, + { "point": [ 10, 8, 0 ], "overmap": "refctr_E1d_north" }, + { "point": [ 11, 8, 0 ], "overmap": "refctr_E2d_north" }, + { "point": [ 12, 8, 0 ], "overmap": "refctr_E3d_north" }, + { "point": [ 13, 8, 0 ], "overmap": "refctr_E4d_north" }, + { "point": [ 14, 8, 0 ], "overmap": "refctr_E5d_north" }, + { "point": [ 10, 9, 0 ], "overmap": "refctr_E1e_north" }, + { "point": [ 11, 9, 0 ], "overmap": "refctr_E2e_north" }, + { "point": [ 12, 9, 0 ], "overmap": "refctr_E3e_north" }, + { "point": [ 13, 9, 0 ], "overmap": "refctr_E4e_north" }, + { "point": [ 14, 9, 0 ], "overmap": "refctr_E5e_north" }, + { "point": [ 0, 10, 0 ], "overmap": "refctr_SW1a_north" }, + { "point": [ 1, 10, 0 ], "overmap": "refctr_SW2a_north" }, + { "point": [ 2, 10, 0 ], "overmap": "refctr_SW3a_north" }, + { "point": [ 3, 10, 0 ], "overmap": "refctr_SW4a_north" }, + { "point": [ 4, 10, 0 ], "overmap": "refctr_SW5a_north" }, + { "point": [ 0, 11, 0 ], "overmap": "refctr_SW1b_north" }, + { "point": [ 1, 11, 0 ], "overmap": "refctr_SW2b_north" }, + { "point": [ 2, 11, 0 ], "overmap": "refctr_SW3b_north" }, + { "point": [ 3, 11, 0 ], "overmap": "refctr_SW4b_north" }, + { "point": [ 4, 11, 0 ], "overmap": "refctr_SW5b_north" }, + { "point": [ 0, 12, 0 ], "overmap": "refctr_SW1c_north" }, + { "point": [ 1, 12, 0 ], "overmap": "refctr_SW2c_north" }, + { "point": [ 2, 12, 0 ], "overmap": "refctr_SW3c_north" }, + { "point": [ 3, 12, 0 ], "overmap": "refctr_SW4c_north" }, + { "point": [ 4, 12, 0 ], "overmap": "refctr_SW5c_north" }, + { "point": [ 0, 13, 0 ], "overmap": "refctr_SW1d_north" }, + { "point": [ 1, 13, 0 ], "overmap": "refctr_SW2d_north" }, + { "point": [ 2, 13, 0 ], "overmap": "refctr_SW3d_north" }, + { "point": [ 3, 13, 0 ], "overmap": "refctr_SW4d_north" }, + { "point": [ 4, 13, 0 ], "overmap": "refctr_SW5d_north" }, + { "point": [ 0, 14, 0 ], "overmap": "refctr_SW1e_north" }, + { "point": [ 1, 14, 0 ], "overmap": "refctr_SW2e_north" }, + { "point": [ 2, 14, 0 ], "overmap": "refctr_SW3e_north" }, + { "point": [ 3, 14, 0 ], "overmap": "refctr_SW4e_north" }, + { "point": [ 4, 14, 0 ], "overmap": "refctr_SW5e_north" }, + { "point": [ 5, 10, 0 ], "overmap": "refctr_S1a_north" }, + { "point": [ 6, 10, 0 ], "overmap": "refctr_S2a_north" }, + { "point": [ 7, 10, 0 ], "overmap": "refctr_S3a_north" }, + { "point": [ 8, 10, 0 ], "overmap": "refctr_S4a_north" }, + { "point": [ 9, 10, 0 ], "overmap": "refctr_S5a_north" }, + { "point": [ 5, 11, 0 ], "overmap": "refctr_S1b_north" }, + { "point": [ 6, 11, 0 ], "overmap": "refctr_S2b_north" }, + { "point": [ 7, 11, 0 ], "overmap": "refctr_S3b_north" }, + { "point": [ 8, 11, 0 ], "overmap": "refctr_S4b_north" }, + { "point": [ 9, 11, 0 ], "overmap": "refctr_S5b_north" }, + { "point": [ 5, 12, 0 ], "overmap": "refctr_S1c_north" }, + { "point": [ 6, 12, 0 ], "overmap": "refctr_S2c_north" }, + { "point": [ 7, 12, 0 ], "overmap": "refctr_S3c_north" }, + { "point": [ 8, 12, 0 ], "overmap": "refctr_S4c_north" }, + { "point": [ 9, 12, 0 ], "overmap": "refctr_S5c_north" }, + { "point": [ 5, 13, 0 ], "overmap": "refctr_S1d_north" }, + { "point": [ 6, 13, 0 ], "overmap": "refctr_S2d_north" }, + { "point": [ 7, 13, 0 ], "overmap": "refctr_S3d_north" }, + { "point": [ 8, 13, 0 ], "overmap": "refctr_S4d_north" }, + { "point": [ 9, 13, 0 ], "overmap": "refctr_S5d_north" }, + { "point": [ 5, 14, 0 ], "overmap": "refctr_S1e_north" }, + { "point": [ 6, 14, 0 ], "overmap": "refctr_S2e_north" }, + { "point": [ 7, 14, 0 ], "overmap": "refctr_S3e_north" }, + { "point": [ 8, 14, 0 ], "overmap": "refctr_S4e_north" }, + { "point": [ 9, 14, 0 ], "overmap": "refctr_S5e_north" }, + { "point": [ 10, 10, 0 ], "overmap": "refctr_SE1a_north" }, + { "point": [ 11, 10, 0 ], "overmap": "refctr_SE2a_north" }, + { "point": [ 12, 10, 0 ], "overmap": "refctr_SE3a_north" }, + { "point": [ 13, 10, 0 ], "overmap": "refctr_SE4a_north" }, + { "point": [ 14, 10, 0 ], "overmap": "refctr_SE5a_north" }, + { "point": [ 10, 11, 0 ], "overmap": "refctr_SE1b_north" }, + { "point": [ 11, 11, 0 ], "overmap": "refctr_SE2b_north" }, + { "point": [ 12, 11, 0 ], "overmap": "refctr_SE3b_north" }, + { "point": [ 13, 11, 0 ], "overmap": "refctr_SE4b_north" }, + { "point": [ 14, 11, 0 ], "overmap": "refctr_SE5b_north" }, + { "point": [ 10, 12, 0 ], "overmap": "refctr_SE1c_north" }, + { "point": [ 11, 12, 0 ], "overmap": "refctr_SE2c_north" }, + { "point": [ 12, 12, 0 ], "overmap": "refctr_SE3c_north" }, + { "point": [ 13, 12, 0 ], "overmap": "refctr_SE4c_north" }, + { "point": [ 14, 12, 0 ], "overmap": "refctr_SE5c_north" }, + { "point": [ 10, 13, 0 ], "overmap": "refctr_SE1d_north" }, + { "point": [ 11, 13, 0 ], "overmap": "refctr_SE2d_north" }, + { "point": [ 12, 13, 0 ], "overmap": "refctr_SE3d_north" }, + { "point": [ 13, 13, 0 ], "overmap": "refctr_SE4d_north" }, + { "point": [ 14, 13, 0 ], "overmap": "refctr_SE5d_north" }, + { "point": [ 10, 14, 0 ], "overmap": "refctr_SE1e_north" }, + { "point": [ 11, 14, 0 ], "overmap": "refctr_SE2e_north" }, + { "point": [ 12, 14, 0 ], "overmap": "refctr_SE3e_north" }, + { "point": [ 13, 14, 0 ], "overmap": "refctr_SE4e_north" }, + { "point": [ 14, 14, 0 ], "overmap": "refctr_SE5e_north" }, + { "point": [ 0, 0, 1 ], "overmap": "refctr_NW1a_z1_north" }, + { "point": [ 1, 0, 1 ], "overmap": "refctr_NW2a_z1_north" }, + { "point": [ 2, 0, 1 ], "overmap": "refctr_NW3a_z1_north" }, + { "point": [ 3, 0, 1 ], "overmap": "refctr_NW4a_z1_north" }, + { "point": [ 4, 0, 1 ], "overmap": "refctr_NW5a_z1_north" }, + { "point": [ 0, 1, 1 ], "overmap": "refctr_NW1b_z1_north" }, + { "point": [ 1, 1, 1 ], "overmap": "refctr_NW2b_z1_north" }, + { "point": [ 2, 1, 1 ], "overmap": "refctr_NW3b_z1_north" }, + { "point": [ 3, 1, 1 ], "overmap": "refctr_NW4b_z1_north" }, + { "point": [ 4, 1, 1 ], "overmap": "refctr_NW5b_z1_north" }, + { "point": [ 0, 2, 1 ], "overmap": "refctr_NW1c_z1_north" }, + { "point": [ 1, 2, 1 ], "overmap": "refctr_NW2c_z1_north" }, + { "point": [ 2, 2, 1 ], "overmap": "refctr_NW3c_z1_north" }, + { "point": [ 3, 2, 1 ], "overmap": "refctr_NW4c_z1_north" }, + { "point": [ 4, 2, 1 ], "overmap": "refctr_NW5c_z1_north" }, + { "point": [ 0, 3, 1 ], "overmap": "refctr_NW1d_z1_north" }, + { "point": [ 1, 3, 1 ], "overmap": "refctr_NW2d_z1_north" }, + { "point": [ 2, 3, 1 ], "overmap": "refctr_NW3d_z1_north" }, + { "point": [ 3, 3, 1 ], "overmap": "refctr_NW4d_z1_north" }, + { "point": [ 4, 3, 1 ], "overmap": "refctr_NW5d_z1_north" }, + { "point": [ 0, 4, 1 ], "overmap": "refctr_NW1e_z1_north" }, + { "point": [ 1, 4, 1 ], "overmap": "refctr_NW2e_z1_north" }, + { "point": [ 2, 4, 1 ], "overmap": "refctr_NW3e_z1_north" }, + { "point": [ 3, 4, 1 ], "overmap": "refctr_NW4e_z1_north" }, + { "point": [ 4, 4, 1 ], "overmap": "refctr_NW5e_z1_north" }, + { "point": [ 5, 0, 1 ], "overmap": "refctr_N1a_z1_north" }, + { "point": [ 6, 0, 1 ], "overmap": "refctr_N2a_z1_north" }, + { "point": [ 7, 0, 1 ], "overmap": "refctr_N3a_z1_north" }, + { "point": [ 8, 0, 1 ], "overmap": "refctr_N4a_z1_north" }, + { "point": [ 9, 0, 1 ], "overmap": "refctr_N5a_z1_north" }, + { "point": [ 5, 1, 1 ], "overmap": "refctr_N1b_z1_north" }, + { "point": [ 6, 1, 1 ], "overmap": "refctr_N2b_z1_north" }, + { "point": [ 7, 1, 1 ], "overmap": "refctr_N3b_z1_north" }, + { "point": [ 8, 1, 1 ], "overmap": "refctr_N4b_z1_north" }, + { "point": [ 9, 1, 1 ], "overmap": "refctr_N5b_z1_north" }, + { "point": [ 5, 2, 1 ], "overmap": "refctr_N1c_z1_north" }, + { "point": [ 6, 2, 1 ], "overmap": "refctr_N2c_z1_north" }, + { "point": [ 7, 2, 1 ], "overmap": "refctr_N3c_z1_north" }, + { "point": [ 8, 2, 1 ], "overmap": "refctr_N4c_z1_north" }, + { "point": [ 9, 2, 1 ], "overmap": "refctr_N5c_z1_north" }, + { "point": [ 5, 3, 1 ], "overmap": "refctr_N1d_z1_north" }, + { "point": [ 6, 3, 1 ], "overmap": "refctr_N2d_z1_north" }, + { "point": [ 7, 3, 1 ], "overmap": "refctr_N3d_z1_north" }, + { "point": [ 8, 3, 1 ], "overmap": "refctr_N4d_z1_north" }, + { "point": [ 9, 3, 1 ], "overmap": "refctr_N5d_z1_north" }, + { "point": [ 5, 4, 1 ], "overmap": "refctr_N1e_z1_north" }, + { "point": [ 6, 4, 1 ], "overmap": "refctr_N2e_z1_north" }, + { "point": [ 7, 4, 1 ], "overmap": "refctr_N3e_z1_north" }, + { "point": [ 8, 4, 1 ], "overmap": "refctr_N4e_z1_north" }, + { "point": [ 9, 4, 1 ], "overmap": "refctr_N5e_z1_north" }, + { "point": [ 10, 0, 1 ], "overmap": "refctr_NE1a_z1_north" }, + { "point": [ 11, 0, 1 ], "overmap": "refctr_NE2a_z1_north" }, + { "point": [ 12, 0, 1 ], "overmap": "refctr_NE3a_z1_north" }, + { "point": [ 13, 0, 1 ], "overmap": "refctr_NE4a_z1_north" }, + { "point": [ 14, 0, 1 ], "overmap": "refctr_NE5a_z1_north" }, + { "point": [ 10, 1, 1 ], "overmap": "refctr_NE1b_z1_north" }, + { "point": [ 11, 1, 1 ], "overmap": "refctr_NE2b_z1_north" }, + { "point": [ 12, 1, 1 ], "overmap": "refctr_NE3b_z1_north" }, + { "point": [ 13, 1, 1 ], "overmap": "refctr_NE4b_z1_north" }, + { "point": [ 14, 1, 1 ], "overmap": "refctr_NE5b_z1_north" }, + { "point": [ 10, 2, 1 ], "overmap": "refctr_NE1c_z1_north" }, + { "point": [ 11, 2, 1 ], "overmap": "refctr_NE2c_z1_north" }, + { "point": [ 12, 2, 1 ], "overmap": "refctr_NE3c_z1_north" }, + { "point": [ 13, 2, 1 ], "overmap": "refctr_NE4c_z1_north" }, + { "point": [ 14, 2, 1 ], "overmap": "refctr_NE5c_z1_north" }, + { "point": [ 10, 3, 1 ], "overmap": "refctr_NE1d_z1_north" }, + { "point": [ 11, 3, 1 ], "overmap": "refctr_NE2d_z1_north" }, + { "point": [ 12, 3, 1 ], "overmap": "refctr_NE3d_z1_north" }, + { "point": [ 13, 3, 1 ], "overmap": "refctr_NE4d_z1_north" }, + { "point": [ 14, 3, 1 ], "overmap": "refctr_NE5d_z1_north" }, + { "point": [ 10, 4, 1 ], "overmap": "refctr_NE1e_z1_north" }, + { "point": [ 11, 4, 1 ], "overmap": "refctr_NE2e_z1_north" }, + { "point": [ 12, 4, 1 ], "overmap": "refctr_NE3e_z1_north" }, + { "point": [ 13, 4, 1 ], "overmap": "refctr_NE4e_z1_north" }, + { "point": [ 14, 4, 1 ], "overmap": "refctr_NE5e_z1_north" }, + { "point": [ 0, 5, 1 ], "overmap": "refctr_W1a_z1_north" }, + { "point": [ 1, 5, 1 ], "overmap": "refctr_W2a_z1_north" }, + { "point": [ 2, 5, 1 ], "overmap": "refctr_W3a_z1_north" }, + { "point": [ 3, 5, 1 ], "overmap": "refctr_W4a_z1_north" }, + { "point": [ 4, 5, 1 ], "overmap": "refctr_W5a_z1_north" }, + { "point": [ 0, 6, 1 ], "overmap": "refctr_W1b_z1_north" }, + { "point": [ 1, 6, 1 ], "overmap": "refctr_W2b_z1_north" }, + { "point": [ 2, 6, 1 ], "overmap": "refctr_W3b_z1_north" }, + { "point": [ 3, 6, 1 ], "overmap": "refctr_W4b_z1_north" }, + { "point": [ 4, 6, 1 ], "overmap": "refctr_W5b_z1_north" }, + { "point": [ 0, 7, 1 ], "overmap": "refctr_W1c_z1_north" }, + { "point": [ 1, 7, 1 ], "overmap": "refctr_W2c_z1_north" }, + { "point": [ 2, 7, 1 ], "overmap": "refctr_W3c_z1_north" }, + { "point": [ 3, 7, 1 ], "overmap": "refctr_W4c_z1_north" }, + { "point": [ 4, 7, 1 ], "overmap": "refctr_W5c_z1_north" }, + { "point": [ 0, 8, 1 ], "overmap": "refctr_W1d_z1_north" }, + { "point": [ 1, 8, 1 ], "overmap": "refctr_W2d_z1_north" }, + { "point": [ 2, 8, 1 ], "overmap": "refctr_W3d_z1_north" }, + { "point": [ 3, 8, 1 ], "overmap": "refctr_W4d_z1_north" }, + { "point": [ 4, 8, 1 ], "overmap": "refctr_W5d_z1_north" }, + { "point": [ 0, 9, 1 ], "overmap": "refctr_W1e_z1_north" }, + { "point": [ 1, 9, 1 ], "overmap": "refctr_W2e_z1_north" }, + { "point": [ 2, 9, 1 ], "overmap": "refctr_W3e_z1_north" }, + { "point": [ 3, 9, 1 ], "overmap": "refctr_W4e_z1_north" }, + { "point": [ 4, 9, 1 ], "overmap": "refctr_W5e_z1_north" }, + { "point": [ 5, 5, 1 ], "overmap": "evac_center_1_z1_north" }, + { "point": [ 6, 5, 1 ], "overmap": "evac_center_2_z1_north" }, + { "point": [ 7, 5, 1 ], "overmap": "evac_center_3_z1_north" }, + { "point": [ 8, 5, 1 ], "overmap": "evac_center_4_z1_north" }, + { "point": [ 9, 5, 1 ], "overmap": "evac_center_5_z1_north" }, + { "point": [ 5, 6, 1 ], "overmap": "evac_center_6_z1_north" }, + { "point": [ 6, 6, 1 ], "overmap": "evac_center_7_z1_north" }, + { "point": [ 7, 6, 1 ], "overmap": "evac_center_8_z1_north" }, + { "point": [ 8, 6, 1 ], "overmap": "evac_center_9_z1_north" }, + { "point": [ 9, 6, 1 ], "overmap": "evac_center_10_z1_north" }, + { "point": [ 5, 7, 1 ], "overmap": "evac_center_11_z1_north" }, + { "point": [ 6, 7, 1 ], "overmap": "evac_center_12_z1_north" }, + { "point": [ 7, 7, 1 ], "overmap": "evac_center_13_z1_north" }, + { "point": [ 8, 7, 1 ], "overmap": "evac_center_14_z1_north" }, + { "point": [ 9, 7, 1 ], "overmap": "evac_center_15_z1_north" }, + { "point": [ 5, 8, 1 ], "overmap": "evac_center_16_z1_north" }, + { "point": [ 6, 8, 1 ], "overmap": "evac_center_17_z1_north" }, + { "point": [ 7, 8, 1 ], "overmap": "evac_center_18_z1_north" }, + { "point": [ 8, 8, 1 ], "overmap": "evac_center_19_z1_north" }, + { "point": [ 9, 8, 1 ], "overmap": "evac_center_20_z1_north" }, + { "point": [ 5, 9, 1 ], "overmap": "evac_center_21_z1_north" }, + { "point": [ 6, 9, 1 ], "overmap": "evac_center_22_z1_north" }, + { "point": [ 7, 9, 1 ], "overmap": "evac_center_23_z1_north" }, + { "point": [ 8, 9, 1 ], "overmap": "evac_center_24_z1_north" }, + { "point": [ 9, 9, 1 ], "overmap": "evac_center_25_z1_north" }, + { "point": [ 10, 5, 1 ], "overmap": "refctr_E1a_z1_north" }, + { "point": [ 11, 5, 1 ], "overmap": "refctr_E2a_z1_north" }, + { "point": [ 12, 5, 1 ], "overmap": "refctr_E3a_z1_north" }, + { "point": [ 13, 5, 1 ], "overmap": "refctr_E4a_z1_north" }, + { "point": [ 14, 5, 1 ], "overmap": "refctr_E5a_z1_north" }, + { "point": [ 10, 6, 1 ], "overmap": "refctr_E1b_z1_north" }, + { "point": [ 11, 6, 1 ], "overmap": "refctr_E2b_z1_north" }, + { "point": [ 12, 6, 1 ], "overmap": "refctr_E3b_z1_north" }, + { "point": [ 13, 6, 1 ], "overmap": "refctr_E4b_z1_north" }, + { "point": [ 14, 6, 1 ], "overmap": "refctr_E5b_z1_north" }, + { "point": [ 10, 7, 1 ], "overmap": "refctr_E1c_z1_north" }, + { "point": [ 11, 7, 1 ], "overmap": "refctr_E2c_z1_north" }, + { "point": [ 12, 7, 1 ], "overmap": "refctr_E3c_z1_north" }, + { "point": [ 13, 7, 1 ], "overmap": "refctr_E4c_z1_north" }, + { "point": [ 14, 7, 1 ], "overmap": "refctr_E5c_z1_north" }, + { "point": [ 10, 8, 1 ], "overmap": "refctr_E1d_z1_north" }, + { "point": [ 11, 8, 1 ], "overmap": "refctr_E2d_z1_north" }, + { "point": [ 12, 8, 1 ], "overmap": "refctr_E3d_z1_north" }, + { "point": [ 13, 8, 1 ], "overmap": "refctr_E4d_z1_north" }, + { "point": [ 14, 8, 1 ], "overmap": "refctr_E5d_z1_north" }, + { "point": [ 10, 9, 1 ], "overmap": "refctr_E1e_z1_north" }, + { "point": [ 11, 9, 1 ], "overmap": "refctr_E2e_z1_north" }, + { "point": [ 12, 9, 1 ], "overmap": "refctr_E3e_z1_north" }, + { "point": [ 13, 9, 1 ], "overmap": "refctr_E4e_z1_north" }, + { "point": [ 14, 9, 1 ], "overmap": "refctr_E5e_z1_north" }, + { "point": [ 0, 10, 1 ], "overmap": "refctr_SW1a_z1_north" }, + { "point": [ 1, 10, 1 ], "overmap": "refctr_SW2a_z1_north" }, + { "point": [ 2, 10, 1 ], "overmap": "refctr_SW3a_z1_north" }, + { "point": [ 3, 10, 1 ], "overmap": "refctr_SW4a_z1_north" }, + { "point": [ 4, 10, 1 ], "overmap": "refctr_SW5a_z1_north" }, + { "point": [ 0, 11, 1 ], "overmap": "refctr_SW1b_z1_north" }, + { "point": [ 1, 11, 1 ], "overmap": "refctr_SW2b_z1_north" }, + { "point": [ 2, 11, 1 ], "overmap": "refctr_SW3b_z1_north" }, + { "point": [ 3, 11, 1 ], "overmap": "refctr_SW4b_z1_north" }, + { "point": [ 4, 11, 1 ], "overmap": "refctr_SW5b_z1_north" }, + { "point": [ 0, 12, 1 ], "overmap": "refctr_SW1c_z1_north" }, + { "point": [ 1, 12, 1 ], "overmap": "refctr_SW2c_z1_north" }, + { "point": [ 2, 12, 1 ], "overmap": "refctr_SW3c_z1_north" }, + { "point": [ 3, 12, 1 ], "overmap": "refctr_SW4c_z1_north" }, + { "point": [ 4, 12, 1 ], "overmap": "refctr_SW5c_z1_north" }, + { "point": [ 0, 13, 1 ], "overmap": "refctr_SW1d_z1_north" }, + { "point": [ 1, 13, 1 ], "overmap": "refctr_SW2d_z1_north" }, + { "point": [ 2, 13, 1 ], "overmap": "refctr_SW3d_z1_north" }, + { "point": [ 3, 13, 1 ], "overmap": "refctr_SW4d_z1_north" }, + { "point": [ 4, 13, 1 ], "overmap": "refctr_SW5d_z1_north" }, + { "point": [ 0, 14, 1 ], "overmap": "refctr_SW1e_z1_north" }, + { "point": [ 1, 14, 1 ], "overmap": "refctr_SW2e_z1_north" }, + { "point": [ 2, 14, 1 ], "overmap": "refctr_SW3e_z1_north" }, + { "point": [ 3, 14, 1 ], "overmap": "refctr_SW4e_z1_north" }, + { "point": [ 4, 14, 1 ], "overmap": "refctr_SW5e_z1_north" }, + { "point": [ 5, 10, 1 ], "overmap": "refctr_S1a_z1_north" }, + { "point": [ 6, 10, 1 ], "overmap": "refctr_S2a_z1_north" }, + { "point": [ 7, 10, 1 ], "overmap": "refctr_S3a_z1_north" }, + { "point": [ 8, 10, 1 ], "overmap": "refctr_S4a_z1_north" }, + { "point": [ 9, 10, 1 ], "overmap": "refctr_S5a_z1_north" }, + { "point": [ 5, 11, 1 ], "overmap": "refctr_S1b_z1_north" }, + { "point": [ 6, 11, 1 ], "overmap": "refctr_S2b_z1_north" }, + { "point": [ 7, 11, 1 ], "overmap": "refctr_S3b_z1_north" }, + { "point": [ 8, 11, 1 ], "overmap": "refctr_S4b_z1_north" }, + { "point": [ 9, 11, 1 ], "overmap": "refctr_S5b_z1_north" }, + { "point": [ 5, 12, 1 ], "overmap": "refctr_S1c_z1_north" }, + { "point": [ 6, 12, 1 ], "overmap": "refctr_S2c_z1_north" }, + { "point": [ 7, 12, 1 ], "overmap": "refctr_S3c_z1_north" }, + { "point": [ 8, 12, 1 ], "overmap": "refctr_S4c_z1_north" }, + { "point": [ 9, 12, 1 ], "overmap": "refctr_S5c_z1_north" }, + { "point": [ 5, 13, 1 ], "overmap": "refctr_S1d_z1_north" }, + { "point": [ 6, 13, 1 ], "overmap": "refctr_S2d_z1_north" }, + { "point": [ 7, 13, 1 ], "overmap": "refctr_S3d_z1_north" }, + { "point": [ 8, 13, 1 ], "overmap": "refctr_S4d_z1_north" }, + { "point": [ 9, 13, 1 ], "overmap": "refctr_S5d_z1_north" }, + { "point": [ 5, 14, 1 ], "overmap": "refctr_S1e_z1_north" }, + { "point": [ 6, 14, 1 ], "overmap": "refctr_S2e_z1_north" }, + { "point": [ 7, 14, 1 ], "overmap": "refctr_S3e_z1_north" }, + { "point": [ 8, 14, 1 ], "overmap": "refctr_S4e_z1_north" }, + { "point": [ 9, 14, 1 ], "overmap": "refctr_S5e_z1_north" }, + { "point": [ 10, 10, 1 ], "overmap": "refctr_SE1a_z1_north" }, + { "point": [ 11, 10, 1 ], "overmap": "refctr_SE2a_z1_north" }, + { "point": [ 12, 10, 1 ], "overmap": "refctr_SE3a_z1_north" }, + { "point": [ 13, 10, 1 ], "overmap": "refctr_SE4a_z1_north" }, + { "point": [ 14, 10, 1 ], "overmap": "refctr_SE5a_z1_north" }, + { "point": [ 10, 11, 1 ], "overmap": "refctr_SE1b_z1_north" }, + { "point": [ 11, 11, 1 ], "overmap": "refctr_SE2b_z1_north" }, + { "point": [ 12, 11, 1 ], "overmap": "refctr_SE3b_z1_north" }, + { "point": [ 13, 11, 1 ], "overmap": "refctr_SE4b_z1_north" }, + { "point": [ 14, 11, 1 ], "overmap": "refctr_SE5b_z1_north" }, + { "point": [ 10, 12, 1 ], "overmap": "refctr_SE1c_z1_north" }, + { "point": [ 11, 12, 1 ], "overmap": "refctr_SE2c_z1_north" }, + { "point": [ 12, 12, 1 ], "overmap": "refctr_SE3c_z1_north" }, + { "point": [ 13, 12, 1 ], "overmap": "refctr_SE4c_z1_north" }, + { "point": [ 14, 12, 1 ], "overmap": "refctr_SE5c_z1_north" }, + { "point": [ 10, 13, 1 ], "overmap": "refctr_SE1d_z1_north" }, + { "point": [ 11, 13, 1 ], "overmap": "refctr_SE2d_z1_north" }, + { "point": [ 12, 13, 1 ], "overmap": "refctr_SE3d_z1_north" }, + { "point": [ 13, 13, 1 ], "overmap": "refctr_SE4d_z1_north" }, + { "point": [ 14, 13, 1 ], "overmap": "refctr_SE5d_z1_north" }, + { "point": [ 10, 14, 1 ], "overmap": "refctr_SE1e_z1_north" }, + { "point": [ 11, 14, 1 ], "overmap": "refctr_SE2e_z1_north" }, + { "point": [ 12, 14, 1 ], "overmap": "refctr_SE3e_z1_north" }, + { "point": [ 13, 14, 1 ], "overmap": "refctr_SE4e_z1_north" }, + { "point": [ 14, 14, 1 ], "overmap": "refctr_SE5e_z1_north" }, + { "point": [ 0, 0, 2 ], "overmap": "refctr_NW1a_z2_north" }, + { "point": [ 1, 0, 2 ], "overmap": "refctr_NW2a_z2_north" }, + { "point": [ 2, 0, 2 ], "overmap": "refctr_NW3a_z2_north" }, + { "point": [ 3, 0, 2 ], "overmap": "refctr_NW4a_z2_north" }, + { "point": [ 4, 0, 2 ], "overmap": "refctr_NW5a_z2_north" }, + { "point": [ 0, 1, 2 ], "overmap": "refctr_NW1b_z2_north" }, + { "point": [ 1, 1, 2 ], "overmap": "refctr_NW2b_z2_north" }, + { "point": [ 2, 1, 2 ], "overmap": "refctr_NW3b_z2_north" }, + { "point": [ 3, 1, 2 ], "overmap": "refctr_NW4b_z2_north" }, + { "point": [ 4, 1, 2 ], "overmap": "refctr_NW5b_z2_north" }, + { "point": [ 0, 2, 2 ], "overmap": "refctr_NW1c_z2_north" }, + { "point": [ 1, 2, 2 ], "overmap": "refctr_NW2c_z2_north" }, + { "point": [ 2, 2, 2 ], "overmap": "refctr_NW3c_z2_north" }, + { "point": [ 3, 2, 2 ], "overmap": "refctr_NW4c_z2_north" }, + { "point": [ 4, 2, 2 ], "overmap": "refctr_NW5c_z2_north" }, + { "point": [ 0, 3, 2 ], "overmap": "refctr_NW1d_z2_north" }, + { "point": [ 1, 3, 2 ], "overmap": "refctr_NW2d_z2_north" }, + { "point": [ 2, 3, 2 ], "overmap": "refctr_NW3d_z2_north" }, + { "point": [ 3, 3, 2 ], "overmap": "refctr_NW4d_z2_north" }, + { "point": [ 4, 3, 2 ], "overmap": "refctr_NW5d_z2_north" }, + { "point": [ 0, 4, 2 ], "overmap": "refctr_NW1e_z2_north" }, + { "point": [ 1, 4, 2 ], "overmap": "refctr_NW2e_z2_north" }, + { "point": [ 2, 4, 2 ], "overmap": "refctr_NW3e_z2_north" }, + { "point": [ 3, 4, 2 ], "overmap": "refctr_NW4e_z2_north" }, + { "point": [ 4, 4, 2 ], "overmap": "refctr_NW5e_z2_north" }, + { "point": [ 5, 0, 2 ], "overmap": "refctr_N1a_z2_north" }, + { "point": [ 6, 0, 2 ], "overmap": "refctr_N2a_z2_north" }, + { "point": [ 7, 0, 2 ], "overmap": "refctr_N3a_z2_north" }, + { "point": [ 8, 0, 2 ], "overmap": "refctr_N4a_z2_north" }, + { "point": [ 9, 0, 2 ], "overmap": "refctr_N5a_z2_north" }, + { "point": [ 5, 1, 2 ], "overmap": "refctr_N1b_z2_north" }, + { "point": [ 6, 1, 2 ], "overmap": "refctr_N2b_z2_north" }, + { "point": [ 7, 1, 2 ], "overmap": "refctr_N3b_z2_north" }, + { "point": [ 8, 1, 2 ], "overmap": "refctr_N4b_z2_north" }, + { "point": [ 9, 1, 2 ], "overmap": "refctr_N5b_z2_north" }, + { "point": [ 5, 2, 2 ], "overmap": "refctr_N1c_z2_north" }, + { "point": [ 6, 2, 2 ], "overmap": "refctr_N2c_z2_north" }, + { "point": [ 7, 2, 2 ], "overmap": "refctr_N3c_z2_north" }, + { "point": [ 8, 2, 2 ], "overmap": "refctr_N4c_z2_north" }, + { "point": [ 9, 2, 2 ], "overmap": "refctr_N5c_z2_north" }, + { "point": [ 5, 3, 2 ], "overmap": "refctr_N1d_z2_north" }, + { "point": [ 6, 3, 2 ], "overmap": "refctr_N2d_z2_north" }, + { "point": [ 7, 3, 2 ], "overmap": "refctr_N3d_z2_north" }, + { "point": [ 8, 3, 2 ], "overmap": "refctr_N4d_z2_north" }, + { "point": [ 9, 3, 2 ], "overmap": "refctr_N5d_z2_north" }, + { "point": [ 5, 4, 2 ], "overmap": "refctr_N1e_z2_north" }, + { "point": [ 6, 4, 2 ], "overmap": "refctr_N2e_z2_north" }, + { "point": [ 7, 4, 2 ], "overmap": "refctr_N3e_z2_north" }, + { "point": [ 8, 4, 2 ], "overmap": "refctr_N4e_z2_north" }, + { "point": [ 9, 4, 2 ], "overmap": "refctr_N5e_z2_north" }, + { "point": [ 10, 0, 2 ], "overmap": "refctr_NE1a_z2_north" }, + { "point": [ 11, 0, 2 ], "overmap": "refctr_NE2a_z2_north" }, + { "point": [ 12, 0, 2 ], "overmap": "refctr_NE3a_z2_north" }, + { "point": [ 13, 0, 2 ], "overmap": "refctr_NE4a_z2_north" }, + { "point": [ 14, 0, 2 ], "overmap": "refctr_NE5a_z2_north" }, + { "point": [ 10, 1, 2 ], "overmap": "refctr_NE1b_z2_north" }, + { "point": [ 11, 1, 2 ], "overmap": "refctr_NE2b_z2_north" }, + { "point": [ 12, 1, 2 ], "overmap": "refctr_NE3b_z2_north" }, + { "point": [ 13, 1, 2 ], "overmap": "refctr_NE4b_z2_north" }, + { "point": [ 14, 1, 2 ], "overmap": "refctr_NE5b_z2_north" }, + { "point": [ 10, 2, 2 ], "overmap": "refctr_NE1c_z2_north" }, + { "point": [ 11, 2, 2 ], "overmap": "refctr_NE2c_z2_north" }, + { "point": [ 12, 2, 2 ], "overmap": "refctr_NE3c_z2_north" }, + { "point": [ 13, 2, 2 ], "overmap": "refctr_NE4c_z2_north" }, + { "point": [ 14, 2, 2 ], "overmap": "refctr_NE5c_z2_north" }, + { "point": [ 10, 3, 2 ], "overmap": "refctr_NE1d_z2_north" }, + { "point": [ 11, 3, 2 ], "overmap": "refctr_NE2d_z2_north" }, + { "point": [ 12, 3, 2 ], "overmap": "refctr_NE3d_z2_north" }, + { "point": [ 13, 3, 2 ], "overmap": "refctr_NE4d_z2_north" }, + { "point": [ 14, 3, 2 ], "overmap": "refctr_NE5d_z2_north" }, + { "point": [ 10, 4, 2 ], "overmap": "refctr_NE1e_z2_north" }, + { "point": [ 11, 4, 2 ], "overmap": "refctr_NE2e_z2_north" }, + { "point": [ 12, 4, 2 ], "overmap": "refctr_NE3e_z2_north" }, + { "point": [ 13, 4, 2 ], "overmap": "refctr_NE4e_z2_north" }, + { "point": [ 14, 4, 2 ], "overmap": "refctr_NE5e_z2_north" }, + { "point": [ 0, 5, 2 ], "overmap": "refctr_W1a_z2_north" }, + { "point": [ 1, 5, 2 ], "overmap": "refctr_W2a_z2_north" }, + { "point": [ 2, 5, 2 ], "overmap": "refctr_W3a_z2_north" }, + { "point": [ 3, 5, 2 ], "overmap": "refctr_W4a_z2_north" }, + { "point": [ 4, 5, 2 ], "overmap": "refctr_W5a_z2_north" }, + { "point": [ 0, 6, 2 ], "overmap": "refctr_W1b_z2_north" }, + { "point": [ 1, 6, 2 ], "overmap": "refctr_W2b_z2_north" }, + { "point": [ 2, 6, 2 ], "overmap": "refctr_W3b_z2_north" }, + { "point": [ 3, 6, 2 ], "overmap": "refctr_W4b_z2_north" }, + { "point": [ 4, 6, 2 ], "overmap": "refctr_W5b_z2_north" }, + { "point": [ 0, 7, 2 ], "overmap": "refctr_W1c_z2_north" }, + { "point": [ 1, 7, 2 ], "overmap": "refctr_W2c_z2_north" }, + { "point": [ 2, 7, 2 ], "overmap": "refctr_W3c_z2_north" }, + { "point": [ 3, 7, 2 ], "overmap": "refctr_W4c_z2_north" }, + { "point": [ 4, 7, 2 ], "overmap": "refctr_W5c_z2_north" }, + { "point": [ 0, 8, 2 ], "overmap": "refctr_W1d_z2_north" }, + { "point": [ 1, 8, 2 ], "overmap": "refctr_W2d_z2_north" }, + { "point": [ 2, 8, 2 ], "overmap": "refctr_W3d_z2_north" }, + { "point": [ 3, 8, 2 ], "overmap": "refctr_W4d_z2_north" }, + { "point": [ 4, 8, 2 ], "overmap": "refctr_W5d_z2_north" }, + { "point": [ 0, 9, 2 ], "overmap": "refctr_W1e_z2_north" }, + { "point": [ 1, 9, 2 ], "overmap": "refctr_W2e_z2_north" }, + { "point": [ 2, 9, 2 ], "overmap": "refctr_W3e_z2_north" }, + { "point": [ 3, 9, 2 ], "overmap": "refctr_W4e_z2_north" }, + { "point": [ 4, 9, 2 ], "overmap": "refctr_W5e_z2_north" }, + { "point": [ 5, 5, 2 ], "overmap": "evac_center_1_z2_north" }, + { "point": [ 6, 5, 2 ], "overmap": "evac_center_2_z2_north" }, + { "point": [ 7, 5, 2 ], "overmap": "evac_center_3_z2_north" }, + { "point": [ 8, 5, 2 ], "overmap": "evac_center_4_z2_north" }, + { "point": [ 9, 5, 2 ], "overmap": "evac_center_5_z2_north" }, + { "point": [ 5, 6, 2 ], "overmap": "evac_center_6_z2_north" }, + { "point": [ 6, 6, 2 ], "overmap": "evac_center_7_z2_north" }, + { "point": [ 7, 6, 2 ], "overmap": "evac_center_8_z2_north" }, + { "point": [ 8, 6, 2 ], "overmap": "evac_center_9_z2_north" }, + { "point": [ 9, 6, 2 ], "overmap": "evac_center_10_z2_north" }, + { "point": [ 5, 7, 2 ], "overmap": "evac_center_11_z2_north" }, + { "point": [ 6, 7, 2 ], "overmap": "evac_center_12_z2_north" }, + { "point": [ 7, 7, 2 ], "overmap": "evac_center_13_z2_north" }, + { "point": [ 8, 7, 2 ], "overmap": "evac_center_14_z2_north" }, + { "point": [ 9, 7, 2 ], "overmap": "evac_center_15_z2_north" }, + { "point": [ 5, 8, 2 ], "overmap": "evac_center_16_z2_north" }, + { "point": [ 6, 8, 2 ], "overmap": "evac_center_17_z2_north" }, + { "point": [ 7, 8, 2 ], "overmap": "evac_center_18_z2_north" }, + { "point": [ 8, 8, 2 ], "overmap": "evac_center_19_z2_north" }, + { "point": [ 9, 8, 2 ], "overmap": "evac_center_20_z2_north" }, + { "point": [ 5, 9, 2 ], "overmap": "evac_center_21_z2_north" }, + { "point": [ 6, 9, 2 ], "overmap": "evac_center_22_z2_north" }, + { "point": [ 7, 9, 2 ], "overmap": "evac_center_23_z2_north" }, + { "point": [ 8, 9, 2 ], "overmap": "evac_center_24_z2_north" }, + { "point": [ 9, 9, 2 ], "overmap": "evac_center_25_z2_north" }, + { "point": [ 10, 5, 2 ], "overmap": "refctr_E1a_z2_north" }, + { "point": [ 11, 5, 2 ], "overmap": "refctr_E2a_z2_north" }, + { "point": [ 12, 5, 2 ], "overmap": "refctr_E3a_z2_north" }, + { "point": [ 13, 5, 2 ], "overmap": "refctr_E4a_z2_north" }, + { "point": [ 14, 5, 2 ], "overmap": "refctr_E5a_z2_north" }, + { "point": [ 10, 6, 2 ], "overmap": "refctr_E1b_z2_north" }, + { "point": [ 11, 6, 2 ], "overmap": "refctr_E2b_z2_north" }, + { "point": [ 12, 6, 2 ], "overmap": "refctr_E3b_z2_north" }, + { "point": [ 13, 6, 2 ], "overmap": "refctr_E4b_z2_north" }, + { "point": [ 14, 6, 2 ], "overmap": "refctr_E5b_z2_north" }, + { "point": [ 10, 7, 2 ], "overmap": "refctr_E1c_z2_north" }, + { "point": [ 11, 7, 2 ], "overmap": "refctr_E2c_z2_north" }, + { "point": [ 12, 7, 2 ], "overmap": "refctr_E3c_z2_north" }, + { "point": [ 13, 7, 2 ], "overmap": "refctr_E4c_z2_north" }, + { "point": [ 14, 7, 2 ], "overmap": "refctr_E5c_z2_north" }, + { "point": [ 10, 8, 2 ], "overmap": "refctr_E1d_z2_north" }, + { "point": [ 11, 8, 2 ], "overmap": "refctr_E2d_z2_north" }, + { "point": [ 12, 8, 2 ], "overmap": "refctr_E3d_z2_north" }, + { "point": [ 13, 8, 2 ], "overmap": "refctr_E4d_z2_north" }, + { "point": [ 14, 8, 2 ], "overmap": "refctr_E5d_z2_north" }, + { "point": [ 10, 9, 2 ], "overmap": "refctr_E1e_z2_north" }, + { "point": [ 11, 9, 2 ], "overmap": "refctr_E2e_z2_north" }, + { "point": [ 12, 9, 2 ], "overmap": "refctr_E3e_z2_north" }, + { "point": [ 13, 9, 2 ], "overmap": "refctr_E4e_z2_north" }, + { "point": [ 14, 9, 2 ], "overmap": "refctr_E5e_z2_north" }, + { "point": [ 0, 10, 2 ], "overmap": "refctr_SW1a_z2_north" }, + { "point": [ 1, 10, 2 ], "overmap": "refctr_SW2a_z2_north" }, + { "point": [ 2, 10, 2 ], "overmap": "refctr_SW3a_z2_north" }, + { "point": [ 3, 10, 2 ], "overmap": "refctr_SW4a_z2_north" }, + { "point": [ 4, 10, 2 ], "overmap": "refctr_SW5a_z2_north" }, + { "point": [ 0, 11, 2 ], "overmap": "refctr_SW1b_z2_north" }, + { "point": [ 1, 11, 2 ], "overmap": "refctr_SW2b_z2_north" }, + { "point": [ 2, 11, 2 ], "overmap": "refctr_SW3b_z2_north" }, + { "point": [ 3, 11, 2 ], "overmap": "refctr_SW4b_z2_north" }, + { "point": [ 4, 11, 2 ], "overmap": "refctr_SW5b_z2_north" }, + { "point": [ 0, 12, 2 ], "overmap": "refctr_SW1c_z2_north" }, + { "point": [ 1, 12, 2 ], "overmap": "refctr_SW2c_z2_north" }, + { "point": [ 2, 12, 2 ], "overmap": "refctr_SW3c_z2_north" }, + { "point": [ 3, 12, 2 ], "overmap": "refctr_SW4c_z2_north" }, + { "point": [ 4, 12, 2 ], "overmap": "refctr_SW5c_z2_north" }, + { "point": [ 0, 13, 2 ], "overmap": "refctr_SW1d_z2_north" }, + { "point": [ 1, 13, 2 ], "overmap": "refctr_SW2d_z2_north" }, + { "point": [ 2, 13, 2 ], "overmap": "refctr_SW3d_z2_north" }, + { "point": [ 3, 13, 2 ], "overmap": "refctr_SW4d_z2_north" }, + { "point": [ 4, 13, 2 ], "overmap": "refctr_SW5d_z2_north" }, + { "point": [ 0, 14, 2 ], "overmap": "refctr_SW1e_z2_north" }, + { "point": [ 1, 14, 2 ], "overmap": "refctr_SW2e_z2_north" }, + { "point": [ 2, 14, 2 ], "overmap": "refctr_SW3e_z2_north" }, + { "point": [ 3, 14, 2 ], "overmap": "refctr_SW4e_z2_north" }, + { "point": [ 4, 14, 2 ], "overmap": "refctr_SW5e_z2_north" }, + { "point": [ 5, 10, 2 ], "overmap": "refctr_S1a_z2_north" }, + { "point": [ 6, 10, 2 ], "overmap": "refctr_S2a_z2_north" }, + { "point": [ 7, 10, 2 ], "overmap": "refctr_S3a_z2_north" }, + { "point": [ 8, 10, 2 ], "overmap": "refctr_S4a_z2_north" }, + { "point": [ 9, 10, 2 ], "overmap": "refctr_S5a_z2_north" }, + { "point": [ 5, 11, 2 ], "overmap": "refctr_S1b_z2_north" }, + { "point": [ 6, 11, 2 ], "overmap": "refctr_S2b_z2_north" }, + { "point": [ 7, 11, 2 ], "overmap": "refctr_S3b_z2_north" }, + { "point": [ 8, 11, 2 ], "overmap": "refctr_S4b_z2_north" }, + { "point": [ 9, 11, 2 ], "overmap": "refctr_S5b_z2_north" }, + { "point": [ 5, 12, 2 ], "overmap": "refctr_S1c_z2_north" }, + { "point": [ 6, 12, 2 ], "overmap": "refctr_S2c_z2_north" }, + { "point": [ 7, 12, 2 ], "overmap": "refctr_S3c_z2_north" }, + { "point": [ 8, 12, 2 ], "overmap": "refctr_S4c_z2_north" }, + { "point": [ 9, 12, 2 ], "overmap": "refctr_S5c_z2_north" }, + { "point": [ 5, 13, 2 ], "overmap": "refctr_S1d_z2_north" }, + { "point": [ 6, 13, 2 ], "overmap": "refctr_S2d_z2_north" }, + { "point": [ 7, 13, 2 ], "overmap": "refctr_S3d_z2_north" }, + { "point": [ 8, 13, 2 ], "overmap": "refctr_S4d_z2_north" }, + { "point": [ 9, 13, 2 ], "overmap": "refctr_S5d_z2_north" }, + { "point": [ 5, 14, 2 ], "overmap": "refctr_S1e_z2_north" }, + { "point": [ 6, 14, 2 ], "overmap": "refctr_S2e_z2_north" }, + { "point": [ 7, 14, 2 ], "overmap": "refctr_S3e_z2_north" }, + { "point": [ 8, 14, 2 ], "overmap": "refctr_S4e_z2_north" }, + { "point": [ 9, 14, 2 ], "overmap": "refctr_S5e_z2_north" }, + { "point": [ 10, 10, 2 ], "overmap": "refctr_SE1a_z2_north" }, + { "point": [ 11, 10, 2 ], "overmap": "refctr_SE2a_z2_north" }, + { "point": [ 12, 10, 2 ], "overmap": "refctr_SE3a_z2_north" }, + { "point": [ 13, 10, 2 ], "overmap": "refctr_SE4a_z2_north" }, + { "point": [ 14, 10, 2 ], "overmap": "refctr_SE5a_z2_north" }, + { "point": [ 10, 11, 2 ], "overmap": "refctr_SE1b_z2_north" }, + { "point": [ 11, 11, 2 ], "overmap": "refctr_SE2b_z2_north" }, + { "point": [ 12, 11, 2 ], "overmap": "refctr_SE3b_z2_north" }, + { "point": [ 13, 11, 2 ], "overmap": "refctr_SE4b_z2_north" }, + { "point": [ 14, 11, 2 ], "overmap": "refctr_SE5b_z2_north" }, + { "point": [ 10, 12, 2 ], "overmap": "refctr_SE1c_z2_north" }, + { "point": [ 11, 12, 2 ], "overmap": "refctr_SE2c_z2_north" }, + { "point": [ 12, 12, 2 ], "overmap": "refctr_SE3c_z2_north" }, + { "point": [ 13, 12, 2 ], "overmap": "refctr_SE4c_z2_north" }, + { "point": [ 14, 12, 2 ], "overmap": "refctr_SE5c_z2_north" }, + { "point": [ 10, 13, 2 ], "overmap": "refctr_SE1d_z2_north" }, + { "point": [ 11, 13, 2 ], "overmap": "refctr_SE2d_z2_north" }, + { "point": [ 12, 13, 2 ], "overmap": "refctr_SE3d_z2_north" }, + { "point": [ 13, 13, 2 ], "overmap": "refctr_SE4d_z2_north" }, + { "point": [ 14, 13, 2 ], "overmap": "refctr_SE5d_z2_north" }, + { "point": [ 10, 14, 2 ], "overmap": "refctr_SE1e_z2_north" }, + { "point": [ 11, 14, 2 ], "overmap": "refctr_SE2e_z2_north" }, + { "point": [ 12, 14, 2 ], "overmap": "refctr_SE3e_z2_north" }, + { "point": [ 13, 14, 2 ], "overmap": "refctr_SE4e_z2_north" }, + { "point": [ 14, 14, 2 ], "overmap": "refctr_SE5e_z2_north" }, + { "point": [ 0, 0, -1 ], "overmap": "refctr_NW1a_z-1_north" }, + { "point": [ 1, 0, -1 ], "overmap": "refctr_NW2a_z-1_north" }, + { "point": [ 2, 0, -1 ], "overmap": "refctr_NW3a_z-1_north" }, + { "point": [ 3, 0, -1 ], "overmap": "refctr_NW4a_z-1_north" }, + { "point": [ 4, 0, -1 ], "overmap": "refctr_NW5a_z-1_north" }, + { "point": [ 0, 1, -1 ], "overmap": "refctr_NW1b_z-1_north" }, + { "point": [ 1, 1, -1 ], "overmap": "refctr_NW2b_z-1_north" }, + { "point": [ 2, 1, -1 ], "overmap": "refctr_NW3b_z-1_north" }, + { "point": [ 3, 1, -1 ], "overmap": "refctr_NW4b_z-1_north" }, + { "point": [ 4, 1, -1 ], "overmap": "refctr_NW5b_z-1_north" }, + { "point": [ 0, 2, -1 ], "overmap": "refctr_NW1c_z-1_north" }, + { "point": [ 1, 2, -1 ], "overmap": "refctr_NW2c_z-1_north" }, + { "point": [ 2, 2, -1 ], "overmap": "refctr_NW3c_z-1_north" }, + { "point": [ 3, 2, -1 ], "overmap": "refctr_NW4c_z-1_north" }, + { "point": [ 4, 2, -1 ], "overmap": "refctr_NW5c_z-1_north" }, + { "point": [ 0, 3, -1 ], "overmap": "refctr_NW1d_z-1_north" }, + { "point": [ 1, 3, -1 ], "overmap": "refctr_NW2d_z-1_north" }, + { "point": [ 2, 3, -1 ], "overmap": "refctr_NW3d_z-1_north" }, + { "point": [ 3, 3, -1 ], "overmap": "refctr_NW4d_z-1_north" }, + { "point": [ 4, 3, -1 ], "overmap": "refctr_NW5d_z-1_north" }, + { "point": [ 0, 4, -1 ], "overmap": "refctr_NW1e_z-1_north" }, + { "point": [ 1, 4, -1 ], "overmap": "refctr_NW2e_z-1_north" }, + { "point": [ 2, 4, -1 ], "overmap": "refctr_NW3e_z-1_north" }, + { "point": [ 3, 4, -1 ], "overmap": "refctr_NW4e_z-1_north" }, + { "point": [ 4, 4, -1 ], "overmap": "refctr_NW5e_z-1_north" }, + { "point": [ 5, 0, -1 ], "overmap": "refctr_N1a_z-1_north" }, + { "point": [ 6, 0, -1 ], "overmap": "refctr_N2a_z-1_north" }, + { "point": [ 7, 0, -1 ], "overmap": "refctr_N3a_z-1_north" }, + { "point": [ 8, 0, -1 ], "overmap": "refctr_N4a_z-1_north" }, + { "point": [ 9, 0, -1 ], "overmap": "refctr_N5a_z-1_north" }, + { "point": [ 5, 1, -1 ], "overmap": "refctr_N1b_z-1_north" }, + { "point": [ 6, 1, -1 ], "overmap": "refctr_N2b_z-1_north" }, + { "point": [ 7, 1, -1 ], "overmap": "refctr_N3b_z-1_north" }, + { "point": [ 8, 1, -1 ], "overmap": "refctr_N4b_z-1_north" }, + { "point": [ 9, 1, -1 ], "overmap": "refctr_N5b_z-1_north" }, + { "point": [ 5, 2, -1 ], "overmap": "refctr_N1c_z-1_north" }, + { "point": [ 6, 2, -1 ], "overmap": "refctr_N2c_z-1_north" }, + { "point": [ 7, 2, -1 ], "overmap": "refctr_N3c_z-1_north" }, + { "point": [ 8, 2, -1 ], "overmap": "refctr_N4c_z-1_north" }, + { "point": [ 9, 2, -1 ], "overmap": "refctr_N5c_z-1_north" }, + { "point": [ 5, 3, -1 ], "overmap": "refctr_N1d_z-1_north" }, + { "point": [ 6, 3, -1 ], "overmap": "refctr_N2d_z-1_north" }, + { "point": [ 7, 3, -1 ], "overmap": "refctr_N3d_z-1_north" }, + { "point": [ 8, 3, -1 ], "overmap": "refctr_N4d_z-1_north" }, + { "point": [ 9, 3, -1 ], "overmap": "refctr_N5d_z-1_north" }, + { "point": [ 5, 4, -1 ], "overmap": "refctr_N1e_z-1_north" }, + { "point": [ 6, 4, -1 ], "overmap": "refctr_N2e_z-1_north" }, + { "point": [ 7, 4, -1 ], "overmap": "refctr_N3e_z-1_north" }, + { "point": [ 8, 4, -1 ], "overmap": "refctr_N4e_z-1_north" }, + { "point": [ 9, 4, -1 ], "overmap": "refctr_N5e_z-1_north" }, + { "point": [ 10, 0, -1 ], "overmap": "refctr_NE1a_z-1_north" }, + { "point": [ 11, 0, -1 ], "overmap": "refctr_NE2a_z-1_north" }, + { "point": [ 12, 0, -1 ], "overmap": "refctr_NE3a_z-1_north" }, + { "point": [ 13, 0, -1 ], "overmap": "refctr_NE4a_z-1_north" }, + { "point": [ 14, 0, -1 ], "overmap": "refctr_NE5a_z-1_north" }, + { "point": [ 10, 1, -1 ], "overmap": "refctr_NE1b_z-1_north" }, + { "point": [ 11, 1, -1 ], "overmap": "refctr_NE2b_z-1_north" }, + { "point": [ 12, 1, -1 ], "overmap": "refctr_NE3b_z-1_north" }, + { "point": [ 13, 1, -1 ], "overmap": "refctr_NE4b_z-1_north" }, + { "point": [ 14, 1, -1 ], "overmap": "refctr_NE5b_z-1_north" }, + { "point": [ 10, 2, -1 ], "overmap": "refctr_NE1c_z-1_north" }, + { "point": [ 11, 2, -1 ], "overmap": "refctr_NE2c_z-1_north" }, + { "point": [ 12, 2, -1 ], "overmap": "refctr_NE3c_z-1_north" }, + { "point": [ 13, 2, -1 ], "overmap": "refctr_NE4c_z-1_north" }, + { "point": [ 14, 2, -1 ], "overmap": "refctr_NE5c_z-1_north" }, + { "point": [ 10, 3, -1 ], "overmap": "refctr_NE1d_z-1_north" }, + { "point": [ 11, 3, -1 ], "overmap": "refctr_NE2d_z-1_north" }, + { "point": [ 12, 3, -1 ], "overmap": "refctr_NE3d_z-1_north" }, + { "point": [ 13, 3, -1 ], "overmap": "refctr_NE4d_z-1_north" }, + { "point": [ 14, 3, -1 ], "overmap": "refctr_NE5d_z-1_north" }, + { "point": [ 10, 4, -1 ], "overmap": "refctr_NE1e_z-1_north" }, + { "point": [ 11, 4, -1 ], "overmap": "refctr_NE2e_z-1_north" }, + { "point": [ 12, 4, -1 ], "overmap": "refctr_NE3e_z-1_north" }, + { "point": [ 13, 4, -1 ], "overmap": "refctr_NE4e_z-1_north" }, + { "point": [ 14, 4, -1 ], "overmap": "refctr_NE5e_z-1_north" }, + { "point": [ 0, 5, -1 ], "overmap": "refctr_W1a_z-1_north" }, + { "point": [ 1, 5, -1 ], "overmap": "refctr_W2a_z-1_north" }, + { "point": [ 2, 5, -1 ], "overmap": "refctr_W3a_z-1_north" }, + { "point": [ 3, 5, -1 ], "overmap": "refctr_W4a_z-1_north" }, + { "point": [ 4, 5, -1 ], "overmap": "refctr_W5a_z-1_north" }, + { "point": [ 0, 6, -1 ], "overmap": "refctr_W1b_z-1_north" }, + { "point": [ 1, 6, -1 ], "overmap": "refctr_W2b_z-1_north" }, + { "point": [ 2, 6, -1 ], "overmap": "refctr_W3b_z-1_north" }, + { "point": [ 3, 6, -1 ], "overmap": "refctr_W4b_z-1_north" }, + { "point": [ 4, 6, -1 ], "overmap": "refctr_W5b_z-1_north" }, + { "point": [ 0, 7, -1 ], "overmap": "refctr_W1c_z-1_north" }, + { "point": [ 1, 7, -1 ], "overmap": "refctr_W2c_z-1_north" }, + { "point": [ 2, 7, -1 ], "overmap": "refctr_W3c_z-1_north" }, + { "point": [ 3, 7, -1 ], "overmap": "refctr_W4c_z-1_north" }, + { "point": [ 4, 7, -1 ], "overmap": "refctr_W5c_z-1_north" }, + { "point": [ 0, 8, -1 ], "overmap": "refctr_W1d_z-1_north" }, + { "point": [ 1, 8, -1 ], "overmap": "refctr_W2d_z-1_north" }, + { "point": [ 2, 8, -1 ], "overmap": "refctr_W3d_z-1_north" }, + { "point": [ 3, 8, -1 ], "overmap": "refctr_W4d_z-1_north" }, + { "point": [ 4, 8, -1 ], "overmap": "refctr_W5d_z-1_north" }, + { "point": [ 0, 9, -1 ], "overmap": "refctr_W1e_z-1_north" }, + { "point": [ 1, 9, -1 ], "overmap": "refctr_W2e_z-1_north" }, + { "point": [ 2, 9, -1 ], "overmap": "refctr_W3e_z-1_north" }, + { "point": [ 3, 9, -1 ], "overmap": "refctr_W4e_z-1_north" }, + { "point": [ 4, 9, -1 ], "overmap": "refctr_W5e_z-1_north" }, + { "point": [ 5, 5, -1 ], "overmap": "evac_center_1_z-1_north" }, + { "point": [ 6, 5, -1 ], "overmap": "evac_center_2_z-1_north" }, + { "point": [ 7, 5, -1 ], "overmap": "evac_center_3_z-1_north" }, + { "point": [ 8, 5, -1 ], "overmap": "evac_center_4_z-1_north" }, + { "point": [ 9, 5, -1 ], "overmap": "evac_center_5_z-1_north" }, + { "point": [ 5, 6, -1 ], "overmap": "evac_center_6_z-1_north" }, + { "point": [ 6, 6, -1 ], "overmap": "evac_center_7_z-1_north" }, + { "point": [ 7, 6, -1 ], "overmap": "evac_center_8_z-1_north" }, + { "point": [ 8, 6, -1 ], "overmap": "evac_center_9_z-1_north" }, + { "point": [ 9, 6, -1 ], "overmap": "evac_center_10_z-1_north" }, + { "point": [ 5, 7, -1 ], "overmap": "evac_center_11_z-1_north" }, + { "point": [ 6, 7, -1 ], "overmap": "evac_center_12_z-1_north" }, + { "point": [ 7, 7, -1 ], "overmap": "evac_center_13_z-1_north" }, + { "point": [ 8, 7, -1 ], "overmap": "evac_center_14_z-1_north" }, + { "point": [ 9, 7, -1 ], "overmap": "evac_center_15_z-1_north" }, + { "point": [ 5, 8, -1 ], "overmap": "evac_center_16_z-1_north" }, + { "point": [ 6, 8, -1 ], "overmap": "evac_center_17_z-1_north" }, + { "point": [ 7, 8, -1 ], "overmap": "evac_center_18_z-1_north" }, + { "point": [ 8, 8, -1 ], "overmap": "evac_center_19_z-1_north" }, + { "point": [ 9, 8, -1 ], "overmap": "evac_center_20_z-1_north" }, + { "point": [ 5, 9, -1 ], "overmap": "evac_center_21_z-1_north" }, + { "point": [ 6, 9, -1 ], "overmap": "evac_center_22_z-1_north" }, + { "point": [ 7, 9, -1 ], "overmap": "evac_center_23_z-1_north" }, + { "point": [ 8, 9, -1 ], "overmap": "evac_center_24_z-1_north" }, + { "point": [ 9, 9, -1 ], "overmap": "evac_center_25_z-1_north" }, + { "point": [ 10, 5, -1 ], "overmap": "refctr_E1a_z-1_north" }, + { "point": [ 11, 5, -1 ], "overmap": "refctr_E2a_z-1_north" }, + { "point": [ 12, 5, -1 ], "overmap": "refctr_E3a_z-1_north" }, + { "point": [ 13, 5, -1 ], "overmap": "refctr_E4a_z-1_north" }, + { "point": [ 14, 5, -1 ], "overmap": "refctr_E5a_z-1_north" }, + { "point": [ 10, 6, -1 ], "overmap": "refctr_E1b_z-1_north" }, + { "point": [ 11, 6, -1 ], "overmap": "refctr_E2b_z-1_north" }, + { "point": [ 12, 6, -1 ], "overmap": "refctr_E3b_z-1_north" }, + { "point": [ 13, 6, -1 ], "overmap": "refctr_E4b_z-1_north" }, + { "point": [ 14, 6, -1 ], "overmap": "refctr_E5b_z-1_north" }, + { "point": [ 10, 7, -1 ], "overmap": "refctr_E1c_z-1_north" }, + { "point": [ 11, 7, -1 ], "overmap": "refctr_E2c_z-1_north" }, + { "point": [ 12, 7, -1 ], "overmap": "refctr_E3c_z-1_north" }, + { "point": [ 13, 7, -1 ], "overmap": "refctr_E4c_z-1_north" }, + { "point": [ 14, 7, -1 ], "overmap": "refctr_E5c_z-1_north" }, + { "point": [ 10, 8, -1 ], "overmap": "refctr_E1d_z-1_north" }, + { "point": [ 11, 8, -1 ], "overmap": "refctr_E2d_z-1_north" }, + { "point": [ 12, 8, -1 ], "overmap": "refctr_E3d_z-1_north" }, + { "point": [ 13, 8, -1 ], "overmap": "refctr_E4d_z-1_north" }, + { "point": [ 14, 8, -1 ], "overmap": "refctr_E5d_z-1_north" }, + { "point": [ 10, 9, -1 ], "overmap": "refctr_E1e_z-1_north" }, + { "point": [ 11, 9, -1 ], "overmap": "refctr_E2e_z-1_north" }, + { "point": [ 12, 9, -1 ], "overmap": "refctr_E3e_z-1_north" }, + { "point": [ 13, 9, -1 ], "overmap": "refctr_E4e_z-1_north" }, + { "point": [ 14, 9, -1 ], "overmap": "refctr_E5e_z-1_north" }, + { "point": [ 0, 10, -1 ], "overmap": "refctr_SW1a_z-1_north" }, + { "point": [ 1, 10, -1 ], "overmap": "refctr_SW2a_z-1_north" }, + { "point": [ 2, 10, -1 ], "overmap": "refctr_SW3a_z-1_north" }, + { "point": [ 3, 10, -1 ], "overmap": "refctr_SW4a_z-1_north" }, + { "point": [ 4, 10, -1 ], "overmap": "refctr_SW5a_z-1_north" }, + { "point": [ 0, 11, -1 ], "overmap": "refctr_SW1b_z-1_north" }, + { "point": [ 1, 11, -1 ], "overmap": "refctr_SW2b_z-1_north" }, + { "point": [ 2, 11, -1 ], "overmap": "refctr_SW3b_z-1_north" }, + { "point": [ 3, 11, -1 ], "overmap": "refctr_SW4b_z-1_north" }, + { "point": [ 4, 11, -1 ], "overmap": "refctr_SW5b_z-1_north" }, + { "point": [ 0, 12, -1 ], "overmap": "refctr_SW1c_z-1_north" }, + { "point": [ 1, 12, -1 ], "overmap": "refctr_SW2c_z-1_north" }, + { "point": [ 2, 12, -1 ], "overmap": "refctr_SW3c_z-1_north" }, + { "point": [ 3, 12, -1 ], "overmap": "refctr_SW4c_z-1_north" }, + { "point": [ 4, 12, -1 ], "overmap": "refctr_SW5c_z-1_north" }, + { "point": [ 0, 13, -1 ], "overmap": "refctr_SW1d_z-1_north" }, + { "point": [ 1, 13, -1 ], "overmap": "refctr_SW2d_z-1_north" }, + { "point": [ 2, 13, -1 ], "overmap": "refctr_SW3d_z-1_north" }, + { "point": [ 3, 13, -1 ], "overmap": "refctr_SW4d_z-1_north" }, + { "point": [ 4, 13, -1 ], "overmap": "refctr_SW5d_z-1_north" }, + { "point": [ 0, 14, -1 ], "overmap": "refctr_SW1e_z-1_north" }, + { "point": [ 1, 14, -1 ], "overmap": "refctr_SW2e_z-1_north" }, + { "point": [ 2, 14, -1 ], "overmap": "refctr_SW3e_z-1_north" }, + { "point": [ 3, 14, -1 ], "overmap": "refctr_SW4e_z-1_north" }, + { "point": [ 4, 14, -1 ], "overmap": "refctr_SW5e_z-1_north" }, + { "point": [ 5, 10, -1 ], "overmap": "refctr_S1a_z-1_north" }, + { "point": [ 6, 10, -1 ], "overmap": "refctr_S2a_z-1_north" }, + { "point": [ 7, 10, -1 ], "overmap": "refctr_S3a_z-1_north" }, + { "point": [ 8, 10, -1 ], "overmap": "refctr_S4a_z-1_north" }, + { "point": [ 9, 10, -1 ], "overmap": "refctr_S5a_z-1_north" }, + { "point": [ 5, 11, -1 ], "overmap": "refctr_S1b_z-1_north" }, + { "point": [ 6, 11, -1 ], "overmap": "refctr_S2b_z-1_north" }, + { "point": [ 7, 11, -1 ], "overmap": "refctr_S3b_z-1_north" }, + { "point": [ 8, 11, -1 ], "overmap": "refctr_S4b_z-1_north" }, + { "point": [ 9, 11, -1 ], "overmap": "refctr_S5b_z-1_north" }, + { "point": [ 5, 12, -1 ], "overmap": "refctr_S1c_z-1_north" }, + { "point": [ 6, 12, -1 ], "overmap": "refctr_S2c_z-1_north" }, + { "point": [ 7, 12, -1 ], "overmap": "refctr_S3c_z-1_north" }, + { "point": [ 8, 12, -1 ], "overmap": "refctr_S4c_z-1_north" }, + { "point": [ 9, 12, -1 ], "overmap": "refctr_S5c_z-1_north" }, + { "point": [ 5, 13, -1 ], "overmap": "refctr_S1d_z-1_north" }, + { "point": [ 6, 13, -1 ], "overmap": "refctr_S2d_z-1_north" }, + { "point": [ 7, 13, -1 ], "overmap": "refctr_S3d_z-1_north" }, + { "point": [ 8, 13, -1 ], "overmap": "refctr_S4d_z-1_north" }, + { "point": [ 9, 13, -1 ], "overmap": "refctr_S5d_z-1_north" }, + { "point": [ 5, 14, -1 ], "overmap": "refctr_S1e_z-1_north" }, + { "point": [ 6, 14, -1 ], "overmap": "refctr_S2e_z-1_north" }, + { "point": [ 7, 14, -1 ], "overmap": "refctr_S3e_z-1_north" }, + { "point": [ 8, 14, -1 ], "overmap": "refctr_S4e_z-1_north" }, + { "point": [ 9, 14, -1 ], "overmap": "refctr_S5e_z-1_north" }, + { "point": [ 10, 10, -1 ], "overmap": "refctr_SE1a_z-1_north" }, + { "point": [ 11, 10, -1 ], "overmap": "refctr_SE2a_z-1_north" }, + { "point": [ 12, 10, -1 ], "overmap": "refctr_SE3a_z-1_north" }, + { "point": [ 13, 10, -1 ], "overmap": "refctr_SE4a_z-1_north" }, + { "point": [ 14, 10, -1 ], "overmap": "refctr_SE5a_z-1_north" }, + { "point": [ 10, 11, -1 ], "overmap": "refctr_SE1b_z-1_north" }, + { "point": [ 11, 11, -1 ], "overmap": "refctr_SE2b_z-1_north" }, + { "point": [ 12, 11, -1 ], "overmap": "refctr_SE3b_z-1_north" }, + { "point": [ 13, 11, -1 ], "overmap": "refctr_SE4b_z-1_north" }, + { "point": [ 14, 11, -1 ], "overmap": "refctr_SE5b_z-1_north" }, + { "point": [ 10, 12, -1 ], "overmap": "refctr_SE1c_z-1_north" }, + { "point": [ 11, 12, -1 ], "overmap": "refctr_SE2c_z-1_north" }, + { "point": [ 12, 12, -1 ], "overmap": "refctr_SE3c_z-1_north" }, + { "point": [ 13, 12, -1 ], "overmap": "refctr_SE4c_z-1_north" }, + { "point": [ 14, 12, -1 ], "overmap": "refctr_SE5c_z-1_north" }, + { "point": [ 10, 13, -1 ], "overmap": "refctr_SE1d_z-1_north" }, + { "point": [ 11, 13, -1 ], "overmap": "refctr_SE2d_z-1_north" }, + { "point": [ 12, 13, -1 ], "overmap": "refctr_SE3d_z-1_north" }, + { "point": [ 13, 13, -1 ], "overmap": "refctr_SE4d_z-1_north" }, + { "point": [ 14, 13, -1 ], "overmap": "refctr_SE5d_z-1_north" }, + { "point": [ 10, 14, -1 ], "overmap": "refctr_SE1e_z-1_north" }, + { "point": [ 11, 14, -1 ], "overmap": "refctr_SE2e_z-1_north" }, + { "point": [ 12, 14, -1 ], "overmap": "refctr_SE3e_z-1_north" }, + { "point": [ 13, 14, -1 ], "overmap": "refctr_SE4e_z-1_north" }, + { "point": [ 14, 14, -1 ], "overmap": "refctr_SE5e_z-1_north" }, + { "point": [ 0, 0, -2 ], "overmap": "refctr_NW1a_z-2_north" }, + { "point": [ 1, 0, -2 ], "overmap": "refctr_NW2a_z-2_north" }, + { "point": [ 2, 0, -2 ], "overmap": "refctr_NW3a_z-2_north" }, + { "point": [ 3, 0, -2 ], "overmap": "refctr_NW4a_z-2_north" }, + { "point": [ 4, 0, -2 ], "overmap": "refctr_NW5a_z-2_north" }, + { "point": [ 0, 1, -2 ], "overmap": "refctr_NW1b_z-2_north" }, + { "point": [ 1, 1, -2 ], "overmap": "refctr_NW2b_z-2_north" }, + { "point": [ 2, 1, -2 ], "overmap": "refctr_NW3b_z-2_north" }, + { "point": [ 3, 1, -2 ], "overmap": "refctr_NW4b_z-2_north" }, + { "point": [ 4, 1, -2 ], "overmap": "refctr_NW5b_z-2_north" }, + { "point": [ 0, 2, -2 ], "overmap": "refctr_NW1c_z-2_north" }, + { "point": [ 1, 2, -2 ], "overmap": "refctr_NW2c_z-2_north" }, + { "point": [ 2, 2, -2 ], "overmap": "refctr_NW3c_z-2_north" }, + { "point": [ 3, 2, -2 ], "overmap": "refctr_NW4c_z-2_north" }, + { "point": [ 4, 2, -2 ], "overmap": "refctr_NW5c_z-2_north" }, + { "point": [ 0, 3, -2 ], "overmap": "refctr_NW1d_z-2_north" }, + { "point": [ 1, 3, -2 ], "overmap": "refctr_NW2d_z-2_north" }, + { "point": [ 2, 3, -2 ], "overmap": "refctr_NW3d_z-2_north" }, + { "point": [ 3, 3, -2 ], "overmap": "refctr_NW4d_z-2_north" }, + { "point": [ 4, 3, -2 ], "overmap": "refctr_NW5d_z-2_north" }, + { "point": [ 0, 4, -2 ], "overmap": "refctr_NW1e_z-2_north" }, + { "point": [ 1, 4, -2 ], "overmap": "refctr_NW2e_z-2_north" }, + { "point": [ 2, 4, -2 ], "overmap": "refctr_NW3e_z-2_north" }, + { "point": [ 3, 4, -2 ], "overmap": "refctr_NW4e_z-2_north" }, + { "point": [ 4, 4, -2 ], "overmap": "refctr_NW5e_z-2_north" }, + { "point": [ 5, 0, -2 ], "overmap": "refctr_N1a_z-2_north" }, + { "point": [ 6, 0, -2 ], "overmap": "refctr_N2a_z-2_north" }, + { "point": [ 7, 0, -2 ], "overmap": "refctr_N3a_z-2_north" }, + { "point": [ 8, 0, -2 ], "overmap": "refctr_N4a_z-2_north" }, + { "point": [ 9, 0, -2 ], "overmap": "refctr_N5a_z-2_north" }, + { "point": [ 5, 1, -2 ], "overmap": "refctr_N1b_z-2_north" }, + { "point": [ 6, 1, -2 ], "overmap": "refctr_N2b_z-2_north" }, + { "point": [ 7, 1, -2 ], "overmap": "refctr_N3b_z-2_north" }, + { "point": [ 8, 1, -2 ], "overmap": "refctr_N4b_z-2_north" }, + { "point": [ 9, 1, -2 ], "overmap": "refctr_N5b_z-2_north" }, + { "point": [ 5, 2, -2 ], "overmap": "refctr_N1c_z-2_north" }, + { "point": [ 6, 2, -2 ], "overmap": "refctr_N2c_z-2_north" }, + { "point": [ 7, 2, -2 ], "overmap": "refctr_N3c_z-2_north" }, + { "point": [ 8, 2, -2 ], "overmap": "refctr_N4c_z-2_north" }, + { "point": [ 9, 2, -2 ], "overmap": "refctr_N5c_z-2_north" }, + { "point": [ 5, 3, -2 ], "overmap": "refctr_N1d_z-2_north" }, + { "point": [ 6, 3, -2 ], "overmap": "refctr_N2d_z-2_north" }, + { "point": [ 7, 3, -2 ], "overmap": "refctr_N3d_z-2_north" }, + { "point": [ 8, 3, -2 ], "overmap": "refctr_N4d_z-2_north" }, + { "point": [ 9, 3, -2 ], "overmap": "refctr_N5d_z-2_north" }, + { "point": [ 5, 4, -2 ], "overmap": "refctr_N1e_z-2_north" }, + { "point": [ 6, 4, -2 ], "overmap": "refctr_N2e_z-2_north" }, + { "point": [ 7, 4, -2 ], "overmap": "refctr_N3e_z-2_north" }, + { "point": [ 8, 4, -2 ], "overmap": "refctr_N4e_z-2_north" }, + { "point": [ 9, 4, -2 ], "overmap": "refctr_N5e_z-2_north" }, + { "point": [ 10, 0, -2 ], "overmap": "refctr_NE1a_z-2_north" }, + { "point": [ 11, 0, -2 ], "overmap": "refctr_NE2a_z-2_north" }, + { "point": [ 12, 0, -2 ], "overmap": "refctr_NE3a_z-2_north" }, + { "point": [ 13, 0, -2 ], "overmap": "refctr_NE4a_z-2_north" }, + { "point": [ 14, 0, -2 ], "overmap": "refctr_NE5a_z-2_north" }, + { "point": [ 10, 1, -2 ], "overmap": "refctr_NE1b_z-2_north" }, + { "point": [ 11, 1, -2 ], "overmap": "refctr_NE2b_z-2_north" }, + { "point": [ 12, 1, -2 ], "overmap": "refctr_NE3b_z-2_north" }, + { "point": [ 13, 1, -2 ], "overmap": "refctr_NE4b_z-2_north" }, + { "point": [ 14, 1, -2 ], "overmap": "refctr_NE5b_z-2_north" }, + { "point": [ 10, 2, -2 ], "overmap": "refctr_NE1c_z-2_north" }, + { "point": [ 11, 2, -2 ], "overmap": "refctr_NE2c_z-2_north" }, + { "point": [ 12, 2, -2 ], "overmap": "refctr_NE3c_z-2_north" }, + { "point": [ 13, 2, -2 ], "overmap": "refctr_NE4c_z-2_north" }, + { "point": [ 14, 2, -2 ], "overmap": "refctr_NE5c_z-2_north" }, + { "point": [ 10, 3, -2 ], "overmap": "refctr_NE1d_z-2_north" }, + { "point": [ 11, 3, -2 ], "overmap": "refctr_NE2d_z-2_north" }, + { "point": [ 12, 3, -2 ], "overmap": "refctr_NE3d_z-2_north" }, + { "point": [ 13, 3, -2 ], "overmap": "refctr_NE4d_z-2_north" }, + { "point": [ 14, 3, -2 ], "overmap": "refctr_NE5d_z-2_north" }, + { "point": [ 10, 4, -2 ], "overmap": "refctr_NE1e_z-2_north" }, + { "point": [ 11, 4, -2 ], "overmap": "refctr_NE2e_z-2_north" }, + { "point": [ 12, 4, -2 ], "overmap": "refctr_NE3e_z-2_north" }, + { "point": [ 13, 4, -2 ], "overmap": "refctr_NE4e_z-2_north" }, + { "point": [ 14, 4, -2 ], "overmap": "refctr_NE5e_z-2_north" }, + { "point": [ 0, 5, -2 ], "overmap": "refctr_W1a_z-2_north" }, + { "point": [ 1, 5, -2 ], "overmap": "refctr_W2a_z-2_north" }, + { "point": [ 2, 5, -2 ], "overmap": "refctr_W3a_z-2_north" }, + { "point": [ 3, 5, -2 ], "overmap": "refctr_W4a_z-2_north" }, + { "point": [ 4, 5, -2 ], "overmap": "refctr_W5a_z-2_north" }, + { "point": [ 0, 6, -2 ], "overmap": "refctr_W1b_z-2_north" }, + { "point": [ 1, 6, -2 ], "overmap": "refctr_W2b_z-2_north" }, + { "point": [ 2, 6, -2 ], "overmap": "refctr_W3b_z-2_north" }, + { "point": [ 3, 6, -2 ], "overmap": "refctr_W4b_z-2_north" }, + { "point": [ 4, 6, -2 ], "overmap": "refctr_W5b_z-2_north" }, + { "point": [ 0, 7, -2 ], "overmap": "refctr_W1c_z-2_north" }, + { "point": [ 1, 7, -2 ], "overmap": "refctr_W2c_z-2_north" }, + { "point": [ 2, 7, -2 ], "overmap": "refctr_W3c_z-2_north" }, + { "point": [ 3, 7, -2 ], "overmap": "refctr_W4c_z-2_north" }, + { "point": [ 4, 7, -2 ], "overmap": "refctr_W5c_z-2_north" }, + { "point": [ 0, 8, -2 ], "overmap": "refctr_W1d_z-2_north" }, + { "point": [ 1, 8, -2 ], "overmap": "refctr_W2d_z-2_north" }, + { "point": [ 2, 8, -2 ], "overmap": "refctr_W3d_z-2_north" }, + { "point": [ 3, 8, -2 ], "overmap": "refctr_W4d_z-2_north" }, + { "point": [ 4, 8, -2 ], "overmap": "refctr_W5d_z-2_north" }, + { "point": [ 0, 9, -2 ], "overmap": "refctr_W1e_z-2_north" }, + { "point": [ 1, 9, -2 ], "overmap": "refctr_W2e_z-2_north" }, + { "point": [ 2, 9, -2 ], "overmap": "refctr_W3e_z-2_north" }, + { "point": [ 3, 9, -2 ], "overmap": "refctr_W4e_z-2_north" }, + { "point": [ 4, 9, -2 ], "overmap": "refctr_W5e_z-2_north" }, + { "point": [ 5, 5, -2 ], "overmap": "evac_center_1_z-2_north" }, + { "point": [ 6, 5, -2 ], "overmap": "evac_center_2_z-2_north" }, + { "point": [ 7, 5, -2 ], "overmap": "evac_center_3_z-2_north" }, + { "point": [ 8, 5, -2 ], "overmap": "evac_center_4_z-2_north" }, + { "point": [ 9, 5, -2 ], "overmap": "evac_center_5_z-2_north" }, + { "point": [ 5, 6, -2 ], "overmap": "evac_center_6_z-2_north" }, + { "point": [ 6, 6, -2 ], "overmap": "evac_center_7_z-2_north" }, + { "point": [ 7, 6, -2 ], "overmap": "evac_center_8_z-2_north" }, + { "point": [ 8, 6, -2 ], "overmap": "evac_center_9_z-2_north" }, + { "point": [ 9, 6, -2 ], "overmap": "evac_center_10_z-2_north" }, + { "point": [ 5, 7, -2 ], "overmap": "evac_center_11_z-2_north" }, + { "point": [ 6, 7, -2 ], "overmap": "evac_center_12_z-2_north" }, + { "point": [ 7, 7, -2 ], "overmap": "evac_center_13_z-2_north" }, + { "point": [ 8, 7, -2 ], "overmap": "evac_center_14_z-2_north" }, + { "point": [ 9, 7, -2 ], "overmap": "evac_center_15_z-2_north" }, + { "point": [ 5, 8, -2 ], "overmap": "evac_center_16_z-2_north" }, + { "point": [ 6, 8, -2 ], "overmap": "evac_center_17_z-2_north" }, + { "point": [ 7, 8, -2 ], "overmap": "evac_center_18_z-2_north" }, + { "point": [ 8, 8, -2 ], "overmap": "evac_center_19_z-2_north" }, + { "point": [ 9, 8, -2 ], "overmap": "evac_center_20_z-2_north" }, + { "point": [ 5, 9, -2 ], "overmap": "evac_center_21_z-2_north" }, + { "point": [ 6, 9, -2 ], "overmap": "evac_center_22_z-2_north" }, + { "point": [ 7, 9, -2 ], "overmap": "evac_center_23_z-2_north" }, + { "point": [ 8, 9, -2 ], "overmap": "evac_center_24_z-2_north" }, + { "point": [ 9, 9, -2 ], "overmap": "evac_center_25_z-2_north" }, + { "point": [ 10, 5, -2 ], "overmap": "refctr_E1a_z-2_north" }, + { "point": [ 11, 5, -2 ], "overmap": "refctr_E2a_z-2_north" }, + { "point": [ 12, 5, -2 ], "overmap": "refctr_E3a_z-2_north" }, + { "point": [ 13, 5, -2 ], "overmap": "refctr_E4a_z-2_north" }, + { "point": [ 14, 5, -2 ], "overmap": "refctr_E5a_z-2_north" }, + { "point": [ 10, 6, -2 ], "overmap": "refctr_E1b_z-2_north" }, + { "point": [ 11, 6, -2 ], "overmap": "refctr_E2b_z-2_north" }, + { "point": [ 12, 6, -2 ], "overmap": "refctr_E3b_z-2_north" }, + { "point": [ 13, 6, -2 ], "overmap": "refctr_E4b_z-2_north" }, + { "point": [ 14, 6, -2 ], "overmap": "refctr_E5b_z-2_north" }, + { "point": [ 10, 7, -2 ], "overmap": "refctr_E1c_z-2_north" }, + { "point": [ 11, 7, -2 ], "overmap": "refctr_E2c_z-2_north" }, + { "point": [ 12, 7, -2 ], "overmap": "refctr_E3c_z-2_north" }, + { "point": [ 13, 7, -2 ], "overmap": "refctr_E4c_z-2_north" }, + { "point": [ 14, 7, -2 ], "overmap": "refctr_E5c_z-2_north" }, + { "point": [ 10, 8, -2 ], "overmap": "refctr_E1d_z-2_north" }, + { "point": [ 11, 8, -2 ], "overmap": "refctr_E2d_z-2_north" }, + { "point": [ 12, 8, -2 ], "overmap": "refctr_E3d_z-2_north" }, + { "point": [ 13, 8, -2 ], "overmap": "refctr_E4d_z-2_north" }, + { "point": [ 14, 8, -2 ], "overmap": "refctr_E5d_z-2_north" }, + { "point": [ 10, 9, -2 ], "overmap": "refctr_E1e_z-2_north" }, + { "point": [ 11, 9, -2 ], "overmap": "refctr_E2e_z-2_north" }, + { "point": [ 12, 9, -2 ], "overmap": "refctr_E3e_z-2_north" }, + { "point": [ 13, 9, -2 ], "overmap": "refctr_E4e_z-2_north" }, + { "point": [ 14, 9, -2 ], "overmap": "refctr_E5e_z-2_north" }, + { "point": [ 0, 10, -2 ], "overmap": "refctr_SW1a_z-2_north" }, + { "point": [ 1, 10, -2 ], "overmap": "refctr_SW2a_z-2_north" }, + { "point": [ 2, 10, -2 ], "overmap": "refctr_SW3a_z-2_north" }, + { "point": [ 3, 10, -2 ], "overmap": "refctr_SW4a_z-2_north" }, + { "point": [ 4, 10, -2 ], "overmap": "refctr_SW5a_z-2_north" }, + { "point": [ 0, 11, -2 ], "overmap": "refctr_SW1b_z-2_north" }, + { "point": [ 1, 11, -2 ], "overmap": "refctr_SW2b_z-2_north" }, + { "point": [ 2, 11, -2 ], "overmap": "refctr_SW3b_z-2_north" }, + { "point": [ 3, 11, -2 ], "overmap": "refctr_SW4b_z-2_north" }, + { "point": [ 4, 11, -2 ], "overmap": "refctr_SW5b_z-2_north" }, + { "point": [ 0, 12, -2 ], "overmap": "refctr_SW1c_z-2_north" }, + { "point": [ 1, 12, -2 ], "overmap": "refctr_SW2c_z-2_north" }, + { "point": [ 2, 12, -2 ], "overmap": "refctr_SW3c_z-2_north" }, + { "point": [ 3, 12, -2 ], "overmap": "refctr_SW4c_z-2_north" }, + { "point": [ 4, 12, -2 ], "overmap": "refctr_SW5c_z-2_north" }, + { "point": [ 0, 13, -2 ], "overmap": "refctr_SW1d_z-2_north" }, + { "point": [ 1, 13, -2 ], "overmap": "refctr_SW2d_z-2_north" }, + { "point": [ 2, 13, -2 ], "overmap": "refctr_SW3d_z-2_north" }, + { "point": [ 3, 13, -2 ], "overmap": "refctr_SW4d_z-2_north" }, + { "point": [ 4, 13, -2 ], "overmap": "refctr_SW5d_z-2_north" }, + { "point": [ 0, 14, -2 ], "overmap": "refctr_SW1e_z-2_north" }, + { "point": [ 1, 14, -2 ], "overmap": "refctr_SW2e_z-2_north" }, + { "point": [ 2, 14, -2 ], "overmap": "refctr_SW3e_z-2_north" }, + { "point": [ 3, 14, -2 ], "overmap": "refctr_SW4e_z-2_north" }, + { "point": [ 4, 14, -2 ], "overmap": "refctr_SW5e_z-2_north" }, + { "point": [ 5, 10, -2 ], "overmap": "refctr_S1a_z-2_north" }, + { "point": [ 6, 10, -2 ], "overmap": "refctr_S2a_z-2_north" }, + { "point": [ 7, 10, -2 ], "overmap": "refctr_S3a_z-2_north" }, + { "point": [ 8, 10, -2 ], "overmap": "refctr_S4a_z-2_north" }, + { "point": [ 9, 10, -2 ], "overmap": "refctr_S5a_z-2_north" }, + { "point": [ 5, 11, -2 ], "overmap": "refctr_S1b_z-2_north" }, + { "point": [ 6, 11, -2 ], "overmap": "refctr_S2b_z-2_north" }, + { "point": [ 7, 11, -2 ], "overmap": "refctr_S3b_z-2_north" }, + { "point": [ 8, 11, -2 ], "overmap": "refctr_S4b_z-2_north" }, + { "point": [ 9, 11, -2 ], "overmap": "refctr_S5b_z-2_north" }, + { "point": [ 5, 12, -2 ], "overmap": "refctr_S1c_z-2_north" }, + { "point": [ 6, 12, -2 ], "overmap": "refctr_S2c_z-2_north" }, + { "point": [ 7, 12, -2 ], "overmap": "refctr_S3c_z-2_north" }, + { "point": [ 8, 12, -2 ], "overmap": "refctr_S4c_z-2_north" }, + { "point": [ 9, 12, -2 ], "overmap": "refctr_S5c_z-2_north" }, + { "point": [ 5, 13, -2 ], "overmap": "refctr_S1d_z-2_north" }, + { "point": [ 6, 13, -2 ], "overmap": "refctr_S2d_z-2_north" }, + { "point": [ 7, 13, -2 ], "overmap": "refctr_S3d_z-2_north" }, + { "point": [ 8, 13, -2 ], "overmap": "refctr_S4d_z-2_north" }, + { "point": [ 9, 13, -2 ], "overmap": "refctr_S5d_z-2_north" }, + { "point": [ 5, 14, -2 ], "overmap": "refctr_S1e_z-2_north" }, + { "point": [ 6, 14, -2 ], "overmap": "refctr_S2e_z-2_north" }, + { "point": [ 7, 14, -2 ], "overmap": "refctr_S3e_z-2_north" }, + { "point": [ 8, 14, -2 ], "overmap": "refctr_S4e_z-2_north" }, + { "point": [ 9, 14, -2 ], "overmap": "refctr_S5e_z-2_north" }, + { "point": [ 10, 10, -2 ], "overmap": "refctr_SE1a_z-2_north" }, + { "point": [ 11, 10, -2 ], "overmap": "refctr_SE2a_z-2_north" }, + { "point": [ 12, 10, -2 ], "overmap": "refctr_SE3a_z-2_north" }, + { "point": [ 13, 10, -2 ], "overmap": "refctr_SE4a_z-2_north" }, + { "point": [ 14, 10, -2 ], "overmap": "refctr_SE5a_z-2_north" }, + { "point": [ 10, 11, -2 ], "overmap": "refctr_SE1b_z-2_north" }, + { "point": [ 11, 11, -2 ], "overmap": "refctr_SE2b_z-2_north" }, + { "point": [ 12, 11, -2 ], "overmap": "refctr_SE3b_z-2_north" }, + { "point": [ 13, 11, -2 ], "overmap": "refctr_SE4b_z-2_north" }, + { "point": [ 14, 11, -2 ], "overmap": "refctr_SE5b_z-2_north" }, + { "point": [ 10, 12, -2 ], "overmap": "refctr_SE1c_z-2_north" }, + { "point": [ 11, 12, -2 ], "overmap": "refctr_SE2c_z-2_north" }, + { "point": [ 12, 12, -2 ], "overmap": "refctr_SE3c_z-2_north" }, + { "point": [ 13, 12, -2 ], "overmap": "refctr_SE4c_z-2_north" }, + { "point": [ 14, 12, -2 ], "overmap": "refctr_SE5c_z-2_north" }, + { "point": [ 10, 13, -2 ], "overmap": "refctr_SE1d_z-2_north" }, + { "point": [ 11, 13, -2 ], "overmap": "refctr_SE2d_z-2_north" }, + { "point": [ 12, 13, -2 ], "overmap": "refctr_SE3d_z-2_north" }, + { "point": [ 13, 13, -2 ], "overmap": "refctr_SE4d_z-2_north" }, + { "point": [ 14, 13, -2 ], "overmap": "refctr_SE5d_z-2_north" }, + { "point": [ 10, 14, -2 ], "overmap": "refctr_SE1e_z-2_north" }, + { "point": [ 11, 14, -2 ], "overmap": "refctr_SE2e_z-2_north" }, + { "point": [ 12, 14, -2 ], "overmap": "refctr_SE3e_z-2_north" }, + { "point": [ 13, 14, -2 ], "overmap": "refctr_SE4e_z-2_north" }, + { "point": [ 14, 14, -2 ], "overmap": "refctr_SE5e_z-2_north" }, + { "point": [ 0, 0, -3 ], "overmap": "refctr_NW1a_z-3_north" }, + { "point": [ 1, 0, -3 ], "overmap": "refctr_NW2a_z-3_north" }, + { "point": [ 2, 0, -3 ], "overmap": "refctr_NW3a_z-3_north" }, + { "point": [ 3, 0, -3 ], "overmap": "refctr_NW4a_z-3_north" }, + { "point": [ 4, 0, -3 ], "overmap": "refctr_NW5a_z-3_north" }, + { "point": [ 0, 1, -3 ], "overmap": "refctr_NW1b_z-3_north" }, + { "point": [ 1, 1, -3 ], "overmap": "refctr_NW2b_z-3_north" }, + { "point": [ 2, 1, -3 ], "overmap": "refctr_NW3b_z-3_north" }, + { "point": [ 3, 1, -3 ], "overmap": "refctr_NW4b_z-3_north" }, + { "point": [ 4, 1, -3 ], "overmap": "refctr_NW5b_z-3_north" }, + { "point": [ 0, 2, -3 ], "overmap": "refctr_NW1c_z-3_north" }, + { "point": [ 1, 2, -3 ], "overmap": "refctr_NW2c_z-3_north" }, + { "point": [ 2, 2, -3 ], "overmap": "refctr_NW3c_z-3_north" }, + { "point": [ 3, 2, -3 ], "overmap": "refctr_NW4c_z-3_north" }, + { "point": [ 4, 2, -3 ], "overmap": "refctr_NW5c_z-3_north" }, + { "point": [ 0, 3, -3 ], "overmap": "refctr_NW1d_z-3_north" }, + { "point": [ 1, 3, -3 ], "overmap": "refctr_NW2d_z-3_north" }, + { "point": [ 2, 3, -3 ], "overmap": "refctr_NW3d_z-3_north" }, + { "point": [ 3, 3, -3 ], "overmap": "refctr_NW4d_z-3_north" }, + { "point": [ 4, 3, -3 ], "overmap": "refctr_NW5d_z-3_north" }, + { "point": [ 0, 4, -3 ], "overmap": "refctr_NW1e_z-3_north" }, + { "point": [ 1, 4, -3 ], "overmap": "refctr_NW2e_z-3_north" }, + { "point": [ 2, 4, -3 ], "overmap": "refctr_NW3e_z-3_north" }, + { "point": [ 3, 4, -3 ], "overmap": "refctr_NW4e_z-3_north" }, + { "point": [ 4, 4, -3 ], "overmap": "refctr_NW5e_z-3_north" }, + { "point": [ 5, 0, -3 ], "overmap": "refctr_N1a_z-3_north" }, + { "point": [ 6, 0, -3 ], "overmap": "refctr_N2a_z-3_north" }, + { "point": [ 7, 0, -3 ], "overmap": "refctr_N3a_z-3_north" }, + { "point": [ 8, 0, -3 ], "overmap": "refctr_N4a_z-3_north" }, + { "point": [ 9, 0, -3 ], "overmap": "refctr_N5a_z-3_north" }, + { "point": [ 5, 1, -3 ], "overmap": "refctr_N1b_z-3_north" }, + { "point": [ 6, 1, -3 ], "overmap": "refctr_N2b_z-3_north" }, + { "point": [ 7, 1, -3 ], "overmap": "refctr_N3b_z-3_north" }, + { "point": [ 8, 1, -3 ], "overmap": "refctr_N4b_z-3_north" }, + { "point": [ 9, 1, -3 ], "overmap": "refctr_N5b_z-3_north" }, + { "point": [ 5, 2, -3 ], "overmap": "refctr_N1c_z-3_north" }, + { "point": [ 6, 2, -3 ], "overmap": "refctr_N2c_z-3_north" }, + { "point": [ 7, 2, -3 ], "overmap": "refctr_N3c_z-3_north" }, + { "point": [ 8, 2, -3 ], "overmap": "refctr_N4c_z-3_north" }, + { "point": [ 9, 2, -3 ], "overmap": "refctr_N5c_z-3_north" }, + { "point": [ 5, 3, -3 ], "overmap": "refctr_N1d_z-3_north" }, + { "point": [ 6, 3, -3 ], "overmap": "refctr_N2d_z-3_north" }, + { "point": [ 7, 3, -3 ], "overmap": "refctr_N3d_z-3_north" }, + { "point": [ 8, 3, -3 ], "overmap": "refctr_N4d_z-3_north" }, + { "point": [ 9, 3, -3 ], "overmap": "refctr_N5d_z-3_north" }, + { "point": [ 5, 4, -3 ], "overmap": "refctr_N1e_z-3_north" }, + { "point": [ 6, 4, -3 ], "overmap": "refctr_N2e_z-3_north" }, + { "point": [ 7, 4, -3 ], "overmap": "refctr_N3e_z-3_north" }, + { "point": [ 8, 4, -3 ], "overmap": "refctr_N4e_z-3_north" }, + { "point": [ 9, 4, -3 ], "overmap": "refctr_N5e_z-3_north" }, + { "point": [ 10, 0, -3 ], "overmap": "refctr_NE1a_z-3_north" }, + { "point": [ 11, 0, -3 ], "overmap": "refctr_NE2a_z-3_north" }, + { "point": [ 12, 0, -3 ], "overmap": "refctr_NE3a_z-3_north" }, + { "point": [ 13, 0, -3 ], "overmap": "refctr_NE4a_z-3_north" }, + { "point": [ 14, 0, -3 ], "overmap": "refctr_NE5a_z-3_north" }, + { "point": [ 10, 1, -3 ], "overmap": "refctr_NE1b_z-3_north" }, + { "point": [ 11, 1, -3 ], "overmap": "refctr_NE2b_z-3_north" }, + { "point": [ 12, 1, -3 ], "overmap": "refctr_NE3b_z-3_north" }, + { "point": [ 13, 1, -3 ], "overmap": "refctr_NE4b_z-3_north" }, + { "point": [ 14, 1, -3 ], "overmap": "refctr_NE5b_z-3_north" }, + { "point": [ 10, 2, -3 ], "overmap": "refctr_NE1c_z-3_north" }, + { "point": [ 11, 2, -3 ], "overmap": "refctr_NE2c_z-3_north" }, + { "point": [ 12, 2, -3 ], "overmap": "refctr_NE3c_z-3_north" }, + { "point": [ 13, 2, -3 ], "overmap": "refctr_NE4c_z-3_north" }, + { "point": [ 14, 2, -3 ], "overmap": "refctr_NE5c_z-3_north" }, + { "point": [ 10, 3, -3 ], "overmap": "refctr_NE1d_z-3_north" }, + { "point": [ 11, 3, -3 ], "overmap": "refctr_NE2d_z-3_north" }, + { "point": [ 12, 3, -3 ], "overmap": "refctr_NE3d_z-3_north" }, + { "point": [ 13, 3, -3 ], "overmap": "refctr_NE4d_z-3_north" }, + { "point": [ 14, 3, -3 ], "overmap": "refctr_NE5d_z-3_north" }, + { "point": [ 10, 4, -3 ], "overmap": "refctr_NE1e_z-3_north" }, + { "point": [ 11, 4, -3 ], "overmap": "refctr_NE2e_z-3_north" }, + { "point": [ 12, 4, -3 ], "overmap": "refctr_NE3e_z-3_north" }, + { "point": [ 13, 4, -3 ], "overmap": "refctr_NE4e_z-3_north" }, + { "point": [ 14, 4, -3 ], "overmap": "refctr_NE5e_z-3_north" }, + { "point": [ 0, 5, -3 ], "overmap": "refctr_W1a_z-3_north" }, + { "point": [ 1, 5, -3 ], "overmap": "refctr_W2a_z-3_north" }, + { "point": [ 2, 5, -3 ], "overmap": "refctr_W3a_z-3_north" }, + { "point": [ 3, 5, -3 ], "overmap": "refctr_W4a_z-3_north" }, + { "point": [ 4, 5, -3 ], "overmap": "refctr_W5a_z-3_north" }, + { "point": [ 0, 6, -3 ], "overmap": "refctr_W1b_z-3_north" }, + { "point": [ 1, 6, -3 ], "overmap": "refctr_W2b_z-3_north" }, + { "point": [ 2, 6, -3 ], "overmap": "refctr_W3b_z-3_north" }, + { "point": [ 3, 6, -3 ], "overmap": "refctr_W4b_z-3_north" }, + { "point": [ 4, 6, -3 ], "overmap": "refctr_W5b_z-3_north" }, + { "point": [ 0, 7, -3 ], "overmap": "refctr_W1c_z-3_north" }, + { "point": [ 1, 7, -3 ], "overmap": "refctr_W2c_z-3_north" }, + { "point": [ 2, 7, -3 ], "overmap": "refctr_W3c_z-3_north" }, + { "point": [ 3, 7, -3 ], "overmap": "refctr_W4c_z-3_north" }, + { "point": [ 4, 7, -3 ], "overmap": "refctr_W5c_z-3_north" }, + { "point": [ 0, 8, -3 ], "overmap": "refctr_W1d_z-3_north" }, + { "point": [ 1, 8, -3 ], "overmap": "refctr_W2d_z-3_north" }, + { "point": [ 2, 8, -3 ], "overmap": "refctr_W3d_z-3_north" }, + { "point": [ 3, 8, -3 ], "overmap": "refctr_W4d_z-3_north" }, + { "point": [ 4, 8, -3 ], "overmap": "refctr_W5d_z-3_north" }, + { "point": [ 0, 9, -3 ], "overmap": "refctr_W1e_z-3_north" }, + { "point": [ 1, 9, -3 ], "overmap": "refctr_W2e_z-3_north" }, + { "point": [ 2, 9, -3 ], "overmap": "refctr_W3e_z-3_north" }, + { "point": [ 3, 9, -3 ], "overmap": "refctr_W4e_z-3_north" }, + { "point": [ 4, 9, -3 ], "overmap": "refctr_W5e_z-3_north" }, + { "point": [ 5, 5, -3 ], "overmap": "evac_center_1_z-3_north" }, + { "point": [ 6, 5, -3 ], "overmap": "evac_center_2_z-3_north" }, + { "point": [ 7, 5, -3 ], "overmap": "evac_center_3_z-3_north" }, + { "point": [ 8, 5, -3 ], "overmap": "evac_center_4_z-3_north" }, + { "point": [ 9, 5, -3 ], "overmap": "evac_center_5_z-3_north" }, + { "point": [ 5, 6, -3 ], "overmap": "evac_center_6_z-3_north" }, + { "point": [ 6, 6, -3 ], "overmap": "evac_center_7_z-3_north" }, + { "point": [ 7, 6, -3 ], "overmap": "evac_center_8_z-3_north" }, + { "point": [ 8, 6, -3 ], "overmap": "evac_center_9_z-3_north" }, + { "point": [ 9, 6, -3 ], "overmap": "evac_center_10_z-3_north" }, + { "point": [ 5, 7, -3 ], "overmap": "evac_center_11_z-3_north" }, + { "point": [ 6, 7, -3 ], "overmap": "evac_center_12_z-3_north" }, + { "point": [ 7, 7, -3 ], "overmap": "evac_center_13_z-3_north" }, + { "point": [ 8, 7, -3 ], "overmap": "evac_center_14_z-3_north" }, + { "point": [ 9, 7, -3 ], "overmap": "evac_center_15_z-3_north" }, + { "point": [ 5, 8, -3 ], "overmap": "evac_center_16_z-3_north" }, + { "point": [ 6, 8, -3 ], "overmap": "evac_center_17_z-3_north" }, + { "point": [ 7, 8, -3 ], "overmap": "evac_center_18_z-3_north" }, + { "point": [ 8, 8, -3 ], "overmap": "evac_center_19_z-3_north" }, + { "point": [ 9, 8, -3 ], "overmap": "evac_center_20_z-3_north" }, + { "point": [ 5, 9, -3 ], "overmap": "evac_center_21_z-3_north" }, + { "point": [ 6, 9, -3 ], "overmap": "evac_center_22_z-3_north" }, + { "point": [ 7, 9, -3 ], "overmap": "evac_center_23_z-3_north" }, + { "point": [ 8, 9, -3 ], "overmap": "evac_center_24_z-3_north" }, + { "point": [ 9, 9, -3 ], "overmap": "evac_center_25_z-3_north" }, + { "point": [ 10, 5, -3 ], "overmap": "refctr_E1a_z-3_north" }, + { "point": [ 11, 5, -3 ], "overmap": "refctr_E2a_z-3_north" }, + { "point": [ 12, 5, -3 ], "overmap": "refctr_E3a_z-3_north" }, + { "point": [ 13, 5, -3 ], "overmap": "refctr_E4a_z-3_north" }, + { "point": [ 14, 5, -3 ], "overmap": "refctr_E5a_z-3_north" }, + { "point": [ 10, 6, -3 ], "overmap": "refctr_E1b_z-3_north" }, + { "point": [ 11, 6, -3 ], "overmap": "refctr_E2b_z-3_north" }, + { "point": [ 12, 6, -3 ], "overmap": "refctr_E3b_z-3_north" }, + { "point": [ 13, 6, -3 ], "overmap": "refctr_E4b_z-3_north" }, + { "point": [ 14, 6, -3 ], "overmap": "refctr_E5b_z-3_north" }, + { "point": [ 10, 7, -3 ], "overmap": "refctr_E1c_z-3_north" }, + { "point": [ 11, 7, -3 ], "overmap": "refctr_E2c_z-3_north" }, + { "point": [ 12, 7, -3 ], "overmap": "refctr_E3c_z-3_north" }, + { "point": [ 13, 7, -3 ], "overmap": "refctr_E4c_z-3_north" }, + { "point": [ 14, 7, -3 ], "overmap": "refctr_E5c_z-3_north" }, + { "point": [ 10, 8, -3 ], "overmap": "refctr_E1d_z-3_north" }, + { "point": [ 11, 8, -3 ], "overmap": "refctr_E2d_z-3_north" }, + { "point": [ 12, 8, -3 ], "overmap": "refctr_E3d_z-3_north" }, + { "point": [ 13, 8, -3 ], "overmap": "refctr_E4d_z-3_north" }, + { "point": [ 14, 8, -3 ], "overmap": "refctr_E5d_z-3_north" }, + { "point": [ 10, 9, -3 ], "overmap": "refctr_E1e_z-3_north" }, + { "point": [ 11, 9, -3 ], "overmap": "refctr_E2e_z-3_north" }, + { "point": [ 12, 9, -3 ], "overmap": "refctr_E3e_z-3_north" }, + { "point": [ 13, 9, -3 ], "overmap": "refctr_E4e_z-3_north" }, + { "point": [ 14, 9, -3 ], "overmap": "refctr_E5e_z-3_north" }, + { "point": [ 0, 10, -3 ], "overmap": "refctr_SW1a_z-3_north" }, + { "point": [ 1, 10, -3 ], "overmap": "refctr_SW2a_z-3_north" }, + { "point": [ 2, 10, -3 ], "overmap": "refctr_SW3a_z-3_north" }, + { "point": [ 3, 10, -3 ], "overmap": "refctr_SW4a_z-3_north" }, + { "point": [ 4, 10, -3 ], "overmap": "refctr_SW5a_z-3_north" }, + { "point": [ 0, 11, -3 ], "overmap": "refctr_SW1b_z-3_north" }, + { "point": [ 1, 11, -3 ], "overmap": "refctr_SW2b_z-3_north" }, + { "point": [ 2, 11, -3 ], "overmap": "refctr_SW3b_z-3_north" }, + { "point": [ 3, 11, -3 ], "overmap": "refctr_SW4b_z-3_north" }, + { "point": [ 4, 11, -3 ], "overmap": "refctr_SW5b_z-3_north" }, + { "point": [ 0, 12, -3 ], "overmap": "refctr_SW1c_z-3_north" }, + { "point": [ 1, 12, -3 ], "overmap": "refctr_SW2c_z-3_north" }, + { "point": [ 2, 12, -3 ], "overmap": "refctr_SW3c_z-3_north" }, + { "point": [ 3, 12, -3 ], "overmap": "refctr_SW4c_z-3_north" }, + { "point": [ 4, 12, -3 ], "overmap": "refctr_SW5c_z-3_north" }, + { "point": [ 0, 13, -3 ], "overmap": "refctr_SW1d_z-3_north" }, + { "point": [ 1, 13, -3 ], "overmap": "refctr_SW2d_z-3_north" }, + { "point": [ 2, 13, -3 ], "overmap": "refctr_SW3d_z-3_north" }, + { "point": [ 3, 13, -3 ], "overmap": "refctr_SW4d_z-3_north" }, + { "point": [ 4, 13, -3 ], "overmap": "refctr_SW5d_z-3_north" }, + { "point": [ 0, 14, -3 ], "overmap": "refctr_SW1e_z-3_north" }, + { "point": [ 1, 14, -3 ], "overmap": "refctr_SW2e_z-3_north" }, + { "point": [ 2, 14, -3 ], "overmap": "refctr_SW3e_z-3_north" }, + { "point": [ 3, 14, -3 ], "overmap": "refctr_SW4e_z-3_north" }, + { "point": [ 4, 14, -3 ], "overmap": "refctr_SW5e_z-3_north" }, + { "point": [ 5, 10, -3 ], "overmap": "refctr_S1a_z-3_north" }, + { "point": [ 6, 10, -3 ], "overmap": "refctr_S2a_z-3_north" }, + { "point": [ 7, 10, -3 ], "overmap": "refctr_S3a_z-3_north" }, + { "point": [ 8, 10, -3 ], "overmap": "refctr_S4a_z-3_north" }, + { "point": [ 9, 10, -3 ], "overmap": "refctr_S5a_z-3_north" }, + { "point": [ 5, 11, -3 ], "overmap": "refctr_S1b_z-3_north" }, + { "point": [ 6, 11, -3 ], "overmap": "refctr_S2b_z-3_north" }, + { "point": [ 7, 11, -3 ], "overmap": "refctr_S3b_z-3_north" }, + { "point": [ 8, 11, -3 ], "overmap": "refctr_S4b_z-3_north" }, + { "point": [ 9, 11, -3 ], "overmap": "refctr_S5b_z-3_north" }, + { "point": [ 5, 12, -3 ], "overmap": "refctr_S1c_z-3_north" }, + { "point": [ 6, 12, -3 ], "overmap": "refctr_S2c_z-3_north" }, + { "point": [ 7, 12, -3 ], "overmap": "refctr_S3c_z-3_north" }, + { "point": [ 8, 12, -3 ], "overmap": "refctr_S4c_z-3_north" }, + { "point": [ 9, 12, -3 ], "overmap": "refctr_S5c_z-3_north" }, + { "point": [ 5, 13, -3 ], "overmap": "refctr_S1d_z-3_north" }, + { "point": [ 6, 13, -3 ], "overmap": "refctr_S2d_z-3_north" }, + { "point": [ 7, 13, -3 ], "overmap": "refctr_S3d_z-3_north" }, + { "point": [ 8, 13, -3 ], "overmap": "refctr_S4d_z-3_north" }, + { "point": [ 9, 13, -3 ], "overmap": "refctr_S5d_z-3_north" }, + { "point": [ 5, 14, -3 ], "overmap": "refctr_S1e_z-3_north" }, + { "point": [ 6, 14, -3 ], "overmap": "refctr_S2e_z-3_north" }, + { "point": [ 7, 14, -3 ], "overmap": "refctr_S3e_z-3_north" }, + { "point": [ 8, 14, -3 ], "overmap": "refctr_S4e_z-3_north" }, + { "point": [ 9, 14, -3 ], "overmap": "refctr_S5e_z-3_north" }, + { "point": [ 10, 10, -3 ], "overmap": "refctr_SE1a_z-3_north" }, + { "point": [ 11, 10, -3 ], "overmap": "refctr_SE2a_z-3_north" }, + { "point": [ 12, 10, -3 ], "overmap": "refctr_SE3a_z-3_north" }, + { "point": [ 13, 10, -3 ], "overmap": "refctr_SE4a_z-3_north" }, + { "point": [ 14, 10, -3 ], "overmap": "refctr_SE5a_z-3_north" }, + { "point": [ 10, 11, -3 ], "overmap": "refctr_SE1b_z-3_north" }, + { "point": [ 11, 11, -3 ], "overmap": "refctr_SE2b_z-3_north" }, + { "point": [ 12, 11, -3 ], "overmap": "refctr_SE3b_z-3_north" }, + { "point": [ 13, 11, -3 ], "overmap": "refctr_SE4b_z-3_north" }, + { "point": [ 14, 11, -3 ], "overmap": "refctr_SE5b_z-3_north" }, + { "point": [ 10, 12, -3 ], "overmap": "refctr_SE1c_z-3_north" }, + { "point": [ 11, 12, -3 ], "overmap": "refctr_SE2c_z-3_north" }, + { "point": [ 12, 12, -3 ], "overmap": "refctr_SE3c_z-3_north" }, + { "point": [ 13, 12, -3 ], "overmap": "refctr_SE4c_z-3_north" }, + { "point": [ 14, 12, -3 ], "overmap": "refctr_SE5c_z-3_north" }, + { "point": [ 10, 13, -3 ], "overmap": "refctr_SE1d_z-3_north" }, + { "point": [ 11, 13, -3 ], "overmap": "refctr_SE2d_z-3_north" }, + { "point": [ 12, 13, -3 ], "overmap": "refctr_SE3d_z-3_north" }, + { "point": [ 13, 13, -3 ], "overmap": "refctr_SE4d_z-3_north" }, + { "point": [ 14, 13, -3 ], "overmap": "refctr_SE5d_z-3_north" }, + { "point": [ 10, 14, -3 ], "overmap": "refctr_SE1e_z-3_north" }, + { "point": [ 11, 14, -3 ], "overmap": "refctr_SE2e_z-3_north" }, + { "point": [ 12, 14, -3 ], "overmap": "refctr_SE3e_z-3_north" }, + { "point": [ 13, 14, -3 ], "overmap": "refctr_SE4e_z-3_north" }, + { "point": [ 14, 14, -3 ], "overmap": "refctr_SE5e_z-3_north" }, + { "point": [ 0, 0, -4 ], "overmap": "refctr_NW1a_z-4_north" }, + { "point": [ 1, 0, -4 ], "overmap": "refctr_NW2a_z-4_north" }, + { "point": [ 2, 0, -4 ], "overmap": "refctr_NW3a_z-4_north" }, + { "point": [ 3, 0, -4 ], "overmap": "refctr_NW4a_z-4_north" }, + { "point": [ 4, 0, -4 ], "overmap": "refctr_NW5a_z-4_north" }, + { "point": [ 0, 1, -4 ], "overmap": "refctr_NW1b_z-4_north" }, + { "point": [ 1, 1, -4 ], "overmap": "refctr_NW2b_z-4_north" }, + { "point": [ 2, 1, -4 ], "overmap": "refctr_NW3b_z-4_north" }, + { "point": [ 3, 1, -4 ], "overmap": "refctr_NW4b_z-4_north" }, + { "point": [ 4, 1, -4 ], "overmap": "refctr_NW5b_z-4_north" }, + { "point": [ 0, 2, -4 ], "overmap": "refctr_NW1c_z-4_north" }, + { "point": [ 1, 2, -4 ], "overmap": "refctr_NW2c_z-4_north" }, + { "point": [ 2, 2, -4 ], "overmap": "refctr_NW3c_z-4_north" }, + { "point": [ 3, 2, -4 ], "overmap": "refctr_NW4c_z-4_north" }, + { "point": [ 4, 2, -4 ], "overmap": "refctr_NW5c_z-4_north" }, + { "point": [ 0, 3, -4 ], "overmap": "refctr_NW1d_z-4_north" }, + { "point": [ 1, 3, -4 ], "overmap": "refctr_NW2d_z-4_north" }, + { "point": [ 2, 3, -4 ], "overmap": "refctr_NW3d_z-4_north" }, + { "point": [ 3, 3, -4 ], "overmap": "refctr_NW4d_z-4_north" }, + { "point": [ 4, 3, -4 ], "overmap": "refctr_NW5d_z-4_north" }, + { "point": [ 0, 4, -4 ], "overmap": "refctr_NW1e_z-4_north" }, + { "point": [ 1, 4, -4 ], "overmap": "refctr_NW2e_z-4_north" }, + { "point": [ 2, 4, -4 ], "overmap": "refctr_NW3e_z-4_north" }, + { "point": [ 3, 4, -4 ], "overmap": "refctr_NW4e_z-4_north" }, + { "point": [ 4, 4, -4 ], "overmap": "refctr_NW5e_z-4_north" }, + { "point": [ 5, 0, -4 ], "overmap": "refctr_N1a_z-4_north" }, + { "point": [ 6, 0, -4 ], "overmap": "refctr_N2a_z-4_north" }, + { "point": [ 7, 0, -4 ], "overmap": "refctr_N3a_z-4_north" }, + { "point": [ 8, 0, -4 ], "overmap": "refctr_N4a_z-4_north" }, + { "point": [ 9, 0, -4 ], "overmap": "refctr_N5a_z-4_north" }, + { "point": [ 5, 1, -4 ], "overmap": "refctr_N1b_z-4_north" }, + { "point": [ 6, 1, -4 ], "overmap": "refctr_N2b_z-4_north" }, + { "point": [ 7, 1, -4 ], "overmap": "refctr_N3b_z-4_north" }, + { "point": [ 8, 1, -4 ], "overmap": "refctr_N4b_z-4_north" }, + { "point": [ 9, 1, -4 ], "overmap": "refctr_N5b_z-4_north" }, + { "point": [ 5, 2, -4 ], "overmap": "refctr_N1c_z-4_north" }, + { "point": [ 6, 2, -4 ], "overmap": "refctr_N2c_z-4_north" }, + { "point": [ 7, 2, -4 ], "overmap": "refctr_N3c_z-4_north" }, + { "point": [ 8, 2, -4 ], "overmap": "refctr_N4c_z-4_north" }, + { "point": [ 9, 2, -4 ], "overmap": "refctr_N5c_z-4_north" }, + { "point": [ 5, 3, -4 ], "overmap": "refctr_N1d_z-4_north" }, + { "point": [ 6, 3, -4 ], "overmap": "refctr_N2d_z-4_north" }, + { "point": [ 7, 3, -4 ], "overmap": "refctr_N3d_z-4_north" }, + { "point": [ 8, 3, -4 ], "overmap": "refctr_N4d_z-4_north" }, + { "point": [ 9, 3, -4 ], "overmap": "refctr_N5d_z-4_north" }, + { "point": [ 5, 4, -4 ], "overmap": "refctr_N1e_z-4_north" }, + { "point": [ 6, 4, -4 ], "overmap": "refctr_N2e_z-4_north" }, + { "point": [ 7, 4, -4 ], "overmap": "refctr_N3e_z-4_north" }, + { "point": [ 8, 4, -4 ], "overmap": "refctr_N4e_z-4_north" }, + { "point": [ 9, 4, -4 ], "overmap": "refctr_N5e_z-4_north" }, + { "point": [ 10, 0, -4 ], "overmap": "refctr_NE1a_z-4_north" }, + { "point": [ 11, 0, -4 ], "overmap": "refctr_NE2a_z-4_north" }, + { "point": [ 12, 0, -4 ], "overmap": "refctr_NE3a_z-4_north" }, + { "point": [ 13, 0, -4 ], "overmap": "refctr_NE4a_z-4_north" }, + { "point": [ 14, 0, -4 ], "overmap": "refctr_NE5a_z-4_north" }, + { "point": [ 10, 1, -4 ], "overmap": "refctr_NE1b_z-4_north" }, + { "point": [ 11, 1, -4 ], "overmap": "refctr_NE2b_z-4_north" }, + { "point": [ 12, 1, -4 ], "overmap": "refctr_NE3b_z-4_north" }, + { "point": [ 13, 1, -4 ], "overmap": "refctr_NE4b_z-4_north" }, + { "point": [ 14, 1, -4 ], "overmap": "refctr_NE5b_z-4_north" }, + { "point": [ 10, 2, -4 ], "overmap": "refctr_NE1c_z-4_north" }, + { "point": [ 11, 2, -4 ], "overmap": "refctr_NE2c_z-4_north" }, + { "point": [ 12, 2, -4 ], "overmap": "refctr_NE3c_z-4_north" }, + { "point": [ 13, 2, -4 ], "overmap": "refctr_NE4c_z-4_north" }, + { "point": [ 14, 2, -4 ], "overmap": "refctr_NE5c_z-4_north" }, + { "point": [ 10, 3, -4 ], "overmap": "refctr_NE1d_z-4_north" }, + { "point": [ 11, 3, -4 ], "overmap": "refctr_NE2d_z-4_north" }, + { "point": [ 12, 3, -4 ], "overmap": "refctr_NE3d_z-4_north" }, + { "point": [ 13, 3, -4 ], "overmap": "refctr_NE4d_z-4_north" }, + { "point": [ 14, 3, -4 ], "overmap": "refctr_NE5d_z-4_north" }, + { "point": [ 10, 4, -4 ], "overmap": "refctr_NE1e_z-4_north" }, + { "point": [ 11, 4, -4 ], "overmap": "refctr_NE2e_z-4_north" }, + { "point": [ 12, 4, -4 ], "overmap": "refctr_NE3e_z-4_north" }, + { "point": [ 13, 4, -4 ], "overmap": "refctr_NE4e_z-4_north" }, + { "point": [ 14, 4, -4 ], "overmap": "refctr_NE5e_z-4_north" }, + { "point": [ 0, 5, -4 ], "overmap": "refctr_W1a_z-4_north" }, + { "point": [ 1, 5, -4 ], "overmap": "refctr_W2a_z-4_north" }, + { "point": [ 2, 5, -4 ], "overmap": "refctr_W3a_z-4_north" }, + { "point": [ 3, 5, -4 ], "overmap": "refctr_W4a_z-4_north" }, + { "point": [ 4, 5, -4 ], "overmap": "refctr_W5a_z-4_north" }, + { "point": [ 0, 6, -4 ], "overmap": "refctr_W1b_z-4_north" }, + { "point": [ 1, 6, -4 ], "overmap": "refctr_W2b_z-4_north" }, + { "point": [ 2, 6, -4 ], "overmap": "refctr_W3b_z-4_north" }, + { "point": [ 3, 6, -4 ], "overmap": "refctr_W4b_z-4_north" }, + { "point": [ 4, 6, -4 ], "overmap": "refctr_W5b_z-4_north" }, + { "point": [ 0, 7, -4 ], "overmap": "refctr_W1c_z-4_north" }, + { "point": [ 1, 7, -4 ], "overmap": "refctr_W2c_z-4_north" }, + { "point": [ 2, 7, -4 ], "overmap": "refctr_W3c_z-4_north" }, + { "point": [ 3, 7, -4 ], "overmap": "refctr_W4c_z-4_north" }, + { "point": [ 4, 7, -4 ], "overmap": "refctr_W5c_z-4_north" }, + { "point": [ 0, 8, -4 ], "overmap": "refctr_W1d_z-4_north" }, + { "point": [ 1, 8, -4 ], "overmap": "refctr_W2d_z-4_north" }, + { "point": [ 2, 8, -4 ], "overmap": "refctr_W3d_z-4_north" }, + { "point": [ 3, 8, -4 ], "overmap": "refctr_W4d_z-4_north" }, + { "point": [ 4, 8, -4 ], "overmap": "refctr_W5d_z-4_north" }, + { "point": [ 0, 9, -4 ], "overmap": "refctr_W1e_z-4_north" }, + { "point": [ 1, 9, -4 ], "overmap": "refctr_W2e_z-4_north" }, + { "point": [ 2, 9, -4 ], "overmap": "refctr_W3e_z-4_north" }, + { "point": [ 3, 9, -4 ], "overmap": "refctr_W4e_z-4_north" }, + { "point": [ 4, 9, -4 ], "overmap": "refctr_W5e_z-4_north" }, + { "point": [ 5, 5, -4 ], "overmap": "evac_center_1_z-4_north" }, + { "point": [ 6, 5, -4 ], "overmap": "evac_center_2_z-4_north" }, + { "point": [ 7, 5, -4 ], "overmap": "evac_center_3_z-4_north" }, + { "point": [ 8, 5, -4 ], "overmap": "evac_center_4_z-4_north" }, + { "point": [ 9, 5, -4 ], "overmap": "evac_center_5_z-4_north" }, + { "point": [ 5, 6, -4 ], "overmap": "evac_center_6_z-4_north" }, + { "point": [ 6, 6, -4 ], "overmap": "evac_center_7_z-4_north" }, + { "point": [ 7, 6, -4 ], "overmap": "evac_center_8_z-4_north" }, + { "point": [ 8, 6, -4 ], "overmap": "evac_center_9_z-4_north" }, + { "point": [ 9, 6, -4 ], "overmap": "evac_center_10_z-4_north" }, + { "point": [ 5, 7, -4 ], "overmap": "evac_center_11_z-4_north" }, + { "point": [ 6, 7, -4 ], "overmap": "evac_center_12_z-4_north" }, + { "point": [ 7, 7, -4 ], "overmap": "evac_center_13_z-4_north" }, + { "point": [ 8, 7, -4 ], "overmap": "evac_center_14_z-4_north" }, + { "point": [ 9, 7, -4 ], "overmap": "evac_center_15_z-4_north" }, + { "point": [ 5, 8, -4 ], "overmap": "evac_center_16_z-4_north" }, + { "point": [ 6, 8, -4 ], "overmap": "evac_center_17_z-4_north" }, + { "point": [ 7, 8, -4 ], "overmap": "evac_center_18_z-4_north" }, + { "point": [ 8, 8, -4 ], "overmap": "evac_center_19_z-4_north" }, + { "point": [ 9, 8, -4 ], "overmap": "evac_center_20_z-4_north" }, + { "point": [ 5, 9, -4 ], "overmap": "evac_center_21_z-4_north" }, + { "point": [ 6, 9, -4 ], "overmap": "evac_center_22_z-4_north" }, + { "point": [ 7, 9, -4 ], "overmap": "evac_center_23_z-4_north" }, + { "point": [ 8, 9, -4 ], "overmap": "evac_center_24_z-4_north" }, + { "point": [ 9, 9, -4 ], "overmap": "evac_center_25_z-4_north" }, + { "point": [ 10, 5, -4 ], "overmap": "refctr_E1a_z-4_north" }, + { "point": [ 11, 5, -4 ], "overmap": "refctr_E2a_z-4_north" }, + { "point": [ 12, 5, -4 ], "overmap": "refctr_E3a_z-4_north" }, + { "point": [ 13, 5, -4 ], "overmap": "refctr_E4a_z-4_north" }, + { "point": [ 14, 5, -4 ], "overmap": "refctr_E5a_z-4_north" }, + { "point": [ 10, 6, -4 ], "overmap": "refctr_E1b_z-4_north" }, + { "point": [ 11, 6, -4 ], "overmap": "refctr_E2b_z-4_north" }, + { "point": [ 12, 6, -4 ], "overmap": "refctr_E3b_z-4_north" }, + { "point": [ 13, 6, -4 ], "overmap": "refctr_E4b_z-4_north" }, + { "point": [ 14, 6, -4 ], "overmap": "refctr_E5b_z-4_north" }, + { "point": [ 10, 7, -4 ], "overmap": "refctr_E1c_z-4_north" }, + { "point": [ 11, 7, -4 ], "overmap": "refctr_E2c_z-4_north" }, + { "point": [ 12, 7, -4 ], "overmap": "refctr_E3c_z-4_north" }, + { "point": [ 13, 7, -4 ], "overmap": "refctr_E4c_z-4_north" }, + { "point": [ 14, 7, -4 ], "overmap": "refctr_E5c_z-4_north" }, + { "point": [ 10, 8, -4 ], "overmap": "refctr_E1d_z-4_north" }, + { "point": [ 11, 8, -4 ], "overmap": "refctr_E2d_z-4_north" }, + { "point": [ 12, 8, -4 ], "overmap": "refctr_E3d_z-4_north" }, + { "point": [ 13, 8, -4 ], "overmap": "refctr_E4d_z-4_north" }, + { "point": [ 14, 8, -4 ], "overmap": "refctr_E5d_z-4_north" }, + { "point": [ 10, 9, -4 ], "overmap": "refctr_E1e_z-4_north" }, + { "point": [ 11, 9, -4 ], "overmap": "refctr_E2e_z-4_north" }, + { "point": [ 12, 9, -4 ], "overmap": "refctr_E3e_z-4_north" }, + { "point": [ 13, 9, -4 ], "overmap": "refctr_E4e_z-4_north" }, + { "point": [ 14, 9, -4 ], "overmap": "refctr_E5e_z-4_north" }, + { "point": [ 0, 10, -4 ], "overmap": "refctr_SW1a_z-4_north" }, + { "point": [ 1, 10, -4 ], "overmap": "refctr_SW2a_z-4_north" }, + { "point": [ 2, 10, -4 ], "overmap": "refctr_SW3a_z-4_north" }, + { "point": [ 3, 10, -4 ], "overmap": "refctr_SW4a_z-4_north" }, + { "point": [ 4, 10, -4 ], "overmap": "refctr_SW5a_z-4_north" }, + { "point": [ 0, 11, -4 ], "overmap": "refctr_SW1b_z-4_north" }, + { "point": [ 1, 11, -4 ], "overmap": "refctr_SW2b_z-4_north" }, + { "point": [ 2, 11, -4 ], "overmap": "refctr_SW3b_z-4_north" }, + { "point": [ 3, 11, -4 ], "overmap": "refctr_SW4b_z-4_north" }, + { "point": [ 4, 11, -4 ], "overmap": "refctr_SW5b_z-4_north" }, + { "point": [ 0, 12, -4 ], "overmap": "refctr_SW1c_z-4_north" }, + { "point": [ 1, 12, -4 ], "overmap": "refctr_SW2c_z-4_north" }, + { "point": [ 2, 12, -4 ], "overmap": "refctr_SW3c_z-4_north" }, + { "point": [ 3, 12, -4 ], "overmap": "refctr_SW4c_z-4_north" }, + { "point": [ 4, 12, -4 ], "overmap": "refctr_SW5c_z-4_north" }, + { "point": [ 0, 13, -4 ], "overmap": "refctr_SW1d_z-4_north" }, + { "point": [ 1, 13, -4 ], "overmap": "refctr_SW2d_z-4_north" }, + { "point": [ 2, 13, -4 ], "overmap": "refctr_SW3d_z-4_north" }, + { "point": [ 3, 13, -4 ], "overmap": "refctr_SW4d_z-4_north" }, + { "point": [ 4, 13, -4 ], "overmap": "refctr_SW5d_z-4_north" }, + { "point": [ 0, 14, -4 ], "overmap": "refctr_SW1e_z-4_north" }, + { "point": [ 1, 14, -4 ], "overmap": "refctr_SW2e_z-4_north" }, + { "point": [ 2, 14, -4 ], "overmap": "refctr_SW3e_z-4_north" }, + { "point": [ 3, 14, -4 ], "overmap": "refctr_SW4e_z-4_north" }, + { "point": [ 4, 14, -4 ], "overmap": "refctr_SW5e_z-4_north" }, + { "point": [ 5, 10, -4 ], "overmap": "refctr_S1a_z-4_north" }, + { "point": [ 6, 10, -4 ], "overmap": "refctr_S2a_z-4_north" }, + { "point": [ 7, 10, -4 ], "overmap": "refctr_S3a_z-4_north" }, + { "point": [ 8, 10, -4 ], "overmap": "refctr_S4a_z-4_north" }, + { "point": [ 9, 10, -4 ], "overmap": "refctr_S5a_z-4_north" }, + { "point": [ 5, 11, -4 ], "overmap": "refctr_S1b_z-4_north" }, + { "point": [ 6, 11, -4 ], "overmap": "refctr_S2b_z-4_north" }, + { "point": [ 7, 11, -4 ], "overmap": "refctr_S3b_z-4_north" }, + { "point": [ 8, 11, -4 ], "overmap": "refctr_S4b_z-4_north" }, + { "point": [ 9, 11, -4 ], "overmap": "refctr_S5b_z-4_north" }, + { "point": [ 5, 12, -4 ], "overmap": "refctr_S1c_z-4_north" }, + { "point": [ 6, 12, -4 ], "overmap": "refctr_S2c_z-4_north" }, + { "point": [ 7, 12, -4 ], "overmap": "refctr_S3c_z-4_north" }, + { "point": [ 8, 12, -4 ], "overmap": "refctr_S4c_z-4_north" }, + { "point": [ 9, 12, -4 ], "overmap": "refctr_S5c_z-4_north" }, + { "point": [ 5, 13, -4 ], "overmap": "refctr_S1d_z-4_north" }, + { "point": [ 6, 13, -4 ], "overmap": "refctr_S2d_z-4_north" }, + { "point": [ 7, 13, -4 ], "overmap": "refctr_S3d_z-4_north" }, + { "point": [ 8, 13, -4 ], "overmap": "refctr_S4d_z-4_north" }, + { "point": [ 9, 13, -4 ], "overmap": "refctr_S5d_z-4_north" }, + { "point": [ 5, 14, -4 ], "overmap": "refctr_S1e_z-4_north" }, + { "point": [ 6, 14, -4 ], "overmap": "refctr_S2e_z-4_north" }, + { "point": [ 7, 14, -4 ], "overmap": "refctr_S3e_z-4_north" }, + { "point": [ 8, 14, -4 ], "overmap": "refctr_S4e_z-4_north" }, + { "point": [ 9, 14, -4 ], "overmap": "refctr_S5e_z-4_north" }, + { "point": [ 10, 10, -4 ], "overmap": "refctr_SE1a_z-4_north" }, + { "point": [ 11, 10, -4 ], "overmap": "refctr_SE2a_z-4_north" }, + { "point": [ 12, 10, -4 ], "overmap": "refctr_SE3a_z-4_north" }, + { "point": [ 13, 10, -4 ], "overmap": "refctr_SE4a_z-4_north" }, + { "point": [ 14, 10, -4 ], "overmap": "refctr_SE5a_z-4_north" }, + { "point": [ 10, 11, -4 ], "overmap": "refctr_SE1b_z-4_north" }, + { "point": [ 11, 11, -4 ], "overmap": "refctr_SE2b_z-4_north" }, + { "point": [ 12, 11, -4 ], "overmap": "refctr_SE3b_z-4_north" }, + { "point": [ 13, 11, -4 ], "overmap": "refctr_SE4b_z-4_north" }, + { "point": [ 14, 11, -4 ], "overmap": "refctr_SE5b_z-4_north" }, + { "point": [ 10, 12, -4 ], "overmap": "refctr_SE1c_z-4_north" }, + { "point": [ 11, 12, -4 ], "overmap": "refctr_SE2c_z-4_north" }, + { "point": [ 12, 12, -4 ], "overmap": "refctr_SE3c_z-4_north" }, + { "point": [ 13, 12, -4 ], "overmap": "refctr_SE4c_z-4_north" }, + { "point": [ 14, 12, -4 ], "overmap": "refctr_SE5c_z-4_north" }, + { "point": [ 10, 13, -4 ], "overmap": "refctr_SE1d_z-4_north" }, + { "point": [ 11, 13, -4 ], "overmap": "refctr_SE2d_z-4_north" }, + { "point": [ 12, 13, -4 ], "overmap": "refctr_SE3d_z-4_north" }, + { "point": [ 13, 13, -4 ], "overmap": "refctr_SE4d_z-4_north" }, + { "point": [ 14, 13, -4 ], "overmap": "refctr_SE5d_z-4_north" }, + { "point": [ 10, 14, -4 ], "overmap": "refctr_SE1e_z-4_north" }, + { "point": [ 11, 14, -4 ], "overmap": "refctr_SE2e_z-4_north" }, + { "point": [ 12, 14, -4 ], "overmap": "refctr_SE3e_z-4_north" }, + { "point": [ 13, 14, -4 ], "overmap": "refctr_SE4e_z-4_north" }, + { "point": [ 14, 14, -4 ], "overmap": "refctr_SE5e_z-4_north" }, + { "point": [ 7, 15, 0 ], "overmap": "road_end_south" } + ], + "connections": [ { "point": [ 7, 15, 0 ] } ], "locations": [ "wilderness" ], "city_distance": [ 3, -1 ], "city_sizes": [ 1, 16 ], @@ -2315,7 +3869,23 @@ { "point": [ 0, 1, -2 ], "overmap": "robofachq_hab_b0" }, { "point": [ 1, 1, -2 ], "overmap": "robofachq_hab_b1" }, { "point": [ 2, 1, -2 ], "overmap": "robofachq_hab_b2" }, - { "point": [ 3, 1, -2 ], "overmap": "robofachq_hab_b3" } + { "point": [ 3, 1, -2 ], "overmap": "robofachq_hab_b3" }, + { "point": [ 0, 0, -6 ], "overmap": "robofachq_ai_a0" }, + { "point": [ 1, 0, -6 ], "overmap": "robofachq_ai_a1" }, + { "point": [ 2, 0, -6 ], "overmap": "robofachq_ai_a2" }, + { "point": [ 3, 0, -6 ], "overmap": "robofachq_ai_a3" }, + { "point": [ 0, 1, -6 ], "overmap": "robofachq_ai_b0" }, + { "point": [ 1, 1, -6 ], "overmap": "robofachq_ai_b1" }, + { "point": [ 2, 1, -6 ], "overmap": "robofachq_ai_b2" }, + { "point": [ 3, 1, -6 ], "overmap": "robofachq_ai_b3" }, + { "point": [ 0, 0, -7 ], "overmap": "robofachq_aiutl_a0" }, + { "point": [ 1, 0, -7 ], "overmap": "robofachq_aiutl_a1" }, + { "point": [ 2, 0, -7 ], "overmap": "robofachq_aiutl_a2" }, + { "point": [ 3, 0, -7 ], "overmap": "robofachq_aiutl_a3" }, + { "point": [ 0, 1, -7 ], "overmap": "robofachq_aiutl_b0" }, + { "point": [ 1, 1, -7 ], "overmap": "robofachq_aiutl_b1" }, + { "point": [ 2, 1, -7 ], "overmap": "robofachq_aiutl_b2" }, + { "point": [ 3, 1, -7 ], "overmap": "robofachq_aiutl_b3" } ], "connections": [ { "point": [ 0, -1, 0 ], "terrain": "road" } ], "locations": [ "wilderness" ], diff --git a/data/json/overmap_terrain_commercial.json b/data/json/overmap_terrain_commercial.json index a8de2c94acdd0..95881efa33e8f 100644 --- a/data/json/overmap_terrain_commercial.json +++ b/data/json/overmap_terrain_commercial.json @@ -277,6 +277,69 @@ "copy-from": "generic_city_building", "color": "red" }, + { + "type": "overmap_terrain", + "id": "s_gun_roof", + "name": "gun store roof", + "copy-from": "generic_city_building", + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_gun_1", + "name": "gun store", + "copy-from": "generic_city_building", + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_gun_roof_1", + "name": "gun store roof", + "copy-from": "generic_city_building", + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_gun_2", + "name": "gun store", + "copy-from": "generic_city_building", + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_gun_3", + "name": "gun store", + "copy-from": "generic_city_building", + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_gun_roof_3", + "name": "gun store roof", + "copy-from": "generic_city_building", + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_gun_4", + "name": "gun store", + "copy-from": "generic_city_building", + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_gun_2ndfloor_4", + "name": "gun store 2nd floor", + "copy-from": "generic_city_building", + "color": "red" + }, + { + "type": "overmap_terrain", + "id": "s_gun_roof_4", + "name": "gun store roof", + "copy-from": "generic_city_building", + "color": "red" + }, { "type": "overmap_terrain", "id": "s_clothes", @@ -438,6 +501,27 @@ "copy-from": "generic_city_building", "color": "i_brown" }, + { + "type": "overmap_terrain", + "id": "s_restaurant_foodplace", + "name": "restaurant", + "copy-from": "generic_city_building", + "color": "pink" + }, + { + "type": "overmap_terrain", + "id": "s_restaurant_foodplace_roof", + "name": "restaurant roof", + "copy-from": "generic_city_building", + "color": "pink" + }, + { + "type": "overmap_terrain", + "id": "s_restaurant_foodplace_upper_roof", + "name": "restaurant roof", + "copy-from": "generic_city_building", + "color": "pink" + }, { "type": "overmap_terrain", "id": "s_restaurant", diff --git a/data/json/overmap_terrain_evac_center.json b/data/json/overmap_terrain_evac_center.json index 5921e3c93f7dd..73e8d545dda74 100644 --- a/data/json/overmap_terrain_evac_center.json +++ b/data/json/overmap_terrain_evac_center.json @@ -2,8 +2,7 @@ { "type": "overmap_terrain", "abstract": "generic_evac_center", - "see_cost": 5, - "mondensity": 2 + "see_cost": 5 }, { "type": "overmap_terrain", @@ -204,5 +203,7794 @@ "name": "road", "sym": "┘", "color": "dark_gray" + }, + { + "type": "overmap_terrain", + "abstract": "generic_refctr", + "see_cost": 2, + "name": "field", + "sym": ".", + "color": "brown" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3a", + "copy-from": "generic_evac_center", + "name": "road", + "sym": "│", + "color": "dark_gray" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3b", + "copy-from": "generic_evac_center", + "name": "road", + "sym": "│", + "color": "dark_gray" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3c", + "copy-from": "generic_evac_center", + "name": "road", + "sym": "│", + "color": "dark_gray" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3d", + "copy-from": "generic_evac_center", + "name": "road", + "sym": "│", + "color": "dark_gray" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3e", + "copy-from": "generic_evac_center", + "name": "road", + "sym": "│", + "color": "dark_gray" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5a", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5b", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5c", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5d", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5e", + "copy-from": "generic_refctr" + }, + { + "type": "overmap_terrain", + "abstract": "generic_rc_air", + "name": "open air", + "sym": ".", + "color": "blue", + "see_cost": 1 + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_1_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_2_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_3_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_4_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_5_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_6_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_7_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_8_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_9_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_10_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_11_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_12_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_13_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_14_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_15_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_16_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_17_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_18_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_19_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_20_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_21_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_22_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_23_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_24_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_25_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5a_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5b_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5c_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5d_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5e_z1", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_1_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_2_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_3_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_4_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_5_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_6_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_7_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_8_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_9_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_10_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_11_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_12_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_13_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_14_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_15_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_16_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_17_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_18_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_19_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_20_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_21_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_22_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_23_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_24_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "evac_center_25_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5a_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5b_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5c_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5d_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5e_z2", + "copy-from": "generic_rc_air" + }, + { + "type": "overmap_terrain", + "abstract": "generic_rc_underground", + "name": "solid rock", + "sym": "%", + "color": "dark_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_1_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_2_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_3_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_4_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_5_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_6_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_7_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_8_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_9_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_10_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_11_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_12_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_13_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_14_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_15_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_16_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_17_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_18_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_19_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_20_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_21_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_22_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_23_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_24_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_25_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5a_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5b_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5c_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5d_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5e_z-1", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_1_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_2_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_3_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_4_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_5_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_6_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_7_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_8_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_9_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_10_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_11_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_12_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_13_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_14_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_15_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_16_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_17_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_18_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_19_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_20_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_21_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_22_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_23_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_24_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_25_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5a_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5b_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5c_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5d_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5e_z-2", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_1_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_2_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_3_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_4_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_5_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_6_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_7_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_8_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_9_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_10_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_11_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_12_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_13_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_14_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_15_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_16_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_17_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_18_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_19_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_20_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_21_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_22_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_23_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_24_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_25_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5a_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5b_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5c_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5d_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5e_z-3", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW1e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW2e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW3e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW4e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NW5e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N1e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N2e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N3e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N4e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_N5e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE1e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE2e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE3e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE4e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_NE5e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W1e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W2e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W3e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W4e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_W5e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_1_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_2_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_3_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_4_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_5_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_6_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_7_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_8_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_9_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_10_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_11_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_12_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_13_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_14_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_15_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_16_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_17_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_18_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_19_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_20_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_21_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_22_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_23_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_24_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "evac_center_25_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E1e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E2e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E3e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E4e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_E5e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW1e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW2e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW3e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW4e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SW5e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S1e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S2e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S3e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S4e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_S5e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5a_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5b_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5c_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5d_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE1e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE2e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE3e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE4e_z-4", + "copy-from": "generic_rc_underground" + }, + { + "type": "overmap_terrain", + "id": "refctr_SE5e_z-4", + "copy-from": "generic_rc_underground" } ] diff --git a/data/json/overmap_terrain_military.json b/data/json/overmap_terrain_military.json index 3af35e2c78054..e3432cad20037 100644 --- a/data/json/overmap_terrain_military.json +++ b/data/json/overmap_terrain_military.json @@ -91,6 +91,15 @@ "see_cost": 2, "flags": [ "KNOWN_DOWN", "NO_ROTATE" ] }, + { + "type": "overmap_terrain", + "id": "lmoe_roof", + "name": "LMOE shelter", + "sym": ".", + "color": "brown", + "see_cost": 2, + "flags": [ "KNOWN_DOWN", "NO_ROTATE" ] + }, { "type": "overmap_terrain", "id": "lmoe_under", @@ -100,6 +109,15 @@ "see_cost": 2, "flags": [ "KNOWN_UP", "NO_ROTATE" ] }, + { + "type": "overmap_terrain", + "id": "lmoe_under_empty", + "name": "LMOE shelter", + "sym": "+", + "color": "red", + "see_cost": 2, + "flags": [ "KNOWN_UP", "NO_ROTATE" ] + }, { "type": "overmap_terrain", "id": "bunker", diff --git a/data/json/overmap_terrain_recreational.json b/data/json/overmap_terrain_recreational.json index 8404020e093ed..e64a3b5dc076f 100644 --- a/data/json/overmap_terrain_recreational.json +++ b/data/json/overmap_terrain_recreational.json @@ -1057,6 +1057,34 @@ "copy-from": "generic_city_building", "color": "i_light_cyan" }, + { + "type": "overmap_terrain", + "id": "gym_fitness_roof", + "name": "fitness gym roof", + "copy-from": "generic_city_building", + "color": "i_light_cyan" + }, + { + "type": "overmap_terrain", + "id": "gym_fitness_1", + "name": "fitness gym", + "copy-from": "generic_city_building", + "color": "i_light_cyan" + }, + { + "type": "overmap_terrain", + "id": "gym_fitness_2ndFloor_1", + "name": "fitness gym", + "copy-from": "generic_city_building", + "color": "i_light_cyan" + }, + { + "type": "overmap_terrain", + "id": "gym_fitness_roof_1", + "name": "fitness gym roof", + "copy-from": "generic_city_building", + "color": "i_light_cyan" + }, { "type": "overmap_terrain", "id": "dojo", diff --git a/data/json/overmap_terrain_robofachq.json b/data/json/overmap_terrain_robofachq.json index 7596cae1824aa..08a4c59ffeb5e 100644 --- a/data/json/overmap_terrain_robofachq.json +++ b/data/json/overmap_terrain_robofachq.json @@ -176,5 +176,149 @@ "color": "light_blue", "see_cost": 5, "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": "robofachq_ai_a0", + "name": "hub 01", + "sym": "0", + "color": "light_blue", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": "robofachq_ai_a1", + "name": "hub 01", + "sym": "0", + "color": "light_blue", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": "robofachq_ai_a2", + "name": "hub 01", + "sym": "0", + "color": "light_blue", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": "robofachq_ai_a3", + "name": "hub 01", + "sym": "0", + "color": "light_blue", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": "robofachq_ai_b0", + "name": "hub 01", + "sym": "0", + "color": "light_blue", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": "robofachq_ai_b1", + "name": "hub 01", + "sym": "0", + "color": "light_blue", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": "robofachq_ai_b2", + "name": "hub 01", + "sym": "0", + "color": "light_blue", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": "robofachq_ai_b3", + "name": "hub 01", + "sym": "0", + "color": "light_blue", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": "robofachq_aiutl_a0", + "name": "hub 01", + "sym": "0", + "color": "light_blue", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": "robofachq_aiutl_a1", + "name": "hub 01", + "sym": "0", + "color": "light_blue", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": "robofachq_aiutl_a2", + "name": "hub 01", + "sym": "0", + "color": "light_blue", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": "robofachq_aiutl_a3", + "name": "hub 01", + "sym": "0", + "color": "light_blue", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": "robofachq_aiutl_b0", + "name": "hub 01", + "sym": "0", + "color": "light_blue", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": "robofachq_aiutl_b1", + "name": "hub 01", + "sym": "0", + "color": "light_blue", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": "robofachq_aiutl_b2", + "name": "hub 01", + "sym": "0", + "color": "light_blue", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": "robofachq_aiutl_b3", + "name": "hub 01", + "sym": "0", + "color": "light_blue", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] } ] diff --git a/data/json/professions.json b/data/json/professions.json index 18274d1aa903d..1fcf28bad1759 100644 --- a/data/json/professions.json +++ b/data/json/professions.json @@ -552,6 +552,33 @@ "female": [ "sports_bra", "panties" ] } }, + { + "type": "profession", + "ident": "true_foodperson", + "name": "True Foodperson", + "description": "You are the true Foodperson, some might think Foodperson is just a mascot, but you know better. You are Foodperson, the mask has become your face, you are real and the only thing standing between this world and oblivion is you.", + "points": -1, + "traits": [ "PROF_FOODP" ], + "skills": [ { "level": 2, "name": "dodge" }, { "level": 2, "name": "bashing" }, { "level": 2, "name": "speech" } ], + "items": { + "both": { + "items": [ + "foodperson_mask", + "pants_cargo", + "briefs", + "cape_fp", + "dress_shirt", + "armguard_hard", + "legguard_hard", + "gloves_rubber", + "socks", + "chestguard_hard", + "boots_rubber" + ], + "entries": [ { "item": "medium_disposable_cell" }, { "group": "snacks_fancy" }, { "group": "snacks" }, { "item": "bat" } ] + } + } + }, { "type": "profession", "ident": "cyclist", @@ -3776,5 +3803,31 @@ "male": [ "boxer_shorts" ], "female": [ "bra", "panties" ] } + }, + { + "type": "profession", + "ident": "rancher", + "name": "Rancher", + "description": "You've raised cows or horses most of your life, now we'll see what happens next.", + "points": 2, + "skills": { "level": 2, "name": "survival" }, + "items": { + "both": [ + "jeans", + "dress_shirt", + "jacket_leather", + "socks", + "cowboy_hat", + "boots_western", + "wristwatch", + "riding_saddle", + "pockknife", + "cattlefodder", + "cattlefodder", + "cig" + ], + "male": [ "boxer_shorts" ], + "female": [ "bra", "panties" ] + } } ] diff --git a/data/json/recipes/ammo/pistol.json b/data/json/recipes/ammo/pistol.json index 065b20f4acf66..2593b04e325e8 100644 --- a/data/json/recipes/ammo/pistol.json +++ b/data/json/recipes/ammo/pistol.json @@ -1,4 +1,34 @@ [ + { + "result": "bp_9mm", + "type": "recipe", + "category": "CC_AMMO", + "subcategory": "CSC_AMMO_PISTOL", + "skill_used": "fabrication", + "difficulty": 4, + "skills_required": [ "gun", 4 ], + "time": "2 m", + "batch_time_factors": [ 60, 5 ], + "book_learn": [ [ "manual_pistol", 1 ], [ "manual_smg", 1 ], [ "recipe_bullets", 2 ] ], + "charges": 1, + "using": [ [ "bullet_forming", 2 ], [ "ammo_bullet", 2 ], [ "ammo_9mm", 1 ] ], + "components": [ [ [ "chem_black_powder", 3 ] ] ] + }, + { + "result": "bp_9mmfmj", + "type": "recipe", + "category": "CC_AMMO", + "subcategory": "CSC_AMMO_PISTOL", + "skill_used": "fabrication", + "difficulty": 3, + "skills_required": [ "gun", 1 ], + "time": "2 m", + "batch_time_factors": [ 60, 5 ], + "book_learn": [ [ "manual_pistol", 2 ], [ "manual_smg", 2 ], [ "recipe_bullets", 3 ] ], + "charges": 1, + "using": [ [ "bullet_forming", 2 ], [ "ammo_bullet", 2 ], [ "ammo_9mm", 1 ] ], + "components": [ [ [ "chem_black_powder", 3 ] ], [ [ "copper", 1 ] ] ] + }, { "result": "36navy", "type": "recipe", @@ -97,6 +127,38 @@ "using": [ [ "bullet_forming", 2 ], [ "ammo_bullet", 2 ] ], "components": [ [ [ "38_casing", 1 ] ], [ [ "smpistol_primer", 1 ] ], [ [ "gunpowder", 2 ] ] ] }, + { + "result": "reloaded_357mag_fmj", + "type": "recipe", + "category": "CC_AMMO", + "subcategory": "CSC_AMMO_PISTOL", + "skill_used": "fabrication", + "difficulty": 3, + "skills_required": [ "gun", 1 ], + "time": "2 m", + "batch_time_factors": [ 60, 5 ], + "book_learn": [ [ "manual_pistol", 3 ], [ "recipe_bullets", 4 ] ], + "charges": 1, + "reversible": true, + "using": [ [ "bullet_forming", 2 ], [ "ammo_bullet", 2 ], [ "ammo_357mag", 1 ] ], + "components": [ [ [ "gunpowder", 5 ] ] ] + }, + { + "result": "reloaded_357mag_jhp", + "type": "recipe", + "category": "CC_AMMO", + "subcategory": "CSC_AMMO_PISTOL", + "skill_used": "fabrication", + "difficulty": 3, + "skills_required": [ "gun", 1 ], + "time": "2 m", + "batch_time_factors": [ 60, 5 ], + "book_learn": [ [ "manual_pistol", 3 ], [ "recipe_bullets", 4 ] ], + "charges": 1, + "reversible": true, + "using": [ [ "bullet_forming", 2 ], [ "ammo_bullet", 2 ], [ "ammo_357mag", 1 ] ], + "components": [ [ [ "gunpowder", 5 ] ] ] + }, { "result": "bp_38_special", "type": "recipe", diff --git a/data/json/recipes/basecamps/recipe_groups.json b/data/json/recipes/basecamps/recipe_groups.json index 957cc81ed16d0..b710806cff393 100644 --- a/data/json/recipes/basecamps/recipe_groups.json +++ b/data/json/recipes/basecamps/recipe_groups.json @@ -4,7 +4,7 @@ "name": "all_faction_base_types", "building_type": "NONE", "recipes": [ - { "id": "faction_base_modular_field_0", "description": "Field Camp", "om_terrains": [ "field" ] }, + { "id": "faction_base_modular_hub_field_0", "description": "Field Camp", "om_terrains": [ "field" ] }, { "id": "faction_base_camp_0", "description": "Old Camp", "om_terrains": [ "field" ] } ] }, diff --git a/data/json/recipes/basecamps/recipe_modular_field_common.json b/data/json/recipes/basecamps/recipe_modular_field_common.json index 511374176bb60..a6572897b9fc8 100644 --- a/data/json/recipes/basecamps/recipe_modular_field_common.json +++ b/data/json/recipes/basecamps/recipe_modular_field_common.json @@ -1,7 +1,7 @@ [ { "type": "recipe", - "result": "faction_base_modular_field_0", + "result": "faction_base_modular_hub_field_0", "description": "We should survey the base site and set up a bulletin board.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", @@ -9,10 +9,11 @@ "autolearn": false, "never_learn": true, "time": "1 h", - "construction_blueprint": "fbmf_0", + "construction_blueprint": "fbmh_0", "blueprint_provides": [ { "id": "gathering" }, { "id": "primitive_camp_recipes_1" }, + { "id": "fbmh_0" }, { "id": "firewood" }, { "id": "foraging" }, { "id": "sorting" }, @@ -23,22 +24,46 @@ }, { "type": "recipe", - "result": "faction_base_modular_field_fireplace_northeast", + "result": "faction_base_modular_hub_mallroof_0", + "description": "We should survey the roof top and set up a bulletin board.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "time": "1 h", + "construction_blueprint": "fbmh_0", + "blueprint_provides": [ + { "id": "gathering" }, + { "id": "primitive_camp_recipes_1" }, + { "id": "fbmh_0" }, + { "id": "firewood" }, + { "id": "foraging" }, + { "id": "sorting" }, + { "id": "logging" }, + { "id": "fbm_no_dig" } + ], + "blueprint_requires": [ { "id": "not_an_upgrade" } ], + "blueprint_name": "basic survey" + }, + { + "type": "recipe", + "result": "faction_base_modular_hub_fireplace_northeast", "description": "Now that we have some cover, we should build a fireplace in the northeast shack.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_fireplace_northeast", + "construction_blueprint": "fbmh_fireplace_northeast", "blueprint_name": "northeast fireplace", - "blueprint_requires": [ { "id": "fbmf_northeast" } ], - "blueprint_provides": [ { "id": "fbmf_fire_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_fire_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_fire_northeast" } ], + "blueprint_excludes": [ { "id": "fbmh_fire_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_brazier_northeast", + "result": "faction_base_modular_hub_brazier_northeast", "description": "Now that we have some cover, we should set up a brazier in the northeast shack.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", @@ -46,476 +71,476 @@ "autolearn": false, "never_learn": true, "time": "5 m", - "construction_blueprint": "fbmf_brazier_northeast", + "construction_blueprint": "fbmh_brazier_northeast", "blueprint_name": "northeast brazier", - "blueprint_requires": [ { "id": "fbmf_northeast" } ], - "blueprint_provides": [ { "id": "fbmf_fire_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_fire_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_fire_northeast" } ], + "blueprint_excludes": [ { "id": "fbmh_fire_northeast" } ], "components": [ [ [ "brazier", 1 ] ] ] }, { "type": "recipe", - "result": "faction_base_modular_field_stove_northeast", + "result": "faction_base_modular_hub_stove_northeast", "description": "Now that we have some cover, we should build a stove in the northeast shack.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "skill_used": "fabrication", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_stove_northeast", + "construction_blueprint": "fbmh_stove_northeast", "blueprint_name": "northeast stove", - "blueprint_requires": [ { "id": "fbmf_northeast" } ], - "blueprint_provides": [ { "id": "fbmf_fire_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_fire_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_fire_northeast" } ], + "blueprint_excludes": [ { "id": "fbmh_fire_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_strawbed1_northeast", + "result": "faction_base_modular_hub_strawbed1_northeast", "description": "A straw bed in the northeast shack will make sleeping easier.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_strawbed1_northeast", + "construction_blueprint": "fbmh_strawbed1_northeast", "blueprint_name": "northeast straw bed", - "blueprint_requires": [ { "id": "fbmf_northeast" } ], - "blueprint_provides": [ { "id": "bed" }, { "id": "fbmf_bed1_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast" } ], + "blueprint_provides": [ { "id": "bed" }, { "id": "fbmh_bed1_northeast" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_bed1_northeast", + "result": "faction_base_modular_hub_bed1_northeast", "description": "A proper bed in the northeast shack will give one of us a place to sleep soundly.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_bed1_northeast", + "construction_blueprint": "fbmh_bed1_northeast", "blueprint_name": "northeast bed", - "blueprint_requires": [ { "id": "fbmf_northeast" } ], - "blueprint_provides": [ { "id": "bed" }, { "id": "fbmf_bed1_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast" } ], + "blueprint_provides": [ { "id": "bed" }, { "id": "fbmh_bed1_northeast" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_strawbed2_northeast", + "result": "faction_base_modular_hub_strawbed2_northeast", "description": "Another straw bed in the northeast shack will make sleeping easier.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_strawbed2_northeast", + "construction_blueprint": "fbmh_strawbed2_northeast", "blueprint_name": "northeast straw bed", - "blueprint_requires": [ { "id": "fbmf_bed1_northeast" }, { "id": "fbmf_northeast", "amount": 2 } ], - "blueprint_provides": [ { "id": "bed" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_bed2_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_bed1_northeast" }, { "id": "fbmh_northeast", "amount": 2 } ], + "blueprint_provides": [ { "id": "bed" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbmh_bed2_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_bed2_northeast", + "result": "faction_base_modular_hub_bed2_northeast", "description": "Another proper bed in the northeast shack will give one of us a place to sleep soundly.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_bed2_northeast", + "construction_blueprint": "fbmh_bed2_northeast", "blueprint_name": "northeast bed", - "blueprint_requires": [ { "id": "fbmf_bed1_northeast" }, { "id": "fbmf_northeast", "amount": 2 } ], - "blueprint_provides": [ { "id": "bed" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_bed2_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_bed1_northeast" }, { "id": "fbmh_northeast", "amount": 2 } ], + "blueprint_provides": [ { "id": "bed" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbmh_bed2_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_tent_strawbed3_east", + "result": "faction_base_modular_hub_tent_strawbed3_east", "description": "A pair of straw beds in the east tent will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_tent_strawbed3_east", + "construction_blueprint": "fbmh_tent_strawbed3_east", "blueprint_name": "east straw beds", - "blueprint_requires": [ { "id": "fbmf_tent_east" } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_east" }, { "id": "fbmf_bed2_east" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_east" }, { "id": "fbmf_bed2_east" } ], + "blueprint_requires": [ { "id": "fbmh_tent_east" } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_east" }, { "id": "fbmh_bed2_east" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_east" }, { "id": "fbmh_bed2_east" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_tent_bed3_east", + "result": "faction_base_modular_hub_tent_bed3_east", "description": "A pair of proper beds in the east tent will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_tent_bed3_east", + "construction_blueprint": "fbmh_tent_bed3_east", "blueprint_name": "east beds", - "blueprint_requires": [ { "id": "fbmf_tent_east" } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_east" }, { "id": "fbmf_bed2_east" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_east" }, { "id": "fbmf_bed2_east" } ], + "blueprint_requires": [ { "id": "fbmh_tent_east" } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_east" }, { "id": "fbmh_bed2_east" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_east" }, { "id": "fbmh_bed2_east" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_strawbed3_east", + "result": "faction_base_modular_hub_strawbed3_east", "description": "A pair of straw beds in the east room will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room_strawbed3_east", + "construction_blueprint": "fbmh_room_strawbed3_east", "blueprint_name": "east straw beds", - "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_east" }, { "id": "fbmf_bed2_east" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_east" }, { "id": "fbmf_bed2_east" }, { "id": "fbmf_tent_east" } ], + "blueprint_requires": [ { "id": "fbmh_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_east" }, { "id": "fbmh_bed2_east" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_east" }, { "id": "fbmh_bed2_east" }, { "id": "fbmh_tent_east" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room_bed3_east", + "result": "faction_base_modular_hub_room_bed3_east", "description": "A pair of proper beds in the east room will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room_bed3_east", + "construction_blueprint": "fbmh_room_bed3_east", "blueprint_name": "east beds", - "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_east" }, { "id": "fbmf_bed2_east" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_east" }, { "id": "fbmf_bed2_east" }, { "id": "fbmf_tent_east" } ], + "blueprint_requires": [ { "id": "fbmh_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_east" }, { "id": "fbmh_bed2_east" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_east" }, { "id": "fbmh_bed2_east" }, { "id": "fbmh_tent_east" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_tent_strawbed3_southeast", + "result": "faction_base_modular_hub_tent_strawbed3_southeast", "description": "A pair of straw beds in the southeast tent will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_tent_strawbed3_southeast", + "construction_blueprint": "fbmh_tent_strawbed3_southeast", "blueprint_name": "southeast straw beds", - "blueprint_requires": [ { "id": "fbmf_tent_southeast" } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_southeast" }, { "id": "fbmf_bed2_southeast" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_southeast" }, { "id": "fbmf_bed2_southeast" } ], + "blueprint_requires": [ { "id": "fbmh_tent_southeast" } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_southeast" }, { "id": "fbmh_bed2_southeast" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_southeast" }, { "id": "fbmh_bed2_southeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_tent_bed3_southeast", + "result": "faction_base_modular_hub_tent_bed3_southeast", "description": "A pair of proper beds in the southeast tent will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_tent_bed3_southeast", + "construction_blueprint": "fbmh_tent_bed3_southeast", "blueprint_name": "southeast beds", - "blueprint_requires": [ { "id": "fbmf_tent_southeast" } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_southeast" }, { "id": "fbmf_bed2_southeast" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_southeast" }, { "id": "fbmf_bed2_southeast" } ], + "blueprint_requires": [ { "id": "fbmh_tent_southeast" } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_southeast" }, { "id": "fbmh_bed2_southeast" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_southeast" }, { "id": "fbmh_bed2_southeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room_strawbed3_southeast", + "result": "faction_base_modular_hub_room_strawbed3_southeast", "description": "A pair of straw beds in the southeast room will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room_strawbed3_southeast", + "construction_blueprint": "fbmh_room_strawbed3_southeast", "blueprint_name": "southeast straw beds", - "blueprint_requires": [ { "id": "fbmf_southeast", "amount": 4 } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_southeast" }, { "id": "fbmf_bed2_southeast" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_southeast" }, { "id": "fbmf_bed2_southeast" }, { "id": "fbmf_tent_southeast" } ], + "blueprint_requires": [ { "id": "fbmh_southeast", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_southeast" }, { "id": "fbmh_bed2_southeast" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_southeast" }, { "id": "fbmh_bed2_southeast" }, { "id": "fbmh_tent_southeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room_bed3_southeast", + "result": "faction_base_modular_hub_room_bed3_southeast", "description": "A pair of proper beds in the southeast room will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room_bed3_southeast", + "construction_blueprint": "fbmh_room_bed3_southeast", "blueprint_name": "southeast beds", - "blueprint_requires": [ { "id": "fbmf_southeast", "amount": 4 } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_southeast" }, { "id": "fbmf_bed2_southeast" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_southeast" }, { "id": "fbmf_bed2_southeast" }, { "id": "fbmf_tent_southeast" } ], + "blueprint_requires": [ { "id": "fbmh_southeast", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_southeast" }, { "id": "fbmh_bed2_southeast" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_southeast" }, { "id": "fbmh_bed2_southeast" }, { "id": "fbmh_tent_southeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_strawbed3_northwest", + "result": "faction_base_modular_hub_strawbed3_northwest", "description": "A pair of straw beds in the northwest building will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_strawbed3_northwest", + "construction_blueprint": "fbmh_strawbed3_northwest", "blueprint_name": "northwest straw beds", - "blueprint_requires": [ { "id": "fbmf_northwest", "amount": 4 } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_northwest" }, { "id": "fbmf_bed2_northwest" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_northwest" }, { "id": "fbmf_bed2_northwest" } ], + "blueprint_requires": [ { "id": "fbmh_northwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_northwest" }, { "id": "fbmh_bed2_northwest" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_northwest" }, { "id": "fbmh_bed2_northwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_bed3_northwest", + "result": "faction_base_modular_hub_bed3_northwest", "description": "A pair of proper beds in the northwest building will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_bed3_northwest", + "construction_blueprint": "fbmh_bed3_northwest", "blueprint_name": "northwest beds", - "blueprint_requires": [ { "id": "fbmf_northwest", "amount": 4 } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_northwest" }, { "id": "fbmf_bed2_northwest" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_northwest" }, { "id": "fbmf_bed2_northwest" } ], + "blueprint_requires": [ { "id": "fbmh_northwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_northwest" }, { "id": "fbmh_bed2_northwest" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_northwest" }, { "id": "fbmh_bed2_northwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_tent_strawbed3_west", + "result": "faction_base_modular_hub_tent_strawbed3_west", "description": "A pair of straw beds in the west tent will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_tent_strawbed3_west", + "construction_blueprint": "fbmh_tent_strawbed3_west", "blueprint_name": "west straw beds", - "blueprint_requires": [ { "id": "fbmf_tent_west" } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_west" }, { "id": "fbmf_bed2_west" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_west" }, { "id": "fbmf_bed2_west" } ], + "blueprint_requires": [ { "id": "fbmh_tent_west" } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_west" }, { "id": "fbmh_bed2_west" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_west" }, { "id": "fbmh_bed2_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_tent_bed3_west", + "result": "faction_base_modular_hub_tent_bed3_west", "description": "A pair of proper beds in the west tent will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_tent_bed3_west", + "construction_blueprint": "fbmh_tent_bed3_west", "blueprint_name": "west beds", - "blueprint_requires": [ { "id": "fbmf_tent_west" } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_west" }, { "id": "fbmf_bed2_west" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_west" }, { "id": "fbmf_bed2_west" } ], + "blueprint_requires": [ { "id": "fbmh_tent_west" } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_west" }, { "id": "fbmh_bed2_west" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_west" }, { "id": "fbmh_bed2_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room_strawbed3_west", + "result": "faction_base_modular_hub_room_strawbed3_west", "description": "A pair of straw beds in the west room will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room_strawbed3_west", + "construction_blueprint": "fbmh_room_strawbed3_west", "blueprint_name": "west straw beds", - "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_west" }, { "id": "fbmf_bed2_west" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_west" }, { "id": "fbmf_bed2_west" }, { "id": "fbmf_tent_west" } ], + "blueprint_requires": [ { "id": "fbmh_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_west" }, { "id": "fbmh_bed2_west" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_west" }, { "id": "fbmh_bed2_west" }, { "id": "fbmh_tent_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room_bed3_west", + "result": "faction_base_modular_hub_room_bed3_west", "description": "A pair of proper beds in the west room will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room_bed3_west", + "construction_blueprint": "fbmh_room_bed3_west", "blueprint_name": "west beds", - "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_west" }, { "id": "fbmf_bed2_west" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_west" }, { "id": "fbmf_bed2_west" }, { "id": "fbmf_tent_west" } ], + "blueprint_requires": [ { "id": "fbmh_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_west" }, { "id": "fbmh_bed2_west" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_west" }, { "id": "fbmh_bed2_west" }, { "id": "fbmh_tent_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_tent_strawbed3_southwest", + "result": "faction_base_modular_hub_tent_strawbed3_southwest", "description": "A pair of straw beds in the southwest tent will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_tent_strawbed3_southwest", + "construction_blueprint": "fbmh_tent_strawbed3_southwest", "blueprint_name": "southwest straw beds", - "blueprint_requires": [ { "id": "fbmf_tent_southwest" } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_southwest" }, { "id": "fbmf_bed2_southwest" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_southwest" }, { "id": "fbmf_bed2_southwest" } ], + "blueprint_requires": [ { "id": "fbmh_tent_southwest" } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_southwest" }, { "id": "fbmh_bed2_southwest" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_southwest" }, { "id": "fbmh_bed2_southwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_tent_bed3_southwest", + "result": "faction_base_modular_hub_tent_bed3_southwest", "description": "A pair of proper beds in the southwest tent will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_tent_bed3_southwest", + "construction_blueprint": "fbmh_tent_bed3_southwest", "blueprint_name": "southwest beds", - "blueprint_requires": [ { "id": "fbmf_tent_southwest" } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_southwest" }, { "id": "fbmf_bed2_southwest" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_southwest" }, { "id": "fbmf_bed2_southwest" } ], + "blueprint_requires": [ { "id": "fbmh_tent_southwest" } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_southwest" }, { "id": "fbmh_bed2_southwest" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_southwest" }, { "id": "fbmh_bed2_southwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room_strawbed3_southwest", + "result": "faction_base_modular_hub_room_strawbed3_southwest", "description": "A pair of straw beds in the southwest room will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room_strawbed3_southwest", + "construction_blueprint": "fbmh_room_strawbed3_southwest", "blueprint_name": "southwest straw beds", - "blueprint_requires": [ { "id": "fbmf_southwest", "amount": 4 } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_southwest" }, { "id": "fbmf_bed2_southwest" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_southwest" }, { "id": "fbmf_bed2_southwest" }, { "id": "fbmf_tent_southwest" } ], + "blueprint_requires": [ { "id": "fbmh_southwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_southwest" }, { "id": "fbmh_bed2_southwest" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_southwest" }, { "id": "fbmh_bed2_southwest" }, { "id": "fbmh_tent_southwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room_bed3_southwest", + "result": "faction_base_modular_hub_room_bed3_southwest", "description": "A pair of proper beds in the southwest room will allow us to house two more people and expand the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room_bed3_southwest", + "construction_blueprint": "fbmh_room_bed3_southwest", "blueprint_name": "southwest beds", - "blueprint_requires": [ { "id": "fbmf_southwest", "amount": 4 } ], - "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_southwest" }, { "id": "fbmf_bed2_southwest" } ], - "blueprint_excludes": [ { "id": "fbmf_bed1_southwest" }, { "id": "fbmf_bed2_southwest" }, { "id": "fbmf_tent_southwest" } ], + "blueprint_requires": [ { "id": "fbmh_southwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmh_bed1_southwest" }, { "id": "fbmh_bed2_southwest" } ], + "blueprint_excludes": [ { "id": "fbmh_bed1_southwest" }, { "id": "fbmh_bed2_southwest" }, { "id": "fbmh_tent_southwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_kitchen_fireplace_center", + "result": "faction_base_modular_hub_core_kitchen_fireplace_center", "description": "A fireplace, counter, and some pots and pans in the central building will allow us to cook simple recipes and organize hunting expeditions.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_kitchen_fireplace_center", + "construction_blueprint": "fbmh_core_kitchen_fireplace_center", "blueprint_name": "central fireplace", - "blueprint_requires": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_ne_center" } ], + "blueprint_requires": [ { "id": "fbmh_center", "amount": 2 }, { "id": "fbmh_ne_center" } ], "blueprint_provides": [ { "id": "trapping" }, { "id": "hunting" }, { "id": "kitchen" }, { "id": "kitchen_recipes_1" } ], "blueprint_resources": [ "fake_fireplace", "pot" ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_kitchen_butchery_center", + "result": "faction_base_modular_hub_core_kitchen_butchery_center", "description": "We need a butchery rack to maximize the harvest from our hunting and trapping efforts.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_kitchen_butchery_center", + "construction_blueprint": "fbmh_core_kitchen_butchery_center", "blueprint_name": "central butchery rack", - "blueprint_requires": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_ne_center" } ], + "blueprint_requires": [ { "id": "fbmh_center", "amount": 2 }, { "id": "fbmh_ne_center" } ], "blueprint_provides": [ { "id": "trapping" }, { "id": "hunting" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_kitchen_toolrack_center", + "result": "faction_base_modular_hub_core_kitchen_toolrack_center", "description": "A tool rack in the central building will give us a place to store tools.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_kitchen_toolrack_center", + "construction_blueprint": "fbmh_core_kitchen_toolrack_center", "blueprint_name": "central tool rack", - "blueprint_requires": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_nw_center" } ], + "blueprint_requires": [ { "id": "fbmh_center", "amount": 2 }, { "id": "fbmh_nw_center" } ], "blueprint_provides": [ { "id": "tool_storage" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_kitchen_table_center", + "result": "faction_base_modular_hub_core_kitchen_table_center", "description": "Setting up some tables and chairs will make the central building into a dining area, and we can also use them as a workspace to organize the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_kitchen_table_center", + "construction_blueprint": "fbmh_core_kitchen_table_center", "blueprint_name": "central dining hall", - "blueprint_requires": [ { "id": "fbmf_center", "amount": 4 }, { "id": "fbmf_ne_center" }, { "id": "fbmf_nw_center" } ], + "blueprint_requires": [ { "id": "fbmh_center", "amount": 4 }, { "id": "fbmh_ne_center" }, { "id": "fbmh_nw_center" } ], "blueprint_provides": [ { "id": "relaying" }, { "id": "walls" }, { "id": "recruiting" }, { "id": "scouting" }, { "id": "patrolling" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_kitchen_table_south", + "result": "faction_base_modular_hub_core_kitchen_table_south", "description": "Setting up some tables and chairs will make the central building into a dining area, and we can also use them as a workspace to organize the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "skill_used": "fabrication", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_kitchen_table_south", + "construction_blueprint": "fbmh_core_kitchen_table_south", "blueprint_name": "south dining hall", - "blueprint_requires": [ { "id": "fbmf_south", "amount": 4 }, { "id": "fbmf_se_south" }, { "id": "fbmf_sw_south" } ], + "blueprint_requires": [ { "id": "fbmh_south", "amount": 4 }, { "id": "fbmh_se_south" }, { "id": "fbmh_sw_south" } ], "blueprint_provides": [ { "id": "relaying" }, { "id": "walls" }, { "id": "recruiting" }, { "id": "scouting" }, { "id": "patrolling" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_kitchen_stove_south", + "result": "faction_base_modular_hub_core_kitchen_stove_south", "description": "A wood stove, counter, and some pots and pans in the south half of the central building will allow us to cook simple recipes and organize hunting expeditions. The stove will be more efficient than a fireplace.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_kitchen_stove_south", + "construction_blueprint": "fbmh_core_kitchen_stove_south", "blueprint_name": "south wood stove", "blueprint_resources": [ "fake_stove" ], - "blueprint_requires": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_sw_south" } ], + "blueprint_requires": [ { "id": "fbmh_south", "amount": 2 }, { "id": "fbmh_sw_south" } ], "blueprint_provides": [ { "id": "trapping" }, { "id": "hunting" }, { "id": "kitchen" }, { "id": "kitchen_recipes_1" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_well_north", + "result": "faction_base_modular_hub_well_north", "description": "Digging a well will give us easy access to water.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_well_north", + "construction_blueprint": "fbmh_well_north", "blueprint_name": "north water well", - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_root_cellar_north", + "result": "faction_base_modular_hub_root_cellar_north", "description": "Digging a root cellar will give us a way to preserve food.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_root_cellar_north", + "construction_blueprint": "fbmh_root_cellar_north", "blueprint_name": "north root cellar", "blueprint_provides": [ { "id": "pantry" } ], - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_radio_tower_north", + "result": "faction_base_modular_hub_radio_tower_north", "description": "We could build a radio tower to improve the range of our radios.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", @@ -524,10 +549,10 @@ "autolearn": false, "never_learn": true, "time": "24 h", - "construction_blueprint": "fbmf_radio_tower_north", + "construction_blueprint": "fbmh_radio_tower_north", "blueprint_name": "north radio tower", - "blueprint_provides": [ { "id": "fbmf_radio_tower_north" } ], - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_radio_tower_north" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], "qualities": [ { "id": "HAMMER", "level": 2 }, { "id": "SAW_M", "level": 1 }, @@ -551,7 +576,7 @@ }, { "type": "recipe", - "result": "faction_base_modular_field_radio_console_north", + "result": "faction_base_modular_hub_radio_console_north", "description": "Adding a console to control the radio tower will help with recruiting more survivors.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", @@ -560,10 +585,10 @@ "autolearn": false, "never_learn": true, "time": "24 h", - "construction_blueprint": "fbmf_radio_console_north", + "construction_blueprint": "fbmh_radio_console_north", "blueprint_name": "north radio console", - "blueprint_provides": [ { "id": "fbmf_radio_console_north" }, { "id": "radio" } ], - "blueprint_requires": [ { "id": "fbmf_radio_tower_north" } ], + "blueprint_provides": [ { "id": "fbmh_radio_console_north" }, { "id": "radio" } ], + "blueprint_requires": [ { "id": "fbmh_radio_tower_north" } ], "qualities": [ { "id": "SAW_M", "level": 1 }, { "id": "WRENCH", "level": 1 }, { "id": "SCREW", "level": 1 } ], "components": [ [ [ "processor", 2 ] ], @@ -588,7 +613,7 @@ "autolearn": false, "never_learn": true, "time": "1 m", - "construction_blueprint": "faction_base_modular_field_0", + "construction_blueprint": "faction_base_modular_hub_0", "blueprint_name": "basic survey", "blueprint_requires": [ { "id": "not_an_upgrade" } ] }, @@ -602,7 +627,7 @@ "autolearn": false, "never_learn": true, "time": "1 m", - "construction_blueprint": "faction_base_modular_field_0", + "construction_blueprint": "faction_base_modular_hub_0", "blueprint_name": "basic survey", "blueprint_requires": [ { "id": "not_an_upgrade" } ] }, @@ -616,7 +641,7 @@ "autolearn": false, "never_learn": true, "time": "1 m", - "construction_blueprint": "faction_base_modular_field_0", + "construction_blueprint": "faction_base_modular_hub_0", "blueprint_name": "basic survey", "blueprint_requires": [ { "id": "not_an_upgrade" } ] }, @@ -630,7 +655,7 @@ "autolearn": false, "never_learn": true, "time": "1 m", - "construction_blueprint": "faction_base_modular_field_0", + "construction_blueprint": "faction_base_modular_hub_0", "blueprint_name": "basic survey", "blueprint_requires": [ { "id": "not_an_upgrade" } ] } diff --git a/data/json/recipes/basecamps/recipe_modular_field_defenses.json b/data/json/recipes/basecamps/recipe_modular_field_defenses.json index 200aab48d7a08..e474d09f60d96 100644 --- a/data/json/recipes/basecamps/recipe_modular_field_defenses.json +++ b/data/json/recipes/basecamps/recipe_modular_field_defenses.json @@ -1,120 +1,122 @@ [ { "type": "recipe", - "result": "faction_base_modular_field_trench_north", + "result": "faction_base_modular_hub_trench_north", "description": "Digging a trench along the north edge of the camp would provide some defense and generate building materials.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_trench_north", + "construction_blueprint": "fbmh_trench_north", "blueprint_name": "north trench", - "blueprint_provides": [ { "id": "fbmf_trench_north" } ], - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_trench_north" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbm_no_dig" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_trench_south", + "result": "faction_base_modular_hub_trench_south", "description": "Digging a trench along the south edge of the camp would provide some defense and generate building materials.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_trench_south", + "construction_blueprint": "fbmh_trench_south", "blueprint_name": "south trench", - "blueprint_provides": [ { "id": "fbmf_trench_south" } ], - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_trench_south" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbm_no_dig" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_trench_northeast", + "result": "faction_base_modular_hub_trench_northeast", "description": "Digging a trench along the northeast corner of the camp would provide some defense and generate building materials. If we have solid buildings all along the east side of the camp, we would only need to dig the trench long enough to reach the buildings.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "skill_used": "fabrication", "never_learn": true, - "construction_blueprint": "fbmf_trench_corner_northeast", + "construction_blueprint": "fbmh_trench_corner_northeast", "blueprint_name": "northeast trench", - "blueprint_provides": [ { "id": "fbmf_trench_northeast" } ], - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_trench_northeast" }, { "id": "fbmf_trench_east" } ], + "blueprint_provides": [ { "id": "fbmh_trench_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbm_no_dig" }, { "id": "fbmh_trench_northeast" }, { "id": "fbmh_trench_east" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_trench_northwest", + "result": "faction_base_modular_hub_trench_northwest", "description": "Digging a trench along the northwest corner of the camp would provide some defense and generate building materials. If we have solid buildings all along the west side of the camp, we would only need to dig the trench long enough to reach the buildings.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_trench_corner_northwest", + "construction_blueprint": "fbmh_trench_corner_northwest", "blueprint_name": "northwest trench", - "blueprint_provides": [ { "id": "fbmf_trench_northwest" } ], - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_trench_northwest" }, { "id": "fbmf_trench_west" } ], + "blueprint_provides": [ { "id": "fbmh_trench_northwest" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbm_no_dig" }, { "id": "fbmh_trench_northwest" }, { "id": "fbmh_trench_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_trench_southeast", + "result": "faction_base_modular_hub_trench_southeast", "description": "Digging a trench along the southeast corner of the camp would provide some defense and generate building materials. If we have solid buildings all along the east side of the camp, we would only need to dig the trench long enough to reach the buildings.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_trench_corner_southeast", + "construction_blueprint": "fbmh_trench_corner_southeast", "blueprint_name": "southeast trench", - "blueprint_provides": [ { "id": "fbmf_trench_southeast" } ], - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_trench_southeast" }, { "id": "fbmf_trench_east" } ], + "blueprint_provides": [ { "id": "fbmh_trench_southeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbm_no_dig" }, { "id": "fbmh_trench_southeast" }, { "id": "fbmh_trench_east" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_trench_southwest", + "result": "faction_base_modular_hub_trench_southwest", "description": "Digging a trench along the southwest corner of the camp would provide some defense and generate building materials. If we have solid buildings all along the west side of the camp, we would only need to dig the trench long enough to reach the buildings.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_trench_corner_southwest", + "construction_blueprint": "fbmh_trench_corner_southwest", "blueprint_name": "southwest trench", - "blueprint_provides": [ { "id": "fbmf_trench_southwest" } ], - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_trench_southwest" }, { "id": "fbmf_trench_west" } ], + "blueprint_provides": [ { "id": "fbmh_trench_southwest" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbm_no_dig" }, { "id": "fbmh_trench_southwest" }, { "id": "fbmh_trench_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_trench_east", + "result": "faction_base_modular_hub_trench_east", "description": "Digging a trench along the east edge of the camp would provide some defense and generate building materials. We'll need to run the trench the length of the camp if we don't have solid buildings all along the east side.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_trench_east", + "construction_blueprint": "fbmh_trench_east", "blueprint_name": "east trench", - "blueprint_provides": [ { "id": "fbmf_trench_east" } ], - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_trench_southeast" }, { "id": "fbmf_trench_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_trench_east" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbm_no_dig" }, { "id": "fbmh_trench_southeast" }, { "id": "fbmh_trench_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_trench_west", + "result": "faction_base_modular_hub_trench_west", "description": "Digging a trench along the west edge of the camp would provide some defense and generate building materials. We'll need to run the trench the length of the camp if we don't have solid buildings all along the west side.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_trench_west", + "construction_blueprint": "fbmh_trench_west", "blueprint_name": "west trench", - "blueprint_provides": [ { "id": "fbmf_trench_west" } ], - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_trench_southwest" }, { "id": "fbmf_trench_northwest" } ], + "blueprint_provides": [ { "id": "fbmh_trench_west" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbm_no_dig" }, { "id": "fbmh_trench_southwest" }, { "id": "fbmh_trench_northwest" } ], "blueprint_autocalc": true } ] diff --git a/data/json/recipes/basecamps/recipe_modular_field_metal.json b/data/json/recipes/basecamps/recipe_modular_field_metal.json index 2828f49324962..29dc1dc66254f 100644 --- a/data/json/recipes/basecamps/recipe_modular_field_metal.json +++ b/data/json/recipes/basecamps/recipe_modular_field_metal.json @@ -1,336 +1,336 @@ [ { "type": "recipe", - "result": "faction_base_modular_field_room0_metal_northeast", + "result": "faction_base_modular_hub_room0_metal_northeast", "description": "We need some shelter, so build half of a metal shack with a metal roof on the northeast side of the camp", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room0_metal_northeast", + "construction_blueprint": "fbmh_room0_metal_northeast", "blueprint_name": "northeast shack", - "blueprint_requires": [ { "id": "faction_base_modular_field_0" } ], - "blueprint_provides": [ { "id": "fbmf_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_0" } ], + "blueprint_provides": [ { "id": "fbmh_northeast" } ], + "blueprint_excludes": [ { "id": "fbmh_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room1_metal_northeast", + "result": "faction_base_modular_hub_room1_metal_northeast", "description": "We should use metal to expand the shelter so we have space for another bed.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room1_metal_northeast", + "construction_blueprint": "fbmh_room1_metal_northeast", "blueprint_name": "expand northeast shack", - "blueprint_requires": [ { "id": "fbmf_northeast" } ], - "blueprint_provides": [ { "id": "fbmf_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_northeast", "amount": 2 }, { "id": "fbmf_tent_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_northeast" } ], + "blueprint_excludes": [ { "id": "fbmh_northeast", "amount": 2 }, { "id": "fbmh_tent_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room2_metal_northeast", + "result": "faction_base_modular_hub_room2_metal_northeast", "description": "We should use metal to finish the northeast shack.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room2_metal_northeast", + "construction_blueprint": "fbmh_room2_metal_northeast", "blueprint_name": "finish northeast shack", - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 2 } ], - "blueprint_provides": [ { "id": "fbmf_northeast", "amount": 2 } ], - "blueprint_excludes": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_tent_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 2 } ], + "blueprint_provides": [ { "id": "fbmh_northeast", "amount": 2 } ], + "blueprint_excludes": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_tent_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_shack4_metal_east", + "result": "faction_base_modular_hub_shack4_metal_east", "description": "We should expand our housing by putting up a metal building on the east side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_shack4_metal_east", + "construction_blueprint": "fbmh_shack4_metal_east", "blueprint_name": "east shack", - "blueprint_requires": [ { "id": "fbmf_tent_northeast" }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_provides": [ { "id": "fbmf_east", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_east" } ], + "blueprint_requires": [ { "id": "fbmh_tent_northeast" }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_east", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_east" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room4_metal_east", + "result": "faction_base_modular_hub_room4_metal_east", "description": "We should expand our housing by adding a metal room on the east side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room4_metal_east", + "construction_blueprint": "fbmh_room4_metal_east", "blueprint_name": "east room", - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_provides": [ { "id": "fbmf_east", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_east" }, { "id": "fbmf_tent_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_east", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_east" }, { "id": "fbmh_tent_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_shack4_metal_southeast", + "result": "faction_base_modular_hub_shack4_metal_southeast", "description": "We should expand our housing by putting up a metal building on the southeast side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_shack4_metal_southeast", + "construction_blueprint": "fbmh_shack4_metal_southeast", "blueprint_name": "southeast shack", - "blueprint_requires": [ { "id": "fbmf_tent_east" } ], - "blueprint_provides": [ { "id": "fbmf_southeast", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_southeast" } ], + "blueprint_requires": [ { "id": "fbmh_tent_east" } ], + "blueprint_provides": [ { "id": "fbmh_southeast", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_southeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room4_metal_southeast", + "result": "faction_base_modular_hub_room4_metal_southeast", "description": "We should expand our housing by adding a metal room on the southeast side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room4_metal_southeast", + "construction_blueprint": "fbmh_room4_metal_southeast", "blueprint_name": "southeast room", - "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_southeast", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_southeast" }, { "id": "fbmf_tent_east" } ], + "blueprint_requires": [ { "id": "fbmh_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_southeast", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_southeast" }, { "id": "fbmh_tent_east" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room4_metal_northwest", + "result": "faction_base_modular_hub_room4_metal_northwest", "description": "We should expand our housing by putting up a metal building on the northwest side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room4_metal_northwest", + "construction_blueprint": "fbmh_room4_metal_northwest", "blueprint_name": "northwest shack", - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_provides": [ { "id": "fbmf_northwest", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_northwest" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_northwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_northwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_shack4_metal_west", + "result": "faction_base_modular_hub_shack4_metal_west", "description": "We should expand our housing by putting up a metal building on the west side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_shack4_metal_west", + "construction_blueprint": "fbmh_shack4_metal_west", "blueprint_name": "west shack", - "blueprint_requires": [ { "id": "fbmf_tent_northwest" } ], - "blueprint_provides": [ { "id": "fbmf_west", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_west" } ], + "blueprint_requires": [ { "id": "fbmh_tent_northwest" } ], + "blueprint_provides": [ { "id": "fbmh_west", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room4_metal_west", + "result": "faction_base_modular_hub_room4_metal_west", "description": "We should expand our housing by adding a metal room on the west side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room4_metal_west", + "construction_blueprint": "fbmh_room4_metal_west", "blueprint_name": "west room", - "blueprint_requires": [ { "id": "fbmf_northwest", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_west", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_west" }, { "id": "fbmf_tent_northwest" } ], + "blueprint_requires": [ { "id": "fbmh_northwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_west", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_west" }, { "id": "fbmh_tent_northwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_shack4_metal_soutwest", + "result": "faction_base_modular_hub_shack4_metal_soutwest", "description": "We should expand our housing by putting up a metal building on the southwest side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_shack4_metal_southwest", + "construction_blueprint": "fbmh_shack4_metal_southwest", "blueprint_name": "southwest shack", - "blueprint_requires": [ { "id": "fbmf_tent_west" } ], - "blueprint_provides": [ { "id": "fbmf_southwest", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_southwest" } ], + "blueprint_requires": [ { "id": "fbmh_tent_west" } ], + "blueprint_provides": [ { "id": "fbmh_southwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_southwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room4_metal_southwest", + "result": "faction_base_modular_hub_room4_metal_southwest", "description": "We should expand our housing by adding a metal room on the southwest side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room4_metal_southwest", + "construction_blueprint": "fbmh_room4_metal_southwest", "blueprint_name": "southwest room", - "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_southwest", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_southwest" }, { "id": "fbmf_tent_west" } ], + "blueprint_requires": [ { "id": "fbmh_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_southwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_southwest" }, { "id": "fbmh_tent_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_shack_ne_metal_center", + "result": "faction_base_modular_hub_core_shack_ne_metal_center", "description": "A central building can act as a kitchen and dining hall. We should build the northeast quarter of one from metal.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_shack_ne_metal_center", + "construction_blueprint": "fbmh_core_shack_ne_metal_center", "blueprint_name": "central building NE corner", - "blueprint_requires": [ { "id": "fbmf_tent_east" } ], - "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_ne_center" } ], - "blueprint_excludes": [ { "id": "fbmf_ne_center" } ], + "blueprint_requires": [ { "id": "fbmh_tent_east" } ], + "blueprint_provides": [ { "id": "fbmh_center", "amount": 2 }, { "id": "fbmh_ne_center" } ], + "blueprint_excludes": [ { "id": "fbmh_ne_center" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_ne_metal_center", + "result": "faction_base_modular_hub_core_ne_metal_center", "description": "A central building can act as a core and dining hall. We should build out from the east room with metal.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_ne_metal_center", + "construction_blueprint": "fbmh_core_ne_metal_center", "blueprint_name": "central building NE corner", - "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_ne_center" } ], - "blueprint_excludes": [ { "id": "fbmf_ne_center" }, { "id": "fbmf_tent_east" } ], + "blueprint_requires": [ { "id": "fbmh_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_center", "amount": 2 }, { "id": "fbmh_ne_center" } ], + "blueprint_excludes": [ { "id": "fbmh_ne_center" }, { "id": "fbmh_tent_east" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_shack_nw_metal_center", + "result": "faction_base_modular_hub_core_shack_nw_metal_center", "description": "A central building can act as a core and dining hall. We should build the northwest quarter of one from metal.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_shack_nw_metal_center", + "construction_blueprint": "fbmh_core_shack_nw_metal_center", "blueprint_name": "central building NW corner", - "blueprint_requires": [ { "id": "fbmf_tent_west" } ], - "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_nw_center" } ], - "blueprint_excludes": [ { "id": "fbmf_nw_center" } ], + "blueprint_requires": [ { "id": "fbmh_tent_west" } ], + "blueprint_provides": [ { "id": "fbmh_center", "amount": 2 }, { "id": "fbmh_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmh_nw_center" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_nw_metal_center", + "result": "faction_base_modular_hub_core_nw_metal_center", "description": "A central building can act as a core and dining hall. We should build out from the west room with metal.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_nw_metal_center", + "construction_blueprint": "fbmh_core_nw_metal_center", "blueprint_name": "central building NW corner", - "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_nw_center" } ], - "blueprint_excludes": [ { "id": "fbmf_nw_center" }, { "id": "fbmf_tent_west" } ], + "blueprint_requires": [ { "id": "fbmh_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_center", "amount": 2 }, { "id": "fbmh_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmh_nw_center" }, { "id": "fbmh_tent_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_metal_center", + "result": "faction_base_modular_hub_core_metal_center", "description": "A central building can act as a core and dining hall. We should build between the east and west rooms with metal.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_metal_center", + "construction_blueprint": "fbmh_core_metal_center", "blueprint_name": "central building north half", - "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 }, { "id": "fbmf_west", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_center", "amount": 4 }, { "id": "fbmf_ne_center" }, { "id": "fbmf_nw_center" } ], - "blueprint_excludes": [ { "id": "fbmf_ne_center" }, { "id": "fbmf_nw_center" }, { "id": "fbmf_tent_east" }, { "id": "fbmf_tent_west" } ], + "blueprint_requires": [ { "id": "fbmh_east", "amount": 4 }, { "id": "fbmh_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_center", "amount": 4 }, { "id": "fbmh_ne_center" }, { "id": "fbmh_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmh_ne_center" }, { "id": "fbmh_nw_center" }, { "id": "fbmh_tent_east" }, { "id": "fbmh_tent_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_shack_se_metal_south", + "result": "faction_base_modular_hub_core_shack_se_metal_south", "description": "A central building can act as a core and dining hall. We should build the southeast quarter of one from metal.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_shack_se_metal_south", + "construction_blueprint": "fbmh_core_shack_se_metal_south", "blueprint_name": "central building SE corner", - "blueprint_requires": [ { "id": "fbmf_tent_southeast" } ], - "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_se_south" } ], - "blueprint_excludes": [ { "id": "fbmf_se_south" } ], + "blueprint_requires": [ { "id": "fbmh_tent_southeast" } ], + "blueprint_provides": [ { "id": "fbmh_south", "amount": 2 }, { "id": "fbmh_se_south" } ], + "blueprint_excludes": [ { "id": "fbmh_se_south" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_se_metal_south", + "result": "faction_base_modular_hub_core_se_metal_south", "description": "A central building can act as a core and dining hall. We should build out from the southeast room with metal.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_se_metal_south", + "construction_blueprint": "fbmh_core_se_metal_south", "blueprint_name": "central building SE corner", - "blueprint_requires": [ { "id": "fbmf_southeast", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_se_south" } ], - "blueprint_excludes": [ { "id": "fbmf_se_south" }, { "id": "fbmf_tent_southeast" } ], + "blueprint_requires": [ { "id": "fbmh_southeast", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_south", "amount": 2 }, { "id": "fbmh_se_south" } ], + "blueprint_excludes": [ { "id": "fbmh_se_south" }, { "id": "fbmh_tent_southeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_shack_sw_metal_south", + "result": "faction_base_modular_hub_core_shack_sw_metal_south", "description": "A central building can act as a core and dining hall. We should build the southwest quarter of one from metal.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_shack_sw_metal_south", + "construction_blueprint": "fbmh_core_shack_sw_metal_south", "blueprint_name": "central building SW corner", - "blueprint_requires": [ { "id": "fbmf_tent_southwest" } ], - "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_sw_south" } ], - "blueprint_excludes": [ { "id": "fbmf_sw_south" } ], + "blueprint_requires": [ { "id": "fbmh_tent_southwest" } ], + "blueprint_provides": [ { "id": "fbmh_south", "amount": 2 }, { "id": "fbmh_sw_south" } ], + "blueprint_excludes": [ { "id": "fbmh_sw_south" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_sw_metal_south", + "result": "faction_base_modular_hub_core_sw_metal_south", "description": "A central building can act as a core and dining hall. We should build out from the southwest room with metal.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_sw_metal_south", + "construction_blueprint": "fbmh_core_sw_metal_south", "blueprint_name": "central building SW corner", - "blueprint_requires": [ { "id": "fbmf_southwest", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_sw_south" } ], - "blueprint_excludes": [ { "id": "fbmf_sw_south" }, { "id": "fbmf_tent_southwest" } ], + "blueprint_requires": [ { "id": "fbmh_southwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_south", "amount": 2 }, { "id": "fbmh_sw_south" } ], + "blueprint_excludes": [ { "id": "fbmh_sw_south" }, { "id": "fbmh_tent_southwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_metal_south", + "result": "faction_base_modular_hub_core_metal_south", "description": "A central building can act as a core and dining hall. We should build between the southeast and southwest rooms with metal.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_metal_south", + "construction_blueprint": "fbmh_core_metal_south", "blueprint_name": "central building south half", - "blueprint_requires": [ { "id": "fbmf_southeast", "amount": 4 }, { "id": "fbmf_southwest", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_south", "amount": 4 }, { "id": "fbmf_se_south" }, { "id": "fbmf_sw_south" } ], + "blueprint_requires": [ { "id": "fbmh_southeast", "amount": 4 }, { "id": "fbmh_southwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_south", "amount": 4 }, { "id": "fbmh_se_south" }, { "id": "fbmh_sw_south" } ], "blueprint_excludes": [ - { "id": "fbmf_se_south" }, - { "id": "fbmf_sw_south" }, - { "id": "fbmf_tent_southeast" }, - { "id": "fbmf_tent_southwest" } + { "id": "fbmh_se_south" }, + { "id": "fbmh_sw_south" }, + { "id": "fbmh_tent_southeast" }, + { "id": "fbmh_tent_southwest" } ], "blueprint_autocalc": true } diff --git a/data/json/recipes/basecamps/recipe_modular_field_tent.json b/data/json/recipes/basecamps/recipe_modular_field_tent.json index 708c4b8e8fec2..f81b2124d31f8 100644 --- a/data/json/recipes/basecamps/recipe_modular_field_tent.json +++ b/data/json/recipes/basecamps/recipe_modular_field_tent.json @@ -1,7 +1,7 @@ [ { "type": "recipe", - "result": "faction_base_modular_field_tent_northeast", + "result": "faction_base_modular_hub_tent_northeast", "description": "We need some shelter, so set up a tent on the northeast side of the camp.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", @@ -9,16 +9,16 @@ "autolearn": false, "never_learn": true, "time": "3 h", - "construction_blueprint": "fbmf_tent_northeast", + "construction_blueprint": "fbmh_tent_northeast", "blueprint_name": "northeast tent", - "blueprint_requires": [ { "id": "faction_base_modular_field_0" } ], - "blueprint_provides": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_tent_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_0" } ], + "blueprint_provides": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_tent_northeast" } ], + "blueprint_excludes": [ { "id": "fbmh_northeast" } ], "components": [ [ [ "large_tent_kit", 1 ], [ "broketent", 4 ], [ "tent_kit", 3 ], [ "shelter_kit", 4 ] ] ] }, { "type": "recipe", - "result": "faction_base_modular_field_tent_east", + "result": "faction_base_modular_hub_tent_east", "description": "We should expand our housing by putting up a tent on the east side, though doing so will mean we will need more materials to build the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", @@ -26,16 +26,16 @@ "autolearn": false, "never_learn": true, "time": "3 h", - "construction_blueprint": "fbmf_tent_east", + "construction_blueprint": "fbmh_tent_east", "blueprint_name": "east tent", - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_provides": [ { "id": "fbmf_east", "amount": 4 }, { "id": "fbmf_tent_east" } ], - "blueprint_excludes": [ { "id": "fbmf_east" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_east", "amount": 4 }, { "id": "fbmh_tent_east" } ], + "blueprint_excludes": [ { "id": "fbmh_east" } ], "components": [ [ [ "large_tent_kit", 1 ], [ "broketent", 4 ], [ "tent_kit", 3 ], [ "shelter_kit", 4 ] ] ] }, { "type": "recipe", - "result": "faction_base_modular_field_tent_southeast", + "result": "faction_base_modular_hub_tent_southeast", "description": "We should expand our housing by putting up a tent on the southeast side, though doing so will mean we will need more materials to build the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", @@ -43,16 +43,16 @@ "autolearn": false, "never_learn": true, "time": "3 h", - "construction_blueprint": "fbmf_tent_southeast", + "construction_blueprint": "fbmh_tent_southeast", "blueprint_name": "southeast tent", - "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_southeast", "amount": 4 }, { "id": "fbmf_tent_southeast" } ], - "blueprint_excludes": [ { "id": "fbmf_southeast" } ], + "blueprint_requires": [ { "id": "fbmh_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_southeast", "amount": 4 }, { "id": "fbmh_tent_southeast" } ], + "blueprint_excludes": [ { "id": "fbmh_southeast" } ], "components": [ [ [ "large_tent_kit", 1 ], [ "broketent", 4 ], [ "tent_kit", 3 ], [ "shelter_kit", 4 ] ] ] }, { "type": "recipe", - "result": "faction_base_modular_field_tent_northwest", + "result": "faction_base_modular_hub_tent_northwest", "description": "We should expand our housing by putting up a tent on the northwest side, though doing so will mean we will need more materials to build the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", @@ -60,16 +60,16 @@ "autolearn": false, "never_learn": true, "time": "3 h", - "construction_blueprint": "fbmf_tent_northwest", + "construction_blueprint": "fbmh_tent_northwest", "blueprint_name": "northwest tent", - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_provides": [ { "id": "fbmf_northwest", "amount": 4 }, { "id": "fbmf_tent_northwest" } ], - "blueprint_excludes": [ { "id": "fbmf_northwest" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_northwest", "amount": 4 }, { "id": "fbmh_tent_northwest" } ], + "blueprint_excludes": [ { "id": "fbmh_northwest" } ], "components": [ [ [ "large_tent_kit", 1 ], [ "broketent", 4 ], [ "tent_kit", 3 ], [ "shelter_kit", 4 ] ] ] }, { "type": "recipe", - "result": "faction_base_modular_field_tent_northwest", + "result": "faction_base_modular_hub_tent_northwest", "description": "We should expand our housing by putting up a tent on the west side, though doing so will mean we will need more materials to build the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", @@ -77,16 +77,16 @@ "autolearn": false, "never_learn": true, "time": "3 h", - "construction_blueprint": "fbmf_tent_west", + "construction_blueprint": "fbmh_tent_west", "blueprint_name": "west tent", - "blueprint_requires": [ { "id": "fbmf_northwest", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_west", "amount": 4 }, { "id": "fbmf_tent_west" } ], - "blueprint_excludes": [ { "id": "fbmf_west" } ], + "blueprint_requires": [ { "id": "fbmh_northwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_west", "amount": 4 }, { "id": "fbmh_tent_west" } ], + "blueprint_excludes": [ { "id": "fbmh_west" } ], "components": [ [ [ "large_tent_kit", 1 ], [ "broketent", 4 ], [ "tent_kit", 3 ], [ "shelter_kit", 4 ] ] ] }, { "type": "recipe", - "result": "faction_base_modular_field_tent_northwest", + "result": "faction_base_modular_hub_tent_northwest", "description": "We should expand our housing by putting up a tent on the southwest side, though doing so will mean we will need more materials to build the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", @@ -94,11 +94,11 @@ "autolearn": false, "never_learn": true, "time": "3 h", - "construction_blueprint": "fbmf_tent_southwest", + "construction_blueprint": "fbmh_tent_southwest", "blueprint_name": "southwest tent", - "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_southwest", "amount": 4 }, { "id": "fbmf_tent_southwest" } ], - "blueprint_excludes": [ { "id": "fbmf_southwest" } ], + "blueprint_requires": [ { "id": "fbmh_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_southwest", "amount": 4 }, { "id": "fbmh_tent_southwest" } ], + "blueprint_excludes": [ { "id": "fbmh_southwest" } ], "components": [ [ [ "large_tent_kit", 1 ], [ "broketent", 4 ], [ "tent_kit", 3 ], [ "shelter_kit", 4 ] ] ] } ] diff --git a/data/json/recipes/basecamps/recipe_modular_field_wad.json b/data/json/recipes/basecamps/recipe_modular_field_wad.json index e5142bd3da24c..bff0bd28da8d3 100644 --- a/data/json/recipes/basecamps/recipe_modular_field_wad.json +++ b/data/json/recipes/basecamps/recipe_modular_field_wad.json @@ -1,340 +1,340 @@ [ { "type": "recipe", - "result": "faction_base_modular_field_room0_wad_northeast", + "result": "faction_base_modular_hub_room0_wad_northeast", "description": "We need some shelter, so build half of a wattle-and-daub shack with a sod roof on the northeast side of the camp", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room0_wad_northeast", + "construction_blueprint": "fbmh_room0_wad_northeast", "blueprint_name": "northeast shack", - "blueprint_requires": [ { "id": "faction_base_modular_field_0" } ], - "blueprint_provides": [ { "id": "fbmf_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_0" } ], + "blueprint_provides": [ { "id": "fbmh_northeast" } ], + "blueprint_excludes": [ { "id": "fbmh_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room1_wad_northeast", + "result": "faction_base_modular_hub_room1_wad_northeast", "description": "We should use wattle-and-daub to expand the shelter so we have space for another bed.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room1_wad_northeast", + "construction_blueprint": "fbmh_room1_wad_northeast", "blueprint_name": "expand northeast shack", - "blueprint_requires": [ { "id": "fbmf_northeast" } ], - "blueprint_provides": [ { "id": "fbmf_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_northeast", "amount": 2 }, { "id": "fbmf_tent_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_northeast" } ], + "blueprint_excludes": [ { "id": "fbmh_northeast", "amount": 2 }, { "id": "fbmh_tent_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room2_wad_northeast", + "result": "faction_base_modular_hub_room2_wad_northeast", "description": "We should use wattle-and-daub to finish the northeast shack.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "skill_used": "fabrication", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room2_wad_northeast", + "construction_blueprint": "fbmh_room2_wad_northeast", "blueprint_name": "finish northeast shack", - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 2 } ], - "blueprint_provides": [ { "id": "fbmf_northeast", "amount": 2 } ], - "blueprint_excludes": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_tent_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 2 } ], + "blueprint_provides": [ { "id": "fbmh_northeast", "amount": 2 } ], + "blueprint_excludes": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_tent_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_shack4_wad_east", + "result": "faction_base_modular_hub_shack4_wad_east", "description": "We should expand our housing by putting up a wattle-and-daub building on the east side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_shack4_wad_east", + "construction_blueprint": "fbmh_shack4_wad_east", "blueprint_name": "east shack", - "blueprint_requires": [ { "id": "fbmf_tent_northeast" }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_provides": [ { "id": "fbmf_east", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_east" } ], + "blueprint_requires": [ { "id": "fbmh_tent_northeast" }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_east", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_east" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room4_wad_east", + "result": "faction_base_modular_hub_room4_wad_east", "description": "We should expand our housing by adding a wattle-and-daub room on the east side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "skill_used": "fabrication", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room4_wad_east", + "construction_blueprint": "fbmh_room4_wad_east", "blueprint_name": "east room", - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_provides": [ { "id": "fbmf_east", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_east" }, { "id": "fbmf_tent_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_east", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_east" }, { "id": "fbmh_tent_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_shack4_wad_southeast", + "result": "faction_base_modular_hub_shack4_wad_southeast", "description": "We should expand our housing by putting up a wattle-and-daub building on the southeast side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_shack4_wad_southeast", + "construction_blueprint": "fbmh_shack4_wad_southeast", "blueprint_name": "southeast shack", - "blueprint_requires": [ { "id": "fbmf_tent_east" } ], - "blueprint_provides": [ { "id": "fbmf_southeast", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_southeast" } ], + "blueprint_requires": [ { "id": "fbmh_tent_east" } ], + "blueprint_provides": [ { "id": "fbmh_southeast", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_southeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room4_wad_southeast", + "result": "faction_base_modular_hub_room4_wad_southeast", "description": "We should expand our housing by adding a wattle-and-daub room on the southeast side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "skills_required": [ [ "survival", 3 ], [ "tailor", 1 ] ], "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room4_wad_southeast", + "construction_blueprint": "fbmh_room4_wad_southeast", "blueprint_name": "southeast room", - "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_southeast", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_southeast" }, { "id": "fbmf_tent_east" } ], + "blueprint_requires": [ { "id": "fbmh_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_southeast", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_southeast" }, { "id": "fbmh_tent_east" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room4_wad_northwest", + "result": "faction_base_modular_hub_room4_wad_northwest", "description": "We should expand our housing by putting up a wattle-and-daub building on the northwest side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room4_wad_northwest", + "construction_blueprint": "fbmh_room4_wad_northwest", "blueprint_name": "northwest shack", - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_provides": [ { "id": "fbmf_northwest", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_northwest" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_northwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_northwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_shack4_wad_west", + "result": "faction_base_modular_hub_shack4_wad_west", "description": "We should expand our housing by putting up a wattle-and-daub building on the west side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_shack4_wad_west", + "construction_blueprint": "fbmh_shack4_wad_west", "blueprint_name": "west shack", - "blueprint_requires": [ { "id": "fbmf_tent_northwest" } ], - "blueprint_provides": [ { "id": "fbmf_west", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_west" } ], + "blueprint_requires": [ { "id": "fbmh_tent_northwest" } ], + "blueprint_provides": [ { "id": "fbmh_west", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room4_wad_west", + "result": "faction_base_modular_hub_room4_wad_west", "description": "We should expand our housing by adding a wattle-and-daub room on the west side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room4_wad_west", + "construction_blueprint": "fbmh_room4_wad_west", "blueprint_name": "west room", - "blueprint_requires": [ { "id": "fbmf_northwest", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_west", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_west" }, { "id": "fbmf_tent_northwest" } ], + "blueprint_requires": [ { "id": "fbmh_northwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_west", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_west" }, { "id": "fbmh_tent_northwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_shack4_wad_southwest", + "result": "faction_base_modular_hub_shack4_wad_southwest", "description": "We should expand our housing by putting up a wattle-and-daub building on the southwest side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_shack4_wad_southwest", + "construction_blueprint": "fbmh_shack4_wad_southwest", "blueprint_name": "southwest shack", - "blueprint_requires": [ { "id": "fbmf_tent_west" } ], - "blueprint_provides": [ { "id": "fbmf_southwest", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_southwest" } ], + "blueprint_requires": [ { "id": "fbmh_tent_west" } ], + "blueprint_provides": [ { "id": "fbmh_southwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_southwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room4_wad_southwest", + "result": "faction_base_modular_hub_room4_wad_southwest", "description": "We should expand our housing by adding a wattle-and-daub room on the southwest side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room4_wad_southwest", + "construction_blueprint": "fbmh_room4_wad_southwest", "blueprint_name": "southwest room", - "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_southwest", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_southwest" }, { "id": "fbmf_tent_west" } ], + "blueprint_requires": [ { "id": "fbmh_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_southwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_southwest" }, { "id": "fbmh_tent_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_shack_ne_wad_center", + "result": "faction_base_modular_hub_core_shack_ne_wad_center", "description": "A central building can act as a kitchen and dining hall. We should build the northeast quarter of one from wattle-and-daub.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_shack_ne_wad_center", + "construction_blueprint": "fbmh_core_shack_ne_wad_center", "blueprint_name": "central building NE corner", - "blueprint_requires": [ { "id": "fbmf_tent_east" } ], - "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_ne_center" } ], - "blueprint_excludes": [ { "id": "fbmf_ne_center" } ], + "blueprint_requires": [ { "id": "fbmh_tent_east" } ], + "blueprint_provides": [ { "id": "fbmh_center", "amount": 2 }, { "id": "fbmh_ne_center" } ], + "blueprint_excludes": [ { "id": "fbmh_ne_center" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_ne_wad_center", + "result": "faction_base_modular_hub_core_ne_wad_center", "description": "A central building can act as a core and dining hall. We should build out from the east room with wattle-and-daub.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_ne_wad_center", + "construction_blueprint": "fbmh_core_ne_wad_center", "blueprint_name": "central building NE corner", - "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_ne_center" } ], - "blueprint_excludes": [ { "id": "fbmf_ne_center" }, { "id": "fbmf_tent_east" } ], + "blueprint_requires": [ { "id": "fbmh_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_center", "amount": 2 }, { "id": "fbmh_ne_center" } ], + "blueprint_excludes": [ { "id": "fbmh_ne_center" }, { "id": "fbmh_tent_east" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_shack_nw_wad_center", + "result": "faction_base_modular_hub_core_shack_nw_wad_center", "description": "A central building can act as a core and dining hall. We should build the northwest quarter of one from wattle-and-daub.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_shack_nw_wad_center", + "construction_blueprint": "fbmh_core_shack_nw_wad_center", "blueprint_name": "central building NW corner", - "blueprint_requires": [ { "id": "fbmf_tent_west" } ], - "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_nw_center" } ], - "blueprint_excludes": [ { "id": "fbmf_nw_center" } ], + "blueprint_requires": [ { "id": "fbmh_tent_west" } ], + "blueprint_provides": [ { "id": "fbmh_center", "amount": 2 }, { "id": "fbmh_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmh_nw_center" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_nw_wad_center", + "result": "faction_base_modular_hub_core_nw_wad_center", "description": "A central building can act as a core and dining hall. We should build out from the west room with wattle-and-daub.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_nw_wad_center", + "construction_blueprint": "fbmh_core_nw_wad_center", "blueprint_name": "central building NW corner", - "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_nw_center" } ], - "blueprint_excludes": [ { "id": "fbmf_nw_center" }, { "id": "fbmf_tent_west" } ], + "blueprint_requires": [ { "id": "fbmh_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_center", "amount": 2 }, { "id": "fbmh_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmh_nw_center" }, { "id": "fbmh_tent_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_wad_center", + "result": "faction_base_modular_hub_core_wad_center", "description": "A central building can act as a core and dining hall. We should build between the east and west rooms with wattle-and-daub.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_wad_center", + "construction_blueprint": "fbmh_core_wad_center", "blueprint_name": "central building north half", - "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 }, { "id": "fbmf_west", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_center", "amount": 4 }, { "id": "fbmf_ne_center" }, { "id": "fbmf_nw_center" } ], - "blueprint_excludes": [ { "id": "fbmf_ne_center" }, { "id": "fbmf_nw_center" }, { "id": "fbmf_tent_east" }, { "id": "fbmf_tent_west" } ], + "blueprint_requires": [ { "id": "fbmh_east", "amount": 4 }, { "id": "fbmh_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_center", "amount": 4 }, { "id": "fbmh_ne_center" }, { "id": "fbmh_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmh_ne_center" }, { "id": "fbmh_nw_center" }, { "id": "fbmh_tent_east" }, { "id": "fbmh_tent_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_shack_se_wad_south", + "result": "faction_base_modular_hub_core_shack_se_wad_south", "description": "A central building can act as a core and dining hall. We should build the southeast quarter of one from wattle-and-daub.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_shack_se_wad_south", + "construction_blueprint": "fbmh_core_shack_se_wad_south", "blueprint_name": "central building SE corner", - "blueprint_requires": [ { "id": "fbmf_tent_southeast" } ], - "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_se_south" } ], - "blueprint_excludes": [ { "id": "fbmf_se_south" } ], + "blueprint_requires": [ { "id": "fbmh_tent_southeast" } ], + "blueprint_provides": [ { "id": "fbmh_south", "amount": 2 }, { "id": "fbmh_se_south" } ], + "blueprint_excludes": [ { "id": "fbmh_se_south" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_se_wad_south", + "result": "faction_base_modular_hub_core_se_wad_south", "description": "A central building can act as a core and dining hall. We should build out from the southeast room with wattle-and-daub.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "skill_used": "fabrication", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_se_wad_south", + "construction_blueprint": "fbmh_core_se_wad_south", "blueprint_name": "central building SE corner", - "blueprint_requires": [ { "id": "fbmf_southeast", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_se_south" } ], - "blueprint_excludes": [ { "id": "fbmf_se_south" }, { "id": "fbmf_tent_southeast" } ], + "blueprint_requires": [ { "id": "fbmh_southeast", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_south", "amount": 2 }, { "id": "fbmh_se_south" } ], + "blueprint_excludes": [ { "id": "fbmh_se_south" }, { "id": "fbmh_tent_southeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_shack_sw_wad_south", + "result": "faction_base_modular_hub_core_shack_sw_wad_south", "description": "A central building can act as a core and dining hall. We should build the southwest quarter of one from wattle-and-daub.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_shack_sw_wad_south", + "construction_blueprint": "fbmh_core_shack_sw_wad_south", "blueprint_name": "central building SW corner", - "blueprint_requires": [ { "id": "fbmf_tent_southwest" } ], - "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_sw_south" } ], - "blueprint_excludes": [ { "id": "fbmf_sw_south" } ], + "blueprint_requires": [ { "id": "fbmh_tent_southwest" } ], + "blueprint_provides": [ { "id": "fbmh_south", "amount": 2 }, { "id": "fbmh_sw_south" } ], + "blueprint_excludes": [ { "id": "fbmh_sw_south" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_sw_wad_south", + "result": "faction_base_modular_hub_core_sw_wad_south", "description": "A central building can act as a core and dining hall. We should build out from the southwest room with wattle-and-daub.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_sw_wad_south", + "construction_blueprint": "fbmh_core_sw_wad_south", "blueprint_name": "central building SW corner", - "blueprint_requires": [ { "id": "fbmf_southwest", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_sw_south" } ], - "blueprint_excludes": [ { "id": "fbmf_sw_south" }, { "id": "fbmf_tent_southwest" } ], + "blueprint_requires": [ { "id": "fbmh_southwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_south", "amount": 2 }, { "id": "fbmh_sw_south" } ], + "blueprint_excludes": [ { "id": "fbmh_sw_south" }, { "id": "fbmh_tent_southwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_wad_south", + "result": "faction_base_modular_hub_core_wad_south", "description": "A central building can act as a core and dining hall. We should build between the southeast and southwest rooms with wattle-and-daub.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_wad_south", + "construction_blueprint": "fbmh_core_wad_south", "blueprint_name": "central building south half", - "blueprint_requires": [ { "id": "fbmf_southeast", "amount": 4 }, { "id": "fbmf_southwest", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_south", "amount": 4 }, { "id": "fbmf_se_south" }, { "id": "fbmf_sw_south" } ], + "blueprint_requires": [ { "id": "fbmh_southeast", "amount": 4 }, { "id": "fbmh_southwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_south", "amount": 4 }, { "id": "fbmh_se_south" }, { "id": "fbmh_sw_south" } ], "blueprint_excludes": [ - { "id": "fbmf_se_south" }, - { "id": "fbmf_sw_south" }, - { "id": "fbmf_tent_southeast" }, - { "id": "fbmf_tent_southwest" } + { "id": "fbmh_se_south" }, + { "id": "fbmh_sw_south" }, + { "id": "fbmh_tent_southeast" }, + { "id": "fbmh_tent_southwest" } ], "blueprint_autocalc": true } diff --git a/data/json/recipes/basecamps/recipe_modular_field_wood.json b/data/json/recipes/basecamps/recipe_modular_field_wood.json index 7c10c661bfddb..2b7ab9c43c927 100644 --- a/data/json/recipes/basecamps/recipe_modular_field_wood.json +++ b/data/json/recipes/basecamps/recipe_modular_field_wood.json @@ -1,336 +1,336 @@ [ { "type": "recipe", - "result": "faction_base_modular_field_room0_wood_northeast", + "result": "faction_base_modular_hub_room0_wood_northeast", "description": "We need some shelter, so build half of a wood panel shack with a wooden roof on the northeast side of the camp", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room0_wood_northeast", + "construction_blueprint": "fbmh_room0_wood_northeast", "blueprint_name": "northeast shack", - "blueprint_requires": [ { "id": "faction_base_modular_field_0" } ], - "blueprint_provides": [ { "id": "fbmf_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_0" } ], + "blueprint_provides": [ { "id": "fbmh_northeast" } ], + "blueprint_excludes": [ { "id": "fbmh_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room1_wood_northeast", + "result": "faction_base_modular_hub_room1_wood_northeast", "description": "We should use wood panel to expand the shelter so we have space for another bed.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room1_wood_northeast", + "construction_blueprint": "fbmh_room1_wood_northeast", "blueprint_name": "expand northeast shack", - "blueprint_requires": [ { "id": "fbmf_northeast" } ], - "blueprint_provides": [ { "id": "fbmf_northeast" } ], - "blueprint_excludes": [ { "id": "fbmf_northeast", "amount": 2 }, { "id": "fbmf_tent_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_northeast" } ], + "blueprint_excludes": [ { "id": "fbmh_northeast", "amount": 2 }, { "id": "fbmh_tent_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room2_wood_northeast", + "result": "faction_base_modular_hub_room2_wood_northeast", "description": "We should use wood panel to finish the northeast shack.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room2_wood_northeast", + "construction_blueprint": "fbmh_room2_wood_northeast", "blueprint_name": "finish northeast shack", - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 2 } ], - "blueprint_provides": [ { "id": "fbmf_northeast", "amount": 2 } ], - "blueprint_excludes": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_tent_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 2 } ], + "blueprint_provides": [ { "id": "fbmh_northeast", "amount": 2 } ], + "blueprint_excludes": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_tent_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_shack4_wood_east", + "result": "faction_base_modular_hub_shack4_wood_east", "description": "We should expand our housing by putting up a wood panel building on the east side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_shack4_wood_east", + "construction_blueprint": "fbmh_shack4_wood_east", "blueprint_name": "east shack", - "blueprint_requires": [ { "id": "fbmf_tent_northeast" }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_provides": [ { "id": "fbmf_east", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_east" } ], + "blueprint_requires": [ { "id": "fbmh_tent_northeast" }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_east", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_east" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room4_wood_east", + "result": "faction_base_modular_hub_room4_wood_east", "description": "We should expand our housing by adding a wood panel room on the east side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room4_wood_east", + "construction_blueprint": "fbmh_room4_wood_east", "blueprint_name": "east room", - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_provides": [ { "id": "fbmf_east", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_east" }, { "id": "fbmf_tent_northeast" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_east", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_east" }, { "id": "fbmh_tent_northeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_shack4_wood_southeast", + "result": "faction_base_modular_hub_shack4_wood_southeast", "description": "We should expand our housing by putting up a wood panel building on the southeast side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_shack4_wood_southeast", + "construction_blueprint": "fbmh_shack4_wood_southeast", "blueprint_name": "southeast shack", - "blueprint_requires": [ { "id": "fbmf_tent_east" } ], - "blueprint_provides": [ { "id": "fbmf_southeast", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_southeast" } ], + "blueprint_requires": [ { "id": "fbmh_tent_east" } ], + "blueprint_provides": [ { "id": "fbmh_southeast", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_southeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room4_wood_southeast", + "result": "faction_base_modular_hub_room4_wood_southeast", "description": "We should expand our housing by adding a wood panel room on the southeast side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room4_wood_southeast", + "construction_blueprint": "fbmh_room4_wood_southeast", "blueprint_name": "southeast room", - "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_southeast", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_southeast" }, { "id": "fbmf_tent_east" } ], + "blueprint_requires": [ { "id": "fbmh_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_southeast", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_southeast" }, { "id": "fbmh_tent_east" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room4_wood_northwest", + "result": "faction_base_modular_hub_room4_wood_northwest", "description": "We should expand our housing by putting up a wood panel building on the northwest side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room4_wood_northwest", + "construction_blueprint": "fbmh_room4_wood_northwest", "blueprint_name": "northwest shack", - "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], - "blueprint_provides": [ { "id": "fbmf_northwest", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_northwest" } ], + "blueprint_requires": [ { "id": "fbmh_northeast", "amount": 4 }, { "id": "fbmh_fire_northeast" }, { "id": "fbmh_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmh_northwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_northwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_shack4_wood_west", + "result": "faction_base_modular_hub_shack4_wood_west", "description": "We should expand our housing by putting up a wood panel building on the west side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_shack4_wood_west", + "construction_blueprint": "fbmh_shack4_wood_west", "blueprint_name": "west shack", - "blueprint_requires": [ { "id": "fbmf_tent_northwest" } ], - "blueprint_provides": [ { "id": "fbmf_west", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_west" } ], + "blueprint_requires": [ { "id": "fbmh_tent_northwest" } ], + "blueprint_provides": [ { "id": "fbmh_west", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room4_wood_west", + "result": "faction_base_modular_hub_room4_wood_west", "description": "We should expand our housing by adding a wood panel room on the west side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room4_wood_west", + "construction_blueprint": "fbmh_room4_wood_west", "blueprint_name": "west room", - "blueprint_requires": [ { "id": "fbmf_northwest", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_west", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_west" }, { "id": "fbmf_tent_northwest" } ], + "blueprint_requires": [ { "id": "fbmh_northwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_west", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_west" }, { "id": "fbmh_tent_northwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_shack4_wood_southwest", + "result": "faction_base_modular_hub_shack4_wood_southwest", "description": "We should expand our housing by putting up a wood panel building on the southwest side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_shack4_wood_southwest", + "construction_blueprint": "fbmh_shack4_wood_southwest", "blueprint_name": "southwest shack", - "blueprint_requires": [ { "id": "fbmf_tent_west" } ], - "blueprint_provides": [ { "id": "fbmf_southwest", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_southwest" } ], + "blueprint_requires": [ { "id": "fbmh_tent_west" } ], + "blueprint_provides": [ { "id": "fbmh_southwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_southwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_room4_wood_southwest", + "result": "faction_base_modular_hub_room4_wood_southwest", "description": "We should expand our housing by adding a wood panel room on the southwest side, which we can also use as part of the central building.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_room4_wood_southwest", + "construction_blueprint": "fbmh_room4_wood_southwest", "blueprint_name": "southwest room", - "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_southwest", "amount": 4 } ], - "blueprint_excludes": [ { "id": "fbmf_southwest" }, { "id": "fbmf_tent_west" } ], + "blueprint_requires": [ { "id": "fbmh_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_southwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmh_southwest" }, { "id": "fbmh_tent_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_shack_ne_wood_center", + "result": "faction_base_modular_hub_core_shack_ne_wood_center", "description": "A central building can act as a kitchen and dining hall. We should build the northeast quarter of one from wood panel.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_shack_ne_wood_center", + "construction_blueprint": "fbmh_core_shack_ne_wood_center", "blueprint_name": "central building NE corner", - "blueprint_requires": [ { "id": "fbmf_tent_east" } ], - "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_ne_center" } ], - "blueprint_excludes": [ { "id": "fbmf_ne_center" } ], + "blueprint_requires": [ { "id": "fbmh_tent_east" } ], + "blueprint_provides": [ { "id": "fbmh_center", "amount": 2 }, { "id": "fbmh_ne_center" } ], + "blueprint_excludes": [ { "id": "fbmh_ne_center" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_ne_wood_center", + "result": "faction_base_modular_hub_core_ne_wood_center", "description": "A central building can act as a core and dining hall. We should build out from the east room with wood panel.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_ne_wood_center", + "construction_blueprint": "fbmh_core_ne_wood_center", "blueprint_name": "central building NE corner", - "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_ne_center" } ], - "blueprint_excludes": [ { "id": "fbmf_ne_center" }, { "id": "fbmf_tent_east" } ], + "blueprint_requires": [ { "id": "fbmh_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_center", "amount": 2 }, { "id": "fbmh_ne_center" } ], + "blueprint_excludes": [ { "id": "fbmh_ne_center" }, { "id": "fbmh_tent_east" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_nw_wood_center", + "result": "faction_base_modular_hub_core_nw_wood_center", "description": "A central building can act as a core and dining hall. We should build the northwest quarter of one from wood panel.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_shack_nw_wood_center", + "construction_blueprint": "fbmh_core_shack_nw_wood_center", "blueprint_name": "central building NW corner", - "blueprint_requires": [ { "id": "fbmf_tent_west" } ], - "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_nw_center" } ], - "blueprint_excludes": [ { "id": "fbmf_nw_center" } ], + "blueprint_requires": [ { "id": "fbmh_tent_west" } ], + "blueprint_provides": [ { "id": "fbmh_center", "amount": 2 }, { "id": "fbmh_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmh_nw_center" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_nw_wood_center", + "result": "faction_base_modular_hub_core_nw_wood_center", "description": "A central building can act as a core and dining hall. We should build out from the west room with wood panel.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_nw_wood_center", + "construction_blueprint": "fbmh_core_nw_wood_center", "blueprint_name": "central building NW corner", - "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_nw_center" } ], - "blueprint_excludes": [ { "id": "fbmf_nw_center" }, { "id": "fbmf_tent_west" } ], + "blueprint_requires": [ { "id": "fbmh_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_center", "amount": 2 }, { "id": "fbmh_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmh_nw_center" }, { "id": "fbmh_tent_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_wood_center", + "result": "faction_base_modular_hub_core_wood_center", "description": "A central building can act as a core and dining hall. We should build between the east and west rooms with wood panel.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_wood_center", + "construction_blueprint": "fbmh_core_wood_center", "blueprint_name": "central building north half", - "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 }, { "id": "fbmf_west", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_center", "amount": 4 }, { "id": "fbmf_ne_center" }, { "id": "fbmf_nw_center" } ], - "blueprint_excludes": [ { "id": "fbmf_ne_center" }, { "id": "fbmf_nw_center" }, { "id": "fbmf_tent_east" }, { "id": "fbmf_tent_west" } ], + "blueprint_requires": [ { "id": "fbmh_east", "amount": 4 }, { "id": "fbmh_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_center", "amount": 4 }, { "id": "fbmh_ne_center" }, { "id": "fbmh_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmh_ne_center" }, { "id": "fbmh_nw_center" }, { "id": "fbmh_tent_east" }, { "id": "fbmh_tent_west" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_shack_se_wood_south", + "result": "faction_base_modular_hub_core_shack_se_wood_south", "description": "A central building can act as a core and dining hall. We should build the southeast quarter of one from wood panel.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_shack_se_wood_south", + "construction_blueprint": "fbmh_core_shack_se_wood_south", "blueprint_name": "central building SE corner", - "blueprint_requires": [ { "id": "fbmf_tent_southeast" } ], - "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_se_south" } ], - "blueprint_excludes": [ { "id": "fbmf_se_south" } ], + "blueprint_requires": [ { "id": "fbmh_tent_southeast" } ], + "blueprint_provides": [ { "id": "fbmh_south", "amount": 2 }, { "id": "fbmh_se_south" } ], + "blueprint_excludes": [ { "id": "fbmh_se_south" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_se_wood_south", + "result": "faction_base_modular_hub_core_se_wood_south", "description": "A central building can act as a core and dining hall. We should build out from the southeast room with wood panel.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_se_wood_south", + "construction_blueprint": "fbmh_core_se_wood_south", "blueprint_name": "central building SE corner", - "blueprint_requires": [ { "id": "fbmf_southeast", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_se_south" } ], - "blueprint_excludes": [ { "id": "fbmf_se_south" }, { "id": "fbmf_tent_southeast" } ], + "blueprint_requires": [ { "id": "fbmh_southeast", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_south", "amount": 2 }, { "id": "fbmh_se_south" } ], + "blueprint_excludes": [ { "id": "fbmh_se_south" }, { "id": "fbmh_tent_southeast" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_shack_sw_wood_south", + "result": "faction_base_modular_hub_core_shack_sw_wood_south", "description": "A central building can act as a core and dining hall. We should build the southwest quarter of one from wood panel.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_shack_sw_wood_south", + "construction_blueprint": "fbmh_core_shack_sw_wood_south", "blueprint_name": "central building SW corner", - "blueprint_requires": [ { "id": "fbmf_tent_southwest" } ], - "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_sw_south" } ], - "blueprint_excludes": [ { "id": "fbmf_sw_south" } ], + "blueprint_requires": [ { "id": "fbmh_tent_southwest" } ], + "blueprint_provides": [ { "id": "fbmh_south", "amount": 2 }, { "id": "fbmh_sw_south" } ], + "blueprint_excludes": [ { "id": "fbmh_sw_south" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_sw_wood_south", + "result": "faction_base_modular_hub_core_sw_wood_south", "description": "A central building can act as a core and dining hall. We should build out from the southwest room with wood panel.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_sw_wood_south", + "construction_blueprint": "fbmh_core_sw_wood_south", "blueprint_name": "central building SW corner", - "blueprint_requires": [ { "id": "fbmf_southwest", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_sw_south" } ], - "blueprint_excludes": [ { "id": "fbmf_sw_south" }, { "id": "fbmf_tent_southwest" } ], + "blueprint_requires": [ { "id": "fbmh_southwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_south", "amount": 2 }, { "id": "fbmh_sw_south" } ], + "blueprint_excludes": [ { "id": "fbmh_sw_south" }, { "id": "fbmh_tent_southwest" } ], "blueprint_autocalc": true }, { "type": "recipe", - "result": "faction_base_modular_field_core_wood_south", + "result": "faction_base_modular_hub_core_wood_south", "description": "A central building can act as a core and dining hall. We should build between the southeast and southwest rooms with wood panel.", "category": "CC_BUILDING", "subcategory": "CSC_BUILDING_BASES", "autolearn": false, "never_learn": true, - "construction_blueprint": "fbmf_core_wood_south", + "construction_blueprint": "fbmh_core_wood_south", "blueprint_name": "central building south half", - "blueprint_requires": [ { "id": "fbmf_southeast", "amount": 4 }, { "id": "fbmf_southwest", "amount": 4 } ], - "blueprint_provides": [ { "id": "fbmf_south", "amount": 4 }, { "id": "fbmf_se_south" }, { "id": "fbmf_sw_south" } ], + "blueprint_requires": [ { "id": "fbmh_southeast", "amount": 4 }, { "id": "fbmh_southwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmh_south", "amount": 4 }, { "id": "fbmh_se_south" }, { "id": "fbmh_sw_south" } ], "blueprint_excludes": [ - { "id": "fbmf_se_south" }, - { "id": "fbmf_sw_south" }, - { "id": "fbmf_tent_southeast" }, - { "id": "fbmf_tent_southwest" } + { "id": "fbmh_se_south" }, + { "id": "fbmh_sw_south" }, + { "id": "fbmh_tent_southeast" }, + { "id": "fbmh_tent_southwest" } ], "blueprint_autocalc": true } diff --git a/data/json/recipes/recipe_food.json b/data/json/recipes/recipe_food.json index 2caf5e90c150a..c34adb9be4c0d 100644 --- a/data/json/recipes/recipe_food.json +++ b/data/json/recipes/recipe_food.json @@ -5892,6 +5892,17 @@ [ [ "vinegar", 1 ] ] ] }, + { + "type": "recipe", + "result": "vinegar", + "category": "CC_FOOD", + "subcategory": "CSC_FOOD_OTHER", + "skill_used": "cooking", + "time": "1 m", + "autolearn": true, + "charges": 160, + "components": [ [ [ "chem_acetic_acid", 1 ] ], [ [ "water_clean", 9 ] ] ] + }, { "type": "recipe", "result": "sauerkraut_ferment", diff --git a/data/json/recipes/recipe_medsandchemicals.json b/data/json/recipes/recipe_medsandchemicals.json index 821090cc9321a..f51b03ce36ae7 100644 --- a/data/json/recipes/recipe_medsandchemicals.json +++ b/data/json/recipes/recipe_medsandchemicals.json @@ -857,11 +857,11 @@ "subcategory": "CSC_CHEM_CHEMICALS", "skill_used": "cooking", "difficulty": 4, - "time": "4 m", + "time": "30 m", "autolearn": true, - "qualities": [ { "id": "BOIL", "level": 2 } ], + "qualities": [ { "id": "FINE_DISTILL", "level": 1 } ], "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], - "components": [ [ [ "vinegar", 10 ] ] ] + "components": [ [ [ "vinegar", 160 ] ] ] }, { "type": "recipe", diff --git a/data/json/recipes/recipe_others.json b/data/json/recipes/recipe_others.json index 4e02b5b3c327c..7864d9c943ebe 100644 --- a/data/json/recipes/recipe_others.json +++ b/data/json/recipes/recipe_others.json @@ -2132,16 +2132,36 @@ [ "mag_rifle", 2 ] ], "components": [ - [ [ "wire", 2 ], [ "cable", 2 ] ], + [ [ "pipe_cleaner", 1 ] ], [ [ "soldering_iron", 1 ] ], [ [ "screwdriver_set", 1 ] ], [ [ "wrench", 1 ] ], [ [ "chisel", 1 ] ], [ [ "hacksaw", 1 ] ], - [ [ "hammer", 1 ] ], - [ [ "rag", 2 ], [ "leather", 2 ], [ "fur", 2 ] ] + [ [ "hammer", 1 ] ] ] }, + { + "type": "recipe", + "result": "pipe_cleaner", + "category": "CC_OTHER", + "subcategory": "CSC_OTHER_TOOLS", + "skill_used": "mechanics", + "difficulty": 1, + "time": "2 m", + "reversible": true, + "book_learn": [ + [ "manual_shotgun", 0 ], + [ "manual_rifle", 0 ], + [ "manual_smg", 0 ], + [ "manual_pistol", 0 ], + [ "recipe_bullets", 0 ], + [ "textbook_mechanics", 1 ], + [ "mag_mechanics", 2 ], + [ "mag_rifle", 2 ] + ], + "components": [ [ [ "wire", 2 ], [ "cable", 2 ] ], [ [ "rag", 2 ], [ "leather", 2 ], [ "fur", 2 ] ] ] + }, { "type": "recipe", "result": "rock_quern", diff --git a/data/json/recipes/recipe_weapon.json b/data/json/recipes/recipe_weapon.json index fdc69e275b6f9..40db372008b33 100644 --- a/data/json/recipes/recipe_weapon.json +++ b/data/json/recipes/recipe_weapon.json @@ -2986,5 +2986,40 @@ [ [ "pipe", 1 ] ], [ [ "steel_lump", 1 ], [ "steel_chunk", 4 ], [ "scrap", 12 ] ] ] + }, + { + "type": "recipe", + "result": "butterfly_swords", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_CUTTING", + "skill_used": "fabrication", + "difficulty": 5, + "time": 800000, + "book_learn": [ [ "textbook_weapeast", 6 ] ], + "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ], + "//": "basically 2.5x the resources of a single machete to cover the fact that it's two weapons, each with a hand guard", + "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 500 ], [ "oxy_torch", 100 ] ] ], + "components": [ + [ [ "steel_lump", 5 ], [ "steel_chunk", 20 ], [ "scrap", 60 ] ], + [ [ "2x4", 2 ], [ "stick", 4 ] ], + [ [ "fur", 4 ], [ "leather", 4 ] ] + ] + }, + { + "type": "recipe", + "result": "long_pole", + "byproducts": [ [ "splinter", 30 ] ], + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_BASHING", + "skill_used": "fabrication", + "difficulty": 5, + "time": 340000, + "book_learn": [ [ "textbook_weapeast", 6 ] ], + "qualities": [ { "id": "SAW_W", "level": 1 }, { "id": "CUT", "level": 1 } ], + "//": "a long pole is a single piece of wood, and the heavy stick just isn't large enough.", + "components": [ + [ [ "log", 1 ] ], + [ [ "tallow", 4 ], [ "tallow_tainted", 4 ], [ "cooking_oil", 32 ], [ "cooking_oil2", 32 ], [ "lamp_oil", 500 ] ] + ] } ] diff --git a/data/json/regional_map_settings.json b/data/json/regional_map_settings.json index caca0ac729891..88d7596ac402c 100644 --- a/data/json/regional_map_settings.json +++ b/data/json/regional_map_settings.json @@ -642,8 +642,13 @@ "dojo_1": 200, "gym": 100, "gym_fitness": 200, + "gym_fitness_1": 200, "s_liquor": 500, - "s_gun": 500, + "s_gun": 200, + "s_gun_1": 200, + "s_gun_2": 200, + "s_gun_3": 200, + "s_gun_4": 200, "s_clothes": 200, "s_clothes_1": 200, "s_clothes_2": 200, @@ -656,6 +661,7 @@ "s_bookstore_1": 200, "s_bookstore_2": 200, "s_restaurant": 400, + "s_restaurant_foodplace": 400, "s_restaurant_1": 400, "s_restaurant_2": 400, "s_restaurant_3": 400, diff --git a/data/json/requirements/ammo.json b/data/json/requirements/ammo.json index 92c1a68081daf..86de075a982c6 100644 --- a/data/json/requirements/ammo.json +++ b/data/json/requirements/ammo.json @@ -27,5 +27,11 @@ "type": "requirement", "//": "Components required for shotgun and signal flare ammo", "components": [ [ [ "shot_hull", 1 ] ], [ [ "shotgun_primer", 1 ] ] ] + }, + { + "id": "ammo_357mag", + "type": "requirement", + "//": "Components required for .357 Magnum ammo", + "components": [ [ [ "357mag_casing", 1 ] ], [ [ "lgpistol_primer", 1 ] ] ] } ] diff --git a/data/json/scenarios/scenarios.json b/data/json/scenarios/scenarios.json index 559c05a2d4384..be5ee82105265 100644 --- a/data/json/scenarios/scenarios.json +++ b/data/json/scenarios/scenarios.json @@ -203,7 +203,7 @@ "name": "Sheltered", "points": -3, "description": "When the apocalypse broke out, you were funneled into a nearby shelter. Here you have lived, never leaving, lest the unknowns of the outside world hurt you. Supplies are running low, and for the first time since the cataclysm, you will be forced to face the outside world.", - "allowed_locs": [ "lmoe", "shelter" ], + "allowed_locs": [ "lmoe_empty", "shelter" ], "start_name": "Enclosed Shelter", "flags": [ "WIN_START", "LONE_START" ], "professions": [ "sheltered_militia", "sheltered_survivor", "bionic_prepper", "unemployed" ] @@ -338,6 +338,17 @@ "start_name": "Police Station", "flags": [ "SUR_START", "CITY_START" ] }, + { + "type": "scenario", + "ident": "foodplace", + "name": "The Mascot Rises", + "points": 0, + "description": "You just finished your shift and got back in the break room when you heard the alarms and the security door shutting down behind you. There's a lot of customers out there and you're not sure Foodplace delicious food is going to be enough for them.", + "allowed_locs": [ "fp_break_room" ], + "professions": [ "true_foodperson", "unemployed" ], + "start_name": "Foodplace Break Room", + "flags": [ "CITY_START" ] + }, { "type": "scenario", "ident": "schools_out", @@ -495,5 +506,15 @@ "points": 0, "start_name": "Apartment Rooftop", "allowed_locs": [ "apartments_con_tower_114", "apartments_con_tower_014", "apartments_con_tower_104", "apartments_con_tower_004" ] + }, + { + "type": "scenario", + "ident": "rancher", + "name": "Rancher", + "points": 4, + "description": "You've lived on your ranch for most of your life, through hard times and easy times. One heck of a hard time is ahead..", + "allowed_locs": [ "horse_farm_13" ], + "start_name": "Horse Farm", + "professions": [ "rancher" ] } ] diff --git a/data/json/speech.json b/data/json/speech.json index fd0f502741080..6cc6f83e6114a 100644 --- a/data/json/speech.json +++ b/data/json/speech.json @@ -1846,5 +1846,47 @@ "speaker": "mon_eyebot", "sound": "\"Police inbound. Stay where you are!\"", "volume": 15 + }, + { + "type": "speech", + "speaker": "foodperson_mask", + "sound": "\"I AM FOODPERSON. AND I BRING SUSTENANCE!\"", + "volume": 17 + }, + { + "type": "speech", + "speaker": "foodperson_mask", + "sound": "\"Come to FoodPlace today and buy food!\"", + "volume": 15 + }, + { + "type": "speech", + "speaker": "foodperson_mask", + "sound": "\"FoodPlace: The best restaurant in an area!\"", + "volume": 15 + }, + { + "type": "speech", + "speaker": "foodperson_mask", + "sound": "\"Our food contains up to 95% real food.\"", + "volume": 15 + }, + { + "type": "speech", + "speaker": "foodperson_mask", + "sound": "\"FoodPlace: It's the Calories.\"", + "volume": 15 + }, + { + "type": "speech", + "speaker": "foodperson_mask", + "sound": "\"You need food, don't you? Then come with me to FOODPLACE!!\"", + "volume": 15 + }, + { + "type": "speech", + "speaker": "foodperson_mask", + "sound": "\"FoodPlace: Edible food is OUR guarantee!\"", + "volume": 15 } ] diff --git a/data/json/start_locations.json b/data/json/start_locations.json index 74f65fb08657c..17af3be10ecea 100644 --- a/data/json/start_locations.json +++ b/data/json/start_locations.json @@ -169,6 +169,12 @@ "name": "LMOE", "target": "lmoe" }, + { + "type": "start_location", + "ident": "lmoe_empty", + "name": "LMOE shelter", + "target": "lmoe_under_empty" + }, { "type": "start_location", "ident": "forest", @@ -230,6 +236,12 @@ "name": "Police Station", "target": "police" }, + { + "type": "start_location", + "ident": "fp_break_room", + "name": "Foodplace Break Room", + "target": "s_restaurant_foodplace_roof" + }, { "type": "start_location", "ident": "school", @@ -361,5 +373,11 @@ "ident": "apartments_con_tower_004", "name": "Apartment Rooftop", "target": "apartments_con_tower_004" + }, + { + "type": "start_location", + "ident": "horse_farm_13", + "name": "Horse Ranch", + "target": "horse_farm_13" } ] diff --git a/data/json/techniques.json b/data/json/techniques.json index cff9db0a7d364..f527a7cd987d0 100644 --- a/data/json/techniques.json +++ b/data/json/techniques.json @@ -1070,5 +1070,69 @@ "knockback_dist": 1, "stun_dur": 2, "messages": [ "You brutally skewer %s", " brutally skewers %s" ] + }, + { + "type": "technique", + "id": "tec_wingchun_chainpunch", + "name": "Chain Punch", + "min_unarmed": 1, + "unarmed_allowed": true, + "strictly_unarmed": true, + "knockback_dist": 1, + "knockback_spread": 1, + "knockback_follow": 1, + "mult_bonuses": [ [ "movecost", 0.5 ], [ "damage", "bash", 0.66 ], [ "damage", "cut", 0.66 ], [ "damage", "stab", 0.66 ] ], + "messages": [ "You chain strike %s", " chain strikes %s" ], + "description": "50% moves, 66% damage, knockback and follow" + }, + { + "type": "technique", + "id": "tec_wingchun_break", + "name": "Grab Break", + "unarmed_allowed": true, + "melee_allowed": true, + "defensive": true, + "grab_break": true, + "messages": [ "You position yourself well and slip out of a grab", " slips out of a grab" ] + }, + { + "type": "technique", + "id": "tec_wingchun_feint", + "name": "keep punching at", + "min_unarmed": 2, + "unarmed_allowed": true, + "strictly_unarmed": true, + "defensive": true, + "miss_recovery": true, + "messages": [ "You miss but keep striking at %s", " misses but keeps striking at %s" ] + }, + { + "type": "technique", + "id": "tec_wingchun_stumble", + "name": "stumble", + "min_unarmed": 4, + "unarmed_allowed": true, + "crit_tec": true, + "down_dur": 1, + "messages": [ "You stumble %s with your onslaught", " stumbles %s" ] + }, + { + "type": "technique", + "id": "tec_wingchun_counter", + "name": "Receive and Counter", + "min_unarmed": 5, + "unarmed_allowed": true, + "dodge_counter": true, + "mult_bonuses": [ [ "movecost", 0.0 ] ], + "messages": [ "You receive %s's gift of violence, and return it in kind", " receives %s's attack, and counters" ] + }, + { + "type": "technique", + "id": "tec_wingchun_disarm", + "name": "disarm", + "min_unarmed": 6, + "unarmed_allowed": true, + "disarms": true, + "messages": [ "You disarm %s", " disarms %s" ] } ] diff --git a/data/json/terrain.json b/data/json/terrain.json index ee7637272ea8f..270b0efb5ef11 100644 --- a/data/json/terrain.json +++ b/data/json/terrain.json @@ -667,7 +667,18 @@ "move_cost": 2, "roof": "t_flat_roof", "flags": [ "TRANSPARENT", "INDOORS", "FLAT", "ROAD" ], - "bash": { "sound": "thump", "ter_set": "t_null", "str_min": 100, "str_max": 500, "str_min_supported": 200 } + "bash": { + "sound": "thump", + "ter_set": "t_null", + "str_min": 200, + "str_max": 500, + "str_min_supported": 200, + "items": [ + { "item": "steel_lump", "count": [ 1, 4 ] }, + { "item": "steel_chunk", "count": [ 3, 12 ] }, + { "item": "scrap", "count": [ 9, 36 ] } + ] + } }, { "type": "terrain", @@ -3293,6 +3304,48 @@ "items": [ { "item": "scrap", "count": [ 12, 24 ] }, { "item": "steel_plate", "prob": 75 } ] } }, + { + "type": "terrain", + "id": "t_secretdoor_metal_c", + "name": "metal wall", + "description": "An industrially fabricated thick sheet carefully positioned and joined seamlessly with perimeter sealant, this wall is capable of resisting extreme elements as well as hostile forces. Blast load rated and extremely fire-retardant, breaching will require specialized tools or industrial vehicles.", + "symbol": "LINE_OXOX", + "looks_like": "t_wall_metal", + "color": "cyan", + "move_cost": 0, + "roof": "t_metal_floor", + "flags": [ "NOITEM", "DOOR", "CONNECT_TO_WALL", "AUTO_WALL_SYMBOL", "MINEABLE" ], + "open": "t_secretdoor_metal_o", + "bash": { + "str_min": 80, + "str_max": 250, + "sound": "metal screeching!", + "sound_fail": "clang!", + "ter_set": "t_mdoor_frame", + "items": [ { "item": "scrap", "count": [ 12, 24 ] }, { "item": "steel_plate", "prob": 75 } ] + } + }, + { + "type": "terrain", + "id": "t_secretdoor_metal_o", + "name": "open secret door", + "looks_like": "t_mdoor_frame", + "description": "This apparently normal segment of metal wall has opened to reveal a secret passage.", + "symbol": "'", + "color": "cyan", + "move_cost": 2, + "roof": "t_metal_floor", + "flags": [ "TRANSPARENT", "FLAT", "CONNECT_TO_WALL", "ROAD", "MINEABLE" ], + "close": "t_secretdoor_metal_c", + "bash": { + "str_min": 80, + "str_max": 250, + "sound": "metal screeching!", + "sound_fail": "clang!", + "ter_set": "t_mdoor_frame", + "items": [ { "item": "scrap", "count": [ 12, 24 ] }, { "item": "steel_plate", "prob": 75 } ] + } + }, { "type": "terrain", "id": "t_door_metal_lab_c", @@ -8097,6 +8150,27 @@ "items": [ { "item": "plastic_chunk", "count": [ 0, 2 ] }, { "item": "scrap", "prob": 50 } ] } }, + { + "type": "terrain", + "id": "t_card_fp", + "looks_like": "t_card_science", + "name": "card reader", + "description": "This looks like the console controling the security door, there's a pretty big reading surface on it. You can see \"Fp\" soberly printed above the reader. You have no idea what could open it.", + "//": "FoodPlace", + "symbol": "6", + "color": "pink", + "move_cost": 0, + "flags": [ "NOITEM", "CONNECT_TO_WALL" ], + "examine_action": "cardreader_fp", + "bash": { + "str_min": 18, + "str_max": 180, + "sound": "crunch!", + "sound_fail": "whack!", + "ter_set": "t_card_reader_broken", + "items": [ { "item": "plastic_chunk", "count": [ 0, 2 ] }, { "item": "scrap", "prob": 50 } ] + } + }, { "type": "terrain", "id": "t_card_reader_broken", @@ -8401,6 +8475,52 @@ "flags": [ "TRANSPARENT", "PERMEABLE" ], "examine_action": "fswitch" }, + { + "type": "terrain", + "id": "t_carpet_concrete", + "name": "industrial carpet", + "description": "Firm, low-pile, high-durability carpet in a neutral grey color, for laying down on bare concrete.", + "symbol": ".", + "color": "light_gray", + "looks_like": "t_carpet_red", + "move_cost": 2, + "flags": [ "TRANSPARENT", "FLAMMABLE_HARD", "SUPPORTS_ROOF", "COLLAPSES", "INDOORS", "FLAT", "RUG" ], + "bash": { + "sound": "SMASH!", + "ter_set": "t_null", + "str_min": 100, + "str_max": 400, + "str_min_supported": 150, + "items": [ + { "item": "rock", "count": [ 5, 10 ] }, + { "item": "scrap", "count": [ 5, 8 ] }, + { "item": "rebar", "count": [ 0, 2 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_carpet_metal", + "name": "bunker carpet", + "description": "Firm, low-pile, totally non-flammable carpet in a neutral cream color, with an insulation layer beneath.", + "symbol": ".", + "color": "white", + "looks_like": "t_carpet_yellow", + "move_cost": 2, + "flags": [ "TRANSPARENT", "SUPPORTS_ROOF", "COLLAPSES", "INDOORS", "FLAT", "RUG" ], + "bash": { + "sound": "thump", + "ter_set": "t_null", + "str_min": 200, + "str_max": 500, + "str_min_supported": 200, + "items": [ + { "item": "steel_lump", "count": [ 1, 4 ] }, + { "item": "steel_chunk", "count": [ 3, 12 ] }, + { "item": "scrap", "count": [ 9, 36 ] } + ] + } + }, { "type": "terrain", "id": "t_carpet_red", @@ -8620,6 +8740,26 @@ "items": "wall_bash_results" } }, + { + "type": "terrain", + "id": "t_wall_p", + "aliases": [ "t_wall_h_p", "t_wall_v_p" ], + "name": "pink wall", + "description": "Wall painted pink.", + "symbol": "LINE_OXOX", + "color": "pink", + "move_cost": 0, + "coverage": 100, + "flags": [ "FLAMMABLE", "NOITEM", "SUPPORTS_ROOF", "WALL", "CHIP", "AUTO_WALL_SYMBOL", "MINEABLE", "BLOCK_WIND" ], + "bash": { + "str_min": 30, + "str_max": 210, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "items": "wall_bash_results" + } + }, { "type": "terrain", "id": "t_wall_p", diff --git a/data/json/tool_qualities.json b/data/json/tool_qualities.json index 9bca6798e94ca..3701647585637 100644 --- a/data/json/tool_qualities.json +++ b/data/json/tool_qualities.json @@ -211,5 +211,25 @@ "name": "chromatography", "//": "Think of this as 'fine separating'. Chromatography represents a number of precise separation techniques", "//": "useful in both analysis and purification." + }, + { + "type": "tool_quality", + "id": "GRIND", + "name": "grinding" + }, + { + "type": "tool_quality", + "id": "REAM", + "name": "reaming" + }, + { + "type": "tool_quality", + "id": "FILE", + "name": "filing" + }, + { + "type": "tool_quality", + "id": "VICE", + "name": "vicing" } ] diff --git a/data/json/uncraft/ammo/357mag.json b/data/json/uncraft/ammo/357mag.json new file mode 100644 index 0000000000000..f587b02307009 --- /dev/null +++ b/data/json/uncraft/ammo/357mag.json @@ -0,0 +1,18 @@ +[ + { + "result": "357mag_fmj", + "type": "uncraft", + "time": 500, + "qualities": [ { "id": "PULL", "level": 1 } ], + "components": [ [ [ "lead", 2 ] ], [ [ "357mag_casing", 1 ] ], [ [ "lgpistol_primer", 1 ] ], [ [ "gunpowder", 5 ] ] ], + "flags": [ "UNCRAFT_SINGLE_CHARGE" ] + }, + { + "result": "357mag_jhp", + "type": "uncraft", + "time": 500, + "qualities": [ { "id": "PULL", "level": 1 } ], + "components": [ [ [ "lead", 2 ] ], [ [ "357mag_casing", 1 ] ], [ [ "lgpistol_primer", 1 ] ], [ [ "gunpowder", 5 ] ] ], + "flags": [ "UNCRAFT_SINGLE_CHARGE" ] + } +] diff --git a/data/json/uncraft/ammo/357.json b/data/json/uncraft/ammo/357sig.json similarity index 100% rename from data/json/uncraft/ammo/357.json rename to data/json/uncraft/ammo/357sig.json diff --git a/data/json/vitamin.json b/data/json/vitamin.json index a66be10d5fb22..e00b3a6dba3e5 100644 --- a/data/json/vitamin.json +++ b/data/json/vitamin.json @@ -5,7 +5,7 @@ "name": "Calcium", "deficiency": "hypocalcemia", "min": -12000, - "rate": 868, + "rate": "15 m", "disease": [ [ -4800, -5600 ], [ -5601, -6400 ], [ -6401, -12000 ] ] }, { @@ -16,7 +16,7 @@ "deficiency": "anemia", "min": -12000, "max": 3600, - "rate": 868, + "rate": "15 m", "disease": [ [ -4800, -5600 ], [ -5601, -6400 ], [ -6401, -12000 ] ] }, { @@ -27,7 +27,7 @@ "deficiency": "hypovitA", "min": -8400, "max": 3600, - "rate": 868, + "rate": "15 m", "disease": [ [ -2000, -4800 ], [ -4801, -5600 ], [ -5601, -8400 ] ] }, { @@ -36,7 +36,7 @@ "name": "Vitamin B12", "deficiency": "hypovitB", "min": -5600, - "rate": 868, + "rate": "15 m", "disease": [ [ -2800, -3600, 1 ], [ -3601, -4400, 2 ], [ -4401, -5600, 3 ] ] }, { @@ -45,7 +45,7 @@ "name": "Vitamin C", "deficiency": "scurvy", "min": -5600, - "rate": 868, + "rate": "15 m", "disease": [ [ -2800, -3600, 1 ], [ -3601, -4400, 2 ], [ -4401, -5600, 3 ] ] } ] diff --git a/data/mods/Magiclysm/Spells/earthshaper.json b/data/mods/Magiclysm/Spells/earthshaper.json index 3af195e84af1f..e2d5c04154098 100644 --- a/data/mods/Magiclysm/Spells/earthshaper.json +++ b/data/mods/Magiclysm/Spells/earthshaper.json @@ -66,5 +66,92 @@ "energy_increment": 75, "final_energy_cost": 1000, "difficulty": 5 + }, + { + "id": "eshaper_shardspray", + "type": "SPELL", + "name": "Shardspray", + "description": "This spell projects a wide spray of sharp metal shards, cutting into your foes and friends alike.", + "valid_targets": [ "hostile", "ground", "ally" ], + "effect": "cone_attack", + "spell_class": "EARTHSHAPER", + "energy_source": "MANA", + "difficulty": 3, + "base_casting_time": 100, + "base_energy_cost": 100, + "max_level": 20, + "min_damage": 10, + "max_damage": 60, + "damage_increment": 2, + "damage_type": "cut", + "min_aoe": 25, + "max_aoe": 60, + "aoe_increment": 5, + "min_range": 1, + "max_range": 10, + "range_increment": 0.5 + }, + { + "id": "eshaper_piercing_bolt", + "type": "SPELL", + "name": "Piercing Bolt", + "description": "This spell projects a piercing rod of conjured iron at those that dare oppose you.", + "valid_targets": [ "hostile" ], + "effect": "projectile_attack", + "spell_class": "EARTHSHAPER", + "energy_source": "MANA", + "base_casting_time": 100, + "base_energy_cost": 115, + "difficulty": 2, + "max_level": 20, + "min_damage": 20, + "max_damage": 50, + "damage_increment": 3, + "damage_type": "stab", + "min_range": 8, + "max_range": 26, + "range_increment": 1.5 + }, + { + "id": "eshaper_shardstorm", + "type": "SPELL", + "name": "Shardstorm", + "description": "Creates an omnidirectional spray of razor sharp metal shards all around you.", + "valid_targets": [ "hostile", "ally", "ground" ], + "min_damage": 20, + "max_damage": 60, + "damage_increment": 1.5, + "damage_type": "cut", + "min_aoe": 1, + "max_aoe": 6, + "aoe_increment": 0.25, + "base_energy_cost": 200, + "spell_class": "EARTHSHAPER", + "difficulty": 4, + "max_level": 20, + "base_casting_time": 100, + "energy_source": "MANA", + "effect": "target_attack" + }, + { + "id": "eshaper_rockbolt", + "type": "SPELL", + "name": "Rockbolt", + "description": "Fires a conjured stone projectile at high velocity.", + "valid_targets": [ "hostile", "ally" ], + "min_damage": 5, + "damage_increment": 1.5, + "damage_type": "bash", + "max_damage": 26, + "min_range": 5, + "range_increment": 0.5, + "max_range": 15, + "base_energy_cost": 50, + "spell_class": "EARTHSHAPER", + "difficulty": 1, + "max_level": 20, + "base_casting_time": 100, + "energy_source": "MANA", + "effect": "projectile_attack" } ] diff --git a/data/mods/Magiclysm/Spells/magus.json b/data/mods/Magiclysm/Spells/magus.json index e730706fb30a9..ae2efc7a28af2 100644 --- a/data/mods/Magiclysm/Spells/magus.json +++ b/data/mods/Magiclysm/Spells/magus.json @@ -63,5 +63,110 @@ "base_casting_time": 600, "energy_source": "MANA", "base_energy_cost": 350 + }, + { + "id": "magus_mana_blast", + "type": "SPELL", + "name": "Mana Blast", + "description": "A blast of concentrated magical power that obliterates a large area.", + "valid_targets": [ "hostile", "ground" ], + "effect": "projectile_attack", + "spell_class": "MAGUS", + "energy_source": "MANA", + "base_casting_time": 150, + "base_energy_cost": 200, + "difficulty": 5, + "max_level": 20, + "min_damage": 20, + "max_damage": 80, + "damage_increment": 3, + "damage_type": "none", + "min_aoe": 1, + "max_aoe": 3, + "aoe_increment": 0.25, + "min_range": 5, + "max_range": 20, + "range_increment": 1 + }, + { + "id": "magus_mana_bolt", + "type": "SPELL", + "name": "Mana Bolt", + "description": "A bolt of magical power that only damages your foes.", + "valid_targets": [ "hostile" ], + "effect": "projectile_attack", + "spell_class": "MAGUS", + "energy_source": "MANA", + "base_casting_time": 100, + "base_energy_cost": 150, + "difficulty": 5, + "max_level": 20, + "min_damage": 20, + "max_damage": 120, + "damage_increment": 5, + "damage_type": "none", + "min_range": 5, + "max_range": 30, + "range_increment": 1.5 + }, + { + "id": "magus_haste", + "type": "SPELL", + "name": "Haste", + "description": "This spell gives you an enormous boost of speed lasting a short period of time.", + "valid_targets": [ "self" ], + "effect": "target_attack", + "effect_str": "haste", + "spell_class": "MAGUS", + "energy_source": "MANA", + "difficulty": 4, + "base_casting_time": 200, + "base_energy_cost": 300, + "max_level": 20, + "min_duration": 600, + "max_duration": 12000, + "duration_increment": 600 + }, + { + "id": "magus_mana_beam", + "type": "SPELL", + "name": "Mana Beam", + "description": "A beam of focused magical power that damages any foes in its path.", + "valid_targets": [ "hostile", "ground" ], + "effect": "line_attack", + "spell_class": "MAGUS", + "energy_source": "MANA", + "base_casting_time": 150, + "base_energy_cost": 200, + "difficulty": 4, + "max_level": 20, + "min_damage": 15, + "max_damage": 60, + "damage_increment": 3, + "damage_type": "none", + "min_aoe": 1, + "min_range": 5, + "max_range": 20, + "range_increment": 1 + }, + { + "id": "magus_escape", + "type": "SPELL", + "name": "Escape", + "description": "Teleports you in a random direction a medium distance, to help escape your foes in dangerous situations.", + "effect": "teleport_random", + "valid_targets": [ "none" ], + "min_aoe": 5, + "max_aoe": 10, + "aoe_increment": 0.25, + "min_range": 25, + "max_range": 35, + "range_increment": 0.5, + "max_level": 10, + "difficulty": 5, + "spell_class": "MAGUS", + "base_casting_time": 100, + "energy_source": "MANA", + "base_energy_cost": 250 } ] diff --git a/data/mods/Magiclysm/effects/effects.json b/data/mods/Magiclysm/effects/effects.json index f02b73c920032..aab0fe8317fce 100644 --- a/data/mods/Magiclysm/effects/effects.json +++ b/data/mods/Magiclysm/effects/effects.json @@ -86,8 +86,8 @@ "max_intensity": 4, "int_add_val": 1, "apply_message": "Roots rip out from the ground and impale your enemies!", - "remove_message": "The roots and vines wither up and die.", - "base_mods": { "speed_mod": [ -30 ], "h_mod_min": [ -2 ], "h_mod_max": [ -5 ], "h_mod_chance": [ 5 ] }, + "remove_message": "The roots wither up and die.", + "base_mods": { "speed_mod": [ -30 ] }, "scaling_mods": { "speed_mod": [ -10 ] } }, { @@ -97,7 +97,17 @@ "desc": [ "Burned with acid" ], "max_intensity": 4, "int_add_val": 1, - "base_mods": { "speed_mod": [ -10 ], "h_mod_min": [ -2 ], "h_mod_max": [ -5 ], "h_mod_chance": [ 5 ] }, + "base_mods": { "speed_mod": [ -20 ] }, "scaling_mods": { "speed_mod": [ -10 ] } + }, + { + "type": "effect_type", + "id": "haste", + "name": [ "Hasted" ], + "desc": [ "Your speed is boosted enormously." ], + "apply_message": "Your speed is boosted to superhuman levels!", + "remove_message": "You return to your normal speed.", + "rating": "good", + "base_mods": { "dex_mod": [ 4 ], "speed_mod": [ 300 ] } } ] diff --git a/data/mods/Magiclysm/itemgroups.json b/data/mods/Magiclysm/itemgroups.json index 8a6ce56a01b9e..f79801f49407d 100644 --- a/data/mods/Magiclysm/itemgroups.json +++ b/data/mods/Magiclysm/itemgroups.json @@ -30,10 +30,13 @@ [ "priest_advanced", 5 ], [ "pyro", 6 ], [ "winter_grasp", 6 ], - [ "tome_of_storms", 3 ], + [ "tome_of_storms", 6 ], [ "biomancer_spellbook", 6 ], [ "druid_spellbook", 6 ], - [ "recovery_spellbook", 3 ] + [ "recovery_spellbook", 3 ], + [ "magus_spellbook", 6 ], + [ "eshaper_spellbook", 6 ], + [ "magus_spellbook_move", 3 ] ] }, { @@ -48,7 +51,10 @@ [ "tome_of_storms", 3 ], [ "biomancer_spellbook", 2 ], [ "druid_spellbook", 2 ], - [ "recovery_spellbook", 3 ] + [ "recovery_spellbook", 3 ], + [ "magus_spellbook", 3 ], + [ "eshaper_spellbook", 3 ], + [ "magus_spellbook_move", 2 ] ] }, { @@ -62,7 +68,10 @@ [ "priest_advanced", 6 ], [ "biomancer_spellbook", 1 ], [ "druid_spellbook", 1 ], - [ "recovery_spellbook", 3 ] + [ "recovery_spellbook", 3 ], + [ "magus_spellbook", 3 ], + [ "eshaper_spellbook", 3 ], + [ "magus_spellbook_move", 2 ] ] }, { diff --git a/data/mods/Magiclysm/items/ethereal_items.json b/data/mods/Magiclysm/items/ethereal_items.json index 5470911ad180c..7a0ed1bc2ceee 100644 --- a/data/mods/Magiclysm/items/ethereal_items.json +++ b/data/mods/Magiclysm/items/ethereal_items.json @@ -226,6 +226,7 @@ "flags": [ "UNBREAKABLE_MELEE", "REACH_ATTACK", + "SPEAR", "REACH2", "NONCONDUCTIVE", "SHEATH_SPEAR", diff --git a/data/mods/Magiclysm/items/spellbooks.json b/data/mods/Magiclysm/items/spellbooks.json index d9894d614998e..7fd2ee6d0b76c 100644 --- a/data/mods/Magiclysm/items/spellbooks.json +++ b/data/mods/Magiclysm/items/spellbooks.json @@ -168,5 +168,41 @@ "type": "learn_spell", "spells": [ "recover_mana", "recover_bionic_power", "recover_pain", "recover_fatigue", "recover_stamina" ] } + }, + { + "id": "magus_spellbook", + "type": "GENERIC", + "name": "The Tome of The Battle Mage", + "description": "Your standard wizardy looking spellbook, filled with Magus combat spells. You sure lucked out!", + "weight": 434, + "volume": 3, + "symbol": "?", + "color": "light_grey", + "use_action": { "type": "learn_spell", "spells": [ "magus_mana_beam", "magus_mana_bolt", "magus_mana_blast" ] } + }, + { + "id": "eshaper_spellbook", + "type": "GENERIC", + "name": "The Tome of the Hollow Earth", + "description": "This large dusty spellbook seems perpetually, well, dusty. It contains the power of the earth.", + "weight": 483, + "volume": 3.3, + "symbol": "?", + "color": "light_brown", + "use_action": { + "type": "learn_spell", + "spells": [ "eshaper_rockbolt", "eshaper_shardspray", "eshaper_piercing_bolt", "eshaper_shardstorm" ] + } + }, + { + "id": "magus_spellbook_move", + "type": "GENERIC", + "name": "The Tome of Magical Movement", + "description": "This small lightweight book seems to almost not entirely exist, let's say it 97% does. It contains Magus spells focused on movement.", + "weight": 231, + "volume": 2, + "symbol": "?", + "color": "light_grey", + "use_action": { "type": "learn_spell", "spells": [ "phase_door", "magus_escape", "magus_haste" ] } } ] diff --git a/data/mods/blazemod/blaze_ammo.json b/data/mods/blazemod/blaze_ammo.json index 221e5f5ef88f9..16b1b1385d1c3 100644 --- a/data/mods/blazemod/blaze_ammo.json +++ b/data/mods/blazemod/blaze_ammo.json @@ -96,7 +96,7 @@ "color": "green", "count": 1, "stack_size": 2, - "ammo_type": [ "h_projectile", "mininuke_mod" ], + "ammo_type": "h_projectile", "damage": 14, "effects": [ "MININUKE_MOD", "NEVER_MISFIRES" ], "flags": [ "LEAK_RAD" ] diff --git a/data/mods/blazemod/blaze_blob.json b/data/mods/blazemod/blaze_blob.json index 70355d6572e73..b44eeceb9e533 100644 --- a/data/mods/blazemod/blaze_blob.json +++ b/data/mods/blazemod/blaze_blob.json @@ -69,7 +69,7 @@ "color": "red", "count": 250, "stack_size": 200, - "ammo_type": [ "bfeed" ], + "ammo_type": "bfeed", "range": 4, "damage": 5, "pierce": 5 diff --git a/data/mods/realguns/modinfo.json b/data/mods/realguns/modinfo.json index dc44f38187e78..dcd8c35b3b5dc 100644 --- a/data/mods/realguns/modinfo.json +++ b/data/mods/realguns/modinfo.json @@ -7,6 +7,7 @@ "maintainers": [ "BorkBorkGoesTheCode" ], "description": "Adds more overlapping ammo types and more real-world firearms.", "category": "items", - "dependencies": [ "dda" ] + "dependencies": [ "dda" ], + "obsolete": true } ] diff --git a/doc/JSON_FLAGS.md b/doc/JSON_FLAGS.md index 0c80db28835f3..4dffb54925222 100644 --- a/doc/JSON_FLAGS.md +++ b/doc/JSON_FLAGS.md @@ -159,6 +159,7 @@ These are handled through `ammo_types.json`. You can tag a weapon with these to - ```ACIDBOMB``` Leaves a pool of acid on detonation. - ```BEANBAG``` Stuns the target. +- ```BLACKPOWDER``` May clog up the gun with blackpowder fouling, which will also cause rust. - ```BLINDS_EYES``` Blinds the target if it hits the head (ranged projectiles can't actually hit the eyes at the moment). - ```BOUNCE``` Inflicts target with `bounced` effect and rebounds to a nearby target without this effect. - ```COOKOFF``` Explodes when lit on fire. @@ -238,6 +239,7 @@ Some armor flags, such as `WATCH` and `ALARMCLOCK` are compatible with other ite - ```HELMET_COMPAT``` Items that are not SKINTIGHT or OVERSIZE but can be worn with a helmet. - ```HOOD``` Allow this clothing to conditionally cover the head, for additional warmth or water protection., if the player's head isn't encumbered - ```HYGROMETER``` This gear is equipped with an accurate hygrometer (which is used to measure humidity). +- ```NO_TAKEOFF``` Item with that flag can't be taken off. - ```NO_QUICKDRAW``` Don't offer to draw items from this holster when the fire key is pressed whilst the players hands are empty - ```ONLY_ONE``` You can wear only one. - ```OUTER``` Outer garment layer. diff --git a/doc/JSON_INFO.md b/doc/JSON_INFO.md index 8cdf3103d077e..05dee0071426e 100644 --- a/doc/JSON_INFO.md +++ b/doc/JSON_INFO.md @@ -1086,6 +1086,8 @@ Guns can be defined like this: "aim_speed": 3, // A measure of how quickly the player can aim, in moves per point of dispersion. "recoil": 0, // Recoil caused when firing, in quarter-degrees of dispersion. "durability": 8, // Resistance to damage/rusting, also determines misfire chance +"blackpowder_tolerance": 8,// One in X chance to get clogged up (per shot) when firing blackpowder ammunition (higher is better). Optional, default is 8. +"min_cycle_recoil": 0, // Minimum ammo recoil for gun to be able to fire more than once per attack. "burst": 5, // Number of shots fired in burst mode "clip_size": 100, // Maximum amount of ammo that can be loaded "ups_charges": 0, // Additionally to the normal ammo (if any), a gun can require some charges from an UPS. This also works on mods. Attaching a mod with ups_charges will add/increase ups drain on the weapon. @@ -1368,6 +1370,7 @@ The contents of use_action fields can either be a string indicating a built-in f "need_fire_msg": "You need a lighter!", // Message to display if there is no fire. "need_charges": 1, // Number of charges the item needs to transform. "need_charges_msg": "The lamp is empty.", // Message to display if there aren't enough charges. + "need_worn": true; // Whether the item needs to be worn to be transformed, is false by default. "target_charges" : 3, // Number of charges the transformed item has. "rand_target_charges: [10, 15, 25], // Randomize the charges the transformed item has. This example has a 50% chance of rng(10, 15) charges and a 50% chance of rng(15, 25) (The endpoints are included) "container" : "jar", // Container holding the target item. diff --git a/doc/NPCs.md b/doc/NPCs.md index c4abfe14d0782..641fbbf05e913 100644 --- a/doc/NPCs.md +++ b/doc/NPCs.md @@ -441,11 +441,11 @@ Effect | Description `give_equipment` | Allows your character to select items from the NPC's inventory and transfer them to your inventory. `npc_gets_item` | Allows your character to select an item from your character's inventory and transfer it to the NPC's inventory. The NPC will not accept it if they do not have space or weight to carry it, and will set a reason that can be referenced in a future dynamic line with `"use_reason"`. `npc_gets_item_to_use` | Allow your character to select an item from your character's inventory and transfer it to the NPC's inventory. The NPC will attempt to wield it and will not accept it if it is too heavy or is an inferior weapon to what they are currently using, and will set a reason that can be referenced in a future dynamic line with `"use_reason"`. -`u_buy_item: item_string`, (*optional* `cost: cost_num`, *optional* `count: count_num`, *optional* `container: container_string`) | The NPC will give your character the item or `count_num` copies of the item, contained in container, and will remove `cost_num` from your character's cash if specified.
If cost isn't present, the NPC gives your character the item at no charge. -`u_sell_item: item_string`, (*optional* `cost: cost_num`, *optional* `count: count_num`) | Your character will give the NPC the item or `count_num` copies of the item, and will add `cost_num` to your character's cash if specified.
If cost isn't present, the your character gives the NPC the item at no charge.
This effect will fail if you do not have at least `count_num` copies of the item, so it should be checked with `u_has_items`. -`u_bulk_trade_accept`
`npc_bulk_trade_accept` | Only valid after a `repeat_response`. The player trades all instances of the item from the `repeat_response` with the NPC. For `u_bulk_trade_accept`, the player loses the items from their inventory and gains cash; for `npc_bulk_trade_accept`, the player gains the items from the NPC's inventory and loses cash. +`u_buy_item: item_string`, (*optional* `cost: cost_num`, *optional* `count: count_num`, *optional* `container: container_string`) | The NPC will give your character the item or `count_num` copies of the item, contained in container, and will subtract `cost_num` from `op_of_u.owed` if specified. If the `op_o_u.owed` is less than `cost_num`, the trade window will open and the player will have to trade to make up the difference; the NPC will not give the player the item unless `cost_num` is satisfied.
If cost isn't present, the NPC gives your character the item at no charge. +`u_sell_item: item_string`, (*optional* `cost: cost_num`, *optional* `count: count_num`) | Your character will give the NPC the item or `count_num` copies of the item, and will add `cost_num` to the NPC's `op_of_u.owed` if specified.
If cost isn't present, the your character gives the NPC the item at no charge.
This effect will fail if you do not have at least `count_num` copies of the item, so it should be checked with `u_has_items`. +`u_bulk_trade_accept`
`npc_bulk_trade_accept` | Only valid after a `repeat_response`. The player trades all instances of the item from the `repeat_response` with the NPC. For `u_bulk_trade_accept`, the player loses the items from their inventory and gains the same value of the NPC's faction currecy; for `npc_bulk_trade_accept`, the player gains the items from the NPC's inventory and loses the same value of the NPC's faction currency. If there is remaining value, or the NPC doesn't have a faction currency, the remainder goes into the NPC's `op_of_u.owed`. `u_bulk_donate`
`npc_bulk_donate` | Only valid after a `repeat_response`. The player or NPC transfers all instances of the item from the `repeat_response`. For `u_bulk_donate`, the player loses the items from their inventory and the NPC gains them; for `npc_bulk_donate`, the player gains the items from the NPC's inventory and the NPC loses them. -`u_spend_cash: cost_num` | Remove `cost_num` from your character's cash. Negative values means your character gains cash. +`u_spend_cash: cost_num` | Remove `cost_num` from your character's cash. Negative values means your character gains cash. *deprecated* NPCs should not deal in e-cash anymore, only personal debts and items. `add_debt: mod_list` | Increases the NPC's debt to the player by the values in the `mod_list`.
The following would increase the NPC's debt to the player by 1500x the NPC's altruism and 1000x the NPC's opinion of the player's value: `{ "effect": { "add_debt": [ [ "ALTRUISM", 3 ], [ "VALUE", 2 ], [ "TOTAL", 500 ] ] } }` `u_consume_item`, `npc_consume_item: item_string`, (*optional* `count: count_num`) | You or the NPC will delete the item or `count_num` copies of the item from their inventory.
This effect will fail if the you or NPC does not have at least `count_num` copies of the item, so it should be checked with `u_has_items` or `npc_has_items`. `u_remove_item_with`, `npc_remove_item_with: item_string` | You or the NPC will delete any instances of item in inventory.
This is an unconditional remove and will not fail if you or the NPC does not have the item. @@ -565,7 +565,8 @@ Condition | Type | Description #### Player Only conditions `"u_has_mission"` | string | `true` if the mission is assigned to the player character. -`"u_has_cash"` | int | `true` if the player character has at least `u_has_cash` cash available. Used to check if the PC can buy something. +`"u_has_cash"` | int | `true` if the player character has at least `u_has_cash` cash available. *Deprecated* Previously used to check if the player could buy something, but NPCs shouldn't use e-cash for trades anymore. +`"u_are_owed"` | int | `true` if the NPC's op_of_u.owed is at least `u_are_owed`. Can be used to check if the player can buy something from the NPC without needing to barter anything. `"u_has_camp"` | simple string | `true` is the player has one or more active base camps. #### Player and NPC interaction conditions diff --git a/src/activity_handlers.cpp b/src/activity_handlers.cpp index 83270f7bd90b2..55542158c4199 100644 --- a/src/activity_handlers.cpp +++ b/src/activity_handlers.cpp @@ -786,7 +786,7 @@ static void butchery_drops_harvest( item *corpse_item, const mtype &mt, player & if( entry.drop == "pheromone" ) { if( one_in( 3 ) ) { p.add_msg_if_player( m_bad, - _( "You notice some strange organs, pehraps harvestable via careful dissection." ) ); + _( "You notice some strange organs, perhaps harvestable via careful dissection." ) ); } continue; } @@ -3880,6 +3880,9 @@ void activity_handlers::spellcasting_finish( player_activity *act, player *p ) if( !trajectory.empty() ) { target = trajectory.back(); target_is_valid = casting.is_valid_target( target ); + if( !( casting.is_valid_target( target_ground ) || p->sees( target ) ) ) { + target_is_valid = false; + } } else { target_is_valid = false; } diff --git a/src/advanced_inv.cpp b/src/advanced_inv.cpp index 335363189f888..92e0a4061fb27 100644 --- a/src/advanced_inv.cpp +++ b/src/advanced_inv.cpp @@ -354,7 +354,7 @@ void advanced_inventory::print_items( advanced_inventory_pane &pane, bool active if( it.ammo_types().count( ammotype( "money" ) ) ) { //Count charges // TODO: transition to the item_location system used for the normal inventory - unsigned long charges_total = 0; + unsigned int charges_total = 0; for( const auto item : sitem.items ) { charges_total += item->charges; } @@ -1683,7 +1683,7 @@ void advanced_inventory::display() } assert( !sitem->items.empty() ); const bool by_charges = sitem->items.front()->count_by_charges(); - long amount_to_move = 0; + int amount_to_move = 0; if( !query_charges( destarea, *sitem, action, amount_to_move ) ) { continue; } @@ -2125,7 +2125,7 @@ bool advanced_inventory::move_content( item &src_container, item &dest_container std::string err; // TODO: Allow buckets here, but require them to be on the ground or wielded - const long amount = dest_container.get_remaining_capacity_for_liquid( src_contents, false, &err ); + const int amount = dest_container.get_remaining_capacity_for_liquid( src_contents, false, &err ); if( !err.empty() ) { popup( err ); return false; @@ -2157,7 +2157,7 @@ units::volume advanced_inv_area::free_volume( bool in_vehicle ) const } bool advanced_inventory::query_charges( aim_location destarea, const advanced_inv_listitem &sitem, - const std::string &action, long &amount ) + const std::string &action, int &amount ) { assert( destarea != AIM_ALL ); // should be a specific location instead assert( !sitem.items.empty() ); // valid item is obviously required @@ -2166,8 +2166,8 @@ bool advanced_inventory::query_charges( aim_location destarea, const advanced_in const bool by_charges = it.count_by_charges(); const units::volume free_volume = p.free_volume( panes[dest].in_vehicle() ); // default to move all, unless if being equipped - const long input_amount = by_charges ? it.charges : - ( action == "MOVE_SINGLE_ITEM" ) ? 1 : sitem.stacks; + const int input_amount = by_charges ? it.charges : + ( action == "MOVE_SINGLE_ITEM" ) ? 1 : sitem.stacks; assert( input_amount > 0 ); // there has to be something to begin with amount = input_amount; @@ -2179,7 +2179,7 @@ bool advanced_inventory::query_charges( aim_location destarea, const advanced_in } // Check volume, this should work the same for inventory, map and vehicles, but not for worn - const long room_for = it.charges_per_volume( free_volume ); + const int room_for = it.charges_per_volume( free_volume ); if( amount > room_for && squares[destarea].id != AIM_WORN ) { if( room_for <= 0 ) { popup( _( "Destination area is full. Remove some items first." ) ); @@ -2192,7 +2192,7 @@ bool advanced_inventory::query_charges( aim_location destarea, const advanced_in if( destarea != AIM_INVENTORY && destarea != AIM_WORN && destarea != AIM_CONTAINER ) { - const long cntmax = p.max_size - p.get_item_count(); + const int cntmax = p.max_size - p.get_item_count(); // For items counted by charges, adding it adds 0 items if something there stacks with it. const bool adds0 = by_charges && std::any_of( panes[dest].items.begin(), panes[dest].items.end(), [&it]( const advanced_inv_listitem & li ) { @@ -2215,7 +2215,7 @@ bool advanced_inventory::query_charges( aim_location destarea, const advanced_in const units::mass max_weight = g->u.has_trait( trait_id( "DEBUG_STORAGE" ) ) ? units::mass_max : g->u.weight_capacity() * 4 - g->u.weight_carried(); if( unitweight > 0_gram && ( unitweight * amount > max_weight ) ) { - const long weightmax = max_weight / unitweight; + const int weightmax = max_weight / unitweight; if( weightmax <= 0 ) { popup( _( "This is too heavy!" ) ); redraw = true; @@ -2228,7 +2228,7 @@ bool advanced_inventory::query_charges( aim_location destarea, const advanced_in if( destarea == AIM_WORN ) { const auto &id = sitem.items.front()->typeId(); // how many slots are available for the item? - const long slots_available = MAX_WORN_PER_TYPE - g->u.amount_worn( id ); + const int slots_available = MAX_WORN_PER_TYPE - g->u.amount_worn( id ); // base the amount to equip on amount of slots available amount = std::min( slots_available, input_amount ); } @@ -2245,7 +2245,7 @@ bool advanced_inventory::query_charges( aim_location destarea, const advanced_in popupmsg = string_format( msg, amount, count ); } // At this point amount contains the maximal amount that the destination can hold. - const long possible_max = std::min( input_amount, amount ); + const int possible_max = std::min( input_amount, amount ); if( amount <= 0 ) { popup( _( "The destination is already full!" ) ); } else { @@ -2253,7 +2253,7 @@ bool advanced_inventory::query_charges( aim_location destarea, const advanced_in .title( popupmsg ) .width( 20 ) .only_digits( true ) - .query_long(); + .query_int(); } if( amount <= 0 ) { redraw = true; diff --git a/src/advanced_inv.h b/src/advanced_inv.h index ccc6d76d982ce..4f4283c6bb5b9 100644 --- a/src/advanced_inv.h +++ b/src/advanced_inv.h @@ -456,7 +456,7 @@ class advanced_inventory * a valid item count to be moved. */ bool query_charges( aim_location destarea, const advanced_inv_listitem &sitem, - const std::string &action, long &amount ); + const std::string &action, int &amount ); void menu_square( uilist &menu ); diff --git a/src/artifact.cpp b/src/artifact.cpp index b7aca7f62e067..b2a8c13236c17 100644 --- a/src/artifact.cpp +++ b/src/artifact.cpp @@ -1160,8 +1160,8 @@ void it_artifact_tool::deserialize( JsonObject &jo ) m_to_hit = jo.get_int( "m_to_hit" ); item_tags = jo.get_tags( "item_flags" ); - tool->max_charges = jo.get_long( "max_charges" ); - tool->def_charges = jo.get_long( "def_charges" ); + tool->max_charges = jo.get_int( "max_charges" ); + tool->def_charges = jo.get_int( "def_charges" ); tool->charges_per_use = jo.get_int( "charges_per_use" ); tool->turns_per_charge = jo.get_int( "turns_per_charge" ); diff --git a/src/avatar_action.cpp b/src/avatar_action.cpp index 3ac993015f2e9..d0eeb01aa9c71 100644 --- a/src/avatar_action.cpp +++ b/src/avatar_action.cpp @@ -40,6 +40,8 @@ static const efftype_id effect_stunned( "stunned" ); static const efftype_id effect_riding( "riding" ); static const efftype_id effect_harnessed( "harnessed" ); +static const fault_id fault_gun_clogged( "fault_gun_clogged" ); + bool avatar_action::move( avatar &you, map &m, int dx, int dy, int dz ) { if( ( !g->check_safe_mode_allowed() ) || you.has_active_mutation( trait_SHELL2 ) ) { @@ -558,6 +560,11 @@ bool avatar_action::fire_check( avatar &you, const map &m, const targeting_data return false; } + if( weapon.faults.count( fault_gun_clogged ) ) { + add_msg( m_info, _( "Your %s is too clogged with blackpowder fouling to fire." ), gun->tname() ); + return false; + } + if( gun->has_flag( "FIRE_TWOHAND" ) && ( !you.has_two_arms() || you.worn_with_flag( "RESTRICT_HANDS" ) ) ) { add_msg( m_info, _( "You need two free hands to fire your %s." ), gun->tname() ); @@ -706,7 +713,8 @@ bool avatar_action::fire( avatar &you, map &m, item &weapon, int bp_cost ) if( !gun ) { add_msg( m_info, _( "The %s can't be fired in its current state." ), weapon.tname() ); return false; - } else if( !weapon.ammo_types().count( weapon.ammo_data()->ammo->type ) ) { + } else if( !weapon.has_flag( "RELOAD_AND_SHOOT" ) && + !weapon.ammo_types().count( weapon.ammo_data()->ammo->type ) ) { add_msg( m_info, _( "The %s can't be fired while loaded with incompatible ammunition %s" ), weapon.tname(), weapon.ammo_current() ); return false; @@ -765,7 +773,14 @@ void avatar_action::plthrow( avatar &you, int pos, return; } } - + // if you're wearing the item you need to be able to take it off + if( pos < -1 ) { + auto ret = you.can_takeoff( you.i_at( pos ) ); + if( !ret.success() ) { + add_msg( m_info, "%s", ret.c_str() ); + return; + } + } // you must wield the item to throw it if( pos != -1 ) { you.i_rem( pos ); diff --git a/src/basecamp.cpp b/src/basecamp.cpp index e166a02f4c19d..276ef1f066dda 100644 --- a/src/basecamp.cpp +++ b/src/basecamp.cpp @@ -163,7 +163,8 @@ void basecamp::define_camp( npc &p, const std::string &camp_type ) e.pos = omt_pos; expansions[ base_camps::base_dir ] = e; omt_ref = oter_id( "faction_base_camp_0" ); - update_provides( e.type, expansions[ base_camps::base_dir ] ); + update_provides( base_camps::faction_encode_abs( e, 0 ), + expansions[ base_camps::base_dir ] ); } else { expansions[ base_camps::base_dir ] = parse_expansion( om_cur, omt_pos ); } diff --git a/src/bionics_ui.cpp b/src/bionics_ui.cpp index 317ab0d439e0d..e30bfa51adc22 100644 --- a/src/bionics_ui.cpp +++ b/src/bionics_ui.cpp @@ -30,7 +30,7 @@ enum bionic_menu_mode { }; } // namespace -bionic *player::bionic_by_invlet( const long ch ) +bionic *player::bionic_by_invlet( const int ch ) { if( ch == ' ' ) { // space is a special case for unassigned return nullptr; diff --git a/src/cata_tiles.cpp b/src/cata_tiles.cpp index f984d9be7ef5d..fc439036763a8 100644 --- a/src/cata_tiles.cpp +++ b/src/cata_tiles.cpp @@ -246,7 +246,7 @@ void cata_tiles::load_tileset( const std::string &tileset_id, const bool prechec // Load the tileset into a separate instance and only set this->tileset_ptr // when the loading has succeeded. - std::unique_ptr new_tileset_ptr( new tileset() ); + std::unique_ptr new_tileset_ptr = std::make_unique(); tileset_loader loader( *new_tileset_ptr, renderer ); loader.load( tileset_id, precheck ); tileset_ptr = std::move( new_tileset_ptr ); diff --git a/src/cata_utility.h b/src/cata_utility.h index 6cd7a67fb9577..6ceca5584e21d 100644 --- a/src/cata_utility.h +++ b/src/cata_utility.h @@ -36,20 +36,6 @@ struct null_deleter { void operator()( T * ) const {} }; -namespace cata -{ - -/** - * Until we can use std::make_unique, have our own - */ -template -std::unique_ptr make_unique( Args &&... args ) -{ - return std::unique_ptr( new T( std::forward( args )... ) ); -} - -} - /** * Type of object that a measurement is taken on. Used, for example, to display wind speed in m/s * while displaying vehicle speed in km/h. diff --git a/src/character.cpp b/src/character.cpp index cdb55cfc43171..250c2f04b351d 100644 --- a/src/character.cpp +++ b/src/character.cpp @@ -90,6 +90,7 @@ static const trait_id trait_DISORGANIZED( "DISORGANIZED" ); static const trait_id trait_ELFA_FNV( "ELFA_FNV" ); static const trait_id trait_ELFA_NV( "ELFA_NV" ); static const trait_id trait_FEL_NV( "FEL_NV" ); +static const trait_id trait_PROF_FOODP( "PROF_FOODP" ); static const trait_id trait_GILLS( "GILLS" ); static const trait_id trait_GILLS_CEPH( "GILLS_CEPH" ); static const trait_id trait_GLASSJAW( "GLASSJAW" ); @@ -837,9 +838,9 @@ std::vector Character::nearby( const return res; } -long int Character::i_add_to_container( const item &it, const bool unloading ) +int Character::i_add_to_container( const item &it, const bool unloading ) { - long int charges = it.charges; + int charges = it.charges; if( !it.is_ammo() || unloading ) { return charges; } @@ -848,11 +849,11 @@ long int Character::i_add_to_container( const item &it, const bool unloading ) auto add_to_container = [&it, &charges]( item & container ) { auto &contained_ammo = container.contents.front(); if( contained_ammo.charges < container.ammo_capacity() ) { - const long int diff = container.ammo_capacity() - contained_ammo.charges; + const int diff = container.ammo_capacity() - contained_ammo.charges; add_msg( _( "You put the %s in your %s." ), it.tname(), container.tname() ); if( diff > charges ) { contained_ammo.charges += charges; - return 0L; + return 0; } else { contained_ammo.charges = container.ammo_capacity(); return charges - diff; @@ -2808,7 +2809,7 @@ bool Character::is_blind() const bool Character::pour_into( item &container, item &liquid ) { std::string err; - const long amount = container.get_remaining_capacity_for_liquid( liquid, *this, &err ); + const int amount = container.get_remaining_capacity_for_liquid( liquid, *this, &err ); if( !err.empty() ) { add_msg_if_player( m_bad, err ); @@ -2876,23 +2877,23 @@ float Character::mutation_armor( body_part bp, const damage_unit &du ) const return mutation_armor( bp ).get_effective_resist( du ); } -long Character::ammo_count_for( const item &gun ) +int Character::ammo_count_for( const item &gun ) { - long ret = item::INFINITE_CHARGES; + int ret = item::INFINITE_CHARGES; if( !gun.is_gun() ) { return ret; } - long required = gun.ammo_required(); + int required = gun.ammo_required(); if( required > 0 ) { - long total_ammo = 0; + int total_ammo = 0; total_ammo += gun.ammo_remaining(); bool has_mag = gun.magazine_integral(); const auto found_ammo = find_ammo( gun, true, -1 ); - long loose_ammo = 0; + int loose_ammo = 0; for( const auto &ammo : found_ammo ) { if( ammo->is_magazine() ) { has_mag = true; @@ -2906,12 +2907,12 @@ long Character::ammo_count_for( const item &gun ) total_ammo += loose_ammo; } - ret = std::min( ret, total_ammo / required ); + ret = std::min( ret, total_ammo / required ); } - long ups_drain = gun.get_gun_ups_drain(); + int ups_drain = gun.get_gun_ups_drain(); if( ups_drain > 0 ) { - ret = std::min( ret, charges_of( "UPS" ) / ups_drain ); + ret = std::min( ret, charges_of( "UPS" ) / ups_drain ); } return ret; @@ -3463,6 +3464,13 @@ int Character::get_shout_volume() const shout_multiplier = 3; } + // You can't shout without your face + if( has_trait( trait_PROF_FOODP ) && !( is_wearing( itype_id( "foodperson_mask" ) ) || + is_wearing( itype_id( "foodperson_mask_on" ) ) ) ) { + base = 0; + shout_multiplier = 0; + } + // Masks and such dampen the sound // Balanced around whisper for wearing bondage mask // and noise ~= 10 (door smashing) for wearing dust mask for character with strength = 8 @@ -3490,6 +3498,13 @@ void Character::shout( std::string msg, bool order ) int base = 10; std::string shout = ""; + // You can't shout without your face + if( has_trait( trait_PROF_FOODP ) && !( is_wearing( itype_id( "foodperson_mask" ) ) || + is_wearing( itype_id( "foodperson_mask_on" ) ) ) ) { + add_msg_if_player( m_warning, _( "You try to shout but you have no face!" ) ); + return; + } + // Mutations make shouting louder, they also define the default message if( has_trait( trait_SHOUT3 ) ) { base = 20; diff --git a/src/character.h b/src/character.h index e9856ba472adf..6a8872d06a63e 100644 --- a/src/character.h +++ b/src/character.h @@ -366,7 +366,7 @@ class Character : public Creature, public visitable /** Returns true if player has a trait with a flag */ bool has_trait_flag( const std::string &flag ) const; /** Returns the trait id with the given invlet, or an empty string if no trait has that invlet */ - trait_id trait_by_invlet( long ch ) const; + trait_id trait_by_invlet( int ch ) const; /** Toggles a trait on the player and in their mutation list */ void toggle_trait( const trait_id &flag ); @@ -538,7 +538,7 @@ class Character : public Creature, public visitable * @param unloading Do not try to add to a container when the item was intentionally unloaded. * @return Remaining charges which could not be stored in a container. */ - long int i_add_to_container( const item &it, const bool unloading ); + int i_add_to_container( const item &it, const bool unloading ); item &i_add( item it, bool should_stack = true ); /** @@ -606,7 +606,7 @@ class Character : public Creature, public visitable /** * Counts ammo and UPS charges (lower of) for a given gun on the character. */ - long ammo_count_for( const item &gun ); + int ammo_count_for( const item &gun ); /** Maximum thrown range with a given item, taking all active effects into account. */ int throw_range( const item & ) const; diff --git a/src/consumption.cpp b/src/consumption.cpp index 1fedb97b98284..1bc279faaba8a 100644 --- a/src/consumption.cpp +++ b/src/consumption.cpp @@ -1261,7 +1261,7 @@ bool player::feed_furnace_with( item &it ) return false; } - const long consumed_charges = std::min( it.charges, it.charges_per_volume( furnace_max_volume ) ); + const int consumed_charges = std::min( it.charges, it.charges_per_volume( furnace_max_volume ) ); const int energy = get_acquirable_energy( it, rechargeable_cbm::furnace ); if( energy == 0 ) { @@ -1333,7 +1333,7 @@ int player::get_acquirable_energy( const item &it, rechargeable_cbm cbm ) const break; case rechargeable_cbm::battery: - return std::min( it.charges, std::numeric_limits::max() ); + return std::min( it.charges, std::numeric_limits::max() ); case rechargeable_cbm::reactor: if( it.charges > 0 ) { diff --git a/src/debug_menu.cpp b/src/debug_menu.cpp index 483e5bb55cf7b..b3c0dceb966d3 100644 --- a/src/debug_menu.cpp +++ b/src/debug_menu.cpp @@ -404,7 +404,7 @@ void character_edit_menu() enum { D_NAME, D_SKILLS, D_STATS, D_ITEMS, D_DELETE_ITEMS, D_ITEM_WORN, D_HP, D_MORALE, D_PAIN, D_NEEDS, D_HEALTHY, D_STATUS, D_MISSION_ADD, D_MISSION_EDIT, - D_TELE, D_MUTATE, D_CLASS, D_ATTITUDE + D_TELE, D_MUTATE, D_CLASS, D_ATTITUDE, D_OPINION }; nmenu.addentry( D_NAME, true, 'N', "%s", _( "Edit [N]ame" ) ); nmenu.addentry( D_SKILLS, true, 's', "%s", _( "Edit [s]kills" ) ); @@ -426,6 +426,7 @@ void character_edit_menu() nmenu.addentry( D_MISSION_ADD, true, 'm', "%s", _( "Add [m]ission" ) ); nmenu.addentry( D_CLASS, true, 'c', "%s", _( "Randomize with [c]lass" ) ); nmenu.addentry( D_ATTITUDE, true, 'A', "%s", _( "Set [A]ttitude" ) ); + nmenu.addentry( D_OPINION, true, 'O', "%s", _( "Set [O]pinion" ) ); } nmenu.query(); switch( nmenu.ret ) { @@ -543,6 +544,48 @@ void character_edit_menu() } } break; + case D_OPINION: { + uilist smenu; + smenu.addentry( 0, true, 'h', "%s: %d", _( "trust" ), np->op_of_u.trust ); + smenu.addentry( 1, true, 's', "%s: %d", _( "fear" ), np->op_of_u.fear ); + smenu.addentry( 2, true, 't', "%s: %d", _( "value" ), np->op_of_u.value ); + smenu.addentry( 3, true, 'f', "%s: %d", _( "anger" ), np->op_of_u.anger ); + smenu.addentry( 4, true, 'd', "%s: %d", _( "owed" ), np->op_of_u.owed ); + + smenu.query(); + int value; + switch( smenu.ret ) { + case 0: + if( query_int( value, _( "Set trust to? Currently: %d" ), + np->op_of_u.trust ) ) { + np->op_of_u.trust = value; + } + break; + case 1: + if( query_int( value, _( "Set fear to? Currently: %d" ), np->op_of_u.fear ) ) { + np->op_of_u.fear = value; + } + break; + case 2: + if( query_int( value, _( "Set value to? Currently: %d" ), + np->op_of_u.value ) ) { + np->op_of_u.value = value; + } + break; + case 3: + if( query_int( value, _( "Set anger to? Currently: %d" ), + np->op_of_u.anger ) ) { + np->op_of_u.anger = value; + } + break; + case 4: + if( query_int( value, _( "Set owed to? Currently: %d" ), np->op_of_u.owed ) ) { + np->op_of_u.owed = value; + } + break; + } + } + break; case D_NAME: { std::string filterstring = p.name; string_input_popup popup; diff --git a/src/dialogue.h b/src/dialogue.h index 98a4ef7ea685a..da03003fee004 100644 --- a/src/dialogue.h +++ b/src/dialogue.h @@ -357,7 +357,8 @@ const std::unordered_set complex_conds = { { "u_has_items", "npc_has_items", "u_has_item_category", "npc_has_item_category", "u_has_bionics", "npc_has_bionics", "u_has_effect", "npc_has_effect", "u_need", "npc_need", "u_at_om_location", "npc_at_om_location", "npc_role_nearby", "npc_allies", "npc_service", - "u_has_cash", "npc_aim_rule", "npc_engagement_rule", "npc_rule", "npc_override", + "u_has_cash", "u_are_owed", + "npc_aim_rule", "npc_engagement_rule", "npc_rule", "npc_override", "npc_cbm_reserve_rule", "npc_cbm_recharge_rule", "days_since_cataclysm", "is_season", "mission_goal", "u_has_var", "npc_has_var" } @@ -405,8 +406,8 @@ struct conditional_t { void set_at_om_location( JsonObject &jo, const std::string &member, bool is_npc = false ); void set_npc_role_nearby( JsonObject &jo ); void set_npc_allies( JsonObject &jo ); - void set_npc_service( JsonObject &jo ); void set_u_has_cash( JsonObject &jo ); + void set_u_are_owed( JsonObject &jo ); void set_npc_aim_rule( JsonObject &jo ); void set_npc_engagement_rule( JsonObject &jo ); void set_npc_cbm_reserve_rule( JsonObject &jo ); diff --git a/src/game.cpp b/src/game.cpp index 2362c775c43ed..c42d08dacbcc8 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -1451,7 +1451,15 @@ bool game::do_turn() // We only want this to happen if the player had a chance to examine the sounds. sounds::reset_markers(); } else { - handle_key_blocking_activity(); + // Rate limit polling to 10 times a second. + static auto start = std::chrono::time_point_cast( + std::chrono::system_clock::now() ); + const auto now = std::chrono::time_point_cast( + std::chrono::system_clock::now() ); + if( ( now - start ).count() > 100 ) { + handle_key_blocking_activity(); + start = now; + } } } @@ -7729,6 +7737,7 @@ void game::drop_in_direction() } } + // Used to set up the first Hotkey in the display set static int get_initial_hotkey( const size_t menu_index ) { @@ -8536,6 +8545,11 @@ void game::wield( item_location &loc ) tripoint pos = loc.position(); int worn_index = INT_MIN; if( u.is_worn( *loc.get_item() ) ) { + auto ret = u.can_takeoff( *loc.get_item() ); + if( !ret.success() ) { + add_msg( m_info, "%s", ret.c_str() ); + return; + } int item_pos = u.get_item_position( loc.get_item() ); if( item_pos != INT_MIN ) { worn_index = Character::worn_position_to_index( item_pos ); diff --git a/src/game.h b/src/game.h index 51f31b34e0127..20c92ef70b785 100644 --- a/src/game.h +++ b/src/game.h @@ -715,7 +715,6 @@ class game /** Check for dangerous stuff at dest_loc, return false if the player decides not to step there */ - bool prompt_dangerous_tile( const tripoint &dest_loc ) const; // Handle pushing during move, returns true if it handled the move bool grabbed_move( const tripoint &dp ); bool grabbed_veh_move( const tripoint &dp ); @@ -763,6 +762,7 @@ class game void mon_info( const catacurses::window &, int hor_padding = 0 ); // Prints a list of nearby monsters void cleanup_dead(); // Delete any dead NPCs/monsters + bool prompt_dangerous_tile( const tripoint &dest_loc ) const; private: void wield(); void wield( int pos ); // Wield a weapon 'w' diff --git a/src/game_inventory.cpp b/src/game_inventory.cpp index d708dcb832aa7..ce2dbaf8588ad 100644 --- a/src/game_inventory.cpp +++ b/src/game_inventory.cpp @@ -1349,8 +1349,8 @@ void game_menus::inv::compare( player &p, const cata::optional &offset void game_menus::inv::reassign_letter( player &p, item &it ) { while( true ) { - const long invlet = popup_getkey( - _( "Enter new letter. Press SPACE to clear a manually assigned letter, ESCAPE to cancel." ) ); + const int invlet = popup_getkey( + _( "Enter new letter. Press SPACE to clear a manually assigned letter, ESCAPE to cancel." ) ); if( invlet == KEY_ESCAPE ) { break; diff --git a/src/handle_liquid.cpp b/src/handle_liquid.cpp index 08fd92143d393..f53adb2adf30e 100644 --- a/src/handle_liquid.cpp +++ b/src/handle_liquid.cpp @@ -109,7 +109,7 @@ bool handle_liquid_from_container( std::list::iterator in_container, int radius ) { // TODO: not all code paths on handle_liquid consume move points, fix that. - const long old_charges = in_container->charges; + const int old_charges = in_container->charges; handle_liquid( *in_container, &container, radius ); if( in_container->charges != old_charges ) { container.on_contents_changed(); diff --git a/src/iexamine.cpp b/src/iexamine.cpp index c907479c5f615..010a63571d2d9 100644 --- a/src/iexamine.cpp +++ b/src/iexamine.cpp @@ -815,6 +815,52 @@ void iexamine::cardreader_robofac( player &p, const tripoint &examp ) } } +void iexamine::cardreader_foodplace( player &p, const tripoint &examp ) +{ + bool open = false; + if( ( p.is_wearing( itype_id( "foodperson_mask" ) ) || + p.is_wearing( itype_id( "foodperson_mask_on" ) ) ) && + query_yn( _( "Press mask on the reader?" ) ) ) { + p.mod_moves( -100 ); + for( const tripoint &tmp : g->m.points_in_radius( examp, 3 ) ) { + if( g->m.ter( tmp ) == t_door_metal_locked ) { + g->m.ter_set( tmp, t_door_metal_c ); + open = true; + } + } + if( open ) { + add_msg( _( "You press your face on the reader." ) ); + add_msg( m_good, _( "The nearby doors are unlocked." ) ); + sounds::sound( examp, 6, sounds::sound_t::speech, _( "\"Hello Foodperson. Welcome home.\"" ), true, + "speech", "welcome" ); + } else { + add_msg( _( "The nearby doors are already unlocked." ) ); + if( query_yn( _( "Lock doors?" ) ) ) { + for( const tripoint &tmp : g->m.points_in_radius( examp, 3 ) ) { + if( g->m.ter( tmp ) == t_door_metal_o || g->m.ter( tmp ) == t_door_metal_c ) { + if( p.pos() == tmp ) { + p.add_msg_if_player( m_bad, _( "You are in the way of the door, move before trying again." ) ); + } else { + g->m.ter_set( tmp, t_door_metal_locked ); + } + } + } + } + } + } else if( p.has_amount( itype_id( "foodperson_mask" ), 1 ) || + p.has_amount( itype_id( "foodperson_mask_on" ), 1 ) ) { + sounds::sound( examp, 6, sounds::sound_t::speech, + _( "\"FOODPERSON DETECTED. Please make yourself presentable.\"" ), true, + "speech", "welcome" ); + } else { + sounds::sound( examp, 6, sounds::sound_t::speech, + _( "\"Your face is inadequate. Please go away.\"" ), true, + "speech", "welcome" ); + p.assign_activity( activity_id( "ACT_HACK_DOOR" ), to_moves( 5_minutes ) ); + p.activity.placement = examp; + } +} + void iexamine::intercom( player &p, const tripoint &examp ) { const std::vector intercom_npcs = g->get_npcs_if( [examp]( const npc & guy ) { @@ -5299,6 +5345,7 @@ iexamine_function iexamine_function_from_string( const std::string &function_nam { "controls_gate", &iexamine::controls_gate }, { "cardreader", &iexamine::cardreader }, { "cardreader_robofac", &iexamine::cardreader_robofac }, + { "cardreader_fp", &iexamine::cardreader_foodplace }, { "intercom", &iexamine::intercom }, { "rubble", &iexamine::rubble }, { "chainfence", &iexamine::chainfence }, diff --git a/src/iexamine.h b/src/iexamine.h index c824cdaa1d7b4..cadb33a266586 100644 --- a/src/iexamine.h +++ b/src/iexamine.h @@ -43,6 +43,7 @@ void nanofab( player &p, const tripoint &examp ); void controls_gate( player &p, const tripoint &examp ); void cardreader( player &p, const tripoint &examp ); void cardreader_robofac( player &p, const tripoint &examp ); +void cardreader_foodplace( player &p, const tripoint &examp ); void intercom( player &p, const tripoint &examp ); void cvdmachine( player &p, const tripoint &examp ); void rubble( player &p, const tripoint &examp ); diff --git a/src/inventory.cpp b/src/inventory.cpp index 324ec2bbf9cd9..ba132a235d18d 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -38,7 +38,7 @@ struct itype; const invlet_wrapper inv_chars( "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#&()+.:;=@[\\]^_{|}" ); -bool invlet_wrapper::valid( const long invlet ) const +bool invlet_wrapper::valid( const int invlet ) const { if( invlet > std::numeric_limits::max() || invlet < std::numeric_limits::min() ) { return false; diff --git a/src/inventory.h b/src/inventory.h index 8b480d72dd850..8565873b3dec2 100644 --- a/src/inventory.h +++ b/src/inventory.h @@ -38,7 +38,7 @@ using invlets_bitset = std::bitset::max()>; * Wrapper to handled a set of valid "inventory" letters. "inventory" can be any set of * objects that the player can access via a single character (e.g. bionics). * The class is (currently) derived from std::string for compatibility and because it's - * simpler. But it may be changed to derive from `std::set` or similar to get the full + * simpler. But it may be changed to derive from `std::set` or similar to get the full * range of possible characters. */ class invlet_wrapper : private std::string @@ -46,7 +46,7 @@ class invlet_wrapper : private std::string public: invlet_wrapper( const char *chars ) : std::string( chars ) { } - bool valid( long invlet ) const; + bool valid( int invlet ) const; std::string get_allowed_chars() const { return *this; } diff --git a/src/inventory_ui.cpp b/src/inventory_ui.cpp index 494f704633e47..31b2e20775df9 100644 --- a/src/inventory_ui.cpp +++ b/src/inventory_ui.cpp @@ -72,7 +72,7 @@ struct navigation_mode_data { struct inventory_input { std::string action; - long ch; + int ch; inventory_entry *entry; }; @@ -132,9 +132,9 @@ size_t inventory_entry::get_available_count() const } } -long inventory_entry::get_invlet() const +int inventory_entry::get_invlet() const { - if( custom_invlet != LONG_MIN ) { + if( custom_invlet != INT_MIN ) { return custom_invlet; } return location ? location->invlet : '\0'; @@ -171,7 +171,7 @@ bool inventory_column::activatable() const } ); } -inventory_entry *inventory_column::find_by_invlet( long invlet ) const +inventory_entry *inventory_column::find_by_invlet( int invlet ) const { for( const auto &elem : entries ) { if( elem.is_item() && elem.get_invlet() == invlet ) { @@ -794,9 +794,9 @@ size_t inventory_column::get_entry_indent( const inventory_entry &entry ) const return res; } -long inventory_column::reassign_custom_invlets( const player &p, long min_invlet, long max_invlet ) +int inventory_column::reassign_custom_invlets( const player &p, int min_invlet, int max_invlet ) { - long cur_invlet = min_invlet; + int cur_invlet = min_invlet; for( auto &elem : entries ) { // Only items on map/in vehicles: those that the player does not possess. if( elem.is_selectable() && !p.has_item( *elem.location ) ) { @@ -1179,7 +1179,7 @@ bool inventory_selector::select( const item_location &loc ) return res; } -inventory_entry *inventory_selector::find_entry_by_invlet( long invlet ) const +inventory_entry *inventory_selector::find_entry_by_invlet( int invlet ) const { for( const auto elem : columns ) { const auto res = elem->find_by_invlet( invlet ); @@ -1219,7 +1219,7 @@ void inventory_selector::prepare_layout( size_t client_width, size_t client_heig visible_columns.front()->set_width( client_width ); } - long custom_invlet = '0'; + int custom_invlet = '0'; for( auto &elem : columns ) { elem->prepare_paging(); custom_invlet = elem->reassign_custom_invlets( u, custom_invlet, '9' ); diff --git a/src/inventory_ui.h b/src/inventory_ui.h index d9c791a3baa64..fb73ce1f3a430 100644 --- a/src/inventory_ui.h +++ b/src/inventory_ui.h @@ -46,7 +46,7 @@ class inventory_entry item_location location; size_t chosen_count = 0; - long custom_invlet = LONG_MIN; + int custom_invlet = INT_MIN; std::string cached_name; inventory_entry( const item_location &location, size_t stack_size, @@ -122,7 +122,7 @@ class inventory_entry size_t get_available_count() const; const item_category *get_category_ptr() const; - long get_invlet() const; + int get_invlet() const; nc_color get_invlet_color() const; void update_cache(); @@ -264,7 +264,7 @@ class inventory_column std::vector get_entries( const std::function &filter_func ) const; - inventory_entry *find_by_invlet( long invlet ) const; + inventory_entry *find_by_invlet( int invlet ) const; void draw( const catacurses::window &win, size_t x, size_t y ) const; @@ -304,7 +304,7 @@ class inventory_column /** Resets width to original (unchanged). */ void reset_width(); /** Returns next custom inventory letter. */ - long reassign_custom_invlets( const player &p, long min_invlet, long max_invlet ); + int reassign_custom_invlets( const player &p, int min_invlet, int max_invlet ); /** Reorder entries, repopulate titles, adjust to the new height. */ virtual void prepare_paging( const std::string &filter = "" ); /** @@ -527,7 +527,7 @@ class inventory_selector void draw_frame( const catacurses::window &w ) const; /** @return an entry from all entries by its invlet */ - inventory_entry *find_entry_by_invlet( long invlet ) const; + inventory_entry *find_entry_by_invlet( int invlet ) const; const std::vector &get_all_columns() const { return columns; diff --git a/src/item.cpp b/src/item.cpp index e9784dd73e6e6..dfd19d5dce1c6 100644 --- a/src/item.cpp +++ b/src/item.cpp @@ -109,6 +109,8 @@ const efftype_id effect_weed_high( "weed_high" ); const material_id mat_leather( "leather" ); const material_id mat_kevlar( "kevlar" ); +const fault_id fault_gun_blackpowder( "fault_gun_blackpowder" ); + const trait_id trait_small2( "SMALL2" ); const trait_id trait_small_ok( "SMALL_OK" ); const trait_id trait_huge( "HUGE" ); @@ -1366,6 +1368,12 @@ std::string item::info( std::vector &info, const iteminfo_query *parts if( ammo.ammo_effects.count( "RECYCLED" ) && parts->test( iteminfo_parts::AMMO_FX_RECYCLED ) ) { fx.emplace_back( _( "This ammo has been hand-loaded." ) ); } + if( ammo.ammo_effects.count( "BLACKPOWDER" ) && + parts->test( iteminfo_parts::AMMO_FX_BLACKPOWDER ) ) { + fx.emplace_back( + _( "This ammo has been loaded with blackpowder, and will quickly " + "clog up most guns, and cause rust if the gun is not cleaned." ) ); + } if( ammo.ammo_effects.count( "NEVER_MISFIRES" ) && parts->test( iteminfo_parts::AMMO_FX_CANTMISSFIRE ) ) { fx.emplace_back( _( "This ammo never misfires." ) ); @@ -3348,7 +3356,7 @@ std::string item::tname( unsigned int quantity, bool with_prefix, unsigned int t } } -std::string item::display_money( unsigned int quantity, unsigned long amount ) const +std::string item::display_money( unsigned int quantity, unsigned int amount ) const { //~ This is a string to display the total amount of money in a stack of cash cards. The strings are: %s is the display name of cash cards. The following bracketed $%.2f is the amount of money on the stack of cards in dollars, to two decimal points. (e.g. "cash cards ($15.35)") return string_format( "%s %s", tname( quantity ), format_money( amount ) ); @@ -5180,9 +5188,7 @@ bool item::is_irremovable() const std::set item::faults_potential() const { std::set res; - if( type->engine ) { - res.insert( type->engine->faults.begin(), type->engine->faults.end() ); - } + res.insert( type->faults.begin(), type->faults.end() ); return res; } @@ -8089,6 +8095,15 @@ bool item::process_tool( player *carrier, const tripoint &pos ) return false; } +bool item::process_blackpowder_fouling( player *carrier ) +{ + if( damage() < max_damage() && one_in( 2000 ) ) { + inc_damage( DT_ACID ); + carrier->add_msg_if_player( m_bad, _( "Your %s rusts due to blackpowder fouling." ), tname() ); + } + return false; +} + bool item::process( player *carrier, const tripoint &pos, bool activate, float insulation, const temperature_flag flag ) { @@ -8118,6 +8133,10 @@ bool item::process( player *carrier, const tripoint &pos, bool activate, return processed; } + if( faults.count( fault_gun_blackpowder ) ) { + return process_blackpowder_fouling( carrier ); + } + if( activate ) { return type->invoke( carrier != nullptr ? *carrier : g->u, *this, pos ); } diff --git a/src/item.h b/src/item.h index 0098851db3502..8b2e2df213b9d 100644 --- a/src/item.h +++ b/src/item.h @@ -300,7 +300,7 @@ class item : public visitable */ std::string tname( unsigned int quantity = 1, bool with_prefix = true, unsigned int truncate = 0 ) const; - std::string display_money( unsigned int quantity, unsigned long charge ) const; + std::string display_money( unsigned int quantity, unsigned int charge ) const; /** * Returns the item name and the charges or contained charges (if the item can have * charges at all). Calls @ref tname with given quantity and with_prefix being true. @@ -1965,6 +1965,7 @@ class item : public visitable bool process_fake_smoke( player *carrier, const tripoint &pos ); bool process_fake_mill( player *carrier, const tripoint &pos ); bool process_cable( player *carrier, const tripoint &pos ); + bool process_blackpowder_fouling( player *carrier ); bool process_tool( player *carrier, const tripoint &pos ); public: diff --git a/src/item_factory.cpp b/src/item_factory.cpp index 24007be0b6dcd..67603db596309 100644 --- a/src/item_factory.cpp +++ b/src/item_factory.cpp @@ -53,7 +53,7 @@ static std::set repair_actions; static DynamicDataLoader::deferred_json deferred; -std::unique_ptr item_controller( new Item_factory() ); +std::unique_ptr item_controller = std::make_unique(); static const std::string calc_category( const itype &obj ); static void set_allergy_flags( itype &item_template ); @@ -162,8 +162,8 @@ void Item_factory::finalize_pre( itype &obj ) obj.use_methods.emplace( func, usage_from_string( func ) ); } - if( obj.engine && get_option( "NO_FAULTS" ) ) { - obj.engine->faults.clear(); + if( get_option( "NO_FAULTS" ) ) { + obj.faults.clear(); } // If no category was forced via JSON automatically calculate one now @@ -648,6 +648,7 @@ void Item_factory::init() add_iuse( "FLUMED", &iuse::flumed ); add_iuse( "FLUSLEEP", &iuse::flusleep ); add_iuse( "FLU_VACCINE", &iuse::flu_vaccine ); + add_iuse( "FOODPERSON", &iuse::foodperson ); add_iuse( "FUNGICIDE", &iuse::fungicide ); add_iuse( "GASMASK", &iuse::gasmask, translate_marker( "Can be activated to increase environmental " @@ -884,11 +885,9 @@ void Item_factory::check_definitions() const } } - if( type->engine ) { - for( const auto &f : type->engine->faults ) { - if( !f.is_valid() ) { - msg << string_format( "invalid item fault %s", f.c_str() ) << "\n"; - } + for( const auto &f : type->faults ) { + if( !f.is_valid() ) { + msg << string_format( "invalid item fault %s", f.c_str() ) << "\n"; } } @@ -1308,7 +1307,7 @@ void Item_factory::load( islot_ammo &slot, JsonObject &jo, const std::string &sr assign( jo, "range", slot.range, strict, 0 ); assign( jo, "dispersion", slot.dispersion, strict, 0 ); assign( jo, "recoil", slot.recoil, strict, 0 ); - assign( jo, "count", slot.def_charges, strict, 1L ); + assign( jo, "count", slot.def_charges, strict, 1 ); assign( jo, "loudness", slot.loudness, strict, 0 ); assign( jo, "effects", slot.ammo_effects, strict ); assign( jo, "prop_damage", slot.prop_damage, strict ); @@ -1328,7 +1327,6 @@ void Item_factory::load_ammo( JsonObject &jo, const std::string &src ) void Item_factory::load( islot_engine &slot, JsonObject &jo, const std::string & ) { assign( jo, "displacement", slot.displacement ); - assign( jo, "faults", slot.faults ); } void Item_factory::load_engine( JsonObject &jo, const std::string &src ) @@ -1425,6 +1423,8 @@ void Item_factory::load( islot_gun &slot, JsonObject &jo, const std::string &src assign( jo, "built_in_mods", slot.built_in_mods, strict ); assign( jo, "default_mods", slot.default_mods, strict ); assign( jo, "ups_charges", slot.ups_charges, strict, 0 ); + assign( jo, "blackpowder_tolerance", slot.blackpowder_tolerance, strict, 0 ); + assign( jo, "min_cycle_recoil", slot.blackpowder_tolerance, strict, 0 ); assign( jo, "ammo_effects", slot.ammo_effects, strict ); if( jo.has_array( "valid_mod_locations" ) ) { @@ -1630,7 +1630,7 @@ void Item_factory::load( islot_comestible &slot, JsonObject &jo, const std::stri assign( jo, "comestible_type", slot.comesttype, strict ); assign( jo, "tool", slot.tool, strict ); - assign( jo, "charges", slot.def_charges, strict, 1L ); + assign( jo, "charges", slot.def_charges, strict, 1 ); assign( jo, "quench", slot.quench, strict ); assign( jo, "fun", slot.fun, strict ); assign( jo, "stim", slot.stim, strict ); @@ -2085,6 +2085,7 @@ void Item_factory::load_basic_info( JsonObject &jo, itype &def, const std::strin } assign( jo, "flags", def.item_tags ); + assign( jo, "faults", def.faults ); if( jo.has_member( "qualities" ) ) { set_qualities_from_json( jo, "qualities", def ); diff --git a/src/item_group.cpp b/src/item_group.cpp index bc41b350414db..656a4f28f2aac 100644 --- a/src/item_group.cpp +++ b/src/item_group.cpp @@ -348,16 +348,14 @@ Item_group::Item_group( Type t, int probability, int ammo_chance, int magazine_c void Item_group::add_item_entry( const Item_tag &itemid, int probability ) { - std::unique_ptr ptr( new Single_item_creator( itemid, Single_item_creator::S_ITEM, - probability ) ); - add_entry( std::move( ptr ) ); + add_entry( std::make_unique( + itemid, Single_item_creator::S_ITEM, probability ) ); } void Item_group::add_group_entry( const Group_tag &groupid, int probability ) { - std::unique_ptr ptr( new Single_item_creator( groupid, - Single_item_creator::S_ITEM_GROUP, probability ) ); - add_entry( std::move( ptr ) ); + add_entry( std::make_unique( + groupid, Single_item_creator::S_ITEM_GROUP, probability ) ); } void Item_group::add_entry( std::unique_ptr ptr ) diff --git a/src/item_group.h b/src/item_group.h index 67ecc5b055194..70977ad3e7b6c 100644 --- a/src/item_group.h +++ b/src/item_group.h @@ -152,7 +152,7 @@ class Item_modifier * Charges to spawn the item with, if this turns out to * be negative, the default charges are used. */ - std::pair charges; + std::pair charges; /** * Ammo for guns. If NULL the gun spawns without ammo. * This takes @ref charges and @ref with_ammo into account. diff --git a/src/item_location.cpp b/src/item_location.cpp index a7b89023a86f7..c9d730402f058 100644 --- a/src/item_location.cpp +++ b/src/item_location.cpp @@ -89,11 +89,11 @@ class item_location::impl return ""; } - virtual int obtain( Character &, long ) { + virtual int obtain( Character &, int ) { return INT_MIN; } - virtual int obtain_cost( const Character &, long ) const { + virtual int obtain_cost( const Character &, int ) const { return 0; } @@ -114,8 +114,8 @@ class item_location::impl } // Add up the total charges of a stack of items - long charges_in_stack( unsigned int countOnly ) const { - long sum = 0L; + int charges_in_stack( unsigned int countOnly ) const { + int sum = 0; unsigned int c = countOnly; // If the list points to a nullpointer, then the target pointer must still be valid if( whatstart == nullptr ) { @@ -191,7 +191,7 @@ class item_location::impl::item_on_map : public item_location::impl return res; } - int obtain( Character &ch, long qty ) override { + int obtain( Character &ch, int qty ) override { ch.moves -= obtain_cost( ch, qty ); item obj = target()->split( qty ); @@ -204,7 +204,7 @@ class item_location::impl::item_on_map : public item_location::impl } } - int obtain_cost( const Character &ch, long qty ) const override { + int obtain_cost( const Character &ch, int qty ) const override { if( !target() ) { return 0; } @@ -300,7 +300,7 @@ class item_location::impl::item_on_person : public item_location::impl } } - int obtain( Character &ch, long qty ) override { + int obtain( Character &ch, int qty ) override { ch.mod_moves( -obtain_cost( ch, qty ) ); if( &ch.i_at( ch.get_item_position( target() ) ) == target() ) { @@ -318,7 +318,7 @@ class item_location::impl::item_on_person : public item_location::impl } } - int obtain_cost( const Character &ch, long qty ) const override { + int obtain_cost( const Character &ch, int qty ) const override { if( !target() ) { return 0; } @@ -432,7 +432,7 @@ class item_location::impl::item_on_vehicle : public item_location::impl return res; } - int obtain( Character &ch, long qty ) override { + int obtain( Character &ch, int qty ) override { ch.moves -= obtain_cost( ch, qty ); item obj = target()->split( qty ); @@ -445,7 +445,7 @@ class item_location::impl::item_on_vehicle : public item_location::impl } } - int obtain_cost( const Character &ch, long qty ) const override { + int obtain_cost( const Character &ch, int qty ) const override { if( !target() ) { return 0; } @@ -569,7 +569,7 @@ void item_location::deserialize( JsonIn &js ) } } -long item_location::charges_in_stack( unsigned int countOnly ) const +int item_location::charges_in_stack( unsigned int countOnly ) const { return ptr->charges_in_stack( countOnly ); } @@ -589,7 +589,7 @@ std::string item_location::describe( const Character *ch ) const return ptr->describe( ch ); } -int item_location::obtain( Character &ch, long qty ) +int item_location::obtain( Character &ch, int qty ) { if( !ptr->valid() ) { debugmsg( "item location does not point to valid item" ); @@ -598,7 +598,7 @@ int item_location::obtain( Character &ch, long qty ) return ptr->obtain( ch, qty ); } -int item_location::obtain_cost( const Character &ch, long qty ) const +int item_location::obtain_cost( const Character &ch, int qty ) const { return ptr->obtain_cost( ch, qty ); } diff --git a/src/item_location.h b/src/item_location.h index 4d27fe9da4cf1..11eb760741ea8 100644 --- a/src/item_location.h +++ b/src/item_location.h @@ -50,7 +50,7 @@ class item_location void serialize( JsonOut &js ) const; void deserialize( JsonIn &js ); - long charges_in_stack( unsigned int countOnly ) const; + int charges_in_stack( unsigned int countOnly ) const; bool operator==( const item_location &rhs ) const; bool operator!=( const item_location &rhs ) const; @@ -80,11 +80,11 @@ class item_location * @warning all further operations using this class are invalid * @warning it is unsafe to call this within unsequenced operations (see #15542) * @return inventory position for the item */ - int obtain( Character &ch, long qty = -1 ); + int obtain( Character &ch, int qty = -1 ); /** Calculate (but do not deduct) number of moves required to obtain an item * @see item_location::obtain */ - int obtain_cost( const Character &ch, long qty = -1 ) const; + int obtain_cost( const Character &ch, int qty = -1 ) const; /** Removes the selected item from the game * @warning all further operations using this class are invalid */ diff --git a/src/iteminfo_query.h b/src/iteminfo_query.h index d161dff2b627e..a757c25d7d28d 100644 --- a/src/iteminfo_query.h +++ b/src/iteminfo_query.h @@ -51,6 +51,7 @@ enum class iteminfo_parts : size_t { AMMO_DAMAGE_DISPERSION, AMMO_DAMAGE_RECOIL, AMMO_FX_RECYCLED, + AMMO_FX_BLACKPOWDER, AMMO_FX_CANTMISSFIRE, AMMO_FX_INDENDIARY, diff --git a/src/itype.cpp b/src/itype.cpp index edb72123cc287..2fdfd113faadc 100644 --- a/src/itype.cpp +++ b/src/itype.cpp @@ -24,7 +24,7 @@ std::string itype::nname( unsigned int quantity ) const return ngettext( name.c_str(), name_plural.c_str(), quantity ); } -long itype::charges_per_volume( const units::volume &vol ) const +int itype::charges_per_volume( const units::volume &vol ) const { if( volume == 0_ml ) { return item::INFINITE_CHARGES; // TODO: items should not have 0 volume at all! @@ -49,7 +49,7 @@ const use_function *itype::get_use( const std::string &iuse_name ) const return iter != use_methods.end() ? &iter->second : nullptr; } -long itype::tick( player &p, item &it, const tripoint &pos ) const +int itype::tick( player &p, item &it, const tripoint &pos ) const { // Note: can go higher than current charge count // Maybe should move charge decrementing here? @@ -66,7 +66,7 @@ long itype::tick( player &p, item &it, const tripoint &pos ) const return charges_to_use; } -long itype::invoke( player &p, item &it, const tripoint &pos ) const +int itype::invoke( player &p, item &it, const tripoint &pos ) const { if( !has_use() ) { return 0; @@ -74,7 +74,7 @@ long itype::invoke( player &p, item &it, const tripoint &pos ) const return invoke( p, it, pos, use_methods.begin()->first ); } -long itype::invoke( player &p, item &it, const tripoint &pos, const std::string &iuse_name ) const +int itype::invoke( player &p, item &it, const tripoint &pos, const std::string &iuse_name ) const { const use_function *use = get_use( iuse_name ); if( use == nullptr ) { diff --git a/src/itype.h b/src/itype.h index 98f214b99664b..d04920dba0355 100644 --- a/src/itype.h +++ b/src/itype.h @@ -114,7 +114,7 @@ struct islot_comestible { std::string tool = "null"; /** Defaults # of charges (drugs, loaf of bread? etc) */ - long def_charges = 1; + int def_charges = 1; /** effect on character thirst (may be negative) */ int quench = 0; @@ -399,10 +399,6 @@ struct islot_engine { public: /** for combustion engines the displacement (cc) */ int displacement = 0; - - private: - /** What faults (if any) can occur */ - std::set faults; }; struct islot_wheel { @@ -472,6 +468,14 @@ struct islot_gun : common_ranged_data { * If this uses UPS charges, how many (per shoot), 0 for no UPS charges at all. */ int ups_charges = 0; + /** + * One in X chance for gun to require major cleanup after firing blackpowder shot. + */ + int blackpowder_tolerance = 8; + /** + * Minimum ammo recoil for gun to be able to fire more than once per attack. + */ + int min_cycle_recoil = 0; /** * Length of gun barrel, if positive allows sawing down of the barrel */ @@ -634,7 +638,7 @@ struct islot_ammo : common_ranged_data { /** * Default charges. */ - long def_charges = 1; + int def_charges = 1; /** * TODO: document me. @@ -889,6 +893,9 @@ struct itype { /** What items can be used to repair this item? @see Item_factory::finalize */ std::set repair; + /** What faults (if any) can occur */ + std::set faults; + /** Magazine types (if any) for each ammo type that can be used to reload this item */ std::map< ammotype, std::set > magazines; @@ -975,16 +982,16 @@ struct itype { * Number of (charges of) this type of item that fit into the given volume. * May return 0 if not even one charge fits into the volume. */ - long charges_per_volume( const units::volume &vol ) const; + int charges_per_volume( const units::volume &vol ) const; bool has_use() const; bool can_use( const std::string &iuse_name ) const; const use_function *get_use( const std::string &iuse_name ) const; // Here "invoke" means "actively use". "Tick" means "active item working" - long invoke( player &p, item &it, const tripoint &pos ) const; // Picks first method or returns 0 - long invoke( player &p, item &it, const tripoint &pos, const std::string &iuse_name ) const; - long tick( player &p, item &it, const tripoint &pos ) const; + int invoke( player &p, item &it, const tripoint &pos ) const; // Picks first method or returns 0 + int invoke( player &p, item &it, const tripoint &pos, const std::string &iuse_name ) const; + int tick( player &p, item &it, const tripoint &pos ) const; virtual ~itype() = default; }; diff --git a/src/iuse.cpp b/src/iuse.cpp index d3d999b729f38..e62833491d591 100644 --- a/src/iuse.cpp +++ b/src/iuse.cpp @@ -6907,6 +6907,26 @@ int iuse::ehandcuffs( player *p, item *it, bool t, const tripoint &pos ) return it->type->charges_to_use(); } +int iuse::foodperson( player *, item *it, bool t, const tripoint &pos ) +{ + if( t ) { + if( calendar::once_every( 1_minutes ) ) { + const SpeechBubble &speech = get_speech( "foodperson_mask" ); + sounds::sound( pos, speech.volume, sounds::sound_t::alarm, speech.text, true, "speech", + "foodperson_mask" ); + } + + if( calendar::once_every( 1_hours ) ) { + time_duration shift = time_duration::from_turns( it->magazine_current()->ammo_remaining() * + it->type->tool->turns_per_charge ); + + add_msg( m_info, _( "Your HUD lights-up: \"Your shift ends in %s\"." ), to_string( shift ) ); + } + } + + return it->type->charges_to_use(); +} + int iuse::radiocar( player *p, item *it, bool, const tripoint & ) { int choice = -1; diff --git a/src/iuse.h b/src/iuse.h index b8891500c58e3..145d28b95a78a 100644 --- a/src/iuse.h +++ b/src/iuse.h @@ -184,6 +184,7 @@ class iuse int einktabletpc( player *, item *, bool, const tripoint & ); int camera( player *, item *, bool, const tripoint & ); int ehandcuffs( player *, item *, bool, const tripoint & ); + int foodperson( player *, item *, bool, const tripoint & ); int cable_attach( player *, item *, bool, const tripoint & ); int shavekit( player *, item *, bool, const tripoint & ); int hairkit( player *, item *, bool, const tripoint & ); diff --git a/src/iuse_actor.cpp b/src/iuse_actor.cpp index 989c966f4535a..19d749eb4a53d 100644 --- a/src/iuse_actor.cpp +++ b/src/iuse_actor.cpp @@ -168,6 +168,8 @@ void iuse_transform::load( JsonObject &obj ) need_fire_msg = obj.has_string( "need_fire_msg" ) ? _( obj.get_string( "need_fire_msg" ) ) : _( "You need a source of fire!" ); + obj.read( "need_worn", need_worn ); + obj.read( "qualities_needed", qualities_needed ); obj.read( "menu_text", menu_text ); @@ -185,6 +187,10 @@ int iuse_transform::use( player &p, item &it, bool t, const tripoint &pos ) cons const bool possess = p.has_item( it ) || ( it.has_flag( "ALLOWS_REMOTE_USE" ) && square_dist( p.pos(), pos ) == 1 ); + if( possess && need_worn && !p.is_worn( it ) ) { + p.add_msg_if_player( m_info, _( "You need to wear the %1$s before activating it." ), it.tname() ); + return 0; + } if( need_charges && it.ammo_remaining() < need_charges ) { if( possess ) { p.add_msg_if_player( m_info, need_charges_msg, it.tname() ); diff --git a/src/iuse_actor.h b/src/iuse_actor.h index 0be1741062381..305aac2e44aef 100644 --- a/src/iuse_actor.h +++ b/src/iuse_actor.h @@ -72,6 +72,9 @@ class iuse_transform : public iuse_actor /** used to set the active property of the transformed @ref target */ bool active = false; + /**does the item requires to be worn to be activable*/ + bool need_worn = false; + /** subtracted from @ref Creature::moves when transformation is successful */ int moves = 0; diff --git a/src/json.cpp b/src/json.cpp index f620c21514e0a..29977cfe07a1d 100644 --- a/src/json.cpp +++ b/src/json.cpp @@ -242,23 +242,6 @@ int JsonObject::get_int( const std::string &name, const int fallback ) return jsin->get_int(); } -long JsonObject::get_long( const std::string &name ) -{ - int pos = verify_position( name ); - jsin->seek( pos ); - return jsin->get_long(); -} - -long JsonObject::get_long( const std::string &name, const long fallback ) -{ - long pos = positions[name]; - if( pos <= start ) { - return fallback; - } - jsin->seek( pos ); - return jsin->get_long(); -} - double JsonObject::get_float( const std::string &name ) { int pos = verify_position( name ); @@ -514,13 +497,6 @@ int JsonArray::next_int() return jsin->get_int(); } -long JsonArray::next_long() -{ - verify_index( index ); - jsin->seek( positions[index++] ); - return jsin->get_long(); -} - double JsonArray::next_float() { verify_index( index ); @@ -571,13 +547,6 @@ int JsonArray::get_int( int i ) return jsin->get_int(); } -long JsonArray::get_long( int i ) -{ - verify_index( i ); - jsin->seek( positions[i] ); - return jsin->get_long(); -} - double JsonArray::get_float( int i ) { verify_index( i ); @@ -1046,13 +1015,6 @@ int JsonIn::get_int() return static_cast( get_float() ); } -long JsonIn::get_long() -{ - // get float value and then convert to int, - // because "1.359e3" is technically a valid integer. - return static_cast( get_float() ); -} - double JsonIn::get_float() { // this could maybe be prettier? @@ -1372,24 +1334,6 @@ bool JsonIn::read( unsigned int &u ) return true; } -bool JsonIn::read( long &l ) -{ - if( !test_number() ) { - return false; - } - l = get_long(); - return true; -} - -bool JsonIn::read( unsigned long &ul ) -{ - if( !test_number() ) { - return false; - } - ul = get_long(); - return true; -} - bool JsonIn::read( float &f ) { if( !test_number() ) { diff --git a/src/json.h b/src/json.h index b319f38080a0a..54cf2cc69be05 100644 --- a/src/json.h +++ b/src/json.h @@ -209,7 +209,6 @@ class JsonIn // data parsing std::string get_string(); // get the next value as a string int get_int(); // get the next value as an int - long get_long(); // get the next value as an long bool get_bool(); // get the next value as a bool double get_float(); // get the next value as a double std::string get_member_name(); // also strips the ':' @@ -259,8 +258,6 @@ class JsonIn bool read( short int &s ); bool read( int &i ); bool read( unsigned int &u ); - bool read( long &l ); - bool read( unsigned long &ul ); bool read( float &f ); bool read( double &d ); bool read( std::string &s ); @@ -686,8 +683,6 @@ class JsonObject bool get_bool( const std::string &name, const bool fallback ); int get_int( const std::string &name ); int get_int( const std::string &name, const int fallback ); - long get_long( const std::string &name ); - long get_long( const std::string &name, const long fallback ); double get_float( const std::string &name ); double get_float( const std::string &name, const double fallback ); std::string get_string( const std::string &name ); @@ -853,7 +848,6 @@ class JsonArray // iterative access bool next_bool(); int next_int(); - long next_long(); double next_float(); std::string next_string(); JsonArray next_array(); @@ -863,7 +857,6 @@ class JsonArray // static access bool get_bool( int index ); int get_int( int index ); - long get_long( int index ); double get_float( int index ); std::string get_string( int index ); JsonArray get_array( int index ); diff --git a/src/lightmap.cpp b/src/lightmap.cpp index 9c1ded1d1f34a..6c6e4b4f67317 100644 --- a/src/lightmap.cpp +++ b/src/lightmap.cpp @@ -198,8 +198,9 @@ void map::build_sunlight_cache( int zlev ) auto &lm = map_cache.lm; // Grab illumination at ground level. const float outside_light_level = g->natural_light_level( 0 ); - const float inside_light_level = ( outside_light_level > LIGHT_SOURCE_BRIGHT ) ? - LIGHT_AMBIENT_LOW + 1.0 : LIGHT_AMBIENT_MINIMAL; + // TODO: if zlev < 0 is open to sunlight, this won't calculate correct light, but neither does g->natural_light_level() + const float inside_light_level = ( zlev >= 0 && outside_light_level > LIGHT_SOURCE_BRIGHT ) ? + LIGHT_AMBIENT_DIM * 0.8 : LIGHT_AMBIENT_LOW; // Handling when z-levels are disabled is based on whether a tile is considered "outside". if( !zlevels ) { const auto &outside_cache = map_cache.outside_cache; @@ -236,15 +237,9 @@ void map::build_sunlight_cache( int zlev ) const auto &outside_cache = map_cache.outside_cache; const float sight_penalty = weather::sight_penalty( g->weather.weather ); for( int x = 0, prev_x = offset.x; x < MAPSIZE_X; x++, prev_x++ ) { - bool x_inbounds = true; - if( prev_x < 0 || prev_x >= MAPSIZE_X ) { - x_inbounds = false; - } + bool x_inbounds = ( prev_x < 0 || prev_x >= MAPSIZE_X ) ? false : true; for( int y = 0, prev_y = offset.y; y < MAPSIZE_Y; y++, prev_y++ ) { - bool inbounds = true; - if( !x_inbounds || prev_y < 0 || prev_y >= MAPSIZE_Y ) { - inbounds = false; - } + bool inbounds = ( !x_inbounds || prev_y < 0 || prev_y >= MAPSIZE_Y ) ? false : true; four_quadrants prev_light( outside_light_level ); float prev_transparency = static_cast( LIGHT_TRANSPARENCY_OPEN_AIR ); if( inbounds ) { @@ -259,8 +254,10 @@ void map::build_sunlight_cache( int zlev ) // The formula to apply transparency to the light rays doesn't handle full opacity, // so handle that seperately. if( prev_transparency > LIGHT_TRANSPARENCY_SOLID && - !prev_floor_cache[x][y] && prev_light.max() > 0.0 ) { - lm[x][y].fill( prev_light.max() * LIGHT_TRANSPARENCY_OPEN_AIR / prev_transparency ); + !prev_floor_cache[x][y] && prev_light.max() > 0.0 && outside_cache[x][y] ) { + lm[x][y].fill( std::max( inside_light_level, + prev_light.max() * static_cast( LIGHT_TRANSPARENCY_OPEN_AIR ) + / prev_transparency ) ); } else { lm[x][y].fill( inside_light_level ); } @@ -647,7 +644,7 @@ lit_level map::apparent_light_at( const tripoint &p, const visibility_variables const int dist = rl_dist( g->u.pos(), p ); // Clairvoyance overrides everything. - if( dist <= cache.u_clairvoyance ) { + if( cache.u_clairvoyance > 0 && dist <= cache.u_clairvoyance ) { return LL_BRIGHT; } const auto &map_cache = get_cache_ref( p.z ); diff --git a/src/magic.cpp b/src/magic.cpp index dcb2ce819e436..5347b4282dfdb 100644 --- a/src/magic.cpp +++ b/src/magic.cpp @@ -175,6 +175,8 @@ void spell_type::load( JsonObject &jo, const std::string & ) optional( jo, was_loaded, "final_energy_cost", final_energy_cost, base_energy_cost ); optional( jo, was_loaded, "energy_increment", energy_increment, 0.0f ); + optional( jo, was_loaded, "flags", spell_tags ); + std::string temp_string; optional( jo, was_loaded, "spell_class", temp_string, "NONE" ); spell_class = trait_id( temp_string ); @@ -318,6 +320,11 @@ int spell::energy_cost() const } } +bool spell::has_flag( const std::string &flag ) const +{ + return type->spell_tags.count( flag ); +} + bool spell::can_cast( const player &p ) const { if( !p.magic.knows_spell( type->id ) ) { @@ -392,7 +399,7 @@ std::string spell::colorized_fail_percent( const player &p ) const { const float fail_fl = spell_fail( p ) * 100.0f; std::string fail_str; - fail_fl == 100.0f ? fail_str = _( "Difficult!" ) : fail_str = string_format( "%.1f %% %s", + fail_fl == 100.0f ? fail_str = _( "Too Difficult!" ) : fail_str = string_format( "%.1f %% %s", fail_fl, _( "Failure Chance" ) ); nc_color color; if( fail_fl > 90.0f ) { @@ -1405,7 +1412,7 @@ static void add_effect_to_target( const tripoint &target, const spell &sp ) if( guy ) { for( const body_part bp : all_body_parts ) { if( sp.bp_is_affected( bp ) ) { - guy->add_effect( spell_effect, dur_td, bp ); + guy->add_effect( spell_effect, dur_td, bp, sp.has_flag( "PERMANENT" ) ); bodypart_effected = true; } } @@ -1455,23 +1462,26 @@ void projectile_attack( const spell &sp, const tripoint &source, const tripoint void target_attack( const spell &sp, const tripoint &source, const tripoint &epicenter ) { - damage_targets( sp, spell_effect_area( sp, source, epicenter, spell_effect_blast ) ); + damage_targets( sp, spell_effect_area( sp, source, epicenter, spell_effect_blast, + sp.has_flag( "IGNORE_WALLS" ) ) ); } void cone_attack( const spell &sp, const tripoint &source, const tripoint &target ) { - damage_targets( sp, spell_effect_area( sp, source, target, spell_effect_cone ) ); + damage_targets( sp, spell_effect_area( sp, source, target, spell_effect_cone, + sp.has_flag( "IGNORE_WALLS" ) ) ); } void line_attack( const spell &sp, const tripoint &source, const tripoint &target ) { - damage_targets( sp, spell_effect_area( sp, source, target, spell_effect_line ) ); + damage_targets( sp, spell_effect_area( sp, source, target, spell_effect_line, + sp.has_flag( "IGNORE_WALLS" ) ) ); } void spawn_ethereal_item( spell &sp ) { item granted( sp.effect_data(), calendar::turn ); - if( !granted.is_comestible() ) { + if( !granted.is_comestible() && !( sp.has_flag( "PERMANENT" ) && sp.is_max_level() ) ) { granted.set_var( "ethereal", to_turns( sp.duration_turns() ) ); granted.set_flag( "ETHEREAL_ITEM" ); } diff --git a/src/magic.h b/src/magic.h index b6b0ec0a757c6..10a77fd0a7a62 100644 --- a/src/magic.h +++ b/src/magic.h @@ -147,6 +147,8 @@ class spell_type // lits of bodyparts this spell applies its effect to enum_bitset affected_bps; + std::set spell_tags; + static void load_spell( JsonObject &jo, const std::string &src ); void load( JsonObject &jo, const std::string & ); /** @@ -221,6 +223,8 @@ class spell bool is_valid() const; // is the bodypart affected by the effect bool bp_is_affected( body_part bp ) const; + // check if the spell has a particular flag + bool has_flag( const std::string &flag ) const; // get spell id (from type) spell_id id() const; diff --git a/src/map.cpp b/src/map.cpp index 14bcb07a1fb7a..438557af65c6d 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -7590,6 +7590,42 @@ bool tinymap::inbounds( const tripoint &p ) const return generic_inbounds( p, map_boundaries, map_clearance ); } +// set up a map just long enough scribble on it +// this tinymap should never, ever get saved +bool tinymap::fake_load( const furn_id &fur_type, const ter_id &ter_type, const trap_id &trap_type ) +{ + bool do_terset = true; + set_abs_sub( 0, 0, 0 ); + for( int gridx = 0; gridx < my_MAPSIZE; gridx++ ) { + for( int gridy = 0; gridy < my_MAPSIZE; gridy++ ) { + submap *tmpsub = MAPBUFFER.lookup_submap( gridx, gridy, 0 ); + if( tmpsub == nullptr ) { + generate_uniform( gridx, gridy, 0, ter_type ); + do_terset = false; + tmpsub = MAPBUFFER.lookup_submap( gridx, gridy, 0 ); + if( tmpsub == nullptr ) { + dbg( D_ERROR ) << "failed to generate a fake submap at 0, 0, 0 "; + debugmsg( "failed to generate a fake submap at 0,0,0" ); + return false; + } + } + const size_t gridn = get_nonant( { gridx, gridy, 0 } ); + + setsubmap( gridn, tmpsub ); + } + } + + for( const tripoint &pos : points_in_rectangle( { 0, 0, 0 }, + tripoint( MAPSIZE * SEEX, MAPSIZE * SEEY, 0 ) ) ) { + if( do_terset ) { + ter_set( pos, ter_type ); + } + furn_set( pos, fur_type ); + trap_set( pos, trap_type ); + } + return true; +} + void map::set_graffiti( const tripoint &p, const std::string &contents ) { if( !inbounds( p ) ) { @@ -7850,30 +7886,17 @@ void map::build_floor_caches() } } -void map::build_map_cache( const int zlev, bool skip_lightmap ) +void map::do_vehicle_caching( int z ) { - const int minz = zlevels ? -OVERMAP_DEPTH : zlev; - const int maxz = zlevels ? OVERMAP_HEIGHT : zlev; - bool seen_cache_dirty = false; - for( int z = minz; z <= maxz; z++ ) { - build_outside_cache( z ); - seen_cache_dirty |= build_transparency_cache( z ); - seen_cache_dirty |= build_floor_cache( z ); - } - - tripoint start( 0, 0, minz ); - tripoint end( SEEX * my_MAPSIZE, SEEY * my_MAPSIZE, maxz ); - VehicleList vehs = get_vehicles( start, end ); - // Cache all the vehicle stuff in one loop - for( auto &v : vehs ) { - auto &ch = get_cache( v.z ); - auto &outside_cache = ch.outside_cache; - auto &transparency_cache = ch.transparency_cache; - auto &floor_cache = ch.floor_cache; - for( const vpart_reference &vp : v.v->get_all_parts() ) { + auto &ch = get_cache( z ); + auto &outside_cache = ch.outside_cache; + auto &transparency_cache = ch.transparency_cache; + auto &floor_cache = ch.floor_cache; + for( vehicle *v : ch.vehicle_list ) { + for( const vpart_reference &vp : v->get_all_parts() ) { const size_t part = vp.part_index(); - int px = v.x + vp.part().precalc[0].x; - int py = v.y + vp.part().precalc[0].y; + int px = v->global_pos3().x + vp.part().precalc[0].x; + int py = v->global_pos3().y + vp.part().precalc[0].y; const point p( px, py ); if( !inbounds( p ) ) { continue; @@ -7883,8 +7906,8 @@ void map::build_map_cache( const int zlev, bool skip_lightmap ) vp.has_feature( VPFLAG_OPAQUE ) && !vp.part().is_broken(); if( vehicle_is_opaque ) { - int dpart = v.v->part_with_feature( part, VPFLAG_OPENABLE, true ); - if( dpart < 0 || !v.v->parts[dpart].open ) { + int dpart = v->part_with_feature( part, VPFLAG_OPENABLE, true ); + if( dpart < 0 || !v->parts[dpart].open ) { transparency_cache[px][py] = LIGHT_TRANSPARENCY_SOLID; } else { vehicle_is_opaque = false; @@ -7900,6 +7923,19 @@ void map::build_map_cache( const int zlev, bool skip_lightmap ) } } } +} + +void map::build_map_cache( const int zlev, bool skip_lightmap ) +{ + const int minz = zlevels ? -OVERMAP_DEPTH : zlev; + const int maxz = zlevels ? OVERMAP_HEIGHT : zlev; + bool seen_cache_dirty = false; + for( int z = minz; z <= maxz; z++ ) { + build_outside_cache( z ); + seen_cache_dirty |= build_transparency_cache( z ); + seen_cache_dirty |= build_floor_cache( z ); + do_vehicle_caching( z ); + } // The tile player is standing on should always be transparent const tripoint &p = g->u.pos(); diff --git a/src/map.h b/src/map.h index d97a97f0e0c68..60ed458ca0345 100644 --- a/src/map.h +++ b/src/map.h @@ -1244,6 +1244,7 @@ class map const int init_veh_fuel = -1, const int init_veh_status = -1, const bool merge_wrecks = true ); + void do_vehicle_caching( int z ); // Note: in 3D mode, will actually build caches on ALL z-levels void build_map_cache( int zlev, bool skip_lightmap = false ); // Unlike the other caches, this populates a supplied cache instead of an internal cache. @@ -1523,6 +1524,7 @@ class map */ submap *get_submap_at_grid( const point &gridp ) const; submap *get_submap_at_grid( const tripoint &gridp ) const; + protected: /** * Get the index of a submap pointer in the grid given by grid coordinates. The grid * coordinates must be valid: 0 <= x < my_MAPSIZE, same for y. @@ -1536,7 +1538,7 @@ class map * The given submap pointer must not be null. */ void setsubmap( size_t grididx, submap *smap ); - + private: /** * Internal versions of public functions to avoid checking same variables multiple times. * They lack safety checks, because their callers already do those. @@ -1719,6 +1721,7 @@ class tinymap : public map public: tinymap( int mapsize = 2, bool zlevels = false ); bool inbounds( const tripoint &p ) const override; + bool fake_load( const furn_id &fur_type, const ter_id &ter_type, const trap_id &trap_type ); }; #endif diff --git a/src/mapgen.cpp b/src/mapgen.cpp index 4ab729db3d32d..6951b38398e25 100644 --- a/src/mapgen.cpp +++ b/src/mapgen.cpp @@ -381,7 +381,7 @@ static void load_nested_mapgen( JsonObject &jio, const std::string &id_base ) JsonObject jo = jio.get_object( "object" ); std::string jstr = jo.str(); nested_mapgen[id_base].push_back( - cata::make_unique( jstr ) ); + std::make_unique( jstr ) ); } else { debugmsg( "Nested mapgen: Invalid mapgen function (missing \"object\" object)", id_base.c_str() ); } @@ -399,7 +399,7 @@ static void load_update_mapgen( JsonObject &jio, const std::string &id_base ) JsonObject jo = jio.get_object( "object" ); std::string jstr = jo.str(); update_mapgen[id_base].push_back( - cata::make_unique( jstr ) ); + std::make_unique( jstr ) ); } else { debugmsg( "Update mapgen: Invalid mapgen function (missing \"object\" object)", id_base.c_str() ); @@ -975,7 +975,7 @@ class jmapgen_toilet : public jmapgen_piece const float /*mon_density*/, mission * /*miss*/ ) const override { const int rx = x.get(); const int ry = y.get(); - const long charges = amount.get(); + const int charges = amount.get(); dat.m.furn_set( rx, ry, f_null ); if( charges == 0 ) { dat.m.place_toilet( rx, ry ); // Use the default charges supplied as default values @@ -1014,7 +1014,7 @@ class jmapgen_gaspump : public jmapgen_piece const float /*mon_density*/, mission * /*miss*/ ) const override { const int rx = x.get(); const int ry = y.get(); - long charges = amount.get(); + int charges = amount.get(); dat.m.furn_set( rx, ry, f_null ); if( charges == 0 ) { charges = rng( 10000, 50000 ); @@ -8455,23 +8455,16 @@ std::pair, std::map> get_changed_ids_from_up return std::make_pair( terrains, furnitures ); } - const tripoint omt_pos = tripoint( 0, 0, 0 ); - tinymap fake_map; - fake_map.load( 0, 0, 0, false ); - for( const tripoint &pos : fake_map.points_in_rectangle( omt_pos, - tripoint( MAPSIZE * SEEX, MAPSIZE * SEEY, 0 ) ) ) { - fake_map.furn_set( pos, f_null ); - fake_map.ter_set( pos, t_dirt ); - fake_map.trap_set( pos, tr_null ); + if( !fake_map.fake_load( f_null, t_dirt, tr_null ) ) { + return std::make_pair( terrains, furnitures ); } - - const regional_settings &rsettings = overmap_buffer.get_settings( omt_pos.x, omt_pos.y, - omt_pos.z ); oter_id any = oter_id( "field" ); + // just need a variable here, it doesn't need to be valid + const regional_settings dummy_settings; mapgendata fake_md( any, any, any, any, any, any, any, any, - any, any, omt_pos.z, rsettings, fake_map ); + any, any, 0, dummy_settings, fake_map ); if( update_function->second[0]->update_map( fake_md ) ) { for( const tripoint &pos : fake_map.points_in_rectangle( { 0, 0, 0 }, { 23, 23, 0 } ) ) { diff --git a/src/martialarts.cpp b/src/martialarts.cpp index b0895f2df0612..e2df4f6e5da98 100644 --- a/src/martialarts.cpp +++ b/src/martialarts.cpp @@ -115,6 +115,7 @@ void ma_technique::load( JsonObject &jo, const std::string &src ) optional( jo, was_loaded, "stun_dur", stun_dur, 0 ); optional( jo, was_loaded, "knockback_dist", knockback_dist, 0 ); optional( jo, was_loaded, "knockback_spread", knockback_spread, 0 ); + optional( jo, was_loaded, "knockback_follow", knockback_follow, 0 ); optional( jo, was_loaded, "aoe", aoe, "" ); optional( jo, was_loaded, "flags", flags, auto_flags_reader<> {} ); @@ -435,6 +436,7 @@ ma_technique::ma_technique() stun_dur = 0; knockback_dist = 0; knockback_spread = 0; // adding randomness to knockback, like tec_throw + knockback_follow = 0; // player follows the knocked-back party into their former tile // offensive disarms = false; // like tec_disarm @@ -1108,6 +1110,10 @@ std::string ma_technique::get_description() const knockback_dist, ngettext( "tile", "tiles", knockback_dist ) ) << std::endl; } + if( knockback_follow ) { + dump << _( "* Will follow enemies after knockback." ) << std::endl; + } + if( down_dur ) { dump << string_format( _( "* Will down enemies for %d %s" ), down_dur, ngettext( "turn", "turns", down_dur ) ) << std::endl; diff --git a/src/martialarts.h b/src/martialarts.h index d52aa29a3f306..2eeca2ccc72f0 100644 --- a/src/martialarts.h +++ b/src/martialarts.h @@ -94,6 +94,7 @@ class ma_technique int knockback_dist; float knockback_spread; // adding randomness to knockback, like tec_throw std::string aoe; // corresponds to an aoe shape, defaults to just the target + int knockback_follow; // player follows the knocked-back party into their former tile // offensive bool disarms; // like tec_disarm diff --git a/src/melee.cpp b/src/melee.cpp index 098693b18ca44..c92dff51986bd 100644 --- a/src/melee.cpp +++ b/src/melee.cpp @@ -1242,12 +1242,24 @@ void player::perform_technique( const ma_technique &technique, Creature &t, dama } if( technique.knockback_dist > 0 ) { + const tripoint prev_pos = t.pos(); // track target startpoint for knockback_follow const int kb_offset_x = rng( -technique.knockback_spread, technique.knockback_spread ); const int kb_offset_y = rng( -technique.knockback_spread, technique.knockback_spread ); tripoint kb_point( posx() + kb_offset_x, posy() + kb_offset_y, posz() ); for( int dist = rng( 1, technique.knockback_dist ); dist > 0; dist-- ) { t.knock_back_from( kb_point ); } + // This technique makes the player follow into the tile the target was knocked from + if( technique.knockback_follow > 0 ) { + // Check if terrain there is safe then if a critter's still there - if clear, move player there + if( !g->prompt_dangerous_tile( prev_pos ) ) { + return; + } else { + if( t.pos() != prev_pos ) { + g->place_player( prev_pos ); + } + } + } } player *p = dynamic_cast( &t ); diff --git a/src/mission.h b/src/mission.h index 8631f143995ad..9cac4bcfa65e8 100644 --- a/src/mission.h +++ b/src/mission.h @@ -285,7 +285,7 @@ class mission std::string description; mission_status status; // Cash/Favor value of completing this - unsigned long value; + unsigned int value; // If there's a special reward for completing it npc_favor reward; // Unique ID number, used for referencing elsewhere diff --git a/src/mission_start.cpp b/src/mission_start.cpp index 1b9d3fff1f181..c7730345bbcf1 100644 --- a/src/mission_start.cpp +++ b/src/mission_start.cpp @@ -584,7 +584,7 @@ void mission_start::place_book( mission * ) void mission_start::reveal_refugee_center( mission *miss ) { mission_target_params t; - t.overmap_terrain_subtype = "evac_center_18"; + t.overmap_terrain_subtype = "refctr_S3e"; t.overmap_special = overmap_special_id( "evac_center" ); t.mission_pointer = miss; t.search_range = 0; diff --git a/src/monexamine.cpp b/src/monexamine.cpp index baf3c07ac92c2..2afc2cff90969 100644 --- a/src/monexamine.cpp +++ b/src/monexamine.cpp @@ -518,10 +518,10 @@ void monexamine::milk_source( monster &source_mon ) source_mon.get_name() ); return; } - const long milk_per_day = milked_item->second; + const int milk_per_day = milked_item->second; const time_duration milking_freq = 1_days / milk_per_day; - long remaining_milk = milk_per_day; + int remaining_milk = milk_per_day; if( source_mon.has_effect( effect_milked ) ) { remaining_milk -= source_mon.get_effect_dur( effect_milked ) / milking_freq; } @@ -537,7 +537,7 @@ void monexamine::milk_source( monster &source_mon ) milk.set_item_temperature( 311.75 ); if( liquid_handler::handle_liquid( milk, nullptr, 1, nullptr, nullptr, -1, &source_mon ) ) { add_msg( _( "You milk the %s." ), source_mon.get_name() ); - long transferred_milk = remaining_milk - milk.charges; + int transferred_milk = remaining_milk - milk.charges; source_mon.add_effect( effect_milked, milking_freq * transferred_milk ); g->u.mod_moves( -to_moves( transferred_milk * 1_minutes / 5 ) ); } diff --git a/src/morale.cpp b/src/morale.cpp index e36526c3e093f..5d7d8597d1974 100644 --- a/src/morale.cpp +++ b/src/morale.cpp @@ -700,8 +700,14 @@ void player_morale::on_item_takeoff( const item &it ) void player_morale::on_worn_item_transform( const item &it ) { item dummy = it; - dummy.convert( dynamic_cast( item::find_type( - it.typeId() )->get_use( "transform" )->get_actor_ptr() )->target ); + + if( item::find_type( it.typeId() )->can_use( "transform" ) ) { + dummy.convert( dynamic_cast( item::find_type( + it.typeId() )->get_use( "transform" )->get_actor_ptr() )->target ); + } else if( it.is_tool_reversible() ) { + dummy.convert( *( it.type )->tool->revert_to ); + } + set_worn( dummy, false ); set_worn( it, true ); diff --git a/src/morale_types.cpp b/src/morale_types.cpp index 85dea7be627c3..66fec45d3884c 100644 --- a/src/morale_types.cpp +++ b/src/morale_types.cpp @@ -163,6 +163,8 @@ const morale_type MORALE_BOOK( "morale_book" ); const morale_type MORALE_COMFY( "morale_comfy" ); const morale_type MORALE_SCREAM( "morale_scream" ); const morale_type MORALE_PERM_MASOCHIST( "morale_perm_masochist" ); +const morale_type MORALE_PERM_NOFACE( "morale_perm_noface" ); +const morale_type MORALE_PERM_FPMODE_ON( "morale_perm_fpmode_on" ); const morale_type MORALE_PERM_HOARDER( "morale_perm_hoarder" ); const morale_type MORALE_PERM_FANCY( "morale_perm_fancy" ); const morale_type MORALE_PERM_OPTIMIST( "morale_perm_optimist" ); diff --git a/src/morale_types.h b/src/morale_types.h index dd4b6bc36e651..2f49951a48b51 100644 --- a/src/morale_types.h +++ b/src/morale_types.h @@ -90,6 +90,8 @@ extern const morale_type MORALE_BOOK; extern const morale_type MORALE_COMFY; extern const morale_type MORALE_SCREAM; extern const morale_type MORALE_PERM_MASOCHIST; +extern const morale_type MORALE_PERM_NOFACE; +extern const morale_type MORALE_PERM_FPMODE_ON; extern const morale_type MORALE_PERM_HOARDER; extern const morale_type MORALE_PERM_FANCY; extern const morale_type MORALE_PERM_OPTIMIST; diff --git a/src/mutation.cpp b/src/mutation.cpp index 61a4d9e02b157..8d3e24db41cc4 100644 --- a/src/mutation.cpp +++ b/src/mutation.cpp @@ -474,7 +474,7 @@ void player::deactivate_mutation( const trait_id &mut ) recalc_sight_limits(); } -trait_id Character::trait_by_invlet( const long ch ) const +trait_id Character::trait_by_invlet( const int ch ) const { for( auto &mut : my_mutations ) { if( mut.second.key == ch ) { diff --git a/src/mutation.h b/src/mutation.h index c889b7e923078..db847e4487422 100644 --- a/src/mutation.h +++ b/src/mutation.h @@ -409,9 +409,9 @@ enum class mutagen_rejection { }; struct mutagen_attempt { - mutagen_attempt( bool a, long c ) : allowed( a ), charges_used( c ) {} + mutagen_attempt( bool a, int c ) : allowed( a ), charges_used( c ) {} bool allowed; - long charges_used; + int charges_used; }; mutagen_attempt mutagen_common_checks( player &p, const item &it, bool strong, diff --git a/src/mutation_data.cpp b/src/mutation_data.cpp index 8937829e18e77..98c69a8132cdd 100644 --- a/src/mutation_data.cpp +++ b/src/mutation_data.cpp @@ -633,9 +633,7 @@ void mutation_branch::load_trait_group( JsonArray &entries, const trait_group::T JsonArray subarr = entries.next_array(); trait_id id( subarr.get_string( 0 ) ); - std::unique_ptr ptr( - new Single_trait_creator( id, subarr.get_int( 1 ) ) ); - tg.add_entry( ptr ); + tg.add_entry( std::make_unique( id, subarr.get_int( 1 ) ) ); // Otherwise load new format {"trait": ... } or {"group": ...} } else { JsonObject subobj = entries.next_object(); @@ -721,7 +719,7 @@ void mutation_branch::add_entry( Trait_group &tg, JsonObject &obj ) JsonObject job2 = jarr.next_object(); add_entry( tg2, job2 ); } - tg.add_entry( ptr ); + tg.add_entry( std::move( ptr ) ); return; } @@ -737,7 +735,7 @@ void mutation_branch::add_entry( Trait_group &tg, JsonObject &obj ) return; } - tg.add_entry( ptr ); + tg.add_entry( std::move( ptr ) ); } std::shared_ptr mutation_branch::get_group( const trait_group::Trait_group_tag &gid ) diff --git a/src/npc.cpp b/src/npc.cpp index 44fbe531f6397..e73ddee7213c3 100644 --- a/src/npc.cpp +++ b/src/npc.cpp @@ -575,8 +575,8 @@ void starting_inv( npc &who, const npc_class_id &type ) // TODO: Move to npc_class // NC_COWBOY and NC_BOUNTY_HUNTER get 5-15 whilst all others get 3-6 - long qty = 1 + ( type == NC_COWBOY || - type == NC_BOUNTY_HUNTER ); + int qty = 1 + ( type == NC_COWBOY || + type == NC_BOUNTY_HUNTER ); qty = rng( qty, qty * 2 ); while( qty-- != 0 && who.can_pickVolume( ammo ) ) { @@ -589,8 +589,8 @@ void starting_inv( npc &who, const npc_class_id &type ) res.emplace_back( "molotov" ); } - long qty = ( type == NC_EVAC_SHOPKEEP || - type == NC_TRADER ) ? 5 : 2; + int qty = ( type == NC_EVAC_SHOPKEEP || + type == NC_TRADER ) ? 5 : 2; qty = rng( qty, qty * 3 ); while( qty-- != 0 ) { @@ -1350,6 +1350,11 @@ int npc::value( const item &it, int market_price ) const return -1000; } + // faction currency trades at market price + if( my_fac && my_fac->currency == it.typeId() ) { + return market_price; + } + int ret = 0; // TODO: Cache own weapon value (it can be a bit expensive to compute 50 times/turn) double weapon_val = weapon_value( it ) - weapon_value( weapon ); diff --git a/src/npctalk.cpp b/src/npctalk.cpp index f95f91df7652f..c129912064d99 100644 --- a/src/npctalk.cpp +++ b/src/npctalk.cpp @@ -92,6 +92,7 @@ const efftype_id effect_narcosis( "narcosis" ); const efftype_id effect_sleep( "sleep" ); static const trait_id trait_DEBUG_MIND_CONTROL( "DEBUG_MIND_CONTROL" ); +static const trait_id trait_PROF_FOODP( "PROF_FOODP" ); const zone_type_id zone_no_investigate( "NPC_NO_INVESTIGATE" ); const zone_type_id zone_investigate_only( "NPC_INVESTIGATE_ONLY" ); @@ -156,7 +157,7 @@ int calc_ma_style_training_cost( const npc &p, const matype_id & /* id */ ) } // Rescale values from "mission scale" to "opinion scale" -int cash_to_favor( const npc &, int cash ) +int npc_trading::cash_to_favor( const npc &, int cash ) { // TODO: It should affect different NPCs to a different degree // Square root of mission value in dollars @@ -329,6 +330,12 @@ void game::chat() } ); const int guard_count = guards.size(); + if( g->u.has_trait( trait_PROF_FOODP ) && !( g->u.is_wearing( itype_id( "foodperson_mask" ) ) || + g->u.is_wearing( itype_id( "foodperson_mask_on" ) ) ) ) { + g->u.add_msg_if_player( m_warning, _( "You can't speak without your face!" ) ); + return; + } + uilist nmenu; nmenu.text = std::string( _( "What do you want to do?" ) ); @@ -674,6 +681,16 @@ void npc::talk_to_u( bool text_only, bool radio_contact ) } } + if( g->u.has_trait( trait_PROF_FOODP ) && !( g->u.is_wearing( itype_id( "foodperson_mask" ) ) || + g->u.is_wearing( itype_id( "foodperson_mask_on" ) ) ) ) { + d.add_topic( "TALK_NOFACE" ); + } + + if( has_trait( trait_PROF_FOODP ) && !( is_wearing( itype_id( "foodperson_mask" ) ) || + is_wearing( itype_id( "foodperson_mask_on" ) ) ) ) { + d.add_topic( "TALK_NPC_NOFACE" ); + } + decide_needs(); dialogue_window d_win; @@ -726,7 +743,13 @@ std::string dialogue::dynamic_line( const talk_topic &the_topic ) const } } - if( topic == "TALK_DEAF" ) { + if( topic == "TALK_NPC_NOFACE" ) { + return string_format( _( "&%s stays silent." ), beta->name ); + } + + if( topic == "TALK_NOFACE" ) { + return _( "&You can't talk without your face." ); + } else if( topic == "TALK_DEAF" ) { return _( "&You are deaf and can't talk." ); } else if( topic == "TALK_DEAF_ANGRY" ) { @@ -1759,24 +1782,27 @@ void talk_effect_fun_t::set_u_buy_item( const std::string &item_name, int cost, function = [item_name, cost, count, container_name]( const dialogue & d ) { npc &p = *d.beta; player &u = *d.alpha; + if( !npc_trading::pay_npc( p, cost ) ) { + popup( _( "You can't afford it!" ) ); + return; + } if( container_name.empty() ) { item new_item = item( item_name, calendar::turn, count ); u.i_add( new_item ); if( count == 1 ) { //~ %1%s is the NPC name, %2$s is an item - popup( _( "%1$s gives you a %2$s" ), p.name, new_item.tname() ); + popup( _( "%1$s gives you a %2$s." ), p.name, new_item.tname() ); } else { //~ %1%s is the NPC name, %2$d is a number of items, %3$s are items - popup( _( "%1$s gives you %2$d %3$s" ), p.name, count, new_item.tname() ); + popup( _( "%1$s gives you %2$d %3$s." ), p.name, count, new_item.tname() ); } } else { item container( container_name, calendar::turn ); container.emplace_back( item_name, calendar::turn, count ); u.i_add( container ); //~ %1%s is the NPC name, %2$s is an item - popup( _( "%1$s gives you a %2$s" ), p.name, container.tname() ); + popup( _( "%1$s gives you a %2$s." ), p.name, container.tname() ); } - u.cash -= cost; }; } @@ -1799,12 +1825,12 @@ void talk_effect_fun_t::set_u_sell_item( const std::string &item_name, int cost, if( count == 1 ) { //~ %1%s is the NPC name, %2$s is an item - popup( _( "You give %1$s a %2$s" ), p.name, old_item.tname() ); + popup( _( "You give %1$s a %2$s." ), p.name, old_item.tname() ); } else { //~ %1%s is the NPC name, %2$d is a number of items, %3$s are items - popup( _( "You give %1$s %2$d %3$s" ), p.name, count, old_item.tname() ); + popup( _( "You give %1$s %2$d %3$s." ), p.name, count, old_item.tname() ); } - u.cash += cost; + p.op_of_u.owed += cost; }; } @@ -1852,8 +1878,8 @@ void talk_effect_fun_t::set_remove_item_with( JsonObject jo, const std::string & void talk_effect_fun_t::set_u_spend_cash( int amount ) { function = [amount]( const dialogue & d ) { - player &u = *d.alpha; - u.cash -= amount; + npc &np = *d.beta; + npc_trading::pay_npc( np, amount ); }; } @@ -2010,8 +2036,34 @@ void talk_effect_fun_t::set_bulk_trade_accept( bool is_trade, bool is_npc ) item tmp( d.cur_item ); tmp.charges = seller_has; if( is_trade ) { - int price = tmp.price( true ) * ( is_npc ? -1 : 1 ); - g->u.cash += price; + int price = tmp.price( true ) * ( is_npc ? -1 : 1 ) + d.beta->op_of_u.owed; + if( d.beta->my_fac && !d.beta->my_fac->currency.empty() ) { + const itype_id &pay_in = d.beta->my_fac->currency; + item pay( pay_in ); + if( d.beta->value( pay ) > 0 ) { + int required = price / d.beta->value( pay ); + int buyer_has = required; + if( is_npc ) { + buyer_has = std::min( buyer_has, buyer->charges_of( pay_in ) ); + buyer->use_charges( pay_in, buyer_has ); + } else { + if( buyer_has == 1 ) { + //~ %1%s is the NPC name, %2$s is an item + popup( _( "%1$s gives you a %2$s." ), d.beta->disp_name(), + pay.tname() ); + } else if( buyer_has > 1 ) { + //~ %1%s is the NPC name, %2$d is a number of items, %3$s are items + popup( _( "%1$s gives you %2$d %3$s." ), d.beta->disp_name(), buyer_has, + pay.tname() ); + } + } + for( int i = 0; i < buyer_has; i++ ) { + seller->i_add( pay ); + price -= d.beta->value( pay ); + } + } + d.beta->op_of_u.owed += price; + } } seller->use_charges( d.cur_item, seller_has ); buyer->i_add( tmp ); @@ -2071,7 +2123,7 @@ talk_topic talk_effect_t::apply( dialogue &d ) const d.beta->op_of_u += opinion; if( miss && ( mission_opinion.trust || mission_opinion.fear || mission_opinion.value || mission_opinion.anger ) ) { - int m_value = cash_to_favor( *d.beta, miss->get_value() ); + int m_value = npc_trading::cash_to_favor( *d.beta, miss->get_value() ); npc_opinion mod = npc_opinion( mission_opinion.trust ? m_value / mission_opinion.trust : 0, mission_opinion.fear ? @@ -2776,25 +2828,25 @@ void conditional_t::set_npc_role_nearby( JsonObject &jo ) void conditional_t::set_npc_allies( JsonObject &jo ) { - const unsigned long min_allies = jo.get_int( "npc_allies" ); + const unsigned int min_allies = jo.get_int( "npc_allies" ); condition = [min_allies]( const dialogue & ) { return g->allies().size() >= min_allies; }; } -void conditional_t::set_npc_service( JsonObject &jo ) +void conditional_t::set_u_has_cash( JsonObject &jo ) { - const signed long service_price = jo.get_int( "npc_service" ); - condition = [service_price]( const dialogue & d ) { - return !d.beta->has_effect( effect_currently_busy ) && d.alpha->cash >= service_price; + const int min_cash = jo.get_int( "u_has_cash" ); + condition = [min_cash]( const dialogue & d ) { + return d.alpha->cash >= min_cash; }; } -void conditional_t::set_u_has_cash( JsonObject &jo ) +void conditional_t::set_u_are_owed( JsonObject &jo ) { - const signed long min_cash = jo.get_int( "u_has_cash" ); - condition = [min_cash]( const dialogue & d ) { - return d.alpha->cash >= min_cash; + const int min_debt = jo.get_int( "u_are_owed" ); + condition = [min_debt]( const dialogue & d ) { + return d.beta->op_of_u.owed >= min_debt; }; } @@ -2872,7 +2924,7 @@ void conditional_t::set_npc_override( JsonObject &jo ) void conditional_t::set_days_since( JsonObject &jo ) { - const unsigned long days = jo.get_int( "days_since_cataclysm" ); + const unsigned int days = jo.get_int( "days_since_cataclysm" ); condition = [days]( const dialogue & ) { return to_turn( calendar::turn ) >= DAYS( days ); }; @@ -3263,9 +3315,11 @@ conditional_t::conditional_t( JsonObject jo ) } else if( jo.has_int( "npc_allies" ) ) { set_npc_allies( jo ); } else if( jo.has_int( "npc_service" ) ) { - set_npc_service( jo ); + set_npc_available(); } else if( jo.has_int( "u_has_cash" ) ) { set_u_has_cash( jo ); + } else if( jo.has_int( "u_are_owed" ) ) { + set_u_are_owed( jo ); } else if( jo.has_string( "npc_aim_rule" ) ) { set_npc_aim_rule( jo ); } else if( jo.has_string( "npc_engagement_rule" ) ) { @@ -3821,7 +3875,8 @@ std::string give_item_to( npc &p, bool allow_use, bool allow_carry ) return _( "Changed your mind?" ); } - if( &given == &g->u.weapon && given.has_flag( "NO_UNWIELD" ) ) { + if( ( &given == &g->u.weapon && given.has_flag( "NO_UNWIELD" ) ) || ( g->u.is_worn( given ) && + given.has_flag( "NO_TAKEOFF" ) ) ) { // Bionic weapon or shackles return _( "How?" ); } @@ -3847,8 +3902,8 @@ std::string give_item_to( npc &p, bool allow_use, bool allow_carry ) } bool taken = false; - long our_ammo = p.ammo_count_for( p.weapon ); - long new_ammo = p.ammo_count_for( given ); + int our_ammo = p.ammo_count_for( p.weapon ); + int new_ammo = p.ammo_count_for( given ); const double new_weapon_value = p.weapon_value( given, new_ammo ); const double cur_weapon_value = p.weapon_value( p.weapon, our_ammo ); if( allow_use ) { diff --git a/src/npctalk_funcs.cpp b/src/npctalk_funcs.cpp index 8f30d00ce5654..50d1ae512ce92 100644 --- a/src/npctalk_funcs.cpp +++ b/src/npctalk_funcs.cpp @@ -94,7 +94,7 @@ void talk_function::mission_success( npc &p ) return; } - int miss_val = cash_to_favor( p, miss->get_value() ); + int miss_val = npc_trading::cash_to_favor( p, miss->get_value() ); npc_opinion tmp( 0, 0, 1 + miss_val / 5, -1, 0 ); p.op_of_u += tmp; if( p.my_fac != nullptr ) { @@ -152,7 +152,7 @@ void talk_function::mission_reward( npc &p ) int mission_value = miss->get_value(); p.op_of_u.owed += mission_value; - trade( p, 0, _( "Reward" ) ); + npc_trading::trade( p, 0, _( "Reward" ) ); } void talk_function::buy_chicken( npc &p ) @@ -188,7 +188,7 @@ void spawn_animal( npc &p, const mtype_id &mon ) void talk_function::start_trade( npc &p ) { - trade( p, 0, _( "Trade" ) ); + npc_trading::trade( p, 0, _( "Trade" ) ); } void talk_function::sort_loot( npc &p ) @@ -451,7 +451,7 @@ void talk_function::bionic_remove( npc &p ) void talk_function::give_equipment( npc &p ) { - std::vector giving = init_selling( p ); + std::vector giving = npc_trading::init_selling( p ); int chosen = -1; while( chosen == -1 && giving.size() > 1 ) { int index = rng( 0, giving.size() - 1 ); @@ -796,21 +796,14 @@ void talk_function::lead_to_safety( npc &p ) p.set_attitude( NPCATT_LEAD ); } -static bool pay_npc( npc &np, int cost ) +bool npc_trading::pay_npc( npc &np, int cost ) { if( np.op_of_u.owed >= cost ) { np.op_of_u.owed -= cost; return true; } - if( g->u.cash + static_cast( np.op_of_u.owed ) >= static_cast - ( cost ) ) { - g->u.cash -= cost - np.op_of_u.owed; - np.op_of_u.owed = 0; - return true; - } - - return trade( np, -cost, _( "Pay:" ) ); + return npc_trading::trade( np, cost, _( "Pay:" ) ); } void talk_function::start_training( npc &p ) @@ -836,7 +829,7 @@ void talk_function::start_training( npc &p ) mission *miss = p.chatbin.mission_selected; if( miss != nullptr && miss->get_assigned_player_id() == g->u.getID() ) { clear_mission( p ); - } else if( !pay_npc( p, cost ) ) { + } else if( !npc_trading::pay_npc( p, cost ) ) { return; } g->u.assign_activity( activity_id( "ACT_TRAIN" ), to_moves( time ), p.getID(), 0, name ); diff --git a/src/npctrade.cpp b/src/npctrade.cpp index 5429732385f77..cea4f792e1d91 100644 --- a/src/npctrade.cpp +++ b/src/npctrade.cpp @@ -22,14 +22,16 @@ #include "cursesdef.h" #include "item.h" #include "player.h" +#include "string_input_popup.h" #include "units.h" #include "visitable.h" #include "type_id.h" const skill_id skill_barter( "barter" ); -inventory inventory_exchange( inventory &inv, - const std::set &without, const std::vector &added ) +inventory npc_trading::inventory_exchange( inventory &inv, + const std::set &without, + const std::vector &added ) { std::vector item_dump; inv.dump( item_dump ); @@ -46,7 +48,46 @@ inventory inventory_exchange( inventory &inv, return new_inv; } -std::vector init_selling( npc &p ) +void npc_trading::transfer_items( std::vector &stuff, player &giver, player &receiver, + faction *fac, std::list &from_map, + bool npc_gives ) +{ + for( item_pricing &ip : stuff ) { + if( !ip.selected ) { + continue; + } + item gift = *ip.loc.get_item(); + gift.set_owner( fac ); + int charges = npc_gives ? ip.u_charges : ip.npc_charges; + int count = npc_gives ? ip.u_has : ip.npc_has; + + if( ip.charges ) { + gift.charges = charges; + receiver.i_add( gift ); + } else { + for( int i = 0; i < count; i++ ) { + receiver.i_add( gift ); + } + } + + if( ip.loc.where() == item_location::type::character ) { + if( gift.typeId() == giver.weapon.typeId() ) { + giver.remove_weapon(); + } + if( ip.charges > 0 ) { + giver.use_charges( gift.typeId(), charges ); + } else if( ip.count > 0 ) { + for( int i = 0; i < count; i++ ) { + giver.use_amount( gift.typeId(), 1 ); + } + } + } else { + from_map.push_back( &ip.loc ); + } + } +} + +std::vector npc_trading::init_selling( npc &p ) { std::vector result; invslice slice = p.inv.slice(); @@ -56,7 +97,7 @@ std::vector init_selling( npc &p ) const int price = it.price( true ); int val = p.value( it ); if( p.wants_to_sell( it, val, price ) ) { - result.emplace_back( p, &i->front(), val, false ); + result.emplace_back( p, &i->front(), val, i->size() ); } } @@ -67,68 +108,104 @@ std::vector init_selling( npc &p ) return result; } +double npc_trading::net_price_adjustment( const player &buyer, const player &seller ) +{ + // Adjust the prices based on your barter skill. + // cap adjustment so nothing is ever sold below value + ///\EFFECT_INT_NPC slightly increases bartering price changes, relative to your INT + + ///\EFFECT_BARTER_NPC increases bartering price changes, relative to your BARTER + + ///\EFFECT_INT slightly increases bartering price changes, relative to NPC INT + + ///\EFFECT_BARTER increases bartering price changes, relative to NPC BARTER + double adjust = 0.05 * ( seller.int_cur - buyer.int_cur ) + + price_adjustment( seller.get_skill_level( skill_barter ) - + buyer.get_skill_level( skill_barter ) ); + return( std::max( adjust, 1.0 ) ); +} + template void buy_helper( T &src, Callback cb ) { src.visit_items( [&src, &cb]( item * node ) { - cb( std::move( item_location( src, node ) ) ); + cb( std::move( item_location( src, node ) ), 1 ); return VisitResponse::SKIP; } ); } -std::vector init_buying( npc &p, player &u ) +std::vector npc_trading::init_buying( player &buyer, player &seller, bool is_npc ) { std::vector result; + npc *np_p = dynamic_cast( &buyer ); + if( is_npc ) { + np_p = dynamic_cast( &seller ); + } + npc &np = *np_p; + faction *fac = np.my_fac; + + double adjust = net_price_adjustment( buyer, seller ); - const auto check_item = [&p, &result]( item_location && loc ) { + const auto check_item = [fac, adjust, &np, &result]( item_location && loc, int count = 1 ) { item *it_ptr = loc.get_item(); if( it_ptr == nullptr || it_ptr->is_null() ) { return; } - auto &it = *it_ptr; + item &it = *it_ptr; const int market_price = it.price( true ); - int val = p.value( it, market_price ); - if( p.wants_to_buy( it, val, market_price ) ) { - result.emplace_back( std::move( loc ), val, false ); + int val = np.value( it, market_price ); + if( np.wants_to_buy( it, val, market_price ) ) { + result.emplace_back( std::move( loc ), val, count ); + result.back().adjust_values( adjust, fac ); } }; - invslice slice = u.inv.slice(); + invslice slice = seller.inv.slice(); for( auto &i : slice ) { - // TODO: Sane way of handling multi-item stacks - check_item( item_location( u, &i->front() ) ); + check_item( item_location( seller, &i->front() ), i->size() ); } - if( !u.weapon.has_flag( "NO_UNWIELD" ) ) { - check_item( item_location( u, &u.weapon ) ); + if( !seller.weapon.has_flag( "NO_UNWIELD" ) ) { + check_item( item_location( seller, &seller.weapon ), 1 ); } - for( auto &cursor : map_selector( u.pos(), 1 ) ) { + for( auto &cursor : map_selector( seller.pos(), 1 ) ) { buy_helper( cursor, check_item ); } - for( auto &cursor : vehicle_selector( u.pos(), 1 ) ) { + for( auto &cursor : vehicle_selector( seller.pos(), 1 ) ) { buy_helper( cursor, check_item ); } return result; } -bool trade( npc &p, int cost, const std::string &deal ) +void item_pricing::set_values( int ip_count ) +{ + item *i_p = loc.get_item(); + is_container = i_p->is_container() || i_p->is_ammo_container(); + if( is_container || i_p->count() == 1 ) { + count = ip_count; + } else { + charges = i_p->count(); + price /= charges; + } +} + +void item_pricing::adjust_values( const double adjust, faction *fac ) { - catacurses::window w_head = catacurses::newwin( 4, TERMX, 0, 0 ); - const int win_they_w = TERMX / 2; - catacurses::window w_them = catacurses::newwin( TERMY - 4, win_they_w, 4, 0 ); - catacurses::window w_you = catacurses::newwin( TERMY - 4, TERMX - win_they_w, 4, win_they_w ); - catacurses::window w_tmp; - std::string header_message = _( "\ -TAB key to switch lists, letters to pick items, Enter to finalize, Esc to quit,\n\ -? to get information on an item." ); - mvwprintz( w_head, 0, 0, c_white, header_message.c_str(), p.name ); - - // If entries were to get over a-z and A-Z, we wouldn't have good keys for them - const size_t entries_per_page = std::min( TERMY - 7, 2 + ( 'z' - 'a' ) + ( 'Z' - 'A' ) ); + if( !fac || fac->currency != loc.get_item()->typeId() ) { + price *= adjust; + } +} + +void trading_window::setup_win( npc &np ) +{ + w_head = catacurses::newwin( 4, TERMX, 0, 0 ); + w_them = catacurses::newwin( TERMY - 4, win_they_w, 4, 0 ); + w_you = catacurses::newwin( TERMY - 4, TERMX - win_they_w, 4, win_they_w ); + mvwprintz( w_head, 0, 0, c_white, header_message.c_str(), np.disp_name() ); // Set up line drawings for( int i = 0; i < TERMX; i++ ) { @@ -136,175 +213,217 @@ TAB key to switch lists, letters to pick items, Enter to finalize, Esc to quit,\ } wrefresh( w_head ); // End of line drawings +} +void trading_window::setup_trade( int cost, npc &np ) +{ // Populate the list of what the NPC is willing to buy, and the prices they pay // Note that the NPC's barter skill is factored into these prices. // TODO: Recalc item values every time a new item is selected // Trading is not linear - starving NPC may pay $100 for 3 jerky, but not $100000 for 300 jerky - std::vector theirs = init_selling( p ); - std::vector yours = init_buying( p, g->u ); - - // Adjust the prices based on your barter skill. - // cap adjustment so nothing is ever sold below value - ///\EFFECT_INT_NPC slightly increases bartering price changes, relative to your INT - - ///\EFFECT_BARTER_NPC increases bartering price changes, relative to your BARTER - double their_adjust = ( price_adjustment( p.get_skill_level( skill_barter ) - g->u.get_skill_level( - skill_barter ) ) + - ( p.int_cur - g->u.int_cur ) / 20.0 ); - if( their_adjust < 1.0 ) { - their_adjust = 1.0; - } - for( item_pricing &p : theirs ) { - p.price *= their_adjust; - } - ///\EFFECT_INT slightly increases bartering price changes, relative to NPC INT - - ///\EFFECT_BARTER increases bartering price changes, relative to NPC BARTER - double your_adjust = ( price_adjustment( g->u.get_skill_level( skill_barter ) - p.get_skill_level( - skill_barter ) ) + - ( g->u.int_cur - p.int_cur ) / 20.0 ); - if( your_adjust < 1.0 ) { - your_adjust = 1.0; - } - for( item_pricing &p : yours ) { - p.price *= your_adjust; - } + theirs = npc_trading::init_buying( g->u, np, true ); + yours = npc_trading::init_buying( np, g->u, false ); // Just exchanging items, no barter involved - const bool ex = p.is_player_ally(); - - // How much cash you get in the deal (negative = losing money) - long cash = cost + p.op_of_u.owed; - bool focus_them = true; // Is the focus on them? - bool update = true; // Re-draw the screen? - size_t them_off = 0, you_off = 0; // Offset from the start of the list - size_t ch, help; + exchange = np.is_player_ally(); - if( ex ) { + if( exchange ) { // Sometimes owed money fails to reset for friends // NPC AI is way too weak to manage money, so let's just make them give stuff away for free - cash = 0; + u_get = 0; + npc_requires = INT_MAX; + } else { + // How much cash you get in the deal (must be less than npc_requires for the deal to happen) + u_get = cost - np.op_of_u.owed; + // the NPC doesn't require a barter to exactly match, but there's a small limit to how + // much credit they'll extend + npc_requires = 50 * std::max( 0, np.op_of_u.trust + np.op_of_u.value + np.op_of_u.fear - + np.op_of_u.anger + np.personality.altruism ); } +} - // Make a temporary copy of the NPC inventory to make sure volume calculations are correct - inventory temp = p.inv; - units::volume volume_left = p.volume_capacity() - p.volume_carried(); - units::mass weight_left = p.weight_capacity() - p.weight_carried(); +void trading_window::update_win( npc &p, const std::string &deal, const int adjusted_u_get ) +{ + if( update ) { // Time to re-draw + update = false; + // Draw borders, one of which is highlighted + werase( w_them ); + werase( w_you ); + for( int i = 1; i < TERMX; i++ ) { + mvwputch( w_head, 3, i, c_white, LINE_OXOX ); + } - do { -#if defined(__ANDROID__) - input_context ctxt( "NPC_TRADE" ); - ctxt.register_manual_key( '\t', "Switch lists" ); - ctxt.register_manual_key( '<', "Back" ); - ctxt.register_manual_key( '>', "More" ); - ctxt.register_manual_key( '?', "Examine item" ); -#endif + std::set without; + std::vector added; + + for( item_pricing &pricing : yours ) { + if( pricing.selected ) { + added.push_back( pricing.loc.get_item() ); + } + } - auto &target_list = focus_them ? theirs : yours; - auto &offset = focus_them ? them_off : you_off; - if( update ) { // Time to re-draw - update = false; - // Draw borders, one of which is highlighted - werase( w_them ); - werase( w_you ); - for( int i = 1; i < TERMX; i++ ) { - mvwputch( w_head, 3, i, c_white, LINE_OXOX ); + for( item_pricing &pricing : theirs ) { + if( pricing.selected ) { + without.insert( pricing.loc.get_item() ); } + } + + temp = npc_trading::inventory_exchange( p.inv, without, added ); + + volume_left = p.volume_capacity() - p.volume_carried_with_tweaks( { temp } ); + weight_left = p.weight_capacity() - p.weight_carried_with_tweaks( { temp } ); + bool npc_has_space = volume_left < 0_ml || weight_left < 0_gram; + mvwprintz( w_head, 3, 2, npc_has_space ? c_red : c_green, + _( "Volume: %s %s, Weight: %.1f %s" ), + format_volume( volume_left ), volume_units_abbr(), + convert_weight( weight_left ), weight_units() ); + + std::string cost_str = _( "Exchange" ); + if( !exchange ) { + cost_str = string_format( u_get < 0 ? _( "Profit %s" ) : _( "Cost %s" ), + format_money( std::abs( u_get ) ) ); + } - std::set without; - std::vector added; + mvwprintz( w_head, 3, TERMX / 2 + ( TERMX / 2 - cost_str.length() ) / 2, + adjusted_u_get < 0 ? c_green : c_red, cost_str ); - for( auto &pricing : yours ) { - if( pricing.selected ) { - added.push_back( pricing.loc.get_item() ); + if( !deal.empty() ) { + mvwprintz( w_head, 3, ( TERMX - deal.length() ) / 2, + adjusted_u_get > 0 ? c_light_red : c_light_green, deal ); + } + draw_border( w_them, ( focus_them ? c_yellow : BORDER_COLOR ) ); + draw_border( w_you, ( !focus_them ? c_yellow : BORDER_COLOR ) ); + + mvwprintz( w_them, 0, 2, adjusted_u_get < 0 ? c_green : c_red, p.name ); + mvwprintz( w_you, 0, 2, adjusted_u_get > 0 ? c_green : c_red, _( "You" ) ); + // Draw lists of items, starting from offset + for( size_t whose = 0; whose <= 1; whose++ ) { + const bool they = whose == 0; + const std::vector &list = they ? theirs : yours; + const size_t &offset = they ? them_off : you_off; + const player &person = they ? static_cast( p ) : + static_cast( g->u ); + catacurses::window &w_whose = they ? w_them : w_you; + int win_w = getmaxx( w_whose ); + // Borders + win_w -= 2; + for( size_t i = offset; i < list.size() && i < entries_per_page + offset; i++ ) { + const item_pricing &ip = list[i]; + const item *it = ip.loc.get_item(); + auto color = it == &person.weapon ? c_yellow : c_light_gray; + const int &owner_sells = they ? ip.u_has : ip.npc_has; + const int &owner_sells_charge = they ? ip.u_charges : ip.npc_charges; + std::string itname = it->display_name(); + if( ip.loc.where() != item_location::type::character ) { + itname = itname + " " + ip.loc.describe( &g->u ); + color = c_light_blue; + } + if( ip.charges > 0 && owner_sells_charge > 0 ) { + itname += string_format( _( ": trading %d" ), owner_sells_charge ); + } else { + if( ip.count > 1 ) { + itname += string_format( _( " (%d)" ), ip.count ); + } + if( owner_sells ) { + itname += string_format( _( ": trading %d" ), owner_sells ); + } } - } - for( auto &pricing : theirs ) { - if( pricing.selected ) { - without.insert( pricing.loc.get_item() ); + if( ip.selected ) { + color = c_white; } - } - temp = inventory_exchange( p.inv, without, added ); - - volume_left = p.volume_capacity() - p.volume_carried_with_tweaks( { temp } ); - weight_left = p.weight_capacity() - p.weight_carried_with_tweaks( { temp } ); - mvwprintz( w_head, 3, 2, ( volume_left < 0_ml || weight_left < 0_gram ) ? c_red : c_green, - _( "Volume: %s %s, Weight: %.1f %s" ), - format_volume( volume_left ), volume_units_abbr(), - convert_weight( weight_left ), weight_units() ); - - std::string cost_string = ex ? _( "Exchange" ) : ( cash >= 0 ? _( "Profit %s" ) : - _( "Cost %s" ) ); - mvwprintz( w_head, 3, TERMX / 2 + ( TERMX / 2 - cost_string.length() ) / 2, - ( cash < 0 && static_cast( g->u.cash ) >= cash * -1 ) || ( cash >= 0 && - static_cast( p.cash ) >= cash ) ? c_green : c_red, - cost_string.c_str(), format_money( std::abs( cash ) ) ); - - if( !deal.empty() ) { - mvwprintz( w_head, 3, ( TERMX - deal.length() ) / 2, cost < 0 ? c_light_red : c_light_green, - deal.c_str() ); + int keychar = i - offset + 'a'; + if( keychar > 'z' ) { + keychar = keychar - 'z' - 1 + 'A'; + } + trim_and_print( w_whose, i - offset + 1, 1, win_w, color, "%c %c %s", + static_cast( keychar ), ip.selected ? '+' : '-', itname ); +#if defined(__ANDROID__) + ctxt.register_manual_key( keychar, itname ); +#endif + + std::string price_str = format_money( ip.price ); + nc_color price_color = exchange ? c_dark_gray : ( ip.selected ? c_white : + c_light_gray ); + mvwprintz( w_whose, i - offset + 1, win_w - price_str.length(), + price_color, price_str ); } - draw_border( w_them, ( focus_them ? c_yellow : BORDER_COLOR ) ); - draw_border( w_you, ( !focus_them ? c_yellow : BORDER_COLOR ) ); - - mvwprintz( w_them, 0, 2, ( cash < 0 || static_cast( p.cash ) >= cash ? c_green : c_red ), - _( "%s: %s" ), p.name, format_money( p.cash ) ); - mvwprintz( w_you, 0, 2, ( cash > 0 || - static_cast( g->u.cash ) >= cash * -1 ? c_green : c_red ), - _( "You: %s" ), format_money( g->u.cash ) ); - // Draw lists of items, starting from offset - for( size_t whose = 0; whose <= 1; whose++ ) { - const bool they = whose == 0; - const auto &list = they ? theirs : yours; - const auto &offset = they ? them_off : you_off; - const player &person = they ? static_cast( p ) : static_cast( g->u ); - auto &w_whose = they ? w_them : w_you; - int win_w = getmaxx( w_whose ); - // Borders - win_w -= 2; - for( size_t i = offset; i < list.size() && i < entries_per_page + offset; i++ ) { - const item_pricing &ip = list[i]; - const item *it = ip.loc.get_item(); - auto color = it == &person.weapon ? c_yellow : c_light_gray; - std::string itname = it->display_name(); - if( ip.loc.where() != item_location::type::character ) { - itname = itname + " " + ip.loc.describe( &g->u ); - color = c_light_blue; - } + if( offset > 0 ) { + mvwprintw( w_whose, entries_per_page + 2, 1, _( "< Back" ) ); + } + if( offset + entries_per_page < list.size() ) { + mvwprintw( w_whose, entries_per_page + 2, 9, _( "More >" ) ); + } + } + wrefresh( w_head ); + wrefresh( w_them ); + wrefresh( w_you ); + } // Done updating the screen +} - if( ip.selected ) { - color = c_white; - } +void trading_window::show_item_data( npc &np, size_t offset, + std::vector &target_list ) +{ + update = true; + catacurses::window w_tmp = catacurses::newwin( 3, 21, 1 + ( TERMY - FULL_SCREEN_HEIGHT ) / 2, + 30 + ( TERMX - FULL_SCREEN_WIDTH ) / 2 ); + mvwprintz( w_tmp, 1, 1, c_red, _( "Examine which item?" ) ); + draw_border( w_tmp ); + wrefresh( w_tmp ); + // TODO: use input context + size_t help = inp_mngr.get_input_event().get_first_input(); + if( help >= 'a' && help <= 'z' ) { + help -= 'a'; + } else if( help >= 'A' && help <= 'Z' ) { + help = help - 'A' + 26; + } else { + return; + } - int keychar = i - offset + 'a'; - if( keychar > 'z' ) { - keychar = keychar - 'z' - 1 + 'A'; - } - trim_and_print( w_whose, i - offset + 1, 1, win_w, color, "%c %c %s", - static_cast( keychar ), ip.selected ? '+' : '-', itname ); + mvwprintz( w_head, 0, 0, c_white, header_message.c_str(), np.name ); + wrefresh( w_head ); + help += offset; + if( help < target_list.size() ) { + popup( target_list[help].loc.get_item()->info(), PF_NONE ); + } +} + +int trading_window::get_var_trade( const item &it, int total_count ) +{ + string_input_popup popup_input; + int how_many = total_count; + const std::string title = string_format( _( "Trade how many %s [MAX: %d]: " ), + it.display_name(), total_count ); + popup_input.title( title ).edit( how_many ); + if( popup_input.canceled() || how_many <= 0 ) { + return -1; + } + return std::min( total_count, how_many ); +} + +bool trading_window::perform_trade( npc &p, const std::string &deal ) +{ + size_t ch; + int adjusted_u_get = u_get - npc_requires; + + // Make a temporary copy of the NPC inventory to make sure volume calculations are correct + temp = p.inv; + volume_left = p.volume_capacity() - p.volume_carried(); + weight_left = p.weight_capacity() - p.weight_carried(); + + do { + update_win( p, deal, adjusted_u_get ); #if defined(__ANDROID__) - ctxt.register_manual_key( keychar, itname ); + input_context ctxt( "NPC_TRADE" ); + ctxt.register_manual_key( '\t', "Switch lists" ); + ctxt.register_manual_key( '<', "Back" ); + ctxt.register_manual_key( '>', "More" ); + ctxt.register_manual_key( '?', "Examine item" ); #endif - std::string price_str = string_format( "%.2f", ip.price / 100.0 ); - nc_color price_color = ex ? c_dark_gray : ( ip.selected ? c_white : c_light_gray ); - mvwprintz( w_whose, i - offset + 1, win_w - price_str.length(), - price_color, price_str.c_str() ); - } - if( offset > 0 ) { - mvwprintw( w_whose, entries_per_page + 2, 1, _( "< Back" ) ); - } - if( offset + entries_per_page < list.size() ) { - mvwprintw( w_whose, entries_per_page + 2, 9, _( "More >" ) ); - } - } - wrefresh( w_head ); - wrefresh( w_them ); - wrefresh( w_you ); - } // Done updating the screen + std::vector &target_list = focus_them ? theirs : yours; + size_t &offset = focus_them ? them_off : you_off; // TODO: use input context ch = inp_mngr.get_input_event().get_first_input(); switch( ch ) { @@ -325,34 +444,13 @@ TAB key to switch lists, letters to pick items, Enter to finalize, Esc to quit,\ } break; case '?': - update = true; - w_tmp = catacurses::newwin( 3, 21, 1 + ( TERMY - FULL_SCREEN_HEIGHT ) / 2, - 30 + ( TERMX - FULL_SCREEN_WIDTH ) / 2 ); - mvwprintz( w_tmp, 1, 1, c_red, _( "Examine which item?" ) ); - draw_border( w_tmp ); - wrefresh( w_tmp ); - // TODO: use input context - help = inp_mngr.get_input_event().get_first_input(); - if( help >= 'a' && help <= 'z' ) { - help -= 'a'; - } else if( help >= 'A' && help <= 'Z' ) { - help = help - 'A' + 26; - } else { - break; - } - - mvwprintz( w_head, 0, 0, c_white, header_message.c_str(), p.name ); - wrefresh( w_head ); - help += offset; - if( help < target_list.size() ) { - popup( target_list[help].loc.get_item()->info(), PF_NONE ); - } + show_item_data( p, offset, target_list ); + ch = ' '; break; - case '\n': // Check if we have enough cash... - // The player must pay cash, and it should not put the player negative. - if( cash < 0 && static_cast( g->u.cash ) < cash * -1 ) { - popup( _( "Not enough cash! You have %s, price is %s." ), format_money( g->u.cash ), - format_money( -cash ) ); + case '\n': // Check if the NPC will accept the deal + // The player must give more than they get + if( adjusted_u_get > 0 ) { + popup( _( "Not enough value! You need %s." ), format_money( adjusted_u_get ) ); update = true; ch = ' '; } else if( volume_left < 0_ml || weight_left < 0_gram ) { @@ -373,96 +471,91 @@ TAB key to switch lists, letters to pick items, Enter to finalize, Esc to quit,\ ch += offset; if( ch < target_list.size() ) { - update = true; item_pricing &ip = target_list[ch]; + int change_amount = 1; + int &owner_sells = focus_them ? ip.u_has : ip.npc_has; + int &owner_sells_charge = focus_them ? ip.u_charges : ip.npc_charges; + + if( ip.selected ) { + if( owner_sells_charge > 0 ) { + change_amount = owner_sells_charge; + owner_sells_charge = 0; + } else if( owner_sells > 0 ) { + change_amount = owner_sells; + owner_sells = 0; + } + } else if( ip.charges > 0 ) { + change_amount = get_var_trade( *ip.loc.get_item(), ip.charges ); + if( change_amount < 1 ) { + ch = 0; + continue; + } + owner_sells_charge = change_amount; + } else { + if( ip.count > 1 ) { + change_amount = get_var_trade( *ip.loc.get_item(), ip.count ); + if( change_amount < 1 ) { + ch = 0; + continue; + } + } + owner_sells = change_amount; + } + int delta_price = ip.price * change_amount; + update = true; ip.selected = !ip.selected; - if( !ex && ip.selected == focus_them ) { - cash -= ip.price; - } else if( !ex ) { - cash += ip.price; + if( !exchange ) { + if( ip.selected == focus_them ) { + u_get += delta_price; + adjusted_u_get += delta_price; + } else { + u_get -= delta_price; + adjusted_u_get -= delta_price; + } } } ch = 0; } } while( ch != KEY_ESCAPE && ch != '\n' ); - const bool traded = ch == '\n'; - if( traded ) { - int practice = 0; - - std::list from_map; - const auto mark_for_exchange = - [&practice, &from_map]( item_pricing & pricing, std::set &removing, - std::vector &giving ) { - if( !pricing.selected ) { - return; - } - - giving.push_back( pricing.loc.get_item() ); - practice++; - - if( pricing.loc.where() == item_location::type::character ) { - removing.insert( pricing.loc.get_item() ); - } else { - from_map.push_back( &pricing.loc ); - } - }; - // This weird exchange is needed to prevent pointer bugs - // Removing items from an inventory invalidates the pointers - std::set removing_yours; - std::vector giving_them; - - for( auto &pricing : yours ) { - mark_for_exchange( pricing, removing_yours, giving_them ); - } + return ch == '\n'; +} - std::set removing_theirs; - std::vector giving_you; - for( auto &pricing : theirs ) { - mark_for_exchange( pricing, removing_theirs, giving_you ); - } +void trading_window::update_npc_owed( npc &np ) +{ + np.op_of_u.owed = std::min( std::max( np.op_of_u.owed, npc_requires ), - u_get ); +} - const inventory &your_new_inv = inventory_exchange( g->u.inv, - removing_yours, giving_you ); - const inventory &their_new_inv = inventory_exchange( p.inv, - removing_theirs, giving_them ); +// Oh my aching head +// op_of_u.owed is the positive when the NPC owes the player, and negative if the player owes the +// NPC +// cost is positive when the player owes the NPC money for a service to be performed +bool npc_trading::trade( npc &np, int cost, const std::string &deal ) +{ + trading_window trade_win; + trade_win.setup_win( np ); + trade_win.setup_trade( cost, np ); - g->u.inv = your_new_inv; - p.inv = their_new_inv; + bool traded = trade_win.perform_trade( np, deal ); + if( traded ) { + int practice = 0; - if( removing_yours.count( &g->u.weapon ) ) { - g->u.remove_weapon(); - } + std::list from_map; - if( removing_theirs.count( &p.weapon ) ) { - p.remove_weapon(); - } + npc_trading::transfer_items( trade_win.yours, g->u, np, np.my_fac, from_map, false ); + npc_trading::transfer_items( trade_win.theirs, np, g->u, + g->faction_manager_ptr->get( faction_id( "your_followers" ) ), + from_map, true ); for( item_location *loc_ptr : from_map ) { loc_ptr->remove_item(); } - if( !ex && cash > static_cast( p.cash ) ) { - // Trade was forced, give the NPC's cash to the player. - p.op_of_u.owed = ( cash - p.cash ); - g->u.cash += p.cash; - p.cash = 0; - } else if( !ex ) { - g->u.cash += cash; - p.cash -= cash; + // NPCs will remember debts, to the limit that they'll extend credit or previous debts + if( !trade_win.exchange ) { + trade_win.update_npc_owed( np ); + g->u.practice( skill_barter, practice / 10000 ); } - - // TODO: Make this depend on prices - // TODO: Make this depend on npc price adjustment vs. your price adjustment - if( !ex ) { - g->u.practice( skill_barter, practice / 2 ); - } - } - for( auto &elem : g->u.inv_dump() ) { - elem->set_owner( g->faction_manager_ptr->get( faction_id( "your_followers" ) ) ); - } - for( auto &elem : p.inv_dump() ) { - elem->set_owner( p.my_fac ); } g->refresh_all(); return traded; diff --git a/src/npctrade.h b/src/npctrade.h index a65707d08d119..059da47683e0e 100644 --- a/src/npctrade.h +++ b/src/npctrade.h @@ -9,33 +9,93 @@ #include "inventory.h" #include "item_location.h" +#include "output.h" +#include "units.h" class Character; +class faction; class item; class npc; class player; -struct item_pricing { - item_pricing( Character &c, item *it, int v, bool s ) : loc( c, it ), price( v ), selected( s ) { - } +class item_pricing +{ + public: + item_pricing( Character &c, item *it, int v, int count ) : loc( c, it ), price( v ) { + set_values( count ); + } - item_pricing( item_location &&l, int v, bool s ) : loc( std::move( l ) ), price( v ), - selected( s ) { - } + item_pricing( item_location &&l, int v, int count ) : loc( std::move( l ) ), price( v ) { + set_values( count ); + } + void set_values( int ip_count ); + void adjust_values( const double adjust, faction *fac ); - item_location loc; - int price; - // Whether this is selected for trading, init_buying and init_selling initialize - // this to `false`. - bool selected; + item_location loc; + int price; + // Whether this is selected for trading + bool selected = false; + bool is_container; + int count = 0; + int charges = 0; + int u_has = 0; + int npc_has = 0; + int u_charges = 0; + int npc_charges = 0; }; +class trading_window +{ + public: + trading_window() = default; + std::vector theirs; + std::vector yours; + bool exchange; + int u_get; + int npc_requires; + + void setup_win( npc &np ); + void setup_trade( int cost, npc &np ); + void update_win( npc &p, const std::string &deal, const int adjusted_u_get ); + void show_item_data( npc &np, size_t offset, std::vector &target_list ); + bool perform_trade( npc &p, const std::string &deal ); + void update_npc_owed( npc &np ); + + private: + catacurses::window w_head; + catacurses::window w_them; + catacurses::window w_you; + const int win_they_w = TERMX / 2; + const std::string header_message = _( "TAB key to switch lists, letters to pick items," + "Enter to finalize, Esc to quit,\n" + "? to get information on an item." ); + const size_t entries_per_page = std::min( TERMY - 7, 2 + ( 'z' - 'a' ) + ( 'Z' - 'A' ) ); + bool update = true; + bool focus_them = true; // Is the focus on them? + size_t them_off = 0, you_off = 0; // Offset from the start of the list + + inventory temp; + units::volume volume_left; + units::mass weight_left; + + int get_var_trade( const item &it, int total_count ); +}; + +namespace npc_trading +{ + +bool pay_npc( npc &np, int cost ); + int cash_to_favor( const npc &, int cash ); inventory inventory_exchange( inventory &inv, const std::set &without, const std::vector &added ); -std::vector init_selling( npc &p ); -std::vector init_buying( npc &p, player &u ); +void transfer_items( std::vector &stuff, player &giver, player &receiver, + faction *fac, std::list &from_map, bool npc_gives ); +double net_price_adjustment( const player &buyer, const player &seller ); bool trade( npc &p, int cost, const std::string &deal ); +std::vector init_selling( npc &p ); +std::vector init_buying( player &buyer, player &seller, bool is_npc ); +} #endif diff --git a/src/panels.cpp b/src/panels.cpp index 13b6b91c321d0..1b5bfe192c152 100644 --- a/src/panels.cpp +++ b/src/panels.cpp @@ -1712,8 +1712,11 @@ static void draw_mana( const player &u, const catacurses::window &w ) werase( w ); auto mana_pair = mana_stat( u ); - mvwprintz( w, 0, getmaxx( w ) - 10, c_light_gray, "Mana" ); - mvwprintz( w, 0, getmaxx( w ) - 5, mana_pair.first, mana_pair.second ); + const std::string mana_string = string_format( "%6s %5s %10s %5s", _( "Mana" ), + colorize( mana_pair.second, mana_pair.first ), _( "Max Mana" ), + colorize( to_string( u.magic.max_mana( u ) ), c_light_blue ) ); + nc_color gray = c_light_gray; + print_colored_text( w, 0, getmaxx( w ) - mana_string.size(), gray, gray, mana_string ); wrefresh( w ); } diff --git a/src/pickup.cpp b/src/pickup.cpp index e130234613c1d..7e1155eb9ec05 100644 --- a/src/pickup.cpp +++ b/src/pickup.cpp @@ -805,7 +805,7 @@ void Pickup::pick_up( const tripoint &p, int min, from_where get_items_from ) if( stacked_here[true_it].begin()->_item.ammo_current() == "money" ) { //Count charges // TODO: transition to the item_location system used for the inventory - unsigned long charges_total = 0; + unsigned int charges_total = 0; for( const auto &item : stacked_here[true_it] ) { charges_total += item._item.charges; } @@ -814,7 +814,7 @@ void Pickup::pick_up( const tripoint &p, int min, from_where get_items_from ) item_name = stacked_here[true_it].begin()->_item.display_money( stacked_here[true_it].size(), charges_total ); } else { - unsigned long charges = 0; + unsigned int charges = 0; int c = getitem[true_it].count; for( auto it = stacked_here[true_it].begin(); it != stacked_here[true_it].end() && c > 0; ++it, --c ) { diff --git a/src/player.cpp b/src/player.cpp index 561099e24697f..7e7302aa5dc27 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -379,6 +379,7 @@ static const trait_id trait_PRED2( "PRED2" ); static const trait_id trait_PRED3( "PRED3" ); static const trait_id trait_PRED4( "PRED4" ); static const trait_id trait_PROF_DICEMASTER( "PROF_DICEMASTER" ); +static const trait_id trait_PROF_FOODP( "PROF_FOODP" ); static const trait_id trait_PROF_SKATER( "PROF_SKATER" ); static const trait_id trait_PSYCHOPATH( "PSYCHOPATH" ); static const trait_id trait_PYROMANIA( "PYROMANIA" ); @@ -955,6 +956,24 @@ void player::apply_persistent_morale() add_morale( MORALE_PERM_NOMAD, -pen, -pen, 1_minutes, 1_minutes, true ); } } + + if( has_trait( trait_PROF_FOODP ) ) { + // Loosing your face is distressing + if( !( is_wearing( itype_id( "foodperson_mask" ) ) || + is_wearing( itype_id( "foodperson_mask_on" ) ) ) ) { + add_morale( MORALE_PERM_NOFACE, -20, -20, 1_minutes, 1_minutes, true ); + } else if( is_wearing( itype_id( "foodperson_mask" ) ) || + is_wearing( itype_id( "foodperson_mask_on" ) ) ) { + rem_morale( MORALE_PERM_NOFACE ); + } + + if( is_wearing( itype_id( "foodperson_mask_on" ) ) ) { + add_morale( MORALE_PERM_FPMODE_ON, 10, 10, 1_minutes, 1_minutes, true ); + } else { + rem_morale( MORALE_PERM_FPMODE_ON ); + } + } + } void player::update_mental_focus() @@ -2830,6 +2849,7 @@ void player::pause() search_surroundings(); } + void player::set_movement_mode( const std::string &new_mode ) { if( new_mode == "run" ) { @@ -2955,7 +2975,7 @@ int player::read_speed( bool return_stat_effect ) const // Stat window shows stat effects on based on current stat const int intel = get_int(); /** @EFFECT_INT increases reading speed */ - int ret = 1000 - 50 * ( intel - 8 ); + int ret = to_moves( 1_minutes ) - to_moves( 30_seconds ) * ( intel - 8 ); if( has_bionic( afs_bio_linguistic_coprocessor ) ) { // Aftershock ret *= .85; @@ -2973,11 +2993,11 @@ int player::read_speed( bool return_stat_effect ) const ret *= 1.3; } - if( ret < 100 ) { - ret = 100; + if( ret < to_moves( 1_seconds ) ) { + ret = to_moves( 1_seconds ); } // return_stat_effect actually matters here - return 6 * ( return_stat_effect ? ret : ret / 10 ); + return return_stat_effect ? ret : ret / 10; } int player::rust_rate( bool return_stat_effect ) const @@ -6992,10 +7012,10 @@ item player::reduce_charges( item *it, int quantity ) return result; } -int player::invlet_to_position( const long linvlet ) const +int player::invlet_to_position( const int linvlet ) const { // Invlets may come from curses, which may also return any kind of key codes, those being - // of type long and they can become valid, but different characters when casted to char. + // of type int and they can become valid, but different characters when casted to char. // Example: KEY_NPAGE (returned when the player presses the page-down key) is 0x152, // casted to char would yield 0x52, which happens to be 'R', a valid invlet. if( linvlet > std::numeric_limits::max() || linvlet < std::numeric_limits::min() ) { @@ -8586,7 +8606,11 @@ ret_val player::can_takeoff( const item &it, const std::list *res ) _( "You can't take off power armor while wearing other power armor components." ) : _( " can't take off power armor while wearing other power armor components." ) ); } - + if( it.has_flag( "NO_TAKEOFF" ) ) { + return ret_val::make_failure( !is_npc() ? + _( "You can't take that item off." ) : + _( " can't take that item off." ) ); + } return ret_val::make_success(); } @@ -9174,7 +9198,7 @@ bool player::invoke_item( item *used, const std::string &method, const tripoint return false; } -void player::reassign_item( item &it, long invlet ) +void player::reassign_item( item &it, int invlet ) { bool remove_old = true; if( invlet ) { diff --git a/src/player.h b/src/player.h index 4f7c9c4e714d6..4dc1be104b594 100644 --- a/src/player.h +++ b/src/player.h @@ -373,7 +373,7 @@ class player : public Character /** Returns the bionic at a given index in my_bionics[] */ bionic &bionic_at_index( int i ); /** Returns the bionic with the given invlet, or NULL if no bionic has that invlet */ - bionic *bionic_by_invlet( long ch ); + bionic *bionic_by_invlet( int ch ); /** Returns player luminosity based on the brightest active item they are carrying */ float active_light() const; @@ -577,7 +577,7 @@ class player : public Character dispersion_sources get_weapon_dispersion( const item &obj ) const; /** Returns true if a gun misfires, jams, or has other problems, else returns false */ - bool handle_gun_damage( item &firing ); + bool handle_gun_damage( item &firing, int shots_fired ); /** Get maximum recoil penalty due to vehicle motion */ double recoil_vehicle() const; @@ -1099,7 +1099,7 @@ class player : public Character bool invoke_item( item * ); bool invoke_item( item *, const std::string & ); /** Reassign letter. */ - void reassign_item( item &it, long invlet ); + void reassign_item( item &it, int invlet ); /** Consume charges of a tool or comestible item, potentially destroying it in the process * @param used item consuming the charges @@ -1268,7 +1268,7 @@ class player : public Character /** Return the item position of the item with given invlet, return INT_MIN if * the player does not have such an item with that invlet. Don't use this on npcs. * Only use the invlet in the user interface, otherwise always use the item position. */ - int invlet_to_position( long invlet ) const; + int invlet_to_position( int invlet ) const; /** * Check whether player has a bionic power armor interface. @@ -1546,7 +1546,7 @@ class player : public Character int blocks_left; int stim; int radiation; - signed long cash; + int cash; int movecounter; std::shared_ptr mounted_creature; bool death_drops;// Turned to false for simulating NPCs on distant missions so they don't drop all their gear in sight diff --git a/src/player_display.cpp b/src/player_display.cpp index fc52baeafe872..6e2253a939009 100644 --- a/src/player_display.cpp +++ b/src/player_display.cpp @@ -406,12 +406,15 @@ static void draw_encumbrance_tab( const catacurses::window &w_encumb, static void draw_traits_tab( const catacurses::window &w_traits, const catacurses::window &w_info, unsigned int &line, int &curtab, input_context &ctxt, bool &done, std::string &action, std::vector &traitslist, - size_t &min, size_t &max ) + const size_t trait_win_size_y ) { werase( w_traits ); mvwprintz( w_traits, 0, 0, h_light_gray, header_spaces ); center_print( w_traits, 0, h_light_gray, title_TRAITS ); - const unsigned int trait_win_size_y = 1 + static_cast( traitslist.size() ); + + size_t min = 0; + size_t max = 0; + if( line <= ( trait_win_size_y - 1 ) / 2 ) { min = 0; max = trait_win_size_y; @@ -475,7 +478,7 @@ static void draw_traits_tab( const catacurses::window &w_traits, const catacurse static void draw_bionics_tab( const catacurses::window &w_bionics, const catacurses::window &w_info, player &you, unsigned int &line, int &curtab, input_context &ctxt, bool &done, std::string &action, std::vector &bionicslist, - size_t &min, size_t &max, const size_t bionics_useful_size_y, const size_t bionics_win_size_y ) + const size_t bionics_win_size_y ) { werase( w_bionics ); mvwprintz( w_bionics, 0, 0, h_light_gray, header_spaces ); @@ -483,16 +486,21 @@ static void draw_bionics_tab( const catacurses::window &w_bionics, const catacur trim_and_print( w_bionics, 1, 1, getmaxx( w_bionics ) - 1, c_white, string_format( _( "Bionic Power: %1$d" ), you.max_power_level ) ); - if( line <= ( ( bionics_useful_size_y - 1 ) / 2 ) ) { + const size_t useful_y = bionics_win_size_y - 1; + const size_t half_y = useful_y / 2; + + size_t min = 0; + size_t max = 0; + + if( line <= half_y ) { // near the top min = 0; - max = std::min( bionicslist.size(), bionics_useful_size_y ); - } else if( line >= ( bionicslist.size() - ( bionics_useful_size_y + 1 ) / 2 ) ) { - min = ( bionicslist.size() < bionics_useful_size_y ? 0 : bionicslist.size() - bionics_useful_size_y - + 1 ); + max = std::min( bionicslist.size(), useful_y ); + } else if( line >= bionicslist.size() - half_y ) { // near the bottom + min = ( bionicslist.size() <= useful_y ? 0 : bionicslist.size() - useful_y ); max = bionicslist.size(); - } else { - min = line - ( bionics_useful_size_y - 1 ) / 2; - max = std::min( bionicslist.size(), static_cast( 1 + line + bionics_useful_size_y / 2 ) ); + } else { // scrolling + min = line - half_y; + max = std::min( bionicslist.size(), line + useful_y - half_y ); } for( size_t i = min; i < max; i++ ) { @@ -521,7 +529,7 @@ static void draw_bionics_tab( const catacurses::window &w_bionics, const catacur center_print( w_bionics, 0, c_light_gray, title_BIONICS ); trim_and_print( w_bionics, 1, 1, getmaxx( w_bionics ) - 1, c_white, string_format( _( "Bionic Power: %1$d" ), you.max_power_level ) ); - for( size_t i = 0; i < bionicslist.size() && i < bionics_win_size_y; i++ ) { + for( size_t i = 0; i < bionicslist.size() && i < bionics_win_size_y - 1; i++ ) { mvwprintz( w_bionics, static_cast( i + 2 ), 1, c_black, " " ); trim_and_print( w_bionics, static_cast( i + 2 ), 1, getmaxx( w_bionics ) - 1, c_white, bionicslist[i].info().name ); @@ -537,12 +545,17 @@ static void draw_bionics_tab( const catacurses::window &w_bionics, const catacur static void draw_effects_tab( const catacurses::window &w_effects, const catacurses::window &w_info, unsigned int &line, int &curtab, input_context &ctxt, bool &done, std::string &action, std::vector &effect_name, - size_t &min, size_t &max, const size_t effect_win_size_y, - const std::vector &effect_text, size_t &half_y ) + const size_t effect_win_size_y, + const std::vector &effect_text ) { mvwprintz( w_effects, 0, 0, h_light_gray, header_spaces ); center_print( w_effects, 0, h_light_gray, title_EFFECTS ); - half_y = effect_win_size_y / 2; + + const size_t half_y = effect_win_size_y / 2; + + size_t min = 0; + size_t max = 0; + if( line <= half_y ) { min = 0; max = effect_win_size_y; @@ -598,12 +611,15 @@ static void draw_effects_tab( const catacurses::window &w_effects, const catacur static void draw_skills_tab( const catacurses::window &w_skills, const catacurses::window &w_info, player &you, unsigned int &line, int &curtab, input_context &ctxt, bool &done, std::string &action, const std::vector &skillslist, - size_t &min, size_t &max, const size_t skill_win_size_y, size_t &half_y ) + const size_t skill_win_size_y ) { - assert( line >= min && line <= max ); mvwprintz( w_skills, 0, 0, h_light_gray, header_spaces ); center_print( w_skills, 0, h_light_gray, title_SKILLS ); - half_y = skill_win_size_y / 2; + + size_t min = 0; + size_t max = 0; + + const size_t half_y = skill_win_size_y / 2; if( line <= half_y ) { min = 0; max = skill_win_size_y; @@ -682,7 +698,7 @@ static void draw_skills_tab( const catacurses::window &w_skills, const catacurse werase( w_info ); - if( line < skillslist.size() ) { + if( selectedSkill ) { fold_and_print( w_info, 0, 1, FULL_SCREEN_WIDTH - 2, c_magenta, selectedSkill->description() ); } wrefresh( w_info ); @@ -739,7 +755,9 @@ static void draw_skills_tab( const catacurses::window &w_skills, const catacurse line = 0; curtab = action == "NEXT_TAB" ? curtab + 1 : curtab - 1; } else if( action == "CONFIRM" ) { - you.get_skill_level_object( selectedSkill->ident() ).toggleTraining(); + if( selectedSkill ) { + you.get_skill_level_object( selectedSkill->ident() ).toggleTraining(); + } } else if( action == "QUIT" ) { done = true; } @@ -919,7 +937,7 @@ static void draw_initial_windows( const catacurses::window &w_stats, trim_and_print( w_bionics, 1, 1, getmaxx( w_bionics ) - 1, c_white, string_format( _( "Bionic Power: %1$d / %2$d" ), you.power_level, you.max_power_level ) ); - for( size_t i = 0; i < bionicslist.size() && i < bionics_win_size_y; i++ ) { + for( size_t i = 0; i < bionicslist.size() && i < bionics_win_size_y - 1; i++ ) { trim_and_print( w_bionics, static_cast( i ) + 2, 1, getmaxx( w_bionics ) - 1, c_white, bionicslist[i].info().name ); } @@ -1191,6 +1209,8 @@ Strength - 4; Dexterity - 4; Intelligence - 4; Perception - 4" ) ); } // fall through if bionics is smaller trait_win_size_y = maxy - infooffsetybottom - bionics_win_size_y; + + bionics_win_size_y--; } if( skill_win_size_y + infooffsetybottom > maxy ) { @@ -1301,12 +1321,8 @@ Strength - 4; Dexterity - 4; Intelligence - 4; Perception - 4" ) ); catacurses::refresh(); int curtab = 1; - size_t min = 0; - size_t max = 0; line = 0; bool done = false; - size_t half_y = 0; - size_t bionics_useful_size_y = bionics_win_size_y - 1; // Initial printing is DONE. Now we give the player a chance to scroll around // and "hover" over different items for more info. @@ -1316,28 +1332,28 @@ Strength - 4; Dexterity - 4; Intelligence - 4; Perception - 4" ) ); case 1: // Stats tab draw_stats_tab( w_stats, w_info, *this, line, curtab, ctxt, done, action ); break; - case 2: { // Encumbrance tab + case 2: // Encumbrance tab draw_encumbrance_tab( w_encumb, w_info, *this, line, curtab, ctxt, done, action ); break; - } + case 4: // Traits tab - draw_traits_tab( w_traits, w_info, line, curtab, ctxt, done, action, traitslist, - min, max ); + draw_traits_tab( w_traits, w_info, line, curtab, ctxt, done, action, + traitslist, trait_win_size_y ); break; case 5: // Bionics tab draw_bionics_tab( w_bionics, w_info, *this, line, curtab, ctxt, done, action, - bionicslist, min, max, bionics_useful_size_y, bionics_win_size_y ); + bionicslist, bionics_win_size_y ); break; case 6: // Effects tab draw_effects_tab( w_effects, w_info, line, curtab, ctxt, done, action, - effect_name, min, max, effect_win_size_y, effect_text, half_y ); + effect_name, effect_win_size_y, effect_text ); break; case 3: // Skills tab draw_skills_tab( w_skills, w_info, *this, line, curtab, ctxt, done, action, - skillslist, min, max, skill_win_size_y, half_y ); + skillslist, skill_win_size_y ); } } while( !done ); diff --git a/src/profession.cpp b/src/profession.cpp index 3419c235d3958..13851b82cf520 100644 --- a/src/profession.cpp +++ b/src/profession.cpp @@ -600,13 +600,13 @@ std::vector json_item_substitution::get_substitution( const item &it, return ret; } - const long old_amt = it.count(); + const int old_amt = it.count(); for( const substitution::info &inf : sub->infos ) { item result( inf.new_item ); - const long new_amt = std::max( 1l, static_cast( std::round( inf.ratio * old_amt ) ) ); + const int new_amt = std::max( 1, static_cast( std::round( inf.ratio * old_amt ) ) ); if( !result.count_by_charges() ) { - for( long i = 0; i < new_amt; i++ ) { + for( int i = 0; i < new_amt; i++ ) { ret.push_back( result.in_its_container() ); } } else { diff --git a/src/ranged.cpp b/src/ranged.cpp index a96d209bfc3eb..988875b6f4d9f 100644 --- a/src/ranged.cpp +++ b/src/ranged.cpp @@ -74,6 +74,9 @@ static const trait_id trait_PYROMANIA( "PYROMANIA" ); const trap_str_id tr_practice_target( "tr_practice_target" ); +static const fault_id fault_gun_blackpowder( "fault_gun_blackpowder" ); +static const fault_id fault_gun_clogged( "fault_gun_clogged" ); + static projectile make_gun_projectile( const item &gun ); int time_to_fire( const Character &p, const itype &firing ); static void cycle_action( item &weap, const tripoint &pos ); @@ -153,7 +156,7 @@ int player::gun_engagement_moves( const item &gun, int target, int start ) const return mv; } -bool player::handle_gun_damage( item &it ) +bool player::handle_gun_damage( item &it, int shots_fired ) { if( !it.is_gun() ) { debugmsg( "Tried to handle_gun_damage of a non-gun %s", it.tname() ); @@ -166,7 +169,11 @@ bool player::handle_gun_damage( item &it ) // As a result this causes no damage to the firearm, note that some guns are waterproof // and so are immune to this effect, note also that WATERPROOF_GUN status does not // mean the gun will actually be accurate underwater. - if( is_underwater() && !it.has_flag( "WATERPROOF_GUN" ) && one_in( firing->durability ) ) { + int effective_durability = firing->durability; + if( it.faults.count( fault_gun_blackpowder ) && effective_durability > 2 ) { + effective_durability -= 1; + } + if( is_underwater() && !it.has_flag( "WATERPROOF_GUN" ) && one_in( effective_durability ) ) { add_msg_player_or_npc( _( "Your %s misfires with a wet click!" ), _( "'s %s misfires with a wet click!" ), it.tname() ); @@ -176,11 +183,11 @@ bool player::handle_gun_damage( item &it ) // effect as current guns have a durability between 5 and 9 this results in // a chance of mechanical failure between 1/64 and 1/1024 on any given shot. // the malfunction may cause damage, but never enough to push the weapon beyond 'shattered' - } else if( ( one_in( 2 << firing->durability ) ) && !it.has_flag( "NEVER_JAMS" ) ) { + } else if( ( one_in( 2 << effective_durability ) ) && !it.has_flag( "NEVER_JAMS" ) ) { add_msg_player_or_npc( _( "Your %s malfunctions!" ), _( "'s %s malfunctions!" ), it.tname() ); - if( it.damage() < it.max_damage() && one_in( 4 * firing->durability ) ) { + if( it.damage() < it.max_damage() && one_in( 4 * effective_durability ) ) { add_msg_player_or_npc( m_bad, _( "Your %s is damaged by the mechanical malfunction!" ), _( "'s %s is damaged by the mechanical malfunction!" ), it.tname() ); @@ -204,7 +211,7 @@ bool player::handle_gun_damage( item &it ) add_msg_player_or_npc( _( "Your %s misfires with a muffled click!" ), _( "'s %s misfires with a muffled click!" ), it.tname() ); - if( it.damage() < it.max_damage() && one_in( firing->durability ) ) { + if( it.damage() < it.max_damage() && one_in( effective_durability ) ) { add_msg_player_or_npc( m_bad, _( "Your %s is damaged by the misfired round!" ), _( "'s %s is damaged by the misfired round!" ), it.tname() ); @@ -250,6 +257,26 @@ bool player::handle_gun_damage( item &it ) } } } + if( curammo_effects.count( "BLACKPOWDER" ) ) { + if( !it.faults.count( fault_gun_blackpowder ) && + it.faults_potential().count( fault_gun_blackpowder ) ) { + it.faults.insert( fault_gun_blackpowder ); + } + if( one_in( firing->blackpowder_tolerance ) && + it.faults_potential().count( fault_gun_clogged ) ) { + add_msg_player_or_npc( m_bad, _( "Your %s is clogged up with blackpowder fouling!" ), + _( "'s %s is clogged up with blackpowder fouling!" ), + it.tname() ); + it.faults.insert( fault_gun_clogged ); + return false; + } + if( it.ammo_data()->ammo->recoil < firing->min_cycle_recoil && shots_fired > 0 ) { + add_msg_player_or_npc( m_bad, _( "Your %s fails to cycle!" ), + _( "'s %s fails to cycle!" ), + it.tname() ); + return false; + } + } return true; } @@ -322,7 +349,7 @@ int player::fire_gun( const tripoint &target, int shots, item &gun ) int hits = 0; // total shots on target int delay = 0; // delayed recoil that has yet to be applied while( curshot != shots ) { - if( !handle_gun_damage( gun ) ) { + if( !handle_gun_damage( gun, curshot ) ) { break; } diff --git a/src/savegame.cpp b/src/savegame.cpp index b063bc4496d4d..507cadf1a24b8 100644 --- a/src/savegame.cpp +++ b/src/savegame.cpp @@ -1585,7 +1585,19 @@ void faction_manager::serialize( JsonOut &jsout ) const void faction_manager::deserialize( JsonIn &jsin ) { - jsin.read( factions ); + jsin.start_array(); + while( !jsin.end_array() ) { + faction add_fac; + jsin.read( add_fac ); + faction *old_fac = get( add_fac.id ); + if( old_fac ) { + *old_fac = add_fac; + // force a revalidation of add_fac + get( add_fac.id ); + } else { + factions.emplace_back( add_fac ); + } + } } void Creature_tracker::deserialize( JsonIn &jsin ) diff --git a/src/savegame_json.cpp b/src/savegame_json.cpp index a3981409556d4..ab18dc893c207 100644 --- a/src/savegame_json.cpp +++ b/src/savegame_json.cpp @@ -1527,7 +1527,7 @@ void npc::store( JsonOut &json ) const json.member( "previous_mission", previous_mission ); json.member( "faction_api_ver", faction_api_version ); if( !fac_id.str().empty() ) { // set in constructor - json.member( "my_fac", my_fac->id.c_str() ); + json.member( "my_fac", fac_id.c_str() ); } json.member( "attitude", static_cast( attitude ) ); json.member( "previous_attitude", static_cast( attitude ) ); @@ -2925,7 +2925,7 @@ void map_memory::load( JsonIn &jsin ) p.x = jsin.get_int(); p.y = jsin.get_int(); p.z = jsin.get_int(); - const long symbol = jsin.get_long(); + const int symbol = jsin.get_int(); memorize_symbol( std::numeric_limits::max(), p, symbol ); jsin.end_array(); } @@ -2950,7 +2950,7 @@ void map_memory::load( JsonObject &jsin ) while( map_memory_curses.has_more() ) { JsonObject pmap = map_memory_curses.next_object(); const tripoint p( pmap.get_int( "x" ), pmap.get_int( "y" ), pmap.get_int( "z" ) ); - memorize_symbol( std::numeric_limits::max(), p, pmap.get_long( "symbol" ) ); + memorize_symbol( std::numeric_limits::max(), p, pmap.get_int( "symbol" ) ); } } @@ -3581,7 +3581,7 @@ void submap::load( JsonIn &jsin, const std::string &member_name, bool rubpow_upd } else if( member_name == "vehicles" ) { jsin.start_array(); while( !jsin.end_array() ) { - std::unique_ptr tmp( new vehicle() ); + std::unique_ptr tmp = std::make_unique(); jsin.read( *tmp ); vehicles.push_back( std::move( tmp ) ); } @@ -3605,7 +3605,8 @@ void submap::load( JsonIn &jsin, const std::string &member_name, bool rubpow_upd } } else if( member_name == "computers" ) { std::string computer_data = jsin.get_string(); - std::unique_ptr new_comp( new computer( "BUGGED_COMPUTER", -100 ) ); + std::unique_ptr new_comp = + std::make_unique( "BUGGED_COMPUTER", -100 ); new_comp->load_data( computer_data ); comp = std::move( new_comp ); } else if( member_name == "camp" ) { diff --git a/src/sounds.cpp b/src/sounds.cpp index 43e1373f54d6a..03e28c7dc4392 100644 --- a/src/sounds.cpp +++ b/src/sounds.cpp @@ -369,13 +369,17 @@ void sounds::process_sound_markers( player *p ) } // skip most movement sounds and our own sounds - if( pos != p->pos() && describe_sound( sound.category ) ) { + // unless our own sound is an alarm + if( ( pos != p->pos() || ( pos == p->pos() && sound.category == sound_t::alarm ) ) && + describe_sound( sound.category ) ) { game_message_type severity = m_info; if( sound.category == sound_t::combat || sound.category == sound_t::alarm ) { severity = m_warning; } // if we can see it, don't print a direction - if( p->sees( pos ) ) { + if( pos == p->pos() ) { + add_msg( severity, _( "From yourself you hear %1$s." ), description ); + } else if( p->sees( pos ) ) { add_msg( severity, _( "You hear %1$s" ), description ); } else { std::string direction = direction_name( direction_from( p->pos(), pos ) ); diff --git a/src/trait_group.cpp b/src/trait_group.cpp index 5e0499506365d..55bd68cccf990 100644 --- a/src/trait_group.cpp +++ b/src/trait_group.cpp @@ -208,14 +208,12 @@ bool Trait_group_creator::has_trait( const trait_id &tid ) const void Trait_group::add_trait_entry( const trait_id &tid, int probability ) { - std::unique_ptr ptr( new Single_trait_creator( tid, probability ) ); - add_entry( ptr ); + add_entry( std::make_unique( tid, probability ) ); } void Trait_group::add_group_entry( const Trait_group_tag &gid, int probability ) { - std::unique_ptr ptr( new Trait_group_creator( gid, probability ) ); - add_entry( ptr ); + add_entry( std::make_unique( gid, probability ) ); } void Trait_group::check_consistency() const @@ -269,7 +267,7 @@ Trait_list Trait_group_collection::create( RecursionList &rec ) const return result; } -void Trait_group_collection::add_entry( std::unique_ptr &ptr ) +void Trait_group_collection::add_entry( std::unique_ptr ptr ) { assert( ptr.get() != nullptr ); if( ptr->probability <= 0 ) { @@ -282,7 +280,7 @@ void Trait_group_collection::add_entry( std::unique_ptr &pt ptr.release(); } -void Trait_group_distribution::add_entry( std::unique_ptr &ptr ) +void Trait_group_distribution::add_entry( std::unique_ptr ptr ) { assert( ptr.get() != nullptr ); if( ptr->probability <= 0 ) { diff --git a/src/trait_group.h b/src/trait_group.h index c949328cabd65..71959db182a15 100644 --- a/src/trait_group.h +++ b/src/trait_group.h @@ -159,7 +159,7 @@ class Trait_group : public Trait_creation_data * @ref mutation_branch::add_entry, @ref add_trait_entry or @ref add_group_entry). Its purpose * is to add a Single_trait_creator or Trait_group_creator to @ref creators. */ - virtual void add_entry( std::unique_ptr &ptr ) = 0; + virtual void add_entry( std::unique_ptr ptr ) = 0; void check_consistency() const override; bool remove_trait( const trait_id &tid ) override; @@ -183,7 +183,7 @@ class Trait_group_collection : public Trait_group ~Trait_group_collection() override = default; trait_group::Trait_list create( RecursionList &rec ) const override; - void add_entry( std::unique_ptr &ptr ) override; + void add_entry( std::unique_ptr ptr ) override; }; /** @@ -199,7 +199,7 @@ class Trait_group_distribution : public Trait_group ~Trait_group_distribution() override = default; trait_group::Trait_list create( RecursionList &rec ) const override; - void add_entry( std::unique_ptr &ptr ) override; + void add_entry( std::unique_ptr ptr ) override; }; #endif diff --git a/src/veh_type.cpp b/src/veh_type.cpp index 29bdd288891c2..b8acd572a0113 100644 --- a/src/veh_type.cpp +++ b/src/veh_type.cpp @@ -1061,7 +1061,9 @@ void vehicle_prototype::finalize() } } if( pt.ammo_types.empty() ) { - pt.ammo_types.insert( ammotype( *base->gun->ammo.begin() )->default_ammotype() ); + if( !base->gun->ammo.empty() ) { + pt.ammo_types.insert( ammotype( *base->gun->ammo.begin() )->default_ammotype() ); + } } } diff --git a/src/vitamin.cpp b/src/vitamin.cpp index e64de236bf979..3fde1a34a7651 100644 --- a/src/vitamin.cpp +++ b/src/vitamin.cpp @@ -56,7 +56,7 @@ void vitamin::load_vitamin( JsonObject &jo ) vit.excess_ = efftype_id( jo.get_string( "excess", "null" ) ); vit.min_ = jo.get_int( "min" ); vit.max_ = jo.get_int( "max", 0 ); - assign( jo, "rate", vit.rate_, false, 1_turns ); + vit.rate_ = time_duration::read_from_json_string( *jo.get_raw( "rate" ) ); if( vit.rate_ < 0_turns ) { jo.throw_error( "vitamin consumption rate cannot be negative", "rate" ); diff --git a/src/weather.cpp b/src/weather.cpp index 8d3a1b86984e6..08f17bd4fddd6 100644 --- a/src/weather.cpp +++ b/src/weather.cpp @@ -201,20 +201,20 @@ void item::add_rain_to_container( bool acid, int charges ) return; } item ret( acid ? "water_acid" : "water", calendar::turn ); - const long capa = get_remaining_capacity_for_liquid( ret, true ); + const int capa = get_remaining_capacity_for_liquid( ret, true ); if( contents.empty() ) { // This is easy. Just add 1 charge of the rain liquid to the container. if( !acid ) { // Funnels aren't always clean enough for water. // TODO: disinfectant squeegie->funnel ret.poison = one_in( 10 ) ? 1 : 0; } - ret.charges = std::min( charges, capa ); + ret.charges = std::min( charges, capa ); put_in( ret ); } else { // The container already has a liquid. item &liq = contents.front(); - long orig = liq.charges; - long added = std::min( charges, capa ); + int orig = liq.charges; + int added = std::min( charges, capa ); if( capa > 0 ) { liq.charges += added; } @@ -240,9 +240,9 @@ void item::add_rain_to_container( bool acid, int charges ) // The container has water, and the acid rain didn't turn it // into weak acid. Poison the water instead, assuming 1 // charge of acid would act like a charge of water with poison 5. - long total_poison = liq.poison * ( orig ) + ( 5 * added ); + int total_poison = liq.poison * ( orig ) + ( 5 * added ); liq.poison = total_poison / liq.charges; - long leftover_poison = total_poison - liq.poison * liq.charges; + int leftover_poison = total_poison - liq.poison * liq.charges; if( leftover_poison > rng( 0, liq.charges ) ) { liq.poison++; } diff --git a/src/worldfactory.cpp b/src/worldfactory.cpp index 399237114a26b..bf8df16a4bf37 100644 --- a/src/worldfactory.cpp +++ b/src/worldfactory.cpp @@ -125,7 +125,7 @@ WORLDPTR worldfactory::add_world( std::unique_ptr retworld ) WORLDPTR worldfactory::make_new_world( const std::vector &mods ) { - std::unique_ptr retworld( new WORLD() ); + std::unique_ptr retworld = std::make_unique(); retworld->active_mod_order = mods; return add_world( std::move( retworld ) ); } @@ -133,7 +133,7 @@ WORLDPTR worldfactory::make_new_world( const std::vector &mods ) WORLDPTR worldfactory::make_new_world( bool show_prompt, const std::string &world_to_copy ) { // World to return after generating - std::unique_ptr retworld( new WORLD() ); + std::unique_ptr retworld = std::make_unique(); if( !world_to_copy.empty() ) { retworld->COPY_WORLD( world_generator->get_world( world_to_copy ) ); @@ -190,7 +190,7 @@ WORLDPTR worldfactory::make_new_world( special_game_id special_type ) return all_worlds[worldname].get(); } - std::unique_ptr special_world( new WORLD() ); + std::unique_ptr special_world = std::make_unique(); special_world->world_name = worldname; special_world->WORLD_OPTIONS["WORLD_END"].setValue( "delete" ); @@ -298,7 +298,7 @@ void worldfactory::init() if( has_world( "save" ) ) { const WORLD &old_world = *all_worlds["save"]; - std::unique_ptr newworld( new WORLD() ); + std::unique_ptr newworld = std::make_unique(); newworld->world_name = get_next_valid_worldname(); // save world as conversion world diff --git a/tests/item_test.cpp b/tests/item_test.cpp index 96b90b1ccbfb0..1f156353dcff2 100644 --- a/tests/item_test.cpp +++ b/tests/item_test.cpp @@ -23,7 +23,7 @@ TEST_CASE( "item_volume", "[item]" ) 0_ml, 1_ml, i.volume(), big_volume } ) { INFO( "checking batteries that fit in " << v ); - const long charges_that_should_fit = i.charges_per_volume( v ); + const int charges_that_should_fit = i.charges_per_volume( v ); i.charges = charges_that_should_fit; CHECK( i.volume() <= v ); // this many charges should fit i.charges++; diff --git a/tests/npc_talk_test.cpp b/tests/npc_talk_test.cpp index ab01eadbb8fff..677458683b429 100644 --- a/tests/npc_talk_test.cpp +++ b/tests/npc_talk_test.cpp @@ -458,21 +458,22 @@ TEST_CASE( "npc_talk_test" ) effects.apply( d ); CHECK( !talker_npc.has_trait( trait_PROF_FED ) ); // buying and spending + talker_npc.op_of_u.owed = 1000; REQUIRE( !has_beer_bottle( g->u, 2 ) ); - REQUIRE( g->u.cash == 1000 ); + REQUIRE( talker_npc.op_of_u.owed == 1000 ); effects = d.responses[9].success; effects.apply( d ); - CHECK( g->u.cash == 500 ); + CHECK( talker_npc.op_of_u.owed == 500 ); CHECK( has_beer_bottle( g->u, 2 ) ); REQUIRE( !has_item( g->u, "bottle_plastic", 1 ) ); effects = d.responses[10].success; effects.apply( d ); CHECK( has_item( g->u, "bottle_plastic", 1 ) ); - CHECK( g->u.cash == 500 ); + CHECK( talker_npc.op_of_u.owed == 500 ); effects = d.responses[11].success; effects.apply( d ); - CHECK( g->u.cash == 0 ); - g->u.cash = 1000; + CHECK( talker_npc.op_of_u.owed == 0 ); + talker_npc.op_of_u.owed = 1000; // effect chains REQUIRE( !g->u.has_effect( effect_infected ) ); REQUIRE( !talker_npc.has_effect( effect_infected ) ); @@ -486,7 +487,7 @@ TEST_CASE( "npc_talk_test" ) CHECK( talker_npc.get_effect( effect_infected ).is_permanent() ); CHECK( g->u.has_trait( trait_PROF_SWAT ) ); CHECK( talker_npc.has_trait( trait_PROF_SWAT ) ); - CHECK( g->u.cash == 0 ); + CHECK( talker_npc.op_of_u.owed == 0 ); CHECK( talker_npc.get_attitude() == NPCATT_KILL ); // opinion changes talker_npc.op_of_u = npc_opinion(); @@ -603,56 +604,56 @@ TEST_CASE( "npc_talk_test" ) CHECK( d.responses[1].text == "This is a u_has_bionics bio_ads test response." ); CHECK( d.responses[2].text == "This is a npc_has_bionics ANY response." ); - // speaker effects just use cash because I don't want to do anything complicated - g->u.cash = 2000; - CHECK( g->u.cash == 2000 ); + // speaker effects just use are owed because I don't want to do anything complicated + talker_npc.op_of_u.owed = 2000; + CHECK( talker_npc.op_of_u.owed == 2000 ); d.add_topic( "TALK_TEST_SPEAKER_EFFECT_SIMPLE" ); d.apply_speaker_effects( d.topic_stack.back() ); - REQUIRE( g->u.cash == 1500 ); + REQUIRE( talker_npc.op_of_u.owed == 1500 ); d.apply_speaker_effects( d.topic_stack.back() ); - REQUIRE( g->u.cash == 1000 ); + REQUIRE( talker_npc.op_of_u.owed == 1000 ); d.add_topic( "TALK_TEST_SPEAKER_EFFECT_SIMPLE_CONDITIONAL" ); d.apply_speaker_effects( d.topic_stack.back() ); - REQUIRE( g->u.cash == 500 ); + REQUIRE( talker_npc.op_of_u.owed == 500 ); d.apply_speaker_effects( d.topic_stack.back() ); - REQUIRE( g->u.cash == 500 ); - g->u.cash = 2000; - CHECK( g->u.cash == 2000 ); + REQUIRE( talker_npc.op_of_u.owed == 0 ); + talker_npc.op_of_u.owed = 2000; + CHECK( talker_npc.op_of_u.owed == 2000 ); d.add_topic( "TALK_TEST_SPEAKER_EFFECT_SENTINEL" ); d.apply_speaker_effects( d.topic_stack.back() ); - REQUIRE( g->u.cash == 1500 ); + REQUIRE( talker_npc.op_of_u.owed == 1500 ); d.apply_speaker_effects( d.topic_stack.back() ); - REQUIRE( g->u.cash == 1500 ); + REQUIRE( talker_npc.op_of_u.owed == 1500 ); d.add_topic( "TALK_TEST_SPEAKER_EFFECT_SENTINEL_CONDITIONAL" ); d.apply_speaker_effects( d.topic_stack.back() ); - REQUIRE( g->u.cash == 1000 ); + REQUIRE( talker_npc.op_of_u.owed == 1000 ); d.apply_speaker_effects( d.topic_stack.back() ); - REQUIRE( g->u.cash == 1000 ); + REQUIRE( talker_npc.op_of_u.owed == 1000 ); - g->u.cash = 4500; - CHECK( g->u.cash == 4500 ); + talker_npc.op_of_u.owed = 4500; + CHECK( talker_npc.op_of_u.owed == 4500 ); d.add_topic( "TALK_TEST_SPEAKER_EFFECT_COMPOUND" ); d.apply_speaker_effects( d.topic_stack.back() ); - REQUIRE( g->u.cash == 3500 ); + REQUIRE( talker_npc.op_of_u.owed == 3500 ); d.apply_speaker_effects( d.topic_stack.back() ); - REQUIRE( g->u.cash == 2500 ); + REQUIRE( talker_npc.op_of_u.owed == 2500 ); d.add_topic( "TALK_TEST_SPEAKER_EFFECT_COMPOUND_CONDITIONAL" ); d.apply_speaker_effects( d.topic_stack.back() ); - REQUIRE( g->u.cash == 1000 ); + REQUIRE( talker_npc.op_of_u.owed == 1000 ); d.apply_speaker_effects( d.topic_stack.back() ); - REQUIRE( g->u.cash == 500 ); - g->u.cash = 3500; - CHECK( g->u.cash == 3500 ); + REQUIRE( talker_npc.op_of_u.owed == 500 ); + talker_npc.op_of_u.owed = 3500; + CHECK( talker_npc.op_of_u.owed == 3500 ); d.add_topic( "TALK_TEST_SPEAKER_EFFECT_COMPOUND_SENTINEL" ); d.apply_speaker_effects( d.topic_stack.back() ); - REQUIRE( g->u.cash == 2750 ); + REQUIRE( talker_npc.op_of_u.owed == 2750 ); d.apply_speaker_effects( d.topic_stack.back() ); - REQUIRE( g->u.cash == 2250 ); + REQUIRE( talker_npc.op_of_u.owed == 2250 ); d.add_topic( "TALK_TEST_SPEAKER_EFFECT_COMPOUND_SENTINEL_CONDITIONAL" ); d.apply_speaker_effects( d.topic_stack.back() ); - REQUIRE( g->u.cash == 1500 ); + REQUIRE( talker_npc.op_of_u.owed == 1500 ); d.apply_speaker_effects( d.topic_stack.back() ); - REQUIRE( g->u.cash == 1500 ); + REQUIRE( talker_npc.op_of_u.owed == 1500 ); // test change class REQUIRE( talker_npc.myclass == npc_class_id( "NC_TEST_CLASS" ) ); diff --git a/tests/npc_test.cpp b/tests/npc_test.cpp index 74a77137139f3..175acb24f617c 100644 --- a/tests/npc_test.cpp +++ b/tests/npc_test.cpp @@ -358,8 +358,11 @@ TEST_CASE( "npc-movement" ) || type == 'B' || type == 'C' ) { std::shared_ptr guy = std::make_shared(); - guy->normalize(); - guy->randomize(); + do { + guy->normalize(); + guy->randomize(); + // Repeat until we get an NPC vulnerable to acid + } while( guy->is_immune_field( fd_acid ) ); guy->spawn_at_precise( {g->get_levx(), g->get_levy()}, p ); // Set the shopkeep mission; this means that // the NPC deems themselves to be guarding and stops them diff --git a/tests/overmap_test.cpp b/tests/overmap_test.cpp index 49ed96f04b49b..aa331ade02f91 100644 --- a/tests/overmap_test.cpp +++ b/tests/overmap_test.cpp @@ -15,7 +15,7 @@ TEST_CASE( "set_and_get_overmap_scents" ) { - std::unique_ptr test_overmap = std::unique_ptr( new overmap( 0, 0 ) ); + std::unique_ptr test_overmap = std::make_unique( 0, 0 ); // By default there are no scents set. for( int x = 0; x < 180; ++x ) { diff --git a/tests/savegame_test.cpp b/tests/savegame_test.cpp index 2855ef21441dc..266c2723d5a5e 100644 --- a/tests/savegame_test.cpp +++ b/tests/savegame_test.cpp @@ -222,7 +222,7 @@ TEST_CASE( "Reading a legacy overmap save." ) std::string legacy_save_name = "tests/data/legacy_0.C_overmap.sav"; std::string new_save_name = "tests/data/jsionized_overmap.sav"; - std::unique_ptr test_map = std::unique_ptr( new overmap( 0, 0 ) ); + std::unique_ptr test_map = std::make_unique( 0, 0 ); std::ifstream fin; fin.open( legacy_save_name.c_str(), std::ifstream::binary ); @@ -238,7 +238,7 @@ TEST_CASE( "Reading a legacy overmap save." ) test_map->serialize( fout ); fout.close(); - std::unique_ptr test_map_2 = std::unique_ptr( new overmap( 0, 0 ) ); + std::unique_ptr test_map_2 = std::make_unique( 0, 0 ); fin.open( new_save_name.c_str(), std::ifstream::binary ); REQUIRE( fin.is_open() ); diff --git a/tests/vision_test.cpp b/tests/vision_test.cpp index c1e94f0fa9056..700e36e48d7f1 100644 --- a/tests/vision_test.cpp +++ b/tests/vision_test.cpp @@ -343,7 +343,7 @@ TEST_CASE( "vision_day_indoors", "[shadowcasting][vision]" ) }, { "111", - "141", + "111", "111", }, midday, @@ -364,9 +364,9 @@ TEST_CASE( "vision_light_shining_in", "[shadowcasting][vision]" ) "##########", }, { - "1144444166", + "1144444666", "1144444466", - "1444444444", + "1144444444", "1144444444", "1144444444", }, @@ -386,7 +386,7 @@ TEST_CASE( "vision_no_lights", "[shadowcasting][vision]" ) }, { "111", - "141", + "111", }, midnight, true @@ -426,7 +426,7 @@ TEST_CASE( "vision_wall_obstructs_light", "[shadowcasting][vision]" ) { "666", "111", - "141", + "111", }, midnight, true @@ -480,7 +480,7 @@ TEST_CASE( "vision_see_wall_in_moonlight", "[shadowcasting][vision]" ) "111", "111", "111", - "141", + "111", }, DAYS( days_till_full_moon ), true