diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index bd959ede62aea..adfcece442844 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -111,12 +111,13 @@ Helpful pages: 3. Set commit message template. + $ cd Cataclysm-DDA + # Changes the active directory in the prompt to the newly cloned "Cataclysm-DDA" directory $ git config --local commit.template .gitmessage + # Set commit message template to the custom one in the repo 4. Add this repository as a remote. - $ cd Cataclysm-DDA - # Changes the active directory in the prompt to the newly cloned "Cataclysm-DDA" directory $ git remote add -f upstream https://github.com/CleverRaven/Cataclysm-DDA.git # Assigns the original repository to a remote called "upstream" diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml new file mode 100644 index 0000000000000..0ff7fb48c8d49 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -0,0 +1,73 @@ +name: Bug Report +description: Create a report to help us improve + +body: + - type: markdown + attributes: + value: | + Please take the time to fill out all the fields below. + - type: textarea + id: description-of-bug + attributes: + label: Describe the bug + description: A clear and concise description of what the bug is. + placeholder: There is no way for aim level to increase. + - type: textarea + id: steps-to-reproduce + attributes: + label: Steps To Reproduce + description: Steps to reproduce the behavior + placeholder: | + 1. Make a player with a gun, magazine, and some ammo. + 2. Try to aim at a wall. + 3. There's no way to increase aim level. + - type: textarea + id: expected-behavior + attributes: + label: Expected behavior + description: | + A clear and concise description of what you expected to happen. + Ideally also describe *why* you expect it to happen. + placeholder: | + I expected that aim level would increase, because all other skills can increase in level. + - type: textarea + id: screenshots + attributes: + label: Screenshots + description: | + **If applicable**, add screenshots to help explain your problem. + Do not take a screenshot of the crashing window. Please provide the crash logs in the "Additional context" + validations: + required: false + - type: textarea + id: versions-and-config + attributes: + label: Versions and configuration + description: | + Please complete the following information; you can now go to: + - "Main menu (ESC) > Debug Menu > Info > Generate game report" to generate this report. + - Please update your OS version with a more precise version. + value: | + - OS: [e.g. iOS 8 or Windows 10 or Ubuntu 18.04] + - Game Version: [from the main menu, e.g. 0.C-29938-g90f5268437] + - Graphics version: [Tiles or Terminal] + - Ingame language: [Arabic or Bulgarian or Chinese (Simplified) or Chinese (Traditional) or Dutch or Esperanto or French or German or Italian (Italy) or Japanese or Korean or Polish or Portuguese (Brazil) or Russian or Serbian or Spanish (Argentina) or Spanish (Spain) or Turkish] + - Mods loaded: [e.g.dda, boats, hacktheplanet, StatsThroughSkills] + - type: textarea + id: additional-context + attributes: + label: Additional context + description: | + Add any other context about the problem here. + placeholder: | + Crash: if your problem refers to a crash, please add the following files to the "Additional Context" paragraph: + - From the /config folder (you can zip them both together): + - crash.log file. + - debug.log file. + - Your save file (zipped) + + - note #1: you can drag and drop files in this issue post! + - note #2: it is very important for us that you provide a save file in case of a crash. It really helps the developers + to reproduce the bug and fix it. If possible, try to provide a save file that occurs in the right conditions, just + before the crash happens. + \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 97320450336e5..cfbb8a8bbbae3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -178,8 +178,6 @@ jobs: mv cataclysmdda-0.F.zip cdda-${{ matrix.artifact }}-${{ needs.release.outputs.timestamp }}.zip - name: Build CDDA (osx) if: runner.os == 'macOS' - env: - USE_HOME_DIR: 1 run: | cat >VERSION.txt <", + "color": "brown", + "roof": "t_barkfloor", + "move_cost": 2, + "flags": [ "TRANSPARENT", "GOES_DOWN", "PLACE_ITEM", "SUPPORTS_ROOF" ] + }, + { + "type": "terrain", + "id": "t_triffid_slope_up", + "name": "upward root slope", + "connects_to": "WALL", + "description": "An upward-facing slope of root-covered dirt.", + "symbol": "<", + "color": "brown", + "roof": "t_barkfloor", + "move_cost": 2, + "flags": [ "TRANSPARENT", "GOES_UP", "PLACE_ITEM", "SUPPORTS_ROOF" ] + }, + { + "type": "terrain", + "id": "t_bramble_door_c", + "name": "closed bramble roots", + "description": "A bramble of roots are here, covering a hole. They could easily be pulled apart.", + "symbol": "+", + "color": "brown", + "move_cost": 0, + "coverage": 95, + "roof": "t_flat_roof", + "flags": [ "FLAMMABLE_ASH", "DOOR", "NOITEM", "BARRICADABLE_DOOR", "CONNECT_TO_WALL", "BLOCK_WIND" ], + "open": "t_bramble_door_o", + "bash": { + "str_min": 12, + "str_max": 150, + "sound": "crunch!", + "sound_fail": "whump!", + "ter_set": "t_null", + "items": [ { "item": "splinter", "count": [ 2, 5 ] } ] + } + }, + { + "type": "terrain", + "id": "t_bramble_door_o", + "name": "open bramble roots", + "description": "A bramble of roots are here, they are pulled apart revealing a hole.", + "symbol": "'", + "color": "brown", + "move_cost": 2, + "roof": "t_flat_roof", + "flags": [ "FLAMMABLE_ASH", "TRANSPARENT", "FLAT", "BARRICADABLE_DOOR", "CONNECT_TO_WALL", "ROAD" ], + "close": "t_bramble_door_c", + "bash": { + "str_min": 12, + "str_max": 150, + "sound": "crunch!", + "sound_fail": "whump!", + "ter_set": "t_null", + "items": [ { "item": "splinter", "count": [ 2, 5 ] } ] + } + } +] diff --git a/data/json/furniture_and_terrain/terrain-walls.json b/data/json/furniture_and_terrain/terrain-walls.json index bdbc377be1f88..2175a346682f6 100644 --- a/data/json/furniture_and_terrain/terrain-walls.json +++ b/data/json/furniture_and_terrain/terrain-walls.json @@ -1241,6 +1241,27 @@ "items": [ { "item": "wax", "count": [ 3, 5 ] } ] } }, + { + "type": "terrain", + "id": "t_soil", + "name": "solid earth", + "description": "A wall of solid earth.", + "symbol": "#", + "color": "brown", + "move_cost": 0, + "coverage": 100, + "flags": [ "NOITEM", "SUPPORTS_ROOF", "WALL", "NO_SCENT", "MINEABLE", "BLOCK_WIND" ], + "roof": "t_dirt", + "bash": { + "str_min": 100, + "str_max": 400, + "sound": "wham!", + "sound_fail": "whump!", + "ter_set": "t_dirt", + "ter_set_bashed_from_above": "t_dirt", + "items": [ { "group": "digging_soil_loam_50L", "count": 20 } ] + } + }, { "type": "terrain", "id": "t_rock", diff --git a/data/json/furniture_and_terrain/terrain-zlevel-transitions.json b/data/json/furniture_and_terrain/terrain-zlevel-transitions.json index 9b9908772a021..475760bdf85cd 100644 --- a/data/json/furniture_and_terrain/terrain-zlevel-transitions.json +++ b/data/json/furniture_and_terrain/terrain-zlevel-transitions.json @@ -209,6 +209,48 @@ "move_cost": 2, "flags": [ "TRANSPARENT", "ROAD" ] }, + { + "type": "terrain", + "id": "t_earth_ramp_down_high", + "name": "earth ramp down (high end)", + "description": "The upper end of an earth ramp leading down.", + "symbol": ">", + "color": "brown", + "move_cost": 2, + "flags": [ "TRANSPARENT", "Z_TRANSPARENT" ] + }, + { + "type": "terrain", + "id": "t_earth_ramp_down_low", + "name": "earth ramp down (low end)", + "description": "The lower end of an earth ramp leading down.", + "connects_to": "WALL", + "symbol": ">", + "color": "brown", + "move_cost": 2, + "flags": [ "TRANSPARENT", "RAMP_DOWN", "Z_TRANSPARENT" ] + }, + { + "type": "terrain", + "id": "t_earth_ramp_up_high", + "name": "earth ramp up (high end)", + "connects_to": "WALL", + "description": "The upper end of an earth ramp leading up.", + "symbol": "<", + "color": "brown", + "move_cost": 2, + "flags": [ "RAMP_UP" ] + }, + { + "type": "terrain", + "id": "t_earth_ramp_up_low", + "name": "earth ramp up (low end)", + "description": "The lower end of an earth ramp leading up.", + "symbol": "<", + "color": "brown", + "move_cost": 2, + "flags": [ "TRANSPARENT" ] + }, { "type": "terrain", "id": "t_sidewalk_ramp_down_high", diff --git a/data/json/harvest.json b/data/json/harvest.json index ec4704e512648..7f34cc065f8f9 100644 --- a/data/json/harvest.json +++ b/data/json/harvest.json @@ -1277,27 +1277,6 @@ { "drop": "stick_fiber", "base_num": [ 4, 8 ], "scale_num": [ 0.5, 0.7 ], "max": 10, "type": "bone" } ] }, - { - "id": "CBM_CIV", - "type": "harvest", - "entries": [ - { - "drop": "bio_power_storage", - "type": "bionic", - "flags": [ "FILTHY", "NO_STERILE", "NO_PACKED" ], - "faults": [ "fault_bionic_salvaged" ] - }, - { - "drop": "bionics_common", - "type": "bionic_group", - "flags": [ "FILTHY", "NO_STERILE", "NO_PACKED" ], - "faults": [ "fault_bionic_salvaged" ] - }, - { "drop": "meat_tainted", "type": "flesh", "mass_ratio": 0.25 }, - { "drop": "fat_tainted", "type": "flesh", "mass_ratio": 0.08 }, - { "drop": "bone_tainted", "type": "bone", "mass_ratio": 0.1 } - ] - }, { "id": "CBM_SCI", "type": "harvest", @@ -1353,33 +1332,6 @@ { "drop": "bone_tainted", "type": "bone", "mass_ratio": 0.1 } ] }, - { - "id": "CBM_SUBS", - "type": "harvest", - "entries": [ - { - "drop": "bio_power_storage", - "type": "bionic", - "flags": [ "FILTHY", "NO_STERILE", "NO_PACKED" ], - "faults": [ "fault_bionic_salvaged" ] - }, - { - "drop": "bionics_subs", - "type": "bionic_group", - "flags": [ "FILTHY", "NO_STERILE", "NO_PACKED" ], - "faults": [ "fault_bionic_salvaged" ] - }, - { - "drop": "bionics_subs", - "type": "bionic_group", - "flags": [ "FILTHY", "NO_STERILE", "NO_PACKED" ], - "faults": [ "fault_bionic_salvaged" ] - }, - { "drop": "meat_tainted", "type": "flesh", "mass_ratio": 0.25 }, - { "drop": "fat_tainted", "type": "flesh", "mass_ratio": 0.08 }, - { "drop": "bone_tainted", "type": "bone", "mass_ratio": 0.1 } - ] - }, { "id": "CBM_OP", "type": "harvest", @@ -1490,6 +1442,18 @@ { "drop": "venom_paralytic", "type": "offal", "mass_ratio": 0.0075 } ] }, + { + "id": "triffid_fungal_fighter", + "type": "harvest", + "entries": [ + { "drop": "stick_fiber", "type": "bone", "mass_ratio": 0.4 }, + { "drop": "veggy", "type": "flesh", "mass_ratio": 0.2 }, + { "drop": "veggy", "type": "offal", "mass_ratio": 0.05 }, + { "drop": "stick", "type": "bone", "mass_ratio": 0.05 }, + { "drop": "venom_paralytic", "type": "offal", "mass_ratio": 0.0075 }, + { "drop": "triffid_fungicide", "type": "offal", "mass_ratio": 0.0075 } + ] + }, { "id": "triffid_queen", "type": "harvest", diff --git a/data/json/item_actions.json b/data/json/item_actions.json index 0428cfb630050..12bddabd5d0ed 100644 --- a/data/json/item_actions.json +++ b/data/json/item_actions.json @@ -844,11 +844,6 @@ "id": "SIPHON", "name": { "str": "Siphon" } }, - { - "type": "item_action", - "id": "SLEEP", - "name": { "str": "Take" } - }, { "type": "item_action", "id": "SMOKING", @@ -1073,5 +1068,10 @@ "type": "item_action", "id": "CRAFT", "name": { "str": "Work on craft" } + }, + { + "type": "item_action", + "id": "effect_on_conditions", + "name": { "str": "Activate item" } } ] diff --git a/data/json/itemgroups/Agriculture_Forage_Excavation/agriculture.json b/data/json/itemgroups/Agriculture_Forage_Excavation/agriculture.json index 2aa922cdb00f3..8b97754f71cc0 100644 --- a/data/json/itemgroups/Agriculture_Forage_Excavation/agriculture.json +++ b/data/json/itemgroups/Agriculture_Forage_Excavation/agriculture.json @@ -146,5 +146,45 @@ [ "straw_pile", 20 ], [ "survnote", 1 ] ] + }, + { + "type": "item_group", + "id": "orchard_supplies", + "subtype": "distribution", + "items": [ + [ "fertilizer_liquid", 10 ], + [ "fertilizer_commercial", 10 ], + [ "insecticide", 10 ], + [ "pot_canning", 5 ], + { "item": "jar_3l_glass_sealed", "prob": 25, "count": [ 2, 10 ] }, + { "item": "wooden_barrel", "prob": 20, "count": [ 2, 4 ] } + ] + }, + { + "type": "item_group", + "id": "orchard_tools", + "subtype": "collection", + "items": [ + [ "shovel", 5 ], + { "item": "trimmer_off", "prob": 5, "charges": [ 0, 600 ] }, + [ "bucket", 5 ], + [ "rake", 15 ], + [ "rake_plastic", 5 ], + [ "stepladder", 15 ], + { "item": "pointy_stick", "prob": 20, "count": [ 3, 10 ] }, + [ "hammer", 10 ], + [ "rope_makeshift_6", 20 ] + ] + }, + { + "type": "item_group", + "id": "stored_pulp", + "ammo": 100, + "magazine": 100, + "subtype": "distribution", + "entries": [ + { "item": "wooden_barrel", "prob": 100, "sealed": true }, + { "item": "juice_pulp", "prob": 100, "charges": [ 7, 77 ], "container-item": "wooden_barrel" } + ] } ] diff --git a/data/json/itemgroups/Clothing_Gear/clothing.json b/data/json/itemgroups/Clothing_Gear/clothing.json index 38006e9cecf33..467f3896bc397 100644 --- a/data/json/itemgroups/Clothing_Gear/clothing.json +++ b/data/json/itemgroups/Clothing_Gear/clothing.json @@ -248,6 +248,18 @@ "subtype": "distribution", "entries": [ { "item": "tshirt" } ] }, + { + "id": "clothing_military_headwear", + "type": "item_group", + "subtype": "distribution", + "//": "add in field caps when they are added to the game.", + "items": [ + { "item": "beret", "prob": 60 }, + { "item": "hat_boonie", "prob": 38 }, + { "item": "turban", "prob": 1 }, + { "item": "headscarf", "prob": 1 } + ] + }, { "id": "clothing_outdoor_pants", "type": "item_group", @@ -527,8 +539,7 @@ "//": "Various types of hazmat suits, without masks", "items": [ { "collection": [ { "item": "cleansuit" }, { "item": "gloves_rubber" }, { "item": "boots_rubber" } ], "prob": 40 }, - [ "hazmat_suit", 55 ], - [ "anbc_suit", 5 ] + [ "hazmat_suit", 60 ] ] }, { @@ -544,7 +555,7 @@ "id": "boxing_clothes", "type": "item_group", "subtype": "distribution", - "entries": [ + "items": [ { "item": "tank_top", "prob": 40 }, { "item": "shorts", "prob": 40 }, { "item": "boxing_gloves", "prob": 50 }, @@ -2225,7 +2236,7 @@ { "type": "item_group", "id": "hazmat_full", - "items": [ [ "hazmat_suit", 80 ], [ "anbc_suit", 20 ] ] + "items": [ [ "hazmat_suit", 100 ] ] }, { "type": "item_group", @@ -2258,7 +2269,6 @@ [ "armor_plarmor", 2 ], [ "armor_riot", 10 ], [ "swat_armor", 6 ], - [ "aep_suit", 4 ], [ "armor_scrapsuit", 12 ], [ "armor_chitin", 2 ], [ "armor_lightplate", 1 ], diff --git a/data/json/itemgroups/Clothing_Gear/gear.json b/data/json/itemgroups/Clothing_Gear/gear.json index 511091cbaba4d..b0c222207bca6 100644 --- a/data/json/itemgroups/Clothing_Gear/gear.json +++ b/data/json/itemgroups/Clothing_Gear/gear.json @@ -199,5 +199,12 @@ "prob": 20 } ] + }, + { + "id": "SUS_woodcrafts_gear", + "type": "item_group", + "//": "This group is for lockers storing safety gear for woodcrafts. SUS item groups are collections that contain a reasonable realistic distribution of items that might spawn in a given storage furniture.", + "subtype": "collection", + "items": [ [ "glasses_safety", 95 ], [ "mask_dust", 30 ], [ "gloves_work", 30 ], [ "apron_leather", 95 ] ] } ] diff --git a/data/json/itemgroups/Food/food.json b/data/json/itemgroups/Food/food.json index 593a5c50e8bef..4b865be0d9d4a 100644 --- a/data/json/itemgroups/Food/food.json +++ b/data/json/itemgroups/Food/food.json @@ -588,38 +588,6 @@ { "item": "pie_maple", "prob": 10 } ] }, - { - "type": "item_group", - "id": "MRE", - "subtype": "distribution", - "entries": [ - { "item": "mre_chilibeans_box" }, - { "item": "mre_bbqbeef_box" }, - { "item": "mre_chickennoodle_box" }, - { "item": "mre_spaghetti_box" }, - { "item": "mre_chicken_box" }, - { "item": "mre_beeftaco_box" }, - { "item": "mre_beef_box" }, - { "item": "mre_meatball_box" }, - { "item": "mre_beefstew_box" }, - { "item": "mre_chilimac_box" }, - { "item": "mre_veggy_box" }, - { "item": "mre_macaronimarinara_box" }, - { "item": "mre_sfettuccine_box" }, - { "item": "mre_ratatouille_box" }, - { "item": "mre_cheesetort_box" }, - { "item": "mre_mushroomfettuccine_box" }, - { "item": "mre_mexicanchickenstew_box" }, - { "item": "mre_maplesausage_box" }, - { "item": "mre_ravioli_box" }, - { "item": "mre_hashbrownbacon_box" }, - { "item": "mre_lemontuna_box" }, - { "item": "mre_asianbeef_box" }, - { "item": "mre_chickenpesto_box" }, - { "item": "mre_southwestbeef_box" }, - { "item": "mre_hotdog_box" } - ] - }, { "type": "item_group", "id": "alcohol", diff --git a/data/json/itemgroups/Labs/labs_common.json b/data/json/itemgroups/Labs/labs_common.json new file mode 100644 index 0000000000000..99165c90b48b9 --- /dev/null +++ b/data/json/itemgroups/Labs/labs_common.json @@ -0,0 +1,41 @@ +[ + { + "id": "lab_glassware", + "type": "item_group", + "subtype": "collection", + "items": [ + { "item": "test_tube", "prob": 50, "count": [ 2, 6 ] }, + { "item": "glass_prism", "prob": 5, "count": [ 1, 3 ] }, + { "item": "bottle_glass", "prob": 20, "count": [ 1, 3 ] }, + { "item": "glass_tube_small", "prob": 40, "count": [ 1, 6 ] }, + { "item": "flask_glass", "prob": 60, "count": [ 1, 6 ] }, + { "item": "canister_empty", "prob": 40, "count": [ 1, 6 ] }, + { "item": "jar_3l_glass_sealed", "prob": 5, "count": [ 1, 3 ] } + ] + }, + { + "id": "ID_supplies", + "type": "item_group", + "subtype": "collection", + "items": [ + { + "distribution": [ + { "item": "camera", "prob": 70, "charges-min": 0, "charges-max": 50 }, + { "item": "camera_pro", "prob": 30, "charges-min": 0, "charges-max": 50 } + ], + "prob": 10 + }, + { "item": "mobile_memory_card", "prob": 50, "count": [ 2, 6 ] }, + { "item": "mobile_memory_card_encrypted", "prob": 5, "count": [ 1, 3 ] }, + { "item": "id_science", "prob": 5, "count": [ 1, 3 ] }, + { "item": "badge_doctor", "prob": 5, "count": [ 1, 3 ] }, + { "item": "wrapped_rad_badge", "prob": 7, "count": [ 1, 3 ] }, + { "item": "plastic_chunk", "prob": 30, "count": [ 1, 3 ] }, + { "item": "vac_sealer", "prob": 20 }, + { "item": "id_military", "prob": 1 }, + { "item": "lanyard", "prob": 100, "count": [ 1, 6 ] }, + { "item": "canister_empty", "prob": 30, "count": [ 1, 6 ] }, + { "item": "string_36", "prob": 60, "count": [ 1, 3 ] } + ] + } +] diff --git a/data/json/itemgroups/Labs/labs_mutagen.json b/data/json/itemgroups/Labs/labs_mutagen.json new file mode 100644 index 0000000000000..cb0b7526e30d9 --- /dev/null +++ b/data/json/itemgroups/Labs/labs_mutagen.json @@ -0,0 +1,51 @@ +[ + { + "id": "lab_mutagen_ingredients", + "type": "item_group", + "subtype": "collection", + "entries": [ + { "item": "bleach", "charges-min": 1, "prob": 40, "container-item": "jug_plastic", "sealed": false }, + { "item": "ammonia", "charges-min": 1, "prob": 40, "container-item": "jug_plastic", "sealed": false }, + { + "distribution": [ { "item": "honey_glassed", "prob": 20 }, { "item": "honey_bottled", "prob": 80 } ], + "prob": 30 + }, + { "item": "can_clams", "count": [ 1, 3 ], "prob": 30 }, + { "item": "lye_powder", "prob": 30 }, + { "item": "honeycomb", "prob": 30 }, + { "item": "iodine", "prob": 30 }, + { "item": "disinfectant", "prob": 30 }, + { "item": "protein_powder", "prob": 30 }, + { "item": "bee_sting", "prob": 20 }, + { "item": "slime_scrap", "prob": 20 }, + { "item": "datura_seed", "prob": 20 }, + { "item": "chitin_piece", "prob": 20 }, + { "item": "oxy_powder", "prob": 30 }, + { "item": "heroin", "prob": 10 }, + { "item": "lsd", "prob": 10 }, + { "item": "oxycodone", "prob": 10 }, + { "item": "tramadol", "prob": 10 }, + { "item": "codeine", "prob": 10 }, + { "item": "thorazine", "prob": 10 }, + { "item": "pills_sleep", "prob": 20 }, + { "item": "vitamins", "prob": 30 } + ] + }, + { + "id": "lab_mutagen_ingredients_fridge", + "type": "item_group", + "subtype": "collection", + "entries": [ + { "item": "meat", "prob": 40, "count": [ 1, 3 ] }, + { "item": "meat_tainted", "prob": 30, "count": [ 1, 3 ] }, + { "item": "tallow", "prob": 30, "count": [ 1, 3 ] }, + { "item": "fish", "prob": 40, "count": [ 1, 3 ] }, + { "item": "tallow_tainted", "prob": 20, "count": [ 1, 2 ] }, + { "item": "egg_bird_unfert", "prob": 30, "count-min": 1, "count-max": 12 }, + { "item": "spider_egg", "prob": 20, "count-min": 1, "count-max": 12 }, + { "item": "egg_reptile", "prob": 20, "count-min": 1, "count-max": 12 }, + { "item": "water_clean", "container-item": "bottle_plastic", "prob": 65, "count": [ 1, 3 ], "sealed": false }, + { "item": "water_mineral", "container-item": "bottle_plastic", "prob": 35, "count": [ 1, 2 ], "sealed": false } + ] + } +] diff --git a/data/json/itemgroups/Locations_MapExtras/locations.json b/data/json/itemgroups/Locations_MapExtras/locations.json index b255b6fa67157..23c25fbb3b480 100644 --- a/data/json/itemgroups/Locations_MapExtras/locations.json +++ b/data/json/itemgroups/Locations_MapExtras/locations.json @@ -449,7 +449,7 @@ [ "frame", 20 ], [ "hdframe", 20 ], [ "cu_pipe", 25 ], - [ "scrap_copper", 50 ] + [ "scrap_copper", 62 ] ] }, { @@ -1409,7 +1409,7 @@ { "item": "3006", "prob": 5, "charges": [ 1, 20 ] }, { "item": "ksg", "prob": 8, "charges": [ 0, 7 ] }, { "item": "remington_870_express", "prob": 8, "charges": [ 0, 7 ] }, - { "item": "mossberg_500_security", "prob": 8, "charges": [ 0, 6 ] }, + { "item": "mossberg_500", "variant": "mossberg_500_security", "prob": 8, "charges": [ 0, 6 ] }, { "item": "shot_beanbag", "prob": 25, "charges": [ 1, 10 ] }, { "item": "rm120c", "prob": 2, "charges": [ 0, 5 ] }, { "item": "rm20", "prob": 1, "charges": [ 0, 20 ] }, @@ -2257,6 +2257,7 @@ [ "rollmat", 40 ], [ "tent_kit", 17 ], [ "large_tent_kit", 17 ], + [ "tent_pole", 17 ], { "distribution": [ { "group": "full_survival_kit" }, { "group": "used_survival_kit" } ], "prob": 10 }, [ "canteen", 15 ], [ "2lcanteen", 10 ], @@ -2453,7 +2454,8 @@ { "item": "rag", "prob": 60, "custom-flags": [ "FILTHY" ] }, { "item": "coat_lab", "prob": 20 }, { "item": "blanket", "prob": 20 }, - { "item": "sheet", "prob": 20 } + { "item": "sheet", "prob": 20 }, + { "item": "tent_pole", "prob": 20 } ] }, { diff --git a/data/json/itemgroups/Locations_MapExtras/locations_commercial.json b/data/json/itemgroups/Locations_MapExtras/locations_commercial.json index f267a01bcdfb5..fa7588bbf8332 100644 --- a/data/json/itemgroups/Locations_MapExtras/locations_commercial.json +++ b/data/json/itemgroups/Locations_MapExtras/locations_commercial.json @@ -1193,6 +1193,7 @@ { "item": "cordless_drill", "prob": 70, "charges": [ 0, 500 ] }, [ "thermometer", 60 ], [ "saw", 90 ], + { "item": "bow_saw", "prob": 30 }, { "item": "chainsaw_off", "prob": 10, "charges": [ 0, 450 ] }, [ "bucket", 100 ], [ "tree_spile", 100 ], diff --git a/data/json/itemgroups/Monsters_Animals_Lairs/monster_drops_lairs.json b/data/json/itemgroups/Monsters_Animals_Lairs/monster_drops_lairs.json index 65683bdea1a6e..c16c6e60b6232 100644 --- a/data/json/itemgroups/Monsters_Animals_Lairs/monster_drops_lairs.json +++ b/data/json/itemgroups/Monsters_Animals_Lairs/monster_drops_lairs.json @@ -220,7 +220,7 @@ { "item": "nato_assault_rifle", "variant": "m4a1", "prob": 7 }, { "item": "m16a4", "prob": 6 }, { "item": "nato_assault_rifle", "variant": "h&k416a5", "prob": 3 }, - { "item": "m1014", "prob": 1 }, + { "item": "mossberg_930", "variant": "m1014", "prob": 1 }, { "item": "steyr_aug", "prob": 6 }, { "item": "v29", "prob": 1 }, { "item": "flamethrower", "prob": 1 }, diff --git a/data/json/itemgroups/SUS/mre_packages.json b/data/json/itemgroups/SUS/mre_packages.json new file mode 100644 index 0000000000000..f745089d5a423 --- /dev/null +++ b/data/json/itemgroups/SUS/mre_packages.json @@ -0,0 +1,168 @@ +[ + { + "type": "item_group", + "id": "MRE", + "items": [ { "group": "mre_full_pack" } ] + }, + { + "type": "item_group", + "id": "any_MRE", + "subtype": "distribution", + "entries": [ { "group": "mre_full_pack" }, { "group": "mre_used_pack" } ] + }, + { + "type": "item_group", + "id": "mre_entrees", + "subtype": "distribution", + "entries": [ + { "item": "mre_asianbeef" }, + { "item": "mre_bbqbeef" }, + { "item": "mre_beef" }, + { "item": "mre_beefstew" }, + { "item": "mre_beeftaco" }, + { "item": "mre_cheesetort" }, + { "item": "mre_chicken" }, + { "item": "mre_chickenburritobowl" }, + { "item": "mre_chickennoodle" }, + { "item": "mre_chickenpesto" }, + { "item": "mre_chilibeans" }, + { "item": "mre_chilimac" }, + { "item": "mre_hashbrownbacon" }, + { "item": "mre_hotdog" }, + { "item": "mre_lemontuna" }, + { "item": "mre_macaronimarinara" }, + { "item": "mre_maplesausage" }, + { "item": "mre_meatball" }, + { "item": "mre_mexicanchickenstew" }, + { "item": "mre_mushroomfettuccine" }, + { "item": "mre_pepperjackbeef" }, + { "item": "mre_ratatouille" }, + { "item": "mre_ravioli" }, + { "item": "mre_sfettuccine" }, + { "item": "mre_southwestbeef" }, + { "item": "mre_spaghetti" }, + { "item": "mre_veggy" } + ] + }, + { + "type": "item_group", + "id": "mre_dessert_pack", + "subtype": "collection", + "entries": [ + { "item": "candy2", "container-item": "wrapper" }, + { "item": "chocolate" }, + { "item": "cookies", "container-item": "wrapper" }, + { "item": "dry_fruit", "container-item": "wrapper" } + ] + }, + { + "type": "item_group", + "id": "mre_accessory_pack", + "container-item": "bag_plastic", + "subtype": "collection", + "entries": [ + { "item": "gummy_vitamins", "charges": 1 }, + { "item": "matches", "charges": 20 }, + { "item": "paper", "charges": 8 }, + { "item": "gum", "charges": 2 }, + { "item": "pur_tablets", "charges": 6, "container-item": "beverage_bag" }, + { "item": "spork" }, + { + "distribution": [ + { "item": "instant_coffee", "count": 2, "container-item": "beverage_bag" }, + { "item": "herbal_tea_bag", "count": 2, "container-item": "beverage_bag" }, + { "item": "tea_bag", "count": 2, "container-item": "beverage_bag" }, + { "item": "tea_bag_chamomile", "count": 2, "container-item": "beverage_bag" }, + { "item": "tea_bag_dandelion", "count": 2, "container-item": "beverage_bag" }, + { "item": "tea_fruit_bag", "count": 2, "container-item": "beverage_bag" }, + { "item": "tea_green_bag", "count": 2, "container-item": "beverage_bag" } + ] + } + ] + }, + { + "type": "item_group", + "id": "mre_contents", + "//": "What an MRE in pristine condition should contain.", + "subtype": "collection", + "entries": [ + { "group": "mre_entrees", "container-item": "mre_bag_small" }, + { "item": "heatpack" }, + { + "distribution": [ + { "item": "can_cheese", "container-item": "mre_bag_small", "sealed": true }, + { "item": "spread_peanutbutter", "container-item": "mre_bag_small", "sealed": true } + ] + }, + { "item": "crackers", "charges": 2, "container-item": "mre_bag_small", "sealed": true }, + { "group": "mre_accessory_pack" }, + { "item": "mre_bag", "contents-group": "mre_dessert_pack", "sealed": true } + ] + }, + { + "type": "item_group", + "id": "mre_full_pack", + "subtype": "collection", + "entries": [ { "item": "mre_package", "contents-group": "mre_contents", "sealed": true } ] + }, + { + "type": "item_group", + "id": "mre_used_dessert_pack", + "subtype": "collection", + "entries": [ + { "item": "candy2", "charges": [ 0, 3 ], "container-item": "wrapper" }, + { "item": "chocolate", "charges": [ 0, 3 ] }, + { "item": "cookies", "charges": [ 0, 4 ], "container-item": "wrapper" }, + { "item": "dry_fruit", "container-item": "wrapper" } + ] + }, + { + "type": "item_group", + "id": "mre_used_accessory_pack", + "container-item": "bag_plastic", + "subtype": "collection", + "entries": [ + { "item": "gummy_vitamins", "charges": 1 }, + { "item": "matches", "charges": [ 0, 20 ] }, + { "item": "paper", "charges": [ 0, 8 ] }, + { "item": "gum", "charges": [ 0, 2 ] }, + { "item": "pur_tablets", "charges": [ 0, 6 ], "container-item": "beverage_bag" }, + { "item": "spork" }, + { + "distribution": [ + { "item": "instant_coffee", "count": [ 0, 2 ], "container-item": "beverage_bag" }, + { "item": "herbal_tea_bag", "count": [ 0, 2 ], "container-item": "beverage_bag" }, + { "item": "tea_bag", "count": [ 0, 2 ], "container-item": "beverage_bag" }, + { "item": "tea_bag_chamomile", "count": [ 0, 2 ], "container-item": "beverage_bag" }, + { "item": "tea_bag_dandelion", "count": [ 0, 2 ], "container-item": "beverage_bag" }, + { "item": "tea_fruit_bag", "count": [ 0, 2 ], "container-item": "beverage_bag" }, + { "item": "tea_green_bag", "count": [ 0, 2 ], "container-item": "beverage_bag" } + ] + } + ] + }, + { + "type": "item_group", + "id": "mre_used_contents", + "subtype": "collection", + "entries": [ + { "group": "mre_entrees", "container-item": "mre_bag_small", "sealed": false, "prob": 40 }, + { "item": "heatpack", "prob": 40 }, + { + "distribution": [ + { "item": "can_cheese", "container-item": "mre_bag_small", "prob": 40, "sealed": true }, + { "item": "spread_peanutbutter", "container-item": "mre_bag_small", "prob": 40, "sealed": true } + ] + }, + { "item": "crackers", "charges": [ 0, 2 ], "container-item": "mre_bag_small", "sealed": false }, + { "group": "mre_accessory_pack", "prob": 50 }, + { "item": "mre_bag", "contents-group": "mre_used_dessert_pack", "sealed": false } + ] + }, + { + "type": "item_group", + "id": "mre_used_pack", + "subtype": "collection", + "entries": [ { "item": "mre_package", "contents-group": "mre_used_contents", "sealed": false } ] + } +] diff --git a/data/json/itemgroups/Weapons_Mods_Ammo/guns.json b/data/json/itemgroups/Weapons_Mods_Ammo/guns.json index 59485c1ab21fa..32f369c7b1f71 100644 --- a/data/json/itemgroups/Weapons_Mods_Ammo/guns.json +++ b/data/json/itemgroups/Weapons_Mods_Ammo/guns.json @@ -6,12 +6,12 @@ "items": [ { "item": "glock_17", "prob": 35, "charges-min": 0, "charges-max": 15 }, { "item": "glock_19", "prob": 50, "charges-min": 0, "charges-max": 15 }, - { "item": "glock_20", "prob": 4, "charges-min": 0, "charges-max": 15 }, + { "item": "glock_20", "variant": "glock_20", "prob": 4, "charges-min": 0, "charges-max": 15 }, { "item": "glock_21", "prob": 8, "charges-min": 0, "charges-max": 15 }, { "item": "glock_22", "prob": 35, "charges-min": 0, "charges-max": 15 }, { "item": "glock_29", "prob": 2, "charges-min": 0, "charges-max": 10 }, { "item": "glock_31", "prob": 15, "charges-min": 0, "charges-max": 15 }, - { "item": "glock_40", "prob": 2, "charges-min": 0, "charges-max": 15 }, + { "item": "glock_20", "variant": "glock_40", "prob": 2, "charges-min": 0, "charges-max": 15 }, { "item": "m1911", "prob": 50, "charges-min": 0, "charges-max": 7 }, { "item": "m1911_10", "prob": 15, "charges-min": 0, "charges-max": 7 }, { "item": "m9", "prob": 30, "charges-min": 0, "charges-max": 15 }, @@ -56,9 +56,9 @@ { "item": "glock_17", "prob": 35, "charges-min": 0, "charges-max": 0 }, { "item": "glock_19", "prob": 50, "charges-min": 0, "charges-max": 0 }, { "item": "glock_22", "prob": 35, "charges-min": 0, "charges-max": 0 }, - { "item": "glock_20", "prob": 4, "charges-min": 0, "charges-max": 0 }, + { "item": "glock_20", "variant": "glock_20", "prob": 4, "charges-min": 0, "charges-max": 0 }, { "item": "glock_21", "prob": 8, "charges-min": 0, "charges-max": 15 }, - { "item": "glock_40", "prob": 2, "charges-min": 0, "charges-max": 0 }, + { "item": "glock_20", "variant": "glock_40", "prob": 2, "charges-min": 0, "charges-max": 0 }, { "item": "glock_31", "prob": 15, "charges-min": 0, "charges-max": 0 }, { "item": "m1911", "prob": 50, "charges-min": 0, "charges-max": 0 }, { "item": "m1911_10", "prob": 15, "charges-min": 0, "charges-max": 0 }, @@ -481,10 +481,10 @@ "items": [ { "item": "mossberg_500", "prob": 33, "charges-min": 0, "charges-max": 6 }, { "item": "remington_870", "prob": 35, "charges-min": 0, "charges-max": 5 }, - { "item": "mossberg_500_security", "prob": 17, "charges-min": 0, "charges-max": 6 }, + { "item": "mossberg_500", "variant": "mossberg_500_security", "prob": 17, "charges-min": 0, "charges-max": 6 }, { "item": "remington_870_express", "prob": 18, "charges-min": 0, "charges-max": 6 }, - { "item": "browning_a5", "prob": 14, "charges-min": 0, "charges-max": 5 }, - { "item": "remington_1100", "prob": 17, "charges-min": 0, "charges-max": 5 }, + { "item": "remington_870", "variant": "browning_a5", "prob": 14, "charges-min": 0, "charges-max": 5 }, + { "item": "remington_870", "variant": "remington_1100", "prob": 17, "charges-min": 0, "charges-max": 5 }, { "item": "mossberg_930", "prob": 15, "charges-min": 0, "charges-max": 6 }, { "item": "shotgun_410", "prob": 30, "charges-min": 0, "charges-max": 1 }, { "item": "shotgun_d", "prob": 30, "charges-min": 0, "charges-max": 2 }, @@ -498,10 +498,10 @@ "items": [ { "item": "mossberg_500", "prob": 33, "charges-min": 0, "charges-max": 0 }, { "item": "remington_870", "prob": 35, "charges-min": 0, "charges-max": 0 }, - { "item": "mossberg_500_security", "prob": 17, "charges-min": 0, "charges-max": 0 }, + { "item": "mossberg_500", "variant": "mossberg_500_security", "prob": 17, "charges-min": 0, "charges-max": 0 }, { "item": "remington_870_express", "prob": 18, "charges-min": 0, "charges-max": 0 }, - { "item": "browning_a5", "prob": 14, "charges-min": 0, "charges-max": 0 }, - { "item": "remington_1100", "prob": 17, "charges-min": 0, "charges-max": 0 }, + { "item": "remington_870", "variant": "browning_a5", "prob": 14, "charges-min": 0, "charges-max": 0 }, + { "item": "remington_870", "variant": "remington_1100", "prob": 17, "charges-min": 0, "charges-max": 0 }, { "item": "mossberg_930", "prob": 15, "charges-min": 0, "charges-max": 0 }, { "item": "shotgun_410", "prob": 30, "charges-min": 0, "charges-max": 0 }, { "item": "shotgun_d", "prob": 30, "charges-min": 0, "charges-max": 0 }, @@ -517,8 +517,8 @@ { "item": "ksg", "prob": 50, "charges-min": 0, "charges-max": 7 }, { "item": "ksg-25", "prob": 8, "charges-min": 0, "charges-max": 12 }, { "item": "tavor_12", "prob": 5, "charges-min": 0, "charges-max": 5 }, - { "item": "m1014", "prob": 10, "charges-min": 0, "charges-max": 8 }, - { "item": "SPAS_12", "prob": 2, "charges-min": 0, "charges-max": 9 }, + { "item": "mossberg_930", "variant": "m1014", "prob": 10, "charges-min": 0, "charges-max": 8 }, + { "item": "mossberg_590", "variant": "SPAS_12", "prob": 2, "charges-min": 0, "charges-max": 9 }, { "item": "rm120c", "prob": 5, "charges-min": 0, "charges-max": 5 }, { "item": "rm228", "prob": 5, "charges-min": 0, "charges-max": 10 } ] @@ -531,8 +531,8 @@ "entries": [ { "item": "ksg", "prob": 50, "charges-min": 0, "charges-max": 0 }, { "item": "tavor_12", "prob": 5, "charges-min": 0, "charges-max": 0 }, - { "item": "m1014", "prob": 10, "charges-min": 0, "charges-max": 0 }, - { "item": "SPAS_12", "prob": 2, "charges-min": 0, "charges-max": 0 }, + { "item": "mossberg_930", "variant": "m1014", "prob": 10, "charges-min": 0, "charges-max": 0 }, + { "item": "mossberg_590", "variant": "SPAS_12", "prob": 2, "charges-min": 0, "charges-max": 0 }, { "item": "rm120c", "prob": 5, "charges-min": 0, "charges-max": 0 }, { "item": "rm228", "prob": 5, "charges-min": 0, "charges-max": 0 } ] @@ -576,7 +576,7 @@ { "item": "remington_870_express", "prob": 50, "charges-min": 0, "charges-max": 6 }, { "item": "remington_870_breacher", "prob": 20, "charges-min": 0, "charges-max": 4 }, { "item": "mossberg_590", "prob": 50, "charges-min": 0, "charges-max": 9 }, - { "item": "m1014", "prob": 100, "charges-min": 0, "charges-max": 8 } + { "item": "mossberg_930", "variant": "m1014", "prob": 100, "charges-min": 0, "charges-max": 8 } ] }, { @@ -791,7 +791,7 @@ { "item": "hk_mp5", "prob": 50, "charges-min": 0, "charges-max": 30 }, { "item": "hk_mp5k", "prob": 10, "charges-min": 0, "charges-max": 30 }, { "item": "hk_mp5sd", "prob": 5, "charges-min": 0, "charges-max": 30 }, - { "item": "m1014", "prob": 10, "charges-min": 0, "charges-max": 8 }, + { "item": "mossberg_930", "variant": "m1014", "prob": 10, "charges-min": 0, "charges-max": 8 }, { "item": "nato_assault_rifle", "variant": "m4a1", "prob": 35, "charges-min": 0, "charges-max": 30 }, { "item": "as50", "prob": 5, "charges-min": 0, "charges-max": 10 }, { "item": "hk417_13", "prob": 30, "charges-min": 0, "charges-max": 20 } diff --git a/data/json/itemgroups/activities_hobbies.json b/data/json/itemgroups/activities_hobbies.json index f8967629f8a8d..5b005686179cc 100644 --- a/data/json/itemgroups/activities_hobbies.json +++ b/data/json/itemgroups/activities_hobbies.json @@ -269,6 +269,7 @@ [ "rollmat", 40 ], [ "tent_kit", 17 ], [ "large_tent_kit", 17 ], + [ "tent_pole", 17 ], [ "canteen", 15 ], [ "2lcanteen", 10 ], [ "camelbak", 5 ], diff --git a/data/json/itemgroups/art_antiques_crafts.json b/data/json/itemgroups/art_antiques_crafts.json index d1e5a376777c1..734b6c227a3b8 100644 --- a/data/json/itemgroups/art_antiques_crafts.json +++ b/data/json/itemgroups/art_antiques_crafts.json @@ -274,5 +274,23 @@ { "item": "ceramic_cup", "prob": 15 }, { "item": "jug_clay", "prob": 15 } ] + }, + { + "type": "item_group", + "id": "woodcrafts", + "items": [ + [ "holy_symbol_wood", 20 ], + [ "hand_paddles", 10 ], + [ "pipe_tobacco", 10 ], + [ "ukulele", 10 ], + [ "clogs", 20 ], + [ "canteen_wood", 10 ], + [ "pet_carrier_wooden", 10 ], + [ "wooden_barrel", 10 ], + [ "wooden_bead", 5 ], + [ "bead_bracelet", 5 ], + [ "bead_ear", 5 ], + [ "bead_necklace", 5 ] + ] } ] diff --git a/data/json/itemgroups/books.json b/data/json/itemgroups/books.json index 538cdd0d7e9d5..3dd85e9513e23 100644 --- a/data/json/itemgroups/books.json +++ b/data/json/itemgroups/books.json @@ -147,7 +147,8 @@ { "item": "textbook_biodiesel", "prob": 10 }, { "item": "manual_carpentry", "prob": 10 }, { "item": "book_icef", "prob": 8 }, - { "item": "carpentry_book", "prob": 5 } + { "item": "carpentry_book", "prob": 5 }, + { "item": "theater_props", "prob": 2 } ] }, { @@ -288,6 +289,7 @@ { "item": "cookbook_foodfashions", "prob": 10 }, { "item": "cookbook_indian", "prob": 10 }, { "item": "survnote", "prob": 1 }, + { "item": "theater_props", "prob": 1 }, { "item": "scots_cookbook", "prob": 8 }, { "item": "offalcooking", "prob": 2 }, { "item": "dnd_handbook", "prob": 2 }, @@ -336,7 +338,8 @@ { "item": "manual_canning", "prob": 18 }, { "item": "manual_sealing", "prob": 9 }, { "item": "fermenting_book", "prob": 8 }, - { "item": "distilling_cookbook", "prob": 8 } + { "item": "distilling_cookbook", "prob": 8 }, + { "item": "theater_props", "prob": 5 } ] }, { @@ -453,7 +456,8 @@ { "item": "fermenting_book", "prob": 8 }, { "item": "distilling_cookbook", "prob": 8 }, { "item": "textbook_arthropod", "prob": 5 }, - { "item": "textbook_botany", "prob": 5 } + { "item": "textbook_botany", "prob": 5 }, + { "item": "theater_props", "prob": 2 } ] }, { @@ -690,6 +694,27 @@ { "item": "textbook_tailor", "prob": 30 } ] }, + { + "id": "fabricationbooks", + "type": "item_group", + "subtype": "distribution", + "entries": [ + { "item": "mag_fabrication", "prob": 50 }, + { "item": "manual_fabrication", "prob": 35 }, + { "item": "textbook_fabrication", "prob": 15 } + ] + }, + { + "id": "carpentrybooks", + "type": "item_group", + "subtype": "distribution", + "entries": [ + { "item": "mag_carpentry", "prob": 35 }, + { "item": "101_carpentry", "prob": 30 }, + { "item": "textbook_carpentry", "prob": 20 }, + { "item": "carpentry_book", "prob": 5 } + ] + }, { "id": "magazines", "type": "item_group", diff --git a/data/json/itemgroups/defense_mode.json b/data/json/itemgroups/defense_mode.json index 08ebc50f2080d..2f63487032723 100644 --- a/data/json/itemgroups/defense_mode.json +++ b/data/json/itemgroups/defense_mode.json @@ -99,7 +99,7 @@ { "item": "energy_drink" }, { "item": "whiskey" }, { "item": "can_beans" }, - { "item": "mre_beef" }, + { "group": "MRE" }, { "item": "flour" }, { "item": "inhaler" }, { "item": "codeine" }, diff --git a/data/json/itemgroups/military.json b/data/json/itemgroups/military.json index ef8cf03b9927d..e1efa1a9a32c4 100644 --- a/data/json/itemgroups/military.json +++ b/data/json/itemgroups/military.json @@ -20,7 +20,10 @@ "type": "item_group", "id": "military_standard_shotguns", "subtype": "distribution", - "entries": [ { "item": "m1014", "prob": 60, "charges": [ 0, 8 ] }, { "item": "mossberg_590", "prob": 40, "charges": [ 0, 9 ] } ] + "entries": [ + { "item": "mossberg_930", "variant": "m1014", "prob": 60, "charges": [ 0, 8 ] }, + { "item": "mossberg_590", "prob": 40, "charges": [ 0, 9 ] } + ] }, { "type": "item_group", @@ -58,7 +61,7 @@ "id": "military_patrol_food", "subtype": "collection", "entries": [ - { "group": "MRE", "count": [ 1, 3 ], "prob": 70 }, + { "group": "any_MRE", "count": [ 1, 3 ], "prob": 70 }, { "item": "chocolate", "prob": 20, "charges": [ 1, 3 ] }, { "item": "neccowafers", "prob": 20 }, { "item": "water_clean", "container-item": "canteen", "prob": 80, "charges": [ 0, 6 ] } @@ -190,7 +193,7 @@ { "item": "p226_9mm", "prob": 1 }, { "item": "sp2022", "prob": 1 }, { "item": "nato_assault_rifle", "variant": "h&k416a5", "prob": 7 }, - { "item": "m1014", "prob": 2 }, + { "item": "mossberg_930", "variant": "m1014", "prob": 2 }, { "item": "nato_assault_rifle", "variant": "scar_l", "prob": 6 }, { "item": "scar_h", "prob": 5 }, { "item": "sig_mcx_rattler_sbr", "prob": 1 }, diff --git a/data/json/itemgroups/misc.json b/data/json/itemgroups/misc.json index 9865786c76101..8fc8708c8372b 100644 --- a/data/json/itemgroups/misc.json +++ b/data/json/itemgroups/misc.json @@ -149,9 +149,7 @@ { "item": "rollmat" }, { "item": "sleeping_bag_roll" }, { "item": "ear_plugs" }, - { "item": "mre_hashbrownbacon_box" }, - { "item": "mre_macaronimarinara_box" }, - { "item": "mre_meatball_box" }, + { "group": "MRE", "count": 3 }, { "item": "water_clean", "count": 2, "charges": 2, "container-item": "bottle_plastic", "sealed": false } ] }, diff --git a/data/json/itemgroups/roof.json b/data/json/itemgroups/roof.json index 3f316fb6b8d24..1ea3dc5e39cd6 100644 --- a/data/json/itemgroups/roof.json +++ b/data/json/itemgroups/roof.json @@ -5,11 +5,7 @@ "items": [ { "item": "grenade", "prob": 5 }, { "item": "binoculars", "prob": 5 }, - { "item": "mre_maplesausage_box", "prob": 5 }, - { "item": "mre_ravioli_box", "prob": 5 }, - { "item": "mre_hashbrownbacon_box", "prob": 0 }, - { "item": "mre_lemontuna_box", "prob": 5 }, - { "item": "mre_asianbeef_box", "prob": 5 }, + { "group": "any_MRE", "count": [ 1, 5 ] }, { "item": "ak47", "prob": 20, "charges": [ 0, 30 ] }, { "item": "akmag30", "prob": 20, "charges": [ 0, 30 ] }, { "item": "762_m43", "prob": 20, "charges": [ 1, 30 ] }, diff --git a/data/json/itemgroups/science_and_tech.json b/data/json/itemgroups/science_and_tech.json index dde4923bdacf4..2561b7e6b007a 100644 --- a/data/json/itemgroups/science_and_tech.json +++ b/data/json/itemgroups/science_and_tech.json @@ -49,6 +49,8 @@ [ "textbook_electronics", 6 ], [ "radio_book", 16 ], [ "advanced_electronics", 6 ], + [ "theater_props", 2 ], + [ "vac_mold", 2 ], [ "textbook_chemistry", 11 ], [ "adv_chemistry", 4 ], [ "textbook_firstaid", 6 ], diff --git a/data/json/itemgroups/shops_trades.json b/data/json/itemgroups/shops_trades.json index ae8ef36c38ddc..5a6f22bf0153a 100644 --- a/data/json/itemgroups/shops_trades.json +++ b/data/json/itemgroups/shops_trades.json @@ -7,6 +7,8 @@ [ "mag_fabrication", 5 ], [ "manual_fabrication", 5 ], [ "mag_survival", 10 ], + [ "theater_props", 2 ], + [ "vac_mold", 2 ], [ "wax", 30 ], [ "straw_pile", 15 ], [ "charcoal", 25 ], diff --git a/data/json/itemgroups/supplies.json b/data/json/itemgroups/supplies.json index 4b08ce7d840a5..c50135c7626b4 100644 --- a/data/json/itemgroups/supplies.json +++ b/data/json/itemgroups/supplies.json @@ -28,7 +28,9 @@ [ "jumper_cable", 15 ], [ "jumper_cable_heavy", 5 ], [ "recharge_station", 20 ], - [ "hand_crank_charger", 30 ] + [ "hand_crank_charger", 30 ], + [ "polycarbonate_sheet", 15 ], + [ "vac_mold", 3 ] ] }, { @@ -83,6 +85,7 @@ { "item": "sheet_metal", "prob": 10 }, { "item": "sheet_metal_small", "prob": 10 }, { "item": "plastic_sheet", "prob": 30, "count": [ 5, 15 ] }, + { "item": "polycarbonate_sheet", "prob": 20, "count": [ 3, 12 ] }, { "item": "rebar", "prob": 40, "count": [ 5, 10 ] }, { "item": "brick", "prob": 40, "count": [ 5, 10 ] }, { "item": "pipe", "prob": 40, "count": [ 5, 10 ] }, @@ -144,7 +147,7 @@ [ "jerrycan", 10 ], [ "pump_complex", 10 ], [ "well_pump", 10 ], - { "item": "scrap_copper", "prob": 15, "count": [ 1, 10 ] }, + { "item": "scrap_copper", "prob": 15, "count": [ 1, 12 ] }, { "item": "plunger_toilet", "prob": 90, "count": [ 1, 2 ] }, [ "plunger_futuristic", 50 ] ] @@ -196,6 +199,11 @@ [ "pine_bough", 3 ] ] }, + { + "type": "item_group", + "id": "supplies_woodcrafts", + "items": [ [ "superglue", 40 ], [ "sandpaper", 40 ], [ "screwdriver", 5 ], [ "chisel", 10 ], [ "hammer", 5 ] ] + }, { "id": "supplies_hardware", "type": "item_group", @@ -217,6 +225,8 @@ [ "box_large", 10 ], [ "plastic_sheet", 30 ], { "item": "pipe", "prob": 20, "count": [ 5, 10 ] }, + { "item": "polycarbonate_sheet", "prob": 10, "count": [ 1, 3 ] }, + [ "vac_mold", 3 ], { "item": "nail", "prob": 60, "count": [ 2, 4 ] }, [ "hose", 15 ], [ "string_36", 40 ], @@ -299,6 +309,7 @@ [ "oxygen_tank", 6 ], [ "nitrogen_tank", 7 ], [ "hydrogen_tank", 8 ], + { "item": "polycarbonate_sheet", "prob": 7, "count": [ 1, 30 ] }, [ "salt", 10 ], [ "sugar", 10 ], { "item": "chem_ethanol", "prob": 10, "charges-min": 250 }, @@ -358,7 +369,7 @@ { "item": "copper", "prob": 10, "count": [ 1, 5 ] }, { "item": "tin", "prob": 10, "count": [ 1, 5 ] }, { "item": "material_aluminium_ingot", "prob": 10, "count": [ 1, 5 ] }, - { "item": "scrap_copper", "prob": 5, "count": [ 1, 10 ] }, + { "item": "scrap_copper", "prob": 5, "count": [ 1, 12 ] }, { "item": "wire", "prob": 5 }, { "item": "scrap", "prob": 70, "count": [ 1, 10 ] } ] @@ -383,6 +394,8 @@ [ "hdframe", 10 ], [ "motor", 2 ], [ "wheel", 10 ], + { "item": "polycarbonate_sheet", "prob": 4, "count": [ 1, 3 ] }, + [ "vac_mold", 1 ], [ "wheel_wide", 10 ], [ "wheel_bicycle", 10 ], [ "wheel_motorbike", 10 ], diff --git a/data/json/itemgroups/tools.json b/data/json/itemgroups/tools.json index 7159755870b6b..d9dc27b428290 100644 --- a/data/json/itemgroups/tools.json +++ b/data/json/itemgroups/tools.json @@ -56,6 +56,7 @@ { "item": "misc_repairkit", "prob": 25, "charges-min": 0 }, [ "pliers", 60 ], [ "saw", 60 ], + { "item": "bow_saw", "prob": 50 }, [ "screwdriver", 100 ], [ "screwdriver_set", 50 ], [ "wrench", 40 ], @@ -110,6 +111,7 @@ [ "sandpaper", 65 ], [ "hacksaw", 30 ], [ "saw", 65 ], + { "item": "bow_saw", "prob": 40 }, [ "pin_reamer", 18 ], [ "clamp", 30 ], [ "boxcutter", 20 ], @@ -140,6 +142,7 @@ { "item": "dehydrator", "prob": 5, "charges": [ 0, 500 ] }, [ "tongs", 1 ], [ "tourist_table", 1 ], + [ "vac_mold", 2 ], [ "sandpaper", 50 ], [ "plastic_sheet", 50 ], [ "shovel_snow", 10 ], @@ -301,7 +304,8 @@ { "item": "polisher", "prob": 70, "charges": [ 0, 100 ] }, { "item": "angle_grinder", "prob": 5, "charges": [ 0, 500 ] }, { "item": "welder", "prob": 10, "charges": [ 0, 500 ] }, - [ "clamp", 10 ] + [ "clamp", 10 ], + [ "goggles_welding", 80 ] ] }, { @@ -617,6 +621,7 @@ { "item": "extinguisher", "prob": 10, "charges": 100 }, [ "magnifying_glass", 10 ], [ "multitool", 20 ], + [ "vac_mold", 2 ], [ "screwdriver_set", 20 ], { "item": "flashlight", "prob": 20, "charges": [ 0, 300 ] }, [ "mobile_memory_card_science", 40 ], @@ -640,6 +645,7 @@ [ "wrench", 50 ], [ "hammer", 40 ], [ "saw", 50 ], + { "item": "bow_saw", "prob": 40 }, [ "ax", 20 ], [ "hacksaw", 50 ], [ "chipper", 60 ], @@ -671,6 +677,7 @@ [ "ax", 100 ], { "item": "chainsaw_off", "prob": 80, "charges": [ 0, 400 ] }, [ "saw", 100 ], + { "item": "bow_saw", "prob": 80 }, { "item": "circsaw_off", "prob": 50, "charges": [ 0, 500 ] }, [ "circsaw_blade", 10 ], { "item": "elec_chainsaw_off", "prob": 35, "charges": [ 0, 500 ] } diff --git a/data/json/itemgroups/trash_and_debris.json b/data/json/itemgroups/trash_and_debris.json index 7525c74127128..a270b7bba7ba8 100644 --- a/data/json/itemgroups/trash_and_debris.json +++ b/data/json/itemgroups/trash_and_debris.json @@ -10,7 +10,7 @@ [ "frame", 20 ], [ "hdframe", 20 ], [ "cu_pipe", 25 ], - [ "scrap_copper", 50 ], + [ "scrap_copper", 62 ], [ "rock", 40 ], [ "survnote", 1 ] ] diff --git a/data/json/items/ammo.json b/data/json/items/ammo.json index 4a29bca1d172a..54f02cd749a28 100644 --- a/data/json/items/ammo.json +++ b/data/json/items/ammo.json @@ -298,8 +298,26 @@ "color": "dark_gray", "description": "Plastic jacketed copper cable of the type used in small electronics.", "material": [ "plastic", "copper" ], - "volume": "750 ml", - "weight": "2 g", + "//": "Calculated off of copper wire with an extra 0.5mm of diameter and 0.66g.", + "volume": "155 ml", + "weight": "5413 mg", + "ammo_type": "components", + "count": 200 + }, + { + "type": "AMMO", + "id": "copper_wire", + "category": "spare_parts", + "price": 2000, + "price_postapoc": 100, + "name": { "str": "raw copper wire" }, + "symbol": "=", + "color": "dark_gray", + "description": "Copper wire ready to be covered with plastic.", + "material": [ "copper" ], + "//": "Calculated off of 12 AWG, at 10cm length, using http://www.mtlexs.com/technical-specifications-details/40/weight-of-copper-wire.", + "volume": "110 ml", + "weight": "4747 mg", "ammo_type": "components", "count": 200 }, @@ -792,8 +810,9 @@ "color": "yellow", "description": "Copper bits. Could be used to craft something, for example makeshift shotgun shells.", "material": [ "copper" ], + "//": "80% of 8.63g/ml is 6.904g/ml.", "volume": "250 ml", - "weight": "2 g", + "weight": "8630 mg", "ammo_type": "components", "count": 200 }, diff --git a/data/json/items/armor/ammo_pouch.json b/data/json/items/armor/ammo_pouch.json index 6af7807031579..117b203e1f709 100644 --- a/data/json/items/armor/ammo_pouch.json +++ b/data/json/items/armor/ammo_pouch.json @@ -14,9 +14,6 @@ "symbol": "[", "looks_like": "leather_pouch", "color": "brown", - "covers": [ "torso" ], - "coverage": 10, - "encumbrance": 5, "material_thickness": 1, "pocket_data": [ { @@ -69,7 +66,8 @@ "moves": 35 } ], - "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 5, "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "ammo_satchel", @@ -84,9 +82,6 @@ "symbol": "[", "looks_like": "ragpouch", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 20, - "encumbrance": 4, "material_thickness": 2, "pocket_data": [ { @@ -99,7 +94,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Stash ammo", "holster_msg": "You stash your %s." }, - "flags": [ "WATER_FRIENDLY", "WAIST" ] + "flags": [ "WATER_FRIENDLY", "WAIST" ], + "armor": [ { "encumbrance": 4, "coverage": 20, "covers": [ "torso" ] } ] }, { "id": "chestpouch", @@ -114,8 +110,6 @@ "symbol": "[", "looks_like": "ragpouch", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 15, "material_thickness": 2, "pocket_data": [ { @@ -128,7 +122,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Stash ammo", "holster_msg": "You stash your %s." }, - "flags": [ "WATER_FRIENDLY", "BELTED" ] + "flags": [ "WATER_FRIENDLY", "BELTED" ], + "armor": [ { "coverage": 15, "covers": [ "torso" ] } ] }, { "id": "chestrig", @@ -143,8 +138,6 @@ "symbol": "[", "looks_like": "tool_belt", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 15, "material_thickness": 2, "pocket_data": [ { @@ -181,7 +174,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Stash ammo", "holster_msg": "You stash your %s." }, - "flags": [ "WATER_FRIENDLY", "BELTED" ] + "flags": [ "WATER_FRIENDLY", "BELTED" ], + "armor": [ { "coverage": 15, "covers": [ "torso" ] } ] }, { "id": "xl_chestrig", @@ -205,9 +199,6 @@ "symbol": "[", "looks_like": "quiver", "color": "brown", - "covers": [ "torso" ], - "coverage": 30, - "encumbrance": 10, "material_thickness": 4, "pocket_data": [ { @@ -257,7 +248,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Stash javelins", "holster_msg": "You stash your %s." }, - "flags": [ "WATER_FRIENDLY", "OVERSIZE", "BELTED" ] + "flags": [ "WATER_FRIENDLY", "OVERSIZE", "BELTED" ], + "armor": [ { "encumbrance": 10, "coverage": 30, "covers": [ "torso" ] } ] }, { "id": "legpouch", @@ -272,10 +264,7 @@ "symbol": "[", "looks_like": "ragpouch", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], "sided": true, - "coverage": 5, - "encumbrance": 1, "material_thickness": 2, "pocket_data": [ { @@ -288,7 +277,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Stash ammo", "holster_msg": "You stash your %s." }, - "flags": [ "WATER_FRIENDLY", "BELTED", "OVERSIZE", "ALLOWS_NATURAL_ATTACKS", "NOT_FOOTWEAR" ] + "flags": [ "WATER_FRIENDLY", "BELTED", "OVERSIZE", "ALLOWS_NATURAL_ATTACKS", "NOT_FOOTWEAR" ], + "armor": [ { "encumbrance": 1, "coverage": 5, "covers": [ "foot_l", "foot_r" ] } ] }, { "type": "ARMOR", @@ -303,9 +293,7 @@ "symbol": "[", "looks_like": "ammo_satchel", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], "sided": true, - "coverage": 15, "material_thickness": 2, "pocket_data": [ { @@ -326,7 +314,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Stash ammo", "holster_msg": "You stash your %s." }, - "flags": [ "WATER_FRIENDLY", "BELTED" ] + "flags": [ "WATER_FRIENDLY", "BELTED" ], + "armor": [ { "coverage": 15, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "quiver", @@ -342,13 +331,11 @@ "symbol": "[", "looks_like": "bscabbard", "color": "brown", - "covers": [ "leg_l", "leg_r" ], "sided": true, - "coverage": 10, - "encumbrance": 3, "material_thickness": 1, "pocket_data": [ { "ammo_restriction": { "arrow": 20, "bolt": 20 }, "moves": 20 } ], - "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 3, "coverage": 10, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "quiver_birchbark", @@ -364,13 +351,11 @@ "symbol": "[", "looks_like": "quiver", "color": "light_gray", - "covers": [ "leg_l", "leg_r" ], "sided": true, - "coverage": 10, - "encumbrance": 10, "material_thickness": 1, "pocket_data": [ { "ammo_restriction": { "arrow": 20, "bolt": 20 }, "moves": 20 } ], - "flags": [ "WAIST", "VARSIZE", "OVERSIZE", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "VARSIZE", "OVERSIZE", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 10, "coverage": 10, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "quiver_large", @@ -386,12 +371,10 @@ "symbol": "[", "looks_like": "quiver", "color": "brown", - "covers": [ "torso" ], - "coverage": 15, - "encumbrance": 3, "material_thickness": 1, "pocket_data": [ { "ammo_restriction": { "arrow": 60, "bolt": 60 }, "moves": 20 } ], - "flags": [ "BELTED", "OVERSIZE", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "OVERSIZE", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 3, "coverage": 15, "covers": [ "torso" ] } ] }, { "id": "quiver_large_birchbark", @@ -407,12 +390,10 @@ "symbol": "[", "looks_like": "quiver_birchbark", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 15, - "encumbrance": 14, "material_thickness": 1, "pocket_data": [ { "ammo_restriction": { "arrow": 60, "bolt": 60 }, "moves": 20 } ], - "flags": [ "BELTED", "VARSIZE", "OVERSIZE", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "VARSIZE", "OVERSIZE", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 14, "coverage": 15, "covers": [ "torso" ] } ] }, { "id": "tacvest", @@ -427,9 +408,6 @@ "material": [ "cotton" ], "symbol": "[", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 20, - "encumbrance": 2, "material_thickness": 2, "use_action": { "type": "holster", "holster_prompt": "Stash ammo", "holster_msg": "You stash your %s." }, "pocket_data": [ @@ -470,7 +448,8 @@ "moves": 60 } ], - "flags": [ "WATER_FRIENDLY", "WAIST" ] + "flags": [ "WATER_FRIENDLY", "WAIST" ], + "armor": [ { "encumbrance": 2, "coverage": 20, "covers": [ "torso" ] } ] }, { "id": "xl_tacvest", @@ -497,9 +476,6 @@ "material": [ "kevlar_layered" ], "symbol": "[", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 85, - "encumbrance": 17, "warmth": 15, "material_thickness": 4, "pocket_data": [ @@ -541,6 +517,7 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Stash ammo", "holster_msg": "You stash your %s." }, - "flags": [ "OVERSIZE", "STURDY", "OUTER" ] + "flags": [ "OVERSIZE", "STURDY", "OUTER" ], + "armor": [ { "encumbrance": 17, "coverage": 85, "covers": [ "torso" ] } ] } ] diff --git a/data/json/items/armor/arms_armor.json b/data/json/items/armor/arms_armor.json index 19abbbf64451e..ded8c45663e7f 100644 --- a/data/json/items/armor/arms_armor.json +++ b/data/json/items/armor/arms_armor.json @@ -15,13 +15,11 @@ "symbol": "[", "looks_like": "arm_splint", "color": "brown", - "covers": [ "arm_l", "arm_r" ], - "coverage": 75, - "encumbrance": 25, "warmth": 5, "material_thickness": 3, "techniques": [ "WBLOCK_1" ], - "flags": [ "BELTED", "WATER_FRIENDLY", "BLOCK_WHILE_WORN" ] + "flags": [ "BELTED", "WATER_FRIENDLY", "BLOCK_WHILE_WORN" ], + "armor": [ { "encumbrance": 25, "coverage": 75, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "armguard_chitin", @@ -38,13 +36,11 @@ "symbol": "[", "looks_like": "armguard_hard", "color": "green", - "covers": [ "arm_l", "arm_r" ], - "coverage": 90, - "encumbrance": 10, "warmth": 10, "material_thickness": 3, "environmental_protection": 2, - "flags": [ "STURDY", "BELTED", "BLOCK_WHILE_WORN", "WATER_FRIENDLY" ] + "flags": [ "STURDY", "BELTED", "BLOCK_WHILE_WORN", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 10, "coverage": 90, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "xl_armguard_chitin", @@ -93,13 +89,11 @@ "material": [ "plastic", "neoprene" ], "symbol": "[", "color": "dark_gray", - "covers": [ "arm_l", "arm_r" ], - "coverage": 80, - "encumbrance": 5, "warmth": 20, "material_thickness": 3, "environmental_protection": 1, - "flags": [ "BELTED", "WATER_FRIENDLY", "BLOCK_WHILE_WORN" ] + "flags": [ "BELTED", "WATER_FRIENDLY", "BLOCK_WHILE_WORN" ], + "armor": [ { "encumbrance": 5, "coverage": 80, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "xl_armguard_hard", @@ -126,13 +120,11 @@ "symbol": "[", "looks_like": "arm_warmers", "color": "brown", - "covers": [ "arm_l", "arm_r" ], - "coverage": 90, - "encumbrance": 10, "warmth": 25, "material_thickness": 4, "valid_mods": [ "steel_padded" ], - "flags": [ "STURDY", "BELTED", "BLOCK_WHILE_WORN", "WATER_FRIENDLY" ] + "flags": [ "STURDY", "BELTED", "BLOCK_WHILE_WORN", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 10, "coverage": 90, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "xl_armguard_larmor", @@ -159,12 +151,10 @@ "symbol": "[", "looks_like": "armguard_metal", "color": "light_gray", - "covers": [ "arm_l", "arm_r" ], - "coverage": 95, - "encumbrance": 20, "warmth": 20, "material_thickness": 4, - "flags": [ "VARSIZE", "BELTED", "STURDY", "BLOCK_WHILE_WORN" ] + "flags": [ "VARSIZE", "BELTED", "STURDY", "BLOCK_WHILE_WORN" ], + "armor": [ { "encumbrance": 20, "coverage": 95, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "xl_armguard_lightplate", @@ -191,13 +181,11 @@ "symbol": "[", "looks_like": "armguard_hard", "color": "light_gray", - "covers": [ "arm_l", "arm_r" ], - "coverage": 80, - "encumbrance": 15, "warmth": 20, "material_thickness": 3, "environmental_protection": 1, - "flags": [ "BELTED", "BLOCK_WHILE_WORN", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "BLOCK_WHILE_WORN", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 15, "coverage": 80, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "xl_armguard_metal", @@ -224,12 +212,10 @@ "symbol": "[", "looks_like": "armguard_larmor", "color": "blue", - "covers": [ "arm_l", "arm_r" ], - "coverage": 80, - "encumbrance": 10, "warmth": 5, "material_thickness": 3, - "flags": [ "BELTED", "BLOCK_WHILE_WORN" ] + "flags": [ "BELTED", "BLOCK_WHILE_WORN" ], + "armor": [ { "encumbrance": 10, "coverage": 80, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "armguard_scrap", @@ -248,12 +234,10 @@ "symbol": "[", "looks_like": "armguard_metal", "color": "light_gray", - "covers": [ "arm_l", "arm_r" ], - "coverage": 80, - "encumbrance": 18, "warmth": 10, "material_thickness": 2, - "flags": [ "BELTED", "BLOCK_WHILE_WORN" ] + "flags": [ "BELTED", "BLOCK_WHILE_WORN" ], + "armor": [ { "encumbrance": 18, "coverage": 80, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "xl_armguard_scrap", @@ -280,13 +264,11 @@ "symbol": "[", "looks_like": "arm_warmers", "color": "light_red", - "covers": [ "arm_l", "arm_r" ], - "coverage": 70, - "encumbrance": 5, "warmth": 20, "material_thickness": 2, "environmental_protection": 1, - "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ] + "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 5, "coverage": 70, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "xl_armguard_soft", @@ -313,11 +295,9 @@ "symbol": "[", "looks_like": "armguard_metal", "color": "light_red", - "covers": [ "arm_l", "arm_r" ], - "coverage": 95, - "encumbrance": 20, "material_thickness": 4, - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 95, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "xl_chainmail_arms", @@ -344,10 +324,9 @@ "symbol": "[", "looks_like": "armguard_hard", "color": "dark_gray", - "covers": [ "arm_l", "arm_r" ], - "coverage": 30, "material_thickness": 5, - "flags": [ "WATER_FRIENDLY", "BELTED" ] + "flags": [ "WATER_FRIENDLY", "BELTED" ], + "armor": [ { "coverage": 30, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "vambrace_larmor", @@ -364,13 +343,11 @@ "symbol": "[", "looks_like": "armguard_larmor", "color": "brown", - "covers": [ "arm_l", "arm_r" ], - "coverage": 50, - "encumbrance": 8, "warmth": 10, "material_thickness": 3, "environmental_protection": 1, - "flags": [ "STURDY", "BELTED", "WATER_FRIENDLY" ] + "flags": [ "STURDY", "BELTED", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 8, "coverage": 50, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "xl_vambrace_larmor", diff --git a/data/json/items/armor/ballistic_armor.json b/data/json/items/armor/ballistic_armor.json index 6903474bca130..d4056cb76224f 100644 --- a/data/json/items/armor/ballistic_armor.json +++ b/data/json/items/armor/ballistic_armor.json @@ -14,12 +14,10 @@ "symbol": "[", "looks_like": "modularvest", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 85, - "encumbrance": 6, "warmth": 15, "material_thickness": 6, - "flags": [ "STURDY", "OUTER", "WATER_FRIENDLY" ] + "flags": [ "STURDY", "OUTER", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 6, "coverage": 85, "covers": [ "torso" ] } ] }, { "id": "ballistic_vest_esapi", @@ -35,12 +33,10 @@ "symbol": "[", "looks_like": "modularvestceramic", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 85, - "encumbrance": 10, "warmth": 15, "material_thickness": 16, - "flags": [ "STURDY", "OUTER", "WATER_FRIENDLY", "NO_REPAIR" ] + "flags": [ "STURDY", "OUTER", "WATER_FRIENDLY", "NO_REPAIR" ], + "armor": [ { "encumbrance": 10, "coverage": 85, "covers": [ "torso" ] } ] }, { "id": "dragonskin", @@ -58,13 +54,11 @@ "symbol": "[", "looks_like": "kevlar", "color": "light_red", - "covers": [ "torso" ], - "coverage": 95, - "encumbrance": 8, "warmth": 12, "material_thickness": 3, "//": "Ceramic disks inside block addition of steel plating modification", - "flags": [ "STURDY", "OUTER", "NO_REPAIR" ] + "flags": [ "STURDY", "OUTER", "NO_REPAIR" ], + "armor": [ { "encumbrance": 8, "coverage": 95, "covers": [ "torso" ] } ] }, { "id": "dragonskinempty", @@ -83,11 +77,9 @@ "symbol": "[", "looks_like": "dragonskin", "color": "light_red", - "covers": [ "torso" ], - "coverage": 25, - "encumbrance": 6, "warmth": 10, "material_thickness": 2, - "flags": [ "STURDY", "OUTER" ] + "flags": [ "STURDY", "OUTER" ], + "armor": [ { "encumbrance": 6, "coverage": 25, "covers": [ "torso" ] } ] } ] diff --git a/data/json/items/armor/bandolier.json b/data/json/items/armor/bandolier.json index d20d91322a436..e345cd71c0952 100644 --- a/data/json/items/armor/bandolier.json +++ b/data/json/items/armor/bandolier.json @@ -12,9 +12,6 @@ "symbol": "[", "looks_like": "leather_belt", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 10, - "encumbrance": 1, "material_thickness": 1, "pocket_data": [ { @@ -42,7 +39,8 @@ "moves": 20 } ], - "flags": [ "WATER_FRIENDLY", "WAIST", "OVERSIZE" ] + "flags": [ "WATER_FRIENDLY", "WAIST", "OVERSIZE" ], + "armor": [ { "encumbrance": 1, "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "bandolier_rifle", @@ -57,9 +55,6 @@ "symbol": "[", "looks_like": "leather_belt", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 10, - "encumbrance": 1, "material_thickness": 1, "pocket_data": [ { @@ -83,7 +78,8 @@ "moves": 20 } ], - "flags": [ "WATER_FRIENDLY", "WAIST", "OVERSIZE" ] + "flags": [ "WATER_FRIENDLY", "WAIST", "OVERSIZE" ], + "armor": [ { "encumbrance": 1, "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "bandolier_shotgun", @@ -98,12 +94,10 @@ "symbol": "[", "looks_like": "leather_belt", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 10, - "encumbrance": 2, "material_thickness": 1, "pocket_data": [ { "ammo_restriction": { "410shot": 25, "shot": 25, "20x66mm": 25, "signal_flare": 25 }, "moves": 25 } ], - "flags": [ "WATER_FRIENDLY", "WAIST", "OVERSIZE" ] + "flags": [ "WATER_FRIENDLY", "WAIST", "OVERSIZE" ], + "armor": [ { "encumbrance": 2, "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "torso_bandolier_grenade", @@ -128,12 +122,10 @@ "symbol": "[", "looks_like": "leather_belt", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 12, - "encumbrance": 3, "material_thickness": 1, "pocket_data": [ { "ammo_restriction": { "410shot": 50, "shot": 50, "20x66mm": 50, "signal_flare": 50 }, "moves": 35 } ], - "flags": [ "WATER_FRIENDLY", "OVERSIZE", "BELTED" ] + "flags": [ "WATER_FRIENDLY", "OVERSIZE", "BELTED" ], + "armor": [ { "encumbrance": 3, "coverage": 12, "covers": [ "torso" ] } ] }, { "id": "flintlock_pouch", @@ -148,9 +140,6 @@ "symbol": "[", "looks_like": "ammo_pouch", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 10, - "encumbrance": 2, "material_thickness": 1, "pocket_data": [ { @@ -158,7 +147,8 @@ "moves": 20 } ], - "flags": [ "WATER_FRIENDLY", "WAIST", "OVERSIZE" ] + "flags": [ "WATER_FRIENDLY", "WAIST", "OVERSIZE" ], + "armor": [ { "encumbrance": 2, "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "bandolier_wrist", @@ -173,10 +163,7 @@ "symbol": "[", "looks_like": "leather_belt", "color": "dark_gray", - "covers": [ "hand_l", "hand_r" ], "sided": true, - "coverage": 5, - "encumbrance": 1, "material_thickness": 1, "pocket_data": [ { @@ -200,7 +187,8 @@ "moves": 20 } ], - "flags": [ "WATER_FRIENDLY", "BELTED", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "WATER_FRIENDLY", "BELTED", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 1, "coverage": 5, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "grenade_pouch", @@ -215,13 +203,11 @@ "symbol": "[", "looks_like": "ammo_satchel", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], "sided": true, - "coverage": 10, - "encumbrance": 4, "material_thickness": 1, "pocket_data": [ { "ammo_restriction": { "40x46mm": 4, "40x53mm": 4 }, "moves": 20 } ], - "flags": [ "WATER_FRIENDLY", "BELTED", "OVERSIZE" ] + "flags": [ "WATER_FRIENDLY", "BELTED", "OVERSIZE" ], + "armor": [ { "encumbrance": 4, "coverage": 10, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "stone_pouch", @@ -236,13 +222,11 @@ "symbol": "[", "looks_like": "ammo_satchel", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], "sided": true, - "coverage": 10, - "encumbrance": 4, "material_thickness": 1, "pocket_data": [ { "ammo_restriction": { "rock": 10 }, "moves": 20 } ], - "flags": [ "WATER_FRIENDLY", "BELTED", "OVERSIZE" ] + "flags": [ "WATER_FRIENDLY", "BELTED", "OVERSIZE" ], + "armor": [ { "encumbrance": 4, "coverage": 10, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "grenadebandolier", @@ -257,8 +241,6 @@ "symbol": "[", "looks_like": "leather_belt", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 15, "material_thickness": 2, "pocket_data": [ { @@ -291,6 +273,7 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Stash grenades", "holster_msg": "You stash your %s." }, - "flags": [ "WATER_FRIENDLY", "BELTED" ] + "flags": [ "WATER_FRIENDLY", "BELTED" ], + "armor": [ { "coverage": 15, "covers": [ "torso" ] } ] } ] diff --git a/data/json/items/armor/belts.json b/data/json/items/armor/belts.json index 053a52ff0c384..7352faadf4e79 100644 --- a/data/json/items/armor/belts.json +++ b/data/json/items/armor/belts.json @@ -13,10 +13,8 @@ "symbol": "[", "looks_like": "holster", "color": "yellow", - "covers": [ "torso" ], - "coverage": 5, - "encumbrance": 4, "pocket_data": [ + { "max_contains_volume": "1 L", "max_contains_weight": "1500 g", "moves": 100 }, { "max_contains_volume": "2 L", "max_contains_weight": "6 kg", @@ -27,7 +25,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Attach what to belt loop?", "holster_msg": "You clip your %s to your %s" }, - "flags": [ "WAIST", "NO_QUICKDRAW", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "NO_QUICKDRAW", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 2, 5 ], "coverage": 5, "covers": [ "torso" ] } ] }, { "abstract": "judo_belt_abstract", @@ -42,11 +41,9 @@ "to_hit": -1, "material": [ "cotton" ], "symbol": "[", - "covers": [ "torso" ], - "coverage": 5, - "encumbrance": 2, "material_thickness": 2, - "flags": [ "WAIST", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 2, "coverage": 5, "covers": [ "torso" ] } ] }, { "id": "judo_belt_black", @@ -117,8 +114,6 @@ "material": [ "leather", "steel" ], "symbol": "[", "color": "brown", - "covers": [ "torso" ], - "coverage": 5, "material_thickness": 1.5, "pocket_data": [ { @@ -131,7 +126,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Stick what into your belt", "holster_msg": "You tuck your %s into your %s" }, - "flags": [ "WAIST", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "WATER_FRIENDLY" ], + "armor": [ { "coverage": 5, "covers": [ "torso" ] } ] }, { "id": "obi_gi", @@ -161,10 +157,8 @@ "symbol": "[", "looks_like": "fireman_belt", "color": "brown", - "covers": [ "torso" ], - "coverage": 5, - "encumbrance": 6, "pocket_data": [ + { "max_contains_volume": "500 ml", "max_item_volume": "125 ml", "max_contains_weight": "1500 g", "moves": 100 }, { "holster": true, "max_contains_volume": "2250 ml", @@ -175,7 +169,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Attach what to holder?", "holster_msg": "You attach your %s to your %s." }, - "flags": [ "WAIST", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 2, 5 ], "coverage": 5, "covers": [ "torso" ] } ] }, { "id": "survivor_belt_notools", @@ -190,9 +185,6 @@ "symbol": "[", "looks_like": "holster", "color": "brown", - "covers": [ "torso" ], - "coverage": 15, - "encumbrance": 4, "material_thickness": 2, "pocket_data": [ { @@ -201,7 +193,7 @@ "max_contains_volume": "1 L", "max_contains_weight": "2 kg", "max_item_length": "70 cm", - "moves": 3, + "moves": 20, "flag_restriction": [ "SHEATH_KNIFE" ] }, { "max_contains_volume": "1 L", "max_contains_weight": "1500 g", "max_item_length": "40 cm", "moves": 100 }, @@ -226,7 +218,7 @@ { "holster": true, "min_item_volume": "50 ml", - "max_contains_volume": "1500 ml", + "max_contains_volume": "1 L", "max_contains_weight": "1500 g", "max_item_length": "70 cm", "moves": 50, @@ -235,7 +227,7 @@ { "holster": true, "min_item_volume": "50 ml", - "max_contains_volume": "1500 ml", + "max_contains_volume": "1 L", "max_contains_weight": "1500 g", "max_item_length": "70 cm", "moves": 50, @@ -244,7 +236,7 @@ { "holster": true, "min_item_volume": "50 ml", - "max_contains_volume": "1500 ml", + "max_contains_volume": "1 L", "max_contains_weight": "1500 g", "max_item_length": "70 cm", "moves": 50, @@ -252,7 +244,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Store tool or blade", "holster_msg": "You put your %1$s in your %2$s" }, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY", "WAIST", "OVERSIZE" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY", "WAIST", "OVERSIZE" ], + "armor": [ { "encumbrance": [ 2, 12 ], "coverage": 15, "covers": [ "torso" ] } ] }, { "id": "tool_belt", @@ -268,9 +261,6 @@ "symbol": "[", "looks_like": "holster", "color": "brown", - "covers": [ "torso" ], - "coverage": 20, - "encumbrance": 2, "material_thickness": 2, "pocket_data": [ { "max_contains_volume": "1 L", "max_contains_weight": "1500 g", "max_item_length": "40 cm", "moves": 100 }, @@ -295,7 +285,7 @@ { "holster": true, "min_item_volume": "50 ml", - "max_contains_volume": "1500 ml", + "max_contains_volume": "1 L", "max_contains_weight": "1500 g", "max_item_length": "70 cm", "moves": 50, @@ -304,7 +294,7 @@ { "holster": true, "min_item_volume": "50 ml", - "max_contains_volume": "1500 ml", + "max_contains_volume": "1 L", "max_contains_weight": "1500 g", "max_item_length": "70 cm", "moves": 50, @@ -313,7 +303,7 @@ { "holster": true, "min_item_volume": "50 ml", - "max_contains_volume": "1500 ml", + "max_contains_volume": "1 L", "max_contains_weight": "1500 g", "max_item_length": "70 cm", "moves": 50, @@ -321,7 +311,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Store tool or blade", "holster_msg": "You put your %1$s in your %2$s" }, - "flags": [ "WAIST", "NO_QUICKDRAW", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "NO_QUICKDRAW", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 2, 12 ], "coverage": 20, "covers": [ "torso" ] } ] }, { "id": "webbing_belt", @@ -336,7 +327,19 @@ "symbol": "[", "looks_like": "leather_belt", "color": "yellow", - "covers": [ "torso" ], - "flags": [ "WAIST", "WATER_FRIENDLY" ] + "material_thickness": 1.5, + "pocket_data": [ + { + "holster": true, + "max_contains_volume": "1500 ml", + "max_contains_weight": "1000 g", + "max_item_length": "70 cm", + "moves": 60, + "flag_restriction": [ "BELT_CLIP" ] + } + ], + "use_action": { "type": "holster", "holster_prompt": "Store tool or blade", "holster_msg": "You put your %1$s in your %2$s" }, + "flags": [ "WAIST", "WATER_FRIENDLY" ], + "armor": [ { "coverage": 5, "covers": [ "torso" ] } ] } ] diff --git a/data/json/items/armor/boots.json b/data/json/items/armor/boots.json index 416967eb95a5e..03e89e83795c2 100644 --- a/data/json/items/armor/boots.json +++ b/data/json/items/armor/boots.json @@ -13,11 +13,9 @@ "symbol": "[", "looks_like": "flip_flops", "color": "brown", - "covers": [ "foot_l", "foot_r" ], - "coverage": 40, - "encumbrance": 10, "material_thickness": 2, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 10, "coverage": 40, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "boots", @@ -34,13 +32,11 @@ "symbol": "[", "looks_like": "dress_shoes", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 90, - "encumbrance": 12, "warmth": 20, "material_thickness": 2.5, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATERPROOF" ] + "flags": [ "VARSIZE", "WATERPROOF" ], + "armor": [ { "encumbrance": 12, "coverage": 90, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "xl_boots", @@ -65,10 +61,9 @@ "symbol": "[", "looks_like": "boots", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "encumbrance": 16, "material_thickness": 3, - "flags": [ "VARSIZE", "WATERPROOF" ] + "flags": [ "VARSIZE", "WATERPROOF" ], + "armor": [ { "encumbrance": 16, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "boots_bunker", @@ -86,13 +81,11 @@ "symbol": "[", "looks_like": "boots_steel", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 40, "warmth": 35, "material_thickness": 4.5, "environmental_protection": 8, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 40, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "boots_chitin", @@ -110,13 +103,11 @@ "symbol": "[", "looks_like": "boots_bone", "color": "green", - "covers": [ "foot_l", "foot_r" ], - "coverage": 95, - "encumbrance": 14, "warmth": 10, "material_thickness": 4, "environmental_protection": 3, - "flags": [ "STURDY" ] + "flags": [ "STURDY" ], + "armor": [ { "encumbrance": 14, "coverage": 95, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "xl_boots_chitin", @@ -162,13 +153,11 @@ "symbol": "[", "looks_like": "boots", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 25, "warmth": 25, "material_thickness": 2.5, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 25, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "foot_protectors_eod", @@ -179,16 +168,14 @@ "weight": "1220 g", "volume": "3 L", "price": 50000, - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 40, "warmth": 10, "material": [ "steel", "nomex" ], "symbol": "[", "color": "light_gray", "environmental_protection": 2, "material_thickness": 7, - "flags": [ "STURDY", "OUTER" ] + "flags": [ "STURDY", "OUTER" ], + "armor": [ { "encumbrance": 40, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "toecaps", @@ -203,13 +190,11 @@ "material": [ "plastic", "steel" ], "symbol": "[", "color": "brown", - "covers": [ "foot_l", "foot_r" ], - "coverage": 15, - "encumbrance": 10, "warmth": 10, "material_thickness": 3, "environmental_protection": 1, - "flags": [ "OUTER", "STURDY" ] + "flags": [ "OUTER", "STURDY" ], + "armor": [ { "encumbrance": 10, "coverage": 15, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "boots_fsurvivor", @@ -227,13 +212,11 @@ "symbol": "[", "looks_like": "boots_combat", "color": "light_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 35, "warmth": 15, "material_thickness": 5, "environmental_protection": 10, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 35, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "xl_boots_fsurvivor", @@ -258,13 +241,11 @@ "symbol": "[", "looks_like": "boots", "color": "brown", - "covers": [ "foot_l", "foot_r" ], - "coverage": 90, - "encumbrance": 20, "warmth": 60, "material_thickness": 3, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATERPROOF" ] + "flags": [ "VARSIZE", "WATERPROOF" ], + "armor": [ { "encumbrance": 20, "coverage": 90, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "xl_boots_fur", @@ -314,13 +295,11 @@ "symbol": "[", "looks_like": "boots_bunker", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 32, "warmth": 15, "material_thickness": 3, "environmental_protection": 10, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY" ], + "armor": [ { "encumbrance": 32, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "boots_hiking", @@ -338,13 +317,11 @@ "symbol": "[", "looks_like": "boots", "color": "brown", - "covers": [ "foot_l", "foot_r" ], - "coverage": 95, - "encumbrance": 12, "warmth": 30, "material_thickness": 2, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATERPROOF" ] + "flags": [ "VARSIZE", "WATERPROOF" ], + "armor": [ { "encumbrance": 12, "coverage": 95, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "boots_hsurvivor", @@ -362,13 +339,11 @@ "symbol": "[", "looks_like": "boots_combat", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 35, "warmth": 15, "material_thickness": 5, "environmental_protection": 5, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 35, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "xl_boots_hsurvivor", @@ -394,13 +369,11 @@ "symbol": "[", "looks_like": "boots", "color": "brown", - "covers": [ "foot_l", "foot_r" ], - "coverage": 95, - "encumbrance": 18, "warmth": 25, "material_thickness": 5, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 18, "coverage": 95, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "xl_boots_larmor", @@ -426,13 +399,11 @@ "symbol": "[", "looks_like": "boots_combat", "color": "green", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 18, "warmth": 15, "material_thickness": 4, "environmental_protection": 3, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 18, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "xl_boots_lsurvivor", @@ -458,13 +429,11 @@ "symbol": "[", "looks_like": "boots_steel", "color": "light_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 28, "warmth": 20, "material_thickness": 4, "environmental_protection": 1, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 28, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "xl_boots_plate", @@ -489,13 +458,11 @@ "symbol": "[", "looks_like": "boots", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 30, "warmth": 10, "material_thickness": 3, "environmental_protection": 12, - "flags": [ "WATERPROOF" ] + "flags": [ "WATERPROOF" ], + "armor": [ { "encumbrance": 30, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "boots_scrap", @@ -513,12 +480,10 @@ "symbol": "[", "looks_like": "boots_steel", "color": "light_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 80, - "encumbrance": 20, "warmth": 10, "material_thickness": 2, - "flags": [ "VARSIZE", "WATERPROOF" ] + "flags": [ "VARSIZE", "WATERPROOF" ], + "armor": [ { "encumbrance": 20, "coverage": 80, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "xl_boots_scrap", @@ -545,13 +510,11 @@ "symbol": "[", "looks_like": "boots_combat", "color": "brown", - "covers": [ "foot_l", "foot_r" ], - "coverage": 90, - "encumbrance": 20, "warmth": 30, "material_thickness": 2.5, "environmental_protection": 3, - "flags": [ "VARSIZE", "WATERPROOF" ] + "flags": [ "VARSIZE", "WATERPROOF" ], + "armor": [ { "encumbrance": 20, "coverage": 90, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "boots_survivor", @@ -569,13 +532,11 @@ "symbol": "[", "looks_like": "boots_combat", "color": "brown", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 24, "warmth": 15, "material_thickness": 3.5, "environmental_protection": 3, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 24, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "boots_western", @@ -584,14 +545,14 @@ "name": { "str": "pair of western boots", "str_pl": "pairs of western boots" }, "description": "Stiff leather boots with intricate embroidery and one-inch heels. They look good, but aren't made for running. Each boot is large enough to conceal a small holdout pistol.", "price_postapoc": 750, - "coverage": 95, "proportional": { "weight": 1.2, "volume": 1.2, "price": 2, "encumbrance": 2 }, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "250 ml", "max_contains_weight": "600 g", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "250 ml", "max_contains_weight": "600 g", "moves": 80 } ], "use_action": { "type": "holster" }, - "extend": { "flags": [ "FANCY" ] } + "extend": { "flags": [ "FANCY" ] }, + "armor": [ { "encumbrance": 12, "coverage": 95, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "boots_winter", @@ -607,13 +568,11 @@ "symbol": "[", "looks_like": "boots_larmor", "color": "light_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 90, - "encumbrance": 25, "warmth": 80, "material_thickness": 5, "environmental_protection": 1, - "flags": [ "VARSIZE", "WATERPROOF" ] + "flags": [ "VARSIZE", "WATERPROOF" ], + "armor": [ { "encumbrance": 25, "coverage": 90, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "xl_boots_winter", @@ -639,13 +598,11 @@ "symbol": "[", "looks_like": "boots_fur", "color": "light_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 38, "warmth": 75, "material_thickness": 5, "environmental_protection": 5, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 38, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "xl_boots_wsurvivor", @@ -671,13 +628,11 @@ "symbol": "[", "looks_like": "boots_combat", "color": "brown", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 38, "warmth": 15, "material_thickness": 4, "environmental_protection": 3, - "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 38, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "cleats", @@ -694,12 +649,10 @@ "symbol": "[", "looks_like": "sneakers", "color": "light_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 80, - "encumbrance": 15, "warmth": 20, "material_thickness": 2, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 15, "coverage": 80, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "golf_shoes", @@ -716,12 +669,10 @@ "symbol": "[", "looks_like": "dress_shoes", "color": "light_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 70, - "encumbrance": 12, "warmth": 15, "material_thickness": 2, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 12, "coverage": 70, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "clogs", @@ -738,13 +689,11 @@ "symbol": "[", "looks_like": "leathersandals", "color": "yellow", - "covers": [ "foot_l", "foot_r" ], - "coverage": 85, - "encumbrance": 20, "warmth": 5, "material_thickness": 4, "environmental_protection": 1, - "flags": [ "VARSIZE", "WATERPROOF" ] + "flags": [ "VARSIZE", "WATERPROOF" ], + "armor": [ { "encumbrance": 20, "coverage": 85, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "clownshoes", @@ -762,12 +711,10 @@ "symbol": "[", "looks_like": "sneakers", "color": "light_red", - "covers": [ "foot_l", "foot_r" ], - "coverage": 85, - "encumbrance": 60, "warmth": 20, "material_thickness": 2.5, - "environmental_protection": 2 + "environmental_protection": 2, + "armor": [ { "encumbrance": 60, "coverage": 85, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "dance_shoes", @@ -784,12 +731,10 @@ "symbol": "[", "looks_like": "dress_shoes", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 60, - "encumbrance": 5, "warmth": 10, "material_thickness": 1.5, - "flags": [ "VARSIZE", "FANCY" ] + "flags": [ "VARSIZE", "FANCY" ], + "armor": [ { "encumbrance": 5, "coverage": 60, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "dress_shoes", @@ -807,12 +752,10 @@ "symbol": "[", "looks_like": "sneakers", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 60, - "encumbrance": 15, "warmth": 10, "material_thickness": 2.0, - "flags": [ "VARSIZE", "FANCY" ] + "flags": [ "VARSIZE", "FANCY" ], + "armor": [ { "encumbrance": 15, "coverage": 60, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "flip_flops", @@ -828,11 +771,9 @@ "symbol": "[", "looks_like": "sneakers", "color": "blue", - "covers": [ "foot_l", "foot_r" ], - "coverage": 10, - "encumbrance": 35, "material_thickness": 1, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 35, "coverage": 10, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "flip_flops_exp", @@ -849,12 +790,10 @@ "symbol": "[", "looks_like": "flip_flops", "color": "brown", - "covers": [ "foot_l", "foot_r" ], - "coverage": 12, - "encumbrance": 30, "material_thickness": 1, "environmental_protection": 1, - "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 30, "coverage": 12, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "footrags", @@ -869,12 +808,10 @@ "symbol": "[", "looks_like": "socks", "color": "brown", - "covers": [ "foot_l", "foot_r" ], - "coverage": 65, - "encumbrance": 2, "warmth": 5, "material_thickness": 1.5, - "flags": [ "SKINTIGHT", "OVERSIZE", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "SKINTIGHT", "OVERSIZE", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 2, "coverage": 65, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "footrags_fur", @@ -889,12 +826,10 @@ "symbol": "[", "looks_like": "socks_wool", "color": "brown", - "covers": [ "foot_l", "foot_r" ], - "coverage": 65, - "encumbrance": 5, "warmth": 20, "material_thickness": 1.5, - "flags": [ "OVERSIZE", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "OVERSIZE", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 5, "coverage": 65, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "footrags_leather", @@ -909,12 +844,10 @@ "symbol": "[", "looks_like": "socks", "color": "brown", - "covers": [ "foot_l", "foot_r" ], - "coverage": 65, - "encumbrance": 5, "warmth": 10, "material_thickness": 1.5, - "flags": [ "OVERSIZE", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "OVERSIZE", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 5, "coverage": 65, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "footrags_wool", @@ -929,12 +862,10 @@ "symbol": "[", "looks_like": "socks_wool", "color": "blue", - "covers": [ "foot_l", "foot_r" ], - "coverage": 65, - "encumbrance": 5, "warmth": 15, "material_thickness": 1.5, - "flags": [ "SKINTIGHT", "OVERSIZE", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "SKINTIGHT", "OVERSIZE", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 5, "coverage": 65, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "geta", @@ -951,13 +882,11 @@ "symbol": "[", "looks_like": "clogs", "color": "yellow", - "covers": [ "foot_l", "foot_r" ], - "coverage": 10, - "encumbrance": 10, "warmth": 5, "material_thickness": 2, "environmental_protection": 1, - "flags": [ "VARSIZE", "WATERPROOF" ] + "flags": [ "VARSIZE", "WATERPROOF" ], + "armor": [ { "encumbrance": 10, "coverage": 10, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "heels", @@ -975,11 +904,9 @@ "symbol": "[", "looks_like": "dress_shoes", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 30, - "encumbrance": 50, "material_thickness": 1.5, - "flags": [ "VARSIZE", "FANCY" ] + "flags": [ "VARSIZE", "FANCY" ], + "armor": [ { "encumbrance": 50, "coverage": 30, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "knee_high_boots", @@ -997,13 +924,11 @@ "symbol": "[", "looks_like": "boots_larmor", "color": "dark_gray", - "covers": [ "foot_l", "foot_r", "leg_r", "leg_l" ], - "coverage": 65, - "encumbrance": 20, "warmth": 20, "material_thickness": 2, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATERPROOF" ] + "flags": [ "VARSIZE", "WATERPROOF" ], + "armor": [ { "encumbrance": 20, "coverage": 65, "covers": [ "foot_l", "foot_r", "leg_r", "leg_l" ] } ] }, { "id": "leathersandals", @@ -1019,11 +944,9 @@ "symbol": "[", "looks_like": "flip_flops", "color": "brown", - "covers": [ "foot_l", "foot_r" ], - "coverage": 30, - "encumbrance": 5, "material_thickness": 1.5, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 5, "coverage": 30, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "lowtops", @@ -1040,11 +963,10 @@ "symbol": "[", "looks_like": "sneakers", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 80, "warmth": 5, "material_thickness": 1.5, - "flags": [ "VARSIZE", "WATER_FRIENDLY" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY" ], + "armor": [ { "coverage": 80, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "mocassins", @@ -1059,12 +981,10 @@ "symbol": "[", "looks_like": "leathersandals", "color": "brown", - "covers": [ "foot_l", "foot_r" ], - "coverage": 50, - "encumbrance": 2, "warmth": 20, "material_thickness": 1.0, - "flags": [ "VARSIZE", "WATERPROOF" ] + "flags": [ "VARSIZE", "WATERPROOF" ], + "armor": [ { "encumbrance": 2, "coverage": 50, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "motorbike_boots", @@ -1081,13 +1001,11 @@ "symbol": "[", "looks_like": "boots_steel", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 95, - "encumbrance": 30, "warmth": 35, "material_thickness": 2.5, "environmental_protection": 3, - "flags": [ "VARSIZE", "WATERPROOF" ] + "flags": [ "VARSIZE", "WATERPROOF" ], + "armor": [ { "encumbrance": 30, "coverage": 95, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "roller_blades", @@ -1104,13 +1022,11 @@ "symbol": "[", "looks_like": "rollerskates", "color": "light_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 25, "warmth": 20, "material_thickness": 3, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATERPROOF", "ROLLER_INLINE", "REQUIRES_BALANCE" ] + "flags": [ "VARSIZE", "WATERPROOF", "ROLLER_INLINE", "REQUIRES_BALANCE" ], + "armor": [ { "encumbrance": 25, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "rollerskates", @@ -1128,13 +1044,11 @@ "symbol": "[", "looks_like": "roller_blades", "color": "brown", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 25, "warmth": 30, "material_thickness": 3, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATERPROOF", "ROLLER_QUAD", "REQUIRES_BALANCE" ] + "flags": [ "VARSIZE", "WATERPROOF", "ROLLER_QUAD", "REQUIRES_BALANCE" ], + "armor": [ { "encumbrance": 25, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "shoes_birchbark", @@ -1149,12 +1063,10 @@ "symbol": "[", "looks_like": "clogs", "color": "light_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 50, - "encumbrance": 15, "warmth": 10, "material_thickness": 1.0, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 15, "coverage": 50, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "shoes_bowling", @@ -1170,12 +1082,10 @@ "symbol": "[", "looks_like": "dress_shoes", "color": "light_blue", - "covers": [ "foot_l", "foot_r" ], - "coverage": 80, - "encumbrance": 10, "warmth": 20, "material_thickness": 2, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 10, "coverage": 80, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "slippers", @@ -1192,12 +1102,10 @@ "symbol": "[", "looks_like": "socks_wool", "color": "brown", - "covers": [ "foot_l", "foot_r" ], - "coverage": 30, - "encumbrance": 30, "warmth": 25, "material_thickness": 0.5, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 30, "coverage": 30, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "sneakers", @@ -1213,12 +1121,10 @@ "symbol": "[", "looks_like": "shoes_bowling", "color": "light_blue", - "covers": [ "foot_l", "foot_r" ], - "coverage": 80, - "encumbrance": 4, "warmth": 20, "material_thickness": 1, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 4, "coverage": 80, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "straw_sandals", @@ -1234,11 +1140,9 @@ "symbol": "[", "looks_like": "leathersandals", "color": "light_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 30, - "encumbrance": 14, "material_thickness": 1, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 14, "coverage": 30, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "swim_fins", @@ -1253,12 +1157,10 @@ "symbol": "[", "looks_like": "clownshoes", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 85, - "encumbrance": 25, "warmth": 5, "material_thickness": 2.5, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "FIN" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "FIN" ], + "armor": [ { "encumbrance": 25, "coverage": 85, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "thigh_high_boots", @@ -1276,13 +1178,11 @@ "symbol": "[", "looks_like": "boots_larmor", "color": "dark_gray", - "covers": [ "foot_l", "foot_r", "leg_r", "leg_l" ], - "coverage": 80, - "encumbrance": 25, "warmth": 20, "material_thickness": 2, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATERPROOF" ] + "flags": [ "VARSIZE", "WATERPROOF" ], + "armor": [ { "encumbrance": 25, "coverage": 80, "covers": [ "foot_l", "foot_r", "leg_r", "leg_l" ] } ] }, { "id": "wetsuit_booties", @@ -1297,13 +1197,11 @@ "symbol": "[", "looks_like": "boots_rubber", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 15, "warmth": 30, "material_thickness": 2, "environmental_protection": 1, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ], + "armor": [ { "encumbrance": 15, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "roller_shoes_off", @@ -1319,13 +1217,11 @@ "symbol": "[", "looks_like": "sneakers", "color": "light_blue", - "covers": [ "foot_l", "foot_r" ], - "coverage": 80, - "encumbrance": 4, "warmth": 20, "material_thickness": 2, "use_action": { "type": "transform", "target": "roller_shoes_on", "msg": "You pop the wheels out.", "moves": 500 }, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 4, "coverage": 80, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "roller_shoes_on", @@ -1340,13 +1236,11 @@ "symbol": "[", "looks_like": "sneakers", "color": "light_blue", - "covers": [ "foot_l", "foot_r" ], - "coverage": 80, - "encumbrance": 4, "warmth": 20, "material_thickness": 2, "use_action": { "type": "transform", "target": "roller_shoes_off", "msg": "You pop the wheels back in.", "moves": 500 }, - "flags": [ "VARSIZE", "ROLLER_ONE", "REQUIRES_BALANCE" ] + "flags": [ "VARSIZE", "ROLLER_ONE", "REQUIRES_BALANCE" ], + "armor": [ { "encumbrance": 4, "coverage": 80, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "chainmail_feet", @@ -1362,11 +1256,9 @@ "material": [ "iron", "cotton" ], "symbol": "[", "color": "light_red", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 20, "material_thickness": 4, - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "xl_chainmail_feet", @@ -1389,12 +1281,10 @@ "symbol": "[", "looks_like": "leg_warmers_xl", "color": "light_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 60, - "encumbrance": 7, "warmth": 40, "material_thickness": 2, - "flags": [ "VARSIZE", "OVERSIZE" ] + "flags": [ "VARSIZE", "OVERSIZE" ], + "armor": [ { "encumbrance": 7, "coverage": 60, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "nomex_socks", @@ -1410,13 +1300,11 @@ "symbol": "[", "looks_like": "socks", "color": "light_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 6, "warmth": 5, "material_thickness": 1, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT", "STURDY" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT", "STURDY" ], + "armor": [ { "encumbrance": 6, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "xlnomex_socks", @@ -1441,11 +1329,10 @@ "symbol": "[", "looks_like": "socks_wool", "color": "white", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, "warmth": 5, "material_thickness": 0.2, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "xlsocks", @@ -1470,10 +1357,9 @@ "symbol": "[", "looks_like": "socks", "color": "light_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 80, "material_thickness": 0.3, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 80, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "socks_bag", @@ -1488,11 +1374,9 @@ "symbol": "[", "looks_like": "socks", "color": "light_blue", - "covers": [ "foot_l", "foot_r" ], - "coverage": 70, - "encumbrance": 3, "material_thickness": 0.01, - "flags": [ "WATERPROOF", "OVERSIZE" ] + "flags": [ "WATERPROOF", "OVERSIZE" ], + "armor": [ { "encumbrance": 3, "coverage": 70, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "socks_bowling", @@ -1508,10 +1392,9 @@ "symbol": "[", "looks_like": "socks", "color": "white", - "covers": [ "foot_l", "foot_r" ], - "coverage": 80, "warmth": 2, - "flags": [ "SKINTIGHT" ] + "flags": [ "SKINTIGHT" ], + "armor": [ { "coverage": 80, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "socks_wool", @@ -1526,12 +1409,10 @@ "symbol": "[", "looks_like": "socks", "color": "blue", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 5, "warmth": 30, "material_thickness": 0.3, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "encumbrance": 5, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "xlsocks_wool", @@ -1556,12 +1437,10 @@ "symbol": "[", "looks_like": "leg_warmers", "color": "dark_gray", - "covers": [ "foot_l", "foot_r", "leg_r", "leg_l" ], - "coverage": 75, - "encumbrance": 5, "warmth": 10, "material_thickness": 0.1, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "encumbrance": 5, "coverage": 75, "covers": [ "foot_l", "foot_r", "leg_r", "leg_l" ] } ] }, { "id": "stockings_tent_legs", @@ -1576,12 +1455,10 @@ "symbol": "[", "looks_like": "leg_warmers", "color": "dark_gray", - "covers": [ "foot_l", "foot_r", "leg_r", "leg_l" ], - "coverage": 75, - "encumbrance": 10, "warmth": 10, "material_thickness": 0.1, - "flags": [ "VARSIZE", "SKINTIGHT", "OVERSIZE" ] + "flags": [ "VARSIZE", "SKINTIGHT", "OVERSIZE" ], + "armor": [ { "encumbrance": 10, "coverage": 75, "covers": [ "foot_l", "foot_r", "leg_r", "leg_l" ] } ] }, { "id": "tabi_dress", @@ -1596,11 +1473,10 @@ "symbol": "[", "looks_like": "socks", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, "warmth": 5, "material_thickness": 0.2, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "tabi_gi", @@ -1616,10 +1492,9 @@ "symbol": "[", "looks_like": "socks", "color": "white", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, "warmth": 5, "material_thickness": 0.2, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] } ] diff --git a/data/json/items/armor/cloaks.json b/data/json/items/armor/cloaks.json index 858f6cda17596..c7ca30a355133 100644 --- a/data/json/items/armor/cloaks.json +++ b/data/json/items/armor/cloaks.json @@ -14,13 +14,17 @@ "symbol": "[", "looks_like": "towel", "color": "light_red", - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 60, - "encumbrance": 50, "warmth": 20, "material_thickness": 0.3, "environmental_protection": 1, - "flags": [ "OVERSIZE", "OUTER", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "OVERSIZE", "OUTER", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ + { + "encumbrance": 50, + "coverage": 60, + "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "cape_fp", @@ -37,12 +41,10 @@ "symbol": "]", "looks_like": "cloak", "color": "pink", - "covers": [ "torso" ], - "coverage": 50, - "encumbrance": 4, "warmth": 10, "material_thickness": 0.3, - "flags": [ "OVERSIZE", "BELTED" ] + "flags": [ "OVERSIZE", "BELTED" ], + "armor": [ { "encumbrance": 4, "coverage": 50, "covers": [ "torso" ] } ] }, { "id": "cloak", @@ -58,13 +60,11 @@ "symbol": "[", "looks_like": "coat_rain", "color": "green", - "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "coverage": 65, - "encumbrance": 4, "warmth": 30, "material_thickness": 0.4, "environmental_protection": 3, - "flags": [ "OVERSIZE", "HOOD", "OUTER" ] + "flags": [ "OVERSIZE", "HOOD", "OUTER" ], + "armor": [ { "encumbrance": 4, "coverage": 65, "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] }, { "id": "cloak_fur", @@ -80,13 +80,11 @@ "symbol": "[", "looks_like": "cloak_leather", "color": "brown", - "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "coverage": 65, - "encumbrance": 6, "warmth": 60, "material_thickness": 0.6, "environmental_protection": 3, - "flags": [ "OVERSIZE", "HOOD", "OUTER", "WATERPROOF", "RAINPROOF" ] + "flags": [ "OVERSIZE", "HOOD", "OUTER", "WATERPROOF", "RAINPROOF" ], + "armor": [ { "encumbrance": 6, "coverage": 65, "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] }, { "id": "cloak_leather", @@ -102,13 +100,11 @@ "symbol": "[", "looks_like": "cloak", "color": "dark_gray", - "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "coverage": 65, - "encumbrance": 6, "warmth": 40, "material_thickness": 1.5, "environmental_protection": 3, - "flags": [ "OVERSIZE", "HOOD", "OUTER", "WATERPROOF", "RAINPROOF" ] + "flags": [ "OVERSIZE", "HOOD", "OUTER", "WATERPROOF", "RAINPROOF" ], + "armor": [ { "encumbrance": 6, "coverage": 65, "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] }, { "id": "cloak_wool", @@ -124,13 +120,11 @@ "symbol": "[", "looks_like": "cloak", "color": "blue", - "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "coverage": 65, - "encumbrance": 5, "warmth": 50, "material_thickness": 0.5, "environmental_protection": 3, - "flags": [ "OVERSIZE", "HOOD", "OUTER" ] + "flags": [ "OVERSIZE", "HOOD", "OUTER" ], + "armor": [ { "encumbrance": 5, "coverage": 65, "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] }, { "id": "jedi_cloak", @@ -147,13 +141,17 @@ "symbol": "[", "looks_like": "robe", "color": "brown", - "covers": [ "leg_r", "leg_l", "torso", "arm_l", "arm_r", "head", "hand_l", "hand_r" ], - "coverage": 65, - "encumbrance": 3, "warmth": 50, "material_thickness": 0.3, "environmental_protection": 5, - "flags": [ "OVERSIZE", "OUTER", "HELMET_COMPAT" ] + "flags": [ "OVERSIZE", "OUTER", "HELMET_COMPAT" ], + "armor": [ + { + "encumbrance": 3, + "coverage": 65, + "covers": [ "leg_r", "leg_l", "torso", "arm_l", "arm_r", "head", "hand_l", "hand_r" ] + } + ] }, { "id": "optical_cloak", @@ -169,9 +167,6 @@ "symbol": "[", "looks_like": "cloak", "color": "light_gray", - "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "coverage": 65, - "encumbrance": 50, "warmth": 10, "material_thickness": 0.5, "environmental_protection": 4, @@ -184,7 +179,8 @@ "need_charges": 20, "need_charges_msg": "You don't have enough UPS charges to turn on the %s" }, - "flags": [ "USE_UPS", "OVERSIZE", "HOOD", "WATERPROOF", "OUTER", "VARSIZE" ] + "flags": [ "USE_UPS", "OVERSIZE", "HOOD", "WATERPROOF", "OUTER", "VARSIZE" ], + "armor": [ { "encumbrance": 50, "coverage": 65, "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] }, { "id": "optical_cloak_on", @@ -202,8 +198,7 @@ "menu_text": "Turn off", "msg": "The %s flickers for a moment as it becomes opaque.", "target": "optical_cloak" - }, - "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ] + } }, { "id": "poncho", @@ -219,13 +214,11 @@ "symbol": "[", "looks_like": "cloak", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 85, - "encumbrance": 5, "warmth": 35, "material_thickness": 1, "environmental_protection": 1, - "flags": [ "VARSIZE", "OUTER" ] + "flags": [ "VARSIZE", "OUTER" ], + "armor": [ { "encumbrance": 5, "coverage": 85, "covers": [ "torso" ] } ] }, { "id": "snuggie", @@ -241,12 +234,10 @@ "symbol": "[", "looks_like": "blanket", "color": "light_red", - "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "coverage": 85, - "encumbrance": 20, "warmth": 50, "material_thickness": 2, "environmental_protection": 1, - "flags": [ "OVERSIZE", "OUTER" ] + "flags": [ "OVERSIZE", "OUTER" ], + "armor": [ { "encumbrance": 20, "coverage": 85, "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] } ] diff --git a/data/json/items/armor/coats.json b/data/json/items/armor/coats.json index 2de782c9b6f22..5684cb22222a1 100644 --- a/data/json/items/armor/coats.json +++ b/data/json/items/armor/coats.json @@ -1,7 +1,7 @@ [ { "id": "bunker_coat", - "repairs_like": "aep_suit", + "repairs_like": "fsurvivor_suit", "type": "ARMOR", "category": "armor", "name": { "str": "turnout coat" }, @@ -15,7 +15,7 @@ "symbol": "[", "looks_like": "coat_winter", "color": "yellow", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": [ 22, 26 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": [ 22, 22 ] } ], @@ -63,12 +63,10 @@ "symbol": "[", "looks_like": "robe", "color": "dark_gray", - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ], - "coverage": 90, - "encumbrance": 10, "warmth": 20, "material_thickness": 1, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 10, "coverage": 90, "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ] } ] }, { "id": "coat_fur", @@ -84,7 +82,7 @@ "symbol": "[", "looks_like": "coat_winter", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 26, 30 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 26, 26 ] } ], @@ -153,7 +151,7 @@ "symbol": "[", "looks_like": "coat_fur", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 30, 35 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 30, 30 ] } ], @@ -194,7 +192,7 @@ "symbol": "[", "looks_like": "coat_winter", "color": "white", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 2, 5 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 2, 2 ] } ], @@ -238,7 +236,7 @@ "symbol": "[", "looks_like": "coat_winter", "color": "yellow", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 7, 15 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 7, 7 ] } ], @@ -276,7 +274,7 @@ "symbol": "[", "looks_like": "coat_winter", "color": "yellow", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": 12 }, { "covers": [ "arm_l", "arm_r" ], "coverage": 40, "encumbrance": 2 }, { "covers": [ "leg_l", "leg_r" ], "coverage": 50, "encumbrance": 0 } @@ -298,13 +296,11 @@ "symbol": "[", "looks_like": "coat_rain", "color": "light_gray", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 95, - "encumbrance": 12, "warmth": 10, "material_thickness": 0.2, "environmental_protection": 3, - "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "HOOD", "OUTER" ] + "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "HOOD", "OUTER" ], + "armor": [ { "encumbrance": 12, "coverage": 95, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "coat_winter", @@ -321,7 +317,7 @@ "symbol": "[", "looks_like": "coat_rain", "color": "light_red", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 18, 27 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 18, 21 ] } ], @@ -375,7 +371,7 @@ "symbol": "[", "looks_like": "trenchcoat", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 7, 13 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 90, "encumbrance": [ 7, 9 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 7, 7 ] } @@ -443,7 +439,7 @@ "symbol": "[", "looks_like": "duster_leather", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 9, 16 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 90, "encumbrance": [ 9, 11 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 9, 9 ] } @@ -547,7 +543,7 @@ "symbol": "[", "looks_like": "duster", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 8, 15 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 90, "encumbrance": [ 8, 10 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 8, 8 ] } @@ -625,7 +621,7 @@ "symbol": "[", "looks_like": "duster_leather", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 85, "encumbrance": [ 7, 13 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 85, "encumbrance": [ 7, 9 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 85, "encumbrance": [ 7, 7 ] } @@ -702,7 +698,7 @@ "symbol": "[", "looks_like": "coat_winter", "color": "blue", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 11, 20 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 95, "encumbrance": [ 11, 13 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 11, 11 ] } @@ -757,12 +753,10 @@ "symbol": "[", "looks_like": "skirt", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 100, - "encumbrance": 6, "warmth": 10, "material_thickness": 0.3, - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": 6, "coverage": 100, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "hakama", @@ -777,12 +771,10 @@ "symbol": "[", "looks_like": "skirt", "color": "blue", - "covers": [ "leg_l", "leg_r" ], - "coverage": 100, - "encumbrance": 10, "warmth": 15, "material_thickness": 0.3, - "flags": [ "VARSIZE", "OUTER" ] + "flags": [ "VARSIZE", "OUTER" ], + "armor": [ { "encumbrance": 10, "coverage": 100, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "house_coat", @@ -798,7 +790,7 @@ "symbol": "[", "looks_like": "coat_lab", "color": "blue", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 85, "encumbrance": [ 5, 10 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 85, "encumbrance": [ 5, 5 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 85, "encumbrance": [ 5, 5 ] } @@ -838,7 +830,7 @@ "symbol": "[", "looks_like": "coat_winter", "color": "green", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 7, 15 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 7, 9 ] } ], @@ -905,7 +897,7 @@ "symbol": "[", "looks_like": "coat_lab", "color": "white", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 8, 13 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 8, 8 ] } ], @@ -936,7 +928,7 @@ "symbol": "[", "looks_like": "jacket_leather", "color": "cyan", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 13, 15 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 13, 13 ] } ], @@ -974,7 +966,7 @@ "symbol": "[", "looks_like": "coat_winter", "color": "light_red", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 9, 13 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 9, 9 ] } ], @@ -1012,7 +1004,7 @@ "symbol": "[", "looks_like": "jacket_windbreaker", "color": "light_blue", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 9, 11 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 9, 9 ] } ], @@ -1056,7 +1048,7 @@ "symbol": "[", "looks_like": "jacket_windbreaker", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 10, 15 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 10, 10 ] } ], @@ -1097,7 +1089,7 @@ "looks_like": "jacket_leather", "repairs_like": "jacket_leather", "color": "red", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 15, 20 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 15, 15 ] } ], @@ -1137,7 +1129,7 @@ "symbol": "[", "looks_like": "jacket_windbreaker", "color": "blue", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 4, 8 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 4, 4 ] } ], @@ -1175,7 +1167,7 @@ "symbol": "[", "looks_like": "jacket_light", "color": "cyan", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 6, 9 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 6, 7 ] } ], @@ -1221,12 +1213,10 @@ "symbol": "[", "looks_like": "robe", "color": "white", - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ], - "coverage": 95, - "encumbrance": 10, "warmth": 10, "material_thickness": 0.5, - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": 10, "coverage": 95, "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ] } ] }, { "id": "karate_gi", @@ -1242,11 +1232,10 @@ "symbol": "[", "looks_like": "judo_gi", "color": "white", - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ], - "coverage": 80, "warmth": 5, "material_thickness": 0.5, - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "coverage": 80, "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ] } ] }, { "id": "kariginu", @@ -1263,12 +1252,10 @@ "symbol": "[", "looks_like": "robe", "color": "white", - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ], - "coverage": 100, - "encumbrance": 17, "warmth": 23, "material_thickness": 0.5, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 17, "coverage": 100, "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ] } ] }, { "id": "kasaya", @@ -1285,12 +1272,10 @@ "symbol": "[", "looks_like": "kimono", "color": "brown", - "covers": [ "leg_l", "leg_r", "torso" ], - "coverage": 90, - "encumbrance": 2, "warmth": 20, "material_thickness": 0.5, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 2, "coverage": 90, "covers": [ "leg_l", "leg_r", "torso" ] } ] }, { "id": "keikogi", @@ -1306,11 +1291,10 @@ "symbol": "[", "looks_like": "judo_gi", "color": "white", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 80, "warmth": 5, "material_thickness": 0.3, - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "coverage": 80, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "kimono", @@ -1326,7 +1310,7 @@ "symbol": "[", "looks_like": "robe", "color": "white", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 2, 5 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 90, "encumbrance": [ 2, 2 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 2, 2 ] } @@ -1358,7 +1342,7 @@ "symbol": "[", "looks_like": "kimono", "color": "blue", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 80, "encumbrance": [ 1, 3 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 80, "encumbrance": [ 1, 1 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 80, "encumbrance": [ 1, 1 ] } @@ -1390,12 +1374,10 @@ "symbol": "[", "looks_like": "house_coat", "color": "black", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 60, - "encumbrance": 3, "warmth": 10, "material_thickness": 0.3, - "flags": [ "VARSIZE", "SUPER_FANCY", "OUTER" ] + "flags": [ "VARSIZE", "SUPER_FANCY", "OUTER" ], + "armor": [ { "encumbrance": 3, "coverage": 60, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "kittel", @@ -1412,12 +1394,10 @@ "symbol": "[", "looks_like": "robe", "color": "white", - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ], - "coverage": 80, - "encumbrance": 10, "warmth": 17, "material_thickness": 0.3, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 10, "coverage": 80, "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ] } ] }, { "id": "peacoat", @@ -1433,7 +1413,7 @@ "symbol": "[", "looks_like": "coat_winter", "color": "blue", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 85, "encumbrance": [ 10, 20 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 85, "encumbrance": [ 10, 10 ] } ], @@ -1487,7 +1467,7 @@ "symbol": "[", "looks_like": "cloak", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 80, "encumbrance": [ 8, 15 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 80, "encumbrance": [ 8, 10 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 80, "encumbrance": [ 8, 8 ] } @@ -1555,12 +1535,10 @@ "symbol": "[", "looks_like": "trenchcoat", "color": "brown", - "covers": [ "leg_l", "leg_r", "torso" ], - "coverage": 90, - "encumbrance": 2, "warmth": 12, "material_thickness": 0.5, - "flags": [ "VARSIZE", "OUTER" ] + "flags": [ "VARSIZE", "OUTER" ], + "armor": [ { "encumbrance": 2, "coverage": 90, "covers": [ "leg_l", "leg_r", "torso" ] } ] }, { "id": "ski_jacket", @@ -1576,7 +1554,7 @@ "symbol": "[", "looks_like": "coat_winter", "color": "light_blue", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 15, 22 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 15, 15 ] } ], @@ -1631,7 +1609,7 @@ "symbol": "[", "looks_like": "duster", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 7, 12 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 90, "encumbrance": [ 7, 10 ] } ], @@ -1699,7 +1677,7 @@ "symbol": "[", "looks_like": "duster_fur", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 9, 17 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 90, "encumbrance": [ 9, 11 ] } ], @@ -1778,7 +1756,7 @@ "symbol": "[", "looks_like": "duster_leather", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 8, 15 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 90, "encumbrance": [ 8, 10 ] } ], @@ -1848,7 +1826,7 @@ "symbol": "[", "looks_like": "duster_survivor", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 85, "encumbrance": [ 7, 13 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 85, "encumbrance": [ 7, 9 ] } ], @@ -1881,10 +1859,6 @@ "symbol": "[", "looks_like": "sleeveless_duster", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 90, - "encumbrance": 7, - "max_encumbrance": 15, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "1500 ml", "max_contains_weight": "4 kg", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "1500 ml", "max_contains_weight": "4 kg", "moves": 80 }, @@ -1896,7 +1870,8 @@ "warmth": 15, "material_thickness": 0.3, "environmental_protection": 1, - "flags": [ "VARSIZE", "POCKETS", "OUTER" ] + "flags": [ "VARSIZE", "POCKETS", "OUTER" ], + "armor": [ { "encumbrance": [ 7, 15 ], "coverage": 90, "covers": [ "torso" ] } ] }, { "id": "sleeveless_trenchcoat_fur", @@ -1913,10 +1888,6 @@ "symbol": "[", "looks_like": "sleeveless_duster_fur", "color": "brown", - "covers": [ "torso" ], - "coverage": 90, - "encumbrance": 9, - "max_encumbrance": 19, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "1500 ml", "max_contains_weight": "4 kg", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "1500 ml", "max_contains_weight": "4 kg", "moves": 80 }, @@ -1929,7 +1900,8 @@ "material_thickness": 3, "valid_mods": [ "steel_padded" ], "environmental_protection": 1, - "flags": [ "VARSIZE", "POCKETS", "OUTER" ] + "flags": [ "VARSIZE", "POCKETS", "OUTER" ], + "armor": [ { "encumbrance": [ 9, 19 ], "coverage": 90, "covers": [ "torso" ] } ] }, { "id": "sleeveless_trenchcoat_faux_fur", @@ -1956,10 +1928,6 @@ "symbol": "[", "looks_like": "sleeveless_duster_leather", "color": "brown", - "covers": [ "torso" ], - "coverage": 90, - "encumbrance": 8, - "max_encumbrance": 17, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "1500 ml", "max_contains_weight": "4 kg", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "1500 ml", "max_contains_weight": "4 kg", "moves": 80 }, @@ -1972,7 +1940,8 @@ "material_thickness": 1.5, "valid_mods": [ "steel_padded" ], "environmental_protection": 1, - "flags": [ "VARSIZE", "POCKETS", "OUTER" ] + "flags": [ "VARSIZE", "POCKETS", "OUTER" ], + "armor": [ { "encumbrance": [ 8, 17 ], "coverage": 90, "covers": [ "torso" ] } ] }, { "id": "sleeveless_trenchcoat_survivor", @@ -1990,10 +1959,6 @@ "symbol": "[", "looks_like": "sleeveless_duster_survivor", "color": "brown", - "covers": [ "torso" ], - "coverage": 85, - "encumbrance": 7, - "max_encumbrance": 15, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "3 L", "max_contains_weight": "6 kg", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "3 L", "max_contains_weight": "6 kg", "moves": 80 }, @@ -2006,7 +1971,8 @@ "material_thickness": 3, "valid_mods": [ "steel_padded" ], "environmental_protection": 3, - "flags": [ "VARSIZE", "POCKETS", "HOOD", "COLLAR", "STURDY", "WATERPROOF", "RAINPROOF", "OUTER" ] + "flags": [ "VARSIZE", "POCKETS", "HOOD", "COLLAR", "STURDY", "WATERPROOF", "RAINPROOF", "OUTER" ], + "armor": [ { "encumbrance": [ 7, 15 ], "coverage": 85, "covers": [ "torso" ] } ] }, { "id": "sleeveless_tunic", @@ -2022,12 +1988,10 @@ "symbol": "[", "looks_like": "vest_leather", "color": "dark_gray", - "covers": [ "torso", "leg_l", "leg_r" ], - "coverage": 65, - "encumbrance": 3, "warmth": 2, "material_thickness": 1, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 3, "coverage": 65, "covers": [ "torso", "leg_l", "leg_r" ] } ] }, { "id": "thawb", @@ -2044,12 +2008,10 @@ "symbol": "[", "looks_like": "robe", "color": "white", - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ], - "coverage": 90, - "encumbrance": 7, "warmth": 20, - "material_thickness": 2, - "flags": [ "VARSIZE" ] + "material_thickness": 0.2, + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 7, "coverage": 90, "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ] } ] }, { "id": "trenchcoat", @@ -2065,7 +2027,7 @@ "symbol": "[", "looks_like": "coat_winter", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 7, 15 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 7, 7 ] } ], @@ -2096,7 +2058,7 @@ "symbol": "[", "looks_like": "trenchcoat_leather", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 9, 19 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 9, 9 ] } ], @@ -2138,7 +2100,7 @@ "symbol": "[", "looks_like": "trenchcoat", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 8, 17 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 8, 8 ] } ], @@ -2171,7 +2133,7 @@ "symbol": "[", "looks_like": "trenchcoat", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 85, "encumbrance": [ 7, 15 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 85, "encumbrance": [ 7, 7 ] } ], @@ -2239,12 +2201,10 @@ "symbol": "[", "looks_like": "sweatshirt", "color": "dark_gray", - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ], - "coverage": 75, - "encumbrance": 3, "warmth": 2, "material_thickness": 0.3, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 3, "coverage": 75, "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ] } ] }, { "id": "tunic_rag", @@ -2259,12 +2219,10 @@ "symbol": "[", "looks_like": "tunic", "color": "light_red", - "covers": [ "torso", "leg_l", "leg_r" ], - "coverage": 65, - "encumbrance": 5, "warmth": 15, "material_thickness": 0.3, - "flags": [ "OVERSIZE" ] + "flags": [ "OVERSIZE" ], + "armor": [ { "encumbrance": 5, "coverage": 65, "covers": [ "torso", "leg_l", "leg_r" ] } ] }, { "id": "tux", @@ -2281,7 +2239,7 @@ "symbol": "[", "looks_like": "suit", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 13, 16 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 95, "encumbrance": [ 13, 14 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 13, 13 ] } @@ -2327,10 +2285,6 @@ "symbol": "[", "looks_like": "blazer", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 60, - "encumbrance": 2, - "max_encumbrance": 5, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -2356,7 +2310,8 @@ ], "warmth": 5, "material_thickness": 0.5, - "flags": [ "VARSIZE", "FANCY" ] + "flags": [ "VARSIZE", "FANCY" ], + "armor": [ { "encumbrance": [ 2, 5 ], "coverage": 60, "covers": [ "torso" ] } ] }, { "id": "winter_jacket_army", @@ -2372,7 +2327,7 @@ "symbol": "[", "looks_like": "coat_winter", "color": "white", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 10, 20 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 10, 10 ] } ], diff --git a/data/json/items/armor/eyewear.json b/data/json/items/armor/eyewear.json index 17c851be62bdd..fc9c14d567679 100644 --- a/data/json/items/armor/eyewear.json +++ b/data/json/items/armor/eyewear.json @@ -14,13 +14,11 @@ "symbol": "[", "looks_like": "sunglasses", "color": "light_gray", - "covers": [ "eyes" ], - "coverage": 80, - "encumbrance": 10, "material_thickness": 1, "environmental_protection": 1, "qualities": [ [ "GLARE", 3 ] ], - "flags": [ "SUN_GLASSES" ] + "flags": [ "SUN_GLASSES" ], + "armor": [ { "encumbrance": 10, "coverage": 80, "covers": [ "eyes" ] } ] }, { "id": "eyepatch_leather", @@ -36,11 +34,9 @@ "symbol": "[", "looks_like": "glasses_safety", "color": "light_gray", - "covers": [ "eyes" ], - "coverage": 50, - "encumbrance": 30, "material_thickness": 1, - "flags": [ "WATER_FRIENDLY", "SKINTIGHT" ] + "flags": [ "WATER_FRIENDLY", "SKINTIGHT" ], + "armor": [ { "encumbrance": 30, "coverage": 50, "covers": [ "eyes" ] } ] }, { "id": "fancy_sunglasses", @@ -57,13 +53,11 @@ "symbol": "[", "looks_like": "sunglasses", "color": "dark_gray", - "covers": [ "eyes" ], - "coverage": 95, - "encumbrance": 1, "material_thickness": 1, "environmental_protection": 1, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FRAGILE" ] + "flags": [ "FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FRAGILE" ], + "armor": [ { "encumbrance": 1, "coverage": 95, "covers": [ "eyes" ] } ] }, { "id": "fitover_sunglasses", @@ -80,13 +74,11 @@ "symbol": "[", "looks_like": "sunglasses", "color": "dark_gray", - "covers": [ "eyes" ], - "coverage": 90, - "encumbrance": 1, "material_thickness": 1, "environmental_protection": 1, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "WATER_FRIENDLY", "SUN_GLASSES", "VARSIZE", "OUTER", "FRAGILE" ] + "flags": [ "WATER_FRIENDLY", "SUN_GLASSES", "VARSIZE", "OUTER", "FRAGILE" ], + "armor": [ { "encumbrance": 1, "coverage": 90, "covers": [ "eyes" ] } ] }, { "id": "glasses_bal", @@ -104,14 +96,12 @@ "symbol": "[", "looks_like": "glasses_safety", "color": "dark_gray", - "covers": [ "eyes" ], - "coverage": 100, - "encumbrance": 5, "warmth": 5, "material_thickness": 3, "environmental_protection": 4, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "WATER_FRIENDLY", "SUN_GLASSES" ] + "flags": [ "WATER_FRIENDLY", "SUN_GLASSES" ], + "armor": [ { "encumbrance": 5, "coverage": 100, "covers": [ "eyes" ] } ] }, { "id": "glasses_bifocal", @@ -128,12 +118,11 @@ "symbol": "[", "looks_like": "glasses_eye", "color": "cyan", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, "use_action": { "type": "firestarter", "moves": 1000, "moves_slow": 25000, "need_sunlight": true }, - "flags": [ "WATER_FRIENDLY", "FIRESTARTER", "FIX_NEARSIGHT", "FIX_FARSIGHT", "FRAGILE" ] + "flags": [ "WATER_FRIENDLY", "FIRESTARTER", "FIX_NEARSIGHT", "FIX_FARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] }, { "id": "glasses_eye", @@ -150,11 +139,10 @@ "symbol": "[", "looks_like": "sunglasses", "color": "cyan", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, - "flags": [ "WATER_FRIENDLY", "FIX_NEARSIGHT", "FRAGILE" ] + "flags": [ "WATER_FRIENDLY", "FIX_NEARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] }, { "id": "glasses_monocle", @@ -172,11 +160,10 @@ "symbol": "[", "looks_like": "glasses_eye", "color": "cyan", - "covers": [ "eyes" ], - "coverage": 20, "material_thickness": 1, "environmental_protection": 1, - "flags": [ "FANCY", "FIX_NEARSIGHT", "FRAGILE" ] + "flags": [ "FANCY", "FIX_NEARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 20, "covers": [ "eyes" ] } ] }, { "id": "glasses_reading", @@ -194,12 +181,11 @@ "symbol": "[", "looks_like": "glasses_eye", "color": "cyan", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, "use_action": { "type": "firestarter", "moves": 1000, "moves_slow": 25000, "need_sunlight": true }, - "flags": [ "WATER_FRIENDLY", "FIRESTARTER", "FIX_FARSIGHT", "FRAGILE" ] + "flags": [ "WATER_FRIENDLY", "FIRESTARTER", "FIX_FARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] }, { "id": "glasses_safety", @@ -216,13 +202,11 @@ "symbol": "[", "looks_like": "glasses_eye", "color": "light_gray", - "covers": [ "eyes" ], - "coverage": 95, - "encumbrance": 5, "warmth": 5, "material_thickness": 2, "environmental_protection": 1, - "flags": [ "WATER_FRIENDLY", "OUTER" ] + "flags": [ "WATER_FRIENDLY", "OUTER" ], + "armor": [ { "encumbrance": 5, "coverage": 95, "covers": [ "eyes" ] } ] }, { "id": "goggles_ski", @@ -239,14 +223,12 @@ "symbol": "[", "looks_like": "sunglasses", "color": "dark_gray", - "covers": [ "eyes" ], - "coverage": 100, - "encumbrance": 15, "warmth": 50, "material_thickness": 2, "environmental_protection": 6, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "SUN_GLASSES" ] + "flags": [ "SUN_GLASSES" ], + "armor": [ { "encumbrance": 15, "coverage": 100, "covers": [ "eyes" ] } ] }, { "id": "goggles_welding", @@ -263,14 +245,12 @@ "symbol": "[", "looks_like": "glasses_safety", "color": "dark_gray", - "covers": [ "eyes" ], - "coverage": 100, - "encumbrance": 60, "warmth": 10, "material_thickness": 4, "environmental_protection": 6, "qualities": [ [ "GLARE", 2 ] ], - "flags": [ "SUN_GLASSES", "FLASH_PROTECTION" ] + "flags": [ "SUN_GLASSES", "FLASH_PROTECTION" ], + "armor": [ { "encumbrance": 60, "coverage": 100, "covers": [ "eyes" ] } ] }, { "id": "iggaak", @@ -287,13 +267,11 @@ "symbol": "[", "looks_like": "sunglasses", "color": "light_gray", - "covers": [ "eyes" ], - "coverage": 90, - "encumbrance": 9, "warmth": 5, "material_thickness": 1, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "WATER_FRIENDLY", "SUN_GLASSES" ] + "flags": [ "WATER_FRIENDLY", "SUN_GLASSES" ], + "armor": [ { "encumbrance": 9, "coverage": 90, "covers": [ "eyes" ] } ] }, { "id": "sunglasses", @@ -310,13 +288,11 @@ "symbol": "[", "looks_like": "glasses_eye", "color": "dark_gray", - "covers": [ "eyes" ], - "coverage": 85, - "encumbrance": 1, "material_thickness": 1, "environmental_protection": 1, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "WATER_FRIENDLY", "SUN_GLASSES", "FRAGILE" ] + "flags": [ "WATER_FRIENDLY", "SUN_GLASSES", "FRAGILE" ], + "armor": [ { "encumbrance": 1, "coverage": 85, "covers": [ "eyes" ] } ] }, { "id": "survivor_goggles", @@ -332,14 +308,12 @@ "symbol": "[", "looks_like": "glasses_bal", "color": "dark_gray", - "covers": [ "eyes" ], - "coverage": 100, - "encumbrance": 20, "warmth": 5, "material_thickness": 4, "environmental_protection": 15, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "WATER_FRIENDLY", "SUN_GLASSES", "OVERSIZE", "VARSIZE", "STURDY" ] + "flags": [ "WATER_FRIENDLY", "SUN_GLASSES", "OVERSIZE", "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 100, "covers": [ "eyes" ] } ] }, { "id": "sunglasses_bifocal", @@ -356,12 +330,11 @@ "symbol": "[", "looks_like": "glasses_eye", "color": "dark_gray", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FIX_FARSIGHT", "FRAGILE" ] + "flags": [ "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FIX_FARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] }, { "id": "sunglasses_eye", @@ -378,12 +351,11 @@ "symbol": "[", "looks_like": "sunglasses", "color": "dark_gray", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FRAGILE" ] + "flags": [ "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] }, { "id": "sunglasses_reading", @@ -401,12 +373,11 @@ "symbol": "[", "looks_like": "sunglasses", "color": "dark_gray", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "WATER_FRIENDLY", "SUN_GLASSES", "FIX_FARSIGHT", "FRAGILE" ] + "flags": [ "WATER_FRIENDLY", "SUN_GLASSES", "FIX_FARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] }, { "id": "fancy_glasses_bifocal", @@ -423,12 +394,11 @@ "symbol": "[", "looks_like": "glasses_bifocal", "color": "yellow", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, "use_action": { "type": "firestarter", "moves": 1000, "moves_slow": 25000, "need_sunlight": true }, - "flags": [ "FANCY", "WATER_FRIENDLY", "FIRESTARTER", "FIX_NEARSIGHT", "FIX_FARSIGHT", "FRAGILE" ] + "flags": [ "FANCY", "WATER_FRIENDLY", "FIRESTARTER", "FIX_NEARSIGHT", "FIX_FARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] }, { "id": "fancy_glasses_eye", @@ -445,11 +415,10 @@ "symbol": "[", "looks_like": "glasses_eye", "color": "yellow", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, - "flags": [ "FANCY", "WATER_FRIENDLY", "FIX_NEARSIGHT", "FRAGILE" ] + "flags": [ "FANCY", "WATER_FRIENDLY", "FIX_NEARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] }, { "id": "fancy_glasses_reading", @@ -467,12 +436,11 @@ "symbol": "[", "looks_like": "glasses_reading", "color": "yellow", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, "use_action": { "type": "firestarter", "moves": 1000, "moves_slow": 25000, "need_sunlight": true }, - "flags": [ "FANCY", "WATER_FRIENDLY", "FIRESTARTER", "FIX_FARSIGHT", "FRAGILE" ] + "flags": [ "FANCY", "WATER_FRIENDLY", "FIRESTARTER", "FIX_FARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] }, { "id": "fancy_sunglasses_bifocal", @@ -489,12 +457,11 @@ "symbol": "[", "looks_like": "sunglasses", "color": "dark_gray", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FIX_FARSIGHT", "FRAGILE" ] + "flags": [ "FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FIX_FARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] }, { "id": "fancy_sunglasses_eye", @@ -511,12 +478,11 @@ "symbol": "[", "looks_like": "sunglasses", "color": "dark_gray", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FRAGILE" ] + "flags": [ "FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] }, { "id": "fancy_sunglasses_reading", @@ -534,12 +500,11 @@ "symbol": "[", "looks_like": "sunglasses", "color": "dark_gray", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_FARSIGHT", "FRAGILE" ] + "flags": [ "FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_FARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] }, { "id": "transition_glasses_bifocal", @@ -556,12 +521,11 @@ "symbol": "[", "looks_like": "glasses_bifocal", "color": "light_gray", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FIX_FARSIGHT", "FRAGILE" ] + "flags": [ "FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FIX_FARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] }, { "id": "transition_glasses_eye", @@ -578,12 +542,11 @@ "symbol": "[", "looks_like": "glasses_eye", "color": "light_gray", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FRAGILE" ] + "flags": [ "FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] }, { "id": "transition_glasses_reading", @@ -601,12 +564,11 @@ "symbol": "[", "looks_like": "glasses_reading", "color": "light_gray", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_FARSIGHT", "FRAGILE" ] + "flags": [ "FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_FARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] }, { "id": "fancy_transition_glasses_bifocal", @@ -623,12 +585,11 @@ "symbol": "[", "looks_like": "glasses_bifocal", "color": "white", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "SUPER_FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FIX_FARSIGHT", "FRAGILE" ] + "flags": [ "SUPER_FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FIX_FARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] }, { "id": "fancy_transition_glasses_eye", @@ -645,12 +606,11 @@ "symbol": "[", "looks_like": "glasses_eye", "color": "white", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "SUPER_FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FRAGILE" ] + "flags": [ "SUPER_FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] }, { "id": "fancy_transition_glasses_reading", @@ -668,11 +628,10 @@ "symbol": "[", "looks_like": "glasses_reading", "color": "white", - "covers": [ "eyes" ], - "coverage": 75, "material_thickness": 1, "environmental_protection": 1, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "SUPER_FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_FARSIGHT", "FRAGILE" ] + "flags": [ "SUPER_FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_FARSIGHT", "FRAGILE" ], + "armor": [ { "coverage": 75, "covers": [ "eyes" ] } ] } ] diff --git a/data/json/items/armor/gloves.json b/data/json/items/armor/gloves.json index 4422500ac804f..4ee20eb31ff5e 100644 --- a/data/json/items/armor/gloves.json +++ b/data/json/items/armor/gloves.json @@ -14,13 +14,11 @@ "symbol": "[", "looks_like": "gloves_leather", "color": "white", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 10, "warmth": 30, "material_thickness": 2, "environmental_protection": 2, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "encumbrance": 10, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "boxing_gloves", @@ -37,13 +35,11 @@ "symbol": "[", "looks_like": "gloves_leather", "color": "red", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 70, "warmth": 20, "material_thickness": 3, "environmental_protection": 3, - "flags": [ "VARSIZE", "OVERSIZE", "STURDY" ] + "flags": [ "VARSIZE", "OVERSIZE", "STURDY" ], + "armor": [ { "encumbrance": 70, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "chainmail_hands", @@ -59,11 +55,9 @@ "material": [ "iron", "cotton" ], "symbol": "[", "color": "light_red", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 30, "material_thickness": 2, - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": 30, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "xl_chainmail_hands", @@ -89,13 +83,11 @@ "symbol": "[", "looks_like": "gloves_leather", "color": "dark_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 50, "warmth": 25, "material_thickness": 3, "environmental_protection": 6, - "flags": [ "VARSIZE", "STURDY", "WATERPROOF" ] + "flags": [ "VARSIZE", "STURDY", "WATERPROOF" ], + "armor": [ { "encumbrance": 50, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gauntlets_chitin", @@ -113,13 +105,11 @@ "symbol": "[", "looks_like": "gauntlets_larmor", "color": "green", - "covers": [ "hand_l", "hand_r" ], - "coverage": 95, - "encumbrance": 12, "warmth": 20, "material_thickness": 4, "environmental_protection": 4, - "flags": [ "STURDY" ] + "flags": [ "STURDY" ], + "armor": [ { "encumbrance": 12, "coverage": 95, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "xl_gauntlets_chitin", @@ -163,13 +153,11 @@ "material": [ "leather", "cotton" ], "symbol": "[", "color": "white", - "covers": [ "hand_r" ], - "encumbrance": 4, - "coverage": 100, "warmth": 15, "material_thickness": 2.0, "environmental_protection": 1, - "flags": [ "STURDY" ] + "flags": [ "STURDY" ], + "armor": [ { "encumbrance": 4, "coverage": 100, "covers": [ "hand_r" ] } ] }, { "id": "gauntlet_fencing_l", @@ -185,13 +173,11 @@ "material": [ "leather", "cotton" ], "symbol": "[", "color": "white", - "covers": [ "hand_l" ], - "encumbrance": 4, - "coverage": 100, "warmth": 15, "material_thickness": 2.0, "environmental_protection": 1, - "flags": [ "STURDY" ] + "flags": [ "STURDY" ], + "armor": [ { "encumbrance": 4, "coverage": 100, "covers": [ "hand_l" ] } ] }, { "id": "gauntlets_larmor", @@ -209,13 +195,11 @@ "symbol": "[", "looks_like": "gloves_leather", "color": "brown", - "covers": [ "hand_l", "hand_r" ], - "coverage": 60, - "encumbrance": 4, "warmth": 15, "material_thickness": 3, "environmental_protection": 1, - "flags": [ "VARSIZE", "STURDY", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "VARSIZE", "STURDY", "ALLOWS_NATURAL_ATTACKS", "ALLOWS_TALONS" ], + "armor": [ { "encumbrance": 4, "coverage": 60, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "xl_gauntlets_larmor", @@ -239,11 +223,9 @@ "symbol": "[", "looks_like": "gloves_wraps", "color": "light_blue", - "covers": [ "hand_l", "hand_r" ], - "coverage": 70, - "encumbrance": 7, "material_thickness": 0.01, - "flags": [ "WATERPROOF", "OVERSIZE", "OUTER" ] + "flags": [ "WATERPROOF", "OVERSIZE", "OUTER", "ALLOWS_TALONS" ], + "armor": [ { "encumbrance": 7, "coverage": 70, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_fingerless", @@ -259,11 +241,10 @@ "symbol": "[", "looks_like": "gloves_light", "color": "dark_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 50, "warmth": 10, "material_thickness": 0.5, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "ALLOWS_TALONS" ], + "armor": [ { "coverage": 50, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_fingerless_mod", @@ -280,12 +261,10 @@ "symbol": "[", "looks_like": "gloves_fingerless", "color": "dark_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 50, - "encumbrance": 3, "warmth": 5, "material_thickness": 0.5, - "flags": [ "VARSIZE", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "VARSIZE", "ALLOWS_NATURAL_ATTACKS", "ALLOWS_TALONS" ], + "armor": [ { "encumbrance": 3, "coverage": 50, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_fsurvivor", @@ -302,13 +281,11 @@ "symbol": "[", "looks_like": "fire_gauntlets", "color": "light_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 30, "warmth": 15, "material_thickness": 3, "environmental_protection": 10, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 30, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "xl_gloves_fsurvivor", @@ -332,11 +309,9 @@ "symbol": "[", "looks_like": "fire_gauntlets", "color": "brown", - "covers": [ "hand_l", "hand_r" ], - "coverage": 95, - "encumbrance": 30, "warmth": 70, - "material_thickness": 3 + "material_thickness": 3, + "armor": [ { "encumbrance": 30, "coverage": 95, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "xl_gloves_fur", @@ -384,13 +359,11 @@ "symbol": "[", "looks_like": "fire_gauntlets", "color": "dark_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 30, "warmth": 15, "material_thickness": 4, "environmental_protection": 5, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 30, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "xl_gloves_hsurvivor", @@ -415,11 +388,10 @@ "symbol": "[", "looks_like": "gloves_leather", "color": "white", - "covers": [ "hand_r" ], - "coverage": 95, "warmth": 20, "material_thickness": 0.5, - "flags": [ "WATER_FRIENDLY", "FANCY" ] + "flags": [ "WATER_FRIENDLY", "FANCY" ], + "armor": [ { "coverage": 95, "covers": [ "hand_r" ] } ] }, { "id": "gloves_leather", @@ -435,13 +407,11 @@ "symbol": "[", "looks_like": "gloves_light", "color": "dark_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 95, - "encumbrance": 10, "warmth": 25, "material_thickness": 0.5, "valid_mods": [ "steel_padded" ], - "flags": [ "VARSIZE", "WATERPROOF" ] + "flags": [ "VARSIZE", "WATERPROOF" ], + "armor": [ { "encumbrance": 10, "coverage": 95, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "xl_gloves_leather", @@ -465,12 +435,10 @@ "symbol": "[", "looks_like": "gloves_leather", "color": "light_blue", - "covers": [ "hand_l", "hand_r" ], - "coverage": 95, - "encumbrance": 2, "warmth": 20, "material_thickness": 0.2, - "flags": [ "WATER_FRIENDLY" ] + "flags": [ "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 2, "coverage": 95, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "xl_gloves_light", @@ -494,12 +462,10 @@ "symbol": "[", "looks_like": "gloves_light", "color": "light_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 95, - "encumbrance": 1, "warmth": 15, "material_thickness": 0.1, - "flags": [ "WATER_FRIENDLY", "SKINTIGHT" ] + "flags": [ "WATER_FRIENDLY", "SKINTIGHT" ], + "armor": [ { "encumbrance": 1, "coverage": 95, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "xl_gloves_liner", @@ -524,13 +490,11 @@ "symbol": "[", "looks_like": "gloves_survivor", "color": "green", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 10, "warmth": 15, "material_thickness": 1, "environmental_protection": 3, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 10, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "xl_gloves_lsurvivor", @@ -541,11 +505,11 @@ "flags": [ "VARSIZE", "STURDY", "OVERSIZE", "WATERPROOF" ] }, { - "id": "gloves_survivor_fingerless", + "id": "gloves_lsurvivor_fingerless", "type": "ARMOR", "looks_like": "gloves_lsurvivor", "category": "armor", - "name": { "str": "pair of fingerless survivor gloves", "str_pl": "pairs of fingerless survivor gloves" }, + "name": { "str": "pair of fingerless light survivor gloves", "str_pl": "pairs of fingerless light survivor gloves" }, "description": "A pair of customized, Kevlar armored cloth gloves with no fingers, modified to be easy to wear while providing maximum protection under extreme conditions.", "weight": "160 g", "volume": "700 ml", @@ -555,13 +519,40 @@ "material": [ "kevlar_layered", "cotton" ], "symbol": "[", "color": "green", - "covers": [ "hand_l", "hand_r" ], - "coverage": 85, - "encumbrance": 8, "warmth": 12, - "material_thickness": 2, + "material_thickness": 1, + "environmental_protection": 3, + "flags": [ "VARSIZE", "WATERPROOF", "STURDY", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 8, "coverage": 85, "covers": [ "hand_l", "hand_r" ] } ] + }, + { + "id": "xl_gloves_lsurvivor_fingerless", + "type": "ARMOR", + "name": { "str": "pair of XL fingerless light survivor gloves", "str_pl": "pairs of XL fingerless light survivor gloves" }, + "copy-from": "gloves_lsurvivor_fingerless", + "proportional": { "weight": 1.5, "volume": 1.5 }, + "flags": [ "VARSIZE", "STURDY", "OVERSIZE", "WATERPROOF", "ALLOWS_NATURAL_ATTACKS" ] + }, + { + "id": "gloves_survivor_fingerless", + "type": "ARMOR", + "looks_like": "gloves_survivor", + "category": "armor", + "name": { "str": "pair of fingerless survivor gloves", "str_pl": "pairs of fingerless survivor gloves" }, + "description": "A pair of customized, Kevlar armored leather gloves with no fingers, modified to be easy to wear while providing maximum protection under extreme conditions.", + "weight": "200 g", + "volume": "700 ml", + "price": 16000, + "price_postapoc": 2000, + "to_hit": 2, + "material": [ "kevlar_layered", "leather" ], + "symbol": "[", + "color": "brown", + "warmth": 12, + "material_thickness": 3, "environmental_protection": 3, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY", "ALLOWS_NATURAL_ATTACKS", "ALLOWS_TALONS" ], + "armor": [ { "encumbrance": 16, "coverage": 85, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "xl_gloves_survivor_fingerless", @@ -586,12 +577,10 @@ "symbol": "[", "looks_like": "gloves_light", "color": "white", - "covers": [ "hand_l", "hand_r" ], - "coverage": 90, - "encumbrance": 1, "material_thickness": 0.1, "environmental_protection": 6, - "flags": [ "WATER_FRIENDLY", "WATERPROOF", "SKINTIGHT" ] + "flags": [ "WATER_FRIENDLY", "WATERPROOF", "SKINTIGHT" ], + "armor": [ { "encumbrance": 1, "coverage": 90, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_plate", @@ -609,13 +598,11 @@ "symbol": "[", "looks_like": "fire_gauntlets", "color": "light_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 20, "warmth": 20, "material_thickness": 4, "environmental_protection": 1, - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "xl_gloves_plate", @@ -640,13 +627,11 @@ "symbol": "[", "looks_like": "gloves_light", "color": "yellow", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 4, "warmth": 10, "material_thickness": 0.35, "environmental_protection": 8, - "flags": [ "WATERPROOF" ] + "flags": [ "WATERPROOF" ], + "armor": [ { "encumbrance": 4, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_survivor", @@ -663,13 +648,11 @@ "symbol": "[", "looks_like": "fire_gauntlets", "color": "brown", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 20, "warmth": 15, "material_thickness": 3, "environmental_protection": 3, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_tactical", @@ -687,13 +670,11 @@ "symbol": "[", "looks_like": "fire_gauntlets", "color": "dark_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 13, "warmth": 20, "material_thickness": 1.5, "environmental_protection": 2, - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": 13, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_winter", @@ -710,11 +691,9 @@ "symbol": "[", "looks_like": "gloves_leather", "color": "light_blue", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 40, "warmth": 70, - "material_thickness": 4 + "material_thickness": 4, + "armor": [ { "encumbrance": 40, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_wool", @@ -730,11 +709,9 @@ "symbol": "[", "looks_like": "gloves_winter", "color": "blue", - "covers": [ "hand_l", "hand_r" ], - "coverage": 95, - "encumbrance": 20, "warmth": 60, - "material_thickness": 3 + "material_thickness": 3, + "armor": [ { "encumbrance": 20, "coverage": 95, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "xl_gloves_wool", @@ -758,13 +735,11 @@ "symbol": "[", "looks_like": "gloves_leather", "color": "brown", - "covers": [ "hand_l", "hand_r" ], - "coverage": 95, - "encumbrance": 20, "warmth": 25, "material_thickness": 2, "environmental_protection": 5, - "flags": [ "WATERPROOF", "STURDY" ] + "flags": [ "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 95, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_cut_resistant", @@ -781,13 +756,11 @@ "symbol": "[", "looks_like": "gloves_work", "color": "light_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 95, - "encumbrance": 40, "warmth": 10, "material_thickness": 2, "environmental_protection": 1, - "flags": [ "STURDY" ] + "flags": [ "STURDY" ], + "armor": [ { "encumbrance": 40, "coverage": 95, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_wraps", @@ -803,11 +776,10 @@ "symbol": "[", "looks_like": "gloves_light", "color": "white", - "covers": [ "hand_l", "hand_r" ], - "coverage": 50, "warmth": 5, "material_thickness": 2, - "flags": [ "SKINTIGHT", "OVERSIZE", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "SKINTIGHT", "OVERSIZE", "ALLOWS_NATURAL_ATTACKS", "ALLOWS_TALONS" ], + "armor": [ { "coverage": 50, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_wraps_fur", @@ -823,12 +795,10 @@ "symbol": "[", "looks_like": "gloves_wraps", "color": "white", - "covers": [ "hand_l", "hand_r" ], - "coverage": 50, - "encumbrance": 5, "warmth": 20, "material_thickness": 2, - "flags": [ "OVERSIZE", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "OVERSIZE", "ALLOWS_NATURAL_ATTACKS", "ALLOWS_TALONS" ], + "armor": [ { "encumbrance": 5, "coverage": 50, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_wraps_leather", @@ -844,12 +814,10 @@ "symbol": "[", "looks_like": "gloves_wraps", "color": "white", - "covers": [ "hand_l", "hand_r" ], - "coverage": 50, - "encumbrance": 5, "warmth": 10, "material_thickness": 2, - "flags": [ "OVERSIZE", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "OVERSIZE", "ALLOWS_NATURAL_ATTACKS", "ALLOWS_TALONS" ], + "armor": [ { "encumbrance": 5, "coverage": 50, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_wraps_wool", @@ -865,12 +833,10 @@ "symbol": "[", "looks_like": "gloves_wraps", "color": "blue", - "covers": [ "hand_l", "hand_r" ], - "coverage": 50, - "encumbrance": 2, "warmth": 15, "material_thickness": 2, - "flags": [ "SKINTIGHT", "OVERSIZE", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "SKINTIGHT", "OVERSIZE", "ALLOWS_NATURAL_ATTACKS", "ALLOWS_TALONS" ], + "armor": [ { "encumbrance": 2, "coverage": 50, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_wsurvivor", @@ -887,13 +853,11 @@ "symbol": "[", "looks_like": "gloves_winter", "color": "light_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 37, "warmth": 75, "material_thickness": 4, "environmental_protection": 5, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 37, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "xl_gloves_wsurvivor", @@ -904,7 +868,7 @@ "flags": [ "VARSIZE", "WATERPROOF", "STURDY", "OVERSIZE" ] }, { - "id": "gloves_xlsurvivor", + "id": "xl_gloves_survivor", "type": "ARMOR", "category": "armor", "name": { "str": "pair of XL survivor gloves", "str_pl": "pairs of XL survivor gloves" }, @@ -918,13 +882,11 @@ "symbol": "[", "looks_like": "gloves_survivor", "color": "brown", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 30, "warmth": 15, "material_thickness": 2, "environmental_protection": 3, - "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 30, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "long_glove_white", @@ -941,7 +903,7 @@ "symbol": "[", "looks_like": "gloves_light", "color": "light_blue", - "armor_portion_data": [ + "armor": [ { "covers": [ "hand_l", "hand_r" ], "coverage": 100, "encumbrance": 2 }, { "covers": [ "arm_l", "arm_r" ], "coverage": 50, "encumbrance": 2 } ], @@ -963,12 +925,10 @@ "symbol": "[", "looks_like": "gloves_wool", "color": "blue", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 80, "warmth": 70, "material_thickness": 1, - "flags": [ "OVERSIZE", "OUTER" ] + "flags": [ "OVERSIZE", "OUTER" ], + "armor": [ { "encumbrance": 80, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "nomex_gloves", @@ -984,13 +944,11 @@ "symbol": "[", "looks_like": "gloves_light", "color": "light_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 6, "warmth": 5, "material_thickness": 1, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT", "STURDY" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT", "STURDY" ], + "armor": [ { "encumbrance": 6, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "sockmitts", @@ -1005,11 +963,10 @@ "symbol": "[", "looks_like": "mittens", "color": "white", - "covers": [ "hand_l", "hand_r" ], - "coverage": 40, "warmth": 5, "material_thickness": 0.2, - "flags": [ "VARSIZE", "SKINTIGHT", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "VARSIZE", "SKINTIGHT", "ALLOWS_NATURAL_ATTACKS", "ALLOWS_TALONS" ], + "armor": [ { "coverage": 40, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "stockings_tent_arms", @@ -1024,12 +981,10 @@ "symbol": "[", "looks_like": "arm_warmers", "color": "dark_gray", - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], - "coverage": 75, - "encumbrance": 10, "warmth": 10, "material_thickness": 0.2, - "flags": [ "VARSIZE", "SKINTIGHT", "OVERSIZE" ] + "flags": [ "VARSIZE", "SKINTIGHT", "OVERSIZE" ], + "armor": [ { "encumbrance": 10, "coverage": 75, "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ] } ] }, { "id": "winter_gloves_army", @@ -1046,11 +1001,9 @@ "symbol": "[", "looks_like": "fire_gauntlets", "color": "white", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 20, "warmth": 50, - "material_thickness": 2 + "material_thickness": 2, + "armor": [ { "encumbrance": 20, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_golf", @@ -1067,12 +1020,10 @@ "symbol": "[", "looks_like": "gloves_light", "color": "dark_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 90, - "encumbrance": 5, "warmth": 20, "material_thickness": 0.5, - "flags": [ "VARSIZE", "WATERPROOF", "SKINTIGHT" ] + "flags": [ "VARSIZE", "WATERPROOF", "SKINTIGHT" ], + "armor": [ { "encumbrance": 5, "coverage": 90, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_eod", @@ -1083,16 +1034,14 @@ "weight": "800 g", "volume": "1500 ml", "price": 70000, - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 20, "warmth": 40, "material": [ "kevlar_layered", "nomex" ], "symbol": "[", "color": "light_gray", "environmental_protection": 2, "material_thickness": 5, - "flags": [ "STURDY", "OUTER", "RAINPROOF", "ONLY_ONE" ] + "flags": [ "STURDY", "OUTER", "RAINPROOF", "ONLY_ONE" ], + "armor": [ { "encumbrance": 20, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_studded", @@ -1109,11 +1058,9 @@ "symbol": "[", "looks_like": "gloves_leather", "color": "light_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 5, "warmth": 5, "material_thickness": 2, - "flags": [ "WATER_FRIENDLY", "STAB", "DURABLE_MELEE" ] + "flags": [ "WATER_FRIENDLY", "STAB", "DURABLE_MELEE" ], + "armor": [ { "encumbrance": 5, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] } ] diff --git a/data/json/items/armor/hats.json b/data/json/items/armor/hats.json index 1f64e44ac7ab4..4c6c1301eeafb 100644 --- a/data/json/items/armor/hats.json +++ b/data/json/items/armor/hats.json @@ -13,13 +13,11 @@ "symbol": "[", "looks_like": "cowboy_hat", "color": "brown", - "covers": [ "head" ], - "coverage": 50, - "encumbrance": 20, "warmth": 8, "material_thickness": 0.3, "environmental_protection": 2, - "flags": [ "VARSIZE", "SUN_GLASSES" ] + "flags": [ "VARSIZE", "SUN_GLASSES" ], + "armor": [ { "encumbrance": 20, "coverage": 50, "covers": [ "head" ] } ] }, { "id": "bandana_head", @@ -41,10 +39,9 @@ "symbol": "[", "looks_like": "scarf", "color": "blue", - "covers": [ "head" ], - "coverage": 80, "warmth": 5, - "material_thickness": 0.1 + "material_thickness": 0.1, + "armor": [ { "coverage": 80, "covers": [ "head" ] } ] }, { "id": "beret", @@ -60,11 +57,10 @@ "symbol": "[", "looks_like": "hat_cotton", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 40, "warmth": 10, "material_thickness": 0.3, - "flags": [ "VARSIZE", "WATER_FRIENDLY" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY" ], + "armor": [ { "coverage": 40, "covers": [ "head" ] } ] }, { "id": "beret_wool", @@ -79,11 +75,10 @@ "symbol": "[", "looks_like": "beret", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 40, "warmth": 15, "material_thickness": 0.3, - "flags": [ "VARSIZE", "WATERPROOF" ] + "flags": [ "VARSIZE", "WATERPROOF" ], + "armor": [ { "coverage": 40, "covers": [ "head" ] } ] }, { "id": "bowhat", @@ -99,13 +94,11 @@ "symbol": "[", "looks_like": "hat_cotton", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 50, - "encumbrance": 15, "warmth": 5, "material_thickness": 0.3, "environmental_protection": 1, - "flags": [ "FANCY", "VARSIZE" ] + "flags": [ "FANCY", "VARSIZE" ], + "armor": [ { "encumbrance": 15, "coverage": 50, "covers": [ "head" ] } ] }, { "id": "chaplet", @@ -120,10 +113,9 @@ "symbol": "[", "looks_like": "hat_cotton", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 40, "material_thickness": 0.1, - "flags": [ "OVERSIZE", "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "OVERSIZE", "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "coverage": 40, "covers": [ "head" ] } ] }, { "id": "cowboy_hat", @@ -138,13 +130,11 @@ "symbol": "[", "looks_like": "bowhat", "color": "brown", - "covers": [ "head" ], - "coverage": 50, - "encumbrance": 10, "warmth": 7, "material_thickness": 0.3, "environmental_protection": 2, - "flags": [ "VARSIZE", "SUN_GLASSES" ] + "flags": [ "VARSIZE", "SUN_GLASSES" ], + "armor": [ { "encumbrance": 10, "coverage": 50, "covers": [ "head" ] } ] }, { "id": "drinking_hat", @@ -159,12 +149,10 @@ "material": [ "cotton", "plastic" ], "weight": "733 g", "volume": "1500 ml", - "encumbrance": 5, - "covers": [ "head" ], - "coverage": 15, "material_thickness": 0.2, "pocket_data": [ { "max_contains_volume": "500 ml", "max_contains_weight": "1 kg", "watertight": true, "rigid": true } ], - "flags": [ "OVERSIZE", "BELTED", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY" ] + "flags": [ "OVERSIZE", "BELTED", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 5, "coverage": 15, "covers": [ "head" ] } ] }, { "id": "eboshi", @@ -180,11 +168,9 @@ "symbol": "[", "looks_like": "bowhat", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 60, - "encumbrance": 10, "warmth": 4, - "material_thickness": 0.2 + "material_thickness": 0.2, + "armor": [ { "encumbrance": 10, "coverage": 60, "covers": [ "head" ] } ] }, { "id": "hat_boonie", @@ -199,13 +185,11 @@ "symbol": "[", "looks_like": "cowboy_hat", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 65, - "encumbrance": 10, "warmth": 10, "material_thickness": 0.3, "environmental_protection": 2, - "flags": [ "VARSIZE", "SUN_GLASSES" ] + "flags": [ "VARSIZE", "SUN_GLASSES" ], + "armor": [ { "encumbrance": 10, "coverage": 65, "covers": [ "head" ] } ] }, { "id": "hat_ball", @@ -222,13 +206,11 @@ "symbol": "[", "looks_like": "hat_cotton", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 50, - "encumbrance": 10, "warmth": 5, "material_thickness": 0.1, "environmental_protection": 2, - "flags": [ "SUN_GLASSES" ] + "flags": [ "SUN_GLASSES" ], + "armor": [ { "encumbrance": 10, "coverage": 50, "covers": [ "head" ] } ] }, { "id": "hat_chef", @@ -244,12 +226,10 @@ "symbol": "[", "looks_like": "hat_cotton", "color": "white", - "covers": [ "head" ], - "coverage": 75, - "encumbrance": 15, "warmth": 5, "material_thickness": 0.1, - "environmental_protection": 1 + "environmental_protection": 1, + "armor": [ { "encumbrance": 15, "coverage": 75, "covers": [ "head" ] } ] }, { "id": "hat_cotton", @@ -264,11 +244,10 @@ "symbol": "[", "looks_like": "hat_ball", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 65, "warmth": 20, "material_thickness": 0.1, - "flags": [ "VARSIZE", "HELMET_COMPAT" ] + "flags": [ "VARSIZE", "HELMET_COMPAT" ], + "armor": [ { "coverage": 65, "covers": [ "head" ] } ] }, { "id": "hat_fur", @@ -283,11 +262,9 @@ "symbol": "[", "looks_like": "hat_knit", "color": "brown", - "covers": [ "head" ], - "coverage": 95, - "encumbrance": 10, "warmth": 70, - "material_thickness": 0.3 + "material_thickness": 0.3, + "armor": [ { "encumbrance": 10, "coverage": 95, "covers": [ "head" ] } ] }, { "id": "hat_faux_fur", @@ -297,7 +274,6 @@ "name": { "str": "faux fur hat" }, "description": "A stylish hat made of faux fur. Like real fur, but without the suffering, if the tag is to be believed. Very warm.", "material": [ "faux_fur", "cotton" ], - "covers": [ "head" ], "warmth": 60 }, { @@ -314,13 +290,11 @@ "symbol": "[", "looks_like": "hat_ball", "color": "yellow", - "covers": [ "head" ], - "coverage": 80, - "encumbrance": 15, "warmth": 5, "material_thickness": 4, "techniques": [ "WBLOCK_1" ], - "flags": [ "WATERPROOF" ] + "flags": [ "WATERPROOF" ], + "armor": [ { "encumbrance": 15, "coverage": 80, "covers": [ "head" ] } ] }, { "id": "hat_hard_hooded", @@ -337,13 +311,11 @@ "symbol": "[", "looks_like": "hat_hard", "color": "yellow", - "covers": [ "head" ], - "coverage": 80, - "encumbrance": 13, "warmth": 6, "material_thickness": 4, "techniques": [ "WBLOCK_1" ], - "flags": [ "WATERPROOF" ] + "flags": [ "WATERPROOF" ], + "armor": [ { "encumbrance": 13, "coverage": 80, "covers": [ "head" ] } ] }, { "id": "hat_hunting", @@ -358,13 +330,11 @@ "symbol": "[", "looks_like": "hat_ball", "color": "light_red", - "covers": [ "head" ], - "coverage": 85, - "encumbrance": 10, "warmth": 50, "material_thickness": 0.3, "environmental_protection": 2, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 10, "coverage": 85, "covers": [ "head" ] } ] }, { "id": "hat_knit", @@ -379,11 +349,10 @@ "symbol": "[", "looks_like": "hat_cotton", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 65, "warmth": 40, "material_thickness": 0.5, - "flags": [ "VARSIZE", "HELMET_COMPAT" ] + "flags": [ "VARSIZE", "HELMET_COMPAT" ], + "armor": [ { "coverage": 65, "covers": [ "head" ] } ] }, { "id": "hat_newsboy", @@ -399,11 +368,10 @@ "symbol": "[", "looks_like": "hat_ball", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 50, "warmth": 30, "material_thickness": 0.2, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "coverage": 50, "covers": [ "head" ] } ] }, { "id": "hat_noise_cancelling", @@ -418,12 +386,10 @@ "symbol": "[", "looks_like": "hat_cotton", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 5, - "encumbrance": 17, "warmth": 5, "material_thickness": 0.1, - "flags": [ "DEAF", "HELMET_COMPAT" ] + "flags": [ "DEAF", "HELMET_COMPAT" ], + "armor": [ { "encumbrance": 17, "coverage": 5, "covers": [ "head" ] } ] }, { "id": "hat_sombrero", @@ -440,13 +406,11 @@ "symbol": "[", "looks_like": "cowboy_hat", "color": "light_red", - "covers": [ "head" ], - "coverage": 50, - "encumbrance": 20, "warmth": 2, "material_thickness": 0.2, "environmental_protection": 4, - "flags": [ "OUTER", "SUN_GLASSES" ] + "flags": [ "OUTER", "SUN_GLASSES" ], + "armor": [ { "encumbrance": 20, "coverage": 50, "covers": [ "head" ] } ] }, { "id": "kippah", @@ -462,11 +426,10 @@ "symbol": "[", "looks_like": "hat_cotton", "color": "blue", - "covers": [ "head" ], - "coverage": 40, "warmth": 3, "material_thickness": 0.1, - "flags": [ "HELMET_COMPAT" ] + "flags": [ "HELMET_COMPAT" ], + "armor": [ { "coverage": 40, "covers": [ "head" ] } ] }, { "id": "kufi", @@ -482,12 +445,10 @@ "symbol": "[", "looks_like": "hat_cotton", "color": "white", - "covers": [ "head" ], - "coverage": 50, - "encumbrance": 10, "warmth": 6, "material_thickness": 0.1, - "environmental_protection": 1 + "environmental_protection": 1, + "armor": [ { "encumbrance": 10, "coverage": 50, "covers": [ "head" ] } ] }, { "id": "maid_hat", @@ -503,12 +464,10 @@ "symbol": "[", "looks_like": "hat_cotton", "color": "white", - "covers": [ "head" ], - "coverage": 25, - "encumbrance": 10, "warmth": 10, "material_thickness": 0.05, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 10, "coverage": 25, "covers": [ "head" ] } ] }, { "id": "porkpie", @@ -524,13 +483,11 @@ "symbol": "[", "looks_like": "bowhat", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 50, - "encumbrance": 15, "warmth": 5, "material_thickness": 0.2, "environmental_protection": 1, - "flags": [ "FANCY", "VARSIZE" ] + "flags": [ "FANCY", "VARSIZE" ], + "armor": [ { "encumbrance": 15, "coverage": 50, "covers": [ "head" ] } ] }, { "id": "postman_hat", @@ -546,13 +503,11 @@ "symbol": "[", "looks_like": "hat_ball", "color": "blue", - "covers": [ "head" ], - "coverage": 60, - "encumbrance": 10, "warmth": 10, "material_thickness": 0.1, "environmental_protection": 2, - "flags": [ "SUN_GLASSES" ] + "flags": [ "SUN_GLASSES" ], + "armor": [ { "encumbrance": 10, "coverage": 60, "covers": [ "head" ] } ] }, { "id": "straw_hat", @@ -567,12 +522,11 @@ "symbol": "[", "looks_like": "cowboy_hat", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 40, "warmth": 2, "material_thickness": 0.2, "environmental_protection": 2, - "flags": [ "VARSIZE", "SUN_GLASSES" ] + "flags": [ "VARSIZE", "SUN_GLASSES" ], + "armor": [ { "coverage": 40, "covers": [ "head" ] } ] }, { "id": "tinfoil_hat", @@ -588,9 +542,8 @@ "symbol": "[", "looks_like": "hat_cotton", "color": "yellow", - "covers": [ "head" ], - "coverage": 90, - "flags": [ "PSYSHIELD_PARTIAL", "SKINTIGHT", "TRADER_AVOID" ] + "flags": [ "PSYSHIELD_PARTIAL", "SKINTIGHT", "TRADER_AVOID" ], + "armor": [ { "coverage": 90, "covers": [ "head" ] } ] }, { "id": "tophat", @@ -607,13 +560,11 @@ "symbol": "[", "looks_like": "porkpie", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 50, - "encumbrance": 20, "warmth": 5, "material_thickness": 0.2, "environmental_protection": 1, - "flags": [ "VARSIZE", "SUPER_FANCY" ] + "flags": [ "VARSIZE", "SUPER_FANCY" ], + "armor": [ { "encumbrance": 20, "coverage": 50, "covers": [ "head" ] } ] }, { "id": "tricorne", @@ -628,13 +579,11 @@ "symbol": "[", "looks_like": "bowhat", "color": "brown", - "covers": [ "head" ], - "coverage": 50, - "encumbrance": 10, "warmth": 7, "material_thickness": 0.2, "environmental_protection": 1, - "flags": [ "VARSIZE", "WATERPROOF", "WATER_FRIENDLY", "FANCY" ] + "flags": [ "VARSIZE", "WATERPROOF", "WATER_FRIENDLY", "FANCY" ], + "armor": [ { "encumbrance": 10, "coverage": 50, "covers": [ "head" ] } ] }, { "id": "turban", @@ -651,12 +600,10 @@ "symbol": "[", "looks_like": "hat_cotton", "color": "white", - "covers": [ "head" ], - "coverage": 50, - "encumbrance": 5, "warmth": 10, "material_thickness": 0.3, - "flags": [ "OVERSIZE", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "OVERSIZE", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 5, "coverage": 50, "covers": [ "head" ] } ] }, { "id": "hat_golf", @@ -673,12 +620,10 @@ "symbol": "[", "looks_like": "hat_ball", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 40, - "encumbrance": 10, "warmth": 5, "material_thickness": 0.1, "environmental_protection": 1, - "flags": [ "SUN_GLASSES" ] + "flags": [ "SUN_GLASSES" ], + "armor": [ { "encumbrance": 10, "coverage": 40, "covers": [ "head" ] } ] } ] diff --git a/data/json/items/armor/helmets.json b/data/json/items/armor/helmets.json index f2df7ff5c8570..2ed565e6b4ef9 100644 --- a/data/json/items/armor/helmets.json +++ b/data/json/items/armor/helmets.json @@ -14,13 +14,11 @@ "symbol": "[", "looks_like": "helmet_plate", "color": "light_gray", - "covers": [ "head" ], - "coverage": 55, - "encumbrance": 50, "warmth": 5, "material_thickness": 2, "qualities": [ [ "COOK", 3 ], [ "BOIL", 2 ], [ "CONTAIN", 1 ], [ "CHEM", 1 ] ], - "techniques": [ "WBLOCK_1" ] + "techniques": [ "WBLOCK_1" ], + "armor": [ { "encumbrance": 50, "coverage": 55, "covers": [ "head" ] } ] }, { "id": "headgear", @@ -37,13 +35,11 @@ "symbol": "[", "looks_like": "balclava", "color": "red", - "covers": [ "head" ], - "coverage": 75, - "encumbrance": 20, "warmth": 10, "material_thickness": 3, "environmental_protection": 1, - "flags": [ "VARSIZE", "OVERSIZE", "STURDY" ] + "flags": [ "VARSIZE", "OVERSIZE", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 75, "covers": [ "head" ] } ] }, { "id": "helmet_army", @@ -62,13 +58,11 @@ "symbol": "[", "looks_like": "hat_hard", "color": "green", - "covers": [ "head" ], - "coverage": 85, - "encumbrance": 20, "warmth": 20, "material_thickness": 9, "techniques": [ "WBLOCK_1" ], - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 85, "covers": [ "head" ] } ] }, { "id": "tac_fullhelmet", @@ -77,26 +71,26 @@ "category": "armor", "name": { "str": "tactical full helmet" }, "description": "An all-encompassing black helmet that covers your entire face and neck, providing excellent protection from all sorts of damage.", - "weight": "1324 g", - "volume": "2 L", - "price": 50000, - "price_postapoc": 1000, + "weight": "1594 g", + "volume": "2250 ml", + "price": 25000, + "price_postapoc": 2500, "to_hit": -1, "bashing": 10, "material": [ "kevlar_rigid", "plastic" ], "symbol": "[", "looks_like": "helmet_motor", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 30 }, - { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 5 }, - { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 10 } + { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 20 }, + { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 15 } ], - "warmth": 15, - "material_thickness": 5, + "warmth": 25, + "material_thickness": 8, "environmental_protection": 2, "techniques": [ "WBLOCK_1" ], - "flags": [ "VARSIZE", "STURDY", "SUN_GLASSES" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY", "SUN_GLASSES" ] }, { "id": "tac_helmet", @@ -105,23 +99,21 @@ "category": "armor", "name": { "str": "tactical helmet" }, "description": "A lightweight black helmet that provides excellent protection from all sorts of damage.", - "weight": "1110 g", - "volume": "2 L", - "price": 37000, - "price_postapoc": 750, + "weight": "1180 g", + "volume": "1850 ml", + "price": 20000, + "price_postapoc": 2000, "to_hit": -1, "bashing": 10, "material": [ "kevlar_rigid", "plastic" ], "symbol": "[", "looks_like": "tac_fullhelmet", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 95, - "encumbrance": 15, - "warmth": 10, - "material_thickness": 4, + "warmth": 20, + "material_thickness": 8, "techniques": [ "WBLOCK_1" ], - "flags": [ "WATER_FRIENDLY", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 16, "coverage": 95, "covers": [ "head" ] } ] }, { "id": "firehelmet", @@ -140,13 +132,11 @@ "symbol": "[", "looks_like": "cowboy_hat", "color": "yellow", - "covers": [ "head" ], - "coverage": 75, - "encumbrance": 40, "warmth": 15, "material_thickness": 6, "environmental_protection": 6, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 40, "coverage": 75, "covers": [ "head" ] } ] }, { "id": "helmet_ball", @@ -165,13 +155,11 @@ "symbol": "[", "looks_like": "hat_hard", "color": "blue", - "covers": [ "head" ], - "coverage": 95, - "encumbrance": 20, "warmth": 15, "material_thickness": 3, "environmental_protection": 1, - "techniques": [ "WBLOCK_1" ] + "techniques": [ "WBLOCK_1" ], + "armor": [ { "encumbrance": 20, "coverage": 95, "covers": [ "head" ] } ] }, { "id": "helmet_barbute", @@ -188,7 +176,7 @@ "symbol": "[", "looks_like": "helmet_plate", "color": "light_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 95, "encumbrance": 20 }, { "covers": [ "eyes", "mouth" ], "coverage": 65, "encumbrance": 0 } ], @@ -222,12 +210,10 @@ "symbol": "[", "looks_like": "hat_hard", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 75, - "encumbrance": 15, "warmth": 15, "material_thickness": 4, - "techniques": [ "WBLOCK_1" ] + "techniques": [ "WBLOCK_1" ], + "armor": [ { "encumbrance": 15, "coverage": 75, "covers": [ "head" ] } ] }, { "id": "helmet_chitin", @@ -245,7 +231,7 @@ "symbol": "[", "looks_like": "helmet_larmor", "color": "green", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 90, "encumbrance": 10 }, { "covers": [ "mouth", "eyes" ], "coverage": 90, "encumbrance": 5 } ], @@ -278,13 +264,11 @@ "symbol": "[", "looks_like": "helmet_barbute", "color": "brown", - "covers": [ "head" ], - "coverage": 90, - "encumbrance": 20, "warmth": 35, "material_thickness": 3, "techniques": [ "WBLOCK_1" ], - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 90, "covers": [ "head" ] } ] }, { "id": "xl_helmet_conical", @@ -331,7 +315,7 @@ "symbol": "[", "looks_like": "helmet_motor", "color": "yellow", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 95, "encumbrance": 50 }, { "covers": [ "eyes" ], "coverage": 75, "encumbrance": 5 }, { "covers": [ "mouth" ], "coverage": 85, "encumbrance": 0 } @@ -355,7 +339,7 @@ "symbol": "[", "looks_like": "helmet_barbute", "color": "light_gray", - "armor_portion_data": [ { "covers": [ "head" ], "coverage": 90, "encumbrance": 10 } ], + "armor": [ { "covers": [ "head" ], "coverage": 90, "encumbrance": 10 } ], "warmth": 10, "material_thickness": 3, "techniques": [ "WBLOCK_1" ], @@ -386,7 +370,7 @@ "symbol": "[", "looks_like": "helmet_barbute", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 95, "encumbrance": 20 }, { "covers": [ "eyes" ], "coverage": 35, "encumbrance": 0 }, { "covers": [ "mouth" ], "coverage": 95, "encumbrance": 10 } @@ -420,13 +404,11 @@ "symbol": "[", "looks_like": "hat_hard", "color": "brown", - "covers": [ "head" ], - "coverage": 85, - "encumbrance": 20, "warmth": 10, "material_thickness": 3, "techniques": [ "WBLOCK_1" ], - "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 85, "covers": [ "head" ] } ] }, { "id": "xl_helmet_larmor", @@ -449,11 +431,9 @@ "material": [ "leather", "bone" ], "symbol": "[", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 85, - "encumbrance": 26, "material_thickness": 3, - "flags": [ "WATER_FRIENDLY" ] + "flags": [ "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 26, "coverage": 85, "covers": [ "head" ] } ] }, { "id": "helmet_liner", @@ -471,11 +451,10 @@ "symbol": "[", "looks_like": "balclava", "color": "green", - "covers": [ "head" ], - "coverage": 100, "warmth": 30, "material_thickness": 0.5, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 100, "covers": [ "head" ] } ] }, { "id": "helmet_lobster", @@ -494,7 +473,7 @@ "symbol": "[", "looks_like": "helmet_barbute", "color": "light_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 98, "encumbrance": 20 }, { "covers": [ "eyes" ], "coverage": 65, "encumbrance": 0 }, { "covers": [ "mouth" ], "coverage": 40, "encumbrance": 0 } @@ -520,7 +499,7 @@ "material": [ "plastic", "nomex" ], "symbol": "[", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 25 }, { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 5 }, { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 15 } @@ -546,7 +525,7 @@ "symbol": "[", "looks_like": "helmet_barbute", "color": "light_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 85, "encumbrance": 10 }, { "covers": [ "eyes" ], "coverage": 25, "encumbrance": 0 } ], @@ -578,7 +557,7 @@ "symbol": "[", "looks_like": "balclava", "color": "white", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 95, "encumbrance": 20 }, { "covers": [ "eyes", "mouth" ], "coverage": 95, "encumbrance": 5 } ], @@ -611,7 +590,7 @@ "symbol": "[", "looks_like": "helmet_barbute", "color": "light_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 40 }, { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 30 }, { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 20 } @@ -645,7 +624,7 @@ "symbol": "[", "looks_like": "mask_gas", "color": "white", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 23 }, { "covers": [ "eyes", "mouth" ], "coverage": 100, "encumbrance": 5 } ], @@ -680,7 +659,7 @@ "symbol": "[", "looks_like": "helmet_plate", "color": "light_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 80, "encumbrance": 35 }, { "covers": [ "eyes", "mouth" ], "coverage": 80, "encumbrance": 10 } ], @@ -713,12 +692,10 @@ "symbol": "[", "looks_like": "helmet_bike", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 65, - "encumbrance": 20, "warmth": 10, "material_thickness": 4, - "techniques": [ "WBLOCK_1" ] + "techniques": [ "WBLOCK_1" ], + "armor": [ { "encumbrance": 20, "coverage": 65, "covers": [ "head" ] } ] }, { "id": "pickelhaube", @@ -738,12 +715,10 @@ "symbol": "[", "looks_like": "helmet_plate", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 70, - "encumbrance": 20, "warmth": 15, "material_thickness": 3, - "flags": [ "STAB" ] + "flags": [ "STAB" ], + "armor": [ { "encumbrance": 20, "coverage": 70, "covers": [ "head" ] } ] }, { "id": "helmet_corinthian", @@ -760,7 +735,7 @@ "symbol": "[", "looks_like": "helmet_plate", "color": "yellow", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 95, "encumbrance": 30 }, { "covers": [ "eyes" ], "coverage": 75, "encumbrance": 0 }, { "covers": [ "mouth" ], "coverage": 75, "encumbrance": 0 } @@ -794,12 +769,10 @@ "symbol": "[", "looks_like": "pot_helmet", "color": "light_gray", - "covers": [ "head" ], - "coverage": 55, - "encumbrance": 50, "warmth": 5, "material_thickness": 2, "techniques": [ "WBLOCK_1" ], - "flags": [ "OVERSIZE" ] + "flags": [ "OVERSIZE" ], + "armor": [ { "encumbrance": 50, "coverage": 55, "covers": [ "head" ] } ] } ] diff --git a/data/json/items/armor/holster.json b/data/json/items/armor/holster.json index 6b49e245ccfbe..fe852acd38dbe 100644 --- a/data/json/items/armor/holster.json +++ b/data/json/items/armor/holster.json @@ -12,10 +12,6 @@ "symbol": "[", "looks_like": "quiver_large", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 5, - "encumbrance": 3, - "max_encumbrance": 15, "material_thickness": 1, "pocket_data": [ { @@ -29,7 +25,8 @@ } ], "use_action": { "type": "holster" }, - "flags": [ "BELTED", "OVERSIZE", "NO_QUICKDRAW" ] + "flags": [ "BELTED", "OVERSIZE", "NO_QUICKDRAW" ], + "armor": [ { "encumbrance": [ 3, 15 ], "coverage": 5, "covers": [ "torso" ] } ] }, { "id": "baldric_holster", @@ -44,9 +41,6 @@ "symbol": "[", "looks_like": "quiver_large", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 20, - "encumbrance": 2, "material_thickness": 1, "pocket_data": [ { @@ -105,7 +99,8 @@ } ], "use_action": { "type": "holster" }, - "flags": [ "WATER_FRIENDLY", "BELTED", "OVERSIZE" ] + "flags": [ "WATER_FRIENDLY", "BELTED", "OVERSIZE" ], + "armor": [ { "encumbrance": 2, "coverage": 20, "covers": [ "torso" ] } ] }, { "id": "bootstrap", @@ -120,11 +115,7 @@ "symbol": "[", "looks_like": "holster", "color": "brown", - "covers": [ "foot_l", "foot_r" ], "sided": true, - "coverage": 5, - "encumbrance": 3, - "max_encumbrance": 4, "material_thickness": 1, "flags": [ "BELTED", "OVERSIZE", "ALLOWS_NATURAL_ATTACKS", "NOT_FOOTWEAR" ], "pocket_data": [ @@ -138,7 +129,8 @@ "moves": 150 } ], - "use_action": { "type": "holster" } + "use_action": { "type": "holster" }, + "armor": [ { "encumbrance": [ 3, 4 ], "coverage": 5, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "bow_sling", @@ -153,10 +145,6 @@ "symbol": "[", "looks_like": "slingpack", "color": "green", - "covers": [ "torso" ], - "coverage": 5, - "encumbrance": 3, - "max_encumbrance": 7, "material_thickness": 1, "flags": [ "OVERSIZE", "WAIST" ], "pocket_data": [ @@ -171,7 +159,8 @@ "flag_restriction": [ "SHEATH_BOW" ] } ], - "use_action": { "type": "holster" } + "use_action": { "type": "holster" }, + "armor": [ { "encumbrance": [ 3, 7 ], "coverage": 5, "covers": [ "torso" ] } ] }, { "id": "holster", @@ -186,11 +175,7 @@ "symbol": "[", "looks_like": "sheath", "color": "light_gray", - "covers": [ "leg_l", "leg_r" ], "sided": true, - "coverage": 5, - "encumbrance": 3, - "max_encumbrance": 4, "material_thickness": 1, "pocket_data": [ { @@ -205,7 +190,8 @@ } ], "use_action": { "type": "holster" }, - "flags": [ "WAIST", "OVERSIZE" ] + "flags": [ "WAIST", "OVERSIZE" ], + "armor": [ { "encumbrance": [ 3, 4 ], "coverage": 5, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "western_holster", @@ -214,10 +200,10 @@ "name": { "str": "western holster" }, "description": "A western style holster as worn by cowboys and gunfighters in the movies and on TV. Has loops across the back to hold spare ammo. Activate to holster/draw a gun.", "price_postapoc": 500, - "armor_portion_data": [ + "sided": true, + "armor": [ { "covers": [ "torso" ], "coverage": 5, "encumbrance": [ 1, 1 ] }, - { "covers": [ "leg_l", "leg_r" ], "coverage": 5, "encumbrance": [ 2, 3 ] }, - { "sided": true } + { "covers": [ "leg_l", "leg_r" ], "coverage": 5, "encumbrance": [ 2, 3 ] } ], "pocket_data": [ { @@ -266,8 +252,6 @@ "name": { "str": "fast draw holster" }, "description": "A comfortable quick draw holster for small guns. Activate to holster/draw a gun.", "price_postapoc": 500, - "encumbrance": 1, - "max_encumbrance": 2, "pocket_data": [ { "magazine_well": "200 ml", @@ -280,7 +264,8 @@ "moves": 30 } ], - "use_action": { "type": "holster" } + "use_action": { "type": "holster" }, + "armor": [ { "encumbrance": [ 1, 2 ], "coverage": 5, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "bholster", @@ -293,9 +278,6 @@ "price": 3000, "price_postapoc": 500, "material": [ "lycra" ], - "covers": [ "leg_l", "leg_r" ], - "encumbrance": 1, - "max_encumbrance": 3, "pocket_data": [ { "magazine_well": "150 ml", @@ -309,7 +291,8 @@ } ], "use_action": { "type": "holster" }, - "flags": [ "SKINTIGHT", "WATER_FRIENDLY" ] + "flags": [ "SKINTIGHT", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 1, 3 ], "coverage": 5, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "survivor_vest", @@ -324,10 +307,6 @@ "symbol": "[", "looks_like": "tacvest", "color": "green", - "covers": [ "torso" ], - "coverage": 20, - "encumbrance": 4, - "max_encumbrance": 12, "material_thickness": 2, "pocket_data": [ { @@ -362,7 +341,8 @@ } ], "use_action": { "type": "holster" }, - "flags": [ "WATER_FRIENDLY", "STURDY", "WAIST" ] + "flags": [ "WATER_FRIENDLY", "STURDY", "WAIST" ], + "armor": [ { "encumbrance": [ 4, 12 ], "coverage": 20, "covers": [ "torso" ] } ] }, { "id": "xl_survivor_vest", @@ -386,11 +366,7 @@ "symbol": "[", "looks_like": "quiver_large", "color": "light_gray", - "covers": [ "leg_l", "leg_r" ], "sided": true, - "coverage": 10, - "encumbrance": 2, - "max_encumbrance": 7, "material_thickness": 1, "pocket_data": [ { @@ -404,6 +380,7 @@ } ], "use_action": { "type": "holster" }, - "flags": [ "WAIST", "OVERSIZE" ] + "flags": [ "WAIST", "OVERSIZE" ], + "armor": [ { "encumbrance": [ 2, 7 ], "coverage": 10, "covers": [ "leg_l", "leg_r" ] } ] } ] diff --git a/data/json/items/armor/hoods.json b/data/json/items/armor/hoods.json index 4e3649c008d37..58547ad001199 100644 --- a/data/json/items/armor/hoods.json +++ b/data/json/items/armor/hoods.json @@ -13,7 +13,7 @@ "symbol": "[", "looks_like": "cowboy_hat", "color": "white", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 20 }, { "covers": [ "eyes", "mouth" ], "coverage": 100, "encumbrance": 5 } ], @@ -37,11 +37,9 @@ "symbol": "[", "looks_like": "balclava", "color": "light_red", - "covers": [ "head" ], - "coverage": 95, - "encumbrance": 10, "material_thickness": 4, - "flags": [ "VARSIZE", "STURDY", "HELMET_COMPAT" ] + "flags": [ "VARSIZE", "STURDY", "HELMET_COMPAT" ], + "armor": [ { "encumbrance": 10, "coverage": 95, "covers": [ "head" ] } ] }, { "id": "xl_chainmail_hood", @@ -68,13 +66,11 @@ "symbol": "[", "looks_like": "hood_survivor", "color": "light_gray", - "covers": [ "head" ], - "coverage": 100, - "encumbrance": 30, "warmth": 15, "material_thickness": 5, "environmental_protection": 10, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY", "OUTER", "HELMET_COMPAT" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY", "OUTER", "HELMET_COMPAT" ], + "armor": [ { "encumbrance": 30, "coverage": 100, "covers": [ "head" ] } ] }, { "id": "xl_hood_fsurvivor", @@ -101,13 +97,11 @@ "symbol": "[", "looks_like": "hood_survivor", "color": "green", - "covers": [ "head" ], - "coverage": 100, - "encumbrance": 15, "warmth": 10, "material_thickness": 4, "environmental_protection": 3, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY", "OUTER", "HELMET_COMPAT" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY", "OUTER", "HELMET_COMPAT" ], + "armor": [ { "encumbrance": 15, "coverage": 100, "covers": [ "head" ] } ] }, { "id": "xl_hood_lsurvivor", @@ -155,12 +149,11 @@ "symbol": "[", "looks_like": "hat_cotton", "color": "yellow", - "covers": [ "head" ], - "coverage": 100, "warmth": 10, "material_thickness": 0.3, "environmental_protection": 1, - "flags": [ "WATERPROOF", "OUTER", "HELMET_COMPAT" ] + "flags": [ "WATERPROOF", "OUTER", "HELMET_COMPAT" ], + "armor": [ { "coverage": 100, "covers": [ "head" ] } ] }, { "id": "hood_survivor", @@ -178,14 +171,12 @@ "symbol": "[", "looks_like": "hood_rain", "color": "brown", - "covers": [ "head" ], - "coverage": 100, - "encumbrance": 25, "warmth": 15, "material_thickness": 4, "environmental_protection": 3, "techniques": [ "WBLOCK_1" ], - "flags": [ "VARSIZE", "WATERPROOF", "STURDY", "OUTER", "HELMET_COMPAT" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY", "OUTER", "HELMET_COMPAT" ], + "armor": [ { "encumbrance": 25, "coverage": 100, "covers": [ "head" ] } ] }, { "id": "hood_wsurvivor", @@ -203,13 +194,11 @@ "symbol": "[", "looks_like": "hood_survivor", "color": "light_gray", - "covers": [ "head" ], - "coverage": 100, - "encumbrance": 37, "warmth": 75, "material_thickness": 5, "environmental_protection": 5, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY", "OUTER", "HELMET_COMPAT" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY", "OUTER", "HELMET_COMPAT" ], + "armor": [ { "encumbrance": 37, "coverage": 100, "covers": [ "head" ] } ] }, { "id": "xl_hood_wsurvivor", @@ -236,14 +225,12 @@ "symbol": "[", "looks_like": "hood_survivor", "color": "brown", - "covers": [ "head" ], - "coverage": 100, - "encumbrance": 40, "warmth": 15, "material_thickness": 3, "environmental_protection": 3, "techniques": [ "WBLOCK_1" ], - "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY", "OUTER", "HELMET_COMPAT" ] + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY", "OUTER", "HELMET_COMPAT" ], + "armor": [ { "encumbrance": 40, "coverage": 100, "covers": [ "head" ] } ] }, { "id": "nomex_hood", @@ -259,13 +246,11 @@ "symbol": "[", "looks_like": "hood_rain", "color": "light_gray", - "covers": [ "head" ], - "coverage": 100, - "encumbrance": 6, "warmth": 5, "material_thickness": 3, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT", "STURDY" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT", "STURDY" ], + "armor": [ { "encumbrance": 6, "coverage": 100, "covers": [ "head" ] } ] }, { "id": "hood_gut", @@ -280,11 +265,10 @@ "symbol": "[", "looks_like": "hood_rain", "color": "light_gray", - "covers": [ "head" ], - "coverage": 95, "warmth": 10, "material_thickness": 0.1, "environmental_protection": 1, - "flags": [ "WATERPROOF", "RAINPROOF", "OUTER", "HELMET_COMPAT" ] + "flags": [ "WATERPROOF", "RAINPROOF", "OUTER", "HELMET_COMPAT" ], + "armor": [ { "coverage": 95, "covers": [ "head" ] } ] } ] diff --git a/data/json/items/armor/jewelry.json b/data/json/items/armor/jewelry.json index 3f02bcb03d685..bbf33b3dcb804 100644 --- a/data/json/items/armor/jewelry.json +++ b/data/json/items/armor/jewelry.json @@ -86,9 +86,8 @@ "symbol": "[", "looks_like": "gold_dental_grill", "color": "yellow", - "covers": [ "mouth" ], - "encumbrance": 10, - "flags": [ "SKINTIGHT" ] + "flags": [ "SKINTIGHT" ], + "armor": [ { "encumbrance": 10, "covers": [ "mouth" ] } ] }, { "id": "garnet_dental_grill", @@ -105,9 +104,8 @@ "symbol": "[", "looks_like": "gold_dental_grill", "color": "red", - "covers": [ "mouth" ], - "encumbrance": 10, - "flags": [ "SKINTIGHT" ] + "flags": [ "SKINTIGHT" ], + "armor": [ { "encumbrance": 10, "covers": [ "mouth" ] } ] }, { "id": "amethyst_dental_grill", @@ -230,11 +228,10 @@ "symbol": "[", "looks_like": "gold_watch", "color": "light_gray", - "covers": [ "hand_l", "hand_r" ], "sided": true, - "coverage": 5, "use_action": [ "WEATHER_TOOL" ], - "flags": [ "WATCH", "ALARMCLOCK", "WATER_FRIENDLY", "THERMOMETER", "BELTED", "ALLOWS_NATURAL_ATTACKS", "OVERSIZE" ] + "flags": [ "WATCH", "ALARMCLOCK", "WATER_FRIENDLY", "THERMOMETER", "BELTED", "ALLOWS_NATURAL_ATTACKS", "OVERSIZE" ], + "armor": [ { "coverage": 5, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "collarpin", @@ -799,8 +796,8 @@ "material": [ "gold" ], "symbol": "[", "color": "yellow", - "covers": [ "mouth" ], - "flags": [ "SKINTIGHT" ] + "flags": [ "SKINTIGHT" ], + "armor": [ { "covers": [ "mouth" ] } ] }, { "id": "gold_ear", @@ -899,10 +896,9 @@ "material": [ "steel", "gold" ], "symbol": "[", "color": "yellow", - "covers": [ "hand_l", "hand_r" ], "sided": true, - "coverage": 5, - "flags": [ "WATCH", "ALARMCLOCK", "FANCY", "BELTED", "FRAGILE", "ALLOWS_NATURAL_ATTACKS", "OVERSIZE" ] + "flags": [ "WATCH", "ALARMCLOCK", "FANCY", "BELTED", "FRAGILE", "ALLOWS_NATURAL_ATTACKS", "OVERSIZE" ], + "armor": [ { "coverage": 5, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "tieclip", @@ -930,10 +926,9 @@ "material": [ "steel", "silver" ], "symbol": "[", "color": "light_gray", - "covers": [ "hand_l", "hand_r" ], "sided": true, - "coverage": 10, - "flags": [ "WATCH", "ALARMCLOCK", "FANCY", "BELTED", "FRAGILE", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY", "OVERSIZE" ] + "flags": [ "WATCH", "ALARMCLOCK", "FANCY", "BELTED", "FRAGILE", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY", "OVERSIZE" ], + "armor": [ { "coverage": 10, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "silver_bracelet", @@ -977,10 +972,9 @@ "material": [ "gold", "silver" ], "symbol": "[", "color": "yellow", - "covers": [ "hand_l", "hand_r" ], "sided": true, - "coverage": 10, - "flags": [ "WATCH", "ALARMCLOCK", "SUPER_FANCY", "BELTED", "FRAGILE", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY", "OVERSIZE" ] + "flags": [ "WATCH", "ALARMCLOCK", "SUPER_FANCY", "BELTED", "FRAGILE", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY", "OVERSIZE" ], + "armor": [ { "coverage": 10, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "small_relic", @@ -1066,10 +1060,9 @@ "material": [ "platinum" ], "symbol": "[", "color": "white", - "covers": [ "hand_l", "hand_r" ], "sided": true, - "coverage": 5, - "flags": [ "WATCH", "ALARMCLOCK", "SUPER_FANCY", "BELTED", "FRAGILE", "ALLOWS_NATURAL_ATTACKS", "OVERSIZE" ] + "flags": [ "WATCH", "ALARMCLOCK", "SUPER_FANCY", "BELTED", "FRAGILE", "ALLOWS_NATURAL_ATTACKS", "OVERSIZE" ], + "armor": [ { "coverage": 5, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "platinum_bracelet", @@ -1099,8 +1092,8 @@ "material": [ "platinum", "silver" ], "symbol": "[", "color": "white", - "covers": [ "mouth" ], - "flags": [ "SKINTIGHT" ] + "flags": [ "SKINTIGHT" ], + "armor": [ { "covers": [ "mouth" ] } ] }, { "id": "platinum_ear", @@ -1328,10 +1321,9 @@ "ascii_picture": "wristwatch", "symbol": "[", "color": "dark_gray", - "covers": [ "hand_l", "hand_r" ], "sided": true, - "coverage": 5, - "flags": [ "WATCH", "ALARMCLOCK", "BELTED", "FRAGILE", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY", "OVERSIZE" ] + "flags": [ "WATCH", "ALARMCLOCK", "BELTED", "FRAGILE", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY", "OVERSIZE" ], + "armor": [ { "coverage": 5, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "rad_badge", @@ -1361,9 +1353,9 @@ "symbol": "[", "color": "yellow", "//": "should cover TORSO but give no encumbrance penalties", - "coverage": 2, "material_thickness": 2, - "flags": [ "ALLOWS_NATURAL_ATTACKS", "OUTER", "OVERSIZE", "WATER_FRIENDLY" ] + "flags": [ "ALLOWS_NATURAL_ATTACKS", "OUTER", "OVERSIZE", "WATER_FRIENDLY" ], + "armor": [ { "coverage": 2 } ] }, { "id": "badge_cybercop", @@ -2970,10 +2962,9 @@ "looks_like": "crown_golden", "symbol": "[", "color": "red", - "coverage": 5, - "encumbrance": 1, "material_thickness": 1, - "flags": [ "SUPER_FANCY" ] + "flags": [ "SUPER_FANCY" ], + "armor": [ { "encumbrance": 1, "coverage": 5 } ] }, { "id": "diamond_platinum_tiara", @@ -3092,10 +3083,9 @@ "looks_like": "crown_golden", "symbol": "[", "color": "red", - "coverage": 5, - "encumbrance": 1, "material_thickness": 1, - "flags": [ "SUPER_FANCY" ] + "flags": [ "SUPER_FANCY" ], + "armor": [ { "encumbrance": 1, "coverage": 5 } ] }, { "id": "diamond_gold_tiara", @@ -3214,10 +3204,9 @@ "looks_like": "crown_golden", "symbol": "[", "color": "red", - "coverage": 5, - "encumbrance": 1, "material_thickness": 1, - "flags": [ "SUPER_FANCY" ] + "flags": [ "SUPER_FANCY" ], + "armor": [ { "encumbrance": 1, "coverage": 5 } ] }, { "id": "diamond_silver_tiara", diff --git a/data/json/items/armor/legs_armor.json b/data/json/items/armor/legs_armor.json index 60502c2801cd6..76a5fc9a7629d 100644 --- a/data/json/items/armor/legs_armor.json +++ b/data/json/items/armor/legs_armor.json @@ -15,12 +15,10 @@ "symbol": "[", "looks_like": "leg_splint", "color": "brown", - "covers": [ "leg_l", "leg_r" ], - "coverage": 75, - "encumbrance": 25, "warmth": 5, "material_thickness": 3, - "flags": [ "BELTED", "WATER_FRIENDLY", "ALLOWS_TAIL" ] + "flags": [ "BELTED", "WATER_FRIENDLY", "ALLOWS_TAIL" ], + "armor": [ { "encumbrance": 25, "coverage": 75, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "legguard_chitin", @@ -37,13 +35,11 @@ "symbol": "[", "looks_like": "legguard_hard", "color": "green", - "covers": [ "leg_l", "leg_r" ], - "coverage": 80, - "encumbrance": 4, "warmth": 10, "material_thickness": 4, "environmental_protection": 2, - "flags": [ "STURDY", "BELTED", "BLOCK_WHILE_WORN", "WATER_FRIENDLY" ] + "flags": [ "STURDY", "BELTED", "BLOCK_WHILE_WORN", "WATER_FRIENDLY", "ALLOWS_TAIL" ], + "armor": [ { "encumbrance": 4, "coverage": 80, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "legguard_acidchitin", @@ -74,10 +70,6 @@ "symbol": "[", "looks_like": "pants_cargo", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 100, - "encumbrance": 24, - "max_encumbrance": 30, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -112,7 +104,8 @@ "material_thickness": 2, "valid_mods": [ "steel_padded" ], "environmental_protection": 6, - "flags": [ "VARSIZE", "POCKETS", "STURDY", "WATERPROOF", "OUTER" ] + "flags": [ "VARSIZE", "POCKETS", "STURDY", "WATERPROOF", "OUTER" ], + "armor": [ { "encumbrance": [ 24, 30 ], "coverage": 100, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "chainmail_legs", @@ -129,11 +122,9 @@ "symbol": "[", "looks_like": "legguard_hard", "color": "light_red", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 20, "material_thickness": 4, - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "xl_chainmail_legs", @@ -158,12 +149,10 @@ "symbol": "[", "looks_like": "pants_leather", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 65, - "encumbrance": 3, "warmth": 10, "material_thickness": 3, - "flags": [ "OUTER" ] + "flags": [ "OUTER" ], + "armor": [ { "encumbrance": 3, "coverage": 65, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "chaps_cut_resistant", @@ -190,10 +179,6 @@ "symbol": "[", "looks_like": "pants", "color": "white", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 13, - "max_encumbrance": 15, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -212,7 +197,8 @@ ], "warmth": 20, "material_thickness": 2, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": [ 13, 15 ], "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "knee_pads", @@ -229,10 +215,9 @@ "symbol": "[", "looks_like": "legguard_hard", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 30, "material_thickness": 5, - "flags": [ "WATER_FRIENDLY", "BELTED", "ALLOWS_TAIL" ] + "flags": [ "WATER_FRIENDLY", "BELTED", "ALLOWS_TAIL" ], + "armor": [ { "coverage": 30, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "legguard_bronze", @@ -249,12 +234,10 @@ "symbol": "[", "looks_like": "legguard_lightplate", "color": "yellow", - "covers": [ "leg_l", "leg_r" ], - "coverage": 70, - "encumbrance": 10, "warmth": 15, "material_thickness": 4, - "flags": [ "BELTED", "STURDY", "ALLOWS_TAIL" ] + "flags": [ "BELTED", "STURDY", "ALLOWS_TAIL" ], + "armor": [ { "encumbrance": 10, "coverage": 70, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "xl_legguard_bronze", @@ -280,13 +263,11 @@ "symbol": "[", "looks_like": "leg_warmers", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 75, - "encumbrance": 10, "warmth": 20, "material_thickness": 4, "environmental_protection": 1, - "flags": [ "BELTED", "WATER_FRIENDLY", "ALLOWS_TAIL" ] + "flags": [ "BELTED", "WATER_FRIENDLY", "ALLOWS_TAIL" ], + "armor": [ { "encumbrance": 10, "coverage": 75, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "legguard_lightplate", @@ -303,12 +284,10 @@ "symbol": "[", "looks_like": "legguard_hard", "color": "light_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 20, "warmth": 20, "material_thickness": 4, - "flags": [ "VARSIZE", "BELTED", "STURDY", "ALLOWS_TAIL" ] + "flags": [ "VARSIZE", "BELTED", "STURDY", "ALLOWS_TAIL" ], + "armor": [ { "encumbrance": 20, "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "xl_legguard_lightplate", @@ -334,12 +313,10 @@ "symbol": "[", "looks_like": "legguard_lightplate", "color": "light_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 70, - "encumbrance": 6, "warmth": 10, "material_thickness": 4, - "flags": [ "BELTED", "WATER_FRIENDLY", "ALLOWS_TAIL" ] + "flags": [ "BELTED", "WATER_FRIENDLY", "ALLOWS_TAIL" ], + "armor": [ { "encumbrance": 6, "coverage": 70, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "xl_legguard_metal", @@ -365,12 +342,10 @@ "symbol": "[", "looks_like": "legguard_hard", "color": "blue", - "covers": [ "leg_l", "leg_r" ], - "coverage": 80, - "encumbrance": 10, "warmth": 5, "material_thickness": 3, - "flags": [ "BELTED", "ALLOWS_TAIL" ] + "flags": [ "BELTED", "ALLOWS_TAIL" ], + "armor": [ { "encumbrance": 10, "coverage": 80, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "legguard_scrap", @@ -389,12 +364,10 @@ "symbol": "[", "looks_like": "legguard_metal", "color": "light_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 80, - "encumbrance": 18, "warmth": 10, "material_thickness": 2, - "flags": [ "BELTED", "ALLOWS_TAIL" ] + "flags": [ "BELTED", "ALLOWS_TAIL" ], + "armor": [ { "encumbrance": 18, "coverage": 80, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "xl_legguard_scrap", @@ -419,10 +392,6 @@ "symbol": "[", "looks_like": "pants_survivor", "color": "green", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 8, - "max_encumbrance": 16, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -470,7 +439,8 @@ "warmth": 12, "material_thickness": 3, "environmental_protection": 1, - "flags": [ "VARSIZE", "WATERPROOF", "POCKETS", "RAINPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "POCKETS", "RAINPROOF", "STURDY" ], + "armor": [ { "encumbrance": [ 8, 16 ], "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "xl_lsurvivor_pants", @@ -495,13 +465,11 @@ "symbol": "[", "looks_like": "pants_leather", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 100, - "encumbrance": 20, "warmth": 35, "material_thickness": 1.5, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATERPROOF" ] + "flags": [ "VARSIZE", "WATERPROOF" ], + "armor": [ { "encumbrance": 20, "coverage": 100, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "pants_survivor", @@ -517,10 +485,6 @@ "symbol": "[", "looks_like": "pants_army", "color": "green", - "covers": [ "leg_l", "leg_r" ], - "coverage": 100, - "encumbrance": 10, - "max_encumbrance": 20, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -583,7 +547,8 @@ "material_thickness": 4, "valid_mods": [ "steel_padded" ], "environmental_protection": 3, - "flags": [ "VARSIZE", "POCKETS", "STURDY", "WATERPROOF" ] + "flags": [ "VARSIZE", "POCKETS", "STURDY", "WATERPROOF" ], + "armor": [ { "encumbrance": [ 10, 20 ], "coverage": 100, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "xl_pants_survivor", @@ -603,16 +568,14 @@ "weight": "6400 g", "volume": "12 L", "price": 200000, - "covers": [ "leg_l", "leg_r" ], - "coverage": 100, - "encumbrance": 80, "warmth": 65, "material": [ "kevlar_layered", "nomex" ], "symbol": "[", "color": "light_gray", "environmental_protection": 2, "material_thickness": 15, - "flags": [ "STURDY", "OUTER", "RAINPROOF", "ONLY_ONE" ] + "flags": [ "STURDY", "OUTER", "RAINPROOF", "ONLY_ONE" ], + "armor": [ { "encumbrance": 80, "coverage": 100, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "trousers_eod_light", @@ -623,15 +586,13 @@ "weight": "3000 g", "volume": "12 L", "price": 200000, - "covers": [ "leg_l", "leg_r" ], - "coverage": 100, - "encumbrance": 40, "warmth": 40, "material": [ "kevlar_layered", "nomex" ], "symbol": "[", "color": "light_gray", "environmental_protection": 2, "material_thickness": 7, - "flags": [ "STURDY", "OUTER", "RAINPROOF", "ONLY_ONE" ] + "flags": [ "STURDY", "OUTER", "RAINPROOF", "ONLY_ONE" ], + "armor": [ { "encumbrance": 40, "coverage": 100, "covers": [ "leg_l", "leg_r" ] } ] } ] diff --git a/data/json/items/armor/legs_clothes.json b/data/json/items/armor/legs_clothes.json index 2cec4d2ef900e..a992d7f202ddd 100644 --- a/data/json/items/armor/legs_clothes.json +++ b/data/json/items/armor/legs_clothes.json @@ -13,10 +13,6 @@ "symbol": "[", "looks_like": "kilt", "color": "brown", - "covers": [ "leg_l", "leg_r" ], - "coverage": 90, - "encumbrance": 7, - "max_encumbrance": 11, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -28,7 +24,8 @@ ], "warmth": 8, "material_thickness": 0.3, - "flags": [ "VARSIZE", "POCKETS" ] + "flags": [ "VARSIZE", "POCKETS" ], + "armor": [ { "encumbrance": [ 7, 11 ], "coverage": 90, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "b_shorts", @@ -45,8 +42,6 @@ "symbol": "[", "looks_like": "shorts", "color": "cyan", - "covers": [ "leg_l", "leg_r" ], - "coverage": 50, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -65,7 +60,8 @@ ], "warmth": 5, "material_thickness": 0.1, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "coverage": 50, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "breeches", @@ -81,12 +77,10 @@ "symbol": "[", "looks_like": "pants", "color": "brown", - "covers": [ "leg_l", "leg_r" ], - "coverage": 80, - "encumbrance": 8, "warmth": 10, "material_thickness": 0.4, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 8, "coverage": 80, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "fishing_waders", @@ -102,7 +96,7 @@ "symbol": "[", "looks_like": "pants_ski", "color": "green", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": [ 19, 23 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": [ 19, 21 ] }, { "covers": [ "foot_l", "foot_r" ], "coverage": 100, "encumbrance": [ 19, 19 ] } @@ -134,10 +128,9 @@ "symbol": "[", "looks_like": "boxer_briefs", "color": "light_red", - "covers": [ "leg_l", "leg_r" ], - "coverage": 15, "material_thickness": 0.1, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ], + "armor": [ { "coverage": 15, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "hot_pants_fur", @@ -152,11 +145,10 @@ "symbol": "[", "looks_like": "hot_pants_leather", "color": "brown", - "covers": [ "leg_l", "leg_r" ], - "coverage": 15, "warmth": 10, "material_thickness": 0.2, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 15, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "hot_pants_leather", @@ -171,11 +163,10 @@ "symbol": "[", "looks_like": "hot_pants", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 15, "warmth": 5, "material_thickness": 0.1, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 15, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "jeans", @@ -191,10 +182,6 @@ "symbol": "[", "looks_like": "pants", "color": "blue", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 12, - "max_encumbrance": 16, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -237,7 +224,8 @@ "id": "jeans5", "text": "An old pair of blue jeans. You are not sure if they are faded through age or stone washed." } - ] + ], + "armor": [ { "encumbrance": [ 12, 16 ], "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "jeans_red", @@ -254,10 +242,6 @@ "symbol": "[", "looks_like": "jeans", "color": "red", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 12, - "max_encumbrance": 16, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -290,7 +274,8 @@ ], "warmth": 10, "material_thickness": 0.25, - "flags": [ "VARSIZE", "POCKETS" ] + "flags": [ "VARSIZE", "POCKETS" ], + "armor": [ { "encumbrance": [ 12, 16 ], "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "kilt", @@ -305,8 +290,6 @@ "symbol": "[", "looks_like": "skirt", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 50, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -318,7 +301,8 @@ ], "warmth": 20, "material_thickness": 0.3, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "coverage": 50, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "kilt_leather", @@ -333,8 +317,6 @@ "symbol": "[", "looks_like": "kilt", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 50, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -346,7 +328,8 @@ ], "warmth": 10, "material_thickness": 1.5, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "coverage": 50, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "leggings", @@ -361,11 +344,10 @@ "symbol": "[", "looks_like": "leg_warmers", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 100, "warmth": 20, "material_thickness": 0.1, - "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ] + "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ], + "armor": [ { "coverage": 100, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "loincloth", @@ -380,10 +362,9 @@ "symbol": "[", "looks_like": "briefs", "color": "brown", - "covers": [ "leg_l", "leg_r" ], - "coverage": 5, "material_thickness": 0.5, - "flags": [ "VARSIZE", "SKINTIGHT", "OVERSIZE" ] + "flags": [ "VARSIZE", "SKINTIGHT", "OVERSIZE" ], + "armor": [ { "coverage": 5, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "loincloth_fur", @@ -398,11 +379,10 @@ "symbol": "[", "looks_like": "loincloth_leather", "color": "brown", - "covers": [ "leg_l", "leg_r" ], - "coverage": 5, "warmth": 5, "material_thickness": 1, - "flags": [ "VARSIZE", "SKINTIGHT", "OVERSIZE" ] + "flags": [ "VARSIZE", "SKINTIGHT", "OVERSIZE" ], + "armor": [ { "coverage": 5, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "loincloth_leather", @@ -417,10 +397,9 @@ "symbol": "[", "looks_like": "loincloth", "color": "brown", - "covers": [ "leg_l", "leg_r" ], - "coverage": 5, "material_thickness": 1, - "flags": [ "VARSIZE", "SKINTIGHT", "OVERSIZE" ] + "flags": [ "VARSIZE", "SKINTIGHT", "OVERSIZE" ], + "armor": [ { "coverage": 5, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "loincloth_wool", @@ -435,11 +414,10 @@ "symbol": "[", "looks_like": "loincloth", "color": "blue", - "covers": [ "leg_l", "leg_r" ], - "coverage": 5, "warmth": 5, "material_thickness": 1, - "flags": [ "VARSIZE", "SKINTIGHT", "OVERSIZE" ] + "flags": [ "VARSIZE", "SKINTIGHT", "OVERSIZE" ], + "armor": [ { "coverage": 5, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "nanoskirt", @@ -455,10 +433,9 @@ "symbol": "[", "looks_like": "skirt", "color": "pink", - "covers": [ "leg_l", "leg_r" ], - "coverage": 7, "material_thickness": 0.5, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "coverage": 7, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "pants", @@ -475,10 +452,6 @@ "symbol": "[", "looks_like": "jeans", "color": "brown", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 7, - "max_encumbrance": 11, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -511,7 +484,8 @@ ], "warmth": 15, "material_thickness": 0.2, - "flags": [ "VARSIZE", "POCKETS" ] + "flags": [ "VARSIZE", "POCKETS" ], + "armor": [ { "encumbrance": [ 7, 11 ], "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "pants_army", @@ -527,10 +501,6 @@ "symbol": "[", "looks_like": "pants_cargo", "color": "green", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 9, - "max_encumbrance": 18, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -599,7 +569,8 @@ ], "warmth": 20, "material_thickness": 0.25, - "flags": [ "VARSIZE", "POCKETS" ] + "flags": [ "VARSIZE", "POCKETS" ], + "armor": [ { "encumbrance": [ 9, 18 ], "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "pants_cargo", @@ -614,10 +585,6 @@ "symbol": "[", "looks_like": "pants", "color": "light_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 8, - "max_encumbrance": 16, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -664,7 +631,8 @@ ], "warmth": 15, "material_thickness": 0.25, - "flags": [ "VARSIZE", "POCKETS" ] + "flags": [ "VARSIZE", "POCKETS" ], + "armor": [ { "encumbrance": [ 8, 16 ], "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "pants_checkered", @@ -680,10 +648,6 @@ "symbol": "[", "looks_like": "pants", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 2, - "max_encumbrance": 5, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -716,7 +680,8 @@ ], "warmth": 15, "material_thickness": 0.2, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": [ 2, 5 ], "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "pants_fur", @@ -732,10 +697,6 @@ "symbol": "[", "looks_like": "pants", "color": "brown", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 16, - "max_encumbrance": 20, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -770,7 +731,8 @@ "material_thickness": 1, "valid_mods": [ "steel_padded" ], "environmental_protection": 3, - "flags": [ "VARSIZE", "POCKETS" ] + "flags": [ "VARSIZE", "POCKETS" ], + "armor": [ { "encumbrance": [ 16, 20 ], "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "pants_faux_fur", @@ -779,7 +741,6 @@ "name": { "str_sp": "faux fur pants" }, "description": "A pair of long cotton pants lined with warm imitation fur.", "material": [ "faux_fur", "cotton" ], - "covers": [ "leg_l", "leg_r" ], "warmth": 70 }, { @@ -796,10 +757,6 @@ "symbol": "[", "looks_like": "pants", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 15, - "max_encumbrance": 17, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -819,7 +776,8 @@ "warmth": 25, "material_thickness": 0.75, "valid_mods": [ "steel_padded" ], - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": [ 15, 17 ], "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "pants_ski", @@ -835,10 +793,6 @@ "symbol": "[", "looks_like": "pants", "color": "blue", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 6, - "max_encumbrance": 10, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -872,7 +826,8 @@ "warmth": 70, "material_thickness": 1, "environmental_protection": 3, - "flags": [ "VARSIZE", "POCKETS", "OUTER" ] + "flags": [ "VARSIZE", "POCKETS", "OUTER" ], + "armor": [ { "encumbrance": [ 6, 10 ], "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "postman_shorts", @@ -889,8 +844,6 @@ "symbol": "[", "looks_like": "shorts_cargo", "color": "blue", - "covers": [ "leg_l", "leg_r" ], - "coverage": 40, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -923,7 +876,8 @@ ], "warmth": 5, "material_thickness": 0.2, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "coverage": 40, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "shorts", @@ -939,10 +893,6 @@ "symbol": "[", "looks_like": "boxer_shorts", "color": "brown", - "covers": [ "leg_l", "leg_r" ], - "coverage": 40, - "encumbrance": 2, - "max_encumbrance": 5, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -975,7 +925,8 @@ ], "warmth": 5, "material_thickness": 0.2, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": [ 2, 5 ], "coverage": 40, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "shorts_cargo", @@ -991,10 +942,6 @@ "symbol": "[", "looks_like": "shorts", "color": "light_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 40, - "encumbrance": 2, - "max_encumbrance": 5, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1041,7 +988,8 @@ ], "warmth": 5, "material_thickness": 0.2, - "flags": [ "VARSIZE", "POCKETS" ] + "flags": [ "VARSIZE", "POCKETS" ], + "armor": [ { "encumbrance": [ 2, 5 ], "coverage": 40, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "shorts_denim", @@ -1057,10 +1005,6 @@ "symbol": "[", "looks_like": "shorts", "color": "light_blue", - "covers": [ "leg_l", "leg_r" ], - "coverage": 40, - "encumbrance": 1, - "max_encumbrance": 2, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1084,7 +1028,8 @@ ], "warmth": 5, "material_thickness": 0.25, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": [ 1, 2 ], "coverage": 40, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "skirt", @@ -1100,12 +1045,11 @@ "symbol": "[", "looks_like": "kilt", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 50, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "250 ml", "max_contains_weight": "1 kg", "moves": 80 } ], "warmth": 5, "material_thickness": 0.1, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "coverage": 50, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "skirt_grass", @@ -1120,10 +1064,9 @@ "symbol": "[", "looks_like": "kilt", "color": "yellow", - "covers": [ "leg_l", "leg_r" ], - "coverage": 35, "material_thickness": 1, - "flags": [ "VARSIZE", "OVERSIZE", "WATER_FRIENDLY" ] + "flags": [ "VARSIZE", "OVERSIZE", "WATER_FRIENDLY" ], + "armor": [ { "coverage": 35, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "skirt_leather", @@ -1139,12 +1082,10 @@ "symbol": "[", "looks_like": "skirt", "color": "brown", - "covers": [ "leg_l", "leg_r" ], - "coverage": 35, - "encumbrance": 10, "warmth": 10, "material_thickness": 0.6, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 10, "coverage": 35, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "striped_pants", @@ -1161,10 +1102,6 @@ "symbol": "[", "looks_like": "pants_checkered", "color": "white", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 2, - "max_encumbrance": 5, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1197,7 +1134,8 @@ ], "warmth": 15, "material_thickness": 0.2, - "flags": [ "VARSIZE", "POCKETS" ] + "flags": [ "VARSIZE", "POCKETS" ], + "armor": [ { "encumbrance": [ 2, 5 ], "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "technician_pants_gray", @@ -1214,10 +1152,6 @@ "symbol": "[", "looks_like": "pants", "color": "light_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 2, - "max_encumbrance": 5, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1255,7 +1189,8 @@ { "id": "technician_pants_gray", "text": "A pair of gray work pants." }, { "id": "technician_pants_lightblue", "text": "A pair of light-blue work pants." } ], - "flags": [ "VARSIZE", "POCKETS" ] + "flags": [ "VARSIZE", "POCKETS" ], + "armor": [ { "encumbrance": [ 2, 5 ], "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "winter_pants_army", @@ -1271,10 +1206,6 @@ "symbol": "[", "looks_like": "pants_army", "color": "white", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 11, - "max_encumbrance": 22, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1322,7 +1253,8 @@ "warmth": 50, "material_thickness": 0.5, "valid_mods": [ "steel_padded" ], - "flags": [ "VARSIZE", "POCKETS" ] + "flags": [ "VARSIZE", "POCKETS" ], + "armor": [ { "encumbrance": [ 11, 22 ], "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "zubon_gi", @@ -1337,10 +1269,9 @@ "symbol": "[", "looks_like": "pants", "color": "white", - "covers": [ "leg_l", "leg_r" ], - "coverage": 80, "warmth": 5, "material_thickness": 0.5, - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "coverage": 80, "covers": [ "leg_l", "leg_r" ] } ] } ] diff --git a/data/json/items/armor/masks.json b/data/json/items/armor/masks.json index a6407e28c343e..96881377a1521 100644 --- a/data/json/items/armor/masks.json +++ b/data/json/items/armor/masks.json @@ -12,12 +12,10 @@ "symbol": "[", "looks_like": "hat_cotton", "color": "dark_gray", - "covers": [ "head", "mouth" ], - "coverage": 95, - "encumbrance": 5, "warmth": 30, "material_thickness": 0.5, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "encumbrance": 5, "coverage": 95, "covers": [ "head", "mouth" ] } ] }, { "id": "balaclava_cut_resistant", @@ -48,12 +46,10 @@ "symbol": "[", "looks_like": "scarf", "color": "blue", - "covers": [ "mouth" ], - "coverage": 95, - "encumbrance": 1, "warmth": 5, "material_thickness": 0.1, - "environmental_protection": 1 + "environmental_protection": 1, + "armor": [ { "encumbrance": 1, "coverage": 95, "covers": [ "mouth" ] } ] }, { "id": "bondage_mask", @@ -70,9 +66,6 @@ "symbol": "[", "looks_like": "balclava", "color": "dark_gray", - "covers": [ "head", "eyes", "mouth" ], - "coverage": 100, - "encumbrance": 30, "warmth": 30, "material_thickness": 0.5, "environmental_protection": 1, @@ -82,7 +75,8 @@ "type": "transform", "target": "bondage_mask_zipped", "msg": "You zip the eyes and mouth of the bondage mask closed." - } + }, + "armor": [ { "encumbrance": 30, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ] }, { "id": "bondage_mask_zipped", @@ -113,7 +107,7 @@ "symbol": "[", "looks_like": "balclava", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "head", "eyes" ], "coverage": 90, "encumbrance": 10 }, { "covers": [ "mouth" ], "coverage": 90, "encumbrance": 0 } ], @@ -136,13 +130,11 @@ "symbol": "[", "looks_like": "glasses_bal", "color": "dark_gray", - "covers": [ "eyes", "mouth" ], - "coverage": 95, - "encumbrance": 20, "warmth": 10, "material_thickness": 4, "environmental_protection": 1, - "flags": [ "WATER_FRIENDLY", "STURDY" ] + "flags": [ "WATER_FRIENDLY", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 95, "covers": [ "eyes", "mouth" ] } ] }, { "id": "mask_dust", @@ -159,12 +151,10 @@ "symbol": "[", "looks_like": "scarf", "color": "white", - "covers": [ "mouth" ], - "coverage": 100, - "encumbrance": 8, "warmth": 5, "material_thickness": 0.1, - "environmental_protection": 2 + "environmental_protection": 2, + "armor": [ { "encumbrance": 8, "coverage": 100, "covers": [ "mouth" ] } ] }, { "id": "mask_guy_fawkes", @@ -181,13 +171,11 @@ "symbol": "[", "looks_like": "mask_hockey", "color": "white", - "covers": [ "eyes", "mouth" ], - "coverage": 95, - "encumbrance": 10, "warmth": 5, "material_thickness": 0.2, "environmental_protection": 1, - "flags": [ "WATER_FRIENDLY" ] + "flags": [ "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 10, "coverage": 95, "covers": [ "eyes", "mouth" ] } ] }, { "id": "mask_hockey", @@ -206,13 +194,11 @@ "symbol": "[", "looks_like": "glasses_safety", "color": "white", - "covers": [ "eyes", "mouth" ], - "coverage": 95, - "encumbrance": 20, "warmth": 5, "material_thickness": 2, "environmental_protection": 1, - "flags": [ "WATER_FRIENDLY", "STURDY" ] + "flags": [ "WATER_FRIENDLY", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 95, "covers": [ "eyes", "mouth" ] } ] }, { "id": "mask_rioter", @@ -228,12 +214,10 @@ "symbol": "[", "looks_like": "scarf", "color": "white", - "covers": [ "head", "mouth" ], - "coverage": 90, - "encumbrance": 8, "warmth": 10, "material_thickness": 0.5, "environmental_protection": 1, - "flags": [ "HELMET_COMPAT" ] + "flags": [ "HELMET_COMPAT" ], + "armor": [ { "encumbrance": 8, "coverage": 90, "covers": [ "head", "mouth" ] } ] } ] diff --git a/data/json/items/armor/misc.json b/data/json/items/armor/misc.json index 021da596251b1..e96a0da493493 100644 --- a/data/json/items/armor/misc.json +++ b/data/json/items/armor/misc.json @@ -13,13 +13,11 @@ "material": [ "cotton" ], "symbol": "[", "color": "pink", - "covers": [ "head" ], - "coverage": 60, - "encumbrance": 5, "warmth": 20, "material_thickness": 0.2, "environmental_protection": 1, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 5, "coverage": 60, "covers": [ "head" ] } ] }, { "id": "clown_nose", @@ -47,11 +45,9 @@ "symbol": "[", "looks_like": "hat_cotton", "color": "yellow", - "covers": [ "head" ], - "coverage": 30, - "encumbrance": 20, "material_thickness": 2, - "flags": [ "SUPER_FANCY" ] + "flags": [ "SUPER_FANCY" ], + "armor": [ { "encumbrance": 20, "coverage": 30, "covers": [ "head" ] } ] }, { "id": "crown_golden_survivor", @@ -66,11 +62,9 @@ "symbol": "[", "looks_like": "crown_golden", "color": "yellow", - "covers": [ "head" ], - "coverage": 30, - "encumbrance": 20, "material_thickness": 2, - "flags": [ "FANCY" ] + "flags": [ "FANCY" ], + "armor": [ { "encumbrance": 20, "coverage": 30, "covers": [ "head" ] } ] }, { "id": "mouthpiece", @@ -87,10 +81,9 @@ "material": [ "plastic" ], "symbol": "[", "color": "yellow", - "covers": [ "mouth" ], - "coverage": 50, "material_thickness": 1, - "flags": [ "VARSIZE", "STURDY", "WATER_FRIENDLY", "SKINTIGHT", "POWERARMOR_COMPATIBLE" ] + "flags": [ "VARSIZE", "STURDY", "WATER_FRIENDLY", "SKINTIGHT", "POWERARMOR_COMPATIBLE" ], + "armor": [ { "coverage": 50, "covers": [ "mouth" ] } ] }, { "id": "tie_skinny", @@ -120,12 +113,10 @@ "symbol": "(", "looks_like": "duffelbag", "color": "light_red", - "covers": [ "torso" ], - "coverage": 10, - "encumbrance": 20, "material_thickness": 4, "flags": [ "OVERSIZE", "BELTED" ], - "use_action": { "menu_text": "Unroll", "type": "transform", "target": "sleeping_bag", "msg": "You unroll the sleeping bag." } + "use_action": { "menu_text": "Unroll", "type": "transform", "target": "sleeping_bag", "msg": "You unroll the sleeping bag." }, + "armor": [ { "encumbrance": 20, "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "sleeping_bag_fur", @@ -141,9 +132,6 @@ "symbol": "[", "looks_like": "sleeping_bag", "color": "brown", - "covers": [ "torso", "head", "mouth", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 80, "warmth": 100, "material_thickness": 5, "environmental_protection": 1, @@ -153,7 +141,14 @@ "type": "transform", "target": "sleeping_bag_fur_roll", "msg": "You roll up the fur sleeping bag, preparing it for transport." - } + }, + "armor": [ + { + "encumbrance": 80, + "coverage": 100, + "covers": [ "torso", "head", "mouth", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "sleeping_bag_fur_roll", @@ -169,9 +164,6 @@ "symbol": "(", "looks_like": "sleeping_bag_roll", "color": "brown", - "covers": [ "torso" ], - "coverage": 10, - "encumbrance": 20, "material_thickness": 5, "flags": [ "OVERSIZE", "BELTED" ], "use_action": { @@ -179,7 +171,8 @@ "type": "transform", "target": "sleeping_bag_fur", "msg": "You unroll up the fur sleeping bag." - } + }, + "armor": [ { "encumbrance": 20, "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "tie_bow", @@ -238,12 +231,10 @@ "symbol": "[", "looks_like": "scarf", "color": "white", - "covers": [ "eyes", "mouth" ], - "coverage": 100, - "encumbrance": 5, "material_thickness": 0.01, "environmental_protection": 1, - "flags": [ "SUPER_FANCY", "OUTER", "OVERSIZE" ] + "flags": [ "SUPER_FANCY", "OUTER", "OVERSIZE" ], + "armor": [ { "encumbrance": 5, "coverage": 100, "covers": [ "eyes", "mouth" ] } ] }, { "id": "tarp", @@ -259,12 +250,16 @@ "symbol": "[", "looks_like": "blanket", "color": "light_blue", - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 90, - "encumbrance": 30, "warmth": 10, "material_thickness": 0.1, "environmental_protection": 1, - "flags": [ "OVERSIZE", "OUTER", "WATERPROOF", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "OVERSIZE", "OUTER", "WATERPROOF", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ + { + "encumbrance": 30, + "coverage": 90, + "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] } ] diff --git a/data/json/items/armor/pets_horse_armor.json b/data/json/items/armor/pets_horse_armor.json index cd8c13f12c555..c40da5ff3c023 100644 --- a/data/json/items/armor/pets_horse_armor.json +++ b/data/json/items/armor/pets_horse_armor.json @@ -156,9 +156,6 @@ "symbol": "[", "looks_like": "dump_pouch", "color": "green", - "covers": [ "hand_l", "hand_r" ], - "coverage": 50, - "encumbrance": 30, "warmth": 10, "material_thickness": 2, "flags": [ "BELTED", "WATER_FRIENDLY" ], @@ -178,6 +175,7 @@ "max_item_length": "60 cm", "moves": 200 } - ] + ], + "armor": [ { "encumbrance": 30, "coverage": 50, "covers": [ "hand_l", "hand_r" ] } ] } ] diff --git a/data/json/items/armor/power_armor.json b/data/json/items/armor/power_armor.json index 68603dbeb973c..17c990fb24d8a 100644 --- a/data/json/items/armor/power_armor.json +++ b/data/json/items/armor/power_armor.json @@ -16,9 +16,6 @@ "symbol": "[", "looks_like": "power_armor_basic", "color": "light_gray", - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 95, - "encumbrance": 40, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -83,7 +80,14 @@ "warmth": 50, "material_thickness": 8, "environmental_protection": 6, - "flags": [ "WATERPROOF", "STURDY" ] + "flags": [ "WATERPROOF", "STURDY" ], + "armor": [ + { + "encumbrance": 40, + "coverage": 95, + "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "depowered_helmet", @@ -101,14 +105,12 @@ "symbol": "[", "looks_like": "power_armor_helmet_basic", "color": "light_gray", - "covers": [ "head", "eyes", "mouth" ], - "coverage": 95, - "encumbrance": 40, "warmth": 50, "material_thickness": 8, "environmental_protection": 6, "qualities": [ [ "GLARE", 2 ] ], - "flags": [ "WATERPROOF", "STURDY", "SUN_GLASSES" ] + "flags": [ "WATERPROOF", "STURDY", "SUN_GLASSES" ], + "armor": [ { "encumbrance": 40, "coverage": 95, "covers": [ "head", "eyes", "mouth" ] } ] }, { "id": "power_armor_basic", @@ -126,9 +128,6 @@ "symbol": "[", "looks_like": "depowered_armor", "color": "light_gray", - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 50, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -196,7 +195,14 @@ "environmental_protection": 16, "ammo": "battery", "use_action": { "type": "transform", "msg": "The %s engages.", "target": "power_armor_basic_on", "active": true }, - "flags": [ "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE" ] + "flags": [ "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE" ], + "armor": [ + { + "encumbrance": 50, + "coverage": 100, + "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "power_armor_basic_on", @@ -209,8 +215,7 @@ "flags": [ "USE_UPS", "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE", "TRADER_AVOID", "CLIMATE_CONTROL" ], "power_draw": 4000000, "revert_to": "power_armor_basic", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_basic" }, - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_basic" } }, { "id": "power_armor_frame", @@ -228,8 +233,6 @@ "symbol": "[", "looks_like": "backpack_tactical_large", "color": "light_gray", - "coverage": 100, - "encumbrance": 40, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -242,7 +245,8 @@ ], "power_armor": true, "material_thickness": 10, - "flags": [ "WATERPROOF", "STURDY", "BELTED" ] + "flags": [ "WATERPROOF", "STURDY", "BELTED" ], + "armor": [ { "encumbrance": 40, "coverage": 100 } ] }, { "id": "power_armor_heavy", @@ -261,9 +265,6 @@ "symbol": "[", "looks_like": "power_armor_basic", "color": "dark_gray", - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 60, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -331,7 +332,14 @@ "environmental_protection": 16, "ammo": "battery", "use_action": { "type": "transform", "msg": "The %s engages.", "target": "power_armor_heavy_on", "active": true }, - "flags": [ "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE" ] + "flags": [ "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE" ], + "armor": [ + { + "encumbrance": 60, + "coverage": 100, + "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "power_armor_heavy_on", @@ -344,8 +352,7 @@ "flags": [ "USE_UPS", "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE", "TRADER_AVOID", "CLIMATE_CONTROL" ], "power_draw": 4000000, "revert_to": "power_armor_heavy", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_heavy" }, - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_heavy" } }, { "id": "power_armor_helmet_basic", @@ -363,15 +370,13 @@ "symbol": "[", "looks_like": "depowered_helmet", "color": "light_gray", - "covers": [ "head", "eyes", "mouth" ], - "coverage": 100, - "encumbrance": 50, "warmth": 90, "power_armor": true, "material_thickness": 14, "environmental_protection": 16, "qualities": [ [ "GLARE", 2 ] ], - "flags": [ "WATCH", "WATERPROOF", "STURDY", "PARTIAL_DEAF", "THERMOMETER", "SUN_GLASSES" ] + "flags": [ "WATCH", "WATERPROOF", "STURDY", "PARTIAL_DEAF", "THERMOMETER", "SUN_GLASSES" ], + "armor": [ { "encumbrance": 50, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ] }, { "id": "power_armor_helmet_heavy", @@ -389,15 +394,13 @@ "symbol": "[", "looks_like": "power_armor_helmet_basic", "color": "dark_gray", - "covers": [ "head", "eyes", "mouth" ], - "coverage": 100, - "encumbrance": 60, "warmth": 60, "power_armor": true, "material_thickness": 16, "environmental_protection": 16, "qualities": [ [ "GLARE", 2 ] ], - "flags": [ "WATCH", "WATERPROOF", "STURDY", "PARTIAL_DEAF", "THERMOMETER", "SUN_GLASSES" ] + "flags": [ "WATCH", "WATERPROOF", "STURDY", "PARTIAL_DEAF", "THERMOMETER", "SUN_GLASSES" ], + "armor": [ { "encumbrance": 60, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ] }, { "id": "power_armor_helmet_light", @@ -415,15 +418,13 @@ "symbol": "[", "looks_like": "power_armor_helmet_basic", "color": "dark_gray", - "covers": [ "head", "eyes", "mouth" ], - "coverage": 100, - "encumbrance": 40, "warmth": 60, "power_armor": true, "material_thickness": 8, "environmental_protection": 16, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "WATCH", "WATERPROOF", "STURDY", "THERMOMETER", "SUN_GLASSES", "SWIM_GOGGLES" ] + "flags": [ "WATCH", "WATERPROOF", "STURDY", "THERMOMETER", "SUN_GLASSES", "SWIM_GOGGLES" ], + "armor": [ { "encumbrance": 40, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ] }, { "id": "power_armor_light", @@ -441,9 +442,6 @@ "symbol": "[", "looks_like": "depowered_armor", "color": "dark_gray", - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 40, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -511,7 +509,14 @@ "environmental_protection": 16, "ammo": "battery", "use_action": { "type": "transform", "msg": "The %s engages.", "target": "power_armor_light_on", "active": true }, - "flags": [ "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE" ] + "flags": [ "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE" ], + "armor": [ + { + "encumbrance": 40, + "coverage": 100, + "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "power_armor_light_on", @@ -524,7 +529,6 @@ "flags": [ "USE_UPS", "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE", "TRADER_AVOID", "CLIMATE_CONTROL" ], "power_draw": 4000000, "revert_to": "power_armor_light", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_light" }, - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_light" } } ] diff --git a/data/json/items/armor/scarfs.json b/data/json/items/armor/scarfs.json index 66b26acfdacf7..3cad996d5aa55 100644 --- a/data/json/items/armor/scarfs.json +++ b/data/json/items/armor/scarfs.json @@ -13,12 +13,10 @@ "symbol": "[", "looks_like": "scarf", "color": "white", - "covers": [ "mouth" ], - "coverage": 70, - "encumbrance": 20, "warmth": 40, "material_thickness": 1, - "flags": [ "OVERSIZE", "HOOD", "FANCY", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "OVERSIZE", "HOOD", "FANCY", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 20, "coverage": 70, "covers": [ "mouth" ] } ] }, { "id": "headscarf", @@ -35,12 +33,10 @@ "symbol": "[", "looks_like": "scarf", "color": "yellow", - "covers": [ "head" ], - "coverage": 70, - "encumbrance": 4, "warmth": 7, "material_thickness": 0.1, - "flags": [ "OVERSIZE", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "OVERSIZE", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 4, "coverage": 70, "covers": [ "head" ] } ] }, { "id": "keffiyeh", @@ -56,13 +52,11 @@ "symbol": "[", "looks_like": "scarf", "color": "white", - "covers": [ "mouth" ], - "coverage": 85, - "encumbrance": 10, "warmth": 30, "material_thickness": 1, "environmental_protection": 2, - "flags": [ "OVERSIZE", "HOOD", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "OVERSIZE", "HOOD", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 10, "coverage": 85, "covers": [ "mouth" ] } ] }, { "id": "marloss_scarf", @@ -71,7 +65,6 @@ "looks_like": "scarf", "name": { "str": "cyan scarf" }, "description": "A simple cloth scarf worn by Marloss Voices. Wherever the Voices go, long sought peace soon follows, for better or for worse.", - "color": "cyan", - "covers": [ "mouth" ] + "color": "cyan" } ] diff --git a/data/json/items/armor/sheath.json b/data/json/items/armor/sheath.json index d91fae5597491..e97fc73168821 100644 --- a/data/json/items/armor/sheath.json +++ b/data/json/items/armor/sheath.json @@ -12,9 +12,6 @@ "symbol": "[", "looks_like": "sheath", "color": "brown", - "covers": [ "torso" ], - "coverage": 5, - "encumbrance": 2, "material_thickness": 1, "pocket_data": [ { @@ -27,7 +24,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Sheath axe", "holster_msg": "You sheath your %s" }, - "flags": [ "NONCONDUCTIVE", "WAIST", "OVERSIZE", "WATER_FRIENDLY" ] + "flags": [ "NONCONDUCTIVE", "WAIST", "OVERSIZE", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 2, "coverage": 5, "covers": [ "torso" ] } ] }, { "id": "baldric", @@ -43,10 +41,6 @@ "symbol": "[", "looks_like": "sheath", "color": "brown", - "covers": [ "torso" ], - "coverage": 10, - "encumbrance": 3, - "max_encumbrance": 5, "material_thickness": 1, "pocket_data": [ { @@ -60,7 +54,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Sheath sword", "holster_msg": "You sheath your %s" }, - "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 3, 5 ], "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "bootsheath", @@ -76,11 +71,7 @@ "symbol": "[", "looks_like": "sheath", "color": "brown", - "covers": [ "foot_l", "foot_r" ], "sided": true, - "coverage": 5, - "encumbrance": 2, - "max_encumbrance": 3, "material_thickness": 1, "pocket_data": [ { @@ -94,7 +85,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Sheath knife", "holster_msg": "You sheath your %s" }, - "flags": [ "BELTED", "OVERSIZE", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY", "NOT_FOOTWEAR" ] + "flags": [ "BELTED", "OVERSIZE", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY", "NOT_FOOTWEAR" ], + "armor": [ { "encumbrance": [ 2, 3 ], "coverage": 5, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "bootsheath_birchbark", @@ -110,11 +102,7 @@ "symbol": "[", "looks_like": "bootsheath", "color": "brown", - "covers": [ "foot_l", "foot_r" ], "sided": true, - "coverage": 5, - "encumbrance": 2, - "max_encumbrance": 3, "material_thickness": 1, "pocket_data": [ { @@ -128,7 +116,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Sheath knife", "holster_msg": "You sheath your %s" }, - "flags": [ "BELTED", "OVERSIZE", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY", "NOT_FOOTWEAR" ] + "flags": [ "BELTED", "OVERSIZE", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY", "NOT_FOOTWEAR" ], + "armor": [ { "encumbrance": [ 2, 3 ], "coverage": 5, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "bscabbard", @@ -144,10 +133,6 @@ "symbol": "[", "looks_like": "baldric", "color": "brown", - "covers": [ "torso" ], - "coverage": 10, - "encumbrance": 6, - "max_encumbrance": 10, "material_thickness": 1, "pocket_data": [ { @@ -161,7 +146,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Sheath sword", "holster_msg": "You sheath your %s" }, - "flags": [ "BELTED", "OVERSIZE", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "OVERSIZE", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 6, 10 ], "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "scabbard", @@ -177,11 +163,7 @@ "symbol": "[", "looks_like": "holster", "color": "brown", - "covers": [ "leg_l", "leg_r" ], "sided": true, - "coverage": 15, - "encumbrance": 3, - "max_encumbrance": 4, "material_thickness": 1, "pocket_data": [ { @@ -195,7 +177,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Sheath sword", "holster_msg": "You sheath your %s" }, - "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 3, 4 ], "coverage": 15, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "sheath", @@ -210,10 +193,7 @@ "symbol": "|", "looks_like": "scabbard", "color": "brown", - "covers": [ "leg_l", "leg_r" ], "sided": true, - "coverage": 5, - "max_encumbrance": 1, "material_thickness": 1, "pocket_data": [ { @@ -227,7 +207,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Sheath knife", "holster_msg": "You sheath your %s" }, - "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ], + "armor": [ { "coverage": 5, "covers": [ "leg_l", "leg_r" ], "encumbrance": [ 0, 1 ] } ] }, { "id": "sheath_birchbark", @@ -242,10 +223,7 @@ "symbol": "|", "looks_like": "sheath", "color": "brown", - "covers": [ "leg_l", "leg_r" ], "sided": true, - "coverage": 5, - "max_encumbrance": 1, "material_thickness": 1, "pocket_data": [ { @@ -259,7 +237,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Sheath knife", "holster_msg": "You sheath your %s" }, - "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ], + "armor": [ { "coverage": 5, "covers": [ "leg_l", "leg_r" ], "encumbrance": [ 0, 1 ] } ] }, { "id": "spearsling", @@ -275,9 +254,6 @@ "symbol": "[", "looks_like": "bscabbard", "color": "brown", - "covers": [ "torso" ], - "coverage": 5, - "encumbrance": 2, "material_thickness": 1, "pocket_data": [ { @@ -290,6 +266,7 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Holster spear", "holster_msg": "You holster your %s." }, - "flags": [ "BELTED", "OVERSIZE", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "OVERSIZE", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 2, "coverage": 5, "covers": [ "torso" ] } ] } ] diff --git a/data/json/items/armor/storage.json b/data/json/items/armor/storage.json index fd01f42405db0..b1611517c4da8 100644 --- a/data/json/items/armor/storage.json +++ b/data/json/items/armor/storage.json @@ -12,10 +12,6 @@ "symbol": "[", "looks_like": "ragpouch", "color": "green", - "covers": [ "torso" ], - "coverage": 30, - "encumbrance": 2, - "max_encumbrance": 25, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -27,7 +23,8 @@ ], "warmth": 6, "material_thickness": 2, - "flags": [ "BELTED" ] + "flags": [ "BELTED" ], + "armor": [ { "encumbrance": [ 2, 25 ], "coverage": 30, "covers": [ "torso" ] } ] }, { "id": "backpack_hiking", @@ -42,10 +39,6 @@ "symbol": "[", "looks_like": "backpack", "color": "brown", - "covers": [ "torso" ], - "coverage": 50, - "encumbrance": 10, - "max_encumbrance": 40, "warmth": 10, "material_thickness": 2, "pocket_data": [ @@ -99,7 +92,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Sheath blade", "holster_msg": "You sheath your %s" }, - "flags": [ "BELTED", "WATERPROOF", "ONLY_ONE", "OVERSIZE" ] + "flags": [ "BELTED", "WATERPROOF", "ONLY_ONE", "OVERSIZE" ], + "armor": [ { "encumbrance": [ 10, 40 ], "coverage": 50, "covers": [ "torso" ] } ] }, { "id": "backpack_giant", @@ -115,10 +109,6 @@ "symbol": "[", "looks_like": "backpack", "color": "green", - "covers": [ "torso", "leg_l", "leg_r" ], - "coverage": 75, - "encumbrance": 20, - "max_encumbrance": 60, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -131,7 +121,8 @@ ], "warmth": 5, "material_thickness": 2, - "flags": [ "BELTED" ] + "flags": [ "BELTED" ], + "armor": [ { "encumbrance": [ 20, 60 ], "coverage": 75, "covers": [ "torso", "leg_l", "leg_r" ] } ] }, { "id": "backpack_leather", @@ -146,10 +137,6 @@ "symbol": "[", "looks_like": "backpack", "color": "brown", - "covers": [ "torso" ], - "coverage": 30, - "encumbrance": 4, - "max_encumbrance": 26, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -161,7 +148,8 @@ ], "warmth": 9, "material_thickness": 3, - "flags": [ "BELTED", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 4, 26 ], "coverage": 30, "covers": [ "torso" ] } ] }, { "id": "backpack_tactical_large", @@ -176,10 +164,6 @@ "symbol": "[", "looks_like": "backpack", "color": "green", - "covers": [ "torso" ], - "coverage": 50, - "encumbrance": 10, - "max_encumbrance": 55, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -216,7 +200,8 @@ ], "warmth": 10, "material_thickness": 2, - "flags": [ "BELTED", "WATERPROOF", "ONLY_ONE", "OVERSIZE" ] + "flags": [ "BELTED", "WATERPROOF", "ONLY_ONE", "OVERSIZE" ], + "armor": [ { "encumbrance": [ 10, 55 ], "coverage": 50, "covers": [ "torso" ] } ] }, { "id": "basket_laundry", @@ -233,7 +218,7 @@ "symbol": ")", "looks_like": "plastic_shopping_bag", "color": "light_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "arm_l", "arm_r" ], "coverage": 5, "encumbrance": [ 50, 50 ] }, { "covers": [ "hand_l", "hand_r" ], "coverage": 5, "encumbrance": [ 50, 50 ] } ], @@ -263,10 +248,6 @@ "symbol": "[", "looks_like": "rucksack", "color": "black", - "covers": [ "torso" ], - "coverage": 50, - "encumbrance": 16, - "max_encumbrance": 65, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -303,7 +284,8 @@ ], "warmth": 10, "material_thickness": 2, - "flags": [ "BELTED", "WATERPROOF", "ONLY_ONE", "OVERSIZE" ] + "flags": [ "BELTED", "WATERPROOF", "ONLY_ONE", "OVERSIZE" ], + "armor": [ { "encumbrance": [ 16, 65 ], "coverage": 50, "covers": [ "torso" ] } ] }, { "id": "bindle", @@ -320,10 +302,10 @@ "symbol": "[", "looks_like": "plastic_shopping_bag", "color": "light_gray", - "armor_portion_data": [ + "sided": true, + "armor": [ { "covers": [ "arm_l", "arm_r" ], "coverage": 4, "encumbrance": [ 30, 33 ] }, - { "covers": [ "hand_l", "hand_r" ], "coverage": 4, "encumbrance": [ 30, 32 ] }, - { "sided": true } + { "covers": [ "hand_l", "hand_r" ], "coverage": 4, "encumbrance": [ 30, 32 ] } ], "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "5 L", "max_contains_weight": "15 kg", "moves": 300 } ], "material_thickness": 1, @@ -352,14 +334,12 @@ "moves": 300 } ], - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 20, "warmth": 5, "bashing": 16, "cutting": 4, "price": 3500, - "flags": [ "BELTED", "OVERSIZE", "NO_REPAIR" ] + "flags": [ "BELTED", "OVERSIZE", "NO_REPAIR" ], + "armor": [ { "encumbrance": 20, "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "briefcase", @@ -377,10 +357,7 @@ "symbol": "[", "looks_like": "plastic_shopping_bag", "color": "light_gray", - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], "sided": true, - "coverage": 10, - "encumbrance": 30, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -392,7 +369,8 @@ } ], "material_thickness": 2, - "flags": [ "FANCY", "OVERSIZE", "BELTED", "RESTRICT_HANDS", "WATER_FRIENDLY" ] + "flags": [ "FANCY", "OVERSIZE", "BELTED", "RESTRICT_HANDS", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 30, "coverage": 10, "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ] } ] }, { "id": "case_violin", @@ -410,10 +388,7 @@ "symbol": "&", "looks_like": "briefcase", "color": "dark_gray", - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], "sided": true, - "coverage": 10, - "encumbrance": 30, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -425,7 +400,8 @@ } ], "material_thickness": 5, - "flags": [ "FANCY", "OVERSIZE", "BELTED", "RESTRICT_HANDS", "WATER_FRIENDLY" ] + "flags": [ "FANCY", "OVERSIZE", "BELTED", "RESTRICT_HANDS", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 30, "coverage": 10, "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ] } ] }, { "id": "daypack", @@ -442,11 +418,7 @@ "price": 5500, "price_postapoc": 500, "material": [ "cotton", "plastic" ], - "covers": [ "torso" ], - "coverage": 50, "material_thickness": 1, - "encumbrance": 2, - "max_encumbrance": 18, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -458,7 +430,8 @@ } ], "warmth": 5, - "flags": [ "BELTED", "OVERSIZE", "STURDY" ] + "flags": [ "BELTED", "OVERSIZE", "STURDY" ], + "armor": [ { "encumbrance": [ 2, 18 ], "coverage": 50, "covers": [ "torso" ] } ] }, { "id": "dive_bag", @@ -474,10 +447,6 @@ "symbol": "[", "looks_like": "backpack", "color": "yellow", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 2, - "max_encumbrance": 30, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -488,7 +457,8 @@ } ], "material_thickness": 1, - "flags": [ "WATER_FRIENDLY", "BELTED" ] + "flags": [ "WATER_FRIENDLY", "BELTED" ], + "armor": [ { "encumbrance": [ 2, 30 ], "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "duffelbag", @@ -503,10 +473,6 @@ "symbol": "[", "looks_like": "rucksack", "color": "green", - "covers": [ "torso" ], - "coverage": 50, - "encumbrance": 5, - "max_encumbrance": 35, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -519,7 +485,8 @@ ], "warmth": 10, "material_thickness": 2, - "flags": [ "BELTED", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 5, 35 ], "coverage": 50, "covers": [ "torso" ] } ] }, { "id": "dump_pouch", @@ -536,10 +503,6 @@ "symbol": "[", "looks_like": "holster", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 10, - "encumbrance": 1, - "max_encumbrance": 3, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -551,7 +514,8 @@ } ], "material_thickness": 0.5, - "flags": [ "WAIST", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 1, 3 ], "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "fanny", @@ -568,10 +532,6 @@ "symbol": "[", "looks_like": "holster", "color": "green", - "covers": [ "torso" ], - "coverage": 10, - "encumbrance": 1, - "max_encumbrance": 3, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -583,7 +543,8 @@ } ], "material_thickness": 0.1, - "flags": [ "WAIST", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 1, 3 ], "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "golf_bag", @@ -599,10 +560,6 @@ "symbol": "[", "looks_like": "quiver_large", "color": "green", - "covers": [ "torso" ], - "coverage": 35, - "encumbrance": 30, - "max_encumbrance": 35, "//": "The main section of the golf bag actually assumes things will stick out of it, but specifically contains them, so some extra wiggle room was added.", "pocket_data": [ { @@ -623,7 +580,8 @@ "warmth": 5, "material_thickness": 3, "flags": [ "BELTED", "OVERSIZE" ], - "use_action": { "type": "holster", "holster_prompt": "Sheath golf club", "holster_msg": "You awkwardly sheath your %s" } + "use_action": { "type": "holster", "holster_prompt": "Sheath golf club", "holster_msg": "You awkwardly sheath your %s" }, + "armor": [ { "encumbrance": [ 30, 35 ], "coverage": 35, "covers": [ "torso" ] } ] }, { "id": "hide_bag", @@ -637,12 +595,9 @@ "color": "pink", "proportional": { "weight": 6.0, "volume": 6.0, "price": 6.0, "quench": 6.0, "calories": 6.0, "healthy": 6.0, "fun": 6.0 }, "armor_data": { - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], "sided": true, - "coverage": 5, - "encumbrance": 10, - "max_encumbrance": 100, - "material_thickness": 0.1 + "material_thickness": 0.1, + "armor": [ { "encumbrance": [ 10, 100 ], "coverage": 5, "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ] } ] }, "pocket_data": [ { @@ -668,12 +623,9 @@ "price_postapoc": 10, "proportional": { "weight": 6.0, "volume": 6.0, "price": 6.0, "quench": 6.0, "calories": 6.0, "healthy": 6.0, "fun": 6.0 }, "armor_data": { - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], "sided": true, - "coverage": 5, - "encumbrance": 10, - "max_encumbrance": 100, - "material_thickness": 0.1 + "material_thickness": 0.1, + "armor": [ { "encumbrance": [ 10, 100 ], "coverage": 5, "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ] } ] }, "pocket_data": [ { @@ -724,9 +676,6 @@ "symbol": "[", "looks_like": "backpack", "color": "green", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 30, "warmth": 5, "material_thickness": 2, "pocket_data": [ @@ -738,7 +687,8 @@ "rigid": true } ], - "flags": [ "OVERSIZE", "BELTED", "WATER_FRIENDLY" ] + "flags": [ "OVERSIZE", "BELTED", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 30, "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "leather_pouch", @@ -755,10 +705,6 @@ "symbol": "[", "looks_like": "holster", "color": "brown", - "covers": [ "torso" ], - "coverage": 15, - "encumbrance": 1, - "max_encumbrance": 3, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -769,7 +715,8 @@ } ], "material_thickness": 0.1, - "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 1, 3 ], "coverage": 15, "covers": [ "torso" ] } ] }, { "id": "legrig", @@ -783,10 +730,6 @@ "material": [ "cotton" ], "symbol": "[", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 20, - "encumbrance": 2, - "max_encumbrance": 5, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -806,7 +749,8 @@ } ], "material_thickness": 0.2, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "BELTED" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "BELTED" ], + "armor": [ { "encumbrance": [ 2, 5 ], "coverage": 20, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "armrig", @@ -821,11 +765,7 @@ "symbol": "[", "looks_like": "armguard_soft", "color": "dark_gray", - "covers": [ "arm_l", "arm_r" ], "sided": true, - "coverage": 20, - "encumbrance": 2, - "max_encumbrance": 7, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -836,7 +776,8 @@ } ], "material_thickness": 2, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "BELTED" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "BELTED" ], + "armor": [ { "encumbrance": [ 2, 7 ], "coverage": 20, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "makeshift_knapsack", @@ -851,10 +792,6 @@ "symbol": "[", "looks_like": "ragpouch", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 30, - "encumbrance": 2, - "max_encumbrance": 9, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -866,7 +803,8 @@ ], "warmth": 5, "material_thickness": 0.2, - "flags": [ "BELTED", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 2, 9 ], "coverage": 30, "covers": [ "torso" ] } ] }, { "id": "makeshift_sling", @@ -882,10 +820,6 @@ "symbol": "[", "looks_like": "ragpouch", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 4, - "max_encumbrance": 15, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -898,7 +832,8 @@ ], "warmth": 10, "material_thickness": 1, - "flags": [ "OVERSIZE", "BELTED", "WATER_FRIENDLY" ] + "flags": [ "OVERSIZE", "BELTED", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 4, 15 ], "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "mbag", @@ -917,10 +852,6 @@ "symbol": "[", "looks_like": "purse", "color": "green", - "covers": [ "torso" ], - "coverage": 30, - "encumbrance": 8, - "max_encumbrance": 12, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -932,7 +863,8 @@ } ], "material_thickness": 1, - "flags": [ "BELTED", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 8, 12 ], "coverage": 30, "covers": [ "torso" ] } ] }, { "id": "molle_pack", @@ -948,10 +880,6 @@ "symbol": "[", "looks_like": "backpack", "color": "green", - "covers": [ "torso" ], - "coverage": 35, - "encumbrance": 5, - "max_encumbrance": 20, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -988,7 +916,8 @@ ], "warmth": 10, "material_thickness": 2, - "flags": [ "BELTED", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 5, 20 ], "coverage": 35, "covers": [ "torso" ] } ] }, { "id": "net_backpack", @@ -1001,10 +930,6 @@ "material": [ "cotton" ], "symbol": "[", "color": "green", - "covers": [ "torso" ], - "coverage": 20, - "encumbrance": 1, - "max_encumbrance": 25, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1016,7 +941,8 @@ } ], "material_thickness": 1, - "flags": [ "BELTED", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 1, 25 ], "coverage": 20, "covers": [ "torso" ] } ] }, { "id": "petpack", @@ -1031,9 +957,6 @@ "symbol": "[", "looks_like": "backpack", "color": "blue", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 35, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1048,7 +971,8 @@ "material_thickness": 2, "properties": [ [ "creature_size_capacity", "SMALL" ] ], "use_action": [ "CAPTURE_MONSTER_ACT" ], - "flags": [ "BELTED", "WATERPROOF" ] + "flags": [ "BELTED", "WATERPROOF" ], + "armor": [ { "encumbrance": 35, "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "plastic_shopping_bag", @@ -1063,10 +987,10 @@ "material": [ "plastic" ], "symbol": "[", "color": "white", - "armor_portion_data": [ + "sided": true, + "armor": [ { "covers": [ "arm_l", "arm_r" ], "coverage": 4, "encumbrance": [ 1, 30 ] }, - { "covers": [ "hand_l", "hand_r" ], "coverage": 4, "encumbrance": [ 1, 30 ] }, - { "sided": true } + { "covers": [ "hand_l", "hand_r" ], "coverage": 4, "encumbrance": [ 1, 30 ] } ], "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "5 L", "max_contains_weight": "3 kg", "moves": 150 } ], "material_thickness": 0.01, @@ -1088,10 +1012,6 @@ "symbol": "[", "looks_like": "ragpouch", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 10, - "encumbrance": 2, - "max_encumbrance": 7, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1102,7 +1022,8 @@ } ], "material_thickness": 1, - "flags": [ "FANCY", "BELTED", "WATER_FRIENDLY" ] + "flags": [ "FANCY", "BELTED", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 2, 7 ], "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "ragpouch", @@ -1118,10 +1039,6 @@ "material": [ "cotton" ], "symbol": "[", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 15, - "encumbrance": 5, - "max_encumbrance": 10, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1132,7 +1049,8 @@ } ], "material_thickness": 0.2, - "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 5, 10 ], "coverage": 15, "covers": [ "torso" ] } ] }, { "id": "rucksack", @@ -1148,10 +1066,6 @@ "symbol": "[", "looks_like": "backpack", "color": "green", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 10, - "max_encumbrance": 50, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1188,7 +1102,8 @@ ], "warmth": 8, "material_thickness": 0.2, - "flags": [ "BELTED", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 10, 50 ], "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "runner_bag", @@ -1205,10 +1120,6 @@ "symbol": "[", "looks_like": "backpack", "color": "green", - "covers": [ "torso" ], - "coverage": 20, - "encumbrance": 1, - "max_encumbrance": 6, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1221,7 +1132,8 @@ ], "warmth": 2, "material_thickness": 0.1, - "flags": [ "BELTED", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 1, 6 ], "coverage": 20, "covers": [ "torso" ] } ] }, { "id": "slingpack", @@ -1239,10 +1151,6 @@ "symbol": "[", "looks_like": "purse", "color": "green", - "covers": [ "torso" ], - "coverage": 30, - "encumbrance": 2, - "max_encumbrance": 9, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1255,7 +1163,8 @@ ], "warmth": 2, "material_thickness": 1, - "flags": [ "BELTED", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 2, 9 ], "coverage": 30, "covers": [ "torso" ] } ] }, { "id": "straw_basket", @@ -1271,10 +1180,7 @@ "symbol": "[", "looks_like": "plastic_shopping_bag", "color": "light_gray", - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], "sided": true, - "coverage": 4, - "encumbrance": 30, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1286,7 +1192,8 @@ } ], "material_thickness": 2, - "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "WATER_FRIENDLY" ] + "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 30, "coverage": 4, "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ] } ] }, { "id": "suitcase_l", @@ -1303,10 +1210,7 @@ "symbol": "[", "looks_like": "suitcase_m", "color": "red", - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r" ], "sided": true, - "coverage": 5, - "encumbrance": 70, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1318,7 +1222,8 @@ } ], "material_thickness": 3, - "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "WATER_FRIENDLY" ] + "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 70, "coverage": 5, "covers": [ "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r" ] } ] }, { "id": "suitcase_m", @@ -1334,10 +1239,7 @@ "symbol": "[", "looks_like": "briefcase", "color": "blue", - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r" ], "sided": true, - "coverage": 5, - "encumbrance": 50, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1349,7 +1251,8 @@ } ], "material_thickness": 3, - "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "WATER_FRIENDLY" ] + "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 50, "coverage": 5, "covers": [ "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r" ] } ] }, { "id": "survivor_duffel_bag", @@ -1364,10 +1267,6 @@ "symbol": "[", "looks_like": "rucksack", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 8, - "max_encumbrance": 30, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1380,7 +1279,8 @@ ], "warmth": 10, "material_thickness": 2, - "flags": [ "WATER_FRIENDLY", "STURDY", "BELTED", "OVERSIZE" ] + "flags": [ "WATER_FRIENDLY", "STURDY", "BELTED", "OVERSIZE" ], + "armor": [ { "encumbrance": [ 8, 30 ], "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "survivor_pack", @@ -1395,10 +1295,6 @@ "symbol": "[", "looks_like": "backpack", "color": "brown", - "covers": [ "torso" ], - "coverage": 30, - "encumbrance": 3, - "max_encumbrance": 24, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1411,7 +1307,8 @@ ], "warmth": 6, "material_thickness": 2, - "flags": [ "WATER_FRIENDLY", "STURDY", "BELTED" ] + "flags": [ "WATER_FRIENDLY", "STURDY", "BELTED" ], + "armor": [ { "encumbrance": [ 3, 24 ], "coverage": 30, "covers": [ "torso" ] } ] }, { "id": "survivor_rucksack", @@ -1426,10 +1323,6 @@ "symbol": "[", "looks_like": "rucksack", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 3, - "max_encumbrance": 28, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1442,7 +1335,8 @@ ], "warmth": 8, "material_thickness": 2, - "flags": [ "WATER_FRIENDLY", "STURDY", "BELTED", "OVERSIZE" ] + "flags": [ "WATER_FRIENDLY", "STURDY", "BELTED", "OVERSIZE" ], + "armor": [ { "encumbrance": [ 3, 28 ], "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "survivor_runner_pack", @@ -1457,10 +1351,6 @@ "symbol": "[", "looks_like": "backpack", "color": "brown", - "covers": [ "torso" ], - "coverage": 30, - "encumbrance": 3, - "max_encumbrance": 12, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1473,7 +1363,8 @@ ], "warmth": 2, "material_thickness": 2, - "flags": [ "WATER_FRIENDLY", "STURDY", "BELTED" ] + "flags": [ "WATER_FRIENDLY", "STURDY", "BELTED" ], + "armor": [ { "encumbrance": [ 3, 12 ], "coverage": 30, "covers": [ "torso" ] } ] }, { "id": "swag_bag", @@ -1489,10 +1380,10 @@ "symbol": "[", "looks_like": "duffelbag", "color": "brown", - "armor_portion_data": [ + "sided": true, + "armor": [ { "covers": [ "hand_l", "hand_r" ], "coverage": 5, "encumbrance": [ 4, 48 ] }, - { "covers": [ "arm_l", "arm_r" ], "coverage": 5, "encumbrance": [ 4, 48 ] }, - { "sided": true } + { "covers": [ "arm_l", "arm_r" ], "coverage": 5, "encumbrance": [ 4, 48 ] } ], "pocket_data": [ { @@ -1519,10 +1410,6 @@ "symbol": "[", "looks_like": "backpack", "color": "yellow", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 3, - "max_encumbrance": 25, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1559,7 +1446,8 @@ ], "warmth": 8, "material_thickness": 2, - "flags": [ "BELTED", "WATERPROOF" ] + "flags": [ "BELTED", "WATERPROOF" ], + "armor": [ { "encumbrance": [ 3, 25 ], "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "vest", @@ -1575,10 +1463,6 @@ "symbol": "[", "looks_like": "tank_top", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 60, - "encumbrance": 2, - "max_encumbrance": 5, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1611,7 +1495,8 @@ ], "warmth": 5, "material_thickness": 0.4, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": [ 2, 5 ], "coverage": 60, "covers": [ "torso" ] } ] }, { "id": "wicker_backpack", @@ -1625,10 +1510,6 @@ "material": [ "dry_plant" ], "symbol": "[", "color": "green", - "covers": [ "torso" ], - "coverage": 25, - "encumbrance": 5, - "max_encumbrance": 20, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1640,7 +1521,8 @@ } ], "material_thickness": 2, - "flags": [ "BELTED", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 5, 20 ], "coverage": 25, "covers": [ "torso" ] } ] }, { "id": "debug_backpack", @@ -1655,8 +1537,6 @@ "symbol": "[", "looks_like": "backpack", "color": "yellow", - "encumbrance": 0, - "max_encumbrance": 0, "pocket_data": [ { "rigid": true, @@ -1669,7 +1549,8 @@ ], "warmth": 0, "material_thickness": 0, - "flags": [ "BELTED", "WATER_FRIENDLY", "TARDIS" ] + "flags": [ "BELTED", "WATER_FRIENDLY", "TARDIS" ], + "armor": [ { "encumbrance": [ 0, 0 ] } ] }, { "id": "long_duffelbag", @@ -1684,10 +1565,6 @@ "symbol": "[", "looks_like": "rucksack", "color": "green", - "covers": [ "torso" ], - "coverage": 80, - "encumbrance": 8, - "max_encumbrance": 42, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1700,7 +1577,8 @@ ], "warmth": 8, "material_thickness": 2, - "flags": [ "BELTED", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 8, 42 ], "coverage": 80, "covers": [ "torso" ] } ] }, { "id": "rifle_case_soft", @@ -1715,10 +1593,6 @@ "symbol": "[", "looks_like": "slingpack", "color": "green", - "covers": [ "torso" ], - "coverage": 10, - "encumbrance": 2, - "max_encumbrance": 6, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1738,7 +1612,8 @@ ], "warmth": 1, "material_thickness": 2, - "flags": [ "BELTED", "OVERSIZE" ] + "flags": [ "BELTED", "OVERSIZE" ], + "armor": [ { "encumbrance": [ 2, 6 ], "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "rifle_case_soft_leather", @@ -1753,10 +1628,6 @@ "symbol": "[", "looks_like": "slingpack", "color": "brown", - "covers": [ "torso" ], - "coverage": 10, - "encumbrance": 2, - "max_encumbrance": 6, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1776,7 +1647,8 @@ ], "warmth": 1, "material_thickness": 2, - "flags": [ "WATER_FRIENDLY", "STURDY", "BELTED", "OVERSIZE" ] + "flags": [ "WATER_FRIENDLY", "STURDY", "BELTED", "OVERSIZE" ], + "armor": [ { "encumbrance": [ 2, 6 ], "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "rifle_case_soft_2", @@ -1791,10 +1663,6 @@ "symbol": "[", "looks_like": "slingpack", "color": "green", - "covers": [ "torso" ], - "coverage": 15, - "encumbrance": 2, - "max_encumbrance": 14, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1830,7 +1698,8 @@ ], "warmth": 1, "material_thickness": 2, - "flags": [ "BELTED", "OVERSIZE" ] + "flags": [ "BELTED", "OVERSIZE" ], + "armor": [ { "encumbrance": [ 2, 14 ], "coverage": 15, "covers": [ "torso" ] } ] }, { "id": "rifle_case_soft_leather_2", @@ -1845,10 +1714,6 @@ "symbol": "[", "looks_like": "slingpack", "color": "brown", - "covers": [ "torso" ], - "coverage": 15, - "encumbrance": 2, - "max_encumbrance": 14, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1884,7 +1749,8 @@ ], "warmth": 1, "material_thickness": 2, - "flags": [ "WATER_FRIENDLY", "STURDY", "BELTED", "OVERSIZE" ] + "flags": [ "WATER_FRIENDLY", "STURDY", "BELTED", "OVERSIZE" ], + "armor": [ { "encumbrance": [ 2, 14 ], "coverage": 15, "covers": [ "torso" ] } ] }, { "id": "rifle_case_xl_soft_leather", @@ -1899,10 +1765,6 @@ "symbol": "[", "looks_like": "slingpack", "color": "brown", - "covers": [ "torso" ], - "coverage": 15, - "encumbrance": 2, - "max_encumbrance": 6, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1922,7 +1784,8 @@ ], "warmth": 1, "material_thickness": 2, - "flags": [ "WATER_FRIENDLY", "STURDY", "BELTED", "OVERSIZE" ] + "flags": [ "WATER_FRIENDLY", "STURDY", "BELTED", "OVERSIZE" ], + "armor": [ { "encumbrance": [ 2, 6 ], "coverage": 15, "covers": [ "torso" ] } ] }, { "id": "camera_bag", @@ -1939,10 +1802,6 @@ "symbol": "[", "looks_like": "slingpack", "color": "yellow", - "covers": [ "torso" ], - "coverage": 25, - "encumbrance": 3, - "max_encumbrance": 5, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1963,7 +1822,8 @@ ], "warmth": 2, "material_thickness": 1, - "flags": [ "BELTED", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 3, 5 ], "coverage": 25, "covers": [ "torso" ] } ] }, { "id": "bookstrap", @@ -1978,11 +1838,7 @@ "symbol": "[", "looks_like": "leather_belt", "color": "brown", - "covers": [ "leg_l", "leg_r" ], "sided": true, - "coverage": 5, - "encumbrance": 0, - "max_encumbrance": 11, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1994,6 +1850,7 @@ } ], "material_thickness": 1, - "flags": [ "BELTED", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": [ 0, 11 ], "coverage": 5, "covers": [ "leg_l", "leg_r" ] } ] } ] diff --git a/data/json/items/armor/suits_clothes.json b/data/json/items/armor/suits_clothes.json index 652b0f48446f9..c87928791e498 100644 --- a/data/json/items/armor/suits_clothes.json +++ b/data/json/items/armor/suits_clothes.json @@ -14,7 +14,7 @@ "symbol": "[", "looks_like": "armor_larmor", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": 20 }, { "covers": [ "arm_l", "arm_r" ], "coverage": 75, "encumbrance": 20 }, { "covers": [ "leg_l", "leg_r" ], "coverage": 75, "encumbrance": 20 } @@ -39,7 +39,7 @@ "symbol": "[", "looks_like": "touring_suit", "color": "pink", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 17, 30 ] }, { "covers": [ "arm_l", "arm_r", "leg_l", "leg_r" ], "coverage": 95, "encumbrance": [ 17, 20 ] } ], @@ -67,7 +67,7 @@ "symbol": "[", "looks_like": "wolfsuit", "color": "light_green", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], "coverage": 100, "encumbrance": [ 26, 30 ] }, { "covers": [ "mouth", "eyes" ], "coverage": 95, "encumbrance": [ 26, 26 ] }, { "covers": [ "head" ], "coverage": 100, "encumbrance": [ 26, 26 ] } @@ -92,7 +92,7 @@ "symbol": "[", "looks_like": "touring_suit", "color": "yellow", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 1, 2 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 50, "encumbrance": [ 1, 1 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 80, "encumbrance": [ 1, 2 ] } @@ -121,7 +121,7 @@ "symbol": "[", "looks_like": "jumpsuit", "color": "yellow", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 1, 2 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 50, "encumbrance": [ 1, 1 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 80, "encumbrance": [ 1, 2 ] } @@ -161,7 +161,7 @@ "symbol": "[", "looks_like": "jumpsuit", "color": "yellow", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 3, 7 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 50, "encumbrance": [ 2, 2 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 60, "encumbrance": [ 2, 5 ] } @@ -187,7 +187,7 @@ "symbol": "[", "looks_like": "jumpsuit", "color": "light_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": 3 }, { "covers": [ "arm_l", "arm_r", "leg_l", "leg_r" ], "coverage": 90, "encumbrance": 3 } ], @@ -222,7 +222,7 @@ "symbol": "[", "looks_like": "touring_suit", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso", "leg_l", "leg_r" ], "coverage": 100, "encumbrance": 20 }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": 20 }, { "covers": [ "head" ], "coverage": 60, "encumbrance": 15 }, @@ -244,10 +244,14 @@ "material": [ "lycra" ], "symbol": "[", "color": "dark_gray", - "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, "warmth": 20, "material_thickness": 0.1, - "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ] + "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ], + "armor": [ + { + "coverage": 100, + "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] } ] diff --git a/data/json/items/armor/suits_protection.json b/data/json/items/armor/suits_protection.json index c8b916b003ebc..82ace8bd9b634 100644 --- a/data/json/items/armor/suits_protection.json +++ b/data/json/items/armor/suits_protection.json @@ -1,80 +1,4 @@ [ - { - "id": "aep_suit", - "type": "ARMOR", - "category": "armor", - "name": { "str": "AEP suit" }, - "description": "An armored environmental protection suit. Custom-built from a cleansuit and body armor, it provides excellent protection against both physical harm and ambient radiation.", - "weight": "7200 g", - "volume": "9 L", - "price": 140000, - "price_postapoc": 6000, - "material": [ "kevlar_layered", "plastic" ], - "symbol": "[", - "looks_like": "hazmat_suit", - "color": "light_red", - "armor_portion_data": [ - { "covers": [ "torso" ], "coverage": 100, "encumbrance": [ 10, 15 ] }, - { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": [ 10, 15 ] }, - { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": [ 10, 10 ] } - ], - "pocket_data": [ - { - "pocket_type": "CONTAINER", - "max_contains_volume": "1 L", - "max_contains_weight": "3 kg", - "max_item_length": "18 cm", - "moves": 80 - }, - { - "pocket_type": "CONTAINER", - "max_contains_volume": "1 L", - "max_contains_weight": "3 kg", - "max_item_length": "18 cm", - "moves": 80 - }, - { - "pocket_type": "CONTAINER", - "max_contains_volume": "1 L", - "max_contains_weight": "3 kg", - "max_item_length": "18 cm", - "moves": 80 - }, - { - "pocket_type": "CONTAINER", - "max_contains_volume": "1 L", - "max_contains_weight": "3 kg", - "max_item_length": "18 cm", - "moves": 80 - } - ], - "warmth": 35, - "material_thickness": 7, - "environmental_protection": 9, - "flags": [ "VARSIZE", "WATERPROOF", "HOOD", "RAINPROOF", "STURDY", "RAD_RESIST", "OUTER" ] - }, - { - "id": "anbc_suit", - "type": "ARMOR", - "category": "armor", - "name": { "str": "ANBC suit" }, - "description": "An armored, impermeable full-body suit that functions as body armor, as well as protecting from nuclear, biological, and chemical hazards. It requires a separate gas mask for full protection.", - "weight": "8700 g", - "volume": "20 L", - "price": 400000, - "price_postapoc": 9000, - "material": [ "kevlar_layered", "plastic" ], - "symbol": "[", - "looks_like": "hazmat_suit", - "color": "light_red", - "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 35, - "warmth": 50, - "material_thickness": 7, - "environmental_protection": 20, - "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "GAS_PROOF", "STURDY", "RAD_PROOF", "ELECTRIC_IMMUNE", "OUTER" ] - }, { "id": "armor_blarmor", "type": "ARMOR", @@ -91,7 +15,7 @@ "symbol": "[", "looks_like": "armor_larmor", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 18, 22 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 90, "encumbrance": [ 18, 18 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 18, 18 ] } @@ -133,12 +57,10 @@ "symbol": "[", "looks_like": "armor_larmor", "color": "green", - "covers": [ "torso", "leg_l", "leg_r" ], - "coverage": 90, - "encumbrance": 10, "warmth": 10, "material_thickness": 4, - "flags": [ "STURDY" ] + "flags": [ "STURDY" ], + "armor": [ { "encumbrance": 10, "coverage": 90, "covers": [ "torso", "leg_l", "leg_r" ] } ] }, { "id": "xl_armor_chitin", @@ -186,7 +108,7 @@ "symbol": "[", "looks_like": "armor_larmor", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 21, 25 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 90, "encumbrance": [ 21, 21 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 21, 21 ] } @@ -236,7 +158,7 @@ "symbol": "[", "looks_like": "touring_suit", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 12, 18 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 90, "encumbrance": [ 12, 12 ] } ], @@ -285,12 +207,10 @@ "symbol": "[", "looks_like": "armor_larmor", "color": "light_gray", - "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ], - "coverage": 95, - "encumbrance": 20, "warmth": 20, "material_thickness": 4, - "flags": [ "VARSIZE", "OUTER", "STURDY" ] + "flags": [ "VARSIZE", "OUTER", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 95, "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ] } ] }, { "id": "xl_armor_lightplate", @@ -314,7 +234,7 @@ "symbol": "[", "looks_like": "touring_suit", "color": "light_red", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 10, 16 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 95, "encumbrance": [ 10, 14 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 10, 13 ] } @@ -352,7 +272,7 @@ "looks_like": "armor_nomad", "symbol": "[", "color": "light_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 80, "encumbrance": [ 8, 12 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 80, "encumbrance": [ 8, 12 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 80, "encumbrance": [ 8, 10 ] } @@ -391,7 +311,7 @@ "symbol": "[", "color": "brown", "looks_like": "armor_larmor", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 17, 22 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 90, "encumbrance": [ 17, 19 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 17, 17 ] } @@ -455,12 +375,10 @@ "symbol": "[", "looks_like": "armor_lightplate", "color": "light_gray", - "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ], - "coverage": 90, - "encumbrance": 45, "warmth": 20, "material_thickness": 5, - "flags": [ "VARSIZE", "OUTER" ] + "flags": [ "VARSIZE", "OUTER" ], + "armor": [ { "encumbrance": 45, "coverage": 90, "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ] } ] }, { "id": "xl_armor_plate", @@ -487,12 +405,10 @@ "symbol": "[", "looks_like": "kevlar", "color": "light_gray", - "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ], - "coverage": 85, - "encumbrance": 10, "warmth": 10, "material_thickness": 6, - "flags": [ "STURDY", "OUTER" ] + "flags": [ "STURDY", "OUTER" ], + "armor": [ { "encumbrance": 10, "coverage": 85, "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ] } ] }, { "id": "armor_samurai", @@ -509,12 +425,10 @@ "symbol": "[", "looks_like": "armor_lightplate", "color": "dark_gray", - "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r", "hand_l", "hand_r" ], - "coverage": 85, - "encumbrance": 15, "warmth": 25, "material_thickness": 4, - "flags": [ "VARSIZE", "STURDY", "OUTER" ] + "flags": [ "VARSIZE", "STURDY", "OUTER" ], + "armor": [ { "encumbrance": 15, "coverage": 85, "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r", "hand_l", "hand_r" ] } ] }, { "id": "armor_scavenger", @@ -530,7 +444,7 @@ "symbol": "[", "looks_like": "armor_nomad", "color": "green", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": [ 15, 26 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": [ 15, 19 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": [ 15, 15 ] } @@ -566,12 +480,10 @@ "symbol": "[", "looks_like": "armor_lightplate", "color": "light_gray", - "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ], - "coverage": 80, - "encumbrance": 18, "warmth": 10, "material_thickness": 2, - "flags": [ "OUTER" ] + "flags": [ "OUTER" ], + "armor": [ { "encumbrance": 18, "coverage": 80, "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ] } ] }, { "id": "beekeeping_suit", @@ -588,7 +500,7 @@ "symbol": "[", "looks_like": "hazmat_suit", "color": "white", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": [ 10, 15 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": [ 10, 12 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": [ 10, 10 ] } @@ -622,12 +534,10 @@ "symbol": "[", "looks_like": "armor_blarmor", "color": "light_red", - "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 20, "warmth": 30, "material_thickness": 6, - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 95, "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] }, { "id": "xl_chainmail_hauberk", @@ -652,12 +562,10 @@ "symbol": "[", "looks_like": "touring_suit", "color": "light_red", - "covers": [ "torso", "head", "arm_l", "arm_r", "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 20, "warmth": 30, "material_thickness": 6, - "flags": [ "VARSIZE", "STURDY", "HELMET_COMPAT" ] + "flags": [ "VARSIZE", "STURDY", "HELMET_COMPAT" ], + "armor": [ { "encumbrance": 20, "coverage": 95, "covers": [ "torso", "head", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] }, { "id": "xl_chainmail_suit", @@ -681,15 +589,19 @@ "material": [ "iron", "cotton" ], "symbol": "[", "color": "light_red", - "covers": [ "torso", "head", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r", "mouth", "eyes" ], - "coverage": 100, - "encumbrance": 30, "material_thickness": 4, - "flags": [ "VARSIZE", "STURDY", "HELMET_COMPAT", "ELECTRIC_IMMUNE", "OUTER" ] + "flags": [ "VARSIZE", "STURDY", "HELMET_COMPAT", "ELECTRIC_IMMUNE", "OUTER" ], + "armor": [ + { + "encumbrance": 30, + "coverage": 100, + "covers": [ "torso", "head", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r", "mouth", "eyes" ] + } + ] }, { "id": "cleansuit", - "repairs_like": "aep_suit", + "repairs_like": "fsurvivor_suit", "type": "ARMOR", "name": { "str": "cleansuit" }, "description": "A simple hazardous materials handling suit. Though somewhat restrictive and fragile, wearing it will provide excellent protection against ambient radiation.", @@ -701,13 +613,17 @@ "symbol": "[", "looks_like": "jumpsuit", "color": "white", - "covers": [ "leg_l", "leg_r", "foot_l", "foot_r", "head", "torso", "arm_l", "arm_r" ], - "coverage": 100, - "encumbrance": 25, "warmth": 10, "material_thickness": 1, "environmental_protection": 10, - "flags": [ "VARSIZE", "WATERPROOF", "HOOD", "RAINPROOF", "RAD_RESIST", "OUTER" ] + "flags": [ "VARSIZE", "WATERPROOF", "HOOD", "RAINPROOF", "RAD_RESIST", "OUTER" ], + "armor": [ + { + "encumbrance": 25, + "coverage": 100, + "covers": [ "leg_l", "leg_r", "foot_l", "foot_r", "head", "torso", "arm_l", "arm_r" ] + } + ] }, { "id": "entry_suit", @@ -722,13 +638,17 @@ "symbol": "[", "looks_like": "jumpsuit", "color": "light_gray", - "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 50, "warmth": 30, "material_thickness": 5, "environmental_protection": 20, - "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "GAS_PROOF", "STURDY", "OUTER" ] + "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "GAS_PROOF", "STURDY", "OUTER" ], + "armor": [ + { + "encumbrance": 50, + "coverage": 100, + "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "xl_entry_suit", @@ -754,7 +674,7 @@ "symbol": "[", "looks_like": "survivor_suit", "color": "light_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": [ 10, 26 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": [ 10, 14 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": [ 10, 10 ] } @@ -819,13 +739,11 @@ "symbol": "[", "looks_like": "coat_winter", "color": "light_gray", - "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "coverage": 80, - "encumbrance": 15, "warmth": 30, "material_thickness": 5, "valid_mods": [ "steel_padded" ], - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": 15, "coverage": 80, "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] }, { "id": "xl_gambeson", @@ -837,7 +755,7 @@ }, { "id": "hazmat_suit", - "repairs_like": "aep_suit", + "repairs_like": "fsurvivor_suit", "type": "ARMOR", "name": { "str": "hazmat suit" }, "description": "An impermeable whole-body garment worn as protection against hazardous materials. Though very restrictive and fragile, wearing it will provide complete protection against ambient radiation. It requires a separate gas mask for full protection.", @@ -849,13 +767,17 @@ "symbol": "[", "looks_like": "beekeeping_suit", "color": "yellow", - "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 37, "warmth": 40, "material_thickness": 2, "environmental_protection": 20, - "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "GAS_PROOF", "RAD_PROOF", "ELECTRIC_IMMUNE", "OUTER" ] + "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "GAS_PROOF", "RAD_PROOF", "ELECTRIC_IMMUNE", "OUTER" ], + "armor": [ + { + "encumbrance": 37, + "coverage": 100, + "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "hsurvivor_suit", @@ -873,7 +795,7 @@ "symbol": "[", "looks_like": "survivor_suit", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": [ 17, 31 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": [ 17, 21 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": [ 17, 17 ] } @@ -903,7 +825,7 @@ "symbol": "[", "looks_like": "survivor_suit", "color": "green", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": [ 7, 15 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": [ 7, 7 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": [ 7, 7 ] } @@ -941,13 +863,11 @@ "symbol": "[", "looks_like": "jumpsuit", "color": "light_gray", - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ], - "coverage": 100, - "encumbrance": 6, "warmth": 5, "material_thickness": 2, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT", "STURDY" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT", "STURDY" ], + "armor": [ { "encumbrance": 6, "coverage": 100, "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ] } ] }, { "id": "xl_nomex_suit", @@ -959,7 +879,7 @@ }, { "id": "robofac_enviro_suit", - "repairs_like": "aep_suit", + "repairs_like": "fsurvivor_suit", "type": "ARMOR", "name": { "str": "Hub 01 environmental suit" }, "description": "A lightweight environmental suit worn by Hub personnel in their rare forays aboveground. Colored brown and blue, the white seal of Hub 01 is embroidered on both of its upper arms. It requires a separate gas mask for full protection.", @@ -971,7 +891,7 @@ "symbol": "[", "looks_like": "hazmat_suit", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": [ 7, 7 ] }, { "covers": [ "torso" ], "coverage": 100, "encumbrance": [ 7, 13 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": [ 7, 10 ] }, @@ -1005,12 +925,10 @@ "symbol": "[", "looks_like": "jumpsuit", "color": "dark_gray", - "covers": [ "foot_l", "foot_r", "leg_l", "leg_r", "torso", "arm_l", "arm_r" ], - "coverage": 95, - "encumbrance": 18, "warmth": 15, "material_thickness": 1, - "flags": [ "VARSIZE", "SKINTIGHT", "HOOD", "WATERPROOF", "SLOWS_THIRST", "SLOWS_MOVEMENT" ] + "flags": [ "VARSIZE", "SKINTIGHT", "HOOD", "WATERPROOF", "SLOWS_THIRST", "SLOWS_MOVEMENT" ], + "armor": [ { "encumbrance": 18, "coverage": 95, "covers": [ "foot_l", "foot_r", "leg_l", "leg_r", "torso", "arm_l", "arm_r" ] } ] }, { "id": "suit", @@ -1027,7 +945,7 @@ "symbol": "[", "looks_like": "jumpsuit", "color": "light_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 7, 13 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 95, "encumbrance": [ 7, 10 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 7, 7 ] } @@ -1060,7 +978,7 @@ "symbol": "[", "looks_like": "touring_suit", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": [ 12, 20 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": [ 12, 17 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": [ 12, 12 ] } @@ -1095,7 +1013,7 @@ "symbol": "[", "looks_like": "touring_suit", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 12, 19 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 95, "encumbrance": [ 12, 16 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 12, 12 ] } @@ -1128,7 +1046,7 @@ "symbol": "[", "looks_like": "jumpsuit", "color": "light_red", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 14, 15 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 95, "encumbrance": [ 14, 14 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 14, 14 ] } @@ -1156,7 +1074,7 @@ "symbol": "[", "looks_like": "survivor_suit", "color": "light_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": [ 20, 28 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": [ 20, 25 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": [ 20, 20 ] } @@ -1197,7 +1115,7 @@ "symbol": "[", "looks_like": "survivor_suit", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": [ 17, 30 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": [ 17, 22 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": [ 17, 17 ] } @@ -1232,7 +1150,7 @@ "symbol": "[", "looks_like": "hsurvivor_suit", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": [ 22, 39 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": [ 22, 28 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": [ 22, 22 ] } @@ -1262,7 +1180,7 @@ "symbol": "[", "looks_like": "touring_suit", "color": "green", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 1, 2 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 50, "encumbrance": [ 1, 1 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 80, "encumbrance": [ 1, 2 ] } diff --git a/data/json/items/armor/swimming.json b/data/json/items/armor/swimming.json index 448ea1349da71..0570c1cf90e2e 100644 --- a/data/json/items/armor/swimming.json +++ b/data/json/items/armor/swimming.json @@ -12,11 +12,10 @@ "symbol": "[", "looks_like": "panties", "color": "light_red", - "covers": [ "leg_l", "leg_r" ], - "coverage": 15, "warmth": 5, "material_thickness": 0.01, - "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ] + "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ], + "armor": [ { "coverage": 15, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "trunks", @@ -33,10 +32,9 @@ "symbol": "[", "looks_like": "shorts", "color": "blue", - "covers": [ "leg_l", "leg_r" ], - "coverage": 35, "material_thickness": 0.1, - "flags": [ "VARSIZE", "WATER_FRIENDLY" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY" ], + "armor": [ { "coverage": 35, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "wetsuit", @@ -52,7 +50,7 @@ "symbol": "[", "looks_like": "wetsuit_spring", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": [ 11, 14 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": [ 11, 13 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": [ 11, 11 ] } @@ -91,13 +89,11 @@ "symbol": "[", "looks_like": "hood_rain", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 100, - "encumbrance": 10, "warmth": 30, "material_thickness": 3, "environmental_protection": 1, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ], + "armor": [ { "encumbrance": 10, "coverage": 100, "covers": [ "head" ] } ] }, { "id": "hood_h20survivor", @@ -115,13 +111,11 @@ "symbol": "[", "looks_like": "wetsuit_hood", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 100, - "encumbrance": 25, "warmth": 15, "material_thickness": 3, "environmental_protection": 10, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY", "OUTER", "HELMET_COMPAT" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY", "OUTER", "HELMET_COMPAT" ], + "armor": [ { "encumbrance": 25, "coverage": 100, "covers": [ "head" ] } ] }, { "id": "h20survivor_suit", @@ -139,7 +133,7 @@ "symbol": "[", "looks_like": "wetsuit", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": [ 10, 16 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": [ 10, 14 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": [ 10, 10 ] } @@ -171,13 +165,11 @@ "symbol": "[", "looks_like": "gloves_rubber", "color": "dark_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 25, "warmth": 15, "material_thickness": 1, "environmental_protection": 10, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY" ], + "armor": [ { "encumbrance": 25, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "wetsuit_spring", @@ -193,7 +185,7 @@ "symbol": "[", "looks_like": "wetsuit", "color": "pink", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 2, 5 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 2, 4 ] } ], @@ -232,12 +224,16 @@ "symbol": "[", "looks_like": "chainmail_hauberk", "color": "light_red", - "covers": [ "torso", "head", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 30, "warmth": 5, "material_thickness": 3, - "flags": [ "VARSIZE", "STURDY", "WATER_FRIENDLY", "ELECTRIC_IMMUNE", "HELMET_COMPAT" ] + "flags": [ "VARSIZE", "STURDY", "WATER_FRIENDLY", "ELECTRIC_IMMUNE", "HELMET_COMPAT" ], + "armor": [ + { + "encumbrance": 30, + "coverage": 100, + "covers": [ "torso", "head", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "shark_suit", @@ -254,12 +250,16 @@ "symbol": "[", "looks_like": "chainmail_suit", "color": "light_red", - "covers": [ "torso", "head", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 30, "warmth": 5, "material_thickness": 3, - "flags": [ "VARSIZE", "STURDY", "WATER_FRIENDLY" ] + "flags": [ "VARSIZE", "STURDY", "WATER_FRIENDLY" ], + "armor": [ + { + "encumbrance": 30, + "coverage": 100, + "covers": [ "torso", "head", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "goggles_swim", @@ -275,13 +275,11 @@ "symbol": "[", "looks_like": "goggles_welding", "color": "light_blue", - "covers": [ "eyes" ], - "coverage": 100, - "encumbrance": 10, "warmth": 10, "material_thickness": 1, "environmental_protection": 4, - "flags": [ "WATER_FRIENDLY", "SWIM_GOGGLES" ] + "flags": [ "WATER_FRIENDLY", "SWIM_GOGGLES" ], + "armor": [ { "encumbrance": 10, "coverage": 100, "covers": [ "eyes" ] } ] }, { "id": "wetsuit_gloves", @@ -297,12 +295,10 @@ "symbol": "[", "looks_like": "gloves_tactical", "color": "dark_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 10, "warmth": 30, "material_thickness": 2, "environmental_protection": 1, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ], + "armor": [ { "encumbrance": 10, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] } ] diff --git a/data/json/items/armor/torso_armor.json b/data/json/items/armor/torso_armor.json index 77e2660c19f8a..9a5b479a3a504 100644 --- a/data/json/items/armor/torso_armor.json +++ b/data/json/items/armor/torso_armor.json @@ -15,12 +15,10 @@ "symbol": "[", "looks_like": "cuirass_lightplate", "color": "yellow", - "covers": [ "torso" ], - "coverage": 90, - "encumbrance": 15, "warmth": 15, "material_thickness": 3, - "flags": [ "VARSIZE", "OUTER", "STURDY" ] + "flags": [ "VARSIZE", "OUTER", "STURDY" ], + "armor": [ { "encumbrance": 15, "coverage": 90, "covers": [ "torso" ] } ] }, { "id": "xl_armor_cuirass", @@ -44,12 +42,10 @@ "looks_like": "vest_leather", "copy-from": "armor_chitin", "color": "brown", - "covers": [ "torso" ], - "coverage": 80, - "encumbrance": 20, "warmth": 20, "material_thickness": 8, - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 80, "covers": [ "torso" ] } ] }, { "id": "xl_armor_lamellar", @@ -74,12 +70,10 @@ "symbol": "[", "looks_like": "armor_lamellar", "color": "light_gray", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 90, - "encumbrance": 15, "warmth": 15, "material_thickness": 4, - "flags": [ "VARSIZE", "OUTER", "STURDY" ] + "flags": [ "VARSIZE", "OUTER", "STURDY" ], + "armor": [ { "encumbrance": 15, "coverage": 90, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "xl_armor_lorica", @@ -104,12 +98,10 @@ "symbol": "O", "looks_like": "armor_scrapsuit", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 80, - "encumbrance": 20, "warmth": 10, "material_thickness": 12, - "flags": [ "BELTED" ] + "flags": [ "BELTED" ], + "armor": [ { "encumbrance": 20, "coverage": 80, "covers": [ "torso" ] } ] }, { "id": "chainmail_vest", @@ -126,11 +118,9 @@ "symbol": "[", "looks_like": "vest_leather", "color": "light_red", - "covers": [ "torso" ], - "coverage": 95, - "encumbrance": 20, "material_thickness": 4, - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 95, "covers": [ "torso" ] } ] }, { "id": "xl_chainmail_vest", @@ -156,13 +146,11 @@ "symbol": "H", "looks_like": "cuirass_lightplate", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 90, - "encumbrance": 20, "warmth": 20, "material_thickness": 3, "environmental_protection": 1, - "flags": [ "WATER_FRIENDLY", "STURDY", "OUTER" ] + "flags": [ "WATER_FRIENDLY", "STURDY", "OUTER" ], + "armor": [ { "encumbrance": 20, "coverage": 90, "covers": [ "torso" ] } ] }, { "id": "cuirass_lightplate", @@ -179,12 +167,10 @@ "symbol": "[", "looks_like": "chestguard_hard", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 95, - "encumbrance": 20, "warmth": 20, "material_thickness": 4, - "flags": [ "VARSIZE", "OUTER", "STURDY" ] + "flags": [ "VARSIZE", "OUTER", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 95, "covers": [ "torso" ] } ] }, { "id": "xl_cuirass_lightplate", @@ -211,12 +197,10 @@ "symbol": "[", "looks_like": "cuirass_lightplate", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 80, - "encumbrance": 18, "warmth": 10, "material_thickness": 2, - "flags": [ "OUTER" ] + "flags": [ "OUTER" ], + "armor": [ { "encumbrance": 18, "coverage": 80, "covers": [ "torso" ] } ] }, { "id": "xl_cuirass_scrap", @@ -240,13 +224,11 @@ "symbol": "[", "looks_like": "coat_lab", "color": "white", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 100, - "encumbrance": 5, "warmth": 25, "material_thickness": 3, "valid_mods": [ "steel_padded" ], - "flags": [ "STURDY" ] + "flags": [ "STURDY" ], + "armor": [ { "encumbrance": 5, "coverage": 100, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "jacket_leather_mod", @@ -262,7 +244,7 @@ "symbol": "[", "looks_like": "jacket_leather", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 85, "encumbrance": [ 20, 23 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 85, "encumbrance": [ 20, 22 ] } ], @@ -299,12 +281,10 @@ "material": [ "cotton", "budget_steel" ], "symbol": "[", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 100, - "encumbrance": 8, "warmth": 10, "material_thickness": 1, - "flags": [ "VARSIZE", "OUTER" ] + "flags": [ "VARSIZE", "OUTER" ], + "armor": [ { "encumbrance": 8, "coverage": 100, "covers": [ "torso" ] } ] }, { "id": "lame_saber", @@ -319,12 +299,10 @@ "material": [ "cotton", "budget_steel" ], "symbol": "[", "color": "light_gray", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 100, - "encumbrance": 8, "warmth": 10, "material_thickness": 1, - "flags": [ "VARSIZE", "OUTER" ] + "flags": [ "VARSIZE", "OUTER" ], + "armor": [ { "encumbrance": 8, "coverage": 100, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "football_armor", @@ -341,12 +319,10 @@ "symbol": "[", "looks_like": "chestguard_hard", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 45, - "encumbrance": 35, "warmth": 10, "material_thickness": 6, - "flags": [ "BELTED" ] + "flags": [ "BELTED" ], + "armor": [ { "encumbrance": 35, "coverage": 45, "covers": [ "torso" ] } ] }, { "id": "kevlar", @@ -365,12 +341,10 @@ "symbol": "[", "looks_like": "vest_leather", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 85, - "encumbrance": 5, "warmth": 15, "material_thickness": 3, - "flags": [ "STURDY", "SKINTIGHT" ] + "flags": [ "STURDY", "SKINTIGHT" ], + "armor": [ { "encumbrance": 5, "coverage": 85, "covers": [ "torso" ] } ] }, { "id": "lsurvivor_armor", @@ -386,10 +360,6 @@ "symbol": "[", "looks_like": "lsurvivor_suit", "color": "green", - "covers": [ "torso" ], - "coverage": 95, - "encumbrance": 8, - "max_encumbrance": 16, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "700 ml", "max_contains_weight": "3 kg", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "700 ml", "max_contains_weight": "3 kg", "moves": 80 }, @@ -401,7 +371,8 @@ "warmth": 15, "material_thickness": 4, "environmental_protection": 1, - "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ], + "armor": [ { "encumbrance": [ 8, 16 ], "coverage": 95, "covers": [ "torso" ] } ] }, { "id": "xl_lsurvivor_armor", @@ -426,7 +397,7 @@ "symbol": "[", "looks_like": "jacket_leather", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 28, 30 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 28, 28 ] } ], @@ -452,11 +423,10 @@ "material": [ "cotton" ], "symbol": "[", "color": "white", - "covers": [ "torso" ], - "coverage": 65, "warmth": 5, "material_thickness": 3, - "flags": [ "SKINTIGHT" ] + "flags": [ "SKINTIGHT" ], + "armor": [ { "coverage": 65, "covers": [ "torso" ] } ] }, { "id": "plastron_plastic", @@ -470,12 +440,10 @@ "material": [ "plastic" ], "symbol": "[", "color": "white", - "covers": [ "torso" ], - "coverage": 35, - "encumbrance": 2, "warmth": 5, "material_thickness": 3, - "flags": [ "SKINTIGHT" ] + "flags": [ "SKINTIGHT" ], + "armor": [ { "encumbrance": 2, "coverage": 35, "covers": [ "torso" ] } ] }, { "id": "vest_leather_mod", @@ -491,10 +459,6 @@ "symbol": "[", "looks_like": "vest_leather", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 90, - "encumbrance": 17, - "max_encumbrance": 24, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "700 ml", "max_contains_weight": "2 kg", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "700 ml", "max_contains_weight": "2 kg", "moves": 80 }, @@ -504,7 +468,8 @@ "warmth": 30, "material_thickness": 3, "environmental_protection": 1, - "flags": [ "VARSIZE", "POCKETS", "OUTER" ] + "flags": [ "VARSIZE", "POCKETS", "OUTER" ], + "armor": [ { "encumbrance": [ 17, 24 ], "coverage": 90, "covers": [ "torso" ] } ] }, { "id": "jacket_eod", @@ -516,16 +481,14 @@ "weight": "16300 g", "volume": "15 L", "price": 200000, - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 100, - "encumbrance": 80, "warmth": 65, "material": [ "kevlar_layered", "kevlar_rigid", "nomex" ], "symbol": "[", "color": "light_gray", "environmental_protection": 2, "material_thickness": 15, - "flags": [ "STURDY", "OUTER", "RAINPROOF", "ONLY_ONE" ] + "flags": [ "STURDY", "OUTER", "RAINPROOF", "ONLY_ONE" ], + "armor": [ { "encumbrance": 80, "coverage": 100, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "jacket_eod_light", @@ -537,15 +500,13 @@ "weight": "7000 g", "volume": "15 L", "price": 200000, - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 100, - "encumbrance": 40, "warmth": 40, "material": [ "kevlar_layered", "kevlar_rigid", "nomex" ], "symbol": "[", "color": "light_gray", "environmental_protection": 2, "material_thickness": 7, - "flags": [ "STURDY", "OUTER", "RAINPROOF", "ONLY_ONE" ] + "flags": [ "STURDY", "OUTER", "RAINPROOF", "ONLY_ONE" ], + "armor": [ { "encumbrance": 40, "coverage": 100, "covers": [ "torso", "arm_l", "arm_r" ] } ] } ] diff --git a/data/json/items/armor/torso_clothes.json b/data/json/items/armor/torso_clothes.json index 149013aa8211e..cbd4d77a5c3ea 100644 --- a/data/json/items/armor/torso_clothes.json +++ b/data/json/items/armor/torso_clothes.json @@ -13,7 +13,7 @@ "symbol": "[", "looks_like": "vest_leather", "color": "brown", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 70, "encumbrance": [ 2, 5 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 70, "encumbrance": [ 2, 2 ] } ], @@ -61,7 +61,7 @@ "symbol": "[", "looks_like": "jacket_light", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 85, "encumbrance": [ 16, 20 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 85, "encumbrance": [ 16, 16 ] } ], @@ -108,12 +108,10 @@ "symbol": "[", "looks_like": "robe", "color": "pink", - "covers": [ "torso", "leg_l", "leg_r" ], - "coverage": 85, - "encumbrance": 7, "warmth": 15, "material_thickness": 0.2, - "flags": [ "VARSIZE", "FANCY" ] + "flags": [ "VARSIZE", "FANCY" ], + "armor": [ { "encumbrance": 7, "coverage": 85, "covers": [ "torso", "leg_l", "leg_r" ] } ] }, { "id": "dress_shirt", @@ -129,7 +127,7 @@ "symbol": "[", "looks_like": "longshirt", "color": "white", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 4, 5 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 4, 4 ] } ], @@ -161,12 +159,10 @@ "symbol": "[", "looks_like": "dress", "color": "white", - "covers": [ "torso", "leg_l", "leg_r" ], - "coverage": 90, - "encumbrance": 45, "warmth": 30, "material_thickness": 0.2, - "flags": [ "VARSIZE", "SUPER_FANCY" ] + "flags": [ "VARSIZE", "SUPER_FANCY" ], + "armor": [ { "encumbrance": 45, "coverage": 90, "covers": [ "torso", "leg_l", "leg_r" ] } ] }, { "id": "flag_shirt", @@ -182,11 +178,10 @@ "symbol": "[", "looks_like": "tshirt", "color": "light_red", - "covers": [ "torso" ], - "coverage": 90, "warmth": 10, "material_thickness": 0.2, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "coverage": 90, "covers": [ "torso" ] } ] }, { "id": "flotation_vest", @@ -204,12 +199,10 @@ "symbol": "[", "looks_like": "vest_leather", "color": "yellow", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 40, "warmth": 5, "material_thickness": 4, - "flags": [ "FLOTATION", "WATER_FRIENDLY", "BELTED" ] + "flags": [ "FLOTATION", "WATER_FRIENDLY", "BELTED" ], + "armor": [ { "encumbrance": 40, "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "flotation_vest_ms", @@ -226,12 +219,10 @@ "symbol": "[", "looks_like": "vest_leather", "color": "brown", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 50, "warmth": 5, "material_thickness": 2, - "flags": [ "FLOTATION", "WATER_FRIENDLY", "BELTED" ] + "flags": [ "FLOTATION", "WATER_FRIENDLY", "BELTED" ], + "armor": [ { "encumbrance": 50, "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "gown", @@ -247,12 +238,10 @@ "symbol": "[", "looks_like": "dress", "color": "dark_gray", - "covers": [ "torso", "leg_l", "leg_r" ], - "coverage": 75, - "encumbrance": 14, "warmth": 5, "material_thickness": 0.3, - "flags": [ "VARSIZE", "SUPER_FANCY" ] + "flags": [ "VARSIZE", "SUPER_FANCY" ], + "armor": [ { "encumbrance": 14, "coverage": 75, "covers": [ "torso", "leg_l", "leg_r" ] } ] }, { "id": "halter_top", @@ -269,11 +258,10 @@ "symbol": "[", "looks_like": "tank_top", "color": "pink", - "covers": [ "torso" ], - "coverage": 25, "warmth": 2, "material_thickness": 0.1, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "coverage": 25, "covers": [ "torso" ] } ] }, { "id": "hoodie", @@ -288,7 +276,7 @@ "symbol": "[", "looks_like": "sweater", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 6, 12 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 6, 6 ] } ], @@ -320,9 +308,6 @@ "symbol": "[", "looks_like": "tshirt", "color": "yellow", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 90, - "encumbrance": 7, "warmth": 25, "material_thickness": 0.3, "snippet_category": [ @@ -371,7 +356,8 @@ "text": "A volleyball jersey made of thick material imprinted with the logo of the Ooarai Ducks." } ], - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 7, "coverage": 90, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "leotard", @@ -385,11 +371,10 @@ "material": [ "lycra" ], "symbol": "[", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 55, "warmth": 5, "material_thickness": 0.01, - "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ] + "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ], + "armor": [ { "coverage": 55, "covers": [ "torso" ] } ] }, { "id": "linuxtshirt", @@ -405,9 +390,6 @@ "symbol": "[", "looks_like": "tshirt", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 90, - "encumbrance": 5, "warmth": 5, "material_thickness": 0.1, "snippet_category": [ @@ -444,7 +426,8 @@ "text": "A t-shirt with the Debian logo on it, underneath it says \"The Universal Operating System\"" } ], - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 5, "coverage": 90, "covers": [ "torso" ] } ] }, { "id": "longshirt", @@ -459,12 +442,10 @@ "symbol": "[", "looks_like": "dress_shirt", "color": "blue", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 90, - "encumbrance": 3, "warmth": 5, "material_thickness": 0.2, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 3, "coverage": 90, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "maid_dress", @@ -480,7 +461,7 @@ "symbol": "[", "looks_like": "dress", "color": "blue", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 75, "encumbrance": [ 5, 7 ] }, { "covers": [ "leg_l", "leg_r" ], "coverage": 75, "encumbrance": [ 5, 5 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 75, "encumbrance": [ 5, 5 ] } @@ -512,12 +493,10 @@ "symbol": "[", "looks_like": "tshirt", "color": "light_red", - "covers": [ "torso" ], - "coverage": 90, - "encumbrance": 7, "warmth": 15, "material_thickness": 0.2, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 7, "coverage": 90, "covers": [ "torso" ] } ] }, { "id": "postman_shirt", @@ -533,8 +512,6 @@ "symbol": "[", "looks_like": "polo_shirt", "color": "light_blue", - "covers": [ "torso" ], - "coverage": 90, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -553,7 +530,8 @@ ], "warmth": 5, "material_thickness": 0.1, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "coverage": 90, "covers": [ "torso" ] } ] }, { "id": "sheriffshirt", @@ -569,7 +547,7 @@ "symbol": "[", "looks_like": "dress_shirt", "color": "light_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": [ 3, 5 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 90, "encumbrance": [ 3, 3 ] } ], @@ -599,7 +577,7 @@ "symbol": "[", "looks_like": "camisole", "color": "yellow", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 90, "encumbrance": 8 }, { "covers": [ "arm_l", "arm_r" ], "coverage": 25, "encumbrance": 1 } ], @@ -621,12 +599,10 @@ "symbol": "[", "looks_like": "longshirt", "color": "white", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 90, - "encumbrance": 5, "warmth": 5, "material_thickness": 0.2, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 5, "coverage": 90, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "sundress", @@ -642,10 +618,9 @@ "symbol": "[", "looks_like": "dress", "color": "yellow", - "covers": [ "torso", "leg_l", "leg_r" ], - "coverage": 65, "material_thickness": 0.1, - "flags": [ "VARSIZE", "FANCY" ] + "flags": [ "VARSIZE", "FANCY" ], + "armor": [ { "coverage": 65, "covers": [ "torso", "leg_l", "leg_r" ] } ] }, { "id": "sweater", @@ -660,13 +635,11 @@ "symbol": "[", "looks_like": "longshirt", "color": "blue", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 95, - "encumbrance": 10, "warmth": 40, "material_thickness": 1, "valid_mods": [ "steel_padded" ], - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 10, "coverage": 95, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "sweatshirt", @@ -682,13 +655,11 @@ "symbol": "[", "looks_like": "longshirt", "color": "light_red", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 95, - "encumbrance": 10, "warmth": 30, "material_thickness": 1, "valid_mods": [ "steel_padded" ], - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 10, "coverage": 95, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "technician_shirt_gray", @@ -704,10 +675,6 @@ "symbol": "[", "looks_like": "polo_shirt", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 4, - "max_encumbrance": 5, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -724,7 +691,8 @@ { "id": "technician_shirt_gray", "text": "A gray work t-shirt with a small front pocket." }, { "id": "technician_shirt_lightblue", "text": "A light-blue work t-shirt with a small front pocket." } ], - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": [ 4, 5 ], "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "tshirt", @@ -739,11 +707,10 @@ "symbol": "[", "looks_like": "camisole", "color": "white", - "covers": [ "torso" ], - "coverage": 90, "warmth": 5, "material_thickness": 0.1, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "coverage": 90, "covers": [ "torso" ] } ] }, { "id": "tshirt_text", @@ -759,8 +726,6 @@ "symbol": "[", "looks_like": "tshirt", "color": "white", - "covers": [ "torso" ], - "coverage": 90, "warmth": 5, "material_thickness": 0.1, "snippet_category": [ @@ -769,7 +734,8 @@ "text": "A short-sleeved cotton shirt with the text \"chown -R us ~your/base\" printed on the front." } ], - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "coverage": 90, "covers": [ "torso" ] } ] }, { "id": "tshirt_tour", @@ -831,14 +797,11 @@ "symbol": "[", "looks_like": "longshirt", "color": "brown", - "covers": [ "torso" ], - "coverage": 50, - "encumbrance": 4, - "max_encumbrance": 5, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "250 ml", "max_contains_weight": "1 kg", "moves": 400 } ], "warmth": 5, "material_thickness": 0.4, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": [ 4, 5 ], "coverage": 50, "covers": [ "torso" ] } ] }, { "id": "vest_leather", @@ -854,10 +817,6 @@ "symbol": "[", "looks_like": "vest", "color": "brown", - "covers": [ "torso" ], - "coverage": 90, - "encumbrance": 4, - "max_encumbrance": 8, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -885,7 +844,8 @@ "material_thickness": 1.5, "environmental_protection": 1, "valid_mods": [ "steel_padded" ], - "flags": [ "VARSIZE", "POCKETS", "OUTER" ] + "flags": [ "VARSIZE", "POCKETS", "OUTER" ], + "armor": [ { "encumbrance": [ 4, 8 ], "coverage": 90, "covers": [ "torso" ] } ] }, { "id": "wool_hoodie", @@ -900,7 +860,7 @@ "symbol": "[", "looks_like": "hoodie", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 95, "encumbrance": [ 6, 12 ] }, { "covers": [ "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 6, 6 ] } ], diff --git a/data/json/items/armor/undergarment.json b/data/json/items/armor/undergarment.json index 09f710565fc9f..de9473626974e 100644 --- a/data/json/items/armor/undergarment.json +++ b/data/json/items/armor/undergarment.json @@ -12,12 +12,10 @@ "symbol": "[", "looks_like": "armguard_larmor", "color": "light_gray", - "covers": [ "arm_l", "arm_r" ], - "coverage": 80, - "encumbrance": 1, "warmth": 20, "material_thickness": 0.5, - "flags": [ "SKINTIGHT" ] + "flags": [ "SKINTIGHT" ], + "armor": [ { "encumbrance": 1, "coverage": 80, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "xl_arm_warmers", @@ -43,10 +41,9 @@ "symbol": "[", "looks_like": "tank_top", "color": "green", - "covers": [ "torso" ], - "coverage": 60, "material_thickness": 0.1, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ], + "armor": [ { "coverage": 60, "covers": [ "torso" ] } ] }, { "id": "bikini_top", @@ -61,10 +58,9 @@ "symbol": "[", "looks_like": "bra", "color": "light_red", - "covers": [ "torso" ], - "coverage": 10, "material_thickness": 0.1, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ], + "armor": [ { "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "bikini_top_fur", @@ -79,11 +75,10 @@ "symbol": "[", "looks_like": "bikini_top", "color": "brown", - "covers": [ "torso" ], - "coverage": 10, "warmth": 10, "material_thickness": 0.5, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "bikini_top_leather", @@ -98,11 +93,10 @@ "symbol": "[", "looks_like": "bikini_top", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 10, "warmth": 5, "material_thickness": 0.5, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "boxer_briefs", @@ -117,11 +111,10 @@ "symbol": "[", "looks_like": "shorts", "color": "light_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 20, "warmth": 5, "material_thickness": 0.1, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 20, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "xlboxer_briefs", @@ -146,11 +139,10 @@ "symbol": "[", "looks_like": "boxer_briefs", "color": "light_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 25, "warmth": 5, "material_thickness": 0.01, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 25, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "xlboxer_shorts", @@ -175,11 +167,10 @@ "symbol": "[", "looks_like": "boxer_briefs", "color": "light_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 25, "warmth": 5, "material_thickness": 0.1, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 25, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "xlboy_shorts", @@ -204,11 +195,10 @@ "symbol": "[", "looks_like": "tank_top", "color": "white", - "covers": [ "torso" ], - "coverage": 15, "warmth": 5, "material_thickness": 0.1, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 15, "covers": [ "torso" ] } ] }, { "id": "briefs", @@ -223,11 +213,10 @@ "symbol": "[", "looks_like": "boxer_briefs", "color": "white", - "covers": [ "leg_l", "leg_r" ], - "coverage": 15, "warmth": 5, "material_thickness": 0.1, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 15, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "camisole", @@ -244,10 +233,9 @@ "symbol": "[", "looks_like": "tank_top", "color": "light_blue", - "covers": [ "torso" ], - "coverage": 45, "material_thickness": 0.1, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 45, "covers": [ "torso" ] } ] }, { "id": "chestwrap", @@ -262,11 +250,10 @@ "symbol": "[", "looks_like": "tshirt", "color": "brown", - "covers": [ "torso" ], - "coverage": 25, "warmth": 5, "material_thickness": 0.2, - "flags": [ "SKINTIGHT", "OVERSIZE" ] + "flags": [ "SKINTIGHT", "OVERSIZE" ], + "armor": [ { "coverage": 25, "covers": [ "torso" ] } ] }, { "id": "chestwrap_fur", @@ -281,12 +268,10 @@ "symbol": "[", "looks_like": "chestwrap_leather", "color": "brown", - "covers": [ "torso" ], - "coverage": 25, - "encumbrance": 5, "warmth": 20, "material_thickness": 0.2, - "flags": [ "SKINTIGHT", "OVERSIZE" ] + "flags": [ "SKINTIGHT", "OVERSIZE" ], + "armor": [ { "encumbrance": 5, "coverage": 25, "covers": [ "torso" ] } ] }, { "id": "chestwrap_leather", @@ -301,12 +286,10 @@ "symbol": "[", "looks_like": "chestwrap", "color": "brown", - "covers": [ "torso" ], - "coverage": 25, - "encumbrance": 5, "warmth": 10, "material_thickness": 0.5, - "flags": [ "SKINTIGHT", "OVERSIZE" ] + "flags": [ "SKINTIGHT", "OVERSIZE" ], + "armor": [ { "encumbrance": 5, "coverage": 25, "covers": [ "torso" ] } ] }, { "id": "chestwrap_wool", @@ -321,12 +304,10 @@ "symbol": "[", "looks_like": "chestwrap", "color": "blue", - "covers": [ "torso" ], - "coverage": 25, - "encumbrance": 5, "warmth": 15, "material_thickness": 0.2, - "flags": [ "SKINTIGHT", "OVERSIZE" ] + "flags": [ "SKINTIGHT", "OVERSIZE" ], + "armor": [ { "encumbrance": 5, "coverage": 25, "covers": [ "torso" ] } ] }, { "id": "corset", @@ -343,13 +324,11 @@ "symbol": "[", "looks_like": "vest_leather", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 75, - "encumbrance": 15, "warmth": 25, "material_thickness": 3, "environmental_protection": 1, - "flags": [ "VARSIZE", "FANCY", "SKINTIGHT" ] + "flags": [ "VARSIZE", "FANCY", "SKINTIGHT" ], + "armor": [ { "encumbrance": 15, "coverage": 75, "covers": [ "torso" ] } ] }, { "id": "leg_warmers", @@ -364,12 +343,10 @@ "symbol": "[", "looks_like": "leggings", "color": "light_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 60, - "encumbrance": 1, "warmth": 20, "material_thickness": 0.1, - "flags": [ "SKINTIGHT" ] + "flags": [ "SKINTIGHT" ], + "armor": [ { "encumbrance": 1, "coverage": 60, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "leg_warmers_f", @@ -384,12 +361,10 @@ "symbol": "[", "looks_like": "leg_warmers", "color": "brown", - "covers": [ "leg_l", "leg_r" ], - "coverage": 60, - "encumbrance": 3, "warmth": 40, "material_thickness": 0.2, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 3, "coverage": 60, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "leg_warmers_xl", @@ -404,12 +379,10 @@ "symbol": "[", "looks_like": "leg_warmers", "color": "light_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 60, - "encumbrance": 7, "warmth": 20, "material_thickness": 2, - "flags": [ "VARSIZE", "SKINTIGHT", "OVERSIZE" ] + "flags": [ "VARSIZE", "SKINTIGHT", "OVERSIZE" ], + "armor": [ { "encumbrance": 7, "coverage": 60, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "long_underpants", @@ -424,12 +397,10 @@ "symbol": "[", "looks_like": "leggings", "color": "light_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 3, "warmth": 30, "material_thickness": 0.2, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "encumbrance": 3, "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "long_undertop", @@ -444,12 +415,10 @@ "symbol": "[", "looks_like": "longshirt", "color": "light_gray", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 95, - "encumbrance": 3, "warmth": 30, "material_thickness": 0.2, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "encumbrance": 3, "coverage": 95, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "long_undertop_sleeveless", @@ -464,12 +433,10 @@ "symbol": "[", "looks_like": "long_undertop", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 95, - "encumbrance": 3, "warmth": 30, "material_thickness": 0.2, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "encumbrance": 3, "coverage": 95, "covers": [ "torso" ] } ] }, { "id": "panties", @@ -484,11 +451,10 @@ "symbol": "[", "looks_like": "briefs", "color": "white", - "covers": [ "leg_l", "leg_r" ], - "coverage": 15, "warmth": 5, "material_thickness": 0.1, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 15, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "thermal_shirt", @@ -502,11 +468,10 @@ "material": [ "lycra" ], "symbol": "[", "color": "dark_gray", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 95, "warmth": 20, "material_thickness": 0.1, - "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ] + "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ], + "armor": [ { "coverage": 95, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "sports_bra", @@ -521,11 +486,10 @@ "symbol": "[", "looks_like": "bra", "color": "white", - "covers": [ "torso" ], - "coverage": 30, "warmth": 5, "material_thickness": 0.1, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ], + "armor": [ { "coverage": 30, "covers": [ "torso" ] } ] }, { "id": "xlsports_bra", @@ -550,10 +514,9 @@ "symbol": "[", "looks_like": "tshirt", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 40, "material_thickness": 0.1, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ], + "armor": [ { "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "tights", @@ -569,11 +532,10 @@ "symbol": "[", "looks_like": "leggings", "color": "dark_gray", - "covers": [ "foot_l", "foot_r", "leg_r", "leg_l" ], - "coverage": 100, "warmth": 10, "material_thickness": 0.1, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 100, "covers": [ "foot_l", "foot_r", "leg_r", "leg_l" ] } ] }, { "id": "under_armor", @@ -588,11 +550,10 @@ "symbol": "[", "looks_like": "longshirt", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 95, "warmth": 20, "material_thickness": 0.05, - "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ] + "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ], + "armor": [ { "coverage": 95, "covers": [ "torso" ] } ] }, { "id": "under_armor_shorts", @@ -607,11 +568,10 @@ "symbol": "[", "looks_like": "shorts", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 45, "warmth": 20, "material_thickness": 0.1, - "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ] + "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ], + "armor": [ { "coverage": 45, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "undershirt", @@ -626,11 +586,10 @@ "symbol": "[", "looks_like": "tshirt", "color": "white", - "covers": [ "torso" ], - "coverage": 60, "warmth": 10, "material_thickness": 0.1, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 60, "covers": [ "torso" ] } ] }, { "id": "unitard", @@ -644,10 +603,9 @@ "material": [ "lycra" ], "symbol": "[", "color": "dark_gray", - "covers": [ "torso", "leg_l", "leg_r" ], - "coverage": 90, "warmth": 20, "material_thickness": 0.02, - "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ] + "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ], + "armor": [ { "coverage": 90, "covers": [ "torso", "leg_l", "leg_r" ] } ] } ] diff --git a/data/json/items/book/fabrication.json b/data/json/items/book/fabrication.json index 4aa97706782ea..687343aa97119 100644 --- a/data/json/items/book/fabrication.json +++ b/data/json/items/book/fabrication.json @@ -43,6 +43,33 @@ "intelligence": 8, "time": "30 m" }, + { + "id": "theater_props", + "type": "BOOK", + "looks_like": "glassblowing_book", + "name": { + "str": "The Prop Builder's Molding and Casting Handbook", + "str_pl": "copies of The Prop Builder's Molding and Casting Handbook" + }, + "description": "The first book to contain, in one comprehensive volume, every molding and casting procedure of use to the theater props builder of any skill level. The author demonstrates the techniques involved in over thirty materials from papier-mache to breakaway glass.", + "weight": "1620 g", + "volume": "1250 ml", + "price": 4500, + "price_postapoc": 250, + "bashing": 4, + "material": [ "paper" ], + "symbol": "?", + "color": "brown_yellow", + "skill": "fabrication", + "required_level": 2, + "max_level": 4, + "proficiencies": [ + { "proficiency": "prof_plasticworking", "time_factor": 0.3, "fail_factor": 0.4 }, + { "proficiency": "prof_carpentry_basic", "time_factor": 0.2, "fail_factor": 0.2 } + ], + "intelligence": 8, + "time": "30 m" + }, { "id": "jewelry_book", "type": "BOOK", diff --git a/data/json/items/chemicals_and_resources.json b/data/json/items/chemicals_and_resources.json index acacbd54957c4..921149ee74c7b 100644 --- a/data/json/items/chemicals_and_resources.json +++ b/data/json/items/chemicals_and_resources.json @@ -542,7 +542,7 @@ "count": 100 }, { - "type": "AMMO", + "type": "COMESTIBLE", "id": "chem_sulphuric_acid", "category": "chems", "price": 250, @@ -555,14 +555,13 @@ "volume": "250 ml", "weight": "460 g", "bashing": 1, - "ammo_type": "components", "phase": "liquid", "container": "bottle_glass", - "//freezing_point": 25, + "freezing_point": -36, "drop_action": { "type": "emit_actor", "emits": [ "emit_acid_drop" ], "scale_qty": true } }, { - "type": "AMMO", + "type": "COMESTIBLE", "id": "chem_muriatic_acid", "category": "chems", "price": 250, @@ -575,10 +574,9 @@ "volume": "250 ml", "weight": "460 g", "bashing": 1, - "ammo_type": "components", "phase": "liquid", "container": "bottle_glass", - "//freezing_point": 25, + "freezing_point": -50, "drop_action": { "type": "emit_actor", "emits": [ "emit_acid_drop" ], "scale_qty": true } }, { @@ -599,7 +597,7 @@ "container": "bottle_glass" }, { - "type": "AMMO", + "type": "COMESTIBLE", "id": "chem_nitric_acid", "category": "chems", "price": 300, @@ -612,10 +610,9 @@ "volume": "250 ml", "weight": "375 g", "bashing": 1, - "ammo_type": "components", "phase": "liquid", "container": "bottle_glass", - "//freezing_point": -44, + "freezing_point": -42, "drop_action": { "type": "emit_actor", "emits": [ "emit_acid_drop" ], "scale_qty": true } }, { @@ -1636,6 +1633,16 @@ "color": "light_gray", "fun": -50 }, + { + "id": "triffid_fungicide", + "type": "COMESTIBLE", + "copy-from": "venom_gland", + "name": { "str": "sac of triffid fungicide", "str_pl": "sacs of triffid fungicide" }, + "description": "This triffid sack is filled with what appears to be a triffid-produced antifungal agent. It will likely already work as an antifungal compound for more offensive applications, but requires further refining before it can be used as a medical drug.", + "material": [ "veggy" ], + "color": "light_blue", + "fun": -50 + }, { "id": "conc_venom", "type": "AMMO", diff --git a/data/json/items/classes/magazine.json b/data/json/items/classes/magazine.json index ffedaabc185e2..4a92539a052b6 100644 --- a/data/json/items/classes/magazine.json +++ b/data/json/items/classes/magazine.json @@ -10,7 +10,7 @@ "material": [ "steel" ], "symbol": "#", "color": "light_gray", - "armor_data": { "covers": [ "torso" ], "coverage": 5, "encumbrance": 10 }, + "armor_data": { "armor": [ { "encumbrance": 10, "coverage": 5, "covers": [ "torso" ] } ] }, "flags": [ "MAG_BELT", "MAG_DESTROY", "BELTED", "OVERSIZE", "WATER_FRIENDLY" ] } ] diff --git a/data/json/items/comestibles/brewing.json b/data/json/items/comestibles/brewing.json index add3d845d3d67..6d46deaaf0f29 100644 --- a/data/json/items/comestibles/brewing.json +++ b/data/json/items/comestibles/brewing.json @@ -18,7 +18,7 @@ "charges": 5, "phase": "liquid", "comestible_type": "DRINK", - "brewable": { "time": "15 hours", "results": [ "wine_mycus", "yeast" ] } + "brewable": { "time": "7 days", "results": [ "wine_mycus", "yeast" ] } }, { "type": "COMESTIBLE", @@ -39,7 +39,7 @@ "charges": 7, "phase": "liquid", "comestible_type": "DRINK", - "brewable": { "time": "12 hours", "results": [ "wash_whiskey", "yeast" ] } + "brewable": { "time": "7 days", "results": [ "wash_whiskey", "yeast" ] } }, { "type": "COMESTIBLE", @@ -86,7 +86,7 @@ "charges": 7, "phase": "liquid", "comestible_type": "DRINK", - "brewable": { "time": "24 hours", "results": [ "gin_mash" ] } + "brewable": { "time": "7 days", "results": [ "gin_mash" ] } }, { "type": "COMESTIBLE", @@ -133,7 +133,7 @@ "phase": "liquid", "comestible_type": "DRINK", "flags": [ "NUTRIENT_OVERRIDE" ], - "brewable": { "time": "6 hours", "results": [ "wash_vodka", "yeast" ] } + "brewable": { "time": "7 days", "results": [ "wash_vodka", "yeast" ] } }, { "type": "COMESTIBLE", @@ -180,7 +180,7 @@ "charges": 7, "phase": "liquid", "comestible_type": "DRINK", - "brewable": { "time": "12 hours", "results": [ "wash_rum", "yeast" ] } + "brewable": { "time": "7 days", "results": [ "wash_rum", "yeast" ] } }, { "type": "COMESTIBLE", @@ -228,7 +228,7 @@ "charges": 7, "phase": "liquid", "comestible_type": "DRINK", - "brewable": { "time": "12 hours", "results": [ "fruit_wine", "yeast" ] } + "brewable": { "time": "7 days", "results": [ "fruit_wine", "yeast" ] } }, { "type": "COMESTIBLE", @@ -251,7 +251,7 @@ "charges": 7, "phase": "liquid", "comestible_type": "DRINK", - "brewable": { "time": "5 days", "results": [ "mead", "yeast" ] } + "brewable": { "time": "14 days", "results": [ "mead", "yeast" ] } }, { "type": "COMESTIBLE", @@ -272,7 +272,7 @@ "phase": "liquid", "comestible_type": "DRINK", "flags": [ "NUTRIENT_OVERRIDE" ], - "brewable": { "time": "1 day 12 hours 40 minutes", "results": [ "dandelion_wine", "yeast" ] } + "brewable": { "time": "7 days", "results": [ "dandelion_wine", "yeast" ] } }, { "type": "COMESTIBLE", @@ -293,7 +293,7 @@ "phase": "liquid", "comestible_type": "DRINK", "flags": [ "NUTRIENT_OVERRIDE" ], - "brewable": { "time": "1 day 12 hours 40 minutes", "results": [ "burdock_wine", "yeast" ] } + "brewable": { "time": "7 days", "results": [ "burdock_wine", "yeast" ] } }, { "type": "COMESTIBLE", @@ -314,7 +314,7 @@ "phase": "liquid", "comestible_type": "DRINK", "flags": [ "NUTRIENT_OVERRIDE" ], - "brewable": { "time": "1 day 16 hours 50 minutes", "results": [ "pine_wine", "yeast" ] } + "brewable": { "time": "7 days", "results": [ "pine_wine", "yeast" ] } }, { "type": "COMESTIBLE", @@ -335,7 +335,7 @@ "price_postapoc": 10, "phase": "liquid", "comestible_type": "DRINK", - "brewable": { "time": "9 hours", "results": [ "hb_beer", "yeast" ] } + "brewable": { "time": "7 days", "results": [ "hb_beer", "yeast" ] } }, { "type": "COMESTIBLE", @@ -357,7 +357,7 @@ "charges": 7, "phase": "liquid", "comestible_type": "DRINK", - "brewable": { "time": "6 hours", "results": [ "wash_moonshine", "yeast" ] } + "brewable": { "time": "5 days", "results": [ "wash_moonshine", "yeast" ] } }, { "type": "COMESTIBLE", @@ -427,7 +427,7 @@ "phase": "liquid", "comestible_type": "DRINK", "flags": [ "NUTRIENT_OVERRIDE" ], - "brewable": { "time": "7 hours", "results": [ "vinegar" ] } + "brewable": { "time": "14 days", "results": [ "vinegar" ] } }, { "type": "COMESTIBLE", @@ -450,5 +450,103 @@ "comestible_type": "DRINK", "flags": [ "NUTRIENT_OVERRIDE" ], "brewable": { "time": "3 days", "results": [ "yeast" ] } + }, + { + "type": "COMESTIBLE", + "id": "malting_grain", + "name": { "str_sp": "malting grain" }, + "weight": "211 g", + "color": "brown", + "comestible_type": "FOOD", + "symbol": ",", + "quench": -10, + "healthy": 1, + "calories": 743, + "description": "Malting grain that can be used for brewing.", + "price": 20, + "price_postapoc": 250, + "material": [ "veggy" ], + "volume": "1 L", + "flags": [ "EDIBLE_FROZEN", "RAW" ], + "vitamins": [ [ "calcium", 6 ], [ "iron", 29 ] ], + "fun": -15, + "use_action": { + "target": "malted_grain", + "msg": "After soaking the grain and waiting, it has finished malting.", + "moves": 50, + "type": "delayed_transform", + "transform_age": 345600, + "not_ready_msg": "The grain has not malted yet." + } + }, + { + "type": "COMESTIBLE", + "id": "malted_grain", + "name": { "str_sp": "malted grain" }, + "weight": "211 g", + "color": "brown", + "spoils_in": "7 days", + "comestible_type": "FOOD", + "symbol": ",", + "quench": -10, + "healthy": 1, + "calories": 743, + "description": "Grainy cereal used for malting. A staple of brewing everywhere. It can also be ground into flour.", + "price": 20, + "price_postapoc": 250, + "material": [ "veggy" ], + "volume": "1 L", + "flags": [ "EDIBLE_FROZEN", "RAW" ], + "vitamins": [ [ "calcium", 6 ], [ "iron", 29 ] ], + "fun": -15 + }, + { + "type": "COMESTIBLE", + "id": "soaking_dandelion", + "name": { "str_sp": "soaking dandelion" }, + "weight": "308 g", + "color": "brown", + "comestible_type": "FOOD", + "symbol": ",", + "quench": -10, + "healthy": 1, + "calories": 26, + "description": "Malting grain that can be used for brewing.", + "price": 20, + "price_postapoc": 250, + "material": [ "veggy" ], + "volume": "250 ml", + "flags": [ "EDIBLE_FROZEN", "RAW" ], + "vitamins": [ [ "calcium", 6 ], [ "iron", 29 ] ], + "fun": -15, + "use_action": { + "target": "soaked_dandelion", + "msg": "After soaking the dandelions in boiling water, the juice can be used for making wine.", + "moves": 50, + "type": "delayed_transform", + "transform_age": 7200, + "not_ready_msg": "The dandelions need more time." + } + }, + { + "type": "COMESTIBLE", + "id": "soaked_dandelion", + "name": { "str_sp": "soaked dandelion" }, + "weight": "308 g", + "color": "yellow", + "spoils_in": "3 days", + "comestible_type": "FOOD", + "symbol": "~", + "quench": 40, + "healthy": 1, + "calories": 26, + "description": "Dandelions soaked in hot water, used for making dandelion wine.", + "price": 20, + "price_postapoc": 250, + "material": [ "veggy" ], + "volume": "250 ml", + "flags": [ "EDIBLE_FROZEN", "RAW" ], + "vitamins": [ [ "vitA", 33 ], [ "vitC", 23 ], [ "calcium", 11 ], [ "iron", 10 ] ], + "fun": -4 } ] diff --git a/data/json/items/comestibles/carnivore.json b/data/json/items/comestibles/carnivore.json index 2338ef2278536..8bcc98d3a0cb6 100644 --- a/data/json/items/comestibles/carnivore.json +++ b/data/json/items/comestibles/carnivore.json @@ -119,7 +119,7 @@ "healthy": -1, "fun": -10, "cooks_like": "meat_cooked", - "vitamins": [ [ "vitC", 13 ], [ "calcium", 2 ], [ "iron", 53 ], [ "vitB", 778 ] ], + "vitamins": [ [ "calcium", 2 ], [ "iron", 12 ], [ "vitB", 80 ] ], "flags": [ "SMOKABLE", "RAW", "PREDATOR_FUN" ], "smoking_result": "meat_smoked" }, @@ -170,7 +170,7 @@ "price_postapoc": 300, "spoils_in": "14 days", "healthy": -5, - "vitamins": [ [ "vitC", 0 ], [ "calcium", 0 ], [ "iron", 0 ] ], + "vitamins": [ [ "vitA", 4 ], [ "vitC", 0 ], [ "calcium", 3 ], [ "iron", 22 ], [ "vitB", 136 ] ], "flags": [ "SMOKABLE", "RAW" ], "smoking_result": "bacon_uncut" }, @@ -188,7 +188,7 @@ "spoils_in": "24 days", "healthy": -1, "fun": 5, - "vitamins": [ [ "vitC", 1 ], [ "calcium", 1 ], [ "iron", 3 ] ], + "vitamins": [ [ "vitA", 4 ], [ "vitC", 0 ], [ "calcium", 3 ], [ "iron", 22 ], [ "vitB", 136 ] ], "flags": [ "EATEN_HOT", "SMOKED" ] }, { @@ -226,7 +226,7 @@ "cooks_like": "meat_scrap_cooked", "proportional": { "weight": 0.1, "volume": 0.1, "price": 0.1, "calories": 0.1 }, "delete": { "flags": [ "SMOKABLE" ] }, - "vitamins": [ [ "vitA", 0 ], [ "vitC", 0 ], [ "calcium", 0 ], [ "iron", 0 ], [ "vitB", 0 ] ] + "vitamins": [ [ "calcium", 0 ], [ "iron", 1 ], [ "vitB", 8 ] ] }, { "id": "mutant_meat", @@ -238,7 +238,7 @@ "looks_like": "meat", "cooks_like": "mutant_meat_cooked", "proportional": { "price": 0.2, "calories": 0.5 }, - "vitamins": [ [ "vitC", 6 ], [ "calcium", 1 ], [ "iron", 26 ], [ "vitB", 389 ], [ "mutant_toxin", 25 ] ], + "vitamins": [ [ "vitC", 2 ], [ "calcium", 1 ], [ "iron", 6 ], [ "vitB", 40 ], [ "mutant_toxin", 25 ] ], "flags": [ "SMOKABLE", "BAD_TASTE", "RAW", "PREDATOR_FUN" ] }, { @@ -340,7 +340,7 @@ "price_postapoc": 100, "parasites": 0, "calories": 402, - "vitamins": [ [ "vitC", 16 ], [ "calcium", 2 ], [ "iron", 69 ], [ "vitB", 778 ] ], + "vitamins": [ [ "calcium", 2 ], [ "iron", 12 ], [ "vitB", 80 ] ], "flags": [ "EATEN_HOT", "NUTRIENT_OVERRIDE" ] }, { @@ -619,7 +619,7 @@ "price_postapoc": 25, "quench": -4, "calories": 92, - "vitamins": [ [ "vitA", 75 ], [ "vitC", 0 ], [ "calcium", 0 ], [ "iron", 8 ], [ "vitB", 336 ] ] + "vitamins": [ [ "vitA", 635 ], [ "vitC", 0 ], [ "calcium", 1 ], [ "iron", 28 ], [ "vitB", 1632 ] ] }, { "id": "liver_cooked", @@ -627,7 +627,7 @@ "copy-from": "liver", "looks_like": "meat_cooked", "name": { "str": "cooked liver" }, - "description": "Chock-full of B-Vitamins! Cooked liver isn't all that bad, depending on how you feel about the texture, but this is probably the least fancy way to do it.", + "description": "Chock-full of A- and B-Vitamins! Cooked liver isn't all that bad, depending on how you feel about the texture, but this is probably the least fancy way to do it.", "parasites": 0, "price_postapoc": 50, "fun": -2, @@ -648,7 +648,7 @@ "fun": -20, "parasites": 15, "calories": 78, - "vitamins": [ [ "vitA", 0 ], [ "vitC", 2 ], [ "calcium", 1 ], [ "iron", 8 ], [ "vitB", 54 ] ] + "vitamins": [ [ "vitA", 0 ], [ "vitC", 3 ], [ "calcium", 0 ], [ "iron", 10 ], [ "vitB", 233 ] ] }, { "id": "brain_cooked", @@ -675,7 +675,7 @@ "price_postapoc": 25, "quench": -5, "calories": 54, - "vitamins": [ [ "vitA", 6 ], [ "vitC", 2 ], [ "calcium", 0 ], [ "iron", 8 ], [ "vitB", 155 ] ] + "vitamins": [ [ "vitA", 0 ], [ "vitC", 0 ], [ "calcium", 1 ], [ "iron", 25 ], [ "vitB", 576 ] ] }, { "id": "kidney_cooked", @@ -703,7 +703,7 @@ "price_postapoc": 25, "quench": 0, "calories": 133, - "vitamins": [ [ "vitA", 0 ], [ "vitC", 32 ], [ "calcium", 0 ], [ "iron", 6 ], [ "vitB", 20 ] ] + "vitamins": [ [ "vitA", 0 ], [ "vitC", 11 ], [ "calcium", 0 ], [ "iron", 5 ], [ "vitB", 66 ] ] }, { "id": "sweetbread_cooked", @@ -903,6 +903,7 @@ "description": "A rotten and brittle bone from some unnatural creature or other. Could be used to make some stuff, like charcoal or glue. You could eat it, but it will poison you.", "price": 0, "price_postapoc": 5, + "milling": { "into": "meal_bone_tainted", "conversion_rate": 4 }, "//": "Not for use in edible recipes, and should require ~200% as much as normal for applicable inedible recipes except for charcoal.", "material": [ "bone" ], "volume": "250 ml", diff --git a/data/json/items/comestibles/drink.json b/data/json/items/comestibles/drink.json index 8b18bd6444b2c..e9ae43cacbe22 100644 --- a/data/json/items/comestibles/drink.json +++ b/data/json/items/comestibles/drink.json @@ -158,7 +158,11 @@ "name": { "str_sp": "chamomile tea" }, "copy-from": "tea", "color": "green", - "use_action": [ "SLEEP" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Can be used to treat insomnia.", + "effect_on_conditions": [ "EOC_MINOR_SLEEP" ] + }, "stim": 0, "spoils_in": "10 days", "quench": 34, diff --git a/data/json/items/comestibles/drink_other.json b/data/json/items/comestibles/drink_other.json index e5cb02f33e9f8..a23d6bd7a82d4 100644 --- a/data/json/items/comestibles/drink_other.json +++ b/data/json/items/comestibles/drink_other.json @@ -168,6 +168,7 @@ "comestible_type": "DRINK", "symbol": "~", "quench": -1, + "healthy": -2, "calories": 127, "description": "Thin yellow vegetable oil used for cooking.", "price": 40, diff --git a/data/json/items/comestibles/meat_dishes.json b/data/json/items/comestibles/meat_dishes.json index bca85aeaeb2a4..f9f814b25fb9d 100644 --- a/data/json/items/comestibles/meat_dishes.json +++ b/data/json/items/comestibles/meat_dishes.json @@ -24,7 +24,7 @@ "volume": "250 ml", "flags": [ "SMOKABLE" ], "smoking_result": "sausage", - "vitamins": [ [ "vitA", 2 ], [ "calcium", 2 ], [ "iron", 6 ], [ "vitB", 36 ] ], + "vitamins": [ [ "vitA", 2 ], [ "calcium", 2 ], [ "iron", 6 ], [ "vitB", 37 ] ], "fun": -10 }, { @@ -126,7 +126,7 @@ "material": [ "flesh" ], "volume": "500 ml", "fun": 7, - "vitamins": [ [ "vitC", 16 ], [ "calcium", 2 ], [ "iron", 69 ], [ "vitB", 778 ] ] + "vitamins": [ [ "vitC", 4 ], [ "calcium", 6 ], [ "iron", 69 ], [ "vitB", 323 ] ] }, { "type": "COMESTIBLE", @@ -149,7 +149,7 @@ "material": [ "flesh" ], "charges": 2, "flags": [ "EATEN_HOT", "SMOKED" ], - "vitamins": [ [ "calcium", 0 ], [ "iron", 2 ] ], + "vitamins": [ [ "vitA", 1 ], [ "vitC", 0 ], [ "calcium", 0 ], [ "iron", 6 ], [ "vitB", 39 ] ], "fun": 5 }, { @@ -194,6 +194,7 @@ "material": [ "flesh" ], "charges": 4, "flags": [ "EATEN_HOT" ], + "vitamins": [ [ "vitA", 1 ], [ "vitC", 0 ], [ "calcium", 0 ], [ "iron", 3 ], [ "vitB", 19 ] ], "fun": 4 }, { @@ -449,7 +450,7 @@ "material": [ "flesh" ], "volume": "750 ml", "charges": 10, - "vitamins": [ [ "iron", 15 ], [ "vitB", 8 ] ] + "vitamins": [ [ "vitA", 0 ], [ "vitC", 0 ], [ "calcium", 6 ], [ "iron", 5 ], [ "vitB", 11 ] ] }, { "type": "COMESTIBLE", @@ -495,7 +496,7 @@ "charges": 6, "flags": [ "EATEN_HOT" ], "fun": -8, - "vitamins": [ [ "iron", 3 ] ] + "vitamins": [ [ "iron", 3 ], [ "vitB", 11 ] ] }, { "type": "COMESTIBLE", @@ -579,7 +580,7 @@ "price_postapoc": 350, "material": [ "flesh", "veggy" ], "volume": "120 ml", - "vitamins": [ [ "vitC", 3 ], [ "calcium", 24 ], [ "iron", 14 ] ], + "vitamins": [ [ "vitA", 14 ], [ "vitC", 3 ], [ "calcium", 5 ], [ "iron", 21 ] ], "fun": 3 }, { @@ -627,7 +628,7 @@ "volume": "500 ml", "flags": [ "EATEN_HOT" ], "charges": 2, - "vitamins": [ [ "vitA", 6 ], [ "calcium", 16 ], [ "iron", 9 ] ] + "vitamins": [ [ "vitA", 6 ], [ "calcium", 5 ], [ "iron", 27 ], [ "vitB", 64 ] ] }, { "type": "COMESTIBLE", @@ -662,7 +663,7 @@ "flags": [ "EATEN_HOT" ], "fun": 5, "charges": 2, - "vitamins": [ [ "vitA", 14 ], [ "vitC", 7 ], [ "calcium", 6 ], [ "iron", 27 ] ] + "vitamins": [ [ "vitA", 5 ], [ "vitC", 7 ], [ "calcium", 7 ], [ "iron", 27 ], [ "vitB", 66 ] ] }, { "type": "COMESTIBLE", @@ -684,7 +685,7 @@ "charges": 2, "flags": [ "EATEN_HOT" ], "fun": 5, - "vitamins": [ [ "vitC", 6 ], [ "calcium", 14 ], [ "iron", 25 ] ] + "vitamins": [ [ "vitC", 0 ], [ "calcium", 14 ], [ "iron", 32 ] ] }, { "type": "COMESTIBLE", @@ -928,7 +929,7 @@ "charges": 4, "flags": [ "EATEN_HOT" ], "fun": 10, - "vitamins": [ [ "vitA", 3 ], [ "vitC", 10 ], [ "calcium", 28 ], [ "iron", 28 ] ] + "vitamins": [ [ "vitA", 19 ], [ "vitC", 0 ], [ "calcium", 44 ], [ "iron", 36 ], [ "vitB", 63 ] ] }, { "type": "COMESTIBLE", @@ -943,7 +944,7 @@ "price_postapoc": 1500, "material": [ "wheat", "flesh", "veggy", "milk" ], "fun": 11, - "vitamins": [ [ "vitA", 12 ], [ "vitC", 20 ], [ "calcium", 32 ], [ "iron", 28 ] ] + "vitamins": [ [ "vitA", 12 ], [ "vitC", 20 ], [ "calcium", 32 ], [ "iron", 28 ], [ "vitB", 53 ] ] }, { "type": "COMESTIBLE", @@ -969,7 +970,7 @@ "charges": 3, "flags": [ "EATEN_HOT", "FREEZERBURN" ], "fun": 4, - "vitamins": [ [ "vitA", 9 ], [ "vitC", 8 ], [ "calcium", 4 ], [ "iron", 39 ], [ "vitB", 410 ] ] + "vitamins": [ [ "vitA", 19 ], [ "vitC", 2 ], [ "calcium", 4 ], [ "iron", 39 ], [ "vitB", 97 ] ] }, { "type": "COMESTIBLE", @@ -1037,7 +1038,7 @@ "charges": 8, "flags": [ "EATEN_HOT", "FREEZERBURN" ], "fun": 4, - "vitamins": [ [ "vitA", 3 ], [ "vitC", 3 ], [ "calcium", 13 ], [ "iron", 4 ] ] + "vitamins": [ [ "vitA", 8 ], [ "vitC", 5 ], [ "calcium", 3 ], [ "iron", 9 ], [ "vitB", 17 ] ] }, { "type": "COMESTIBLE", @@ -1065,7 +1066,7 @@ "charges": 8, "flags": [ "EATEN_HOT", "FREEZERBURN" ], "fun": 15, - "vitamins": [ [ "vitA", 5 ], [ "vitC", 19 ], [ "calcium", 22 ], [ "iron", 10 ] ] + "vitamins": [ [ "vitA", 12 ], [ "vitC", 6 ], [ "calcium", 22 ], [ "iron", 17 ], [ "vitB", 79 ] ] }, { "type": "COMESTIBLE", @@ -1104,7 +1105,7 @@ "volume": "300 ml", "flags": [ "EATEN_HOT", "ALLERGEN_MILK" ], "fun": 5, - "vitamins": [ [ "calcium", 9 ], [ "iron", 14 ] ] + "vitamins": [ [ "vitA", 17 ], [ "vitC", 1 ], [ "calcium", 57 ], [ "iron", 65 ], [ "vitB", 213 ] ] }, { "type": "COMESTIBLE", @@ -1129,7 +1130,7 @@ "volume": "300 ml", "flags": [ "EATEN_HOT" ], "fun": 4, - "vitamins": [ [ "vitC", 2 ], [ "calcium", 8 ], [ "iron", 16 ] ] + "vitamins": [ [ "vitA", 17 ], [ "vitC", 1 ], [ "calcium", 57 ], [ "iron", 65 ], [ "vitB", 213 ] ] }, { "type": "COMESTIBLE", @@ -1183,7 +1184,7 @@ "material": [ "flesh" ], "volume": "250 ml", "fun": 8, - "vitamins": [ [ "calcium", 13 ], [ "iron", 9 ], [ "vitB", 36 ] ] + "vitamins": [ [ "vitA", 6 ], [ "vitC", 1 ], [ "calcium", 8 ], [ "iron", 15 ], [ "vitB", 17 ] ] }, { "type": "COMESTIBLE", @@ -1268,7 +1269,7 @@ "volume": "250 ml", "flags": [ "EATEN_HOT" ], "fun": 2, - "vitamins": [ [ "vitA", 144 ], [ "vitC", 21 ], [ "calcium", 1 ], [ "iron", 29 ] ] + "vitamins": [ [ "vitA", 144 ], [ "vitC", 21 ], [ "calcium", 1 ], [ "iron", 29 ], [ "vitB", 87 ] ] }, { "type": "COMESTIBLE", @@ -1386,7 +1387,7 @@ "charges": 3, "flags": [ "EATEN_HOT" ], "fun": 7, - "vitamins": [ [ "vitC", 3 ], [ "calcium", 19 ], [ "iron", 12 ] ] + "vitamins": [ [ "vitC", 3 ], [ "calcium", 19 ], [ "iron", 12 ], [ "vitB", 17 ] ] }, { "type": "COMESTIBLE", diff --git a/data/json/items/comestibles/med.json b/data/json/items/comestibles/med.json index e696f4dce89ba..3611f2c72db82 100644 --- a/data/json/items/comestibles/med.json +++ b/data/json/items/comestibles/med.json @@ -1336,7 +1336,11 @@ "flags": [ "IRREPLACEABLE_CONSUMABLE" ], "addiction_potential": 40, "addiction_type": "sleeping pill", - "use_action": [ "SLEEP" ] + "use_action": { + "type": "effect_on_conditions", + "description": "Can be used to treat insomnia.", + "effect_on_conditions": [ "EOC_SLEEP" ] + } }, { "id": "poppy_pain", @@ -1379,7 +1383,11 @@ "color": "magenta", "healthy": -2, "addiction_type": "opiate", - "use_action": [ "SLEEP" ] + "use_action": { + "type": "effect_on_conditions", + "description": "Can be used to treat insomnia.", + "effect_on_conditions": [ "EOC_SLEEP" ] + } }, { "id": "poppysyrup", @@ -1406,7 +1414,7 @@ "id": "prophylactic_antivenom", "type": "COMESTIBLE", "comestible_type": "MED", - "name": { "str_sp": "prophylactic antivenom pill" }, + "name": { "str_sp": "injectable prophylactic antivenom" }, "description": "An experimental, cutting-edge antivenom in the form of some small amber vials, designed to be injected a few hours before venom exposure. It was developed in top secret by the military in response to increasing biological/chemical warfare.", "weight": "40 g", "volume": "250 ml", diff --git a/data/json/items/comestibles/mre.json b/data/json/items/comestibles/mre.json index 26a0f465316c0..5de233670de77 100644 --- a/data/json/items/comestibles/mre.json +++ b/data/json/items/comestibles/mre.json @@ -1,36 +1,4 @@ [ - { - "abstract": "mre_box", - "type": "GENERIC", - "symbol": ")", - "color": "brown", - "name": { "str": "MRE" }, - "category": "food", - "description": "A generic MRE box, you shouldn't see this.", - "price": 1500, - "price_postapoc": 1500, - "weight": "725 g", - "volume": "750 ml", - "material": [ "plastic" ], - "looks_like": "mre_beef_box", - "use_action": [ "DISASSEMBLE" ] - }, - { - "abstract": "mre_smallbox", - "type": "GENERIC", - "symbol": ")", - "color": "brown", - "name": { "str": "MRE small box", "str_pl": "MRE small boxes" }, - "category": "food", - "description": "A generic small MRE box, you shouldn't see this", - "price": 500, - "price_postapoc": 100, - "weight": "300 g", - "volume": "250 ml", - "material": [ "plastic" ], - "looks_like": "mre_beef_box", - "use_action": [ "DISASSEMBLE" ] - }, { "abstract": "mre_entree", "type": "COMESTIBLE", @@ -51,218 +19,6 @@ "looks_like": "mre_beef", "fun": -1 }, - { - "id": "mre_accessory", - "type": "GENERIC", - "copy-from": "mre_smallbox", - "name": { "str": "MRE - Accessory Pack", "str_pl": "MREs - Accessory Packs" }, - "description": "An MRE accessory pack containing a variety of utensils and drinks. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_dessert", - "type": "GENERIC", - "copy-from": "mre_smallbox", - "name": { "str": "MRE - Dessert Pack", "str_pl": "MREs - Dessert Packs" }, - "description": "A sealed plastic bag containing an array of desserts. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_chilibeans_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Chili & Beans", "str_pl": "MREs - Chili & Beans" }, - "description": "A 'Meal Ready to Eat' with a chili & beans entree and everything a vegetarian soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_bbqbeef_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - BBQ Beef", "str_pl": "MREs - BBQ Beef" }, - "description": "A 'Meal Ready to Eat' with a BBQ beef entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_chickennoodle_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Chicken & Noodles", "str_pl": "MREs - Chicken & Noodles" }, - "description": "A 'Meal Ready to Eat' with a chicken & noodles entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_spaghetti_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Spaghetti", "str_pl": "MREs - Spaghetti" }, - "description": "A 'Meal Ready to Eat' with a spaghetti entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", - "looks_like": "mre_veggy_box" - }, - { - "id": "mre_chicken_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Chicken Chunks", "str_pl": "MREs - Chicken Chunks" }, - "description": "A 'Meal Ready to Eat' with a chicken chunk entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_beeftaco_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Beef Taco", "str_pl": "MREs - Beef Taco" }, - "description": "A 'Meal Ready to Eat' with a beef taco entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_beef_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Beef Brisket", "str_pl": "MREs - Beef Brisket" }, - "description": "A 'Meal Ready to Eat' with a beef brisket entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_meatball_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Meatballs & Marinara", "str_pl": "MREs - Meatballs & Marinara" }, - "description": "A 'Meal Ready to Eat' with a meatball entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_beefstew_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Beef Stew", "str_pl": "MREs - Beef Stew" }, - "description": "A 'Meal Ready to Eat' with a beef stew entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_chilimac_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Chili & Macaroni", "str_pl": "MREs - Chili & Macaroni" }, - "description": "A 'Meal Ready to Eat' with a chili & macaroni entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", - "looks_like": "mre_veggy_box" - }, - { - "id": "mre_veggy_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Vegetarian Taco", "str_pl": "MREs - Vegetarian Taco" }, - "description": "A 'Meal Ready to Eat' with a vegetarian taco entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_macaronimarinara_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Macaroni Marinara", "str_pl": "MREs - Macaroni Marinara" }, - "description": "A 'Meal Ready to Eat' with a macaroni marinara entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", - "looks_like": "mre_veggy_box" - }, - { - "id": "mre_sfettuccine_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Spinach Fettuccine", "str_pl": "MREs - Spinach Fettuccine" }, - "description": "A 'Meal Ready to Eat' with a creamy spinach fettuccine entree and everything a vegetarian soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", - "looks_like": "mre_veggy_box" - }, - { - "id": "mre_ratatouille_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Ratatouille", "str_pl": "MREs - Ratatouille" }, - "description": "A 'Meal Ready to Eat' with a ratatouille entree and everything a vegetarian soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", - "looks_like": "mre_veggy_box" - }, - { - "id": "mre_cheesetort_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Cheese Tortellini", "str_pl": "MREs - Cheese Tortellini" }, - "description": "A 'Meal Ready to Eat' with a cheese tortellini entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", - "looks_like": "mre_veggy_box" - }, - { - "id": "mre_mushroomfettuccine_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Mushroom Fettuccine", "str_pl": "MREs - Mushroom Fettuccine" }, - "description": "A 'Meal Ready to Eat' with a mushroom fettuccine entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", - "looks_like": "mre_veggy_box" - }, - { - "id": "mre_mexicanchickenstew_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Mexican Chicken Stew", "str_pl": "MREs - Mexican Chicken Stew" }, - "description": "A 'Meal Ready to Eat' with a Mexican chicken stew entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", - "looks_like": "mre_beef_box" - }, - { - "id": "mre_chickenburritobowl_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Chicken Burrito Bowl", "str_pl": "MREs - Chicken Burrito Bowl" }, - "description": "A 'Meal Ready to Eat' with a chicken burrito bowl entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_maplesausage_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Maple Sausage", "str_pl": "MREs - Maple Sausage" }, - "description": "A 'Meal Ready to Eat' with a maple sausage entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_ravioli_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Ravioli", "str_pl": "MREs - Ravioli" }, - "description": "A 'Meal Ready to Eat' with a ravioli entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_pepperjackbeef_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Pepper Jack Beef", "str_pl": "MREs - Pepper Jack Beef" }, - "description": "A 'Meal Ready to Eat' with a pepper jack beef entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_hashbrownbacon_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Hash Browns & Bacon", "str_pl": "MREs - Hash Browns & Bacon" }, - "description": "A 'Meal Ready to Eat' with a hash browns & bacon entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_lemontuna_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Lemon Pepper Tuna", "str_pl": "MREs - Lemon Pepper Tuna" }, - "description": "A 'Meal Ready to Eat' with a lemon pepper tuna entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_asianbeef_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Asian Beef & Vegetables", "str_pl": "MREs - Asian Beef & Vegetables" }, - "description": "A 'Meal Ready to Eat' with an asian beef & vegetables entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_chickenpesto_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Chicken Pesto & Pasta", "str_pl": "MREs - Chicken Pesto & Pasta" }, - "description": "A 'Meal Ready to Eat' with a chicken pesto entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_southwestbeef_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Southwest Beef & Beans", "str_pl": "MREs - Southwest Beef & Beans" }, - "description": "A 'Meal Ready to Eat' with a southwest beef & beans entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." - }, - { - "id": "mre_hotdog_box", - "type": "GENERIC", - "copy-from": "mre_box", - "name": { "str": "MRE - Frankfurters & Beans", "str_pl": "MREs - Frankfurters & Beans" }, - "description": "A vintage MRE, still perfectly preserved and edible. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", - "price": 1000 - }, { "type": "COMESTIBLE", "id": "mre_chilibeans", diff --git a/data/json/items/comestibles/raw_veggy.json b/data/json/items/comestibles/raw_veggy.json index 4a9eb15fbc77d..b9bf3feb0233c 100644 --- a/data/json/items/comestibles/raw_veggy.json +++ b/data/json/items/comestibles/raw_veggy.json @@ -260,7 +260,7 @@ "description": "An empty corn cob. It may seem useless, but it can be used to make stock, a delicious jelly, or as fuel.", "price": 1, "price_postapoc": 1, - "material": [ "veggy" ], + "material": [ "veggy", "wood" ], "volume": "465 ml", "fun": -8, "flags": [ "RAW" ] diff --git a/data/json/items/comestibles/wheat.json b/data/json/items/comestibles/wheat.json index 5e3af87f6e18a..7a0bf16b30eae 100644 --- a/data/json/items/comestibles/wheat.json +++ b/data/json/items/comestibles/wheat.json @@ -138,6 +138,7 @@ "price_postapoc": 100, "material": [ "wheat", "powder" ], "volume": "250 ml", + "//": "240 ml is equivalent to 1 cup of flour. 10 charges is roughly equivalent to a cup of flour for American recipes.", "flags": [ "EDIBLE_FROZEN", "RAW" ], "charges": 10, "vitamins": [ [ "iron", 3 ] ], diff --git a/data/json/items/containers.json b/data/json/items/containers.json index 6e7b00783a66d..4b74d6f7ee86f 100644 --- a/data/json/items/containers.json +++ b/data/json/items/containers.json @@ -25,7 +25,7 @@ "max_contains_weight": "5 kg" } ], - "armor_data": { "covers": [ "torso" ], "coverage": 10, "encumbrance": 4, "material_thickness": 2 }, + "armor_data": { "material_thickness": 2, "armor": [ { "encumbrance": 4, "coverage": 10, "covers": [ "torso" ] } ] }, "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ] }, { @@ -302,7 +302,7 @@ "type": "GENERIC", "category": "container", "name": { "str": "plastic bottle" }, - "description": "A watertight plastic bottle, holds 500 ml of liquid. Some may be factory sealed to preserve content from rot until opened.", + "description": "A watertight plastic bottle, holds 500 ml of liquid. Some may be factory-sealed to increase shelf life.", "weight": "13 g", "volume": "502 ml", "pocket_data": [ @@ -581,7 +581,7 @@ "max_contains_weight": "20 kg" } ], - "armor_data": { "covers": [ "torso" ], "coverage": 15, "material_thickness": 1 }, + "armor_data": { "material_thickness": 1, "armor": [ { "coverage": 15, "covers": [ "torso" ] } ] }, "flags": [ "BELTED" ] }, { @@ -762,7 +762,11 @@ "max_contains_weight": "3 kg" } ], - "armor_data": { "covers": [ "leg_l", "leg_r" ], "sided": true, "coverage": 5, "encumbrance": 2, "material_thickness": 2 }, + "armor_data": { + "sided": true, + "material_thickness": 2, + "armor": [ { "encumbrance": 2, "coverage": 5, "covers": [ "leg_l", "leg_r" ] } ] + }, "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ] }, { @@ -1061,7 +1065,7 @@ "max_contains_weight": "1 kg" } ], - "armor_data": { "covers": [ "leg_l", "leg_r" ], "sided": true, "coverage": 2, "material_thickness": 1 }, + "armor_data": { "sided": true, "material_thickness": 1, "armor": [ { "coverage": 2, "covers": [ "leg_l", "leg_r" ] } ] }, "qualities": [ [ "BOIL", 1 ] ], "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ] }, @@ -1205,7 +1209,7 @@ "category": "container", "name": { "str": "gallon jug" }, "looks_like": "bottle_plastic", - "description": "A standard plastic jug used for milk and household cleaning chemicals. Some may be factory sealed to preserve content from rot until opened.", + "description": "A standard plastic jug used for milk and household cleaning chemicals. Some may be factory-sealed to increase shelf life.", "weight": "190 g", "volume": "3752 ml", "price": 0, @@ -1386,7 +1390,7 @@ "max_contains_weight": "3 kg" } ], - "armor_data": { "covers": [ "torso" ], "coverage": 5, "encumbrance": 5, "material_thickness": 2 }, + "armor_data": { "material_thickness": 2, "armor": [ { "encumbrance": 5, "coverage": 5, "covers": [ "torso" ] } ] }, "flags": [ "WAIST", "WATER_FRIENDLY" ] }, { @@ -1439,7 +1443,7 @@ "max_contains_weight": "3 kg" } ], - "armor_data": { "covers": [ "leg_l", "leg_r" ], "sided": true, "coverage": 5, "material_thickness": 2 }, + "armor_data": { "sided": true, "material_thickness": 2, "armor": [ { "coverage": 5, "covers": [ "leg_l", "leg_r" ] } ] }, "flags": [ "WAIST", "WATER_FRIENDLY" ] }, { @@ -1467,7 +1471,7 @@ "max_contains_weight": "6 kg" } ], - "armor_data": { "covers": [ "torso" ], "coverage": 10, "material_thickness": 2 }, + "armor_data": { "material_thickness": 2, "armor": [ { "coverage": 10, "covers": [ "torso" ] } ] }, "flags": [ "WAIST", "WATER_FRIENDLY" ] }, { @@ -1495,7 +1499,7 @@ "max_contains_weight": "10 kg" } ], - "armor_data": { "covers": [ "torso" ], "coverage": 15, "material_thickness": 2 }, + "armor_data": { "material_thickness": 2, "armor": [ { "coverage": 15, "covers": [ "torso" ] } ] }, "flags": [ "BELTED", "WATER_FRIENDLY" ] }, { @@ -1783,6 +1787,90 @@ "symbol": ")", "color": "red" }, + { + "id": "mre_bag_small", + "type": "GENERIC", + "category": "container", + "name": { "str": "small MRE bag" }, + "looks_like": "mre_beef_box", + "description": "A small, sturdy, plastic and aluminum container of multi-layered construction, with detailed nutritional information about its contents.", + "weight": "70 g", + "volume": "100 ml", + "price": 0, + "price_postapoc": 0, + "to_hit": -1, + "pocket_data": [ + { + "pocket_type": "CONTAINER", + "max_contains_volume": "250 ml", + "max_contains_weight": "1500 g", + "airtight": true, + "moves": 200, + "sealed_data": { "spoil_multiplier": 0.0 }, + "watertight": true + } + ], + "material": [ "plastic", "aluminum" ], + "symbol": ")", + "color": "light_gray", + "flags": [ "TRADER_AVOID" ] + }, + { + "id": "mre_bag", + "type": "GENERIC", + "category": "container", + "name": { "str": "MRE bag" }, + "looks_like": "mre_beef_box", + "description": "A sturdy plastic and aluminum container of multi-layered construction, with detailed nutritional information about its contents.", + "weight": "180 g", + "volume": "250 ml", + "price": 0, + "price_postapoc": 0, + "to_hit": -1, + "pocket_data": [ + { + "pocket_type": "CONTAINER", + "max_contains_volume": "510 ml", + "max_contains_weight": "3 kg", + "airtight": true, + "moves": 200, + "sealed_data": { "spoil_multiplier": 0.0 }, + "watertight": true + } + ], + "material": [ "plastic", "aluminum" ], + "symbol": ")", + "color": "light_gray", + "flags": [ "TRADER_AVOID" ] + }, + { + "id": "mre_package", + "type": "GENERIC", + "category": "container", + "name": { "str": "MRE package" }, + "looks_like": "mre_beef_box", + "description": "The Meal, Ready-to-Eat - also known as the MRE - is an individual field ration. It is in a lightweight yet sturdy multi-layered plastic and aluminum foil container - essentially a flexible can.", + "weight": "320 g", + "volume": "450 ml", + "price": 0, + "price_postapoc": 0, + "to_hit": -1, + "pocket_data": [ + { + "pocket_type": "CONTAINER", + "max_contains_volume": "2831 ml", + "max_contains_weight": "4 kg", + "airtight": true, + "moves": 200, + "sealed_data": { "spoil_multiplier": 0.0 }, + "watertight": true + } + ], + "material": [ "plastic", "aluminum" ], + "symbol": ")", + "color": "light_gray", + "flags": [ "TRADER_AVOID" ] + }, { "id": "beverage_bag", "type": "GENERIC", diff --git a/data/json/items/fluff.json b/data/json/items/fluff.json index 17370a9a3d6db..c89ae049fd3d4 100644 --- a/data/json/items/fluff.json +++ b/data/json/items/fluff.json @@ -295,11 +295,10 @@ "symbol": "?", "looks_like": "briefcase", "color": "light_gray", - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], "sided": true, - "coverage": 10, "material_thickness": 2, - "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "WATER_FRIENDLY" ] + "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "WATER_FRIENDLY" ], + "armor": [ { "coverage": 10, "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ] } ] }, { "type": "GENERIC", diff --git a/data/json/items/generic.json b/data/json/items/generic.json index ca8d875d3e371..cd71b557f1f53 100644 --- a/data/json/items/generic.json +++ b/data/json/items/generic.json @@ -810,6 +810,7 @@ "weight": "10 g", "volume": "25 ml", "to_hit": -5, + "milling": { "into": "meal_bone_tainted", "conversion_rate": 0.16 }, "qualities": [ [ "COOK", 1 ] ] }, { @@ -3390,9 +3391,6 @@ "volume": "500 ml", "bashing": 1, "to_hit": -1, - "covers": [ "torso" ], - "encumbrance": 2, - "coverage": 10, "material_thickness": 2, "pocket_data": [ { @@ -3413,7 +3411,57 @@ "robofac_test_data" ] } - ] + ], + "armor": [ { "encumbrance": 2, "coverage": 10, "covers": [ "torso" ] } ] + }, + { + "id": "lanyard", + "type": "TOOL_ARMOR", + "category": "clothing", + "symbol": "[", + "color": "white", + "name": { "str": "lanyard" }, + "description": "A flat clear plastic sleeve for identification documents, laminated cards, and other small items. It has a neck strap attached.", + "price": 10, + "price_postapoc": 1, + "material": [ "plastic" ], + "flags": [ "OVERSIZE", "BELTED", "ALLOWS_NATURAL_ATTACKS", "TARDIS" ], + "weight": "250 g", + "volume": "250 ml", + "longest_side": "5 cm", + "bashing": 1, + "to_hit": -1, + "material_thickness": 1, + "pocket_data": [ + { + "pocket_type": "CONTAINER", + "rigid": false, + "max_contains_weight": "60 g", + "max_contains_volume": "150 ml", + "moves": 100, + "item_restriction": [ + "cash_card", + "gasdiscount_silver", + "gasdiscount_gold", + "gasdiscount_platinum", + "id_science", + "id_military", + "id_industrial", + "fp_loyalty_card", + "robofac_test_data", + "icon", + "labmap", + "FMCNote", + "signed_chit", + "family_photo", + "money_one", + "money_ten", + "money_twenty", + "condom" + ] + } + ], + "armor": [ { "encumbrance": 0, "covers": [ "torso" ] } ] }, { "type": "GENERIC", diff --git a/data/json/items/generic/bedding.json b/data/json/items/generic/bedding.json index dcf2871883a75..fd7c0f3b2ba99 100644 --- a/data/json/items/generic/bedding.json +++ b/data/json/items/generic/bedding.json @@ -31,12 +31,16 @@ "symbol": "[", "looks_like": "blanket", "color": "white", - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 15, "warmth": 10, "material_thickness": 0.1, - "flags": [ "OVERSIZE", "OUTER", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "OVERSIZE", "OUTER", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ + { + "encumbrance": 15, + "coverage": 100, + "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "blanket", @@ -52,13 +56,17 @@ "symbol": "[", "looks_like": "towel", "color": "blue", - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 35, "warmth": 50, "material_thickness": 1, "environmental_protection": 1, - "flags": [ "OVERSIZE", "OUTER", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "OVERSIZE", "OUTER", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ + { + "encumbrance": 35, + "coverage": 100, + "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "down_blanket", @@ -74,13 +82,17 @@ "symbol": "[", "looks_like": "blanket", "color": "blue", - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 45, "warmth": 70, "material_thickness": 1, "environmental_protection": 1, - "flags": [ "OVERSIZE", "OUTER", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "OVERSIZE", "OUTER", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ + { + "encumbrance": 45, + "coverage": 100, + "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "fur_blanket", @@ -96,13 +108,17 @@ "symbol": "[", "looks_like": "blanket", "color": "brown", - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 55, "warmth": 80, "material_thickness": 2, "environmental_protection": 1, - "flags": [ "OVERSIZE", "OUTER", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "OVERSIZE", "OUTER", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ + { + "encumbrance": 55, + "coverage": 100, + "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "quilt", @@ -116,14 +132,18 @@ "material": [ "wool" ], "symbol": "[", "color": "white", - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 40, "warmth": 75, "material_thickness": 1, "environmental_protection": 2, "flags": [ "OVERSIZE", "OUTER", "ALLOWS_NATURAL_ATTACKS" ], - "looks_like": "down_blanket" + "looks_like": "down_blanket", + "armor": [ + { + "encumbrance": 40, + "coverage": 100, + "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "quilt_patchwork", @@ -131,8 +151,14 @@ "copy-from": "quilt", "name": { "str": "patchwork quilt" }, "description": "A huge, patchwork wool quilt. Very, very warm.", - "encumbrance": 50, - "warmth": 70 + "warmth": 70, + "armor": [ + { + "encumbrance": 50, + "coverage": 100, + "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "sleeping_bag", @@ -148,9 +174,6 @@ "symbol": "[", "looks_like": "blanket", "color": "light_red", - "covers": [ "torso", "head", "mouth", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 80, "warmth": 80, "material_thickness": 3, "environmental_protection": 1, @@ -160,6 +183,13 @@ "type": "transform", "target": "sleeping_bag_roll", "msg": "You roll up the sleeping bag, preparing it for transport." - } + }, + "armor": [ + { + "encumbrance": 80, + "coverage": 100, + "covers": [ "torso", "head", "mouth", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] } ] diff --git a/data/json/items/generic/string.json b/data/json/items/generic/string.json index e83a33ef09eb8..1a6eee3416576 100644 --- a/data/json/items/generic/string.json +++ b/data/json/items/generic/string.json @@ -46,7 +46,7 @@ "type": "GENERIC", "name": { "str": "short rope" }, "description": "A 6-foot (or about 180 cm) long piece of rope. Wear it over a shoulder and tie items to it as a temporary carrying solution.", - "armor_data": { "covers": [ "torso" ], "coverage": 5, "encumbrance": 3, "material_thickness": 2 }, + "armor_data": { "material_thickness": 2, "armor": [ { "encumbrance": 3, "coverage": 5, "covers": [ "torso" ] } ] }, "proportional": { "weight": 6, "volume": 6, "price": 6 }, "pocket_data": [ { @@ -71,7 +71,7 @@ "type": "GENERIC", "name": { "str": "long rope" }, "description": "A 30-foot (or about 9 m) long rope. Useful for keeping yourself safe from falls. Wear it over a shoulder and tie items to it as a temporary carrying solution.", - "armor_data": { "covers": [ "torso" ], "coverage": 10, "encumbrance": 12, "material_thickness": 6 }, + "armor_data": { "material_thickness": 6, "armor": [ { "encumbrance": 12, "coverage": 10, "covers": [ "torso" ] } ] }, "qualities": [ [ "ROPE", 2 ] ], "proportional": { "weight": 5, "volume": 5, "price": 5 }, "pocket_data": [ diff --git a/data/json/items/gun/10mm.json b/data/json/items/gun/10mm.json index 1a18e112ec448..7d8a54e1c8cbd 100644 --- a/data/json/items/gun/10mm.json +++ b/data/json/items/gun/10mm.json @@ -4,8 +4,16 @@ "copy-from": "pistol_revolver", "looks_like": "sw_619", "type": "GUN", - "name": { "str_sp": "S&W 610" }, - "description": "The Smith and Wesson 610 is a classic six-shooter revolver chambered for 10mm rounds, or for S&W's own .40 round.", + "name": { "str": "10mm/.40 revolver" }, + "description": "A classic six-shooter revolver chambered for 10mm and .40 rounds.", + "variants": [ + { + "id": "sw_610", + "name": { "str_sp": "S&W 610" }, + "description": "The Smith and Wesson 610 is a classic six-shooter revolver chambered for 10mm rounds, or for S&W's own .40 round.", + "weight": 1 + } + ], "ascii_picture": "sw_610", "weight": "1420 g", "volume": "754 ml", @@ -36,8 +44,16 @@ "copy-from": "pistol_base", "looks_like": "glock_19", "type": "GUN", - "name": { "str": "Glock 29" }, - "description": "A modestly sized version of the highly successful Glock, chambered in hard-hitting 10mm Auto. It is easy to carry because of its small size, but also recoils fiercely.", + "name": { "str": "compact Glock pistol" }, + "description": "A small pistol accepting Glock magazines and chambered in 10mm. Because of it size, it is easy to carry, but it has rather fierce recoil.", + "variants": [ + { + "id": "glock_29", + "name": { "str": "Glock 29" }, + "description": "A modestly sized version of the highly successful Glock, chambered in hard-hitting 10mm Auto. It is easy to carry because of its small size, but also recoils fiercely.", + "weight": 1 + } + ], "ascii_picture": "glock_19", "weight": "690 g", "volume": "410 ml", @@ -70,8 +86,23 @@ "copy-from": "pistol_base", "looks_like": "glock_17", "type": "GUN", - "name": { "str": "Glock 20" }, - "description": "A full-sized version of the highly successful Glock, chambered in hard-hitting 10mm Auto. The third model of Glock designed, all other full-sized, large framed Glocks are adaptations of this one.", + "name": { "str": "Glock pistol" }, + "description": "This is a semi-automatic pistol chambered in 10mm, and accepting Glock magazines.", + "variants": [ + { + "id": "glock_20", + "name": { "str": "Glock 20" }, + "description": "A full-sized version of the highly successful Glock, chambered in hard-hitting 10mm Auto. The third model of Glock designed, all other full-sized, large framed Glocks are adaptations of this one.", + "weight": 1 + }, + { + "id": "glock_40", + "name": { "str": "Glock 40 MOS" }, + "description": "A full-sized, long-slide version of the highly successful Glock, chambered in hard-hitting 10mm Auto. The extra barrel length makes for slightly even harder hitting ammo, and the extra slide length means the sights are a little easier to use. It also features Glock's Modular Optic System, making aftermarket optics much easier to mount.", + "ascii_picture": "glock_40mos", + "weight": 1 + } + ], "ascii_picture": "glock_20", "weight": "780 g", "volume": "480 ml", @@ -99,48 +130,21 @@ } ] }, - { - "id": "glock_40", - "copy-from": "pistol_base", - "looks_like": "glock_17", - "type": "GUN", - "name": { "str": "Glock 40 MOS" }, - "description": "A full-sized, long-slide version of the highly successful Glock, chambered in hard-hitting 10mm Auto. The extra barrel length makes for slightly even harder hitting ammo, and the extra slide length means the sights are a little easier to use. It also features Glock's Modular Optic System, making aftermarket optics much easier to mount.", - "ascii_picture": "glock_40mos", - "weight": "915 g", - "volume": "528 ml", - "longest_side": "241 mm", - "price": 59200, - "price_postapoc": 2500, - "to_hit": -2, - "bashing": 8, - "material": [ "plastic", "steel" ], - "symbol": "(", - "color": "dark_gray", - "ammo": "10mm", - "dispersion": 440, - "sight_dispersion": 40, - "durability": 8, - "blackpowder_tolerance": 48, - "min_cycle_recoil": 570, - "pocket_data": [ - { - "magazine_well": "103 ml", - "pocket_type": "MAGAZINE_WELL", - "holster": true, - "max_contains_volume": "20 L", - "max_contains_weight": "20 kg", - "item_restriction": [ "glock_20mag", "tdi_10mm_mag" ] - } - ] - }, { "id": "hk_mp5_10_semi", "copy-from": "hk_mp5_semi_pistol", "looks_like": "hk_mp5", "type": "GUN", - "name": { "str": "BA10" }, - "description": "The MP5/10 served the FBI briefly alongside their 10mm Auto pistols, adding to the caliber's overall mystique. Though the guns' usage was shortlived, a handful of clones were made and sold occasionally. This semi-automatic clone manufactured by Brethren Arms features a welded on M1913 rail and a collapsible arm brace.", + "name": { "str": "BA10 rifle" }, + "description": "A semi-automatic rifle, chambered in 10mm, accepting BA10 magazines.", + "variants": [ + { + "id": "hk_mp5_10_semi", + "name": { "str": "BA10" }, + "description": "The MP5/10 served the FBI briefly alongside their 10mm Auto pistols, adding to the caliber's overall mystique. Though the guns' usage was shortlived, a handful of clones were made and sold occasionally. This semi-automatic clone manufactured by Brethren Arms features a welded on M1913 rail and a collapsible arm brace.", + "weight": 1 + } + ], "weight": "2667 g", "volume": "2411 ml", "longest_side": "498 mm", @@ -169,8 +173,16 @@ "copy-from": "pistol_classic", "looks_like": "m1911", "type": "GUN", - "name": { "str": "Colt Delta Elite" }, - "description": "A modernized, match-grade variant of the venerable M1911 chambered in hard-hitting 10mm Auto. Early variants were known to crack frames; modern 1911's, like this one, are slotted to prevent such crack formation.", + "name": { "str": "Colt Delta Elite pistol" }, + "description": "A semi-automatic pistol chambered in 10mm. It accepts Colt Delta Elite magazines.", + "variants": [ + { + "id": "m1911_10", + "name": { "str": "Colt Delta Elite" }, + "description": "A modernized, match-grade variant of the venerable M1911 chambered in hard-hitting 10mm Auto. Early variants were known to crack frames; modern 1911's, like this one, are slotted to prevent such crack formation.", + "weight": 1 + } + ], "weight": "1077 g", "volume": "413 ml", "longest_side": "210 mm", @@ -182,7 +194,6 @@ "symbol": "(", "color": "light_gray", "ammo": "10mm", - "ranged_damage": { "damage_type": "bullet", "amount": -5 }, "dispersion": 480, "built_in_mods": [ "match_trigger" ], "durability": 6, @@ -204,8 +215,16 @@ "copy-from": "pistol_classic", "looks_like": "cz75", "type": "GUN", - "name": { "str": "EAA Witness 10mm" }, - "description": "The EAA Witness is a modified variant of the CZ-75, produced in Italy by Tanfoglio. This is the standard steel framed version chambered in 10mm Auto.", + "name": { "str": "EAA Witness pistol" }, + "description": "A semi-automatic pistol chambered in 10mm, and accepting EAA Witness magazines.", + "variants": [ + { + "id": "witness_10", + "name": { "str": "EAA Witness 10mm" }, + "description": "The EAA Witness is a modified variant of the CZ-75, produced in Italy by Tanfoglio. This is the standard steel framed version chambered in 10mm Auto.", + "weight": 1 + } + ], "weight": "936 g", "volume": "459 ml", "longest_side": "203 mm", @@ -235,8 +254,16 @@ "copy-from": "pistol_base", "looks_like": "p226_357sig", "type": "GUN", - "name": { "str": "SIG P220 10mm" }, - "description": "The Sig Sauer P220 was developed for the Swiss military in 1975, and its simplified action was later used in most other Sig Sauer designs, including the P226. The all-steel construction adds heft to this model, which is chambered in hard-hitting 10mm Auto.", + "name": { "str": "SIG pistol" }, + "description": "A semi-automatic pistol chambered in 10mmm, and accepting SIG magazines.", + "variants": [ + { + "id": "p220_10", + "name": { "str": "SIG P220 10mm" }, + "description": "The Sig Sauer P220 was developed for the Swiss military in 1975, and its simplified action was later used in most other Sig Sauer designs, including the P226. The all-steel construction adds heft to this model, which is chambered in hard-hitting 10mm Auto.", + "weight": 1 + } + ], "weight": "964 g", "volume": "549 ml", "longest_side": "224 mm", @@ -267,8 +294,16 @@ "copy-from": "pistol_base", "looks_like": "glock_19", "type": "GUN", - "name": { "str": "XD(M) Competition 10mm" }, - "description": "Designed by HS Produkt in Croatia, the HS2000 has become a commercial success for Springfield Armory, who imports and markets it as the eXtreme Duty. The XD has since been offered in a variety of chamberings and sizes, including this full-sized match grade variant in 10mm Auto.", + "name": { "str": "XD(M) pistol" }, + "description": "A semi-automatic pistol chambered in 10mm, and accepting XD(M) magazines", + "variants": [ + { + "id": "xd_10", + "name": { "str": "XD(M) Competition 10mm" }, + "description": "Designed by HS Produkt in Croatia, the HS2000 has become a commercial success for Springfield Armory, who imports and markets it as the eXtreme Duty. The XD has since been offered in a variety of chamberings and sizes, including this full-sized match grade variant in 10mm Auto.", + "weight": 1 + } + ], "weight": "930 g", "volume": "549 ml", "longest_side": "211 mm", @@ -299,8 +334,21 @@ "copy-from": "TDI", "looks_like": "TDI", "type": "GUN", - "name": { "str": "Vector SDP 10mm" }, - "description": "The Vector SDP is a delayed blowback \"pistol\" with a unique, downward reciprocating bolt that helps combat muzzle climb. This one is chambered in 10mm Auto.", + "//": [ + "Yes, I know it's not really a glock smg.", + "It takes glock magazines, and it's own special one that I am also renaming to a glock magazine", + "so, I'm calling it a glock smg." + ], + "name": { "str": "Glock SMG" }, + "description": "This is a submachine gun chambered in 10mm, accepting Glock magazines.", + "variants": [ + { + "id": "TDI_10", + "name": { "str": "Vector SDP 10mm" }, + "description": "The Vector SDP is a delayed blowback \"pistol\" with a unique, downward reciprocating bolt that helps combat muzzle climb. This one is chambered in 10mm Auto.", + "weight": 1 + } + ], "weight": "2867 g", "volume": "4386 ml", "longest_side": "429 mm", diff --git a/data/json/items/gun/223.json b/data/json/items/gun/223.json index 708be17d5ba5d..f19c729107964 100644 --- a/data/json/items/gun/223.json +++ b/data/json/items/gun/223.json @@ -547,7 +547,8 @@ "weight": 1 } ], - "built_in_mods": [ "folding_stock" ] + "built_in_mods": [ "folding_stock" ], + "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ], [ "AUTO", "auto", 4 ] ] }, { "id": "steyr_aug", diff --git a/data/json/items/gun/9mm.json b/data/json/items/gun/9mm.json index e7c43afc64eeb..6c76ecdc0e193 100644 --- a/data/json/items/gun/9mm.json +++ b/data/json/items/gun/9mm.json @@ -309,11 +309,9 @@ "dispersion": 520, "sight_dispersion": 520, "armor_data": { - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], "sided": true, - "coverage": 10, - "encumbrance": 30, - "material_thickness": 2 + "material_thickness": 2, + "armor": [ { "encumbrance": 30, "coverage": 10, "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ] } ] }, "flags": [ "OVERSIZE", "RELOAD_EJECT", "BELTED", "RESTRICT_HANDS" ], "valid_mod_locations": [ ], diff --git a/data/json/items/gun/monster_gun.json b/data/json/items/gun/monster_gun.json index 68ca8458c9293..5ba807e603603 100644 --- a/data/json/items/gun/monster_gun.json +++ b/data/json/items/gun/monster_gun.json @@ -77,7 +77,17 @@ "loudness": 2, "range": 6, "dispersion": 150, - "durability": 8 + "durability": 8, + "pocket_data": [ + { + "pocket_type": "MAGAZINE", + "rigid": true, + "max_contains_volume": "200 L", + "max_contains_weight": "400 kg", + "max_item_length": "2000 m", + "ammo_restriction": { "rock": 5 } + } + ] }, { "id": "v29_turret", diff --git a/data/json/items/gun/shot.json b/data/json/items/gun/shot.json index 662fbbcbf64b9..ffbc16ce3f34e 100644 --- a/data/json/items/gun/shot.json +++ b/data/json/items/gun/shot.json @@ -105,36 +105,21 @@ "extend": { "flags": [ "RELOAD_ONE" ] }, "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "shot": 6 } } ] }, - { - "id": "browning_a5", - "copy-from": "shotgun_base", - "type": "GUN", - "name": { "str": "Browning Auto 5" }, - "description": "This humble looking shotgun was the earliest successful semi-automatic shotgun, and the second most successful in U.S. history, with over 2.7 million made between 1902 and 1998. The recoil tuning mechanism under the handguard and long dwell time of the action make for pleasant shooting.", - "weight": "3090 g", - "volume": "3525 ml", - "longest_side": "1263 mm", - "looks_like": "remington_870", - "price": 80000, - "price_postapoc": 2000, - "to_hit": -1, - "bashing": 12, - "material": [ "steel", "wood" ], - "ranged_damage": { "damage_type": "bullet", "amount": 1 }, - "dispersion": 425, - "durability": 6, - "min_cycle_recoil": 1250, - "clip_size": 5, - "extend": { "flags": [ "RELOAD_ONE" ] }, - "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "shot": 5 } } ] - }, { "id": "ksg", "copy-from": "shotgun_pump", "looks_like": "remington_870", "type": "GUN", - "name": { "str_sp": "Kel-Tec KSG" }, - "description": "A bullpup pump-action shotgun, the Kel-Tec KSG uses a pair of magazine tubes to increase its capacity. Each tube has to be loaded separately, but this offers the option of loading different ammunition for different situations.", + "name": { "str": "14-round tube shotgun" }, + "description": "This shotgun uses a system of 2 tube magazines to carry 14 rounds of 12 gauge shot. Each tube has to be loaded separately, but this offers the option of loading different ammunition for different situations.", + "variants": [ + { + "id": "ksg", + "name": { "str_sp": "Kel-Tec KSG" }, + "description": "A bullpup pump-action shotgun, the Kel-Tec KSG uses a pair of magazine tubes to increase its capacity. Each tube has to be loaded separately, but this offers the option of loading different ammunition for different situations.", + "weight": 1 + } + ], "ascii_picture": "ksg", "weight": "1550 g", "volume": "3371 ml", @@ -170,8 +155,16 @@ "copy-from": "shotgun_pump", "looks_like": "remington_870", "type": "GUN", - "name": { "str_sp": "Kel-Tec KSG-25" }, - "description": "A bullpup pump-action shotgun, the Kel-Tec KSG-25 uses a pair of magazine tubes to increase its capacity. Each tube has to be loaded separately, but this offers the option of loading different ammunition for different situations. The big brother of the KSG, it has a longer barrel and longer magazine tubes.", + "name": { "str": "24-round tube shotgun" }, + "description": "This shotgun uses a system of 2 tube magazines to carry 24 rounds of 12 gauge shot. Each tube has to be loaded separately, but this offers the option of loading different ammunition for different situations.", + "variants": [ + { + "id": "ksg-25", + "name": { "str_sp": "Kel-Tec KSG-25" }, + "description": "A bullpup pump-action shotgun, the Kel-Tec KSG-25 uses a pair of magazine tubes to increase its capacity. Each tube has to be loaded separately, but this offers the option of loading different ammunition for different situations. The big brother of the KSG, it has a longer barrel and longer magazine tubes.", + "weight": 1 + } + ], "ascii_picture": "ksg-25", "weight": "2100 g", "volume": "4495 ml", @@ -202,47 +195,27 @@ ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "shot": 12 } } ] }, - { - "id": "m1014", - "copy-from": "shotgun_base", - "looks_like": "remington_870", - "type": "GUN", - "name": { "str": "M1014 shotgun" }, - "description": "Benelli's first gas-operated shotgun, featuring dual pistons for enhanced reliability with various loads and a collapsible buttstock that reduces length by almost 8 inches. Adopted in 1999 as the M1014 Joint Service Combat Shotgun, the Benelli M4 is one of the finest combat shotguns available.", - "weight": "3629 g", - "volume": "6302 ml", - "longest_side": "1021 mm", - "price": 169900, - "price_postapoc": 3500, - "to_hit": -1, - "bashing": 12, - "material": [ "steel", "plastic" ], - "ranged_damage": { "damage_type": "bullet", "amount": 1 }, - "dispersion": 345, - "durability": 9, - "min_cycle_recoil": 1250, - "clip_size": 8, - "valid_mod_locations": [ - [ "accessories", 2 ], - [ "mechanism", 4 ], - [ "sling", 1 ], - [ "barrel", 1 ], - [ "rail mount", 1 ], - [ "loading port", 1 ], - [ "brass catcher", 1 ], - [ "sights", 1 ], - [ "underbarrel mount", 1 ] - ], - "flags": [ "RELOAD_ONE", "NEEDS_UNFOLD" ], - "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "shot": 8 } } ] - }, { "id": "mossberg_500", "copy-from": "shotgun_pump_3gun", "looks_like": "remington_870", "type": "GUN", - "name": { "str_sp": "Mossberg 500 Field" }, - "description": "The Mossberg 500 is a popular series of pump-action shotguns, often acquired for military use. It is noted for its high durability and low recoil. This one is fitted with a 28 inch barrel with sight rib.", + "name": { "str": "6-round shotgun" }, + "description": "This is a shotgun with capacity for 6 rounds of 12 gauge shot.", + "variants": [ + { + "id": "mossberg_500", + "name": { "str_sp": "Mossberg 500 Field" }, + "description": "The Mossberg 500 is a popular series of pump-action shotguns, often acquired for military use. It is noted for its high durability and low recoil. This one is fitted with a 28 inch barrel with sight rib.", + "weight": 1 + }, + { + "id": "mossberg_500_security", + "name": { "str_sp": "Mossberg 500 Security" }, + "description": "The Mossberg 500 is a popular series of pump-action shotguns, often acquired for military use. It is noted for its high durability and low recoil. This one is fitted with an 18.5 inch barrel.", + "ascii_picture": "mossberg500_sec" + } + ], "ascii_picture": "mossberg500", "weight": "3402 g", "volume": "2450 ml", @@ -259,30 +232,25 @@ "clip_size": 6, "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "shot": 6 } } ] }, - { - "id": "mossberg_500_security", - "copy-from": "mossberg_500", - "type": "GUN", - "name": { "str_sp": "Mossberg 500 Security" }, - "description": "The Mossberg 500 is a popular series of pump-action shotguns, often acquired for military use. It is noted for its high durability and low recoil. This one is fitted with an 18.5 inch barrel.", - "ascii_picture": "mossberg500_sec", - "weight": "3062 g", - "volume": "2386 ml", - "longest_side": "1016 mm", - "looks_like": "mossberg_500", - "price": 53800, - "price_postapoc": 2250, - "bashing": 12, - "barrel_volume": "28 ml", - "dispersion": 375, - "ranged_damage": { "damage_type": "bullet", "amount": 1 } - }, { "id": "mossberg_590", - "copy-from": "mossberg_500_security", + "copy-from": "mossberg_500", "type": "GUN", - "name": { "str_sp": "Mossberg 590A1" }, - "description": "The Mossberg 590A1 is a military and police oriented version of the Mossberg 500. It features a heavier barrel, a bayonet lug, and a different magazine tube for easier cleaning and maintenance.", + "name": { "str": "9-round shotgun" }, + "description": "This is a shotgun with capacity for 9 rounds of 12 gauge shot", + "variants": [ + { + "id": "mossberg_590", + "name": { "str_sp": "Mossberg 590A1" }, + "description": "The Mossberg 590A1 is a military and police oriented version of the Mossberg 500. It features a heavier barrel, a bayonet lug, and a different magazine tube for easier cleaning and maintenance.", + "weight": 1 + }, + { + "id": "SPAS_12", + "name": { "str": "Franchi SPAS-12" }, + "description": "Mean and intimidating looking, the SPAS 12 has the dubious honor of being declared a destructive device and being banned from import by name, adding to its already considerable appeal. It is a combination pump-action and semi-automatic firearm, with an arm stabilizing hook for one handed shooting." + } + ], "ascii_picture": "mossberg590", "weight": "3289 g", "volume": "2548 ml", @@ -299,13 +267,26 @@ "id": "mossberg_930", "copy-from": "shotgun_base", "type": "GUN", - "name": { "str": "Mossberg 930 SPX" }, - "description": "This semi-automatic offering from Mossberg features a recoil reducing gas system, rifle style sights and a factory-installed picatinny rail. Affordable pricing and decent ergonomics make this a popular entry-level 3-gun shotgun.", + "name": { "str": "8-round shotgun" }, + "description": "This is a shotgun with capacity for 8 rounds of 12 gauge shot", + "variants": [ + { + "id": "mossberg_930", + "name": { "str": "Mossberg 930 SPX" }, + "description": "This semi-automatic offering from Mossberg features a recoil reducing gas system, rifle style sights and a factory-installed picatinny rail. Affordable pricing and decent ergonomics make this a popular entry-level 3-gun shotgun.", + "weight": 1 + }, + { + "id": "m1014", + "name": { "str": "M1014 shotgun" }, + "description": "Benelli's first gas-operated shotgun, featuring dual pistons for enhanced reliability with various loads and a collapsible buttstock that reduces length by almost 8 inches. Adopted in 1999 as the M1014 Joint Service Combat Shotgun, the Benelli M4 is one of the finest combat shotguns available." + } + ], "ascii_picture": "mossberg930sxp", "weight": "3402 g", "volume": "2623 ml", "longest_side": "994 mm", - "looks_like": "m1014", + "looks_like": "remington_870", "price": 60000, "price_postapoc": 2250, "to_hit": -1, @@ -397,8 +378,27 @@ "copy-from": "shotgun_pump_3gun", "//": "Tileset whitelist for shotguns.", "type": "GUN", - "name": { "str_sp": "Remington 870 Wingmaster" }, - "description": "With over 10 million made, the Remington 870 is one of the most popular shotguns on the market, and finds use with hunters and law enforcement agencies alike thanks to its high accuracy and muzzle velocity. This one is a 28 inch barreled model for hunting fowl and game.", + "name": { "str": "5-round shotgun" }, + "description": "This is a shotgun with capacity for 5 rounds of 12 gauge shot.", + "variants": [ + { + "id": "remington_870", + "name": { "str_sp": "Remington 870 Wingmaster" }, + "description": "With over 10 million made, the Remington 870 is one of the most popular shotguns on the market, and finds use with hunters and law enforcement agencies alike thanks to its high accuracy and muzzle velocity. This one is a 28 inch barreled model for hunting fowl and game.", + "weight": 1 + }, + { + "id": "remington_1100", + "name": { "str": "Remington 1100 competition" }, + "description": "This semi-automatic shotgun features a self compensating gas system that will feed a wide array of shells while also reducing recoil. Introduced in 1963, it is favored by law enforcement, hunters and competition shooters, and has been the best-selling autoloading shotgun in U.S. history. This is the nickel finished, teflon coated competition model, with a full length magazine tube and 30 inch barrel.", + "ascii_picture": "remington1100" + }, + { + "id": "browning_a5", + "name": { "str": "Browning Auto 5" }, + "description": "This humble looking shotgun was the earliest successful semi-automatic shotgun, and the second most successful in U.S. history, with over 2.7 million made between 1902 and 1998. The recoil tuning mechanism under the handguard and long dwell time of the action make for pleasant shooting." + } + ], "ascii_picture": "remington870", "weight": "3400 g", "volume": "2487 ml", @@ -419,8 +419,16 @@ "id": "remington_870_breacher", "copy-from": "remington_870", "type": "GUN", - "name": { "str": "Remington 870 MCS" }, - "description": "This Remington 870 Modular Combat System shotgun is currently setup for breaching operations, with a 10 inch barrel and no stock. It is small enough to carry as a secondary weapon, specifically to pop open any pesky doors you might come across. The grip's design makes for controllable yet unpleasant recoil, and the barrel lacks any sights.", + "name": { "str": "breaching shotgun" }, + "description": "This shotgun has a short barrel and no stock, and is set up for breaching doors. It is small enough to carry as a secondary weapon, but has fairly unpleasant recoil and no sights.", + "variants": [ + { + "id": "remington_870_breacher", + "name": { "str": "Remington 870 MCS" }, + "description": "This Remington 870 Modular Combat System shotgun is currently setup for breaching operations, with a 10 inch barrel and no stock. It is small enough to carry as a secondary weapon, specifically to pop open any pesky doors you might come across. The grip's design makes for controllable yet unpleasant recoil, and the barrel lacks any sights.", + "weight": 1 + } + ], "ascii_picture": "remington870mcs", "weight": "2812 g", "volume": "1284 ml", @@ -456,8 +464,16 @@ "id": "remington_870_express", "copy-from": "remington_870", "type": "GUN", - "name": { "str": "Remington 870 express", "str_pl": "Remington 870 expresses" }, - "description": "With over 10 million made, the Remington 870 is one of the most popular shotguns on the market, and finds use with hunters and law enforcement agencies alike thanks to its high accuracy and muzzle velocity. This one is an 18.5 inch barreled defensive model.", + "name": { "str": "7-round shotgun" }, + "description": "This is a shotgun with capacity for 7 rounds of 12 gauge shot.", + "variants": [ + { + "id": "remington_870_express", + "name": { "str": "Remington 870 express", "str_pl": "Remington 870 expresses" }, + "description": "With over 10 million made, the Remington 870 is one of the most popular shotguns on the market, and finds use with hunters and law enforcement agencies alike thanks to its high accuracy and muzzle velocity. This one is an 18.5 inch barreled defensive model.", + "weight": 1 + } + ], "ascii_picture": "remington870xpress", "weight": "3402 g", "volume": "2365 ml", @@ -471,45 +487,6 @@ "price_postapoc": 2750, "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "shot": 7 } } ] }, - { - "id": "remington_1100", - "copy-from": "shotgun_base", - "type": "GUN", - "name": { "str": "Remington 1100 competition" }, - "description": "This semi-automatic shotgun features a self compensating gas system that will feed a wide array of shells while also reducing recoil. Introduced in 1963, it is favored by law enforcement, hunters and competition shooters, and has been the best-selling autoloading shotgun in U.S. history. This is the nickel finished, teflon coated competition model, with a full length magazine tube and 30 inch barrel.", - "ascii_picture": "remington1100", - "weight": "3742 g", - "volume": "2626 ml", - "longest_side": "1288 mm", - "price_postapoc": 3250, - "looks_like": "remington_870", - "price": 130000, - "to_hit": -1, - "bashing": 13, - "material": [ "steel", "plastic" ], - "dispersion": 315, - "ranged_damage": { "damage_type": "bullet", "amount": 6 }, - "durability": 8, - "min_cycle_recoil": 1250, - "clip_size": 10, - "barrel_volume": "299 ml", - "built_in_mods": [ "match_trigger" ], - "default_mods": [ "recoil_stock" ], - "valid_mod_locations": [ - [ "accessories", 2 ], - [ "sling", 1 ], - [ "brass catcher", 1 ], - [ "barrel", 1 ], - [ "stock", 1 ], - [ "mechanism", 4 ], - [ "rail mount", 1 ], - [ "loading port", 1 ], - [ "sights mount", 1 ], - [ "underbarrel mount", 1 ] - ], - "extend": { "flags": [ "RELOAD_ONE" ] }, - "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "shot": 5 } } ] - }, { "id": "revolver_shotgun", "copy-from": "shotgun_base", @@ -549,8 +526,16 @@ "copy-from": "shotgun_base", "looks_like": "remington_870", "type": "GUN", - "name": { "str": "Saiga-12" }, - "description": "The Saiga-12 is a semi-automatic shotgun designed on the same Kalashnikov pattern as the AK47 rifle. It reloads with a magazine, rather than one shell at a time like most shotguns. It is one of the last designs of Mikhail Kalashnikov, and was popular in open division shotgun competitions prior to its ban from import via executive order.", + "name": { "str": "Saiga shotgun" }, + "description": "This shotgun is chambered in 12 gauge, and accepting Saiga magazines.", + "variants": [ + { + "id": "saiga_12", + "name": { "str": "Saiga-12" }, + "description": "The Saiga-12 is a semi-automatic shotgun designed on the same Kalashnikov pattern as the AK47 rifle. It reloads with a magazine, rather than one shell at a time like most shotguns. It is one of the last designs of Mikhail Kalashnikov, and was popular in open division shotgun competitions prior to its ban from import via executive order.", + "weight": 1 + } + ], "weight": "3225 g", "volume": "3064 ml", "longest_side": "1068 mm", @@ -653,8 +638,16 @@ "id": "streetsweeper", "copy-from": "shotgun_base", "type": "GUN", - "name": { "str": "Cobray Streetsweeper" }, - "description": "Less shotgun and more comically oversized revolver, the Cobray Streetsweeper sold poorly before it was deemed a destructive device. The cylinder is driven by a clockspring, cannot be indexed by hand, and must be ejected with an ejector rod. Its unique design allows for all 12 shells to be fired in under 3 seconds, as demonstrated by the ATF technical branch.", + "name": { "str": "automatic shotgun" }, + "description": "This shotgun, deemed a destructive device, resembles a comically oversized revolver. It can hold 12 rounds of 12 gauge shot, and fire all of them in under 3 seconds", + "variants": [ + { + "id": "streetsweeper", + "name": { "str": "Cobray Streetsweeper" }, + "description": "Less shotgun and more comically oversized revolver, the Cobray Streetsweeper sold poorly before it was deemed a destructive device. The cylinder is driven by a clockspring, cannot be indexed by hand, and must be ejected with an ejector rod. Its unique design allows for all 12 shells to be fired in under 3 seconds, as demonstrated by the ATF technical branch.", + "weight": 1 + } + ], "weight": "4200 g", "volume": "3193 ml", "longest_side": "592 mm", @@ -688,48 +681,20 @@ "flags": [ "RELOAD_ONE", "RELOAD_EJECT", "NEVER_JAMS" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "shot": 12 } } ] }, - { - "id": "SPAS_12", - "copy-from": "shotgun_base", - "type": "GUN", - "name": { "str": "Franchi SPAS-12" }, - "description": "Mean and intimidating looking, the SPAS 12 has the dubious honor of being declared a destructive device and being banned from import by name, adding to its already considerable appeal. It is a combination pump-action and semi-automatic firearm, with an arm stabilizing hook for one handed shooting.", - "weight": "4400 g", - "volume": "2768 ml", - "longest_side": "835 mm", - "looks_like": "m1014", - "price": 180000, - "price_postapoc": 4750, - "to_hit": -1, - "bashing": 12, - "material": [ "steel", "wood" ], - "dispersion": 380, - "durability": 6, - "clip_size": 9, - "ranged_damage": { "damage_type": "bullet", "amount": 1 }, - "built_in_mods": [ "wire_stock" ], - "valid_mod_locations": [ - [ "accessories", 4 ], - [ "bore", 1 ], - [ "brass catcher", 1 ], - [ "grip mount", 1 ], - [ "mechanism", 2 ], - [ "muzzle", 1 ], - [ "rail mount", 1 ], - [ "sights mount", 1 ], - [ "sling", 1 ], - [ "stock", 1 ], - [ "underbarrel mount", 1 ] - ], - "flags": [ "RELOAD_ONE" ], - "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "shot": 9 } } ] - }, { "id": "tavor_12", "copy-from": "shotgun_base", "type": "GUN", - "name": { "str": "Tavor TS12" }, - "description": "This is a triple tube magazine fed, gas-operated bullpup shotgun of Israeli Weapon Industries make. It is capable of loading 15 shells, all in a relatively small package. Like many other modern IWI designs, this looks more like a sci-fi prop gun than a firearm. An integral top rail is provided for mounting sights.", + "name": { "str": "15-round tube fed shotgun" }, + "description": "This shotgun uses a system of 3 tube magazines to hold 15 rounds of 12 gauge shots, in a relatively small firearm. Each tube has to be loaded separately, but this offers the option of loading different ammunition for different situations.", + "variants": [ + { + "id": "tavor_12", + "name": { "str": "Tavor TS12" }, + "description": "This is a triple tube magazine fed, gas-operated bullpup shotgun of Israeli Weapon Industries make. It is capable of loading 15 shells, all in a relatively small package. Like many other modern IWI designs, this looks more like a sci-fi prop gun than a firearm. An integral top rail is provided for mounting sights.", + "weight": 1 + } + ], "weight": "3429 g", "volume": "4040 ml", "longest_side": "725 mm", @@ -765,8 +730,16 @@ "id": "winchester_1887", "copy-from": "shotgun_base", "type": "GUN", - "name": { "str": "1887 bootleg shotgun" }, - "description": "One of the first commercially successful repeating shotguns, the Winchester 1887 was specifically made lever-action at Winchester's request. Though later overshadowed in success by pump designs, the 1887 remains popular today. This one has a very short barrel, no stock, and would pair nicely with a motorcycle jacket and a Harley Davidson.", + "name": { "str": "6-round lever-action shotgun" }, + "description": "This is a lever-action shotgun with a very short barrel, and no stock, accepting 6 rounds of 12 gauge shot. It would pair nicely with a motorcycle jacket and a Harley Davidson.", + "variants": [ + { + "id": "winchester_1887", + "name": { "str": "1887 bootleg shotgun" }, + "description": "One of the first commercially successful repeating shotguns, the Winchester 1887 was specifically made lever-action at Winchester's request. Though later overshadowed in success by pump designs, the 1887 remains popular today. This one has a very short barrel, no stock, and would pair nicely with a motorcycle jacket and a Harley Davidson.", + "weight": 1 + } + ], "weight": "2994 g", "volume": "1127 ml", "longest_side": "708 mm", @@ -801,8 +774,16 @@ "id": "winchester_1897", "copy-from": "shotgun_base", "type": "GUN", - "name": { "str": "M1897 Trench Gun" }, - "description": "The Winchester 1897 was one of the first commercially-successful pump-action shotguns. In its 'trench' configuration it has become a heavily-romanticized American icon of World War 1. With its barrel shroud, bayonet lug, and 17 inch bayonet, this shotgun is undeniably fearsome in appearance. There aren't any more trenches to clear, so the next zombie-infested town will have to suffice.", + "name": { "str": "trench shotgun" }, + "description": "This shotgun comes attached with a large bayonet, as though it comes straight from the trenches of World War 1. There aren't any more trenches to clear, so the next zombie-infested town will have to suffice.", + "variants": [ + { + "id": "winchester_1897", + "name": { "str": "M1897 Trench Gun" }, + "description": "The Winchester 1897 was one of the first commercially-successful pump-action shotguns. In its 'trench' configuration it has become a heavily-romanticized American icon of World War 1. With its barrel shroud, bayonet lug, and 17 inch bayonet, this shotgun is undeniably fearsome in appearance. There aren't any more trenches to clear, so the next zombie-infested town will have to suffice.", + "weight": 1 + } + ], "weight": "3629 g", "volume": "2564 ml", "longest_side": "989 mm", diff --git a/data/json/items/magazine/10mm.json b/data/json/items/magazine/10mm.json index 85033114d0302..b02fc14d32443 100644 --- a/data/json/items/magazine/10mm.json +++ b/data/json/items/magazine/10mm.json @@ -39,7 +39,15 @@ "looks_like": "glock17_17", "type": "MAGAZINE", "name": { "str": "Glock 10mm 10-round magazine" }, - "description": "A stubby steel and polymer magazine for use with the Glock 29. It is too short to insert into most other 10mm Glock pattern magwells.", + "description": "A stubby steel and polymer magazine for use with the compact Glock pistol. It is too short to insert into most other 10mm Glock pattern magwells.", + "variants": [ + { + "id": "glock_29mag", + "name": { "str": "Glock 10mm 10-round magazine" }, + "description": "A stubby steel and polymer magazine for use with the Glock 29. It is too short to insert into most other 10mm Glock pattern magwells.", + "weight": 1 + } + ], "weight": "90 g", "volume": "99 ml", "longest_side": "112 mm", @@ -58,7 +66,15 @@ "copy-from": "m1911mag", "type": "MAGAZINE", "name": { "str": "Colt Delta Elite 8-round magazine" }, - "description": "An 8-round single stack steel box magazine for use with 1911 pattern guns chambered in 10mm Auto.", + "description": "An 8-round single stack steel box magazine for use in the Colt Delta Elite pistol.", + "variants": [ + { + "id": "m1911_10mag", + "name": { "str": "Colt Delta Elite 8-round magazine" }, + "description": "An 8-round single stack steel box magazine for use with 1911 pattern guns chambered in 10mm Auto.", + "weight": 1 + } + ], "price": 3500, "price_postapoc": 100, "material": "steel", @@ -69,8 +85,16 @@ "id": "mp5_10_mag", "looks_like": "ump45mag", "type": "MAGAZINE", - "name": { "str": "MP5/10 30-round magazine" }, - "description": "A straight 30-round box magazine for use with MP5/10's and similar 10mm MP5 clones such as the Brethren Arms BA10.", + "name": { "str": "BA10 30-round magazine" }, + "description": "A straight 30-round box magazine for the BA10 rifle.", + "variants": [ + { + "id": "mp5_10_mag", + "name": { "str": "MP5/10 30-round magazine" }, + "description": "A straight 30-round box magazine for use with MP5/10's and similar 10mm MP5 clones such as the Brethren Arms BA10.", + "weight": 1 + } + ], "weight": "159 g", "volume": "231 ml", "longest_side": "227 mm", @@ -87,8 +111,16 @@ "id": "p220_10_mag", "looks_like": "glock17_17", "type": "MAGAZINE", - "name": { "str": "P220 8-round magazine" }, - "description": "An 8-round steel box magazine for the Sig Sauer P220 in 10mm Auto.", + "name": { "str": "SIG pistol 10mm 8-roung magazine" }, + "description": "An 8-round steel box magazine for the SIG pistol", + "variants": [ + { + "id": "p220_10_mag", + "name": { "str": "P220 8-round magazine" }, + "description": "An 8-round steel box magazine for the Sig Sauer P220 in 10mm Auto.", + "weight": 1 + } + ], "weight": "60 g", "volume": "58 ml", "longest_side": "141 mm", @@ -106,7 +138,15 @@ "looks_like": "tdi_mag", "type": "MAGAZINE", "name": { "str": "Glock 10mm 30-round magazine" }, - "description": "A 30-round plastic and steel box 10mm Auto magazine for use with the Glock pattern magazine wells, namely the Vector SDP.", + "description": "A 30-round plastic and steel box 10mm Auto magazine for use with the Glock pistols and submachine guns chambered in 10mm.", + "variants": [ + { + "id": "tdi_10mm_mag", + "name": { "str": "Glock 10mm 30-round magazine" }, + "description": "A 30-round plastic and steel box 10mm Auto magazine for use with the Glock pattern magazine wells, namely the Vector SDP.", + "weight": 1 + } + ], "weight": "210 g", "volume": "194 ml", "longest_side": "256 mm", diff --git a/data/json/items/magazine/shot.json b/data/json/items/magazine/shot.json index b87e1770e494e..53830d13363bb 100644 --- a/data/json/items/magazine/shot.json +++ b/data/json/items/magazine/shot.json @@ -3,8 +3,16 @@ "id": "saiga10mag", "looks_like": "shotbelt_20", "type": "MAGAZINE", - "name": { "str": "Saiga-12 10-round magazine" }, - "description": "A removable plastic magazine for the Saiga-12 shotgun. Holds 10 rounds.", + "name": { "str": "Saiga shotgun 10-round magazine" }, + "description": "A removable plastic magazine for the Saiga shotgun. Holds 10 rounds.", + "variants": [ + { + "id": "saiga10mag", + "name": { "str": "Saiga-12 10-round magazine" }, + "description": "A removable plastic magazine for the Saiga-12 shotgun. Holds 10 rounds.", + "weight": 1 + } + ], "weight": "210 g", "volume": "500 ml", "price": 4500, @@ -20,8 +28,16 @@ "id": "saiga30mag", "looks_like": "shotbelt_20", "type": "MAGAZINE", - "name": { "str": "Saiga-12 30-round drum magazine" }, - "description": "A removable plastic magazine for the Saiga-12 shotgun. Holds 30 rounds.", + "name": { "str": "Saiga shotgun 30-round drum magazine" }, + "description": "A removable plastic magazine for the Saiga shotgun. Holds 30 rounds.", + "variants": [ + { + "id": "saiga30mag", + "name": { "str": "Saiga-12 30-round drum magazine" }, + "description": "A removable plastic magazine for the Saiga-12 shotgun. Holds 30 rounds.", + "weight": 1 + } + ], "weight": "460 g", "volume": "1 L", "price": 11000, @@ -48,7 +64,7 @@ "symbol": "#", "color": "light_gray", "ammo_type": [ "shot" ], - "armor_data": { "covers": [ "torso" ], "coverage": 5, "material_thickness": 1, "encumbrance": 2 }, + "armor_data": { "material_thickness": 1, "armor": [ { "encumbrance": 2, "coverage": 5, "covers": [ "torso" ] } ] }, "flags": [ "MAG_EJECT", "BELTED", "OVERSIZE", "WATER_FRIENDLY" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "shot": 20 } } ] }, diff --git a/data/json/items/melee/bludgeons.json b/data/json/items/melee/bludgeons.json index a3d0085ad66f1..7d6f391c00a16 100644 --- a/data/json/items/melee/bludgeons.json +++ b/data/json/items/melee/bludgeons.json @@ -541,9 +541,9 @@ "price_postapoc": 1500, "material": [ "wood", "iron" ], "techniques": [ "WBLOCK_2", "RAPID", "SWEEP" ], - "flags": [ "DURABLE_MELEE", "NONCONDUCTIVE", "SHEATH_SPEAR", "ALWAYS_TWOHAND" ], - "weight": "2200 g", - "volume": "3 L", + "flags": [ "NONCONDUCTIVE", "SHEATH_SPEAR", "ALWAYS_TWOHAND" ], + "weight": "1750 g", + "volume": "1550 ml", "longest_side": "180 cm", "bashing": 32, "category": "weapons", @@ -905,9 +905,9 @@ "price": 4000, "material": [ "wood" ], "techniques": [ "WBLOCK_2", "RAPID", "SWEEP" ], - "flags": [ "DURABLE_MELEE", "SHEATH_SPEAR", "ALWAYS_TWOHAND" ], - "weight": "1400 g", - "volume": "3 L", + "flags": [ "SHEATH_SPEAR", "ALWAYS_TWOHAND" ], + "weight": "1500 g", + "volume": "1500 ml", "longest_side": "180 cm", "bashing": 26, "category": "weapons", @@ -1013,8 +1013,8 @@ "category": "weapons", "name": { "str": "powered quarterstaff", "str_pl": "powered quarterstaves" }, "description": "This is an ironshod quarterstaff that has a high-voltage stun gun built into the handle. The stun gun is wired to the metal caps at either end of the staff, allowing you to zap a dangerous opponent should beating them senseless with it prove too hazardous.", - "weight": "2351 g", - "volume": "3250 ml", + "weight": "1910 g", + "volume": "1800 ml", "longest_side": "180 cm", "price": 8000, "to_hit": 3, @@ -1028,7 +1028,7 @@ "qualities": [ [ "HAMMER", 1 ] ], "techniques": [ "WBLOCK_2", "RAPID", "SWEEP" ], "use_action": [ "TAZER" ], - "flags": [ "DURABLE_MELEE", "NONCONDUCTIVE", "SHEATH_SPEAR", "ALWAYS_TWOHAND" ], + "flags": [ "NONCONDUCTIVE", "SHEATH_SPEAR", "ALWAYS_TWOHAND" ], "pocket_data": [ { "pocket_type": "MAGAZINE_WELL", diff --git a/data/json/items/melee/swords_and_blades.json b/data/json/items/melee/swords_and_blades.json index 6137c9fa15c56..e185acb8dfde3 100644 --- a/data/json/items/melee/swords_and_blades.json +++ b/data/json/items/melee/swords_and_blades.json @@ -1228,6 +1228,7 @@ "pocket_type": "CONTAINER", "max_contains_volume": "1531 ml", "max_contains_weight": "2 kg", + "max_item_length": "80 cm", "moves": 80, "flag_restriction": [ "SHEATH_SWORD" ] } diff --git a/data/json/items/melee/unarmed_weapons.json b/data/json/items/melee/unarmed_weapons.json index c6f7d653b4f1e..a22cd481df10d 100644 --- a/data/json/items/melee/unarmed_weapons.json +++ b/data/json/items/melee/unarmed_weapons.json @@ -29,10 +29,8 @@ "bashing": 2, "price_postapoc": 250, "flags": [ "UNARMED_WEAPON", "DURABLE_MELEE", "NONCONDUCTIVE" ], - "covers": [ "hand_l", "hand_r" ], - "coverage": 50, - "encumbrance": 5, - "material_thickness": 1 + "material_thickness": 1, + "armor": [ { "encumbrance": 5, "coverage": 50, "covers": [ "hand_l", "hand_r" ] } ] }, { "type": "GENERIC", diff --git a/data/json/items/migration.json b/data/json/items/migration.json index dbfb65d23c529..eaa03579f6da4 100644 --- a/data/json/items/migration.json +++ b/data/json/items/migration.json @@ -1148,6 +1148,36 @@ "type": "MIGRATION", "replace": "nato_assault_rifle" }, + { + "id": "browning_a5", + "type": "MIGRATION", + "replace": "remington_870", + "variant": "browning_a5" + }, + { + "id": "remington_1100", + "type": "MIGRATION", + "replace": "remington_870", + "variant": "remington_1100" + }, + { + "id": "mossberg_500_security", + "type": "MIGRATION", + "replace": "mossberg_500", + "variant": "mossberg_500_security" + }, + { + "id": "m1014", + "type": "MIGRATION", + "replace": "mossberg_930", + "variant": "m1014" + }, + { + "id": "SPAS_12", + "type": "MIGRATION", + "replace": "mossberg_590", + "variant": "SPAS_12" + }, { "id": "acr", "type": "MIGRATION", @@ -1196,6 +1226,12 @@ "replace": "nato_assault_rifle", "variant": "m4_cqbr" }, + { + "id": "glock_40", + "type": "MIGRATION", + "replace": "glock_20", + "variant": "glock_40" + }, { "id": "lw223bigmag", "type": "MIGRATION", @@ -1379,5 +1415,15 @@ "type": "MIGRATION", "replace": "towel", "flags": [ "FILTHY" ] + }, + { + "id": "gloves_survivor_fingerless", + "type": "MIGRATION", + "replace": "gloves_lsurvivor_fingerless" + }, + { + "id": "gloves_xlsurvivor", + "type": "MIGRATION", + "replace": "xl_gloves_survivor" } ] diff --git a/data/json/items/obsolete.json b/data/json/items/obsolete.json index 32da55017b7f4..93b89c027ed98 100644 --- a/data/json/items/obsolete.json +++ b/data/json/items/obsolete.json @@ -18,6 +18,250 @@ "type": "recipe", "obsolete": true }, + { + "abstract": "mre_box", + "type": "GENERIC", + "symbol": ")", + "color": "brown", + "name": { "str": "MRE" }, + "category": "food", + "description": "A generic MRE box, you shouldn't see this.", + "price": 1500, + "price_postapoc": 1500, + "weight": "725 g", + "volume": "750 ml", + "material": [ "plastic" ], + "looks_like": "mre_beef_box", + "use_action": [ "DISASSEMBLE" ] + }, + { + "abstract": "mre_smallbox", + "type": "GENERIC", + "symbol": ")", + "color": "brown", + "name": { "str": "MRE small box", "str_pl": "MRE small boxes" }, + "category": "food", + "description": "A generic small MRE box, you shouldn't see this", + "price": 500, + "price_postapoc": 100, + "weight": "300 g", + "volume": "250 ml", + "material": [ "plastic" ], + "looks_like": "mre_beef_box", + "use_action": [ "DISASSEMBLE" ] + }, + { + "id": "mre_accessory", + "type": "GENERIC", + "copy-from": "mre_smallbox", + "name": { "str": "MRE - Accessory Pack", "str_pl": "MREs - Accessory Packs" }, + "description": "An MRE accessory pack containing a variety of utensils and drinks. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_dessert", + "type": "GENERIC", + "copy-from": "mre_smallbox", + "name": { "str": "MRE - Dessert Pack", "str_pl": "MREs - Dessert Packs" }, + "description": "A sealed plastic bag containing an array of desserts. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_chilibeans_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Chili & Beans", "str_pl": "MREs - Chili & Beans" }, + "description": "A 'Meal Ready to Eat' with a chili & beans entree and everything a vegetarian soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_bbqbeef_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - BBQ Beef", "str_pl": "MREs - BBQ Beef" }, + "description": "A 'Meal Ready to Eat' with a BBQ beef entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_chickennoodle_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Chicken & Noodles", "str_pl": "MREs - Chicken & Noodles" }, + "description": "A 'Meal Ready to Eat' with a chicken & noodles entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_spaghetti_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Spaghetti", "str_pl": "MREs - Spaghetti" }, + "description": "A 'Meal Ready to Eat' with a spaghetti entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", + "looks_like": "mre_veggy_box" + }, + { + "id": "mre_chicken_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Chicken Chunks", "str_pl": "MREs - Chicken Chunks" }, + "description": "A 'Meal Ready to Eat' with a chicken chunk entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_beeftaco_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Beef Taco", "str_pl": "MREs - Beef Taco" }, + "description": "A 'Meal Ready to Eat' with a beef taco entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_beef_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Beef Brisket", "str_pl": "MREs - Beef Brisket" }, + "description": "A 'Meal Ready to Eat' with a beef brisket entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_meatball_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Meatballs & Marinara", "str_pl": "MREs - Meatballs & Marinara" }, + "description": "A 'Meal Ready to Eat' with a meatball entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_beefstew_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Beef Stew", "str_pl": "MREs - Beef Stew" }, + "description": "A 'Meal Ready to Eat' with a beef stew entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_chilimac_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Chili & Macaroni", "str_pl": "MREs - Chili & Macaroni" }, + "description": "A 'Meal Ready to Eat' with a chili & macaroni entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", + "looks_like": "mre_veggy_box" + }, + { + "id": "mre_veggy_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Vegetarian Taco", "str_pl": "MREs - Vegetarian Taco" }, + "description": "A 'Meal Ready to Eat' with a vegetarian taco entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_macaronimarinara_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Macaroni Marinara", "str_pl": "MREs - Macaroni Marinara" }, + "description": "A 'Meal Ready to Eat' with a macaroni marinara entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", + "looks_like": "mre_veggy_box" + }, + { + "id": "mre_sfettuccine_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Spinach Fettuccine", "str_pl": "MREs - Spinach Fettuccine" }, + "description": "A 'Meal Ready to Eat' with a creamy spinach fettuccine entree and everything a vegetarian soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", + "looks_like": "mre_veggy_box" + }, + { + "id": "mre_ratatouille_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Ratatouille", "str_pl": "MREs - Ratatouille" }, + "description": "A 'Meal Ready to Eat' with a ratatouille entree and everything a vegetarian soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", + "looks_like": "mre_veggy_box" + }, + { + "id": "mre_cheesetort_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Cheese Tortellini", "str_pl": "MREs - Cheese Tortellini" }, + "description": "A 'Meal Ready to Eat' with a cheese tortellini entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", + "looks_like": "mre_veggy_box" + }, + { + "id": "mre_mushroomfettuccine_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Mushroom Fettuccine", "str_pl": "MREs - Mushroom Fettuccine" }, + "description": "A 'Meal Ready to Eat' with a mushroom fettuccine entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", + "looks_like": "mre_veggy_box" + }, + { + "id": "mre_mexicanchickenstew_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Mexican Chicken Stew", "str_pl": "MREs - Mexican Chicken Stew" }, + "description": "A 'Meal Ready to Eat' with a Mexican chicken stew entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", + "looks_like": "mre_beef_box" + }, + { + "id": "mre_chickenburritobowl_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Chicken Burrito Bowl", "str_pl": "MREs - Chicken Burrito Bowl" }, + "description": "A 'Meal Ready to Eat' with a chicken burrito bowl entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_maplesausage_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Maple Sausage", "str_pl": "MREs - Maple Sausage" }, + "description": "A 'Meal Ready to Eat' with a maple sausage entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_ravioli_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Ravioli", "str_pl": "MREs - Ravioli" }, + "description": "A 'Meal Ready to Eat' with a ravioli entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_pepperjackbeef_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Pepper Jack Beef", "str_pl": "MREs - Pepper Jack Beef" }, + "description": "A 'Meal Ready to Eat' with a pepper jack beef entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_hashbrownbacon_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Hash Browns & Bacon", "str_pl": "MREs - Hash Browns & Bacon" }, + "description": "A 'Meal Ready to Eat' with a hash browns & bacon entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_lemontuna_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Lemon Pepper Tuna", "str_pl": "MREs - Lemon Pepper Tuna" }, + "description": "A 'Meal Ready to Eat' with a lemon pepper tuna entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_asianbeef_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Asian Beef & Vegetables", "str_pl": "MREs - Asian Beef & Vegetables" }, + "description": "A 'Meal Ready to Eat' with an asian beef & vegetables entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_chickenpesto_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Chicken Pesto & Pasta", "str_pl": "MREs - Chicken Pesto & Pasta" }, + "description": "A 'Meal Ready to Eat' with a chicken pesto entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_southwestbeef_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Southwest Beef & Beans", "str_pl": "MREs - Southwest Beef & Beans" }, + "description": "A 'Meal Ready to Eat' with a southwest beef & beans entree and everything a hungry soldier needs. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents." + }, + { + "id": "mre_hotdog_box", + "type": "GENERIC", + "copy-from": "mre_box", + "name": { "str": "MRE - Frankfurters & Beans", "str_pl": "MREs - Frankfurters & Beans" }, + "description": "A vintage MRE, still perfectly preserved and edible. The contents will begin to rot once they're removed from this sealed bag. Activate or disassemble it to get to its contents.", + "price": 1000 + }, { "id": "survival_kit", "type": "GENERIC", @@ -522,6 +766,86 @@ "ammo_effects": [ "LASER", "INCENDIARY" ], "flags": [ "NO_UNLOAD" ] }, + { + "id": "aep_suit", + "type": "ARMOR", + "category": "armor", + "name": { "str": "AEP suit" }, + "description": "An armored environmental protection suit. Custom-built from a cleansuit and body armor, it provides excellent protection against both physical harm and ambient radiation.", + "weight": "7200 g", + "volume": "9 L", + "price": 140000, + "price_postapoc": 6000, + "material": [ "kevlar_layered", "plastic" ], + "symbol": "[", + "looks_like": "hazmat_suit", + "color": "light_red", + "armor": [ + { "covers": [ "torso" ], "coverage": 100, "encumbrance": [ 10, 15 ] }, + { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": [ 10, 15 ] }, + { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": [ 10, 10 ] } + ], + "pocket_data": [ + { + "pocket_type": "CONTAINER", + "max_contains_volume": "1 L", + "max_contains_weight": "3 kg", + "max_item_length": "18 cm", + "moves": 80 + }, + { + "pocket_type": "CONTAINER", + "max_contains_volume": "1 L", + "max_contains_weight": "3 kg", + "max_item_length": "18 cm", + "moves": 80 + }, + { + "pocket_type": "CONTAINER", + "max_contains_volume": "1 L", + "max_contains_weight": "3 kg", + "max_item_length": "18 cm", + "moves": 80 + }, + { + "pocket_type": "CONTAINER", + "max_contains_volume": "1 L", + "max_contains_weight": "3 kg", + "max_item_length": "18 cm", + "moves": 80 + } + ], + "warmth": 35, + "material_thickness": 7, + "environmental_protection": 9, + "flags": [ "VARSIZE", "WATERPROOF", "HOOD", "RAINPROOF", "STURDY", "RAD_RESIST", "OUTER" ] + }, + { + "id": "anbc_suit", + "type": "ARMOR", + "category": "armor", + "name": { "str": "ANBC suit" }, + "description": "An armored, impermeable full-body suit that functions as body armor, as well as protecting from nuclear, biological, and chemical hazards. It requires a separate gas mask for full protection.", + "weight": "8700 g", + "volume": "20 L", + "price": 400000, + "price_postapoc": 9000, + "material": [ "kevlar_layered", "plastic" ], + "symbol": "[", + "looks_like": "hazmat_suit", + "color": "light_red", + "warmth": 50, + "material_thickness": 7, + "environmental_protection": 20, + "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "GAS_PROOF", "STURDY", "RAD_PROOF", "ELECTRIC_IMMUNE", "OUTER" ], + "armor": [ + { + "encumbrance": 35, + "coverage": 100, + "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] + }, { "id": "armguard_bone", "type": "ARMOR", @@ -535,13 +859,11 @@ "material": [ "bone", "leather" ], "symbol": "[", "color": "white", - "covers": [ "arm_l", "arm_r" ], - "coverage": 95, - "encumbrance": 22, "warmth": 20, "material_thickness": 4, "environmental_protection": 1, - "flags": [ "STURDY", "BELTED", "BLOCK_WHILE_WORN", "WATER_FRIENDLY" ] + "flags": [ "STURDY", "BELTED", "BLOCK_WHILE_WORN", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 22, "coverage": 95, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "armor_bone", @@ -557,12 +879,10 @@ "material": [ "bone", "leather" ], "symbol": "[", "color": "white", - "covers": [ "torso", "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 24, "warmth": 20, "material_thickness": 4, - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": 24, "coverage": 95, "covers": [ "torso", "leg_l", "leg_r" ] } ] }, { "id": "gauntlets_bone", @@ -578,13 +898,11 @@ "material": [ "bone", "leather" ], "symbol": "[", "color": "white", - "covers": [ "hand_l", "hand_r" ], - "coverage": 95, - "encumbrance": 15, "warmth": 20, "material_thickness": 4, "environmental_protection": 4, - "flags": [ "STURDY" ] + "flags": [ "STURDY" ], + "armor": [ { "encumbrance": 15, "coverage": 95, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "helmet_bone", @@ -600,13 +918,11 @@ "material": [ "bone" ], "symbol": "[", "color": "white", - "covers": [ "head", "eyes", "mouth" ], - "coverage": 100, - "encumbrance": 25, "warmth": 10, "material_thickness": 5, "environmental_protection": 3, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 25, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ] }, { "id": "matchbomb", @@ -1708,14 +2024,12 @@ "symbol": "[", "looks_like": "helmet_army", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 100, - "encumbrance": 25, "warmth": 15, "material_thickness": 5, "environmental_protection": 3, "techniques": [ "WBLOCK_1" ], - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 25, "coverage": 100, "covers": [ "head" ] } ] }, { "id": "helmet_xlsurvivor", @@ -1732,14 +2046,12 @@ "symbol": "[", "looks_like": "helmet_survivor", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 100, - "encumbrance": 50, "warmth": 15, "material_thickness": 4, "environmental_protection": 3, "techniques": [ "WBLOCK_1" ], - "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 50, "coverage": 100, "covers": [ "head" ] } ] }, { "id": "helmet_hsurvivor", @@ -1756,14 +2068,12 @@ "symbol": "[", "looks_like": "helmet_survivor", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 100, - "encumbrance": 40, "warmth": 25, "material_thickness": 6, "environmental_protection": 5, "techniques": [ "WBLOCK_1" ], - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 40, "coverage": 100, "covers": [ "head" ] } ] }, { "id": "l_bak_223", @@ -1991,12 +2301,10 @@ "material": [ "glass", "steel" ], "symbol": "[", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 12, "material_thickness": 3, "use_action": [ "SOLARPACK" ], - "flags": [ "FRAGILE", "OUTER", "ONLY_ONE", "SOLARPACK" ] + "flags": [ "FRAGILE", "OUTER", "ONLY_ONE", "SOLARPACK" ], + "armor": [ { "encumbrance": 12, "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "q_solarpack_on", @@ -2012,13 +2320,11 @@ "material": [ "glass", "steel" ], "symbol": "[", "color": "blue", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 20, "material_thickness": 1, "use_action": [ "SOLARPACK_OFF" ], "solar_efficiency": 0.3, - "flags": [ "FRAGILE", "OUTER", "ONLY_ONE", "SOLARPACK_ON" ] + "flags": [ "FRAGILE", "OUTER", "ONLY_ONE", "SOLARPACK_ON" ], + "armor": [ { "encumbrance": 20, "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "tihar", @@ -2383,13 +2689,11 @@ "symbol": "[", "looks_like": "modularvestkevlar", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 85, - "encumbrance": 7, "warmth": 15, "material_thickness": 4, "use_action": { "type": "holster", "holster_prompt": "Stash ammo", "holster_msg": "You stash your %s." }, - "flags": [ "STURDY", "OUTER" ] + "flags": [ "STURDY", "OUTER" ], + "armor": [ { "encumbrance": 7, "coverage": 85, "covers": [ "torso" ] } ] }, { "id": "modularvestceramic", @@ -2407,13 +2711,11 @@ "symbol": "[", "looks_like": "modularvestkevlar", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 85, - "encumbrance": 15, "warmth": 15, "material_thickness": 9, "use_action": { "type": "holster", "holster_prompt": "Stash ammo", "holster_msg": "You stash your %s." }, - "flags": [ "STURDY", "OUTER" ] + "flags": [ "STURDY", "OUTER" ], + "armor": [ { "encumbrance": 15, "coverage": 85, "covers": [ "torso" ] } ] }, { "id": "modularvesthard", @@ -2431,13 +2733,11 @@ "symbol": "[", "looks_like": "modularvestkevlar", "color": "light_cyan", - "covers": [ "torso" ], - "coverage": 85, - "encumbrance": 25, "warmth": 15, "material_thickness": 5, "use_action": { "type": "holster", "holster_prompt": "Stash ammo", "holster_msg": "You stash your %s." }, - "flags": [ "STURDY", "OUTER" ] + "flags": [ "STURDY", "OUTER" ], + "armor": [ { "encumbrance": 25, "coverage": 85, "covers": [ "torso" ] } ] }, { "id": "modularvestkevlar", @@ -2455,13 +2755,11 @@ "symbol": "[", "looks_like": "vest", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 85, - "encumbrance": 12, "warmth": 15, "material_thickness": 6, "use_action": { "type": "holster", "holster_prompt": "Stash ammo", "holster_msg": "You stash your %s." }, - "flags": [ "STURDY", "OUTER" ] + "flags": [ "STURDY", "OUTER" ], + "armor": [ { "encumbrance": 12, "coverage": 85, "covers": [ "torso" ] } ] }, { "id": "modularveststeel", @@ -2479,13 +2777,11 @@ "symbol": "[", "looks_like": "modularvestkevlar", "color": "light_cyan", - "covers": [ "torso" ], - "coverage": 85, - "encumbrance": 20, "warmth": 15, "material_thickness": 7, "use_action": { "type": "holster", "holster_prompt": "Stash ammo", "holster_msg": "You stash your %s." }, - "flags": [ "STURDY", "OUTER" ] + "flags": [ "STURDY", "OUTER" ], + "armor": [ { "encumbrance": 20, "coverage": 85, "covers": [ "torso" ] } ] }, { "id": "modularvestsuper", @@ -2503,13 +2799,11 @@ "symbol": "[", "looks_like": "modularvestkevlar", "color": "light_cyan", - "covers": [ "torso" ], - "coverage": 85, - "encumbrance": 15, "warmth": 15, "material_thickness": 6, "use_action": { "type": "holster", "holster_prompt": "Stash ammo", "holster_msg": "You stash your %s." }, - "flags": [ "STURDY", "OUTER" ] + "flags": [ "STURDY", "OUTER" ], + "armor": [ { "encumbrance": 15, "coverage": 85, "covers": [ "torso" ] } ] }, { "type": "AMMO", @@ -2841,7 +3135,7 @@ "volume": "3500 ml", "price_postapoc": 5000, "bashing": 12, - "armor_data": { "covers": [ "torso" ], "coverage": 5, "material_thickness": 1, "encumbrance": 20 }, + "armor_data": { "material_thickness": 1, "armor": [ { "encumbrance": 20, "coverage": 5, "covers": [ "torso" ] } ] }, "reload_noise_volume": 3, "loudness": 8, "ranged_damage": { "damage_type": "stab", "amount": 10 }, diff --git a/data/json/items/ranged/archery.json b/data/json/items/ranged/archery.json index b7e84025764cc..00cfc88add9a9 100644 --- a/data/json/items/ranged/archery.json +++ b/data/json/items/ranged/archery.json @@ -399,7 +399,7 @@ "longest_side": "140 cm", "price_postapoc": 50, "bashing": 6, - "armor_data": { "covers": [ "torso" ], "coverage": 5, "material_thickness": 1, "encumbrance": 20 }, + "armor_data": { "material_thickness": 1, "armor": [ { "encumbrance": 20, "coverage": 5, "covers": [ "torso" ] } ] }, "ranged_damage": { "damage_type": "stab", "amount": 1 }, "range": 8, "dispersion": 1250, @@ -437,7 +437,7 @@ "longest_side": "132 cm", "price_postapoc": 500, "bashing": 6, - "armor_data": { "covers": [ "torso" ], "coverage": 5, "material_thickness": 1, "encumbrance": 14 }, + "armor_data": { "material_thickness": 1, "armor": [ { "encumbrance": 14, "coverage": 5, "covers": [ "torso" ] } ] }, "reload_noise_volume": 3, "loudness": 6, "ranged_damage": { "damage_type": "stab", "amount": 4 }, @@ -551,7 +551,7 @@ "longest_side": "152 cm", "price_postapoc": 3000, "bashing": 8, - "armor_data": { "covers": [ "torso" ], "coverage": 5, "material_thickness": 1, "encumbrance": 14 }, + "armor_data": { "material_thickness": 1, "armor": [ { "encumbrance": 14, "coverage": 5, "covers": [ "torso" ] } ] }, "reload_noise_volume": 3, "loudness": 6, "ranged_damage": { "damage_type": "stab", "amount": 8 }, @@ -592,7 +592,7 @@ "longest_side": "183 cm", "price_postapoc": 2000, "bashing": 12, - "armor_data": { "covers": [ "torso" ], "coverage": 5, "material_thickness": 1, "encumbrance": 14 }, + "armor_data": { "material_thickness": 1, "armor": [ { "encumbrance": 14, "coverage": 5, "covers": [ "torso" ] } ] }, "reload_noise_volume": 3, "loudness": 6, "ranged_damage": { "damage_type": "stab", "amount": 6 }, @@ -633,7 +633,7 @@ "longest_side": "152 cm", "price_postapoc": 2000, "bashing": 12, - "armor_data": { "covers": [ "torso" ], "coverage": 5, "material_thickness": 1, "encumbrance": 20 }, + "armor_data": { "material_thickness": 1, "armor": [ { "encumbrance": 20, "coverage": 5, "covers": [ "torso" ] } ] }, "reload_noise_volume": 3, "loudness": 8, "ranged_damage": { "damage_type": "stab", "amount": 6 }, @@ -673,7 +673,7 @@ "longest_side": "183 cm", "price_postapoc": 3000, "bashing": 10, - "armor_data": { "covers": [ "torso" ], "coverage": 5, "material_thickness": 1, "encumbrance": 20 }, + "armor_data": { "material_thickness": 1, "armor": [ { "encumbrance": 20, "coverage": 5, "covers": [ "torso" ] } ] }, "reload_noise_volume": 3, "loudness": 8, "ranged_damage": { "damage_type": "stab", "amount": 6 }, @@ -697,7 +697,7 @@ "volume": "6250 ml", "longest_side": "198 cm", "price_postapoc": 2000, - "armor_data": { "covers": [ "torso" ], "coverage": 7, "material_thickness": 2, "encumbrance": 25 }, + "armor_data": { "material_thickness": 2, "armor": [ { "encumbrance": 25, "coverage": 7, "covers": [ "torso" ] } ] }, "durability": 8, "loudness": 16, "ranged_damage": { "damage_type": "stab", "amount": 11 }, @@ -764,7 +764,7 @@ "longest_side": "150 cm", "price_postapoc": 6000, "bashing": 12, - "armor_data": { "covers": [ "torso" ], "coverage": 5, "material_thickness": 1, "encumbrance": 14 }, + "armor_data": { "material_thickness": 1, "armor": [ { "encumbrance": 14, "coverage": 5, "covers": [ "torso" ] } ] }, "reload_noise_volume": 3, "loudness": 8, "ranged_damage": { "damage_type": "stab", "amount": 5 }, diff --git a/data/json/items/ranged/slings.json b/data/json/items/ranged/slings.json index 64c185dbb10e3..aa587fa1243fb 100644 --- a/data/json/items/ranged/slings.json +++ b/data/json/items/ranged/slings.json @@ -53,7 +53,7 @@ }, { "id": "staff_sling", - "looks_like": "slingshot", + "looks_like": "quarterstaff", "type": "GUN", "symbol": "(", "color": "brown", @@ -67,7 +67,6 @@ "NEVER_JAMS", "PRIMITIVE_RANGED_WEAPON", "BELTED", - "DURABLE_MELEE", "NONCONDUCTIVE", "SHEATH_SPEAR", "ALWAYS_TWOHAND", @@ -77,13 +76,13 @@ "techniques": [ "WBLOCK_2", "RAPID", "SWEEP" ], "skill": "throw", "ammo": [ "rock" ], - "weight": "2000 g", - "volume": "3 L", + "weight": "1600 g", + "volume": "1650 ml", "longest_side": "180 cm", "price_postapoc": 250, "to_hit": 1, "ranged_damage": { "damage_type": "bullet", "amount": 10 }, - "bashing": 18, + "bashing": 23, "range": 10, "dispersion": 200, "durability": 8, diff --git a/data/json/items/resources/metal.json b/data/json/items/resources/metal.json index a1496900e4f17..90d264cbc2e5c 100644 --- a/data/json/items/resources/metal.json +++ b/data/json/items/resources/metal.json @@ -304,8 +304,9 @@ "price": 1000, "price_postapoc": 10, "material": [ "copper" ], - "weight": "50 g", - "volume": "62 ml", + "//": "Density of 8.63g/cm³ = 431.5g/50ml ~ 432g", + "volume": "50 ml", + "weight": "432 g", "bashing": 1, "to_hit": -2 }, @@ -343,5 +344,23 @@ "//": "Density ~ 8g/cm³ ~ 2000kg/250ml @ stack 1000 = 2g/unit", "ammo_type": "components", "count": 200 + }, + { + "type": "AMMO", + "id": "copper_rod", + "category": "spare_parts", + "price": 2000, + "price_postapoc": 20, + "name": { "str": "copper rod" }, + "symbol": "=", + "color": "light_gray", + "description": "A thin copper rod, ready to be made into copper wire.", + "material": [ "copper" ], + "//": "9mm in diameter and 1.572m long.", + "volume": "100 ml", + "weight": "863 g", + "longest_side": "1572 mm", + "ammo_type": "components", + "count": 1 } ] diff --git a/data/json/items/resources/plastic.json b/data/json/items/resources/plastic.json index d1cc9c7d0da83..7e3a7277c5d8d 100644 --- a/data/json/items/resources/plastic.json +++ b/data/json/items/resources/plastic.json @@ -64,6 +64,21 @@ "color": "light_blue", "use_action": { "type": "deploy_furn", "furn_type": "f_plastic_groundsheet" } }, + { + "id": "polycarbonate_sheet", + "type": "GENERIC", + "category": "spare_parts", + "name": { "str": "polycarbonate sheet" }, + "description": "This is a stack of polycarbonate sheets that can be used for, among other things, vacuum molding.", + "weight": "250 g", + "volume": "500 ml", + "price": 0, + "price_postapoc": 25, + "material": [ "plastic" ], + "symbol": ")", + "color": "light_blue", + "use_action": { "type": "deploy_furn", "furn_type": "f_plastic_groundsheet" } + }, { "id": "rigid_plastic_sheet", "type": "GENERIC", diff --git a/data/json/items/resources/stone.json b/data/json/items/resources/stone.json index 76f74ce2a7aa7..7608c5f9e57b6 100644 --- a/data/json/items/resources/stone.json +++ b/data/json/items/resources/stone.json @@ -5,7 +5,7 @@ "symbol": "*", "color": "light_gray", "name": { "str": "flaking rock" }, - "description": "A rock the size of a baseball, which chips in a semi-predictable way if stuck, leaving a sharp edge. Makes a decent melee weapon, and is also good for throwing at enemies.", + "description": "A rock the size of a baseball, which chips in a semi-predictable way if struck, leaving a sharp edge. Makes a decent melee weapon, and is also good for throwing at enemies.", "category": "spare_parts", "material": [ "stone" ], "ammo_type": "rock", diff --git a/data/json/items/tool/metalworking.json b/data/json/items/tool/metalworking.json index ecce3299045f6..94d1fe05522d4 100644 --- a/data/json/items/tool/metalworking.json +++ b/data/json/items/tool/metalworking.json @@ -294,5 +294,20 @@ "symbol": "`", "color": "brown", "qualities": [ [ "FILE", 1 ] ] + }, + { + "id": "draw_plate", + "type": "TOOL", + "name": { "str": "draw plate" }, + "description": "A piece of metal with holes of varying size drilled into it. Used as part of wire drawing.", + "weight": "200 g", + "volume": "250 ml", + "price": 1000, + "price_postapoc": 10, + "bashing": 5, + "to_hit": -3, + "material": [ "steel" ], + "symbol": "]", + "color": "light_cyan" } ] diff --git a/data/json/items/tool/misc.json b/data/json/items/tool/misc.json index c6f851e5ba728..e64c0cafd7307 100644 --- a/data/json/items/tool/misc.json +++ b/data/json/items/tool/misc.json @@ -726,14 +726,12 @@ "material": [ "plastic", "aluminum" ], "symbol": ",", "color": "dark_gray", - "covers": [ "hand_l", "hand_r" ], "sided": true, - "coverage": 5, - "encumbrance": 40, "warmth": 0, "material_thickness": 1, "techniques": [ "WBLOCK_1" ], - "flags": [ "ALLOWS_NATURAL_ATTACKS", "BELT_CLIP", "BELTED", "FRAGILE", "OVERSIZE", "RAIN_PROTECT" ] + "flags": [ "ALLOWS_NATURAL_ATTACKS", "BELT_CLIP", "BELTED", "FRAGILE", "OVERSIZE", "RAIN_PROTECT" ], + "armor": [ { "encumbrance": 40, "coverage": 5, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "testflames", diff --git a/data/json/items/tool/musical_instruments.json b/data/json/items/tool/musical_instruments.json index 1bb367726d3ab..50feec8d572a6 100644 --- a/data/json/items/tool/musical_instruments.json +++ b/data/json/items/tool/musical_instruments.json @@ -245,7 +245,6 @@ "category": "tools", "weight": "200 g", "color": "brown", - "covers": [ "head" ], "use_action": { "type": "musical_instrument", "speed_penalty": 10, @@ -264,7 +263,8 @@ "volume": "250 ml", "longest_side": "18 cm", "flags": [ "BELTED", "SLEEP_IGNORE" ], - "material_thickness": 1 + "material_thickness": 1, + "armor": [ { "covers": [ "head" ] } ] }, { "type": "TOOL_ARMOR", @@ -273,7 +273,6 @@ "category": "tools", "weight": "2200 g", "color": "brown", - "covers": [ "torso" ], "to_hit": 2, "use_action": { "type": "musical_instrument", @@ -297,11 +296,10 @@ "volume": "6750 ml", "longest_side": "97 cm", "warmth": 2, - "encumbrance": 27, "bashing": 8, "flags": [ "BELTED", "SLEEP_IGNORE" ], - "coverage": 10, - "material_thickness": 2 + "material_thickness": 2, + "armor": [ { "encumbrance": 27, "coverage": 10, "covers": [ "torso" ] } ] }, { "type": "TOOL_ARMOR", @@ -310,7 +308,6 @@ "category": "tools", "weight": "3750 g", "color": "red", - "covers": [ "torso" ], "to_hit": 2, "use_action": { "type": "musical_instrument", @@ -339,11 +336,10 @@ "volume": "6750 ml", "longest_side": "97 cm", "warmth": 2, - "encumbrance": 27, "bashing": 8, "flags": [ "BELTED", "SLEEP_IGNORE" ], - "coverage": 10, - "material_thickness": 2 + "material_thickness": 2, + "armor": [ { "encumbrance": 27, "coverage": 10, "covers": [ "torso" ] } ] }, { "type": "TOOL_ARMOR", @@ -352,7 +348,6 @@ "category": "tools", "weight": "2500 g", "color": "green", - "covers": [ "torso" ], "to_hit": -2, "use_action": { "type": "musical_instrument", @@ -379,11 +374,10 @@ "material": [ "leather", "wood" ], "volume": "5 L", "longest_side": "65 cm", - "encumbrance": 15, "bashing": 4, "flags": [ "BELTED", "SLEEP_IGNORE" ], - "coverage": 10, - "material_thickness": 2 + "material_thickness": 2, + "armor": [ { "encumbrance": 15, "coverage": 10, "covers": [ "torso" ] } ] }, { "type": "TOOL_ARMOR", @@ -392,7 +386,6 @@ "category": "tools", "weight": "13600 g", "color": "yellow", - "covers": [ "torso" ], "flags": [ "BELTED", "SLEEP_IGNORE" ], "to_hit": -1, "use_action": { @@ -415,10 +408,9 @@ "material": [ "iron" ], "volume": "12500 ml", "longest_side": "107 cm", - "encumbrance": 30, "bashing": 13, - "coverage": 20, - "material_thickness": 4 + "material_thickness": 4, + "armor": [ { "encumbrance": 30, "coverage": 20, "covers": [ "torso" ] } ] }, { "type": "TOOL_ARMOR", @@ -427,7 +419,6 @@ "category": "tools", "weight": "2200 g", "color": "yellow", - "covers": [ "torso" ], "flags": [ "BELTED", "SLEEP_IGNORE" ], "to_hit": 1, "use_action": { @@ -455,9 +446,8 @@ "material": [ "brass" ], "volume": "4500 ml", "longest_side": "70 cm", - "encumbrance": 30, "bashing": 12, - "coverage": 20, - "material_thickness": 4 + "material_thickness": 4, + "armor": [ { "encumbrance": 30, "coverage": 20, "covers": [ "torso" ] } ] } ] diff --git a/data/json/items/tool/shelters.json b/data/json/items/tool/shelters.json index 156dd13b968a7..3b529ec9613da 100644 --- a/data/json/items/tool/shelters.json +++ b/data/json/items/tool/shelters.json @@ -6,6 +6,7 @@ "description": "This is a small shelter, made of sticks and skins. Use it to place. This shelter has been damaged, and needs repairs.", "weight": "1360 g", "volume": "7500 ml", + "longest_side": "90 cm", "price": 2000, "price_postapoc": 50, "to_hit": -3, @@ -21,6 +22,7 @@ "description": "This is a family sized tent. It provides a large amount of space, but is very bulky.", "weight": "2266 g", "volume": "10 L", + "longest_side": "90 cm", "price": 50000, "price_postapoc": 1500, "to_hit": -3, @@ -46,6 +48,7 @@ "description": "This is a small shelter, made of sticks and skins. Use it to place.", "weight": "1360 g", "volume": "7500 ml", + "longest_side": "90 cm", "price": 6500, "price_postapoc": 500, "to_hit": -3, @@ -70,6 +73,7 @@ "description": "This is a small personal tent, it's just big enough to fit you comfortably.", "weight": "1133 g", "volume": "2500 ml", + "longest_side": "90 cm", "price": 15000, "price_postapoc": 1000, "to_hit": -3, @@ -86,5 +90,20 @@ "door_opened": "f_canvas_door_o", "door_closed": "f_canvas_door" } + }, + { + "type": "GENERIC", + "id": "tent_pole", + "symbol": "/", + "color": "dark_gray", + "name": { "str": "aluminum tent pole" }, + "description": "A light collapsible tent pole made from aluminum, perfect for pitching a tent.", + "looks_like": "long_pole", + "material": [ "aluminum" ], + "weight": "225 g", + "volume": "100 ml", + "longest_side": "90 cm", + "bashing": 1, + "to_hit": -1 } ] diff --git a/data/json/items/tool/woodworking.json b/data/json/items/tool/woodworking.json index 6343db479c51c..3f30fe14f59fb 100644 --- a/data/json/items/tool/woodworking.json +++ b/data/json/items/tool/woodworking.json @@ -18,6 +18,24 @@ "techniques": [ "WBLOCK_1", "BRUTAL", "SWEEP" ], "flags": [ "NONCONDUCTIVE", "SHEATH_AXE" ] }, + { + "id": "bow_saw", + "type": "TOOL", + "name": { "str": "bow saw" }, + "description": "The bow saw is more at home outdoors than inside. Bow saws are used for trimming trees, pruning, and cutting firewood, but may be used for other rough cuts as well.", + "weight": "800 g", + "volume": "900 ml", + "longest_side": "40 cm", + "price": "30 USD", + "price_postapoc": "1 USD", + "to_hit": -2, + "cutting": 1, + "material": [ "steel", "plastic" ], + "symbol": "(", + "color": "red", + "qualities": [ [ "AXE", 2 ], [ "SAW_W", 2 ], [ "BUTCHER", -90 ] ], + "flags": [ "NONCONDUCTIVE", "BELT_CLIP" ] + }, { "id": "chainsaw_off", "type": "TOOL", diff --git a/data/json/items/tool/workshop.json b/data/json/items/tool/workshop.json index 5e67c927ca8ad..886538ce7ae0e 100644 --- a/data/json/items/tool/workshop.json +++ b/data/json/items/tool/workshop.json @@ -133,6 +133,62 @@ "symbol": ";", "color": "brown" }, + { + "id": "makeshift_vacuum_mold", + "type": "TOOL", + "name": { "str": "makeshift vacuum mold" }, + "description": "This is a homemade vacuum forming machine with an air pump. It's used for creating plastic molds.", + "weight": "2000 g", + "volume": "5 L", + "longest_side": "35 cm", + "price": 1000, + "price_postapoc": 250, + "to_hit": -1, + "bashing": 8, + "material": [ "plastic", "wood" ], + "symbol": ";", + "color": "white", + "ammo": [ "battery" ], + "flags": [ "ALLOWS_REMOTE_USE" ], + "pocket_data": [ + { + "pocket_type": "MAGAZINE_WELL", + "rigid": true, + "holster": true, + "max_contains_volume": "20 L", + "max_contains_weight": "20 kg", + "item_restriction": [ "medium_battery_cell", "medium_plus_battery_cell", "medium_atomic_battery_cell", "medium_disposable_cell" ] + } + ] + }, + { + "id": "vac_mold", + "type": "TOOL", + "name": { "str": "vacuum molder" }, + "description": "This is a portable vacuum forming machine with an air pump. It's used for creating plastic molds.", + "weight": "1770 g", + "volume": "4100 ml", + "longest_side": "35 cm", + "price": 2500, + "price_postapoc": 2000, + "to_hit": -1, + "bashing": 8, + "material": [ "aluminum", "plastic" ], + "symbol": ";", + "color": "white", + "ammo": [ "battery" ], + "flags": [ "ALLOWS_REMOTE_USE" ], + "pocket_data": [ + { + "pocket_type": "MAGAZINE_WELL", + "rigid": true, + "holster": true, + "max_contains_volume": "20 L", + "max_contains_weight": "20 kg", + "item_restriction": [ "medium_battery_cell", "medium_plus_battery_cell", "medium_atomic_battery_cell", "medium_disposable_cell" ] + } + ] + }, { "id": "chipper", "type": "TOOL", @@ -596,7 +652,7 @@ "id": "mold_plastic", "type": "TOOL", "name": { "str": "plastic mold" }, - "description": "This is a plastic mold. It could be shaped and used to craft items made of plastic.", + "description": "This is a plastic mold. It can be used to form plastic chunks.", "weight": "320 g", "volume": "2500 ml", "longest_side": "36 cm", @@ -1211,5 +1267,30 @@ "color": "light_gray", "looks_like": "hand_drill", "qualities": [ [ "DRILL", 1 ] ] + }, + { + "id": "wire_draw_machine", + "type": "TOOL", + "name": { "str": "wire draw machine" }, + "description": "A machine designed specifically for turning metal rods into wire.", + "weight": "26 kg", + "volume": "20 L", + "price": 1000, + "price_postapoc": 10, + "to_hit": -3, + "bashing": 7, + "material": [ "steel" ], + "symbol": ";", + "color": "light_gray", + "pocket_data": [ + { + "pocket_type": "MAGAZINE_WELL", + "holster": true, + "magazine_well": "200 ml", + "max_contains_volume": "20 L", + "max_contains_weight": "20 kg", + "item_restriction": [ "medium_battery_cell", "medium_plus_battery_cell", "medium_atomic_battery_cell", "medium_disposable_cell" ] + } + ] } ] diff --git a/data/json/items/tool_armor.json b/data/json/items/tool_armor.json index a0d6ddb7c26c8..d83343f5bbd6a 100644 --- a/data/json/items/tool_armor.json +++ b/data/json/items/tool_armor.json @@ -12,13 +12,11 @@ "symbol": "[", "looks_like": "armguard_hard", "color": "white", - "covers": [ "arm_l", "arm_r" ], "sided": true, - "coverage": 75, - "encumbrance": 70, "warmth": 5, "material_thickness": 1, - "flags": [ "WATER_FRIENDLY", "OUTER", "SPLINT" ] + "flags": [ "WATER_FRIENDLY", "OUTER", "SPLINT" ], + "armor": [ { "encumbrance": 70, "coverage": 75, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "arm_xlsplint", @@ -31,8 +29,8 @@ "volume": "2 L", "price": 25000, "price_postapoc": 50, - "encumbrance": 140, - "flags": [ "OVERSIZE", "WATER_FRIENDLY", "OUTER", "SPLINT" ] + "flags": [ "OVERSIZE", "WATER_FRIENDLY", "OUTER", "SPLINT" ], + "armor": [ { "encumbrance": 140 } ] }, { "id": "tourniquet_upper", @@ -47,14 +45,12 @@ "symbol": "{", "looks_like": "armguard_hard", "color": "red", - "covers": [ "arm_l", "arm_r" ], "sided": true, - "coverage": 10, - "encumbrance": 70, "warmth": 0, "material_thickness": 1, "use_action": { "target": "tourniquet_upper_XL", "msg": "You adjust the tourniquet.", "menu_text": "Adjust", "type": "transform" }, - "flags": [ "WATER_FRIENDLY", "OUTER", "TOURNIQUET" ] + "flags": [ "WATER_FRIENDLY", "OUTER", "TOURNIQUET" ], + "armor": [ { "encumbrance": 70, "coverage": 10, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "tourniquet_upper_XL", @@ -63,7 +59,6 @@ "description": "First aid device used to apply pressure to a limb or extremity in order to limit blood flow. Should be employed only to manage heavy bleedings, because prolonged use will harm the limb. It can be adjusted in size to fit different limbs.", "copy-from": "tourniquet_upper", "looks_like": "tourniquet_upper", - "covers": [ "arm_l", "arm_r" ], "sided": true, "use_action": { "target": "tourniquet_lower", "msg": "You adjust the tourniquet.", "menu_text": "Adjust", "type": "transform" }, "flags": [ "WATER_FRIENDLY", "OUTER", "TOURNIQUET", "OVERSIZE" ] @@ -75,10 +70,10 @@ "description": "First aid device used to apply pressure to a limb or extremity in order to limit blood flow. Should be employed only to manage heavy bleedings, because prolonged use will harm the limb. It can be adjusted in size to fit different limbs.", "copy-from": "tourniquet_upper", "looks_like": "tourniquet_upper", - "covers": [ "leg_l", "leg_r" ], "sided": true, "use_action": { "target": "tourniquet_lower_XL", "msg": "You adjust the tourniquet.", "menu_text": "Adjust", "type": "transform" }, - "flags": [ "WATER_FRIENDLY", "OUTER", "TOURNIQUET" ] + "flags": [ "WATER_FRIENDLY", "OUTER", "TOURNIQUET" ], + "armor": [ { "encumbrance": 70, "coverage": 10, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "tourniquet_lower_XL", @@ -87,11 +82,31 @@ "description": "First aid device used to apply pressure to a limb or extremity in order to limit blood flow. Should be employed only to manage heavy bleedings, because prolonged use will harm the limb. It can be adjusted in size to fit different limbs.", "copy-from": "tourniquet_upper", "looks_like": "tourniquet_upper", - "covers": [ "leg_l", "leg_r" ], "sided": true, "use_action": { "target": "tourniquet_upper", "msg": "You adjust the tourniquet.", "menu_text": "Adjust", "type": "transform" }, "flags": [ "WATER_FRIENDLY", "OUTER", "TOURNIQUET", "OVERSIZE" ] }, + { + "id": "makeshift_blindfold", + "type": "ARMOR", + "name": { "str": "makeshift blindfold" }, + "description": "A crude eye covering woven from blades of grass with string attached to fasten it. Useful for sleeping in bright areas.", + "weight": "32 g", + "volume": "200 ml", + "price": 5, + "price_postapoc": 1, + "material": [ "dry_plant" ], + "symbol": "[", + "looks_like": "scarf", + "color": "yellow", + "covers": [ "eyes" ], + "coverage": 95, + "encumbrance": 10, + "warmth": 0, + "material_thickness": 0.1, + "environmental_protection": 0, + "flags": [ "BLIND" ] + }, { "id": "blindfold", "type": "ARMOR", @@ -106,13 +121,11 @@ "symbol": "[", "looks_like": "scarf", "color": "dark_gray", - "covers": [ "eyes" ], - "coverage": 95, - "encumbrance": 10, "warmth": 5, "material_thickness": 0.1, "environmental_protection": 1, - "flags": [ "BLIND" ] + "flags": [ "BLIND" ], + "armor": [ { "encumbrance": 10, "coverage": 95, "covers": [ "eyes" ] } ] }, { "id": "blindfold_duct", @@ -128,13 +141,11 @@ "symbol": "[", "looks_like": "blindfold", "color": "dark_gray", - "covers": [ "eyes" ], - "coverage": 95, - "encumbrance": 10, "warmth": 0, "material_thickness": 1, "environmental_protection": 1, - "flags": [ "BLIND" ] + "flags": [ "BLIND" ], + "armor": [ { "encumbrance": 10, "coverage": 95, "covers": [ "eyes" ] } ] }, { "id": "ear_plugs", @@ -148,9 +159,9 @@ "material": [ "plastic" ], "symbol": ";", "color": "light_gray", - "coverage": 1, "material_thickness": 1, - "flags": [ "DEAF", "OVERSIZE", "POWERARMOR_COMPATIBLE" ] + "flags": [ "DEAF", "OVERSIZE", "POWERARMOR_COMPATIBLE" ], + "armor": [ { "coverage": 1 } ] }, { "id": "gobag", @@ -166,13 +177,11 @@ "symbol": "[", "looks_like": "duffelbag", "color": "green", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 50, - "encumbrance": 35, "warmth": 10, "material_thickness": 3, "flags": [ "BELTED", "WATER_FRIENDLY" ], - "use_action": { "type": "unpack", "group": "gobag_contents", "filthy_volume_threshold": "10 L" } + "use_action": { "type": "unpack", "group": "gobag_contents", "filthy_volume_threshold": "10 L" }, + "armor": [ { "encumbrance": 35, "coverage": 50, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "personal_gobag", @@ -197,13 +206,11 @@ "symbol": "[", "looks_like": "legguard_hard", "color": "white", - "covers": [ "leg_l", "leg_r" ], "sided": true, - "coverage": 75, - "encumbrance": 70, "warmth": 5, "material_thickness": 1, - "flags": [ "WATER_FRIENDLY", "OUTER", "SPLINT", "ALLOWS_TAIL" ] + "flags": [ "WATER_FRIENDLY", "OUTER", "SPLINT", "ALLOWS_TAIL" ], + "armor": [ { "encumbrance": 70, "coverage": 75, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "leg_xlsplint", @@ -215,8 +222,8 @@ "volume": "2 L", "price": 25000, "price_postapoc": 50, - "encumbrance": 140, - "flags": [ "OVERSIZE", "WATER_FRIENDLY", "OUTER", "SPLINT", "ALLOWS_TAIL" ] + "flags": [ "OVERSIZE", "WATER_FRIENDLY", "OUTER", "SPLINT", "ALLOWS_TAIL" ], + "armor": [ { "encumbrance": 140, "coverage": 75, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "miner_hat", @@ -243,11 +250,8 @@ "need_charges": 1, "need_charges_msg": "The helmet's batteries are dead." }, - "covers": [ "head" ], "techniques": [ "WBLOCK_1" ], "warmth": 5, - "encumbrance": 15, - "coverage": 80, "material_thickness": 4, "pocket_data": [ { @@ -266,7 +270,8 @@ "light_disposable_cell" ] } - ] + ], + "armor": [ { "encumbrance": 15, "coverage": 80, "covers": [ "head" ] } ] }, { "id": "miner_hat_on", @@ -279,7 +284,6 @@ "power_draw": 15000, "revert_to": "miner_hat", "use_action": { "menu_text": "Turn off", "type": "transform", "msg": "The %s flicks off.", "target": "miner_hat" }, - "covers": [ "head" ], "techniques": [ "WBLOCK_1" ] }, { @@ -297,13 +301,11 @@ "material": [ "plastic" ], "symbol": "[", "color": "dark_gray", - "covers": [ "head", "eyes", "mouth" ], - "coverage": 90, "warmth": 5, - "encumbrance": 60, "material_thickness": 3, "qualities": [ [ "GLARE", 3 ] ], - "flags": [ "SUN_GLASSES", "FLASH_PROTECTION" ] + "flags": [ "SUN_GLASSES", "FLASH_PROTECTION" ], + "armor": [ { "encumbrance": 60, "coverage": 90, "covers": [ "head", "eyes", "mouth" ] } ] }, { "id": "welding_mask_crude", @@ -324,13 +326,11 @@ "material": [ "steel" ], "symbol": "[", "color": "dark_gray", - "covers": [ "head", "eyes", "mouth" ], - "coverage": 90, "warmth": 5, - "encumbrance": 60, "material_thickness": 2, "qualities": [ [ "GLARE", 2 ] ], - "flags": [ "SUN_GLASSES", "FLASH_PROTECTION" ] + "flags": [ "SUN_GLASSES", "FLASH_PROTECTION" ], + "armor": [ { "encumbrance": 60, "coverage": 90, "covers": [ "head", "eyes", "mouth" ] } ] }, { "id": "welding_mask_crude_raised", @@ -351,11 +351,9 @@ "material": [ "steel" ], "symbol": "[", "color": "dark_gray", - "covers": [ "head" ], "warmth": 5, - "encumbrance": 60, "material_thickness": 2, - "coverage": 30 + "armor": [ { "encumbrance": 60, "coverage": 30, "covers": [ "head" ] } ] }, { "id": "welding_mask_raised", @@ -376,11 +374,9 @@ "material": [ "plastic" ], "symbol": "[", "color": "dark_gray", - "covers": [ "head" ], "warmth": 5, - "encumbrance": 60, "material_thickness": 3, - "coverage": 30 + "armor": [ { "encumbrance": 60, "coverage": 30, "covers": [ "head" ] } ] }, { "type": "TOOL_ARMOR", @@ -392,13 +388,11 @@ "weight": "112 g", "to_hit": -1, "color": "light_gray", - "covers": [ "hand_l", "hand_r" ], "sided": true, "price": 6000, "price_postapoc": 100, "material": [ "plastic" ], "flags": [ "WATCH", "ALARMCLOCK", "WATER_FRIENDLY", "BELTED", "FRAGILE", "ALLOWS_NATURAL_ATTACKS", "OVERSIZE" ], - "coverage": 15, "symbol": "[", "ammo": "battery", "charges_per_use": 1, @@ -412,7 +406,8 @@ "max_contains_weight": "20 kg", "item_restriction": [ "light_minus_battery_cell", "light_minus_atomic_battery_cell", "light_minus_disposable_cell" ] } - ] + ], + "armor": [ { "coverage": 15, "covers": [ "hand_l", "hand_r" ] } ] }, { "type": "TOOL_ARMOR", @@ -424,15 +419,14 @@ "weight": "30 g", "to_hit": -1, "color": "light_gray", - "covers": [ "hand_l", "hand_r" ], "sided": true, "price": 5000, "price_postapoc": 100, "material": [ "plastic" ], "flags": [ "WATCH", "WATER_FRIENDLY", "BELTED", "FRAGILE", "ALLOWS_NATURAL_ATTACKS", "OVERSIZE" ], - "coverage": 15, "symbol": "[", - "use_action": [ "FITNESS_CHECK" ] + "use_action": [ "FITNESS_CHECK" ], + "armor": [ { "coverage": 15, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "holo_cloak", @@ -447,9 +441,6 @@ "material": [ "superalloy" ], "symbol": "[", "color": "light_gray", - "covers": [ "torso", "head", "arm_l", "arm_r", "leg_l", "leg_r" ], - "coverage": 65, - "encumbrance": 10, "pocket_data": [ { "pocket_type": "MAGAZINE_WELL", @@ -466,7 +457,8 @@ "material_thickness": 0.5, "environmental_protection": 4, "use_action": [ "DIRECTIONAL_HOLOGRAM" ], - "flags": [ "OVERSIZE", "HOOD", "WATERPROOF", "OUTER" ] + "flags": [ "OVERSIZE", "HOOD", "WATERPROOF", "OUTER" ], + "armor": [ { "encumbrance": 10, "coverage": 65, "covers": [ "torso", "head", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] }, { "type": "TOOL_ARMOR", @@ -475,7 +467,6 @@ "name": { "str": "fedora" }, "weight": "350 g", "color": "brown", - "covers": [ "head" ], "use_action": { "menu_text": "Tip", "type": "transform", "target": "fedora", "msg": "You tip your %s." }, "symbol": "[", "description": "A high-crowned, wide-brimmed, sable colored fedora. Its brim helps keep the sun out of your eyes. The perfect hat for treasure hunting.", @@ -485,10 +476,9 @@ "volume": "1750 ml", "warmth": 7, "environmental_protection": 3, - "encumbrance": 10, - "coverage": 50, "flags": [ "FANCY", "VARSIZE", "SUN_GLASSES" ], - "material_thickness": 0.5 + "material_thickness": 0.5, + "armor": [ { "encumbrance": 10, "coverage": 50, "covers": [ "head" ] } ] }, { "id": "thermal_socks", @@ -514,9 +504,7 @@ "need_charges": 1, "need_charges_msg": "The %s's batteries are dead." }, - "covers": [ "foot_l", "foot_r" ], "warmth": 10, - "coverage": 100, "material_thickness": 0.3, "pocket_data": [ { @@ -535,7 +523,8 @@ "light_disposable_cell" ] } - ] + ], + "armor": [ { "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "thermal_socks_on", @@ -574,9 +563,7 @@ "need_charges": 1, "need_charges_msg": "The %s's batteries are dead." }, - "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], "warmth": 10, - "coverage": 100, "material_thickness": 0.1, "pocket_data": [ { @@ -595,7 +582,8 @@ "light_disposable_cell" ] } - ] + ], + "armor": [ { "coverage": 100, "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] }, { "id": "thermal_suit_on", @@ -634,9 +622,7 @@ "need_charges": 1, "need_charges_msg": "The %s's batteries are dead." }, - "covers": [ "hand_l", "hand_r" ], "warmth": 10, - "coverage": 100, "material_thickness": 0.3, "pocket_data": [ { @@ -655,7 +641,8 @@ "light_disposable_cell" ] } - ] + ], + "armor": [ { "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "thermal_gloves_on", @@ -694,9 +681,7 @@ "need_charges": 1, "need_charges_msg": "The %s's batteries are dead." }, - "covers": [ "head", "mouth" ], "warmth": 10, - "coverage": 100, "material_thickness": 0.3, "pocket_data": [ { @@ -715,7 +700,8 @@ "light_disposable_cell" ] } - ] + ], + "armor": [ { "coverage": 100, "covers": [ "head", "mouth" ] } ] }, { "id": "thermal_mask_on", @@ -747,10 +733,8 @@ "bashing": 4, "to_hit": -1, "use_action": { "type": "firestarter", "moves": 1000, "moves_slow": 25000, "need_sunlight": true }, - "covers": [ "torso" ], - "encumbrance": 2, - "coverage": 10, - "material_thickness": 2 + "material_thickness": 2, + "armor": [ { "encumbrance": 2, "coverage": 10, "covers": [ "torso" ] } ] }, { "id": "wearable_light", @@ -777,8 +761,6 @@ "need_charges": 1, "need_charges_msg": "The headlamp batteries are dead." }, - "covers": [ "head" ], - "coverage": 15, "material_thickness": 1, "pocket_data": [ { @@ -797,7 +779,8 @@ "light_disposable_cell" ] } - ] + ], + "armor": [ { "coverage": 15, "covers": [ "head" ] } ] }, { "id": "wearable_light_on", @@ -836,8 +819,6 @@ "need_charges": 1, "need_charges_msg": "The survivor headlamp batteries are dead." }, - "covers": [ "head" ], - "coverage": 20, "material_thickness": 1, "pocket_data": [ { @@ -856,7 +837,8 @@ "light_disposable_cell" ] } - ] + ], + "armor": [ { "coverage": 20, "covers": [ "head" ] } ] }, { "id": "survivor_light_on", @@ -893,10 +875,8 @@ "target": "wearable_atomic_light_off", "active": true }, - "covers": [ "head" ], - "encumbrance": 5, - "coverage": 20, - "material_thickness": 1 + "material_thickness": 1, + "armor": [ { "encumbrance": 5, "coverage": 20, "covers": [ "head" ] } ] }, { "id": "wearable_atomic_light_off", @@ -923,7 +903,7 @@ "weight": "5600 g", "volume": "4 L", "price": 150000, - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 20 }, { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 10 }, { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 15 } @@ -990,12 +970,16 @@ "ammo": "battery", "charges_per_use": 5, "use_action": [ "RM13ARMOR_OFF" ], - "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], "warmth": 30, "environmental_protection": 15, - "encumbrance": 30, - "coverage": 100, - "material_thickness": 2 + "material_thickness": 2, + "armor": [ + { + "encumbrance": 30, + "coverage": 100, + "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "rm13_armor_on", @@ -1024,9 +1008,15 @@ "revert_to": "rm13_armor", "use_action": [ "RM13ARMOR_ON" ], "environmental_protection": 40, - "encumbrance": 10, "qualities": [ [ "GLARE", 2 ] ], - "material_thickness": 5 + "material_thickness": 5, + "armor": [ + { + "encumbrance": 10, + "coverage": 100, + "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "dimensional_anchor", @@ -1061,12 +1051,10 @@ "need_charges": 1, "need_charges_msg": "It seems like this device needs power." }, - "covers": [ "torso" ], "warmth": 10, - "coverage": 50, - "encumbrance": 2, "material_thickness": 2, - "flags": [ "OVERSIZE", "BELTED" ] + "flags": [ "OVERSIZE", "BELTED" ], + "armor": [ { "encumbrance": 2, "coverage": 50, "covers": [ "torso" ] } ] }, { "id": "dimensional_anchor_on", @@ -1084,7 +1072,6 @@ "msg": "The %s LED light flickers off.", "target": "dimensional_anchor" }, - "covers": [ "torso" ], "flags": [ "DIMENSIONAL_ANCHOR", "OVERSIZE", "BELTED" ] }, { @@ -1135,12 +1122,9 @@ "need_charges": 1, "need_charges_msg": "Warning: Operating on minimal power. Protection compromised." }, - "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], "warmth": 30, "environmental_protection": 10, - "coverage": 100, "material_thickness": 2, - "encumbrance": 20, "flags": [ "RAD_PROOF", "STURDY", @@ -1152,6 +1136,13 @@ "ALARMCLOCK", "SWIM_GOGGLES", "SUN_GLASSES" + ], + "armor": [ + { + "encumbrance": 20, + "coverage": 100, + "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } ] }, { @@ -1165,7 +1156,6 @@ "turns_per_charge": 25, "revert_to": "phase_immersion_suit", "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "Suit shutting down.", "target": "phase_immersion_suit" }, - "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], "environmental_protection": 80, "flags": [ "RAD_PROOF", @@ -1213,12 +1203,10 @@ "need_charges": 1, "need_charges_msg": "The %s's filter is used up." }, - "covers": [ "mouth" ], "warmth": 10, "environmental_protection": 1, - "encumbrance": 30, - "coverage": 75, - "material_thickness": 1 + "material_thickness": 1, + "armor": [ { "encumbrance": 30, "coverage": 75, "covers": [ "mouth" ] } ] }, { "id": "rebreather_on", @@ -1232,7 +1220,7 @@ "revert_to": "rebreather", "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "Your %s deactivates.", "target": "rebreather" }, "environmental_protection": 15, - "encumbrance": 20 + "armor": [ { "encumbrance": 20, "coverage": 75, "covers": [ "mouth" ] } ] }, { "id": "rebreather_xl", @@ -1260,12 +1248,10 @@ "need_charges": 1, "need_charges_msg": "The %s's filter is used up." }, - "covers": [ "mouth" ], "warmth": 10, "environmental_protection": 1, - "encumbrance": 30, - "coverage": 75, - "material_thickness": 1 + "material_thickness": 1, + "armor": [ { "encumbrance": 30, "coverage": 75, "covers": [ "mouth" ] } ] }, { "id": "rebreather_xl_on", @@ -1278,9 +1264,8 @@ "turns_per_charge": 30, "revert_to": "rebreather_xl", "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "Your %s deactivates.", "target": "rebreather_xl" }, - "covers": [ "mouth" ], "environmental_protection": 15, - "encumbrance": 20 + "armor": [ { "encumbrance": 20, "coverage": 75, "covers": [ "mouth" ] } ] }, { "id": "mask_filter", @@ -1296,16 +1281,14 @@ "material": [ "plastic" ], "symbol": "[", "color": "light_gray", - "covers": [ "mouth" ], - "coverage": 100, - "encumbrance": 20, "warmth": 10, "material_thickness": 2, "environmental_protection": 1, "environmental_protection_with_filter": 7, "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "gasfilter_s": 100 } } ], "ammo": "gasfilter_s", - "use_action": [ "GASMASK" ] + "use_action": [ "GASMASK" ], + "armor": [ { "encumbrance": 20, "coverage": 100, "covers": [ "mouth" ] } ] }, { "id": "mask_gas", @@ -1322,7 +1305,7 @@ "material": [ "plastic" ], "symbol": "[", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 10 }, { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 30 } ], @@ -1348,7 +1331,7 @@ "material": [ "plastic" ], "symbol": "[", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 10 }, { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 30 } ], @@ -1375,7 +1358,7 @@ "material": [ "kevlar_layered", "nomex" ], "symbol": "[", "color": "light_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 10 }, { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 30 } ], @@ -1403,7 +1386,7 @@ "material": [ "kevlar_layered", "nomex" ], "symbol": "[", "color": "light_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 15 }, { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 35 } ], @@ -1439,7 +1422,7 @@ "warmth": 30, "environmental_protection": 1, "environmental_protection_with_filter": 16, - "armor_portion_data": [ + "armor": [ { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 10 }, { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 20 } ], @@ -1463,7 +1446,7 @@ "material": [ "kevlar_layered", "steel" ], "symbol": "[", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 10 }, { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 30 } ], @@ -1491,7 +1474,7 @@ "material": [ "kevlar_layered", "cotton" ], "symbol": "[", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 5 }, { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 20 } ], @@ -1519,7 +1502,7 @@ "material": [ "kevlar_layered", "leather" ], "symbol": "[", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 5 }, { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 25 } ], @@ -1547,7 +1530,7 @@ "material": [ "kevlar_layered", "plastic" ], "symbol": "[", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 10 }, { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 30 } ], @@ -1599,7 +1582,7 @@ "material": [ "kevlar_layered", "fur" ], "symbol": "[", "color": "light_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 5 }, { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 30 } ], @@ -1627,7 +1610,7 @@ "material": [ "kevlar_layered", "fur" ], "symbol": "[", "color": "light_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 10 }, { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 35 } ], @@ -1663,11 +1646,8 @@ "need_charges": 1, "need_charges_msg": "The %s's batteries are dead." }, - "covers": [ "eyes" ], "warmth": 10, "environmental_protection": 6, - "encumbrance": 40, - "coverage": 100, "material_thickness": 2, "pocket_data": [ { @@ -1686,7 +1666,8 @@ "light_disposable_cell" ] } - ] + ], + "armor": [ { "encumbrance": 40, "coverage": 100, "covers": [ "eyes" ] } ] }, { "id": "goggles_nv_on", @@ -1701,7 +1682,7 @@ "revert_to": "goggles_nv", "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "Your %s deactivates.", "target": "goggles_nv" }, "warmth": 25, - "encumbrance": 20 + "armor": [ { "encumbrance": 20, "coverage": 100, "covers": [ "eyes" ] } ] }, { "id": "goggles_ir", @@ -1728,11 +1709,8 @@ "need_charges": 1, "need_charges_msg": "The %s's batteries are dead." }, - "covers": [ "eyes" ], "warmth": 10, "environmental_protection": 6, - "encumbrance": 40, - "coverage": 100, "material_thickness": 2, "pocket_data": [ { @@ -1751,7 +1729,8 @@ "light_disposable_cell" ] } - ] + ], + "armor": [ { "encumbrance": 40, "coverage": 100, "covers": [ "eyes" ] } ] }, { "id": "goggles_ir_on", @@ -1764,9 +1743,8 @@ "power_draw": 1000, "revert_to": "goggles_ir", "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "Your %s deactivates.", "target": "goggles_ir" }, - "covers": [ "eyes" ], "warmth": 25, - "encumbrance": 20 + "armor": [ { "encumbrance": 20, "coverage": 100, "covers": [ "eyes" ] } ] }, { "id": "wearable_rx12", @@ -1835,7 +1813,7 @@ }, "warmth": 15, "environmental_protection": 10, - "armor_portion_data": [ + "armor": [ { "covers": [ "eyes" ], "coverage": 75, "encumbrance": 5 }, { "covers": [ "mouth" ], "coverage": 75, "encumbrance": 30 } ], @@ -1882,7 +1860,7 @@ }, "warmth": 15, "environmental_protection": 10, - "armor_portion_data": [ + "armor": [ { "covers": [ "eyes" ], "coverage": 75, "encumbrance": 10 }, { "covers": [ "mouth" ], "coverage": 75, "encumbrance": 30 } ], @@ -1932,11 +1910,10 @@ "to_hit": -3, "revert_to": "folding_poncho", "use_action": [ "PACK_ITEM" ], - "covers": [ "torso", "arm_l", "arm_r" ], "flags": [ "WATERPROOF", "RAINPROOF", "HOOD", "OVERSIZE", "OUTER" ], "environmental_protection": 1, - "coverage": 90, - "material_thickness": 0.1 + "material_thickness": 0.1, + "armor": [ { "coverage": 90, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "type": "TOOL", @@ -1969,13 +1946,17 @@ "to_hit": -3, "revert_to": "emer_blanket", "use_action": [ "PACK_ITEM" ], - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], "flags": [ "OVERSIZE", "OUTER", "ALLOWS_NATURAL_ATTACKS" ], "warmth": 50, "environmental_protection": 1, - "encumbrance": 50, - "coverage": 90, - "material_thickness": 0.1 + "material_thickness": 0.1, + "armor": [ + { + "encumbrance": 50, + "coverage": 90, + "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "rad_monitor", @@ -1994,9 +1975,7 @@ "charges_per_use": 1, "ammo": "battery", "use_action": [ "RADGLOVE" ], - "covers": [ "hand_l", "hand_r" ], "sided": true, - "coverage": 5, "material_thickness": 0.1, "flags": [ "BELTED", "FRAGILE", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY", "OVERSIZE" ], "pocket_data": [ @@ -2008,7 +1987,8 @@ "max_contains_weight": "20 kg", "item_restriction": [ "light_minus_battery_cell", "light_minus_atomic_battery_cell", "light_minus_disposable_cell" ] } - ] + ], + "armor": [ { "coverage": 5, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "hairpin", @@ -2053,14 +2033,13 @@ "price": 4500, "price_postapoc": 10, "material": [ "cotton" ], - "covers": [ "torso", "leg_l", "leg_r" ], "weight": "370 g", "volume": "500 ml", "to_hit": -1, "use_action": [ "TOWEL" ], "warmth": 10, - "coverage": 50, - "material_thickness": 0.3 + "material_thickness": 0.3, + "armor": [ { "coverage": 50, "covers": [ "torso", "leg_l", "leg_r" ] } ] }, { "id": "towel_wet", @@ -2073,15 +2052,14 @@ "price": 2000, "price_postapoc": 0, "material": [ "cotton" ], - "covers": [ "torso", "leg_l", "leg_r" ], "weight": "400 g", "volume": "500 ml", "to_hit": -1, "revert_to": "towel", "use_action": [ "TOWEL" ], "flags": [ "WET" ], - "coverage": 50, - "material_thickness": 0.3 + "material_thickness": 0.3, + "armor": [ { "coverage": 50, "covers": [ "torso", "leg_l", "leg_r" ] } ] }, { "type": "TOOL_ARMOR", @@ -2090,7 +2068,6 @@ "name": { "str": "straw fedora" }, "weight": "300 g", "color": "light_gray", - "covers": [ "head" ], "use_action": { "menu_text": "Tip", "type": "transform", "target": "straw_fedora", "msg": "You tip your %s." }, "symbol": "[", "description": "Straw fedora hat, comfortable and stylish. Its brim helps keep the sun out of your eyes.", @@ -2100,10 +2077,9 @@ "volume": "1250 ml", "warmth": 5, "environmental_protection": 3, - "encumbrance": 10, - "coverage": 50, "flags": [ "VARSIZE", "SUN_GLASSES" ], - "material_thickness": 1 + "material_thickness": 1, + "armor": [ { "encumbrance": 10, "coverage": 50, "covers": [ "head" ] } ] }, { "id": "patchwork_scarf", @@ -2120,13 +2096,11 @@ "volume": "500 ml", "to_hit": -3, "use_action": { "type": "transform", "msg": "You loosen your %s.", "target": "patchwork_scarf_loose", "menu_text": "Loosen" }, - "covers": [ "mouth" ], "flags": [ "OUTER" ], "warmth": 20, "environmental_protection": 1, - "encumbrance": 3, - "coverage": 85, - "material_thickness": 0.3 + "material_thickness": 0.3, + "armor": [ { "encumbrance": 3, "coverage": 85, "covers": [ "mouth" ] } ] }, { "id": "patchwork_scarf_loose", @@ -2145,13 +2119,11 @@ "to_hit": -3, "revert_to": "patchwork_scarf", "use_action": { "type": "transform", "msg": "You wrap your scarf tighter.", "target": "patchwork_scarf", "menu_text": "Wrap tighter" }, - "covers": [ "mouth" ], "flags": [ "OUTER", "ALLOWS_NATURAL_ATTACKS" ], "warmth": 10, "environmental_protection": 1, - "encumbrance": 2, - "coverage": 45, - "material_thickness": 0.3 + "material_thickness": 0.3, + "armor": [ { "encumbrance": 2, "coverage": 45, "covers": [ "mouth" ] } ] }, { "id": "long_patchwork_scarf", @@ -2168,13 +2140,11 @@ "volume": "1 L", "to_hit": -3, "use_action": { "type": "transform", "msg": "You loosen your %s.", "target": "long_patchwork_scarf_loose", "menu_text": "Loosen" }, - "covers": [ "mouth" ], "flags": [ "OVERSIZE", "POCKETS", "OUTER" ], "warmth": 20, "environmental_protection": 1, - "encumbrance": 3, - "coverage": 85, - "material_thickness": 0.3 + "material_thickness": 0.3, + "armor": [ { "encumbrance": 3, "coverage": 85, "covers": [ "mouth" ] } ] }, { "id": "long_patchwork_scarf_loose", @@ -2198,13 +2168,11 @@ "menu_text": "Wrap tighter" }, "revert_to": "long_patchwork_scarf", - "covers": [ "mouth" ], "flags": [ "OVERSIZE", "POCKETS", "OUTER", "ALLOWS_NATURAL_ATTACKS" ], "warmth": 10, "environmental_protection": 1, - "encumbrance": 2, - "coverage": 45, - "material_thickness": 0.3 + "material_thickness": 0.3, + "armor": [ { "encumbrance": 2, "coverage": 45, "covers": [ "mouth" ] } ] }, { "id": "knit_scarf", @@ -2221,13 +2189,11 @@ "volume": "750 ml", "to_hit": -3, "use_action": { "type": "transform", "msg": "You loosen your %s.", "target": "knit_scarf_loose", "menu_text": "Loosen" }, - "covers": [ "mouth" ], "flags": [ "OUTER" ], "warmth": 30, "environmental_protection": 2, - "encumbrance": 3, - "coverage": 85, - "material_thickness": 1 + "material_thickness": 1, + "armor": [ { "encumbrance": 3, "coverage": 85, "covers": [ "mouth" ] } ] }, { "id": "knit_scarf_loose", @@ -2246,13 +2212,11 @@ "to_hit": -3, "revert_to": "knit_scarf", "use_action": { "type": "transform", "msg": "You wrap your scarf tighter.", "target": "knit_scarf", "menu_text": "Wrap tighter" }, - "covers": [ "mouth" ], "flags": [ "OUTER", "ALLOWS_NATURAL_ATTACKS" ], "warmth": 15, "environmental_protection": 1, - "encumbrance": 2, - "coverage": 45, - "material_thickness": 1 + "material_thickness": 1, + "armor": [ { "encumbrance": 2, "coverage": 45, "covers": [ "mouth" ] } ] }, { "id": "long_knit_scarf", @@ -2269,13 +2233,11 @@ "volume": "1250 ml", "to_hit": -3, "use_action": { "type": "transform", "msg": "You loosen your %s.", "target": "long_knit_scarf_loose", "menu_text": "Loosen" }, - "covers": [ "mouth" ], "flags": [ "OVERSIZE", "POCKETS", "OUTER" ], "warmth": 30, "environmental_protection": 2, - "encumbrance": 3, - "coverage": 85, - "material_thickness": 1 + "material_thickness": 1, + "armor": [ { "encumbrance": 3, "coverage": 85, "covers": [ "mouth" ] } ] }, { "id": "long_knit_scarf_loose", @@ -2294,13 +2256,11 @@ "to_hit": -3, "use_action": { "type": "transform", "msg": "You wrap your scarf tighter.", "target": "long_knit_scarf", "menu_text": "Wrap tighter" }, "revert_to": "long_knit_scarf", - "covers": [ "mouth" ], "flags": [ "OVERSIZE", "POCKETS", "OUTER", "ALLOWS_NATURAL_ATTACKS" ], "warmth": 15, "environmental_protection": 1, - "encumbrance": 2, - "coverage": 45, - "material_thickness": 2 + "material_thickness": 2, + "armor": [ { "encumbrance": 2, "coverage": 45, "covers": [ "mouth" ] } ] }, { "id": "scarf", @@ -2317,13 +2277,11 @@ "volume": "750 ml", "to_hit": -3, "use_action": { "type": "transform", "msg": "You loosen your %s.", "target": "scarf_loose", "menu_text": "Loosen" }, - "covers": [ "mouth" ], "flags": [ "OUTER" ], "warmth": 50, "environmental_protection": 2, - "encumbrance": 3, - "coverage": 85, - "material_thickness": 1 + "material_thickness": 1, + "armor": [ { "encumbrance": 3, "coverage": 85, "covers": [ "mouth" ] } ] }, { "id": "scarf_loose", @@ -2342,13 +2300,11 @@ "to_hit": -3, "revert_to": "scarf", "use_action": { "type": "transform", "msg": "You wrap your scarf a bit tighter.", "target": "scarf", "menu_text": "Wrap tighter" }, - "covers": [ "mouth" ], "flags": [ "OUTER", "ALLOWS_NATURAL_ATTACKS" ], "warmth": 25, "environmental_protection": 1, - "encumbrance": 2, - "coverage": 45, - "material_thickness": 1 + "material_thickness": 1, + "armor": [ { "encumbrance": 2, "coverage": 45, "covers": [ "mouth" ] } ] }, { "id": "scarf_long", @@ -2365,13 +2321,11 @@ "volume": "1250 ml", "to_hit": -3, "use_action": { "type": "transform", "msg": "You loosen your %s.", "target": "scarf_long_loose", "menu_text": "Loosen" }, - "covers": [ "mouth" ], "flags": [ "OVERSIZE", "POCKETS", "OUTER" ], "warmth": 50, "environmental_protection": 2, - "encumbrance": 3, - "coverage": 85, - "material_thickness": 1 + "material_thickness": 1, + "armor": [ { "encumbrance": 3, "coverage": 85, "covers": [ "mouth" ] } ] }, { "id": "scarf_long_loose", @@ -2390,13 +2344,11 @@ "to_hit": -3, "use_action": { "type": "transform", "msg": "You wrap your scarf tighter.", "target": "scarf_long", "menu_text": "Wrap tighter" }, "revert_to": "scarf_long", - "covers": [ "mouth" ], "flags": [ "OVERSIZE", "POCKETS", "OUTER", "ALLOWS_NATURAL_ATTACKS" ], "warmth": 25, "environmental_protection": 1, - "encumbrance": 2, - "coverage": 45, - "material_thickness": 1 + "material_thickness": 1, + "armor": [ { "encumbrance": 2, "coverage": 45, "covers": [ "mouth" ] } ] }, { "id": "scarf_fur", @@ -2413,13 +2365,11 @@ "volume": "1 L", "to_hit": -3, "use_action": { "type": "transform", "msg": "You loosen your %s.", "target": "scarf_fur_loose", "menu_text": "Loosen" }, - "covers": [ "mouth" ], "flags": [ "OUTER" ], "warmth": 70, "environmental_protection": 3, - "encumbrance": 10, - "coverage": 85, - "material_thickness": 2 + "material_thickness": 2, + "armor": [ { "encumbrance": 10, "coverage": 85, "covers": [ "mouth" ] } ] }, { "id": "scarf_fur_loose", @@ -2438,13 +2388,11 @@ "to_hit": -3, "revert_to": "scarf_fur", "use_action": { "type": "transform", "msg": "You wrap your scarf a bit tighter.", "target": "scarf_fur", "menu_text": "Wrap tighter" }, - "covers": [ "mouth" ], "flags": [ "OUTER", "ALLOWS_NATURAL_ATTACKS" ], "warmth": 35, "environmental_protection": 2, - "encumbrance": 10, - "coverage": 45, - "material_thickness": 2 + "material_thickness": 2, + "armor": [ { "encumbrance": 10, "coverage": 45, "covers": [ "mouth" ] } ] }, { "id": "scarf_fur_long", @@ -2461,13 +2409,11 @@ "volume": "2 L", "to_hit": -3, "use_action": { "type": "transform", "msg": "You loosen your %s.", "target": "scarf_fur_long_loose", "menu_text": "Loosen" }, - "covers": [ "mouth" ], "flags": [ "OVERSIZE", "POCKETS", "OUTER" ], "warmth": 70, "environmental_protection": 3, - "encumbrance": 10, - "coverage": 85, - "material_thickness": 2 + "material_thickness": 2, + "armor": [ { "encumbrance": 10, "coverage": 85, "covers": [ "mouth" ] } ] }, { "id": "scarf_fur_long_loose", @@ -2486,12 +2432,11 @@ "to_hit": -3, "use_action": { "type": "transform", "msg": "You wrap your scarf tighter.", "target": "scarf_fur_long", "menu_text": "Wrap tighter" }, "revert_to": "scarf_fur_long", - "covers": [ "mouth" ], "flags": [ "OVERSIZE", "POCKETS", "OUTER", "ALLOWS_NATURAL_ATTACKS" ], "warmth": 35, "environmental_protection": 2, - "coverage": 45, - "material_thickness": 2 + "material_thickness": 2, + "armor": [ { "coverage": 45, "covers": [ "mouth" ] } ] }, { "id": "thermal_outfit", @@ -2517,9 +2462,7 @@ "need_charges": 1, "need_charges_msg": "The %s's batteries are dead." }, - "covers": [ "head", "mouth", "torso", "arm_l", "arm_r", "leg_l", "leg_r", "hand_l", "hand_r", "foot_l", "foot_r" ], "warmth": 10, - "coverage": 100, "material_thickness": 0.1, "pocket_data": [ { @@ -2530,6 +2473,12 @@ "max_contains_weight": "20 kg", "item_restriction": [ "medium_battery_cell", "medium_plus_battery_cell", "medium_atomic_battery_cell", "medium_disposable_cell" ] } + ], + "armor": [ + { + "coverage": 100, + "covers": [ "head", "mouth", "torso", "arm_l", "arm_r", "leg_l", "leg_r", "hand_l", "hand_r", "foot_l", "foot_r" ] + } ] }, { @@ -2543,7 +2492,6 @@ "power_draw": 130000, "revert_to": "thermal_outfit", "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "Your %s deactivates.", "target": "thermal_outfit" }, - "covers": [ "head", "mouth", "torso", "arm_l", "arm_r", "leg_l", "leg_r", "hand_l", "hand_r", "foot_l", "foot_r" ], "warmth": 60 }, { @@ -2560,13 +2508,11 @@ "symbol": "[", "looks_like": "sweater", "color": "white", - "covers": [ "torso", "arm_l", "arm_r", "mouth" ], - "coverage": 95, - "encumbrance": 8, "warmth": 35, "material_thickness": 0.5, "use_action": { "target": "turtleneck_rolled", "msg": "You adjust the neck and collar of the turtleneck.", "type": "transform" }, - "flags": [ "VARSIZE", "FANCY", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "VARSIZE", "FANCY", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 8, "coverage": 95, "covers": [ "torso", "arm_l", "arm_r", "mouth" ] } ] }, { "id": "turtleneck_rolled", @@ -2582,13 +2528,11 @@ "symbol": "[", "looks_like": "sweater", "color": "white", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 95, - "encumbrance": 8, "warmth": 35, "material_thickness": 0.5, "use_action": { "target": "turtleneck", "msg": "You adjust the neck and collar of the turtleneck.", "type": "transform" }, - "flags": [ "VARSIZE", "FANCY", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "VARSIZE", "FANCY", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 8, "coverage": 95, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "turtleneck_shirt", @@ -2604,9 +2548,6 @@ "symbol": "[", "looks_like": "sweater", "color": "white", - "covers": [ "torso", "arm_l", "arm_r", "mouth" ], - "coverage": 95, - "encumbrance": 4, "warmth": 20, "material_thickness": 0.5, "use_action": { @@ -2614,7 +2555,8 @@ "msg": "You adjust the neck and collar of the turtleneck shirt.", "type": "transform" }, - "flags": [ "VARSIZE", "FANCY", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "VARSIZE", "FANCY", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 4, "coverage": 95, "covers": [ "torso", "arm_l", "arm_r", "mouth" ] } ] }, { "id": "turtleneck_shirt_rolled", @@ -2630,13 +2572,11 @@ "symbol": "[", "looks_like": "sweater", "color": "white", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 95, - "encumbrance": 4, "warmth": 20, "material_thickness": 0.5, "use_action": { "target": "turtleneck_shirt", "msg": "You adjust the neck and collar of the turtleneck shirt.", "type": "transform" }, - "flags": [ "VARSIZE", "FANCY", "ALLOWS_NATURAL_ATTACKS" ] + "flags": [ "VARSIZE", "FANCY", "ALLOWS_NATURAL_ATTACKS" ], + "armor": [ { "encumbrance": 4, "coverage": 95, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "type": "TOOL_ARMOR", @@ -2645,7 +2585,6 @@ "category": "clothing", "weight": "86 g", "color": "dark_gray", - "covers": [ "head", "mouth" ], "use_action": { "type": "transform", "menu_text": "Loosen", @@ -2659,10 +2598,9 @@ "material": [ "wool" ], "volume": "250 ml", "warmth": 50, - "encumbrance": 10, "flags": [ "VARSIZE", "SKINTIGHT" ], - "coverage": 80, - "material_thickness": 1 + "material_thickness": 1, + "armor": [ { "encumbrance": 10, "coverage": 80, "covers": [ "head", "mouth" ] } ] }, { "type": "TOOL_ARMOR", @@ -2672,7 +2610,6 @@ "category": "clothing", "weight": "86 g", "color": "dark_gray", - "covers": [ "head", "mouth" ], "use_action": { "type": "transform", "menu_text": "Tighten", @@ -2687,10 +2624,9 @@ "material": [ "wool" ], "volume": "250 ml", "warmth": 30, - "encumbrance": 10, "flags": [ "VARSIZE", "SKINTIGHT" ], - "coverage": 60, - "material_thickness": 1 + "material_thickness": 1, + "armor": [ { "encumbrance": 10, "coverage": 60, "covers": [ "head", "mouth" ] } ] }, { "type": "TOOL_ARMOR", @@ -2705,7 +2641,6 @@ "price_postapoc": 50, "material": [ "steel", "cotton" ], "flags": [ "WATER_FRIENDLY" ], - "coverage": 1, "symbol": "[", "use_action": { "type": "manualnoise", @@ -2717,7 +2652,8 @@ "noise_variant": "whistle", "noise": 38, "moves": 100 - } + }, + "armor": [ { "coverage": 1 } ] }, { "id": "powered_earmuffs", @@ -2743,10 +2679,7 @@ "need_charges": 1, "need_charges_msg": "The earmuff's batteries are dead." }, - "covers": [ "head" ], "warmth": 5, - "encumbrance": 5, - "coverage": 10, "material_thickness": 2, "pocket_data": [ { @@ -2765,7 +2698,8 @@ "light_disposable_cell" ] } - ] + ], + "armor": [ { "encumbrance": 5, "coverage": 10, "covers": [ "head" ] } ] }, { "id": "powered_earmuffs_on", @@ -2788,10 +2722,7 @@ "charges_per_use": 1, "revert_to": "powered_earmuffs", "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s flicks off.", "target": "powered_earmuffs" }, - "covers": [ "head" ], "warmth": 5, - "encumbrance": 5, - "coverage": 10, "material_thickness": 2, "pocket_data": [ { @@ -2810,7 +2741,8 @@ "light_disposable_cell" ] } - ] + ], + "armor": [ { "encumbrance": 5, "coverage": 10, "covers": [ "head" ] } ] }, { "id": "stethoscope", @@ -2824,10 +2756,8 @@ "material": [ "plastic", "aluminum" ], "weight": "150 g", "volume": "250 ml", - "covers": [ "torso" ], - "encumbrance": 1, "flags": [ "BELTED", "SAFECRACK" ], - "coverage": 5 + "armor": [ { "encumbrance": 1, "coverage": 5, "covers": [ "torso" ] } ] }, { "id": "makeshift_stethoscope", @@ -2841,10 +2771,8 @@ "material": [ "plastic" ], "weight": "400 g", "volume": "500 ml", - "covers": [ "torso" ], - "encumbrance": 3, "flags": [ "BELTED", "SAFECRACK" ], - "coverage": 8 + "armor": [ { "encumbrance": 3, "coverage": 8, "covers": [ "torso" ] } ] }, { "id": "solarpack", @@ -2860,12 +2788,10 @@ "material": [ "glass", "steel" ], "symbol": "[", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 12, "material_thickness": 3, "use_action": [ "SOLARPACK" ], - "flags": [ "FRAGILE", "OUTER", "ONLY_ONE", "SOLARPACK" ] + "flags": [ "FRAGILE", "OUTER", "ONLY_ONE", "SOLARPACK" ], + "armor": [ { "encumbrance": 12, "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "solarpack_on", @@ -2882,13 +2808,11 @@ "material": [ "glass", "steel" ], "symbol": "[", "color": "blue", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 20, "material_thickness": 1, "use_action": [ "SOLARPACK_OFF" ], "solar_efficiency": 0.05, - "flags": [ "FRAGILE", "OUTER", "ONLY_ONE", "SOLARPACK_ON" ] + "flags": [ "FRAGILE", "OUTER", "ONLY_ONE", "SOLARPACK_ON" ], + "armor": [ { "encumbrance": 20, "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "helmet_riot", @@ -2907,14 +2831,12 @@ "material": [ "plastic", "steel" ], "symbol": "[", "color": "dark_gray", - "covers": [ "head", "eyes", "mouth" ], - "coverage": 95, - "encumbrance": 20, "warmth": 10, "material_thickness": 3, "environmental_protection": 2, "techniques": [ "WBLOCK_1" ], - "flags": [ "WATERPROOF", "STURDY", "SUN_GLASSES" ] + "flags": [ "WATERPROOF", "STURDY", "SUN_GLASSES" ], + "armor": [ { "encumbrance": 20, "coverage": 95, "covers": [ "head", "eyes", "mouth" ] } ] }, { "id": "helmet_riot_raised", @@ -2933,14 +2855,12 @@ "material": [ "plastic", "steel" ], "symbol": "[", "color": "dark_gray", - "covers": [ "head" ], - "coverage": 95, - "encumbrance": 20, "warmth": 10, "material_thickness": 3, "environmental_protection": 2, "techniques": [ "WBLOCK_1" ], - "flags": [ "WATERPROOF", "STURDY" ] + "flags": [ "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 95, "covers": [ "head" ] } ] }, { "id": "scuba_tank", @@ -2962,14 +2882,12 @@ "pocket_data": [ { "pocket_type": "MAGAZINE", "airtight": true, "rigid": true, "watertight": true, "ammo_restriction": { "nitrox": 60 } } ], - "covers": [ "torso" ], "flags": [ "WATER_FRIENDLY", "BELTED", "ONLY_ONE", "STURDY", "NO_UNLOAD", "NO_RELOAD" ], "environmental_protection": 1, "environmental_protection_with_filter": 16, - "encumbrance": 30, - "coverage": 25, "material_thickness": 4, - "use_action": [ "DIVE_TANK" ] + "use_action": [ "DIVE_TANK" ], + "armor": [ { "encumbrance": 30, "coverage": 25, "covers": [ "torso" ] } ] }, { "id": "scuba_tank_on", @@ -2994,14 +2912,12 @@ ], "charges_per_use": 1, "turns_per_charge": 60, - "covers": [ "torso", "mouth" ], "flags": [ "WATER_FRIENDLY", "BELTED", "ONLY_ONE", "STURDY", "NO_UNLOAD", "NO_RELOAD" ], "environmental_protection": 1, "environmental_protection_with_filter": 16, - "encumbrance": 30, - "coverage": 25, "material_thickness": 4, - "use_action": [ "DIVE_TANK" ] + "use_action": [ "DIVE_TANK" ], + "armor": [ { "encumbrance": 30, "coverage": 25, "covers": [ "torso", "mouth" ] } ] }, { "id": "small_scuba_tank", @@ -3023,14 +2939,12 @@ "pocket_data": [ { "pocket_type": "MAGAZINE", "airtight": true, "rigid": true, "watertight": true, "ammo_restriction": { "nitrox": 20 } } ], - "covers": [ "torso" ], "flags": [ "WATER_FRIENDLY", "BELTED", "ONLY_ONE", "STURDY", "NO_UNLOAD", "NO_RELOAD" ], "environmental_protection": 1, "environmental_protection_with_filter": 16, - "encumbrance": 30, - "coverage": 25, "material_thickness": 4, - "use_action": [ "DIVE_TANK" ] + "use_action": [ "DIVE_TANK" ], + "armor": [ { "encumbrance": 30, "coverage": 25, "covers": [ "torso" ] } ] }, { "id": "small_scuba_tank_on", @@ -3055,14 +2969,12 @@ ], "charges_per_use": 1, "turns_per_charge": 60, - "covers": [ "torso", "mouth" ], "flags": [ "WATER_FRIENDLY", "BELTED", "ONLY_ONE", "STURDY", "NO_UNLOAD", "NO_RELOAD" ], "environmental_protection": 1, "environmental_protection_with_filter": 16, - "encumbrance": 30, - "coverage": 25, "material_thickness": 4, - "use_action": [ "DIVE_TANK" ] + "use_action": [ "DIVE_TANK" ], + "armor": [ { "encumbrance": 30, "coverage": 25, "covers": [ "torso", "mouth" ] } ] }, { "id": "electric_blanket", @@ -3077,9 +2989,6 @@ "material": [ "cotton" ], "symbol": "[", "color": "brown", - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 35, "warmth": 50, "material_thickness": 1, "environmental_protection": 1, @@ -3103,6 +3012,13 @@ "max_contains_weight": "20 kg", "item_restriction": [ "medium_battery_cell", "medium_plus_battery_cell", "medium_atomic_battery_cell", "medium_disposable_cell" ] } + ], + "armor": [ + { + "encumbrance": 35, + "coverage": 100, + "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } ] }, { @@ -3131,9 +3047,6 @@ "material": [ "cotton", "plastic" ], "symbol": "Q", "color": "pink", - "covers": [ "head", "eyes", "mouth" ], - "coverage": 100, - "encumbrance": 30, "warmth": 50, "material_thickness": 1, "environmental_protection": 2, @@ -3158,7 +3071,8 @@ "max_contains_weight": "20 kg", "item_restriction": [ "medium_battery_cell", "medium_plus_battery_cell", "medium_atomic_battery_cell", "medium_disposable_cell" ] } - ] + ], + "armor": [ { "encumbrance": 30, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ] }, { "id": "foodperson_mask_on", @@ -3218,7 +3132,7 @@ "symbol": "[", "looks_like": "helmet_motor", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 30 }, { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 5 } ], @@ -3273,7 +3187,7 @@ "symbol": "[", "looks_like": "helmet_motor", "color": "dark_gray", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 30 }, { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 5 } ], diff --git a/data/json/mapgen/Woodworker.json b/data/json/mapgen/Woodworker.json new file mode 100644 index 0000000000000..d8de8168e8368 --- /dev/null +++ b/data/json/mapgen/Woodworker.json @@ -0,0 +1,214 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "craft_shop_3" ], + "weight": 200, + "object": { + "fill_ter": "t_floor", + "rows": [ + ",,s,pppyppp,,,,,,,,,ss,,", + ",OmOGGGGGGGOOWWWWWOOddO,", + ",OsMpppypppOf4fffπfOffO,", + ",OsFpppypppOffffffffffO,", + ",OsFpppypppOfnfnfnffffO,", + ",OsFpppypppOfnfnfnffffO,", + ",OsFpppypppOffffffffffO,", + ",OoOpppypppOfπππfkCkffO,", + ",FsspppypppOffffffcOffO,", + ",FsspppypppOOWWWWWOOffO,", + ",FsspppypppOfffffffOffO,", + ",FsspppypppORf3ffffdffO,", + ",FsspppypppOBffffffOffO,", + ",FsspppypppORffffffO<>O ", + " wpfdfffffffO ", + " OOOOoOOOOOOO ", + " OfffffO66F6O ", + " wsffffofff6O ", + " ORssbfOfff6O ", + " OOwOOOOOwwOO ", + " |..........4 ", + " |..........3 ", + " |----------5 ", + " " + ], + "terrain": { + " ": "t_open_air", + ".": "t_tile_flat_roof", + ">": "t_stairs_down", + "-": "t_gutter_south", + "|": "t_gutter_east", + "3": "t_gutter_west", + "4": "t_gutter_downspout", + "5": "t_gutter_drop", + "d": "t_door_c", + "f": "t_floor", + "g": "t_door_glass_c", + "H": "t_water_dispenser", + "o": "t_door_o", + "O": "t_wall_g", + "r": "t_glass_railing", + "w": "t_window_no_curtains", + "W": "t_wall_glass" + }, + "furniture": { + "6": "f_counter", + "b": "f_trashcan", + "B": "f_bookcase", + "c": "f_chair", + "C": "f_console_broken", + "F": "f_fridge", + "k": "f_desk", + "l": "f_stool", + "M": "f_machinery_light", + "R": "f_locker", + "s": "f_sink", + "t": "f_table" + }, + "toilets": { "p": { } }, + "items": { + "b": { "item": "trash", "chance": 80 }, + "F": { "item": "fridge", "chance": 50, "repeat": [ 2, 4 ] }, + "k": [ { "item": "file_room", "chance": 40, "repeat": [ 1, 3 ] }, { "item": "writing_utensils", "chance": 30 } ], + "s": [ { "item": "SUS_kitchen_sink", "chance": 20 }, { "item": "cleaning", "chance": 20, "repeat": [ 2, 4 ] } ], + "t": { "item": "dinnerware", "chance": 20, "repeat": [ 1, 5 ] }, + "p": { "item": "SUS_toilet", "chance": 30 }, + "R": { "item": "SUS_woodcrafts_gear", "chance": 95 }, + "B": [ + { "item": "carpentrybooks", "chance": 50, "repeat": [ 1, 3 ] }, + { "item": "fabricationbooks", "chance": 10, "repeat": [ 1, 3 ] } + ], + "6": [ { "item": "SUS_junk_drawer", "chance": 20 } ] + }, + "place_item": [ { "item": "coffeemaker", "x": 14, "y": 8, "chance": 100 }, { "item": "toaster", "x": 21, "y": 16, "chance": 70 } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "craft_shop_roof_3", + "object": { + "fill_ter": "t_tile_flat_roof", + "rows": [ + " ", + " |222222222222222222223 ", + " |.........ooo...ooo..3 ", + " |.A.......ooo...ooo..3 ", + " |.........ooo...ooo..3 ", + " |....................3 ", + " |....................3 ", + " |---------|..........3 ", + " |..........3 ", + " |..........3 ", + " |..........3 ", + " |..........3 ", + " |..........3 ", + " |..........3 ", + " |..........3 ", + " |..........3 ", + " |..........3 ", + " |......=.=.3 ", + " |..........3 ", + " |----------5 ", + " ", + " ", + " ", + " " + ], + "palettes": [ "roof_palette" ] + } + } +] diff --git a/data/json/mapgen/basecamps/fbmc_helipad/fbmc_helipad_common.json b/data/json/mapgen/basecamps/fbmc_helipad/fbmc_helipad_common.json new file mode 100644 index 0000000000000..a09b2389814fd --- /dev/null +++ b/data/json/mapgen/basecamps/fbmc_helipad/fbmc_helipad_common.json @@ -0,0 +1,79 @@ +[ + { + "type": "mapgen", + "update_mapgen_id": "fbmc_helipad_0", + "method": "json", + "object": { "set": [ { "point": "furniture", "id": "f_bulletin", "x": 15, "y": 15 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_helipad_barricade_wood", + "method": "json", + "object": { + "set": [ + { "point": "terrain", "id": "t_wall_wood", "x": 5, "y": 16 }, + { "point": "terrain", "id": "t_wall_wood", "x": 8, "y": 16 }, + { "point": "terrain", "id": "t_wall_wood", "x": 10, "y": 16 }, + { "point": "terrain", "id": "t_wall_wood", "x": 11, "y": 16 }, + { "point": "terrain", "id": "t_wall_wood", "x": 13, "y": 16 }, + { "point": "terrain", "id": "t_wall_wood", "x": 14, "y": 16 }, + { "point": "terrain", "id": "t_wall_wood", "x": 19, "y": 16 } + ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_helipad_barricade_migo_resin", + "method": "json", + "object": { + "set": [ + { "point": "terrain", "id": "t_wall_resin", "x": 5, "y": 16 }, + { "point": "terrain", "id": "t_wall_resin", "x": 8, "y": 16 }, + { "point": "terrain", "id": "t_wall_resin", "x": 10, "y": 16 }, + { "point": "terrain", "id": "t_wall_resin", "x": 11, "y": 16 }, + { "point": "terrain", "id": "t_wall_resin", "x": 13, "y": 16 }, + { "point": "terrain", "id": "t_wall_resin", "x": 14, "y": 16 }, + { "point": "terrain", "id": "t_wall_resin", "x": 19, "y": 16 } + ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_helipad_root_cellar", + "method": "json", + "object": { "set": [ { "point": "terrain", "id": "t_rootcellar", "x": 13, "y": 15 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_helipad_butchery_rack", + "method": "json", + "object": { + "set": [ + { "point": "furniture", "id": "f_butcher_rack", "x": 10, "y": 15 }, + { "point": "furniture", "id": "f_table", "x": 11, "y": 15 } + ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_helipad_reinforce_doors", + "method": "json", + "object": { + "set": [ + { "point": "terrain", "id": "t_rdoor_c", "x": 16, "y": 16 }, + { "point": "terrain", "id": "t_rdoor_c", "x": 17, "y": 16 } + ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_helipad_radio", + "method": "json", + "object": { + "set": [ + { "point": "terrain", "id": "t_radio_controls", "x": 19, "y": 15 }, + { "point": "terrain", "id": "t_radio_tower", "x": 20, "y": 15 } + ] + } + } +] diff --git a/data/json/mapgen/basecamps/fbmc_helipad/fbmc_helipad_garage.json b/data/json/mapgen/basecamps/fbmc_helipad/fbmc_helipad_garage.json new file mode 100644 index 0000000000000..5db37f58c7fbb --- /dev/null +++ b/data/json/mapgen/basecamps/fbmc_helipad/fbmc_helipad_garage.json @@ -0,0 +1,14 @@ +[ + { + "type": "mapgen", + "om_terrain": [ "faction_base_helipad_garage_0" ], + "method": "json", + "object": { "fill_ter": "t_dirt" } + }, + { + "type": "mapgen", + "update_mapgen_id": "faction_base_helipad_garage_0", + "method": "json", + "object": { "set": [ { "point": "furniture", "id": "f_null", "x": 0, "y": 0 } ] } + } +] diff --git a/data/json/mapgen/basecamps/fbmc_outpost/fbmc_outpost_cross.json b/data/json/mapgen/basecamps/fbmc_outpost/fbmc_outpost_cross.json new file mode 100644 index 0000000000000..e6635ce91ee47 --- /dev/null +++ b/data/json/mapgen/basecamps/fbmc_outpost/fbmc_outpost_cross.json @@ -0,0 +1,95 @@ +[ + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmc_outpost_cross_farm_nested", + "object": { + "mapgensize": [ 4, 4 ], + "rows": [ + "d d ", + "d d ", + "d d ", + "d d " + ], + "terrain": { "d": "t_dirtmound" } + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_outpost_cross_0", + "method": "json", + "object": { "set": [ { "point": "furniture", "id": "f_bulletin", "x": 4, "y": 12 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_outpost_cross_bed_0", + "method": "json", + "object": { "set": [ { "point": "furniture", "id": "f_bunkbed", "x": 9, "y": 5 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_outpost_cross_bed_1", + "method": "json", + "object": { "set": [ { "point": "furniture", "id": "f_bunkbed", "x": 10, "y": 6 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_outpost_cross_root_cellar", + "method": "json", + "object": { "set": [ { "point": "terrain", "id": "t_rootcellar", "x": 10, "y": 21 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_outpost_cross_butchery_rack", + "method": "json", + "object": { + "set": [ + { "point": "furniture", "id": "f_butcher_rack", "x": 8, "y": 21 }, + { "point": "furniture", "id": "f_table", "x": 9, "y": 21 } + ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_outpost_cross_water_well", + "method": "json", + "object": { "set": [ { "point": "terrain", "id": "t_water_pump", "x": 12, "y": 21 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_outpost_cross_farm", + "method": "json", + "object": { + "place_nested": [ + { "chunks": [ "fbmc_outpost_cross_farm_nested" ], "x": 3, "y": 3 }, + { "chunks": [ "fbmc_outpost_cross_farm_nested" ], "x": 3, "y": 17 }, + { "chunks": [ "fbmc_outpost_cross_farm_nested" ], "x": 18, "y": 3 }, + { "chunks": [ "fbmc_outpost_cross_farm_nested" ], "x": 18, "y": 17 } + ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_outpost_cross_generator", + "method": "json", + "object": { + "set": [ + { "point": "terrain", "id": "t_utility_light", "x": 4, "y": 13 }, + { "point": "terrain", "id": "t_utility_light", "x": 16, "y": 18 }, + { "point": "terrain", "id": "t_utility_light", "x": 13, "y": 12 }, + { "point": "terrain", "id": "t_utility_light", "x": 19, "y": 14 } + ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_outpost_cross_radio", + "method": "json", + "object": { + "set": [ + { "point": "terrain", "id": "t_radio_tower", "x": 9, "y": 2 }, + { "point": "terrain", "id": "t_radio_controls", "x": 10, "y": 2 } + ] + } + } +] diff --git a/data/json/mapgen/basecamps/fbmc_outpost/fbmc_outpost_normal.json b/data/json/mapgen/basecamps/fbmc_outpost/fbmc_outpost_normal.json new file mode 100644 index 0000000000000..cd2908d08304f --- /dev/null +++ b/data/json/mapgen/basecamps/fbmc_outpost/fbmc_outpost_normal.json @@ -0,0 +1,87 @@ +[ + { + "type": "mapgen", + "update_mapgen_id": "fbmc_outpost_normal_0", + "method": "json", + "object": { "set": [ { "point": "furniture", "id": "f_bulletin", "x": 13, "y": 12 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_outpost_normal_bed_0", + "method": "json", + "object": { "set": [ { "point": "furniture", "id": "f_bunkbed", "x": 10, "y": 4 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_outpost_normal_root_cellar", + "method": "json", + "object": { "set": [ { "point": "terrain", "id": "t_rootcellar", "x": 6, "y": 12 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_outpost_normal_butchery_rack", + "method": "json", + "object": { + "set": [ + { "point": "furniture", "id": "f_butcher_rack", "x": 4, "y": 12 }, + { "point": "furniture", "id": "f_table", "x": 5, "y": 12 } + ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_outpost_normal_water_well", + "method": "json", + "object": { "set": [ { "point": "terrain", "id": "t_water_pump", "x": 6, "y": 10 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_outpost_normal_farm", + "method": "json", + "object": { + "set": [ + { "point": "terrain", "id": "t_dirtmound", "y": 2, "x": 19 }, + { "point": "terrain", "id": "t_dirtmound", "y": 3, "x": 19 }, + { "point": "terrain", "id": "t_dirtmound", "y": 4, "x": 19 }, + { "point": "terrain", "id": "t_dirtmound", "y": 5, "x": 19 }, + { "point": "terrain", "id": "t_dirtmound", "y": 6, "x": 19 }, + { "point": "terrain", "id": "t_dirtmound", "y": 7, "x": 19 }, + { "point": "terrain", "id": "t_dirtmound", "y": 8, "x": 19 }, + { "point": "terrain", "id": "t_dirtmound", "y": 9, "x": 19 }, + { "point": "terrain", "id": "t_dirtmound", "y": 13, "x": 19 }, + { "point": "terrain", "id": "t_dirtmound", "y": 14, "x": 19 }, + { "point": "terrain", "id": "t_dirtmound", "y": 15, "x": 19 }, + { "point": "terrain", "id": "t_dirtmound", "y": 16, "x": 19 }, + { "point": "terrain", "id": "t_dirtmound", "y": 17, "x": 19 }, + { "point": "terrain", "id": "t_dirtmound", "y": 18, "x": 19 }, + { "point": "terrain", "id": "t_dirtmound", "y": 19, "x": 19 }, + { "point": "terrain", "id": "t_dirtmound", "y": 20, "x": 19 } + ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_outpost_normal_generator", + "method": "json", + "object": { + "set": [ + { "point": "terrain", "id": "t_utility_light", "x": 5, "y": 16 }, + { "point": "terrain", "id": "t_utility_light", "x": 9, "y": 14 }, + { "point": "terrain", "id": "t_utility_light", "x": 8, "y": 17 }, + { "point": "terrain", "id": "t_utility_light", "x": 17, "y": 16 }, + { "point": "terrain", "id": "t_utility_light", "x": 12, "y": 12 } + ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmc_outpost_normal_radio", + "method": "json", + "object": { + "set": [ + { "point": "terrain", "id": "t_radio_tower", "x": 6, "y": 8 }, + { "point": "terrain", "id": "t_radio_controls", "x": 6, "y": 9 } + ] + } + } +] diff --git a/data/json/mapgen/basement/basement_bionic.json b/data/json/mapgen/basement/basement_bionic.json index 431de1d917051..ffe8851916e2f 100644 --- a/data/json/mapgen/basement/basement_bionic.json +++ b/data/json/mapgen/basement/basement_bionic.json @@ -5,7 +5,7 @@ "om_terrain": [ "basement_bionic" ], "weight": 100, "object": { - "fill_ter": "t_rock_floor", + "fill_ter": "t_thconc_floor", "rows": [ " ", " |----------| ", @@ -81,7 +81,7 @@ "om_terrain": [ "basement_bionic_decoy" ], "weight": 100, "object": { - "fill_ter": "t_rock_floor", + "fill_ter": "t_thconc_floor", "rows": [ " ", " |----------| ", diff --git a/data/json/mapgen/basement/basement_chem.json b/data/json/mapgen/basement/basement_chem.json index f92fe66b0c711..01963a0801bda 100644 --- a/data/json/mapgen/basement/basement_chem.json +++ b/data/json/mapgen/basement/basement_chem.json @@ -6,7 +6,7 @@ "//": "matches house_29", "weight": 250, "object": { - "fill_ter": "t_rock", + "fill_ter": "t_soil", "rows": [ " ", " ", @@ -93,7 +93,7 @@ "//": "matches house_30", "weight": 200, "object": { - "fill_ter": "t_rock", + "fill_ter": "t_soil", "rows": [ " ", " ", diff --git a/data/json/mapgen/basement/basement_game.json b/data/json/mapgen/basement/basement_game.json index d3bd59b03c20c..445c72442aea0 100644 --- a/data/json/mapgen/basement/basement_game.json +++ b/data/json/mapgen/basement/basement_game.json @@ -7,7 +7,7 @@ "weight": 250, "object": { "rotation": [ 0, 3 ], - "fill_ter": "t_rock_floor", + "fill_ter": "t_thconc_floor", "rows": [ "|----| ", "|...i| ", @@ -59,7 +59,7 @@ "weight": 250, "object": { "rotation": [ 0, 3 ], - "fill_ter": "t_rock_floor", + "fill_ter": "t_thconc_floor", "rows": [ "|----| ", "|...i| ", @@ -111,7 +111,7 @@ "weight": 250, "object": { "rotation": [ 0, 3 ], - "fill_ter": "t_rock_floor", + "fill_ter": "t_thconc_floor", "rows": [ "|----| ", "|...i| ", @@ -161,7 +161,7 @@ "weight": 250, "object": { "rotation": [ 0, 3 ], - "fill_ter": "t_rock_floor", + "fill_ter": "t_thconc_floor", "rows": [ "|----| ", "|...i| ", @@ -211,7 +211,7 @@ "weight": 250, "object": { "rotation": [ 0, 3 ], - "fill_ter": "t_rock_floor", + "fill_ter": "t_thconc_floor", "rows": [ "111111 ", "1...i1 ", diff --git a/data/json/mapgen/basement/basement_guns.json b/data/json/mapgen/basement/basement_guns.json index 81728a6c98aa6..5e919bbe58d7b 100644 --- a/data/json/mapgen/basement/basement_guns.json +++ b/data/json/mapgen/basement/basement_guns.json @@ -6,7 +6,7 @@ "//": "used by house_31 and house_32", "weight": 250, "object": { - "fill_ter": "t_rock", + "fill_ter": "t_soil", "rotation": [ 0, 3 ], "rows": [ " -------------------- ", @@ -35,15 +35,15 @@ " " ], "terrain": { - "#": "t_rock_floor", + "#": "t_thconc_floor", "+": "t_door_c", "-": "t_wall", - ".": "t_rock_floor", + ".": "t_thconc_floor", "<": "t_stairs_up", - "]": "t_rock_floor", - "h": "t_rock_floor", - "s": "t_rock_floor", - "{": "t_rock_floor", + "]": "t_thconc_floor", + "h": "t_thconc_floor", + "s": "t_thconc_floor", + "{": "t_thconc_floor", "|": "t_wall" }, "furniture": { "#": "f_counter", "]": "f_bookcase", "h": "f_chair", "s": "f_gunsafe_ml", "{": "f_rack" }, diff --git a/data/json/mapgen/basement/basement_lab_stairs.json b/data/json/mapgen/basement/basement_lab_stairs.json index 95ba303d29da1..6c252c050fba6 100644 --- a/data/json/mapgen/basement/basement_lab_stairs.json +++ b/data/json/mapgen/basement/basement_lab_stairs.json @@ -37,7 +37,7 @@ "palettes": [ "lab_palette" ], "terrain": { "=": "t_wall", - ",": "t_rock_floor", + ",": "t_thconc_floor", "!": "t_card_science", "7": "t_thconc_floor", "<": "t_stairs_up", @@ -90,11 +90,11 @@ "furniture": { "X": "f_crate_c" }, "terrain": { "=": "t_concrete_wall", - "7": "t_rock_floor", + "7": "t_thconc_floor", "D": "t_door_metal_locked", ">": "t_stairs_down", "6": "t_card_science", - "X": "t_rock_floor" + "X": "t_thconc_floor" }, "place_loot": [ { "group": "alcohol", "x": [ 16, 20 ], "y": 6, "chance": 96 }, diff --git a/data/json/mapgen/basement/basement_messed.json b/data/json/mapgen/basement/basement_messed.json index 94bd53953ea19..1bd67e96c3780 100644 --- a/data/json/mapgen/basement/basement_messed.json +++ b/data/json/mapgen/basement/basement_messed.json @@ -6,7 +6,7 @@ "//": "used for house_crack1, house_crack2", "weight": 250, "object": { - "fill_ter": "t_rock", + "fill_ter": "t_soil", "rows": [ " ", " ", diff --git a/data/json/mapgen/basement/basement_meth.json b/data/json/mapgen/basement/basement_meth.json index 74124ce556469..d518fb8507640 100644 --- a/data/json/mapgen/basement/basement_meth.json +++ b/data/json/mapgen/basement/basement_meth.json @@ -6,7 +6,7 @@ "//": "linked to house_27.", "weight": 20, "object": { - "fill_ter": "t_rock", + "fill_ter": "t_soil", "rows": [ " ", " ", @@ -118,7 +118,7 @@ "//": "linked to house_27.", "weight": 250, "object": { - "fill_ter": "t_rock", + "fill_ter": "t_soil", "rows": [ " ", " ", @@ -176,7 +176,7 @@ "//": "linked to house_27.", "weight": 250, "object": { - "fill_ter": "t_rock", + "fill_ter": "t_soil", "rows": [ " ", " ", diff --git a/data/json/mapgen/basement/basement_survival.json b/data/json/mapgen/basement/basement_survival.json index 145cb64b24ff7..1924dbda2b532 100644 --- a/data/json/mapgen/basement/basement_survival.json +++ b/data/json/mapgen/basement/basement_survival.json @@ -20,7 +20,7 @@ "om_terrain": [ "basement_survival" ], "//": "matches house_26", "object": { - "fill_ter": "t_rock", + "fill_ter": "t_soil", "rows": [ " ", " ", @@ -48,25 +48,25 @@ " " ], "terrain": { - "#": "t_rock_floor", + "#": "t_thconc_floor", "+": "t_door_c", "-": "t_wall", - ".": "t_rock_floor", + ".": "t_thconc_floor", "<": "t_stairs_up", - "X": "t_rock_floor", - "]": "t_rock_floor", - "b": "t_rock_floor", - "c": "t_rock_floor", - "d": "t_rock_floor", - "f": "t_rock_floor", - "g": "t_rock_floor", - "h": "t_rock_floor", - "k": "t_rock_floor", - "s": "t_rock_floor", - "t": "t_rock_floor", - "x": "t_rock_floor", - "y": "t_rock_floor", - "{": "t_rock_floor", + "X": "t_thconc_floor", + "]": "t_thconc_floor", + "b": "t_thconc_floor", + "c": "t_thconc_floor", + "d": "t_thconc_floor", + "f": "t_thconc_floor", + "g": "t_thconc_floor", + "h": "t_thconc_floor", + "k": "t_thconc_floor", + "s": "t_thconc_floor", + "t": "t_thconc_floor", + "x": "t_thconc_floor", + "y": "t_thconc_floor", + "{": "t_thconc_floor", "|": "t_wall" }, "furniture": { diff --git a/data/json/mapgen/basement/basement_weed.json b/data/json/mapgen/basement/basement_weed.json index 80e52254b9411..c5c61a3032328 100644 --- a/data/json/mapgen/basement/basement_weed.json +++ b/data/json/mapgen/basement/basement_weed.json @@ -15,7 +15,7 @@ "om_terrain": [ "basement_weed" ], "//": "matches house_28", "object": { - "fill_ter": "t_rock", + "fill_ter": "t_soil", "rows": [ " ", " ", diff --git a/data/json/mapgen/bunker.json b/data/json/mapgen/bunker.json index 75bbb4a50dea6..2e1f0bbdf4a4a 100644 --- a/data/json/mapgen/bunker.json +++ b/data/json/mapgen/bunker.json @@ -93,7 +93,7 @@ "terrain": { " ": "t_floor", "r": "t_floor", - "#": "t_rock", + "#": "t_soil", "+": "t_door_metal_locked", "6": "t_card_military", "<": "t_stairs_up", diff --git a/data/json/mapgen/cabin.json b/data/json/mapgen/cabin.json index 1aeae9038575f..3f04847738e89 100644 --- a/data/json/mapgen/cabin.json +++ b/data/json/mapgen/cabin.json @@ -786,7 +786,7 @@ "r": { "furniture": "f_rack", "items": { "item": "cannedfood", "chance": 30 } } }, "terrain": { - "#": "t_rock", + "#": "t_soil", "+": "t_door_c", "-": "t_wall", "<": "t_stairs_up", diff --git a/data/json/mapgen/cathedral.json b/data/json/mapgen/cathedral.json index cab83defac573..04e1b8a96cc8f 100644 --- a/data/json/mapgen/cathedral.json +++ b/data/json/mapgen/cathedral.json @@ -111,7 +111,7 @@ ], "terrain": { " ": [ "t_grass", "t_grass", "t_grass", "t_dirt" ], - "#": "t_rock", + "#": "t_soil", "+": "t_door_c", "-": "t_wall", ".": "t_floor", diff --git a/data/json/mapgen/cave.json b/data/json/mapgen/cave.json index fe2edb477c030..7b64580e3501a 100644 --- a/data/json/mapgen/cave.json +++ b/data/json/mapgen/cave.json @@ -34,9 +34,9 @@ ], "terrain": { ".": [ [ "t_region_groundcover_forest", 4 ], [ "t_region_tree", 1 ] ], - "|": "t_rock", - ",": "t_rock_roof", - "%": [ "t_rock", "t_region_groundcover_forest" ], + "|": "t_soil", + ",": "t_dirt_underground", + "%": [ "t_soil", "t_region_groundcover_forest" ], ";": "t_dirt", "<": "t_slope_down" }, @@ -85,10 +85,10 @@ ], "terrain": { ".": [ [ "t_region_groundcover_forest", 4 ], [ "t_region_tree", 1 ] ], - "|": "t_rock", - "%": [ "t_rock", "t_region_groundcover_forest" ], + "|": "t_soil", + "%": [ "t_soil", "t_region_groundcover_forest" ], ";": "t_dirt", - ",": "t_rock_roof", + ",": "t_dirt_underground", "<": "t_slope_down" }, "furniture": { } @@ -129,11 +129,11 @@ ], "terrain": { ".": [ [ "t_region_groundcover_forest", 4 ], [ "t_region_tree", 1 ] ], - "|": "t_rock", - "%": [ "t_rock", "t_region_groundcover_forest" ], + "|": "t_soil", + "%": [ "t_soil", "t_region_groundcover_forest" ], ";": "t_dirt", - ",": "t_rock_roof", - "W": "t_rock_roof", + ",": "t_dirt_underground", + "W": "t_dirt_underground", "<": "t_slope_down" }, "furniture": { }, @@ -176,11 +176,11 @@ ], "terrain": { ".": [ [ "t_region_groundcover_forest", 4 ], [ "t_region_tree", 1 ] ], - "|": "t_rock", - "%": [ "t_rock", "t_region_groundcover_forest" ], + "|": "t_soil", + "%": [ "t_soil", "t_region_groundcover_forest" ], ";": "t_dirt", - ",": "t_rock_roof", - "W": "t_rock_roof", + ",": "t_dirt_underground", + "W": "t_dirt_underground", "<": "t_slope_down" }, "fields": { "W": { "field": "fd_web", "intensity": 1, "age": 10 } }, @@ -222,11 +222,11 @@ ], "terrain": { ".": [ [ "t_region_groundcover_forest", 4 ], [ "t_region_tree", 1 ] ], - "|": "t_rock", - "%": [ "t_rock", "t_region_groundcover_forest" ], + "|": "t_soil", + "%": [ "t_soil", "t_region_groundcover_forest" ], ";": "t_dirt", - ",": "t_rock_roof", - "B": "t_rock_roof", + ",": "t_dirt_underground", + "B": "t_dirt_underground", "<": "t_slope_down" }, "furniture": { }, @@ -268,12 +268,12 @@ ], "terrain": { ".": [ [ "t_region_groundcover_forest", 4 ], [ "t_region_tree", 1 ] ], - "|": "t_rock", - "%": [ "t_rock", "t_region_groundcover_forest" ], + "|": "t_soil", + "%": [ "t_soil", "t_region_groundcover_forest" ], ";": "t_dirt", - ",": "t_rock_roof", - "B": "t_rock_roof", - "W": "t_rock_roof", + ",": "t_dirt_underground", + "B": "t_dirt_underground", + "W": "t_dirt_underground", "<": "t_slope_down" }, "furniture": { }, @@ -316,12 +316,12 @@ ], "terrain": { ".": [ [ "t_region_groundcover_forest", 4 ], [ "t_region_tree", 1 ] ], - "|": "t_rock", - "%": [ "t_rock", "t_region_groundcover_forest" ], + "|": "t_soil", + "%": [ "t_soil", "t_region_groundcover_forest" ], ";": "t_dirt", - ",": "t_rock_roof", - "B": "t_rock_roof", - "W": "t_rock_roof", + ",": "t_dirt_underground", + "B": "t_dirt_underground", + "W": "t_dirt_underground", "<": "t_slope_down" }, "fields": { "W": { "field": "fd_web", "intensity": 1, "age": 10 } }, @@ -363,12 +363,12 @@ ], "terrain": { ".": [ [ "t_region_groundcover_forest", 4 ], [ "t_region_tree", 1 ] ], - "|": "t_rock", - "%": [ "t_rock", "t_region_groundcover_forest" ], + "|": "t_soil", + "%": [ "t_soil", "t_region_groundcover_forest" ], ";": "t_dirt", - ",": "t_rock_roof", - "B": "t_rock_roof", - "W": "t_rock_roof", + ",": "t_dirt_underground", + "B": "t_dirt_underground", + "W": "t_dirt_underground", "<": "t_slope_down" }, "furniture": { }, @@ -411,17 +411,17 @@ ], "terrain": { ".": [ [ "t_region_groundcover_forest", 4 ], [ "t_region_tree", 1 ] ], - "|": "t_rock", - "%": [ "t_rock", "t_region_groundcover_forest" ], - ";": "t_rock_floor_no_roof", - "!": "t_rock_floor_no_roof", - "?": "t_rock_floor_no_roof", - "#": "t_rock_floor_no_roof", - "~": "t_rock_floor_no_roof", - "@": "t_rock_roof", - ",": "t_rock_roof", - "q": "t_rock_roof", - "R": "t_rock_floor_no_roof" + "|": "t_soil", + "%": [ "t_soil", "t_region_groundcover_forest" ], + ";": "t_dirt", + "!": "t_dirt", + "?": "t_dirt", + "#": "t_dirt", + "~": "t_dirt", + "@": "t_dirt_underground", + ",": "t_dirt_underground", + "q": "t_dirt_underground", + "R": "t_dirt" }, "furniture": { "R": [ [ "f_boulder_small", 1 ], [ "f_null", 10 ] ] }, "item": { @@ -479,7 +479,7 @@ "............,...........", "............>..........." ], - "terrain": { ".": "t_rock", ",": "t_rock_floor", "W": "t_rock_floor", ">": "t_slope_up", "~": "t_water_dp" }, + "terrain": { ".": "t_soil", ",": "t_dirt", "W": "t_dirt", ">": "t_slope_up", "~": "t_water_dp" }, "furniture": { "W": "f_boulder_small" }, "item": { "W": { "item": "longsword", "chance": 100 } }, "monster": { @@ -497,7 +497,7 @@ "om_terrain": [ "cave_underground" ], "weight": 1000, "object": { - "fill_ter": "t_rock_floor", + "fill_ter": "t_dirt", "rotation": [ 0, 3 ], "rows": [ "........................", @@ -525,7 +525,7 @@ "............,...........", "............>..........." ], - "terrain": { ".": "t_rock", ",": "t_rock_floor", ">": "t_slope_up" }, + "terrain": { ".": "t_soil", ",": "t_dirt", ">": "t_slope_up" }, "furniture": { }, "items": { "~": [ { "item": "monparts", "chance": 2 }, { "item": "trash_forest", "chance": 2 } ] } } @@ -536,7 +536,7 @@ "om_terrain": [ "cave_underground" ], "weight": 800, "object": { - "fill_ter": "t_rock_floor", + "fill_ter": "t_dirt", "rotation": [ 0, 3 ], "rows": [ "........................", @@ -564,7 +564,7 @@ "............ ...........", "............>..........." ], - "terrain": { ".": "t_rock", " ": "t_rock_floor", ">": "t_slope_up" }, + "terrain": { ".": "t_soil", " ": "t_dirt", ">": "t_slope_up" }, "furniture": { }, "monster": { "M": { "monster": "mon_nakedmolerat_giant" }, " ": { "monster": "mon_nakedmolerat_giant", "chance": 2 } } } @@ -575,7 +575,7 @@ "om_terrain": [ "cave_underground" ], "weight": 500, "object": { - "fill_ter": "t_rock_floor", + "fill_ter": "t_dirt", "rotation": [ 0, 3 ], "rows": [ "........................", @@ -603,7 +603,7 @@ "...........,,,..........", "............>..........." ], - "terrain": { ".": "t_rock", ",": "t_rock_floor", "!": "t_rock_floor", ">": "t_slope_up" }, + "terrain": { ".": "t_soil", ",": "t_dirt", "!": "t_dirt", ">": "t_slope_up" }, "furniture": { "C": "f_crate_c", "S": "f_utility_shelf", "G": [ "f_grave_stone_old", "f_grave_head", "f_grave_monument" ] }, "item": { "!": { "item": "material_soil", "chance": 40, "amount": [ 5, 10 ] }, @@ -618,7 +618,7 @@ "om_terrain": [ "cave_underground" ], "weight": 250, "object": { - "fill_ter": "t_rock_floor", + "fill_ter": "t_dirt", "rotation": [ 0, 3 ], "rows": [ "........................", @@ -646,7 +646,7 @@ "............ ....F.7J G.", "............>..........." ], - "terrain": { ".": "t_rock", " ": "t_rock_floor", ">": "t_slope_up" }, + "terrain": { ".": "t_soil", " ": "t_dirt", ">": "t_slope_up" }, "furniture": { "f": "f_firering", "c": "f_camp_chair", @@ -688,7 +688,7 @@ "om_terrain": [ "cave_underground" ], "weight": 700, "object": { - "fill_ter": "t_rock_floor", + "fill_ter": "t_dirt", "rotation": [ 0, 3 ], "rows": [ "........................", @@ -716,7 +716,7 @@ "........... 2 ..........", "............>..........." ], - "terrain": { ".": "t_rock", " ": "t_rock_floor", ">": "t_slope_up", "2": "t_railroad_track_small" }, + "terrain": { ".": "t_soil", " ": "t_dirt", ">": "t_slope_up", "2": "t_railroad_track_small" }, "furniture": { }, "item": { "1": { "item": "broken_molebot", "chance": 2 } }, "items": { "1": { "item": "cave_minerals", "chance": 40, "repeat": [ 1, 3 ] } }, @@ -728,7 +728,7 @@ "method": "json", "om_terrain": [ "cave_rat_underground" ], "object": { - "fill_ter": "t_rock_floor", + "fill_ter": "t_dirt", "rotation": [ 0, 3 ], "rows": [ "1...........2...........", @@ -756,7 +756,7 @@ "...................... ", "...................... <" ], - "terrain": { ".": "t_rock", " ": "t_rock_floor", ">": "t_slope_up", "<": "t_slope_down" }, + "terrain": { ".": "t_soil", " ": "t_dirt", ">": "t_slope_up", "<": "t_slope_down" }, "furniture": { }, "nested": { "1": { "chunks": [ "cave_nw" ] }, @@ -771,7 +771,7 @@ "method": "json", "om_terrain": [ "cave_rat" ], "object": { - "fill_ter": "t_rock_floor", + "fill_ter": "t_dirt", "rotation": [ 0, 3 ], "rows": [ "........................", @@ -800,10 +800,10 @@ "........................" ], "terrain": { - " ": "t_rock_floor", - ".": "t_rock", - "|": [ [ "t_rock", 20 ], [ "t_rock_floor", 80 ] ], - "%": [ "t_rock", "t_rock_floor" ], + " ": "t_dirt", + ".": "t_soil", + "|": [ [ "t_soil", 20 ], [ "t_dirt", 80 ] ], + "%": [ "t_soil", "t_dirt" ], "<": "t_slope_up" }, "furniture": { }, diff --git a/data/json/mapgen/earth.json b/data/json/mapgen/earth.json new file mode 100644 index 0000000000000..df055df398fce --- /dev/null +++ b/data/json/mapgen/earth.json @@ -0,0 +1,37 @@ +[ + { + "method": "json", + "object": { + "rows": [ + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................" + ], + "terrain": { ".": "t_soil" } + }, + "om_terrain": "solid_earth", + "type": "mapgen", + "weight": 100 + } +] diff --git a/data/json/mapgen/helipad.json b/data/json/mapgen/helipad.json index 95fe689dccd82..21e3471acfeb3 100644 --- a/data/json/mapgen/helipad.json +++ b/data/json/mapgen/helipad.json @@ -71,7 +71,7 @@ "item": { "subtype": "distribution", "entries": [ - { "group": "military_patrol_food", "prob": 50, "count": [ 3, 5 ] }, + { "group": "MRE", "prob": 50, "count": [ 3, 5 ] }, { "group": "infantry_common_gear", "prob": 5, "count": [ 1, 2 ] }, { "group": "mil_food", "prob": 40, "count": [ 1, 5 ] }, { "group": "infantry_medical_gear", "prob": 5, "count": [ 1, 2 ] }, diff --git a/data/json/mapgen/house/crack_house.json b/data/json/mapgen/house/crack_house.json index e68ebdc45a20f..6620f98553c1f 100644 --- a/data/json/mapgen/house/crack_house.json +++ b/data/json/mapgen/house/crack_house.json @@ -106,8 +106,14 @@ " ", " " ], + "parameters": { + "roof_type": { + "type": "ter_str_id", + "default": { "distribution": [ [ "t_flat_roof", 2 ], [ "t_tar_flat_roof", 1 ], [ "t_shingle_flat_roof", 1 ] ] } + } + }, "palettes": [ "roof_palette" ], - "terrain": { ".": "t_shingle_flat_roof" } + "terrain": { ".": { "param": "roof_type" } } } }, { diff --git a/data/json/mapgen/hunting_lodge.json b/data/json/mapgen/hunting_lodge.json index c675c04bebdcd..280177ba6b181 100644 --- a/data/json/mapgen/hunting_lodge.json +++ b/data/json/mapgen/hunting_lodge.json @@ -9,9 +9,9 @@ "rows": [ ".%##W###W###W###W###+##W#################%......", ".*#c B#c B#B c#B c# #h s# >#*......", - ".*Wd B#d B#B d#B d# #h T# W*......", - ".*##=###=###=###=## ##=## #*......", - ".*# #*......", + ".*Wd B#d B#B d#B d# #h T# ZZZ W*......", + ".*##=###=###=###=## ##=## ZZZ #*......", + ".*# ZZZ #*......", ".*W W*......", ".*# YY YY AAAAAAAA a OOO >#*......", ".%########+######################## ###%......", @@ -88,24 +88,24 @@ "fill_ter": "t_rock", "rows": [ " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", - " % % ", - " % % ", - " % % ", - " % % ", - " % % ", - " % % ", - " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% ", - " % % ", - " %%%%%%%%%%%%%% % ", - " % BB% ", - " % % ", - " % % ", - " % % ", - " % % ", - " % % ", - " %%%%% %%%%%%%% ", - " %<| % ", - " % + % ", + " %______________________________________% ", + " %______________________________________% ", + " %______________________________________% ", + " %______________________________________% ", + " %______________________________________% ", + " %______________________________________% ", + " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%_%%% ", + " %_% ", + " %%%%%%%%%%%%%%_% ", + " %____________BB% ", + " %______________% ", + " %______________% ", + " %______________% ", + " %______________% ", + " %______________% ", + " %%%%%___%%%%%%%% ", + " %<|___% ", + " % +___% ", " %%%%%%% ", " ", " ", diff --git a/data/json/mapgen/irradiator_1.json b/data/json/mapgen/irradiator_1.json index bb22f689dc0a0..c19bb1e14b97d 100644 --- a/data/json/mapgen/irradiator_1.json +++ b/data/json/mapgen/irradiator_1.json @@ -110,7 +110,7 @@ "'f**|MP PPPPP|----==-------XXXXXXXXNXXXXXXXX-----==-----|PPZPPPZPPP|**f'", "'f**|TTTTTTTT| C K KXXXXXXX!Q!!!!!Q!XXXXXX J |TTTTTTTTTT|**f'", "'f**|--------4 C K KKKXCCMMCX!!UUUUU!!XMMCCX J J C 4----------|**f'", - "'f**|( N C K KXCXXXCX!!UUUUU!!XCXXCX J J C N (|**f'", + "'f**| N C K KXCXXXCX!!UUUUU!!XCXXCX J J C N |**f'", "'f**| CCCCCCCMCC C CC1 XXCCCCCC3CCCCCCX 2 M CCMCCCCCCCCC |**f'", "'f**| C N C K CCCC KXXXX!!UUUUU!!XXX CCCCCCM J C N C |**f'", "'f**| C |----4 C K KXXXX!!UUUUU!!XXX M J C 4------| C |**f'", @@ -129,7 +129,7 @@ "'f**| C |M KKKKKKKKKKKK |A AAAAR RAAAA A| JJJJJJJJJJJ | C |**f'", "'f**| CCMCC |A D D A|J CCCMCC |**f'", "'f**| N C KKKKKKKKKKKK |A ^oo^R R^oo^ A|J JJW MMMMMCCCC N |**f'", - "'f**| ( 4 C |-------++-------|J J W MMMMM 4 ( |**f'", + "'f**| 4 C |-------++-------|J J W MMMMM 4 |**f'", "'f**| N C KKKKKKKKKKKK |gggR{{R R{{Rggg|J JJW MMMMMCCCC N |**f'", "'f**| CCMCC |g%%D%%D D%%D%%g|J CCCMCC |**f'", "'f**| C |M KKKKKKKKKKKK |gggR{{R R{{Rggg| WWWWWWWWWWW N C |**f'", @@ -160,9 +160,9 @@ "'f**L_____________________Lss******ss******ssL_____________________L**f'", "'f**L____________________Ls##ssss##ss##ssss##sL____________________L**f'", "'f**L___________________Lss--w=w---DD---w=w--ssL___________________L**f'", - "'fsss__________________Lssswdh ^hx xhA hdwsssL__________________sssf'", - "'fs(s__________________Ls(swxh hd dh hxws(sL__________________s(sf'", - "'fsss__________________Lsss--w-w---DD---w-w--sssL__________________sssf'", + "'f**L__________________Lssswdh ^hx xhA hdwsssL__________________L**f'", + "'f**L__________________Lssswxh hd dh hxwsssL__________________L**f'", + "'f**L__________________Lsss--w-w---DD---w-w--sssL__________________L**f'", "'ffffGGGGGGGGGGGGGGGGGGffffffffffffGGffffffffffffGGGGGGGGGGGGGGGGGGffff'", "[[[[L__________________LssssssssssssssssssssssssL__________________L[[[[", "[[[[L__________________LssssssssssssssssssssssssL__________________L[[[[" @@ -314,7 +314,7 @@ ], "liquids": { "T": { "liquid": "water_clean", "amount": [ 200, 600 ] } }, "fields": { "U": { "field": "fd_nuke_gas", "intensity": 3, "age": 990 }, "/": { "field": "fd_shock_vent" } }, - "monster": { "(": { "monster": "mon_turret_rifle" }, "!": { "monster": "mon_hazmatbot", "chance": 5 } }, + "monster": { "!": { "monster": "mon_hazmatbot", "chance": 5 } }, "monsters": { "h": { "monster": "GROUP_ZOMBIE", "chance": 50 }, "o": { "monster": "GROUP_ZOMBIE", "chance": 50 }, diff --git a/data/json/mapgen/isherwood_farms/farm_isherwood.json b/data/json/mapgen/isherwood_farms/farm_isherwood.json index 38b63d7da9e0e..30ac9d706880d 100644 --- a/data/json/mapgen/isherwood_farms/farm_isherwood.json +++ b/data/json/mapgen/isherwood_farms/farm_isherwood.json @@ -262,7 +262,7 @@ "om_terrain": "farm_isherwood_2_cellar", "object": { "faction_owner": [ { "id": "isherwood_family", "x": [ 0, 23 ], "y": [ 0, 23 ] } ], - "fill_ter": "t_rock_floor", + "fill_ter": "t_dirt", "rows": [ " ", " ", @@ -289,7 +289,7 @@ " ", " " ], - "terrain": { "<": "t_stairs_up", "#": "t_rock_wall", ".": "t_rock_floor", " ": "t_rock" }, + "terrain": { "<": "t_stairs_up", "#": "t_rock_wall", ".": "t_dirt", " ": "t_soil" }, "furniture": { "a": "f_rack", "r": "f_rack", diff --git a/data/json/mapgen/lab/lab_central.json b/data/json/mapgen/lab/lab_central.json index 7caf731dbfa81..7a5d1f77562da 100644 --- a/data/json/mapgen/lab/lab_central.json +++ b/data/json/mapgen/lab/lab_central.json @@ -63,7 +63,7 @@ "om_terrain": [ "central_lab_shaft" ], "weight": 100, "object": { - "fill_ter": "t_rock", + "fill_ter": "t_soil", "rows": [ " ", " ", diff --git a/data/json/mapgen/lab/lab_surface/lab_surface_big_z-1.json b/data/json/mapgen/lab/lab_surface/lab_surface_big_z-1.json index 1114307de4eaf..fd03649a1d0c2 100644 --- a/data/json/mapgen/lab/lab_surface/lab_surface_big_z-1.json +++ b/data/json/mapgen/lab/lab_surface/lab_surface_big_z-1.json @@ -165,7 +165,7 @@ ], "terrain": { "|": "t_strconc_wall", - "#": "t_rock", + "#": "t_soil", "<": "t_stairs_up", ">": "t_stairs_down", "@": "t_elevator_control_off", diff --git a/data/json/mapgen/lab_subway_vent_shaft.json b/data/json/mapgen/lab_subway_vent_shaft.json index 548e622f1546a..6592e9c8b78f3 100644 --- a/data/json/mapgen/lab_subway_vent_shaft.json +++ b/data/json/mapgen/lab_subway_vent_shaft.json @@ -17,6 +17,7 @@ ">": "t_ladder_down", "u": "t_chainfence", "U": "t_chainfence", + "0": "t_soil", "#": "t_rock" }, "furniture": { "%": "f_machinery_heavy" } @@ -100,30 +101,30 @@ "weight": 1000, "object": { "rows": [ - "########################", - "########################", - "########################", - "########################", - "########################", - "########################", - "########################", - "########################", - "########-------#########", - "########-``%``-#########", - "########-``w``-#########", - "########-``<``-#########", - "########-``w``-#########", - "########-`>w``-#########", - "########-------#########", - "########################", - "########################", - "########################", - "########################", - "########################", - "########################", - "########################", - "########################", - "########################" + "000000000000000000000000", + "000000000000000000000000", + "000000000000000000000000", + "000000000000000000000000", + "000000000000000000000000", + "000000000000000000000000", + "000000000000000000000000", + "000000000000000000000000", + "00000000-------000000000", + "00000000-``%``-000000000", + "00000000-``w``-000000000", + "00000000-``<``-000000000", + "00000000-``w``-000000000", + "00000000-`>w``-000000000", + "00000000-------000000000", + "000000000000000000000000", + "000000000000000000000000", + "000000000000000000000000", + "000000000000000000000000", + "000000000000000000000000", + "000000000000000000000000", + "000000000000000000000000", + "000000000000000000000000", + "000000000000000000000000" ], "palettes": [ "lab_subway_vent_shaft" ] } diff --git a/data/json/mapgen/lmoe.json b/data/json/mapgen/lmoe.json index 6eb5181a128ce..f90e7672acd5d 100644 --- a/data/json/mapgen/lmoe.json +++ b/data/json/mapgen/lmoe.json @@ -117,7 +117,7 @@ "//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", + "fill_ter": "t_dirt", "rows": [ "########################", "########################", diff --git a/data/json/mapgen/mall/mall_basement.json b/data/json/mapgen/mall/mall_basement.json index 3894a522ec0e4..434fc0b7e5a46 100644 --- a/data/json/mapgen/mall/mall_basement.json +++ b/data/json/mapgen/mall/mall_basement.json @@ -47,7 +47,7 @@ "*": "t_linoleum_gray", ",": "t_linoleum_white", "6": "t_carpet_concrete_red", - ".": "t_rock", + ".": "t_soil", "{": "t_linoleum_gray", "Y": "t_linoleum_gray", "}": "t_linoleum_white", @@ -107,7 +107,7 @@ "#": "t_brick_wall", "*": "t_linoleum_gray", ",": "t_linoleum_white", - ".": "t_rock", + ".": "t_soil", "{": "t_linoleum_gray", "Y": "t_linoleum_gray", "}": "t_linoleum_white" diff --git a/data/json/mapgen/mansion.json b/data/json/mapgen/mansion.json index e04c172b7f8b9..f69d7dce5292b 100644 --- a/data/json/mapgen/mansion.json +++ b/data/json/mapgen/mansion.json @@ -34,7 +34,7 @@ "###++##############++###" ], "palettes": [ "standard_domestic_palette" ], - "terrain": { " ": "t_rock", ".": "t_thconc_floor", "]": "t_sewage_pipe", ")": "t_sewage_pump" }, + "terrain": { " ": "t_soil", ".": "t_thconc_floor", "]": "t_sewage_pipe", ")": "t_sewage_pump" }, "furniture": { "?": "f_generator_broken", "!": [ "f_crate_c", "f_cardboard_box" ] }, "items": { ".": { "item": "clutter_basement" }, @@ -171,7 +171,7 @@ ], "palettes": [ "standard_domestic_palette" ], "terrain": { - " ": "t_rock", + " ": "t_soil", ".": "t_thconc_floor", "0": "t_thconc_floor", "-": "t_carpet_concrete_red", @@ -324,7 +324,7 @@ " " ], "palettes": [ "standard_domestic_palette" ], - "terrain": { " ": "t_rock", ".": "t_thconc_floor" } + "terrain": { " ": "t_soil", ".": "t_thconc_floor" } } }, { @@ -453,7 +453,7 @@ ], "palettes": [ "standard_domestic_palette" ], "terrain": { - " ": "t_rock", + " ": "t_soil", ".": "t_thconc_floor", "]": "t_sewage_pipe", ")": "t_sewage_pump", @@ -707,7 +707,7 @@ ], "palettes": [ "standard_domestic_palette" ], "terrain": { - " ": "t_rock", + " ": "t_soil", ".": "t_thconc_floor", "]": "t_sewage_pipe", ")": "t_sewage_pump", @@ -814,7 +814,7 @@ ], "palettes": [ "standard_domestic_palette" ], "terrain": { - " ": "t_rock", + " ": "t_soil", ".": "t_thconc_floor", "]": "t_sewage_pipe", ")": "t_sewage_pump", @@ -962,7 +962,7 @@ ], "palettes": [ "standard_domestic_palette", "standard_domestic_lino_bathroom" ], "terrain": { - " ": "t_rock", + " ": "t_soil", ".": "t_thconc_floor", "]": "t_door_glass_c", "-": "t_carpet_concrete_purple", @@ -1133,7 +1133,7 @@ ], "palettes": [ "standard_domestic_palette", "standard_domestic_lino_bathroom" ], "terrain": { - " ": "t_rock", + " ": "t_soil", ".": "t_thconc_floor", "]": "t_sewage_pipe", ")": "t_sewage_pump", @@ -1325,7 +1325,7 @@ ], "palettes": [ "standard_domestic_palette", "standard_domestic_lino_bathroom" ], "terrain": { - " ": "t_rock", + " ": "t_soil", ".": "t_thconc_floor", "x": "t_carpet_concrete_yellow", "-": "t_carpet_concrete_yellow", @@ -1461,7 +1461,7 @@ "om_terrain": [ "mansion_+_dn", "mansion_+1d" ], "weight": 1000, "object": { - "fill_ter": "t_rock_floor", + "fill_ter": "t_dirt", "rows": [ "#......................#", "#......................#", @@ -1489,7 +1489,7 @@ "# #" ], "palettes": [ "standard_domestic_palette" ], - "terrain": { " ": "t_rock", ".": "t_thconc_floor" }, + "terrain": { " ": "t_soil", ".": "t_thconc_floor" }, "items": { ".": { "item": "clutter_basement" } } } }, @@ -1612,7 +1612,7 @@ ], "palettes": [ "standard_domestic_palette" ], "terrain": { - " ": "t_rock", + " ": "t_soil", ".": "t_thconc_floor", "]": "t_sewage_pipe", ")": "t_sewage_pump", @@ -1762,7 +1762,7 @@ "###########++###########" ], "palettes": [ "standard_domestic_palette" ], - "terrain": { " ": "t_rock", ".": "t_thconc_floor", "]": "t_sewage_pipe", ")": "t_sewage_pump" }, + "terrain": { " ": "t_soil", ".": "t_thconc_floor", "]": "t_sewage_pipe", ")": "t_sewage_pump" }, "furniture": { "&": "f_table", "=": "f_machinery_old", @@ -1920,7 +1920,7 @@ ], "palettes": [ "standard_domestic_palette", "standard_domestic_lino_bathroom" ], "terrain": { - " ": "t_rock", + " ": "t_soil", ".": "t_thconc_floor", "`": "t_linoleum_gray", "-": "t_carpet_concrete_yellow", @@ -2103,7 +2103,7 @@ " ##########++#####" ], "palettes": [ "standard_domestic_palette" ], - "terrain": { " ": "t_rock", ".": "t_thconc_floor", "]": "t_sewage_pipe", ")": "t_sewage_pump" }, + "terrain": { " ": "t_soil", ".": "t_thconc_floor", "]": "t_sewage_pipe", ")": "t_sewage_pump" }, "furniture": { "=": "f_machinery_old", "!": [ "f_crate_c", "f_cardboard_box" ] }, "items": { ".": { "item": "clutter_basement" }, @@ -2252,7 +2252,7 @@ " ##########++#####" ], "palettes": [ "standard_domestic_palette" ], - "terrain": { " ": "t_rock", ".": "t_thconc_floor", "]": "t_sewage_pipe", ")": "t_sewage_pump" }, + "terrain": { " ": "t_soil", ".": "t_thconc_floor", "]": "t_sewage_pipe", ")": "t_sewage_pump" }, "furniture": { "=": "f_machinery_old", "&": "f_table", "?": "f_generator_broken", "!": [ "f_crate_c", "f_cardboard_box" ] }, "items": { ".": { "item": "clutter_basement" }, "!": { "item": "crate_stack", "chance": 100 } }, "place_monsters": [ { "monster": "GROUP_MANSION", "x": [ 8, 21 ], "y": [ 8, 21 ], "density": 0.1 } ] @@ -2409,7 +2409,7 @@ " ##########++#####" ], "palettes": [ "standard_domestic_palette" ], - "terrain": { " ": "t_rock", ".": "t_thconc_floor" }, + "terrain": { " ": "t_soil", ".": "t_thconc_floor" }, "furniture": { "=": "f_table", "!": [ "f_crate_c", "f_cardboard_box" ] }, "items": { ".": { "item": "clutter_basement" }, @@ -2568,7 +2568,7 @@ ], "palettes": [ "standard_domestic_palette", "standard_domestic_lino_bathroom" ], "terrain": { - " ": "t_rock", + " ": "t_soil", ".": "t_thconc_floor", "]": "t_sewage_pipe", ")": "t_sewage_pump", @@ -2728,7 +2728,7 @@ " ###########++#####" ], "palettes": [ "standard_domestic_palette" ], - "terrain": { " ": "t_rock", ".": "t_thconc_floor", "]": "t_sewage_pipe", ")": "t_sewage_pump", "/": "t_door_locked_interior" }, + "terrain": { " ": "t_soil", ".": "t_thconc_floor", "]": "t_sewage_pipe", ")": "t_sewage_pump", "/": "t_door_locked_interior" }, "furniture": { "%": "f_rack_wood", "!": "f_wood_keg", diff --git a/data/json/mapgen/mil_surplus.json b/data/json/mapgen/mil_surplus.json index 57be8a612fd0a..173c5280b3b6e 100644 --- a/data/json/mapgen/mil_surplus.json +++ b/data/json/mapgen/mil_surplus.json @@ -165,15 +165,15 @@ "nested": { "|": { "chunks": [ [ "bile_field", 10 ], [ "shelter_graffiti", 5 ], [ "general_graffiti", 20 ], [ "null", 75 ] ] }, "-": { "chunks": [ [ "bile_field", 10 ], [ "shelter_graffiti", 5 ], [ "general_graffiti", 20 ], [ "null", 75 ] ] }, - "А": { "chunks": [ [ "destroyed_rack", 20 ], [ "null", 80 ] ] }, - "Б": { "chunks": [ [ "destroyed_rack", 20 ], [ "null", 80 ] ] }, - "В": { "chunks": [ [ "destroyed_rack", 20 ], [ "null", 80 ] ] }, - "Г": { "chunks": [ [ "destroyed_rack", 20 ], [ "null", 80 ] ] }, - "Д": { "chunks": [ [ "destroyed_rack", 20 ], [ "null", 80 ] ] }, - "Е": { "chunks": [ [ "destroyed_rack", 20 ], [ "null", 80 ] ] }, - "!": { "chunks": [ [ "destroyed_mannequin", 80 ], [ "null", 20 ] ] }, + "А": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] }, + "Б": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] }, + "В": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] }, + "Г": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] }, + "Д": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] }, + "Е": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] }, + "!": { "chunks": [ [ "destroyed_furniture", 80 ], [ "null", 20 ] ] }, "T": { "chunks": [ [ "deployed_small_tent", 20 ], [ "destroyed_small_tent", 20 ], [ "null", 60 ] ] }, - "S": { "chunks": [ [ "destroyed_chair", 80 ], [ "null", 20 ] ] }, + "S": { "chunks": [ [ "destroyed_furniture", 80 ], [ "null", 20 ] ] }, "1": { "chunks": [ [ "corpse_blood_casings_3x3", 50 ], [ "null", 50 ] ] } } } @@ -519,14 +519,14 @@ "nested": { "|": { "chunks": [ [ "bile_field", 10 ], [ "shelter_graffiti", 5 ], [ "general_graffiti", 20 ], [ "null", 75 ] ] }, "-": { "chunks": [ [ "bile_field", 10 ], [ "shelter_graffiti", 5 ], [ "general_graffiti", 20 ], [ "null", 75 ] ] }, - "А": { "chunks": [ [ "destroyed_rack", 20 ], [ "null", 80 ] ] }, - "Б": { "chunks": [ [ "destroyed_rack", 20 ], [ "null", 80 ] ] }, - "В": { "chunks": [ [ "destroyed_rack", 20 ], [ "null", 80 ] ] }, - "Г": { "chunks": [ [ "destroyed_rack", 20 ], [ "null", 80 ] ] }, - "Д": { "chunks": [ [ "destroyed_rack", 20 ], [ "null", 80 ] ] }, - "Е": { "chunks": [ [ "destroyed_rack", 20 ], [ "null", 80 ] ] }, - "!": { "chunks": [ [ "destroyed_mannequin", 80 ], [ "null", 20 ] ] }, - "S": { "chunks": [ [ "destroyed_chair", 80 ], [ "null", 20 ] ] }, + "А": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] }, + "Б": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] }, + "В": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] }, + "Г": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] }, + "Д": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] }, + "Е": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] }, + "!": { "chunks": [ [ "destroyed_furniture", 80 ], [ "null", 20 ] ] }, + "S": { "chunks": [ [ "destroyed_furniture", 80 ], [ "null", 20 ] ] }, "1": { "chunks": [ [ "corpse_blood_casings_3x3", 50 ], [ "null", 50 ] ] } } } @@ -863,7 +863,7 @@ "items": { ".": { "item": "trash_cart", "chance": 5 } }, "nested": { "|": { "chunks": [ [ "bile_field", 1 ], [ "shelter_graffiti", 10 ], [ "general_graffiti", 20 ], [ "null", 75 ] ] }, - "{": { "chunks": [ [ "destroyed_rack", 20 ], [ "null", 80 ] ] }, + "{": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] }, "D": { "chunks": [ [ "destroyed_glass_door_wall", 80 ], [ "null", 20 ] ] }, "1": { "chunks": [ [ "corpse_blood_casings_3x3", 50 ], [ "null", 50 ] ] } } diff --git a/data/json/mapgen/military/mil_base/mil_base_z0.json b/data/json/mapgen/military/mil_base/mil_base_z0.json index 782f5b5ee8ef9..664631853d50b 100644 --- a/data/json/mapgen/military/mil_base/mil_base_z0.json +++ b/data/json/mapgen/military/mil_base/mil_base_z0.json @@ -787,7 +787,7 @@ { "item": "556", "x": 18, "y": [ 9, 12 ], "chance": 75, "repeat": 150 }, { "item": "m249", "x": 20, "y": 9, "chance": 75, "repeat": 6 }, { "item": "m240", "x": 20, "y": 9, "chance": 75, "repeat": 4 }, - { "item": "m1014", "x": 20, "y": 10, "chance": 75, "repeat": 10 }, + { "item": "mossberg_930", "variant": "m1014", "x": 20, "y": 10, "chance": 75, "repeat": 10 }, { "item": "mossberg_590", "x": 20, "y": 10, "chance": 75, "repeat": 8 }, { "item": "m2010", "x": 20, "y": 11, "magazine": 100, "chance": 75, "repeat": 2 }, { "item": "m110a1", "x": 20, "y": 11, "magazine": 100, "chance": 75, "repeat": 8 }, @@ -1182,7 +1182,7 @@ { "item": "geiger_off", "x": 32, "y": 25, "chance": 50, "repeat": [ 10, 20 ] }, { "item": "rad_monitor", "x": 32, "y": 25, "chance": 50, "repeat": [ 10, 20 ] }, { "item": "cleansuit", "x": 32, "y": 25, "chance": 50, "repeat": [ 10, 20 ] }, - { "item": "aep_suit", "x": 32, "y": 25, "chance": 50, "repeat": [ 5, 10 ] }, + { "item": "hazmat_suit", "x": 32, "y": 25, "chance": 50, "repeat": [ 5, 10 ] }, { "item": "oxygen_tank", "x": 32, "y": 25, "chance": 50, "repeat": [ 10, 20 ] }, { "item": "wrapped_rad_badge", "x": 32, "y": 25, "chance": 50, "repeat": [ 20, 60 ] }, { "item": "prussian_blue", "x": 32, "y": 25, "chance": 50, "repeat": [ 20, 60 ] }, diff --git a/data/json/mapgen/mine/mine_shaft.json b/data/json/mapgen/mine/mine_shaft.json index 8fee0022eb3de..d242ed7b520e8 100644 --- a/data/json/mapgen/mine/mine_shaft.json +++ b/data/json/mapgen/mine/mine_shaft.json @@ -4,7 +4,7 @@ "method": "json", "om_terrain": "mine_shaft_middle", "object": { - "fill_ter": "t_rock", + "fill_ter": "t_soil", "rows": [ " <#", " #", diff --git a/data/json/mapgen/missile_silo.json b/data/json/mapgen/missile_silo.json index 864376dcf1e16..4512d7e9b02de 100644 --- a/data/json/mapgen/missile_silo.json +++ b/data/json/mapgen/missile_silo.json @@ -72,32 +72,33 @@ "fill_ter": "t_floor", "rows": [ " ", - " ", - " ......W tc...W ", - " .cTTc..X tc...s & 6", - " .cTTc..+... e....s r..", - " .cTTc.. . f...ba S.a", - " ....... . +X = ", - " CCCrxxa ............ ", - " a. 1 . ", - " ~~~~~~~~~ . . ", - " ~~|-----|~~ . . ", - " ~~|-`````-|~~ . . ", - " ~|-`*****`-|~ . X+ ", - " ~|`*******`|~ . B...a", - " ~|`*******`|~ . l...W", - " ~|`*******`|~?. B...l", - " ~|`*******`|~ . l...B", - " ~|`*******`|~ . B...l", - " ~|-`*****`-|~ . l...B", - " ~~|-`````-|~~ . ", - " ~~|-----|~~ . < ^ ", - " ~~~~~~~~~ ....?..$ ", - " > $ ", - " " + "@@@@@@@@@ @@@@@@@@ ", + "@......W@@ @tc...W@@@@@", + "@.cTTc..X@@@@tc...s@& 6@", + "@.cTTc..+...@e....s@r..@", + "@.cTTc..@@@.@f...ba@S.a@", + "@.......@ @.@@@+X@@@@=@@", + "@CCCrxxa@ @............@", + "@@@@@@@@@@@@@@a.@@1@@.@@", + " @@~~~~~~~~~@@@.@@@@@.@ ", + "@@~~|-----|~~@@.@ @.@ ", + "@~~|-`````-|~~@.@ @@.@ ", + "@~|-`*****`-|~@.@@@@X+@@", + "@~|`*******`|~@.@@B...a@", + "@~|`*******`|~@.@@l...W@", + "@~|`*******`|~?.@@B...l@", + "@~|`*******`|~@.@@l...B@", + "@~|`*******`|~@.@@B...l@", + "@~|-`*****`-|~@.@@l...B@", + "@~~|-`````-|~~@.@@@@@@@@", + "@@~~|-----|~~@@.@@@@<@^@", + " @@~~~~~~~~~@@@....?..$@", + " @@@@@@@@@@@ @@@@@@>@$@", + " @@@@@" ], "terrain": { - " ": "t_rock", + " ": "t_soil", + "@": "t_wall_metal", "*": "t_missile", "`": "t_hole", "|": "t_metal_railing", diff --git a/data/json/mapgen/necropolis/necropolisB1.json b/data/json/mapgen/necropolis/necropolisB1.json index 4a92701c41273..746856705358f 100644 --- a/data/json/mapgen/necropolis/necropolisB1.json +++ b/data/json/mapgen/necropolis/necropolisB1.json @@ -241,7 +241,7 @@ ".....................2x33..............................................." ], "palettes": [ "necropolis_b1" ], - "terrain": { "@": "t_rock_floor", "r": "t_rock_floor", "L": "t_rock_floor", "c": "t_rock_floor" }, + "terrain": { "@": "t_dirt", "r": "t_dirt", "L": "t_dirt", "c": "t_dirt" }, "place_monsters": [ { "monster": "GROUP_NECROPOLIS_SEWERS", "x": [ 1, 22 ], "y": [ 1, 22 ], "density": 0.05 }, { "monster": "GROUP_NECROPOLIS_SEWERS", "x": [ 25, 46 ], "y": [ 1, 22 ], "density": 0.05 }, @@ -322,8 +322,8 @@ "c": "t_metal_floor", "r": "t_metal_floor", "6": "t_metal_floor", - "z": "t_rock_floor", - "L": "t_rock_floor" + "z": "t_dirt", + "L": "t_dirt" }, "place_items": [ { "item": "vault_survival", "x": [ 21, 21 ], "y": [ 20, 23 ], "chance": 85 }, @@ -406,7 +406,7 @@ "33 .....233x......... ........ 3333X3333333333333333333 ........." ], "palettes": [ "necropolis_b1" ], - "terrain": { "n": "t_rock_floor", "h": "t_rock_floor", "@": "t_rock_floor", "o": "t_rock_floor" }, + "terrain": { "n": "t_dirt", "h": "t_dirt", "@": "t_dirt", "o": "t_dirt" }, "place_monsters": [ { "monster": "GROUP_NECROPOLIS_SEWERS", "x": [ 1, 22 ], "y": [ 1, 22 ], "density": 0.05 }, { "monster": "GROUP_NECROPOLIS_SEWERS", "x": [ 25, 46 ], "y": [ 1, 22 ], "density": 0.05 }, @@ -479,7 +479,7 @@ "................{......................................................." ], "palettes": [ "necropolis_b1" ], - "terrain": { "r": "t_rock_floor" }, + "terrain": { "r": "t_dirt" }, "place_monsters": [ { "monster": "GROUP_NECROPOLIS_SEWERS", "x": [ 1, 22 ], "y": [ 1, 22 ], "density": 0.05 }, { "monster": "GROUP_NECROPOLIS_SEWERS", "x": [ 25, 46 ], "y": [ 1, 22 ], "density": 0.05 }, @@ -555,7 +555,7 @@ "...............33....... ........33x..............................33..." ], "palettes": [ "necropolis_b1" ], - "terrain": { "z": "t_rock_floor" }, + "terrain": { "z": "t_dirt" }, "place_items": [ { "item": "cannedfood", "x": [ 6, 7 ], "y": [ 15, 16 ], "chance": 90 }, { "item": "cannedfood", "x": [ 7, 8 ], "y": [ 18, 19 ], "chance": 90 } @@ -704,14 +704,14 @@ ], "palettes": [ "necropolis_b1" ], "terrain": { - "d": "t_rock_floor", - "A": "t_rock_floor", - "z": "t_rock_floor", - "h": "t_rock_floor", - "n": "t_rock_floor", - "?": "t_rock_floor", - "f": "t_rock_floor", - "@": "t_rock_floor" + "d": "t_dirt", + "A": "t_dirt", + "z": "t_dirt", + "h": "t_dirt", + "n": "t_dirt", + "?": "t_dirt", + "f": "t_dirt", + "@": "t_dirt" }, "place_monsters": [ { "monster": "GROUP_NECROPOLIS_SEWERS", "x": [ 1, 22 ], "y": [ 1, 22 ], "density": 0.05 }, @@ -784,7 +784,7 @@ "................................3..............................33......." ], "palettes": [ "necropolis_b1" ], - "terrain": { "r": "t_rock_floor" }, + "terrain": { "r": "t_dirt" }, "place_monsters": [ { "monster": "GROUP_NECROPOLIS_SEWERS", "x": [ 1, 22 ], "y": [ 1, 22 ], "density": 0.05 }, { "monster": "GROUP_NECROPOLIS_SEWERS", "x": [ 25, 46 ], "y": [ 1, 22 ], "density": 0.05 }, diff --git a/data/json/mapgen/nested/aux_nested.json b/data/json/mapgen/nested/aux_nested.json index f93148be9c1ea..501bda059b11f 100644 --- a/data/json/mapgen/nested/aux_nested.json +++ b/data/json/mapgen/nested/aux_nested.json @@ -5,72 +5,6 @@ "nested_mapgen_id": "bile_field", "object": { "mapgensize": [ 1, 1 ], "place_fields": [ { "field": "fd_bile", "x": 0, "y": 0, "intensity": 1, "age": 10 } ] } }, - { - "type": "mapgen", - "method": "json", - "nested_mapgen_id": "destroyed_rack", - "object": { - "mapgensize": [ 1, 1 ], - "place_furniture": [ { "furn": "f_null", "x": 0, "y": 0 } ], - "place_item": [ - { "item": "scrap", "x": 0, "y": 0, "repeat": [ 2, 8 ], "chance": 100 }, - { "item": "steel_chunk", "x": 0, "y": 0, "repeat": [ 2, 4 ], "chance": 100 }, - { "item": "sheet_metal_small", "x": 0, "y": 0, "repeat": [ 6, 10 ], "chance": 100 }, - { "item": "pipe", "x": 0, "y": 0, "chance": 100 } - ] - } - }, - { - "type": "mapgen", - "method": "json", - "nested_mapgen_id": "destroyed_glass_fridge", - "object": { - "mapgensize": [ 1, 1 ], - "place_furniture": [ { "furn": "f_null", "x": 0, "y": 0 } ], - "place_item": [ - { "item": "sheet_metal", "x": 0, "y": 0, "repeat": [ 1, 3 ], "chance": 100 }, - { "item": "sheet_metal_small", "x": 0, "y": 0, "repeat": [ 6, 9 ], "chance": 100 }, - { "item": "steel_chunk", "x": 0, "y": 0, "repeat": [ 0, 3 ], "chance": 100 }, - { "item": "scrap", "x": 0, "y": 0, "repeat": [ 2, 8 ], "chance": 100 }, - { "item": "pipe_fittings", "x": 0, "y": 0, "repeat": [ 1, 3 ], "chance": 100 }, - { "item": "cable", "x": 0, "y": 0, "repeat": [ 1, 3 ], "chance": 100 }, - { "item": "hose", "x": 0, "y": 0, "chance": 100 }, - { "item": "cu_pipe", "x": 0, "y": 0, "repeat": [ 1, 4 ], "chance": 100 }, - { "item": "scrap_copper", "x": 0, "y": 0, "repeat": [ 0, 2 ], "chance": 100 }, - { "item": "glass_shard", "x": 0, "y": 0, "repeat": [ 25, 50 ], "chance": 100 }, - { "item": "motor_tiny", "x": 0, "y": 0, "chance": 25 } - ] - } - }, - { - "type": "mapgen", - "method": "json", - "nested_mapgen_id": "destroyed_table", - "object": { - "mapgensize": [ 1, 1 ], - "place_furniture": [ { "furn": "f_null", "x": 0, "y": 0 } ], - "place_item": [ - { "item": "2x4", "x": 0, "y": 0, "repeat": [ 2, 4 ], "chance": 100 }, - { "item": "wood_panel", "x": 0, "y": 0, "repeat": [ 0, 1 ], "chance": 100 }, - { "item": "nail", "x": 0, "y": 0, "repeat": [ 4, 8 ], "chance": 100 }, - { "item": "splinter", "x": 0, "y": 0, "chance": 100 } - ] - } - }, - { - "type": "mapgen", - "method": "json", - "nested_mapgen_id": "destroyed_bookcase", - "object": { - "mapgensize": [ 1, 1 ], - "place_furniture": [ { "furn": "f_null", "x": 0, "y": 0 } ], - "place_item": [ - { "item": "2x4", "x": 0, "y": 0, "repeat": [ 2, 6 ], "chance": 100 }, - { "item": "nail", "x": 0, "y": 0, "repeat": [ 4, 12 ], "chance": 100 }, - { "item": "splinter", "x": 0, "y": 0, "chance": 100 } - ] - } - }, { "type": "mapgen", "method": "json", @@ -81,38 +15,6 @@ "place_item": [ { "item": "glass_shard", "x": 0, "y": 0, "repeat": [ 42, 84 ], "chance": 100 } ] } }, - { - "type": "mapgen", - "method": "json", - "nested_mapgen_id": "destroyed_glass_door_fridge", - "object": { - "mapgensize": [ 1, 1 ], - "place_furniture": [ { "furn": "f_null", "x": 0, "y": 0 } ], - "place_item": [ - { "item": "sheet_metal", "x": 0, "y": 0, "repeat": [ 1, 3 ], "chance": 100 }, - { "item": "sheet_metal_small", "x": 0, "y": 0, "repeat": [ 6, 9 ], "chance": 100 }, - { "item": "steel_chunk", "x": 0, "y": 0, "repeat": [ 0, 3 ], "chance": 100 }, - { "item": "scrap", "x": 0, "y": 0, "repeat": [ 2, 8 ], "chance": 100 }, - { "item": "pipe_fittings", "x": 0, "y": 0, "repeat": [ 1, 3 ], "chance": 100 }, - { "item": "cable", "x": 0, "y": 0, "repeat": [ 1, 3 ], "chance": 100 }, - { "item": "hose", "x": 0, "y": 0, "chance": 100 }, - { "item": "cu_pipe", "x": 0, "y": 0, "repeat": [ 1, 4 ], "chance": 100 }, - { "item": "scrap_copper", "x": 0, "y": 0, "repeat": [ 0, 2 ], "chance": 100 }, - { "item": "glass_shard", "x": 0, "y": 0, "repeat": [ 25, 50 ], "chance": 100 }, - { "item": "motor_tiny", "x": 0, "y": 0, "chance": 25 } - ] - } - }, - { - "type": "mapgen", - "method": "json", - "nested_mapgen_id": "destroyed_mannequin", - "object": { - "mapgensize": [ 1, 1 ], - "place_furniture": [ { "furn": "f_null", "x": 0, "y": 0 } ], - "place_item": [ { "item": "splinter", "repeat": [ 9, 12 ], "x": 0, "y": 0, "chance": 100 } ] - } - }, { "type": "mapgen", "method": "json", @@ -144,16 +46,8 @@ { "type": "mapgen", "method": "json", - "nested_mapgen_id": "destroyed_chair", - "object": { - "mapgensize": [ 1, 1 ], - "place_furniture": [ { "furn": "f_null", "x": 0, "y": 0 } ], - "place_item": [ - { "item": "2x4", "x": 0, "y": 0, "chance": 100 }, - { "item": "nail", "x": 0, "y": 0, "repeat": [ 1, 5 ], "chance": 100 }, - { "item": "splinter", "x": 0, "y": 0, "repeat": 3, "chance": 100 } - ] - } + "nested_mapgen_id": "destroyed_furniture", + "object": { "mapgensize": [ 1, 1 ], "place_rubble": [ { "x": 0, "y": 0, "rubble_type": "f_null", "items": true } ] } }, { "type": "mapgen", diff --git a/data/json/mapgen/nested/lodge_nested.json b/data/json/mapgen/nested/lodge_nested.json index 7f89e90c344b3..1bea57c2cb8c4 100644 --- a/data/json/mapgen/nested/lodge_nested.json +++ b/data/json/mapgen/nested/lodge_nested.json @@ -163,12 +163,12 @@ { "item": "bullwhip", "chance": 100 } ], "c": [ - { "item": "bone", "chance": 80, "repeat": [ 4, 8 ] }, { "item": "pants", "chance": 100 }, { "item": "shirts", "chance": 100 }, { "item": "leather_shop_accessories", "chance": 10 } ] - } + }, + "place_fields": [ { "field": "fd_blood", "x": [ 2, 3 ], "y": [ 0, 1 ] }, { "field": "fd_gibs_flesh", "x": [ 2, 3 ], "y": [ 0, 1 ] } ] } }, { diff --git a/data/json/mapgen/nested/retail_nested.json b/data/json/mapgen/nested/retail_nested.json index 659a09c1baa5c..7fefcb8f93272 100644 --- a/data/json/mapgen/nested/retail_nested.json +++ b/data/json/mapgen/nested/retail_nested.json @@ -1500,5 +1500,94 @@ "Y": { "item": "trash", "chance": 30, "repeat": [ 1, 4 ] } } } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "3x3_woodcrafts_crates", + "//": "designed for the back of the woodwork craftshop", + "object": { + "mapgensize": [ 3, 3 ], + "rotation": [ 0, 3 ], + "rows": [ + " z", + " zz", + "zzz" + ], + "terrain": { " ": "t_null" }, + "furniture": { "z": [ [ "f_crate_c", 2 ], [ "f_crate_o", 1 ], [ "f_null", 3 ] ] }, + "items": { "z": { "item": "wood_workshop", "chance": 20, "repeat": [ 3, 5 ] } } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "4x4_woodcrafts_table_vertical", + "//": "designed for the large workbench tables in the woodwork craftshop", + "object": { + "mapgensize": [ 4, 4 ], + "rotation": [ 0, 3 ], + "rows": [ + "ttt ", + "ttt ", + "ttt ", + "ttt " + ], + "terrain": { " ": "t_null" }, + "furniture": { "t": "f_table" }, + "item": { "t": { "item": "sandpaper", "chance": 17 } }, + "place_item": [ { "item": "clamp", "x": 0, "y": [ 0, 3 ], "chance": 80 }, { "item": "clamp", "x": 2, "y": [ 0, 3 ], "chance": 80 } ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "4x4_woodcrafts_table_horizontal", + "//": "designed for the large workbench tables in the woodwork craftshop", + "object": { + "mapgensize": [ 4, 4 ], + "rotation": [ 0, 3 ], + "rows": [ + "tttt", + "tttt", + "tttt", + " " + ], + "terrain": { " ": "t_null" }, + "furniture": { "t": "f_table" }, + "item": { "t": { "item": "sandpaper", "chance": 17 } }, + "place_item": [ { "item": "clamp", "x": [ 0, 3 ], "y": 0, "chance": 80 }, { "item": "clamp", "x": [ 0, 3 ], "y": 2, "chance": 80 } ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "4x4_woodcrafts_display_nocanoe", + "//": "designed for the window display of the woodwork craftshop", + "object": { + "mapgensize": [ 4, 4 ], + "rotation": [ 0, 3 ], + "rows": [ + "ππππ", + " ", + " ", + " ", + " " + ], + "terrain": { " ": "t_null" }, + "furniture": { "π": "f_displaycase" }, + "items": { "π": { "item": "woodcrafts", "chance": 100, "repeat": [ 1, 3 ] } } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "1x1_woodcrafts_display_canoe", + "//": "designed for the window display of the woodwork craftshop", + "object": { + "mapgensize": [ 1, 1 ], + "rotation": [ 0, 3 ], + "place_vehicles": [ { "vehicle": "canoe", "x": 2, "y": 0, "chance": 100, "rotation": 180, "fuel": 0, "status": 0 } ] + } } ] diff --git a/data/json/mapgen/orchard_apple.json b/data/json/mapgen/orchard_apple.json index 1a664397aef46..01cab79230852 100644 --- a/data/json/mapgen/orchard_apple.json +++ b/data/json/mapgen/orchard_apple.json @@ -12,46 +12,33 @@ "q q", "q q", "q $$$$$$$$$$$$$$$$$$$$ q", - "q $------------------$ q", - "q $-,,C-.........OOX-$ q", - "q $-Ck,o.OcccO....OX-$ q", - "q $--ox-.........OXX-$ q", - "q $-.........--++----$ q", - "q $-..O......-T...XX-$ q", - "q $-f.c......+....XX-$ q", - "q $-f.c......+.....X-$ q", - "q $-f.c......-....XX-$ q", - "q $-..O......-.....X-$ q", - "q $-.........-....|X-$ q", - "q $------++---====---$ q", - "q $]]$]''''''] q", - "q 7$$7 $]]$]''''''] q", - "q $]]$]''''''] q", - "'''''''''''''''''''' q", - "'''''''''''''''''''' q", - "'''''''''''''''''''' q", - "'''''''''''''''''''' q" + "q $MMMMMMMMMMMMMMMMMM$ q", + "q $M,,CMmmmmmmmmmOOYM$ q", + "q $MCk,omEcccEmmmmOYM$ q", + "q $MMx+MmmmmmmmmmOYYM$ q", + "q $MmmmmmmmmmMM&&MMMM$ q", + "q $MmmEmmmmmmMzmmmXXM$ q", + "q $Mfmcmmmmmm&mmmmXXM$ q", + "q $Mfmcmmmmmm&mmmmmXM$ q", + "q $MfmcmmmmmmMmmmmXXM$ q", + "q $MmmEmmmmmmMmmmmmXM$ q", + "q $MmmmmmmmmmMmmmmGXM$ q", + "q $MMMMMM&&MMM====MMM$ q", + "q ^$]]$]......] q", + "q 7$$7 $]]$]......] q", + "]]]]]]]]]]]]]......] q", + "]...........]......] q", + "]...........]......] q", + "]...........]......] q", + "]...........]......] q" ], - "terrain": { - " ": [ "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass" ], - "$": [ "t_shrub", "t_shrub", "t_shrub", "t_shrub", "t_shrub", "t_underbrush" ], - "'": "t_pavement", - "+": "t_door_metal_c", - ",": "t_floor", - "-": "t_wall_metal", - ".": "t_metal_floor", - "7": "t_tree", - "=": "t_door_metal_locked", - "C": "t_floor", - "]": "t_sidewalk", - "k": "t_floor", - "o": "t_window", - "x": "t_door_c", - "|": "t_gates_control_metal", - "Q": "t_fence_v", - "q": "t_fence_h" + "palettes": [ "orchard_buildings" ], + "terrain": { " ": [ [ "t_grass", 5 ], "t_dirt" ] }, + "items": { + "O": { "item": "orchard_tools", "chance": 25, "repeat": [ 0, 1 ] }, + "X": { "item": "orchard_tools", "chance": 25, "repeat": [ 0, 1 ] }, + "Y": [ { "item": "orchard_tools", "chance": 50, "repeat": [ 1, 2 ] }, { "item": "orchard_supplies", "chance": 50 } ] }, - "furniture": { "C": "f_chair", "O": "f_crate_o", "T": "f_table", "X": "f_crate_c", "c": "f_counter", "f": "f_rack", "k": "f_desk" }, "place_items": [ { "item": "office", "x": 7, "y": 7, "chance": 75, "repeat": [ 1, 3 ] }, { "item": "office", "x": 16, "y": 10, "chance": 50 }, @@ -63,10 +50,9 @@ { "monster": "GROUP_ZOMBIE", "x": [ 1, 22 ], "y": [ 1, 22 ], "chance": 45 } ], "place_vehicles": [ - { "vehicle": "suburban_home", "x": 2, "y": 21, "chance": 45, "rotation": -90 }, - { "vehicle": "suburban_home", "x": 7, "y": 21, "chance": 45, "rotation": -90 }, - { "vehicle": "suburban_home", "x": 12, "y": 21, "chance": 45, "rotation": -90 }, - { "vehicle": "highway", "x": 16, "y": 21, "chance": 45 } + { "vehicle": "suburban_home", "x": [ 3, 8 ], "y": 22, "chance": 45, "rotation": 180 }, + { "vehicle": "highway", "x": 15, "y": 20, "chance": 60, "rotation": -90 }, + { "vehicle": "forklift", "x": 16, "y": 12, "chance": 20, "rotation": 90 } ] } }, @@ -78,80 +64,50 @@ "object": { "fill_ter": "t_floor", "rows": [ - ".................... q", - ".................... q", - ".................... q", - ".................... q", - "....................****", - "....................****", - "...................*****", - "...................* q", - "...................* q", - "..................** q", - ".................** q", - "..............**** q", - "q**********************q", - "q******bbb**-------+--$q", - "q******ttt**-cT{xxS,s-$q", - "q******bbb**oc,D,,,,F-$q", - "q***********oc,,,,,,F-$q", - "q***********-POOk,,TF-$q", - "q ********* -----++---$q", - "q7 ****btb 7-XOO,,,ff-$q", - "q ****btb -XO,,,,,|-$q", - "q7 ****btb 7---=====--$q", - "q ********* |*****dd q", + "].y.y.y.y.y.]......] q", + "...................] q", + "...................] q", + "...................] q", + "...................]****", + "..................]]****", + "..................]*****", + "..................]* q", + ".................]]* q", + "................]]** q", + ".............]]]]** q", + "]]]]]]]]]]]]]]**** q", + "q************^*********q", + "q******bbb**WWWWWWW+WW$q", + "q******ttt**WcT{vvS,sW$q", + "q******bbb**oc,D,,,,FW$q", + "q***********oc,,,,,,FW$q", + "q***********WPOOa,,TFW$q", + "q ********* WWWWW++WWW$q", + "q7 ****btb 7WXOO,,,ffW$q", + "q ****btb WXO,,,,,gW$q", + "q7 ****btb 7WWW=====WW$q", + "q ********* g*****dd q", "QQQQ***QQQQQQQQQQ***QQQQ" ], - "terrain": { - " ": [ "t_dirt", "t_grass_long", "t_grass", "t_grass", "t_grass", "t_grass" ], - "$": "t_shrub", - "*": "t_dirt", - "+": "t_door_c", - ",": "t_floor", - "-": "t_wall_wood", - ".": "t_pavement", - "7": "t_tree", - "=": "t_door_metal_locked", - "b": "t_dirt", - "o": "t_window_empty", - "t": "t_dirt", - "|": "t_barndoor", - "Q": "t_fence_v", - "q": "t_fence_h" - }, - "furniture": { - "D": "f_trashcan", - "F": "f_fridge", - "O": "f_crate_o", - "P": "f_sign", - "S": "f_smoking_rack", - "T": "f_table", - "X": "f_crate_c", - "b": "f_bench", - "c": "f_counter", - "d": "f_dumpster", - "f": "f_rack", - "k": "f_wood_keg", - "s": "f_safe_o", - "t": "f_table", - "x": "f_oven", - "{": "f_sink" - }, + "palettes": [ "orchard_buildings" ], + "terrain": { " ": [ [ "t_grass", 4 ], "t_grass_long", "t_dirt" ] }, "place_signs": [ { "signage": "Get Apples n Ciders!", "x": 13, "y": 17 } ], "place_items": [ - { "item": "fridge", "x": 20, "y": [ 15, 17 ], "chance": 75, "repeat": [ 1, 3 ] }, - { "item": "farming_tools", "x": [ 19, 20 ], "y": 19, "chance": 50, "repeat": [ 1, 2 ] }, + { "item": "fridge", "x": 20, "y": [ 15, 17 ], "chance": 25, "repeat": [ 1, 3 ] }, + { "item": "orchard_tools", "x": [ 19, 20 ], "y": 19, "chance": 50, "repeat": [ 1, 2 ] }, { "item": "trash", "x": 22, "y": [ 15, 16 ], "chance": 65, "repeat": [ 1, 2 ] }, - { "item": "trash", "x": 11, "y": 12, "chance": 75 } + { "item": "trash", "x": 11, "y": 12, "chance": 75 }, + { "item": "stored_pulp", "x": [ 13, 14 ], "y": [ 19, 20 ], "chance": 75 } ], + "place_item": [ { "item": "apple", "x": 20, "y": [ 15, 17 ], "chance": 100, "repeat": [ 5, 15 ] } ], + "liquids": { "k": { "liquid": "apple_cider", "amount": [ 10, 100 ] } }, "place_monsters": [ { "monster": "GROUP_PEST", "x": [ 1, 22 ], "y": [ 1, 22 ], "chance": 30 }, { "monster": "GROUP_SAFE", "x": [ 1, 22 ], "y": [ 1, 22 ], "chance": 30 }, { "monster": "GROUP_DOMESTIC", "x": [ 1, 22 ], "y": [ 1, 22 ], "chance": 40 }, { "monster": "GROUP_ZOMBIE", "x": [ 1, 22 ], "y": [ 1, 22 ], "chance": 45 } ], - "place_vehicles": [ { "vehicle": "suburban_home", "x": 4, "y": 17, "chance": 50, "rotation": -90 } ] + "place_vehicles": [ { "vehicle": "suburban_home", "x": 5, "y": 10, "chance": 45 } ] } }, { @@ -187,12 +143,7 @@ " $ *** $ *** $$ ", " *** $$ *** $" ], - "terrain": { - " ": [ "t_dirt", "t_grass_long", "t_grass_long", "t_grass", "t_grass", "t_grass", "t_grass" ], - "*": [ "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass" ], - "$": [ "t_shrub", "t_shrub", "t_underbrush", "t_grass", "t_dirt" ], - "7": [ "t_tree_apple", "t_tree_apple", "t_tree_dead" ] - }, + "palettes": [ "orchard_tree_apple" ], "place_monsters": [ { "monster": "GROUP_PEST", "x": [ 1, 22 ], "y": [ 1, 22 ], "chance": 60 }, { "monster": "GROUP_DOMESTIC", "x": [ 1, 22 ], "y": [ 1, 22 ], "chance": 40 }, @@ -234,12 +185,7 @@ " $ *** $ *** $$ ", " *** $$ *** $" ], - "terrain": { - " ": [ "t_dirt", "t_grass_long", "t_grass_long", "t_grass", "t_grass", "t_grass", "t_grass" ], - "*": [ "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass" ], - "$": [ "t_shrub", "t_shrub", "t_underbrush", "t_grass", "t_dirt" ], - "7": [ "t_tree_apple", "t_tree_apple", "t_tree_dead" ] - }, + "palettes": [ "orchard_tree_apple" ], "place_monsters": [ { "monster": "GROUP_PEST", "x": [ 1, 22 ], "y": [ 1, 22 ], "chance": 60 }, { "monster": "GROUP_DOMESTIC", "x": [ 1, 22 ], "y": [ 1, 22 ], "chance": 40 }, @@ -281,12 +227,7 @@ "$ *** $ *** $$ ", " $*** $$ *** $" ], - "terrain": { - " ": [ "t_dirt", "t_grass_long", "t_grass_long", "t_grass", "t_grass", "t_grass", "t_grass" ], - "*": [ "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass" ], - "$": [ "t_shrub", "t_shrub", "t_underbrush", "t_grass", "t_dirt" ], - "7": [ "t_tree_apple", "t_tree_apple", "t_tree_dead" ] - }, + "palettes": [ "orchard_tree_apple" ], "place_monsters": [ { "monster": "GROUP_PEST", "x": [ 1, 22 ], "y": [ 1, 22 ], "chance": 60 }, { "monster": "GROUP_DOMESTIC", "x": [ 1, 22 ], "y": [ 1, 22 ], "chance": 50 }, @@ -328,12 +269,7 @@ "$ *** $ $ $$ ", " $*** $$ $ $" ], - "terrain": { - " ": [ "t_dirt", "t_grass_long", "t_grass_long", "t_grass", "t_grass", "t_grass", "t_grass" ], - "*": [ "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass" ], - "$": [ "t_shrub", "t_shrub", "t_underbrush", "t_grass", "t_dirt" ], - "7": [ "t_tree_apple", "t_tree_apple", "t_tree_dead" ] - }, + "palettes": [ "orchard_tree_apple" ], "place_monsters": [ { "monster": "GROUP_PEST", "x": [ 1, 22 ], "y": [ 1, 22 ], "chance": 60 }, { "monster": "GROUP_DOMESTIC", "x": [ 1, 22 ], "y": [ 1, 22 ], "chance": 50 }, @@ -341,5 +277,82 @@ { "monster": "GROUP_ZOMBIE", "x": [ 1, 22 ], "y": [ 1, 22 ], "chance": 25 } ] } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "orchard_processing_roof" ], + "object": { + "fill_ter": "t_tile_flat_roof", + "rows": [ + " ", + " ", + " ", + " ", + " ", + " |22222222222222223 ", + " |................3 ", + " |.:...........7..3 ", + " |................3 ", + " |..6......###....3 ", + " |.........#z#....3 ", + " |.........###....3 ", + " |................3 ", + " |................3 ", + " |................3 ", + " |................3 ", + " |---5------------3 ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "roof_palette" ], + "terrain": { "z": "t_ladder_down" }, + "nested": { + "6": { "chunks": [ [ "null", 20 ], [ "roof_6x6_garden_3", 80 ] ] }, + "7": { "chunks": [ [ "null", 20 ], [ "roof_2x2_infrastructure", 40 ], [ "roof_2x2_infrastructure_2", 40 ] ] } + } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "orchard_stall_roof" ], + "weight": 500, + "object": { + "fill_ter": "t_tile_flat_roof", + "rows": [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " |5222222223 ", + " |.........3 ", + " |.......6.3 ", + " |.........3 ", + " |.......6.3 ", + " |.........3 ", + " |.........3 ", + " |.........3 ", + " ----------3 ", + " ", + " " + ], + "palettes": [ "roof_palette" ], + "nested": { "6": { "chunks": [ [ "null", 30 ], [ "roof_2x2_utilities", 30 ], [ "roof_2x2_utilities_c", 40 ] ] } } + } } ] diff --git a/data/json/mapgen/pawn_shop.json b/data/json/mapgen/pawn_shop.json index d2b486fc7478c..9fff2d4ed4bde 100644 --- a/data/json/mapgen/pawn_shop.json +++ b/data/json/mapgen/pawn_shop.json @@ -398,7 +398,7 @@ "........................" ], "terrain": { - ".": "t_rock", + ".": "t_soil", " ": "t_floor", "b": "t_floor", "c": "t_floor", diff --git a/data/json/mapgen/prison_1.json b/data/json/mapgen/prison_1.json index a817df4088914..c72fc6c417d35 100644 --- a/data/json/mapgen/prison_1.json +++ b/data/json/mapgen/prison_1.json @@ -1442,8 +1442,8 @@ ], "palettes": [ "prison_palette" ], "terrain": { - " ": [ "t_rock" ], - "^": [ "t_rock_floor" ], + " ": [ "t_soil" ], + "^": [ "t_thconc_floor" ], "_": [ "t_grate" ], "~": [ "t_sewage" ], "'": [ "t_water_sh_murky_underground" ], diff --git a/data/json/mapgen/private_resort.json b/data/json/mapgen/private_resort.json index 48213e36c29fc..fe5c64fae451d 100644 --- a/data/json/mapgen/private_resort.json +++ b/data/json/mapgen/private_resort.json @@ -467,7 +467,7 @@ "......................F.", "WWWWWWWWWWWWWWWWWWWW..F.", " W..F.", - "W+WWW8WWWWWWW8WWW8WW..F.", + "W+WWW8WWW8WWW8WWW8WW..F.", "L jW KW KW KW KW..F.", "L jW i^W i^W i^W i^W..F.", "L WaaaWaaaWaaaWaaaW..F.", diff --git a/data/json/mapgen/railroad/railroad_station.json b/data/json/mapgen/railroad/railroad_station.json index dc6aeda1987d4..c39aa02e06e96 100644 --- a/data/json/mapgen/railroad/railroad_station.json +++ b/data/json/mapgen/railroad/railroad_station.json @@ -142,7 +142,7 @@ ], "weight": 100, "object": { - "fill_ter": "t_rock", + "fill_ter": "t_soil", "rows": [ " ", " ", diff --git a/data/json/mapgen/refugee_center/rc_grounds_e.json b/data/json/mapgen/refugee_center/rc_grounds_e.json index 37d213cee93d7..ebf3d21732b75 100644 --- a/data/json/mapgen/refugee_center/rc_grounds_e.json +++ b/data/json/mapgen/refugee_center/rc_grounds_e.json @@ -216,7 +216,7 @@ [ "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" } + "object": { "fill_ter": "t_soil" } }, { "type": "mapgen", diff --git a/data/json/mapgen/refugee_center/rc_grounds_n.json b/data/json/mapgen/refugee_center/rc_grounds_n.json index 3b3c840969095..c7d00616d5465 100644 --- a/data/json/mapgen/refugee_center/rc_grounds_n.json +++ b/data/json/mapgen/refugee_center/rc_grounds_n.json @@ -216,7 +216,7 @@ [ "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" } + "object": { "fill_ter": "t_soil" } }, { "type": "mapgen", diff --git a/data/json/mapgen/refugee_center/rc_grounds_ne.json b/data/json/mapgen/refugee_center/rc_grounds_ne.json index 206600739fef9..a11813118e7f2 100644 --- a/data/json/mapgen/refugee_center/rc_grounds_ne.json +++ b/data/json/mapgen/refugee_center/rc_grounds_ne.json @@ -216,7 +216,7 @@ [ "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" } + "object": { "fill_ter": "t_soil" } }, { "type": "mapgen", diff --git a/data/json/mapgen/refugee_center/rc_grounds_nw.json b/data/json/mapgen/refugee_center/rc_grounds_nw.json index f2f1cd4c1003d..2cb4f21d628ef 100644 --- a/data/json/mapgen/refugee_center/rc_grounds_nw.json +++ b/data/json/mapgen/refugee_center/rc_grounds_nw.json @@ -216,7 +216,7 @@ [ "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" } + "object": { "fill_ter": "t_soil" } }, { "type": "mapgen", @@ -229,7 +229,7 @@ [ "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" } + "object": { "fill_ter": "t_soil" } }, { "type": "mapgen", @@ -242,7 +242,7 @@ [ "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" } + "object": { "fill_ter": "t_soil" } }, { "type": "mapgen", @@ -255,6 +255,6 @@ [ "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" } + "object": { "fill_ter": "t_soil" } } ] diff --git a/data/json/mapgen/refugee_center/rc_grounds_s.json b/data/json/mapgen/refugee_center/rc_grounds_s.json index 3383fd936d8f3..7b37fee336659 100644 --- a/data/json/mapgen/refugee_center/rc_grounds_s.json +++ b/data/json/mapgen/refugee_center/rc_grounds_s.json @@ -216,7 +216,7 @@ [ "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" } + "object": { "fill_ter": "t_soil" } }, { "type": "mapgen", diff --git a/data/json/mapgen/refugee_center/rc_grounds_se.json b/data/json/mapgen/refugee_center/rc_grounds_se.json index b95f136ff8c22..0cfcb537367e4 100644 --- a/data/json/mapgen/refugee_center/rc_grounds_se.json +++ b/data/json/mapgen/refugee_center/rc_grounds_se.json @@ -216,7 +216,7 @@ [ "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" } + "object": { "fill_ter": "t_soil" } }, { "type": "mapgen", diff --git a/data/json/mapgen/refugee_center/rc_grounds_sw.json b/data/json/mapgen/refugee_center/rc_grounds_sw.json index 6dcadb1fceb22..dffcb405ff2af 100644 --- a/data/json/mapgen/refugee_center/rc_grounds_sw.json +++ b/data/json/mapgen/refugee_center/rc_grounds_sw.json @@ -216,7 +216,7 @@ [ "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" } + "object": { "fill_ter": "t_soil" } }, { "type": "mapgen", diff --git a/data/json/mapgen/refugee_center/rc_grounds_w.json b/data/json/mapgen/refugee_center/rc_grounds_w.json index c51c9c9b1ae40..ac7c4bd8b30e8 100644 --- a/data/json/mapgen/refugee_center/rc_grounds_w.json +++ b/data/json/mapgen/refugee_center/rc_grounds_w.json @@ -216,7 +216,7 @@ [ "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" } + "object": { "fill_ter": "t_soil" } }, { "type": "mapgen", diff --git a/data/json/mapgen/refugee_center/z-1_refugee_center.json b/data/json/mapgen/refugee_center/z-1_refugee_center.json index 4f579205def81..8dbf1b0ff53ee 100644 --- a/data/json/mapgen/refugee_center/z-1_refugee_center.json +++ b/data/json/mapgen/refugee_center/z-1_refugee_center.json @@ -10,6 +10,6 @@ [ "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" } + "object": { "fill_ter": "t_soil" } } ] diff --git a/data/json/mapgen/river_shipwreck.json b/data/json/mapgen/river_shipwreck.json index 2d455053ffeb2..31dc0e464b2b8 100644 --- a/data/json/mapgen/river_shipwreck.json +++ b/data/json/mapgen/river_shipwreck.json @@ -130,7 +130,7 @@ " ": "t_metal_floor", "+": "t_door_metal_c", "-": "t_wall_metal", - ".": "t_rock", + ".": "t_soil", "C": "t_dirtmound", "~": "t_water_sh" }, @@ -182,7 +182,7 @@ " ": "t_metal_floor", "+": "t_door_metal_c", "-": "t_wall_metal", - ".": "t_rock", + ".": "t_soil", "<": "t_stairs_up", "C": "t_dirtmound", "~": "t_water_sh" diff --git a/data/json/mapgen/s_grocery.json b/data/json/mapgen/s_grocery.json index 1784be4ed4026..6a9321084190a 100644 --- a/data/json/mapgen/s_grocery.json +++ b/data/json/mapgen/s_grocery.json @@ -276,13 +276,13 @@ "nested": { "|": { "chunks": [ [ "bile_field", 1 ], [ "shelter_graffiti", 10 ], [ "general_graffiti", 20 ], [ "null", 75 ] ] }, "-": { "chunks": [ [ "bile_field", 1 ], [ "shelter_graffiti", 10 ], [ "general_graffiti", 20 ], [ "null", 75 ] ] }, - "r": { "chunks": [ [ "destroyed_rack", 20 ], [ "null", 80 ] ] }, - "]": { "chunks": [ [ "destroyed_rack", 20 ], [ "null", 80 ] ] }, - "t": { "chunks": [ [ "destroyed_table", 20 ], [ "null", 80 ] ] }, - "7": { "chunks": [ [ "destroyed_bookcase", 10 ], [ "null", 90 ] ] }, + "r": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] }, + "]": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] }, + "t": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] }, + "7": { "chunks": [ [ "destroyed_furniture", 10 ], [ "null", 90 ] ] }, "[": { "chunks": [ [ "destroyed_glass_door_wall", 80 ], [ "null", 20 ] ] }, "=": { "chunks": [ [ "destroyed_glass_door_wall", 80 ], [ "null", 20 ] ] }, - "f": { "chunks": [ [ "destroyed_glass_door_fridge", 20 ], [ "null", 80 ] ] } + "f": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] } } } }, @@ -630,8 +630,8 @@ "nested": { "|": { "chunks": [ [ "bile_field", 1 ], [ "shelter_graffiti", 10 ], [ "general_graffiti", 20 ], [ "null", 75 ] ] }, "-": { "chunks": [ [ "bile_field", 1 ], [ "shelter_graffiti", 10 ], [ "general_graffiti", 20 ], [ "null", 75 ] ] }, - "{": { "chunks": [ [ "destroyed_rack", 20 ], [ "null", 80 ] ] }, - "&": { "chunks": [ [ "destroyed_glass_door_fridge", 20 ], [ "null", 80 ] ] } + "{": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] }, + "&": { "chunks": [ [ "destroyed_furniture", 20 ], [ "null", 80 ] ] } } } }, diff --git a/data/json/mapgen/s_lightindustry_scen.json b/data/json/mapgen/s_lightindustry_scen.json new file mode 100644 index 0000000000000..02a3342bd637c --- /dev/null +++ b/data/json/mapgen/s_lightindustry_scen.json @@ -0,0 +1,289 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ + [ "s_lightindustry_scen_10", "s_lightindustry_scen_11" ], + [ "s_lightindustry_scen_road_0", "s_lightindustry_scen_road_1" ], + [ "s_lightindustry_scen_00", "s_lightindustry_scen_01" ] + ], + "object": { + "fill_ter": "t_floor", + "rows": [ + "................................................", + "................................................", + "#%%%%#%%%%#%%%%#%%#%%%%#%%%%#%%%%#%%%%#%%%%#....", + "##::###::###::##::#######oo###oo###oo###oo##^%%#", + "#!{!v#rrrP#Prrr#HHHN#jk#U~~UUU~~U#~55~d~88~##o##", + "#!}}!: h h :!!!H#;;#U~~~~~~~U#~~~~d~~~~#ppp#", + "#!!!!: :NN!H#M;#U~~~~~~~U#dd&dd~~~~:;q;o", + "#L!!!:r hrh ) ##+##ddddd&d##~~~~~~6~~:;;;#", + "#L!!L:rh r r: zz #~~~~~~~~~#~~~~~~9~~:;;M#", + "###)##B P#P hr: +~~`````~~~~~45~~5~~);;p#", + "+ u# B #~~`~~~`~~~~~~~~~~~~:;qpo", + "#::):#::):#::):#))#::):#~~`~~~`~~~~~52~~~~~#;;p#", + "# #P u#u # #r #~~`~~~`~~~~~~~~~##+##+##", + "#rr u#r hr#P hr# :rh u#~~`~~~`~~~~~~~~1#;;#.s.#", + "# h P#rh r#P rr# #r P#c~`~~~`~~#5~31~5#kj#.s..", + "##::###::###::##))##::###bbbbbbb###o##o#####.s..", + "#%%%%#%%%%#%%%%#ss#%%%%#c_______s#%%%%%%.^.#.s..", + "sssssssssssssssssssssssss_______ssssssssssssssss", + "s____e____e____e____es%s___________se____e____es", + "s____e____e____e____es%s___________se____e____es", + "s____e____e____e____es%s___________se____e____es", + "s____e____e____e____es%s___________se____e____es", + "s____e____e____e____es%s___________se____e____es", + "s____e____e____e____esss___________se____e____es", + "s______________________________________________s", + "s______________________________________________s", + "s______________________________________________s", + "s______________________________________________s", + "s______________________________________________s", + "s______ssssssssssssssssssssssssssssssssss______s", + "s______s%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%s_______", + "s______ssssssssssssssssssssssssssssssssss_______", + "s_______________________________________________", + "s_______________________________________________", + "s_______________________________________________", + "s_______________________________________________", + "s_______________________________________________", + "s_______________________________________________", + "s_______________________________________________", + "s_______________________________________________", + "s_______________________________________________", + "s_______________________________________________", + "s___________________ssssssss__________ssssssssss", + "s___________________s%%s...s__________s.........", + "s___________________s%%s...s__________s.........", + "s___________________s%%s...s__________s.........", + "s___________________s%%s...s__________s.........", + "s___________________ssssssss__________s.........", + "s____e____e____e____ssss...s__________s.........", + "s____e____e____e____s%%s...s__________s.........", + "s____e____e____e____s%%s...s__________s.........", + "s____e____e____e____s%%s...s__________s.........", + "s____e____e____e____s%%s...s__________s.........", + "s____e____e____e____ssss...s__________s%%%.%%%..", + "ssssssssssssssssssssssss...s__________##o###o##.", + ".##o###o###o##...sss...s...s__________#rrr#Phr#.", + ".#rru#thr#rBt#...sss...sssssc_________# h # r#.", + "^# h # r#rh #...sss...s...##bbbbbbb#+# ##", + "## #%%#o+o#%%s%%%#c~`~~~`~~~# u#", + "#r ####==y#####o##~~`~~~`~~~o hhhh ho", + "orh # h # u# u#===wwx#CCC~~~`~~~`~~~# ZZZZ rr#", + "#r #rru# u#hro=====w#CC~~~~`~~~`~~~o hhhh ###", + "### ##### u# r#=====w#~~~~~~`~~~`~~~# r#", + "#rr #thr# u#+##======+~~~~~~`````~~~+ hro", + "#th # r# B# zz======#~~~~~~~~~57~~~# u#", + "or + #####d&d#~~~~~31~~~#B P ##+##", + "#rh + #Y;j#Q~Q#~~~~~~~~~5##+# #B r#", + "###+##t ####### +;;k#Q~Q#~52~~~~~~2#;;# # hr#", + "#rr B#t #mnlkn# #####Q~Q#~~~~~46~~~#jk# # r#", + "o h u# +;;;;;+ +;;k#Q~Q#~52~~~~~~8####+##o##", + "# u#t #qpq;Y# #Y;j#Q~Q#~~~~~~~~~8#^sssss...", + "###o###+####o########o###o####o####o###.sssss..." + ], + "terrain": { + ".": "t_region_groundcover_urban", + "%": "t_region_shrub_decorative", + "#": "t_brick_wall", + "o": "t_window", + " ": "t_floor", + "s": "t_sidewalk", + "_": "t_pavement", + "e": "t_pavement_y", + ";": "t_linoleum_gray", + "j": "t_linoleum_gray", + "k": "t_linoleum_gray", + "l": "t_linoleum_gray", + "m": "t_linoleum_gray", + "n": "t_linoleum_gray", + "Y": "t_linoleum_gray", + "M": "t_linoleum_gray", + "q": "t_linoleum_gray", + "p": "t_linoleum_gray", + "=": "t_carpet_green", + "w": "t_carpet_green", + "x": "t_carpet_green", + "y": "t_carpet_green", + "!": "t_carpet_red", + "v": "t_carpet_red", + "H": "t_carpet_red", + "}": "t_carpet_red", + "{": "t_carpet_red", + "L": "t_carpet_red", + "N": "t_carpet_red", + "~": "t_thconc_floor", + "C": "t_thconc_floor", + "Q": "t_thconc_floor", + "U": "t_thconc_floor", + "1": "t_thconc_floor", + "2": "t_thconc_floor", + "3": "t_thconc_floor", + "4": "t_thconc_floor", + "9": "t_thconc_floor", + "`": "t_metal_floor", + ":": "t_wall_glass", + ")": "t_door_glass_c", + "+": "t_door_c", + "b": "t_door_metal_locked", + "c": "t_gates_mech_control", + "d": "t_chainfence_h", + "&": "t_chaingate_l", + "5": "t_thconc_floor", + "6": "t_thconc_floor", + "7": "t_thconc_floor", + "8": "t_thconc_floor", + "^": "t_gutter_downspout" + }, + "furniture": { + "5": "f_machinery_electronic", + "6": "f_machinery_light", + "7": "f_machinery_heavy", + "8": "f_machinery_old", + "k": "f_sink", + "l": "f_oven", + "m": "f_fridge", + "n": "f_counter", + "q": "f_chair", + "h": "f_chair", + "{": "f_chair", + "p": "f_table", + "}": "f_desk", + "r": "f_desk", + "x": "f_table", + "Z": "f_table", + "N": "f_table", + "Q": "f_rack", + "t": "f_locker", + "U": "f_locker", + "M": "f_locker", + "P": "f_filing_cabinet", + "u": "f_bookcase", + "L": "f_bookcase", + "w": "f_sofa", + "H": "f_sofa", + "z": "f_vending_c", + "Y": "f_trashcan", + "y": "f_trashcan", + "B": "f_trashcan", + "v": "f_safe_l", + "1": "f_arcfurnace_empty", + "2": "f_hydraulic_press", + "3": "f_air_compressor", + "4": "f_drill_press", + "9": "f_heavy_lathe", + "C": "f_crate_c" + }, + "toilets": { "j": { } }, + "items": { + "y": { "item": "trash", "chance": 30, "repeat": [ 2, 3 ] }, + "B": { "item": "trash", "chance": 30, "repeat": [ 2, 3 ] }, + "Y": { "item": "trash", "chance": 30, "repeat": [ 2, 3 ] }, + "v": { "item": "vault", "chance": 30, "repeat": [ 2, 3 ] }, + "r": { "item": "office", "chance": 30 }, + "Z": { "item": "office", "chance": 30 }, + "t": { "item": "cleaning_bulk", "chance": 30, "repeat": [ 2, 3 ] }, + "n": { "item": "kitchen_nonfood", "chance": 30, "repeat": [ 1, 2 ] }, + "l": { "item": "oven", "chance": 30, "repeat": [ 1, 3 ] }, + "m": { "item": "SUS_fridge_breakroom", "chance": 30 }, + "x": { "item": "magazines", "chance": 30, "repeat": [ 2, 5 ] }, + "N": { "item": "magazines", "chance": 30, "repeat": [ 0, 2 ] }, + "P": { "item": "office_paper", "chance": 30 }, + "H": [ { "item": "jackets", "chance": 10 }, { "item": "bags", "chance": 10 } ], + "u": { "item": "textbooks", "chance": 30, "repeat": [ 1, 2 ] }, + "L": { "item": "textbooks", "chance": 30, "repeat": [ 1, 2 ] }, + "C": { "item": "tools_construction", "chance": 50, "repeat": [ 2, 3 ] }, + " ": { "item": "office_mess", "chance": 5 }, + "~": { "item": "vehicle_scrapped", "chance": 3 } + }, + "place_loot": [ + { "group": "vending_food", "chance": 80, "x": 15, "y": 64 }, + { "group": "vending_drink", "chance": 80, "x": 16, "y": 64 }, + { "group": "vending_food", "chance": 80, "x": 20, "y": 8 }, + { "group": "vending_drink", "chance": 80, "x": 21, "y": 8 }, + { "group": "bar_trash", "chance": 50, "repeat": 2, "x": 11, "y": 70 }, + { "group": "tools_blacksmith", "chance": 60, "repeat": 4, "x": 26, "y": [ 68, 70 ] }, + { "group": "tools_mechanic", "chance": 60, "repeat": 2, "x": 26, "y": [ 66, 67 ] }, + { "group": "tools_home", "chance": 60, "repeat": 4, "x": 24, "y": [ 66, 68 ] }, + { "group": "power_tools", "chance": 60, "repeat": 3, "x": 24, "y": [ 69, 70 ] }, + { "group": "hand_tools", "chance": 75, "repeat": 4, "x": 24, "y": [ 4, 6 ] }, + { "group": "power_tools", "chance": 75, "repeat": 4, "x": [ 27, 29 ], "y": 4 }, + { "group": "tools_mechanic", "chance": 75, "repeat": 4, "x": 32, "y": [ 4, 6 ] }, + { "group": "elecsto_diy", "chance": 60, "repeat": 4, "x": [ 34, 39 ], "y": [ 12, 14 ] }, + { "group": "elecsto_diy", "chance": 60, "repeat": 4, "x": [ 34, 37 ], "y": [ 4, 5 ] } + ], + "place_vehicles": [ { "vehicle": "cube_van", "x": 31, "y": 50, "chance": 100, "status": -1, "rotation": 270 } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "s_lightindustry_scen_10_roof", "s_lightindustry_scen_11_roof" ] ], + "object": { + "fill_ter": "t_flat_roof", + "rows": [ + " ", + " ", + ". . . . . . . . . . ", + "|2222222222222222222222222222222222222222223 .", + "|..........................................52223", + "|................................=.............3", + "|..............................................3", + "|..............................................3", + "|.........&........................&...........3", + "|..............................................3", + "|..................X........:..................3", + "|..............................................3", + "|..........................................3---3", + "|............=.............................3 .", + "|..........................................3 ", + "|----------------------------------------5-3 ", + ". . . . . . . . ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "roof_palette" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "s_lightindustry_scen_00_roof", "s_lightindustry_scen_01_roof" ] ], + "object": { + "fill_ter": "t_flat_roof", + "rows": [ + " ", + " ", + " ", + " ", + " ", + " ", + " |22222223 ", + " |222222222223 |.......3 ", + " |...........3 |.......3 ", + " 5...........3 |2222222222|.......33", + "||...........3 |2223 |...................3", + "|............322|...3222222|....X....:.........3", + "|..............................................3", + "|..............................................3", + "|..............................................3", + "|..............................................3", + "|..........&.............................=.....3", + "|.................:............................3", + "|............................&.................3", + "|....X.........................................3", + "|..............................................3", + "|.....................................5--------3", + "|.....................=...............3 ", + "|-------------------------------------3 " + ], + "palettes": [ "roof_palette" ] + } + } +] diff --git a/data/json/mapgen/s_liquor.json b/data/json/mapgen/s_liquor.json index e2cadcc99f8a4..67add2be17008 100644 --- a/data/json/mapgen/s_liquor.json +++ b/data/json/mapgen/s_liquor.json @@ -174,8 +174,8 @@ "|": { "chunks": [ [ "bile_field", 10 ], [ "shelter_graffiti", 5 ], [ "general_graffiti", 20 ], [ "null", 75 ] ] }, "-": { "chunks": [ [ "bile_field", 10 ], [ "shelter_graffiti", 5 ], [ "general_graffiti", 20 ], [ "null", 75 ] ] }, ".": { "chunks": [ [ "bile_field", 10 ], [ "null", 90 ] ] }, - "#": { "chunks": [ [ "bile_field", 20 ], [ "destroyed_rack", 10 ], [ "null", 70 ] ] }, - "&": { "chunks": [ [ "bile_field", 20 ], [ "destroyed_glass_fridge", 30 ], [ "null", 50 ] ] } + "#": { "chunks": [ [ "bile_field", 20 ], [ "destroyed_furniture", 10 ], [ "null", 70 ] ] }, + "&": { "chunks": [ [ "bile_field", 20 ], [ "destroyed_furniture", 30 ], [ "null", 50 ] ] } } } }, diff --git a/data/json/mapgen/sewage_treatment.json b/data/json/mapgen/sewage_treatment.json index a2005d3540720..5fa8348caaaa7 100644 --- a/data/json/mapgen/sewage_treatment.json +++ b/data/json/mapgen/sewage_treatment.json @@ -72,12 +72,12 @@ "h": "t_thconc_floor", "D": "t_thconc_floor", "1": "t_thconc_floor", - "=": "t_rock_floor", + "=": "t_dirt", ">": "t_stairs_up", "!": "t_bars", "~": "t_sewage", "`": "t_sewage", - "%": "t_rock", + "%": "t_soil", ".": "t_thconc_floor", "^": "t_ladder_up", "*": "t_door_bar_locked", @@ -354,7 +354,7 @@ ], "weight": 250, "object": { - "fill_ter": "t_rock_floor", + "fill_ter": "t_dirt", "rows": [ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%~~~~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", "%%%%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~%%%%", @@ -471,7 +471,7 @@ "//": "10% chance of a hidden CHUD lair", "weight": 25, "object": { - "fill_ter": "t_rock_floor", + "fill_ter": "t_dirt", "rows": [ "%%%%%~#2%%%%%%%%HHHHHHHH", "%%%%%~#2%%%HHHHHHww.....", @@ -520,7 +520,7 @@ "//": "Easter egg - TMNT reference", "weight": 1, "object": { - "fill_ter": "t_rock_floor", + "fill_ter": "t_dirt", "rows": [ "%%%%%~#2%%%%%%%%HHHHHHHH", "%%%%%~#2%%%HHHHHHww.....", diff --git a/data/json/mapgen/slime_pit.json b/data/json/mapgen/slime_pit.json new file mode 100644 index 0000000000000..bd79c83f02e59 --- /dev/null +++ b/data/json/mapgen/slime_pit.json @@ -0,0 +1,83 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "slimepit_bottom" ], + "weight": 100, + "object": { + "fill_ter": "t_dirt", + "rows": [ + "########################", + "########################", + "######222222############", + "#####2#1111#2###########", + "####221 12222########", + "####2#1 111#22#######", + "###221 12########", + "###211 122#######", + "##221 1122######", + "##211 > 112######", + "##21 #2#####", + "##21 122####", + "##21 11222##", + "##21 1112##", + "##21 122##", + "##211 12###", + "##221 11#2###", + "###211 11122####", + "##22#11 11111222#####", + "####221111 #22222#######", + "#####22#2#112#22########", + "#########2222###########", + "########################", + "########################" + ], + "terrain": { + "#": "t_soil", + " ": [ "t_dirt", "t_slime" ], + ">": "t_slope_down", + "1": "t_earth_ramp_up_low", + "2": "t_earth_ramp_up_high" + }, + "furniture": { " ": "f_null" }, + "place_monsters": [ { "monster": "GROUP_SLIME", "x": [ 2, 7 ], "y": [ 10, 17 ], "chance": 2, "repeat": 12 } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "slimepit_top" ], + "weight": 100, + "object": { + "fill_ter": "t_open_air", + "rows": [ + "########################", + "########################", + "######222222############", + "#####2#1111#2###########", + "####221 12222########", + "####2#1 111#22#######", + "###221 12########", + "###211 122#######", + "##221 1122######", + "##211 112######", + "##21 #2#####", + "##21 122####", + "##21 11222##", + "##21 1112##", + "##21 122##", + "##211 12###", + "##221 11#2###", + "###211 11122####", + "##22#11 11111222#####", + "####221111 #22222#######", + "#####22#2#112#22########", + "#########2222###########", + "########################", + "########################" + ], + "terrain": { "#": "t_region_groundcover", " ": "t_open_air", "1": "t_earth_ramp_down_low", "2": "t_earth_ramp_down_high" }, + "furniture": { " ": "f_null" } + } + } +] diff --git a/data/json/mapgen/sub_station.json b/data/json/mapgen/sub_station.json index a3f5f893b94d2..7a1c2ae116854 100644 --- a/data/json/mapgen/sub_station.json +++ b/data/json/mapgen/sub_station.json @@ -118,9 +118,9 @@ "object": { "fill_ter": "t_thconc_floor", "rows": [ - "#^^^X^^^X^^^^^^X^^^X^^^#", - "#^^-x---x-^^^^-x---x-^^#", - "#^^^X^^^X^IIII^X^^^X^^^#", + "0^^^X^^^X^^^^^^X^^^X^^^0", + "0^^-x---x-^^^^-x---x-^^0", + "0^^^X^^^X^IIII^X^^^X^^^0", "R^^^X^^^X^<<<<^X^^^X^^^R", "R^^-x---x-____-x---x-^^R", "G^^^X^^^X^____^X^^^X^^^G", @@ -139,9 +139,9 @@ "G^^^X^^^X^_MM_^X^^^X^^^G", "R^^-x---x-____-x---x-^^R", "R^^^X^^^X^____^X^^^X^^^R", - "#^^^X^^^X^____^X^^^X^^^#", - "#^^-x---x-IIII-x---x-^^#", - "#^^^X^^^X^^^^^^X^^^X^^^#" + "0^^^X^^^X^____^X^^^X^^^0", + "0^^-x---x-IIII-x---x-^^0", + "0^^^X^^^X^^^^^^X^^^X^^^0" ], "palettes": [ "subway_underground" ] } diff --git a/data/json/mapgen/triffid/triffid_fields.json b/data/json/mapgen/triffid/triffid_fields.json new file mode 100644 index 0000000000000..4276200618b45 --- /dev/null +++ b/data/json/mapgen/triffid/triffid_fields.json @@ -0,0 +1,147 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_field" ], + "weight": 100, + "object": { + "fill_ter": "t_region_groundcover_urban", + "rows": [ + " I ", + " ^ I I ", + " I ", + " ? * I * I ", + " X ? ", + " I I * ", + " ^ I ", + " I ", + " * I X ^ * ", + " I ? * I ", + " ", + " ^ * I ^ I ", + " * ", + " I * ? ", + " I ", + " * I ", + " ^ X * ", + " I I ", + " * ", + " I ? * ", + " X ", + " * I ", + " X ^ ", + " X ", + " I I " + ], + "palettes": [ "triffid" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_field" ], + "weight": 100, + "object": { + "fill_ter": "t_region_groundcover_urban", + "rows": [ + " I ", + " X * * X ", + " ^ ? ? ", + " * X ? ^ ", + " ? ", + " ^ X I ^ * ", + " I ", + " * ^ * ^ ", + " ? X I ", + " ", + " X I * X ? ", + " ^ ^ ", + " ? ? X ", + " I X I * ", + " ? ", + " * X ? * X I ", + " ? ", + " I X ^ X ", + " X ", + " ? I * ", + " X I ", + " * ? X ", + " I ", + " * ^ " + ], + "palettes": [ "triffid" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_field" ], + "weight": 100, + "object": { + "fill_ter": "t_region_groundcover_urban", + "rows": [ + " ", + " ? X ? ", + " I ", + " I ? I ", + " ? * ", + " ^ * X ", + " I I X ", + " X ? ", + " X ", + " ? ^ I ? ", + " I I ", + " ", + " * X ? * ", + " ? ^ ", + " I I X ", + " * ", + " X ^ ? ", + " I ", + " I ^ ", + " * X ", + " I ? ", + " ", + " I ", + " X " + ], + "palettes": [ "triffid" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_field" ], + "weight": 100, + "object": { + "fill_ter": "t_region_groundcover_urban", + "rows": [ + " ", + " I * * ", + " * ? ", + " * X I I ", + " ^ X ? ^ ", + " ? * ", + " ^ I X * ", + " * ? I ? ", + " ", + " ^ I ? I ", + " X X ", + " ? ^ * ", + " I I X ", + " * I ", + " ? * ? ", + " ^ I ", + " X I X ", + " * I ", + " I ? ", + " X X ", + " I * I ", + " ", + " ? I ", + " X * " + ], + "palettes": [ "triffid" ] + } + } +] diff --git a/data/json/mapgen/triffid/triffid_grove.json b/data/json/mapgen/triffid/triffid_grove.json new file mode 100644 index 0000000000000..92e4315da381f --- /dev/null +++ b/data/json/mapgen/triffid/triffid_grove.json @@ -0,0 +1,39 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_grove" ], + "weight": 100, + "object": { + "fill_ter": "t_region_groundcover_urban", + "rows": [ + " ? I ? ", + " I ? I X ? I ", + " I X I I X ^ ###X X ", + " X ? ? ^ X ########## X", + " IX################### ", + " ^############~~~####^ ", + " ?###~~~~~~~~~~~~~~###? ", + " X###~~~~~~~~~~~~~~### ", + " ##~~~~~~~~~~~~~~##^ I", + " I^##~~~~~~~~~~~~~~##?X ", + " ?##~~~~~~~~~~~~~~### ", + " X###~~~~~~~~~~~~~~###^I", + " I###~~~~~~~~~~~~~~### ", + " ###~~~~~~~~~~~~~~##? X", + " ^###~~~~~~~~~~~~~~##^ ", + "? ####~~~~~~~~~~~~~##XI ", + " I###~~~~~~~~~~~~~###? ", + " ? ###~~~~~~~~~~~~~~##X ", + " I^###~~~~~~~~~~~~~~##I ", + " ?X##~~~~~~~~~~~~~~##X ", + " X>########~#########I ", + " ?>>##^XX?####IXX^###X ", + " IX>>X I I I ", + " I ? I " + ], + "palettes": [ "triffid" ], + "terrain": { ">": "t_triffid_slope_down" } + } + } +] diff --git a/data/json/mapgen/triffid/triffid_grove_roof.json b/data/json/mapgen/triffid/triffid_grove_roof.json new file mode 100644 index 0000000000000..14109b14a05eb --- /dev/null +++ b/data/json/mapgen/triffid/triffid_grove_roof.json @@ -0,0 +1,39 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_grove_roof" ], + "weight": 100, + "object": { + "fill_ter": "t_barkfloor", + "rows": [ + ">>>,,>>>>,,,,,,>,,,,,>>>", + ">,,,,,>>,,,,,,,,,,,,,,>>", + ">>,,,,,,,,,,,,,,,,,,,,,>", + ">>>,,,,,,,,,,,,,,,,,,,,>", + ">>,,,,,,,,,,,,,,,,,,,,,,", + ">,,,,,,,,,,,,,,,,,,,,,,,", + ",>,,,,,,,,,,,,,,,,,,,,,,", + ",,,,,,,,,,,,,,,,,,,,,,,,", + ",,,,,,,,,,,,,,,,,,,,,,,,", + ">,,,,,,,,,,,,,,,,,,,,,,,", + ",,,,,,,,,,,,,,,,,,,,,,,,", + ",,,,,,,,,,,,,,,,,,,,,,,,", + ",,,,,,,,,,,,,,,,,,,,,,,,", + ",,,,,,,,,,,,,,,,,,,,,,,,", + ">,,,,,,,,,,,,,,,,,,,,,,,", + ">,,,,,,,,,,,,,,,,,,,,,,,", + ",,,,,,,,,,,,,,,,,,,,,,,,", + ">,,,,,,,,,,,,,,,,,,,,,,,", + ">,,,,,,,,,,,,,,,,,,,,,,,", + ",,,,,,,,,,,,,,,,,,,,,,,,", + ",,,,,,,,,,,,,,,,,,,,,,,,", + ">>,,,,,,,,>,,,,,,,,,,,,>", + ">>,,,,,,,,,>,,,,,,,,,,>>", + ">>>>,,,,,,,,,,,,,,,,,>>>" + ], + "palettes": [ "triffid" ], + "terrain": { ">": "t_open_air" } + } + } +] diff --git a/data/json/mapgen/triffid/triffid_grove_z2.json b/data/json/mapgen/triffid/triffid_grove_z2.json new file mode 100644 index 0000000000000..594eea0b41b03 --- /dev/null +++ b/data/json/mapgen/triffid/triffid_grove_z2.json @@ -0,0 +1,39 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_grove_z2" ], + "weight": 100, + "object": { + "fill_ter": "t_barkfloor", + "rows": [ + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>>#####>>>>", + ">>>#######>#####~~~##>>>", + ">>>#~~~~~###~~~~~~~~#>>>", + ">>>#~~~~~~~~~~~~~~~##>>>", + ">>>#~~~~~~~~~~~~~~~#>>>>", + ">>>#~~~~~~~~~~~~~~~#>>>>", + ">>>#~~~~~~~~~~~~~~~##>>>", + ">>>##~~~~~~~~~~~~~~~#>>>", + ">>>>#~~~~~~~~~~~~~~~##>>", + ">>>##~~~~~~~~~~~~~~##>>>", + ">>>>#~~~~~~~~~~~~~~#>>>>", + ">>>##~~~~~~~~~~~~~~#>>>>", + ">>>#~~~~~~~~~~~~~~~##>>>", + ">>>#~~~~~~~~~~~~~~~##>>>", + ">>>#~~~~~~~~~~~~~~~#>>>>", + ">>>######~~~~~~~~~~#>>>>", + ">>>>>#>>############>>>>", + ">>>>>>>>>>>>##>>>##>>>>>", + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>>>>>>>>>>>" + ], + "palettes": [ "triffid" ], + "terrain": { ">": "t_open_air" } + } + } +] diff --git a/data/json/mapgen/triffid/triffid_grove_z3.json b/data/json/mapgen/triffid/triffid_grove_z3.json new file mode 100644 index 0000000000000..1cee3db103f8f --- /dev/null +++ b/data/json/mapgen/triffid/triffid_grove_z3.json @@ -0,0 +1,113 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_grove_z3" ], + "weight": 100, + "object": { + "fill_ter": "t_barkfloor", + "rows": [ + ">,,,,>>>>>>>>>>>>>>>>>>>", + ">,####,>>>>>>>>>>>>>>>>>", + ">>,##,>>>>>>>>>>>>>>>>>>", + ">>>>##>>>>>>>>>#####>>>>", + ">>>#######>#####~~~##>>>", + ">>>#~~~~~###~~~~~~~~#>>>", + ">>>#~~~~~~~~~~~~~~~##>>>", + ">>>#~~~~~~~~~~~~~~~#>>>>", + ">>>#~~~~~~~~~~~~~~~#>>>>", + ">>>#~~~~~~~~~~~~~~~##>>>", + ">>>##~~~~~~~~~~~~~~~#>>>", + ">>>>#~~~~~~~~~~~~~~~##>>", + ">>>##~~~~~~~~~~~~~~##>>>", + ">>>>#~~~~~~~~~~~~~~#>>>>", + ">>>##~~~~~~~~~~~~~~#>>>>", + ">>>#~~~~~~~~~~~~~~~##,,,", + ">>>#~~~~~~~~~~~~~~~####,", + ">>>#~~~~~~~~~~~~~~~###,,", + ">>>######~~~~~~~~~~##>>>", + ">>>###>>############>>>>", + ">>,###,>>>>>####,##>>>>>", + ">>###,>>>>>>>,###,>>>>>>", + ">,##,>>>>>>>>>,##,>>>>>>", + ">>>#,>>>>>>>>>>>,>>>>>>>" + ], + "palettes": [ "triffid" ], + "terrain": { ">": "t_open_air" } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_grove_z3" ], + "weight": 100, + "object": { + "fill_ter": "t_barkfloor", + "rows": [ + ">>>>>>>>>>>>,>>>>>>>>>>>", + ">>>>>>>>>>,,#,>>>>>>>>>>", + ">>>>>>>>>>###,>>>>>>>>>>", + ">>>>>>>>>###>>>#####>>>>", + ">>>#############~~~##>>>", + ">>>#~~~~~###~~~~~~~~#>>>", + ">>>#~~~~~~~~~~~~~~~##>>>", + ">>>#~~~~~~~~~~~~~~~#>>>>", + ",,##~~~~~~~~~~~~~~~#>>>>", + "####~~~~~~~~~~~~~~~##>>>", + "##,##~~~~~~~~~~~~~~~#>>>", + ">>>>#~~~~~~~~~~~~~~~##>>", + ">>>##~~~~~~~~~~~~~~##>>>", + ">>>>#~~~~~~~~~~~~~~#>>>>", + ">>>##~~~~~~~~~~~~~~#>>>>", + ">>>#~~~~~~~~~~~~~~~##>>>", + ">>>#~~~~~~~~~~~~~~~##>>>", + ">>>#~~~~~~~~~~~~~~~#>>>>", + ">>>######~~~~~~~~~~#>>>>", + ">>>>>#>>############>>>>", + ">>>>>>>>>>>>####>##>>>>>", + ">>>>>>>>>>>>>>##,>>>>>>>", + ">>>>>>>>>>>>>,####,>>>>>", + ">>>>>>>>>>>>>>>,#,>>>>>>" + ], + "palettes": [ "triffid" ], + "terrain": { ">": "t_open_air" } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_grove_z3" ], + "weight": 100, + "object": { + "fill_ter": "t_barkfloor", + "rows": [ + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>>#####>>>>", + ">>>#######>#####~~~##>>>", + ">>>#~~~~~###~~~~~~~~#>>>", + ">>>#~~~~~~~~~~~~~~~##,>,", + ">>>#~~~~~~~~~~~~~~~#####", + ">>>#~~~~~~~~~~~~~~~###,>", + ">>>#~~~~~~~~~~~~~~~##,>>", + ">>>##~~~~~~~~~~~~~~~#>>>", + ">>>>#~~~~~~~~~~~~~~~##>>", + ">>>##~~~~~~~~~~~~~~##>>>", + ">>>>#~~~~~~~~~~~~~~#>>>>", + ">>>##~~~~~~~~~~~~~~#>>>>", + ">>>#~~~~~~~~~~~~~~~##>>>", + ">>>#~~~~~~~~~~~~~~~##>>>", + ">>>#~~~~~~~~~~~~~~~#>>>>", + ">>>######~~~~~~~~~~#>>>>", + ">>>,################>>>>", + ">>>####>>>>>##>>>##>>>>>", + ">>,##,>>>>>>>>>>,#,>>>>>", + ">>>#,>>>>>>>>>>>>##,>>>>", + ">>>,>>>>>>>>>>>>>,#,>>>>" + ], + "palettes": [ "triffid" ], + "terrain": { ">": "t_open_air" } + } + } +] diff --git a/data/json/mapgen/triffid/triffid_heart.json b/data/json/mapgen/triffid/triffid_heart.json new file mode 100644 index 0000000000000..135b71c5c9326 --- /dev/null +++ b/data/json/mapgen/triffid/triffid_heart.json @@ -0,0 +1,40 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_finale" ], + "weight": 100, + "object": { + "fill_ter": "t_root_floor", + "rows": [ + "PPPPPPPPPPPPPPPPPPPPPPPP", + "PPPPPPPPT.............TP", + "PPPPPP!....PPPPPPP.....P", + "PP........PP!.": "t_rock", "<": "t_triffid_slope_up" }, + "monster": { "H": { "monster": "mon_triffid_heart" }, "!": { "monster": "mon_creeper_hub", "chance": 60 } } + } + } +] diff --git a/data/json/mapgen/triffid/triffid_roots.json b/data/json/mapgen/triffid/triffid_roots.json new file mode 100644 index 0000000000000..82277fc107ecc --- /dev/null +++ b/data/json/mapgen/triffid/triffid_roots.json @@ -0,0 +1,353 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_roots" ], + "weight": 100, + "object": { + "fill_ter": "t_root_floor", + "rows": [ + "PP......PPPPPPPPPPDPPPPP", + "P........!PPPPPP..T...PP", + "PPPPDPPPPPPPPPP@.P....!P", + "P......T.!PP.P>@P@..T..P", + "P..T.....PP..P>>@@.PP..P", + "PP!P.....D...PP>>@..P..P", + "PPPPDPPPPPPPPPPPPPPPPPPP", + "PPP....@.......PPPPPPPP.", + "PPPPPPPP.....T....PPPP..", + "PPP...PP...........PP.T.", + "PP.T..PPPPPPPPPDPPPP....", + "P!..PPPPPPP..T.....D.P!P", + "PPPPDPPPPPPP....@@@PPPPP", + "P!PP......PPPPPP@T@P...P", + "..PP...T...PPPP....P...P", + ".T.PPPP......PP....PPP.P", + "......PPPPPDPPPPPPDPPPDP", + "PPPPPDPPPP@@T.PPP....T.P", + "PPPP!....D....@PP......P", + "PPPPP@@@.P....@@D......P", + "PP<.T..@PPPPPDPPPPPPPPPP", + "PP<<...PPPPP.PPD.......P", + "PPP<": "t_triffid_slope_down", "<": "t_triffid_slope_up" }, + "monster": { "!": { "monster": "mon_creeper_hub", "chance": 60 } } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_rootss" ], + "weight": 100, + "object": { + "fill_ter": "t_root_floor", + "rows": [ + "P>PPP>PPPP>>>>>PPPPP>>>>", + "P>>>PP>>PPPP>>>PPPPPP>>>", + "PP>>>P>>>PPP>>>>PP>>>PPP", + "PPP>>PP>>PPP>>>PPP>>>PPP", + "PPPPPPPPPPP>>>PPP>>>PPPP", + "PP.....P!PPP>>>PPP>>PPPP", + "PP....T...PPP>>PPP>>>>PP", + "PPPPPP@@@..PPP>>>PP>PPPP", + "PPPPPPPDPPPPPPPPPPPPPPPP", + "PPPP!P.....DPP.T....DPPP", + "PPPP...T...P@@....PPP..P", + "PP.@@@...PPPPDPPPPP.T..P", + "PPPPDPPPPP.....PPPP!...P", + "P......P!PPP.T..!PPPPDPP", + "P....T....PPPPPPPPP.T...", + "PPPPPP!P...@D....PP!....", + ".PPPPPPPDPPPP..T..PPPDPP", + "T.PPPP....PP.....PPP...P", + "...D...T..PPPPPPPP.T..PP", + "PPPPPPDPPPPPPPPP....PPPP", + "P...........PPPPPPDPPPPP", + "PP.........PPPPP......PP", + "PPP...T..PPPPPPP...T..PP", + "PP.....PPPPPPPPP...PPPPP" + ], + "palettes": [ "triffid" ], + "terrain": { ">": "t_rock" }, + "monster": { "!": { "monster": "mon_creeper_hub", "chance": 60 } } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_rootsn" ], + "weight": 100, + "object": { + "fill_ter": "t_root_floor", + "rows": [ + "PPPPPPPPPP.....PPPPPPPPP", + "PPPPPPPPP....T..PP....PP", + "......PPPPPPDPPPPPP...PP", + ".....T..P@@....PP@.T..PP", + "PP!......D@.T...D@...PPP", + "PPPPPPPPPPP..PPPPPDPPPPP", + "P!....PPPPPPDPPPPPPPPPPP", + "P.T.PDPP!.....PPPPPPPPPP", + "P...P.....T...PPPPP!....", + "P...PPPPPPPPPPPPPPPP..T.", + "PPPDPPPPPP!..T..D@......", + "P........D.....PPPPPPP..", + "P..T...PPPPDPPPPPPPPPPPP", + "P...PPPPP.....PPPPPPPPPP", + "PPPPPPP!...T...PPPPPPPPP", + "PPP>>>PPPP.......PPPPPPP", + "P>>>P>>>PPPPPPPPPPPPPP>>", + "PP>>>>PP>>>PP>>>>PPP>>>>", + "PP>>>PPPP>>PPPP>>>PPPP>>", + "PPP>>PPPP>>>PPPP>>>>PPPP", + "PP>>>PPPPP>>>PP>>PP>>>PP", + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>>>>>>>>>>>" + ], + "palettes": [ "triffid" ], + "terrain": { ">": "t_rock" }, + "monster": { "!": { "monster": "mon_creeper_hub", "chance": 60 } } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_rootse" ], + "weight": 100, + "object": { + "fill_ter": "t_root_floor", + "rows": [ + "PPPPPPPPPPPPDPPPPPPP>>>>", + "PP!....PP..!PPPPPPPPPP>>", + "PP..T..D.....PPP>>>>PPP>", + "P.....PPP!....PP>>>>>>PP", + "P..!PPP.PPPDPPPP>>>>>>>>", + "PDPPPP....@@@PPP>>>>>>>P", + "P.!PPP.....PPPPP>>>>>PP>", + "....PPP.....PPPP>>>>PP>>", + "..T.P...T.PPPPPP>>PPP>>>", + "...PPP.@@@PPPPPPPPPPP>>>", + "...PPPPPDPPPPPPPPPP>>>>>", + "PPPPP.T....PPPPP>>>>>>>>", + "P...D...PPPPPPPPPPPPPPPP", + "PT..PPDPPPPPPPPP>PPPP>>>", + "P..DP@@@...PPPPP>>>>>>>>", + "P.PD..T...PPPPPPPPP>>>>>", + "PPPPP...!PPPPPPPPP>>>>>>", + "PPPPPPDPPPPPPPPP>PP>>>>>", + "PPPP.....!PP..PP>>>>PP>>", + "P.@@D..TPPP!T.PP>>>>>P>>", + "P..PPP..D.....PP>>PP>>PP", + "P..PPPPPPPPPPPPPPPPP>>>>", + "P.T.PPPPPPPPPPPPP>>>>>>>", + "P....PPPPPPPPPPPP>>>>>>>" + ], + "palettes": [ "triffid" ], + "terrain": { ">": "t_rock" }, + "monster": { "!": { "monster": "mon_creeper_hub", "chance": 60 } } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_rootsw" ], + "weight": 100, + "object": { + "fill_ter": "t_root_floor", + "rows": [ + ">>>>>>>PP....PPPPPPPPPPP", + ">>>>PPPPP.T.PDPPPPPPPPPP", + ">>>PPPPPPPPPP.T..PPPPPPP", + ">>PP>>>PPPP!.....PPPPPPP", + "PP>>>>>PPPPPPDPPPPPPPPPP", + ">>>>>>>PPPPP@@@!PPPPPPPP", + ">>>>>>>PPPP..T..PPP!T.PP", + ">>>>>>>PPP......PP....PP", + "PPP>>>>PPPPPPDPPPPPDPPPP", + ">>PPPP>PPPPP...PP..!TPPP", + ">>>>PPPPPP..T...D......P", + ">>>>>PPPPP!...PPPPPP...P", + ">>>>>>>PPPPPPPPPPPPDPPPP", + ">PP>PPPPP..O.........PPP", + "P>>PPPPP.........O....P@", + ">>>>>>P.......O.......D@", + ">>PPPPPP...O.......O..P@", + "PPPP>>>PP.......O....PPP", + "PP>>>>>PPPPDPPPPPPPPPPPP", + ">>>>>>>PP.@@@..D@...T.PP", + ">>>PPPPPP!..T..PPP!...PP", + "PPPP>>>PPP.....!PPPPDPPP", + ">>>>>>>PPPPPPPPPPP!.T.PP", + ">>>>>>>PPPPPPPPPPP....PP" + ], + "palettes": [ "triffid" ], + "terrain": { ">": "t_rock" }, + "furniture": { "O": "f_midden" }, + "items": { + "O": [ + { "item": "vertebrate_parts", "chance": 80, "repeat": [ 1, 2 ] }, + { "item": "human_parts", "chance": 60, "repeat": [ 1, 2 ] }, + { "item": "wasp_lair", "chance": 70, "repeat": [ 1, 2 ] } + ] + }, + "monster": { "!": { "monster": "mon_creeper_hub", "chance": 60 } } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_rootsen" ], + "weight": 100, + "object": { + "fill_ter": "t_root_floor", + "rows": [ + "PPP...PPPPPPPPPP>>>>>>>>", + "PP....PP..T..PPPPPP>>>>>", + "......D......PPP>>PP>>>>", + "..T..!PPP....PPP>>>>PPP>", + "....PPPPPP@@PPPP>>>>>>PP", + "PPPDPP!..PPDPPPP>>>>>>>>", + "P.@@PPP.......PP>>>>>>>>", + "P..T.PPP..T.!PPP>>>PPPP>", + "PP....PP....PPPPPPP>>>>>", + "PPPPPPPP....PPPP>>>>>>>>", + "..T...PPPPPDPPPP>PPPPP>>", + ".......PP.T..!PPPPP>>>P>", + "...PDPPPD@@.DPPP>>>>>PPP", + "!PPP...TPPPPP..P>>>>>>>>", + "PPPPPPPPPP!..T.P>>>>>>>>", + "PPPPPPPPPPPPPPPPPPPP>>>>", + "PPPPPPPPPPPPPPPPP>>PP>>>", + ">>>PP>>>>>>PP>>>>>>>PP>>", + ">>>PPP>>>>>>PPP>>>>>>PPP", + ">>>>>PPPP>>>PPPPPPP>>>>>", + ">>>>>>>>>PPPP>>>>>P>>>>>", + ">>>>>>>>>>>PPP>>>>>PP>>>", + ">>>>>>>>>>>>>>P>>>>>>P>>", + ">>>>>>>>>>>>>PP>>>>>>>>>" + ], + "palettes": [ "triffid" ], + "terrain": { ">": "t_rock" }, + "monster": { "!": { "monster": "mon_creeper_hub", "chance": 60 } } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_rootsnw" ], + "weight": 100, + "object": { + "fill_ter": "t_root_floor", + "rows": [ + ">>>>>>>PPPPPPPPPPPP..PPP", + ">>>>>>>PPPPP...PP....TPP", + ">>>PPPPPP..T..PD@@.....D", + ">>PPP>>PP!...PPPPPPPPPPP", + "PPP>>>>PPP.....T..PP!.TP", + ">>>>>>>PPPPPP@@...D....P", + ">>>>>>>PPP!.DPPPPPPPDPPP", + ">>>>>>>PPP......D...T.PP", + ">>>>PPPPPP.T..PPPP!...PP", + ">PPPPPPPP!....PPPPPPPPPP", + "PP>>PPPPPPP.....D..T.!PP", + ">>>>>>>PPPPPPPPPP.....PP", + ">>>>>>>PPPPPPT......@@PP", + ">>>>>>>PP!.......PPPDPPP", + "PPP>>>>PPPPPPPPPPPP...PP", + ">PPP>>>PPPPPPP!.....T.PP", + ">>>>P>>PPPPPPPPPPPPPPPPP", + ">>>>>PPP>>>>>PP>>>>>>>>>", + ">>>PPPPP>>>>>>PP>>>>>>>>", + ">PPPP>>>>>>>>>PPP>>>>>>>", + ">>>>PP>>>>>>>>>>PP>>>>>>", + ">>>>>>PP>>>>>>>>>>P>>>>>", + ">>>>>>>>PP>>>>>>PP>>>>>>", + ">>>>>>>>>>P>>>>>>>>>>>>>" + ], + "palettes": [ "triffid" ], + "terrain": { ">": "t_rock" }, + "monster": { "!": { "monster": "mon_creeper_hub", "chance": 60 } } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_rootssw" ], + "weight": 100, + "object": { + "fill_ter": "t_root_floor", + "rows": [ + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">P>>>>>>>>>>>>>>>PP>>>>>", + ">>PP>>>>>>>>>>>>P>>>>>>>", + ">>>PPPP>>>>>>>>>>PP>>>>>", + ">>>>>PPPP>>>>>P>>>>PP>>>", + ">>>>>>PPPP>>>PP>>>PPP>>>", + "P>>>>>>PPPPPPPPPPPPPPPPP", + ">PPPP>>PP.!..PPP....!PPP", + ">>>PPPPP.....PP.T@@.PPPP", + ">>>>>>>PPPPDPPPPPDPPPPPP", + ">>>>>>>PP.T..PP.....P!PP", + ">>>>>>>P.......DP..T..PP", + ">>PPPPPPPPDPPPPPPPPPDPPP", + ">PPPP>>PP.....PPPP.@@..D", + "PPP>>>>PP...T..PPP.T.!PP", + "P>>>>>>PP!......PPPPPPPP", + ">>>>>>>PPPP......@@PPPPP", + ">>>>>>>PPPPPPPPPPPDPPPPP", + ">>PP>PPPPPPPPPD...P..T.P", + "PP>>PPPPP!...@P.TPPP!..P", + ">>>>>>>PP.T.PPPPPPPPPPPP" + ], + "palettes": [ "triffid" ], + "terrain": { ">": "t_rock" }, + "monster": { "!": { "monster": "mon_creeper_hub", "chance": 60 } } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "triffid_rootsse" ], + "weight": 100, + "object": { + "fill_ter": "t_root_floor", + "rows": [ + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>>>>>>>>>>>", + ">>>>>>>>>>>>>>P>>>>>>>>>", + ">>>>>>>>>>>>>>PP>>>>>>>>", + ">>>>>>>>>>>>>P>>>>>>>>>>", + ">>>>>>>>>>>PP>>>>>>>>>>>", + ">>>>>>>>PPPPP>>>>>P>>>>>", + "PPPPPPPPPPPPPPPPPP>>>>>>", + "PPPPPPPPPPPPPPPPPP>>>P>>", + "PPPPPPPPPPPPPPPP>PP>P>>>", + "PPPPPPPPPPPPPPPP>PP>P>>>", + "P....DPPPPPPPPPP>>>>>>>>", + "D..T.P...T...!PPPPP>>>>>", + "PP!..PPPP..@@@PP>PP>>>>>", + "PPP....PPPPPDPPP>>PPPPP>", + "PPPPPPPPPP....PP>>>>>>>>", + "P.....D@..T..PPP>>>>>PP>", + "P....PP@...PPPPP>>>>PP>>", + "P..T.PPPDPPPPPPP>>PPP>>>", + "P.....PP..TPPPPP>PP>>>>>", + "PP!....PP..!PPPPPPP>>>>>", + "PPPPPPPPPP.PPPPP>>>>>>>>" + ], + "palettes": [ "triffid" ], + "terrain": { ">": "t_rock" }, + "monster": { "!": { "monster": "mon_creeper_hub", "chance": 60 } } + } + } +] diff --git a/data/json/mapgen/triffid_grove.json b/data/json/mapgen/triffid_grove.json deleted file mode 100644 index 28c82e54f66f9..0000000000000 --- a/data/json/mapgen/triffid_grove.json +++ /dev/null @@ -1,118 +0,0 @@ -[ - { - "type": "mapgen", - "method": "json", - "om_terrain": [ "triffid_grove" ], - "weight": 100, - "object": { - "fill_ter": "t_dirt", - "rows": [ - " ", - " 44 4 66 66 4 44 ", - " 44 4 66 66 4 44 ", - " 44 4 66 66 4 44 ", - " 44 4 66 66 4 44 ", - " 44 4 4 44 ", - " 44 4 766667 4 44 ", - " 777777 ", - " 55 77766777 55 ", - " 55 77 77 55 ", - " 66 77 B B 77 66 ", - " 1 >> 1 ", - " 1 >> 1 ", - " 66 77 B B 77 66 ", - " 55 77 77 55 ", - " 55 77766777 55 ", - " 777777 ", - " 44 4 766667 4 44 ", - " 44 4 4 44 ", - " 44 4 66 66 4 44 ", - " 44 4 66 66 4 44 ", - " 44 4 66 66 4 44 ", - " 44 4 66 66 4 44 ", - " " - ], - "terrain": { - " ": [ "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass" ], - "1": [ "t_tree_young", "t_tree_young", "t_tree_young", "t_tree" ], - "4": [ "t_tree_young", "t_tree_young", "t_tree_willow", "t_tree_hickory", "t_underbrush", "t_shrub", "t_grass" ], - "5": [ "t_tree", "t_tree", "t_tree", "t_tree_pine", "t_tree_pine", "t_tree_birch", "t_tree_birch", "t_tree_maple" ], - "6": [ - "t_tree", - "t_tree", - "t_tree", - "t_tree_apple", - "t_tree_apple", - "t_tree_pear", - "t_tree_pear", - "t_tree_cherry", - "t_tree_peach", - "t_tree_apricot", - "t_tree_plum" - ], - "7": "t_tree", - ">": "t_slope_down" - }, - "furniture": { "^": "f_rubble_rock" }, - "monster": { "B": { "monster": "mon_biollante" } } - } - }, - { - "type": "mapgen", - "method": "json", - "om_terrain": [ "triffid_grove" ], - "weight": 100, - "object": { - "fill_ter": "t_dirt", - "rows": [ - " 4444 4444 4444 4444 ", - " 4444 4444 4444 4444 ", - " 4444 4444 4444 4444 ", - " ", - " ", - " 56544577544565 ", - " 6 777777 6 ", - " 46 77777777 64 ", - " 5665 77 7 7 77 5665 ", - " 6 7 7 6 ", - " 5 77 B B 77 5 ", - " 4 77 >> 77 4 ", - " 4 77 >> 77 4 ", - " 5 77 B B 77 5 ", - " 6 7 7 6 ", - " 5665 77 7 7 77 5665 ", - " 46 77777777 64 ", - " 6 777777 6 ", - " 56544577544565 ", - " ", - " ", - " 4444 4444 4444 4444 ", - " 4444 4444 4444 4444 ", - " 4444 4444 4444 4444 " - ], - "terrain": { - " ": [ "t_dirt", "t_dirt", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_grass" ], - "1": [ "t_tree_young", "t_tree_young", "t_tree_young", "t_tree" ], - "4": [ "t_tree_young", "t_tree_young", "t_tree_willow", "t_tree_hickory", "t_underbrush", "t_shrub", "t_grass" ], - "5": [ "t_tree", "t_tree", "t_tree", "t_tree_pine", "t_tree_pine", "t_tree_birch", "t_tree_birch", "t_tree_maple" ], - "6": [ - "t_tree", - "t_tree", - "t_tree", - "t_tree_apple", - "t_tree_apple", - "t_tree_pear", - "t_tree_pear", - "t_tree_cherry", - "t_tree_peach", - "t_tree_apricot", - "t_tree_plum" - ], - "7": "t_tree", - ">": "t_slope_down" - }, - "furniture": { "^": "f_rubble_rock" }, - "monster": { "B": { "monster": "mon_biollante" } } - } - } -] diff --git a/data/json/mapgen/ws_survivor_bunker.json b/data/json/mapgen/ws_survivor_bunker.json index 184c22ae3a002..3155fcdfe2b11 100644 --- a/data/json/mapgen/ws_survivor_bunker.json +++ b/data/json/mapgen/ws_survivor_bunker.json @@ -194,25 +194,25 @@ "######R#########R#######" ], "terrain": { - "#": "t_rock", + "#": "t_soil", "<": "t_ladder_up", "-": "t_wall_wood", "|": "t_wall_wood", - ".": "t_rock_floor", + ".": "t_dirt", "D": "t_door_locked_interior", "R": "t_root_wall", - "S": "t_rock_floor", - "s": "t_rock_floor", - "r": "t_rock_floor", - "1": "t_rock_floor", - "2": "t_rock_floor", - "k": "t_rock_floor", - "b": "t_rock_floor", - "t": "t_rock_floor", - "C": "t_rock_floor", - "B": "t_rock_floor", - "W": "t_rock_floor", - "h": "t_rock_floor" + "S": "t_dirt", + "s": "t_dirt", + "r": "t_dirt", + "1": "t_dirt", + "2": "t_dirt", + "k": "t_dirt", + "b": "t_dirt", + "t": "t_dirt", + "C": "t_dirt", + "B": "t_dirt", + "W": "t_dirt", + "h": "t_dirt" }, "furniture": { "r": "f_rubble_rock", diff --git a/data/json/mapgen_palettes/airliner_palette.json b/data/json/mapgen_palettes/airliner_palette.json index c9b9428afdd08..acb5e6fe590d9 100644 --- a/data/json/mapgen_palettes/airliner_palette.json +++ b/data/json/mapgen_palettes/airliner_palette.json @@ -5,7 +5,7 @@ "terrain": { " ": "t_region_groundcover_urban", "A": "t_open_air", - ",": "t_rock", + ",": "t_soil", "d": "t_dirtmound", "M": "t_wall_metal", "m": "t_scrap_wall_halfway", diff --git a/data/json/mapgen_palettes/basement.json b/data/json/mapgen_palettes/basement.json index 50cf5b977b3d7..1df5f9878553c 100644 --- a/data/json/mapgen_palettes/basement.json +++ b/data/json/mapgen_palettes/basement.json @@ -60,35 +60,35 @@ "type": "palette", "id": "basement_game", "terrain": { - " ": "t_rock", + " ": "t_soil", "+": "t_door_c", "-": "t_wall_w", - ".": "t_rock_floor", + ".": "t_thconc_floor", "<": "t_wood_stairs_up", - "&": "t_rock_floor", - "*": "t_rock_floor", - "%": "t_rock_floor", - "}": "t_rock_floor", - "@": "t_rock_floor", - "!": "t_rock_floor", - "^": "t_rock_floor", - "{": "t_rock_floor", - "_": "t_rock_floor", - "?": "t_rock_floor", - "/": "t_rock_floor", - "a": "t_rock_floor", - "b": "t_rock_floor", - "c": "t_rock_floor", - "d": "t_rock_floor", - "f": "t_rock_floor", - "i": "t_rock_floor", - "p": "t_rock_floor", - "r": "t_rock_floor", - "s": "t_rock_floor", - "t": "t_rock_floor", - "w": "t_rock_floor", - "C": "t_rock_floor", - "L": "t_rock_floor", + "&": "t_thconc_floor", + "*": "t_thconc_floor", + "%": "t_thconc_floor", + "}": "t_thconc_floor", + "@": "t_thconc_floor", + "!": "t_thconc_floor", + "^": "t_thconc_floor", + "{": "t_thconc_floor", + "_": "t_thconc_floor", + "?": "t_thconc_floor", + "/": "t_thconc_floor", + "a": "t_thconc_floor", + "b": "t_thconc_floor", + "c": "t_thconc_floor", + "d": "t_thconc_floor", + "f": "t_thconc_floor", + "i": "t_thconc_floor", + "p": "t_thconc_floor", + "r": "t_thconc_floor", + "s": "t_thconc_floor", + "t": "t_thconc_floor", + "w": "t_thconc_floor", + "C": "t_thconc_floor", + "L": "t_thconc_floor", ",": "t_floor", "T": "t_floor", "A": "t_floor", @@ -131,7 +131,7 @@ "type": "palette", "id": "basement_bunker", "terrain": { - "#": "t_rock", + "#": "t_soil", "+": "t_door_metal_locked", "*": "t_door_c", "^": "t_door_locked_interior", @@ -149,7 +149,7 @@ "type": "palette", "id": "basement_empty", "terrain": { - " ": "t_rock", + " ": "t_soil", "+": "t_door_c", ".": "t_thconc_floor", "|": "t_concrete_wall", diff --git a/data/json/mapgen_palettes/collapsed_tower.json b/data/json/mapgen_palettes/collapsed_tower.json index a31f5b11e171a..fb299354f7c01 100644 --- a/data/json/mapgen_palettes/collapsed_tower.json +++ b/data/json/mapgen_palettes/collapsed_tower.json @@ -3,7 +3,7 @@ "type": "palette", "id": "collapsed_tower", "terrain": { - "#": "t_rock", + "#": "t_soil", "+": "t_door_c", "-": "t_wall", ".": "t_region_groundcover_urban", diff --git a/data/json/mapgen_palettes/hotel_tower_palette.json b/data/json/mapgen_palettes/hotel_tower_palette.json index 2a55e64166211..53130129ca2c3 100644 --- a/data/json/mapgen_palettes/hotel_tower_palette.json +++ b/data/json/mapgen_palettes/hotel_tower_palette.json @@ -55,7 +55,7 @@ "~": "t_thconc_floor", "<": "t_stairs_up", ">": "t_stairs_down", - "#": "t_rock", + "#": "t_soil", "$": "t_sewage_pipe", "4": "t_gutter_downspout", "P": "t_sewage_pump" diff --git a/data/json/mapgen_palettes/house_general_palette.json b/data/json/mapgen_palettes/house_general_palette.json index cc74d9a46ebf3..8535dc5133150 100644 --- a/data/json/mapgen_palettes/house_general_palette.json +++ b/data/json/mapgen_palettes/house_general_palette.json @@ -214,7 +214,7 @@ "id": "standard_domestic_basement_palette", "//": "Intended to be used in conjunction with standard_domestic_palette. Load the domestic palette first, then this one to overwrite certain common symbols with ones more appropriate for basements. Symbols still open for use: ! $ % & _ = ~ - ? / , and more", "terrain": { - "^": "t_rock", + "^": "t_soil", "#": "t_concrete_wall", ".": "t_thconc_floor", "c": "t_thconc_floor", diff --git a/data/json/mapgen_palettes/lmoe.json b/data/json/mapgen_palettes/lmoe.json index 6a48164868480..189bc41a14f69 100644 --- a/data/json/mapgen_palettes/lmoe.json +++ b/data/json/mapgen_palettes/lmoe.json @@ -3,7 +3,7 @@ "type": "palette", "id": "bunker", "terrain": { - "#": "t_rock", + "#": "t_soil", "*": "t_chaingate_c", "+": "t_door_metal_c", "-": "t_scrap_wall", @@ -91,7 +91,7 @@ "terrain": { " ": [ [ "t_region_groundcover", 60 ], [ "t_region_shrub", 2 ], "t_region_tree" ], "_": [ "t_region_groundcover", [ "t_region_groundcover_barren", 9 ] ], - "#": "t_rock", + "#": "t_soil", "$": [ "t_region_tree_fruit", "t_region_tree_nut", "t_region_shrub_fruit", "t_region_shrub" ], "S": [ [ "t_region_groundcover", 5 ], @@ -103,7 +103,7 @@ ], "v": "t_open_air", "+": "t_door_metal_c", - ".": "t_rock_floor", + ".": "t_dirt", ">": "t_stairs_down", ")": "t_slope_up", "(": "t_slope_down", diff --git a/data/json/mapgen_palettes/lodge_palette.json b/data/json/mapgen_palettes/lodge_palette.json index dd7b0b86e68a3..24b4f4af1ea50 100644 --- a/data/json/mapgen_palettes/lodge_palette.json +++ b/data/json/mapgen_palettes/lodge_palette.json @@ -65,7 +65,9 @@ "a": { "item": "livingroom", "chance": 20 }, "A": [ { "item": "homebooks", "chance": 60, "repeat": [ 1, 3 ] }, - { "item": "magazines", "chance": 60, "repeat": [ 1, 8 ] }, + { "item": "magazines", "chance": 30, "repeat": [ 0, 4 ] }, + { "item": "novels", "chance": 60, "repeat": [ 1, 8 ] }, + { "item": "religious_books", "chance": 60, "repeat": [ 0, 3 ] }, { "item": "manuals", "chance": 30 } ], "B": { "item": "bed", "chance": 60 }, @@ -92,7 +94,7 @@ "s": { "item": "SUS_bathroom_sink", "chance": 60 }, "t": { "item": "dining", "chance": 30, "repeat": [ 1, 2 ] }, "U": { "item": "camping", "chance": 30, "repeat": [ 1, 4 ] }, - "u": { "item": "SUS_pantry", "chance": 50 }, + "u": [ { "item": "SUS_breakfast_cupboard", "chance": 30 }, { "item": "SUS_coffee_cupboard", "chance": 50 } ], "V": { "item": "SUS_oven", "chance": 70 }, "Y": { "item": "coat_rack", "chance": 35, "repeat": [ 1, 4 ] }, "1": [ { "item": "SUS_dishes", "chance": 35 }, { "item": "SUS_silverware", "chance": 35 } ], diff --git a/data/json/mapgen_palettes/mall_palette.json b/data/json/mapgen_palettes/mall_palette.json index fe628abd119b6..26c6e462b9794 100644 --- a/data/json/mapgen_palettes/mall_palette.json +++ b/data/json/mapgen_palettes/mall_palette.json @@ -111,7 +111,7 @@ "1": "t_door_metal_locked", "=": [ "t_door_c", "t_door_locked" ], "|": "t_concrete_wall", - " ": "t_rock", + " ": "t_soil", "3": "t_gates_control_brick", "E": "t_elevator", "<": "t_stairs_up", diff --git a/data/json/mapgen_palettes/necropolis/necropolis_b1.json b/data/json/mapgen_palettes/necropolis/necropolis_b1.json index e26983d1de3fc..fb92e373838bb 100644 --- a/data/json/mapgen_palettes/necropolis/necropolis_b1.json +++ b/data/json/mapgen_palettes/necropolis/necropolis_b1.json @@ -25,7 +25,7 @@ "{": "f_rubble" }, "terrain": { - " ": "t_rock_floor", + " ": "t_dirt", "!": "t_bars", "#": "t_ladder_up", ")": "t_floor", @@ -33,7 +33,7 @@ "+": "t_door_metal_c", ",": "t_pavement_y", "-": "t_wall", - ".": "t_rock", + ".": "t_soil", "2": "t_sewage_pipe", "3": "t_sewage", "4": "t_water_pump", diff --git a/data/json/mapgen_palettes/office.json b/data/json/mapgen_palettes/office.json index cde7b097ebdfc..295993de255bc 100644 --- a/data/json/mapgen_palettes/office.json +++ b/data/json/mapgen_palettes/office.json @@ -5,7 +5,7 @@ "terrain": { "*": "t_null", "/": "t_open_air", - "~": "t_rock", + "~": "t_soil", "#": "t_concrete_wall", ">": "t_stairs_down", "<": "t_stairs_up", diff --git a/data/json/mapgen_palettes/orchard_apple.json b/data/json/mapgen_palettes/orchard_apple.json new file mode 100644 index 0000000000000..8c28ab2c713c5 --- /dev/null +++ b/data/json/mapgen_palettes/orchard_apple.json @@ -0,0 +1,65 @@ +[ + { + "type": "palette", + "id": "orchard_buildings", + "terrain": { + "*": "t_dirt", + "$": [ [ "t_shrub", 5 ], "t_underbrush" ], + "+": "t_door_c", + "=": "t_door_metal_locked", + "&": "t_door_metal_c", + ".": "t_pavement", + ",": "t_floor", + "^": "t_gutter_downspout", + "7": "t_tree", + "b": "t_dirt", + "M": "t_wall_metal", + "m": "t_metal_floor", + "C": "t_floor", + "]": "t_sidewalk", + "k": "t_floor", + "o": "t_window_empty", + "x": "t_window", + "G": "t_gates_control_metal", + "g": "t_barndoor", + "W": "t_wall_wood", + "z": "t_ladder_up", + "t": "t_dirt", + "Q": "t_fence_v", + "q": "t_fence_h", + "y": "t_pavement_y" + }, + "furniture": { + "C": "f_chair", + "E": "f_crate_o", + "O": "f_crate_o", + "X": "f_crate_c", + "Y": "f_crate_c", + "c": "f_counter", + "f": "f_rack", + "k": "f_desk", + "D": "f_trashcan", + "F": "f_fridge", + "P": "f_sign", + "S": "f_smoking_rack", + "T": "f_table", + "b": "f_bench", + "d": "f_dumpster", + "a": "f_wood_keg", + "s": "f_safe_o", + "t": "f_table", + "v": "f_oven", + "{": "f_sink" + } + }, + { + "type": "palette", + "id": "orchard_tree_apple", + "terrain": { + " ": [ [ "t_grass", 3 ], [ "t_grass_long", 2 ], "t_dirt" ], + "*": [ [ "t_dirt", 5 ], "t_grass" ], + "$": [ [ "t_shrub", 2 ], "t_underbrush", "t_grass", "t_dirt" ], + "7": [ [ "t_tree_apple", 4 ], [ "t_tree_young", 2 ], "t_tree_dead" ] + } + } +] diff --git a/data/json/mapgen_palettes/prison.json b/data/json/mapgen_palettes/prison.json index 447d1bdd88b1b..48f6b55e18d63 100644 --- a/data/json/mapgen_palettes/prison.json +++ b/data/json/mapgen_palettes/prison.json @@ -4,7 +4,7 @@ "id": "prison_palette", "terrain": { " ": [ "t_region_groundcover_urban", "t_region_groundcover_barren" ], - "#": "t_rock", + "#": "t_soil", "%": "t_fence_barbed", "+": "t_door_locked_interior", ",": "t_floor", diff --git a/data/json/mapgen_palettes/railroad.json b/data/json/mapgen_palettes/railroad.json index d8325b40b02e0..4ec915b597f78 100644 --- a/data/json/mapgen_palettes/railroad.json +++ b/data/json/mapgen_palettes/railroad.json @@ -90,6 +90,6 @@ { "type": "palette", "id": "railroad_station_under", - "terrain": { " ": "t_rock", ">": "t_stairs_down", "<": "t_stairs_up", "#": "t_concrete_wall", "_": "t_concrete", "I": "t_column" } + "terrain": { " ": "t_soil", ">": "t_stairs_down", "<": "t_stairs_up", "#": "t_concrete_wall", "_": "t_concrete", "I": "t_column" } } ] diff --git a/data/json/mapgen_palettes/sewers_palette.json b/data/json/mapgen_palettes/sewers_palette.json index f2c4788460a82..5a9c089b409dd 100644 --- a/data/json/mapgen_palettes/sewers_palette.json +++ b/data/json/mapgen_palettes/sewers_palette.json @@ -12,7 +12,7 @@ "_": [ [ "t_moss", 2 ], [ "t_dirt", 3 ], [ "t_dirtmound", 1 ], [ "t_sewage", 10 ] ], "|": [ "t_concrete_wall" ], "I": [ "t_wall_metal" ], - "W": [ "t_rock" ], + "W": [ "t_soil" ], "r": [ "t_metal_floor" ], "L": [ [ "t_door_bar_o", 1 ], [ "t_door_bar_locked", 5 ] ], "D": [ "t_door_metal_c" ], diff --git a/data/json/mapgen_palettes/shelter.json b/data/json/mapgen_palettes/shelter.json index d0790f5f21591..cdfdb5a84a1f1 100644 --- a/data/json/mapgen_palettes/shelter.json +++ b/data/json/mapgen_palettes/shelter.json @@ -7,7 +7,7 @@ "!": "t_pavement", "`": "t_pavement_y", "&": "t_sidewalk", - "#": "t_rock", + "#": "t_soil", "+": "t_door_c", "-": "t_wall_w", "_": "t_linoleum_white", diff --git a/data/json/mapgen_palettes/subway.json b/data/json/mapgen_palettes/subway.json index 7c7ec2270d7f6..154462ebcc2a4 100644 --- a/data/json/mapgen_palettes/subway.json +++ b/data/json/mapgen_palettes/subway.json @@ -21,7 +21,8 @@ "type": "palette", "id": "subway_underground", "terrain": { - "#": "t_rock", + "#": "t_soil", + "0": "t_rock", "R": "t_rock_red", "G": "t_rock_green", "B": "t_rock_blue", diff --git a/data/json/mapgen_palettes/triffid.json b/data/json/mapgen_palettes/triffid.json new file mode 100644 index 0000000000000..e7505d16bfa36 --- /dev/null +++ b/data/json/mapgen_palettes/triffid.json @@ -0,0 +1,44 @@ +[ + { + "type": "palette", + "id": "triffid", + "terrain": { + " ": "t_region_groundcover_urban", + "#": "t_triffid_bark_wall", + "C": "t_barkfloor", + "~": "t_triffid_wood_wall", + ",": "t_triffid_leaves", + "P": "t_root_wall", + ".": "t_root_floor", + "D": [ "t_bramble_door_c", "t_bramble_door_o" ], + "*": "t_water_sh", + "[": "t_water_dp", + "I": [ + "t_tree", + "t_tree_apple", + "t_tree_apple", + "t_tree_pear", + "t_tree_pear", + "t_tree_cherry", + "t_tree_peach", + "t_tree_apricot", + "t_tree_plum", + "t_tree_pine", + "t_tree_birch", + "t_tree_maple", + "t_tree_willow", + "t_tree_hickory", + "t_tree_young", + "t_underbrush", + "t_shrub" + ] + }, + "furniture": { + "^": [ "f_rubble_rock", "f_boulder_small", "f_boulder_medium" ], + "?": [ "f_dandelion", "f_flower_spurge", "f_burdock", "f_flower_tulip", "f_lily", "f_bluebell", "f_dahlia", "f_datura" ], + "T": "f_glowingbulb", + "@": "f_brambles", + "X": "f_mutpoppy" + } + } +] diff --git a/data/json/martialarts.json b/data/json/martialarts.json index 8a49e33a015b5..399773d10c9d2 100644 --- a/data/json/martialarts.json +++ b/data/json/martialarts.json @@ -887,9 +887,9 @@ "melee_allowed": true, "buff_duration": 3, "mult_bonuses": [ - { "stat": "damage", "type": "bash", "scale": 0.5 }, - { "stat": "damage", "type": "cut", "scale": 0.5 }, - { "stat": "damage", "type": "stab", "scale": 0.5 } + { "stat": "damage", "type": "bash", "scale": 0.67 }, + { "stat": "damage", "type": "cut", "scale": 0.67 }, + { "stat": "damage", "type": "stab", "scale": 0.67 } ] } ], @@ -972,6 +972,7 @@ "nodachi_inferior", "nodachi_fake", "q_staff", + "staff_sling", "scimitar", "scimitar_fake", "scimitar_inferior", @@ -1200,6 +1201,7 @@ "PR24-extended", "primitive_knife", "q_staff", + "staff_sling", "rebar", "scimitar", "scimitar_inferior", diff --git a/data/json/monster_special_attacks/monster_attacks.json b/data/json/monster_special_attacks/monster_attacks.json index 567c4a8ffd608..eaf9fff02e731 100644 --- a/data/json/monster_special_attacks/monster_attacks.json +++ b/data/json/monster_special_attacks/monster_attacks.json @@ -11,7 +11,25 @@ "hit_dmg_u": "The %1$s impales your torso!", "hit_dmg_npc": "The %1$s impales 's torso!", "no_dmg_msg_u": "The %1$s tries to impale your torso, but fails to penetrate your armor!", - "no_dmg_msg_npc": "The %1$s tries to impale 's torso, but fails to penetrate their armor!" + "no_dmg_msg_npc": "The %1$s tries to impale 's torso, but fails to penetrate their armor!", + "dodgeable": true, + "blockable": true + }, + { + "type": "monster_attack", + "attack_type": "melee", + "id": "hunter_peck", + "cooldown": 15, + "move_cost": 100, + "damage_max_instance": [ { "damage_type": "stab", "amount": 12, "armor_penetration": 30 } ], + "body_parts": [ [ "head", 1 ], [ "torso", 2 ], [ "leg_r", 1 ], [ "leg_l", 1 ], [ "arm_r", 1 ], [ "arm_l", 1 ] ], + "effects": [ { "id": "venom_blind", "duration": 120 } ], + "hit_dmg_u": "The %1$s buries its beak in your %2$s!", + "hit_dmg_npc": "The %1$s buries its beak in 's %2$s!", + "miss_msg_u": "The %1$s tries to peck you, but you dodge!", + "miss_msg_npc": "The %1$s tries to peck , but they dodge!", + "no_dmg_msg_u": "The %1$s tries to peck your %2$s, but fails to penetrate your armor!", + "no_dmg_msg_npc": "The %1$s tries to peck 's %2$s, but fails to penetrate their armor!" }, { "type": "monster_attack", @@ -36,8 +54,10 @@ ], "hit_dmg_u": "The %1$s claws at you!", "hit_dmg_npc": "The %1$s claws at !", - "no_dmg_msg_u": "The %1$s tries to claw at you, but fails to.", - "no_dmg_msg_npc": "The %1$s tries to claw , but fails to." + "no_dmg_msg_u": "The %1$s claws at your %2$s, but fails to penetrate armor.", + "no_dmg_msg_npc": "The %1$s tries to claw at , but fails to penetrate armor.", + "dodgeable": true, + "blockable": true }, { "type": "monster_attack", @@ -63,7 +83,9 @@ "hit_dmg_u": "The %1$s slams into you!", "hit_dmg_npc": "The %1$s slams into !", "no_dmg_msg_u": "The %1$s tries to slam into you, but stumbles aside.", - "no_dmg_msg_npc": "The %1$s tries to slam into , but fails to." + "no_dmg_msg_npc": "The %1$s tries to slam into , but fails to.", + "dodgeable": true, + "blockable": false }, { "type": "monster_attack", @@ -79,7 +101,9 @@ "miss_msg_u": "The %1$s tries to sting you, but you dodge!", "miss_msg_npc": "The %1$s tries to sting , but they dodge!", "no_dmg_msg_u": "The %1$s tries to sting your %2$s, but it fails to penetrate your armor.", - "no_dmg_msg_npc": "The %1$s tries to sting 's %2$s, but it fails to penetrate their armor." + "no_dmg_msg_npc": "The %1$s tries to sting 's %2$s, but it fails to penetrate their armor.", + "dodgeable": true, + "blockable": true }, { "id": "acid_spray", diff --git a/data/json/monster_special_attacks/monster_deaths.json b/data/json/monster_special_attacks/monster_deaths.json new file mode 100644 index 0000000000000..6f0a53489e2ae --- /dev/null +++ b/data/json/monster_special_attacks/monster_deaths.json @@ -0,0 +1,567 @@ +[ + { + "id": "necro_boomer_revive", + "type": "SPELL", + "name": { "str": "Necro Boomer Revive" }, + "description": "Revives zombies in a large AOE", + "valid_targets": [ "ground" ], + "flags": [ "SILENT" ], + "min_aoe": 10, + "max_aoe": 10, + "shape": "blast", + "effect": "revive", + "effect_str": "ZOMBIE" + }, + { + "id": "necro_boomer_upgrade", + "type": "SPELL", + "name": { "str": "Necro Boomer Upgrade" }, + "description": "Upgrades zombies in a large AOE", + "valid_targets": [ "ally" ], + "flags": [ "SILENT" ], + "min_aoe": 10, + "max_aoe": 10, + "min_damage": 1000, + "max_damage": 1000, + "shape": "blast", + "effect": "upgrade" + }, + { + "id": "necro_boomer_death", + "type": "SPELL", + "name": { "str": "Necro Boomer Death" }, + "description": "Revives and then upgrades zombies in a large area", + "valid_targets": [ "ground", "ally" ], + "shape": "blast", + "effect": "noise", + "min_damage": 24, + "max_damage": 24, + "sound_type": "combat", + "sound_id": "explosion", + "sound_variant": "small", + "extra_effects": [ { "id": "necro_boomer_revive", "hit_self": true }, { "id": "necro_boomer_upgrade", "hit_self": true } ] + }, + { + "id": "zombie_child_guilt", + "type": "SPELL", + "name": { "str": "Zombie Child Guilt" }, + "description": "Causes guilt to the target as if the caster was killed by it.", + "valid_targets": [ "hostile" ], + "flags": [ "SILENT" ], + "shape": "blast", + "effect": "guilt", + "effect_str": "ZOMBIE", + "min_damage": 100, + "max_damage": 100, + "min_duration": 180000, + "max_duration": 180000, + "min_range": 5, + "max_range": 5 + }, + { + "id": "death_acid", + "type": "SPELL", + "name": { "str": "Acid Death" }, + "description": "Acid sprays out of a dead acid zombie or some such.", + "valid_targets": [ "ground", "self" ], + "flags": [ "SILENT" ], + "shape": "blast", + "effect": "attack", + "field_id": "fd_acid", + "min_field_intensity": 3, + "max_field_intensity": 3, + "field_chance": 1 + }, + { + "id": "death_halfworm", + "type": "SPELL", + "name": { "str": "Death Halfworm" }, + "description": "Spawns two halfworms.", + "valid_targets": [ "ground", "self" ], + "min_damage": 2, + "max_damage": 2, + "flags": [ "SILENT" ], + "shape": "blast", + "effect": "summon", + "effect_str": "mon_halfworm", + "min_aoe": 1, + "max_aoe": 1 + }, + { + "id": "death_blobsplit_large", + "type": "SPELL", + "name": { "str": "Death Blobsplit Large" }, + "description": "A large blob splits in half", + "valid_targets": [ "ground", "self" ], + "min_damage": 2, + "max_damage": 2, + "flags": [ "SILENT" ], + "shape": "blast", + "effect": "summon", + "effect_str": "mon_blob", + "min_aoe": 1, + "max_aoe": 1 + }, + { + "id": "death_blobsplit", + "type": "SPELL", + "name": { "str": "Death Blobsplit" }, + "description": "A blob splits in half", + "valid_targets": [ "ground", "self" ], + "min_damage": 2, + "max_damage": 2, + "flags": [ "SILENT" ], + "shape": "blast", + "effect": "summon", + "effect_str": "mon_blob_small", + "min_aoe": 1, + "max_aoe": 1 + }, + { + "id": "death_blobsplit_brain", + "type": "SPELL", + "name": { "str": "Death Blobsplit Brain" }, + "description": "A blob brain splits in half", + "valid_targets": [ "ground", "self" ], + "min_damage": 3, + "max_damage": 3, + "flags": [ "SILENT" ], + "shape": "blast", + "effect": "summon", + "effect_str": "mon_blob_large", + "min_aoe": 1, + "max_aoe": 1 + }, + { + "id": "death_blob_brain", + "type": "SPELL", + "name": { "str": "Death Blob Brain" }, + "description": "A blob brain dies", + "valid_targets": [ "ally" ], + "min_aoe": 48, + "max_aoe": 48, + "flags": [ "SILENT" ], + "shape": "blast", + "effect": "remove_effect", + "effect_str": "controlled", + "targeted_monster_ids": [ "blob_small", "blob", "blob_large" ], + "extra_effects": [ { "id": "death_blobsplit_brain", "hit_self": true } ] + }, + { + "id": "death_explosion", + "type": "SPELL", + "name": { "str": "Death Explosion Sound" }, + "description": "boom", + "valid_targets": [ "self" ], + "shape": "blast", + "effect": "noise", + "min_damage": 24, + "max_damage": 24, + "sound_id": "explosion", + "sound_type": "combat", + "sound_variant": "small" + }, + { + "id": "death_gas", + "type": "SPELL", + "name": { "str": "Gas Explosion" }, + "description": "Causes a small explosion of toxic gas.", + "valid_targets": [ "self" ], + "shape": "blast", + "effect": "emit", + "effect_str": "emit_toxic_blast", + "extra_effects": [ { "id": "death_explosion", "hit_self": true } ] + }, + { + "id": "death_smokeburst", + "type": "SPELL", + "name": { "str": "Smoke Explosion" }, + "description": "Causes a small explosion of smoke.", + "valid_targets": [ "self" ], + "shape": "blast", + "effect": "emit", + "effect_str": "emit_smoke_blast", + "extra_effects": [ { "id": "death_explosion", "hit_self": true } ] + }, + { + "id": "death_tearburst", + "type": "SPELL", + "name": { "str": "Teargas Explosion" }, + "description": "Causes a small explosion of teargas.", + "valid_targets": [ "self" ], + "shape": "blast", + "effect": "emit", + "effect_str": "emit_tear_gas_blast", + "extra_effects": [ { "id": "death_explosion", "hit_self": true } ] + }, + { + "id": "death_fungalburst", + "type": "SPELL", + "name": { "str": "Fungal Explosion" }, + "description": "Causes a small explosion of fungus.", + "valid_targets": [ "self" ], + "shape": "blast", + "effect": "emit", + "//": "TODO: Add the ability to check if there's anti-fungal gas here to negate this effect.", + "effect_str": "emit_fungal_blast", + "extra_effects": [ { "id": "death_explosion", "hit_self": true } ] + }, + { + "id": "death_pouf", + "type": "SPELL", + "name": { "str": "Death Pouf Sound" }, + "description": "pouf", + "valid_targets": [ "self" ], + "effect": "noise", + "min_damage": 10, + "max_damage": 10, + "shape": "blast", + "sound_id": "misc", + "sound_variant": "puff", + "sound_type": "combat", + "message": "Pouf!" + }, + { + "id": "death_fungus", + "type": "SPELL", + "name": { "str": "Pouf" }, + "description": "Fungal pouf", + "valid_targets": [ "ground", "self" ], + "effect": "fungalize", + "flags": [ "SILENT" ], + "min_damage": 2500, + "max_damage": 2500, + "min_aoe": 1, + "max_aoe": 1, + "shape": "blast", + "extra_effects": [ { "id": "death_pouf", "hit_self": true } ] + }, + { + "id": "remove_controlled_jackson", + "type": "SPELL", + "name": { "str": "Uncontrol Dancers" }, + "valid_targets": [ "self", "ally" ], + "description": "Removes control effect from polymorphed dancers.", + "targeted_monster_ids": [ "mon_zombie_hulk" ], + "min_aoe": 48, + "max_aoe": 48, + "shape": "blast", + "effect_str": "controlled", + "effect": "remove_effect" + }, + { + "id": "death_jackson", + "type": "SPELL", + "name": { "str": "Jackson Death" }, + "description": "Hee Hee! WOO!", + "valid_targets": [ "self", "ally" ], + "effect": "targeted_polymorph", + "min_aoe": 48, + "max_aoe": 48, + "min_damage": 400, + "max_damage": 400, + "flags": [ "SILENT" ], + "shape": "blast", + "effect_str": "mon_zombie_hulk", + "targeted_monster_ids": [ "mon_zombie_dancer" ], + "extra_effects": [ { "id": "remove_controlled_jackson", "hit_self": true } ] + }, + { + "id": "death_darkman", + "type": "SPELL", + "name": { "str": "Darkman Death" }, + "valid_targets": [ "ally", "hostile" ], + "description": "Removes the darkness effect.", + "min_range": 48, + "max_range": 48, + "shape": "blast", + "effect": "remove_effect", + "effect_str": "darkness" + }, + { + "id": "death_fakespell", + "type": "SPELL", + "name": { "str": "Fake Spell" }, + "description": "A spell that doesn't do anything.", + "valid_targets": [ "hostile", "ally", "ground" ], + "flags": [ "SILENT" ], + "shape": "blast", + "effect": "noise" + }, + { + "id": "death_fireball", + "type": "SPELL", + "name": { "str": "Fireball Death" }, + "valid_targets": [ "ally", "ground", "hostile" ], + "description": "1/10 chance to burst into flames.", + "flags": [ "WONDER" ], + "effect": "none", + "shape": "blast", + "extra_effects": [ + { "id": "death_fakespell" }, + { "id": "death_fakespell" }, + { "id": "death_fakespell" }, + { "id": "death_fakespell" }, + { "id": "death_fakespell" }, + { "id": "death_fakespell" }, + { "id": "death_fakespell" }, + { "id": "death_fakespell" }, + { "id": "death_fakespell" }, + { "id": "death_conflagration", "hit_self": true } + ] + }, + { + "id": "death_conflagration", + "type": "SPELL", + "name": { "str": "Conflagration Death" }, + "valid_targets": [ "self", "ally", "hostile", "ground" ], + "description": "A fireball. Hits with mild shrapnel, but the main effect is fire.", + "effect": "attack", + "field_id": "fd_fire", + "field_chance": 2, + "min_field_intensity": 2, + "max_field_intensity": 2, + "min_aoe": 3, + "max_aoe": 3, + "min_damage": 2, + "max_damage": 2, + "min_duration": 1000, + "max_duration": 1000, + "damage_type": "cut", + "shape": "blast" + }, + { + "id": "death_explosion_mon_spider_jumping_mega", + "type": "SPELL", + "name": { "str": "Death Explosion Huge" }, + "valid_targets": [ "self", "ally", "hostile", "ground" ], + "description": "Big Boom", + "effect": "explosion", + "min_aoe": 8, + "max_aoe": 8, + "min_damage": 26, + "max_damage": 26, + "shape": "blast" + }, + { + "id": "death_explosion_mon_spawn_raptor_unstable", + "type": "SPELL", + "name": { "str": "Death Explosion Tiny" }, + "valid_targets": [ "self", "ally", "hostile", "ground" ], + "description": "tiny boom", + "min_aoe": 8, + "max_aoe": 8, + "min_damage": 4, + "max_damage": 4, + "effect": "explosion", + "shape": "blast" + }, + { + "id": "death_explosion_mon_hazmatbot", + "type": "SPELL", + "name": { "str": "Death Explosion Large" }, + "valid_targets": [ "self", "ally", "hostile", "ground" ], + "description": "tiny boom", + "min_aoe": 8, + "max_aoe": 8, + "min_damage": 20, + "max_damage": 20, + "effect": "explosion", + "shape": "blast" + }, + { + "id": "death_thing", + "type": "SPELL", + "name": { "str": "Death Thing" }, + "description": "Spawns a thing.", + "valid_targets": [ "ground", "self" ], + "min_damage": 1, + "max_damage": 1, + "flags": [ "SILENT" ], + "shape": "blast", + "effect": "summon", + "effect_str": "mon_thing", + "min_aoe": 1, + "max_aoe": 1 + }, + { + "id": "death_preg_roach", + "type": "SPELL", + "name": { "str": "Death Pregnant Roach" }, + "description": "Spawns roach nymph.", + "valid_targets": [ "ground", "self" ], + "min_damage": 1, + "max_damage": 3, + "flags": [ "RANDOM_DAMAGE" ], + "shape": "blast", + "effect": "summon", + "effect_str": "mon_giant_cockroach_nymph", + "min_aoe": 1, + "max_aoe": 1 + }, + { + "id": "death_boomer", + "type": "SPELL", + "name": { "str": "Death Boomer" }, + "description": "Vomitous Explosion", + "valid_targets": [ "ground", "hostile", "ally", "self" ], + "min_aoe": 1, + "max_aoe": 2, + "aoe_increment": 1, + "max_level": 1, + "min_duration": 2400, + "max_duration": 2400, + "shape": "blast", + "effect": "attack", + "effect_str": "boomered", + "field_chance": 1, + "field_id": "fd_bile", + "max_field_intensity": 2, + "min_field_intensity": 2, + "affected_body_parts": [ "EYES" ], + "extra_effects": [ { "id": "death_explosion", "hit_self": true } ] + }, + { + "id": "death_boomer_glow", + "type": "SPELL", + "name": { "str": "Death Boomer Glow" }, + "description": "Boomers and Glow", + "valid_targets": [ "ground", "hostile", "ally", "self" ], + "shape": "blast", + "effect": "attack", + "effect_str": "glowing", + "max_level": 1, + "affected_body_parts": [ "TORSO", "ARM_R", "ARM_L", "LEG_R", "LEG_L" ], + "extra_effects": [ { "id": "death_boomer", "hit_self": true } ], + "min_duration": 24000, + "max_duration": 24000 + }, + { + "id": "ratking_summon_rats", + "type": "SPELL", + "name": { "str": "Death Summon Rats" }, + "description": "makes some rats", + "valid_targets": [ "ground" ], + "shape": "blast", + "effect": "summon", + "effect_str": "mon_sewer_rat", + "min_damage": 7, + "max_damage": 7, + "min_aoe": 1, + "max_aoe": 1 + }, + { + "id": "death_ratking", + "type": "SPELL", + "name": { "str": "Death Ratking" }, + "description": "Death Ratking", + "valid_targets": [ "hostile", "ally" ], + "shape": "blast", + "effect": "remove_effect", + "effect_str": "rat", + "min_range": 48, + "max_range": 48, + "extra_effects": [ { "id": "ratking_summon_rats", "hit_self": true } ] + }, + { + "id": "death_focused_beam_explosion", + "type": "SPELL", + "name": { "str": "Death Focused Beam Explosion" }, + "description": "Give 'em the old flim flam flummox", + "valid_targets": [ "self" ], + "shape": "blast", + "effect": "explosion", + "min_damage": 8, + "max_damage": 8 + }, + { + "id": "death_focused_beam", + "type": "SPELL", + "name": { "str": "Death Focused Beam" }, + "description": "Give 'em the old razzle dazzle", + "valid_targets": [ "hostile", "ally", "ground" ], + "effect": "attack", + "shape": "line", + "field_id": "fd_dazzling", + "field_chance": 1, + "min_field_intensity": 2, + "max_field_intensity": 2, + "extra_effects": [ { "id": "death_focused_beam_explosion", "hit_self": true } ] + }, + { + "id": "death_kill_vines", + "type": "SPELL", + "name": { "str": "Death Kill Vines" }, + "description": "Kill all vines", + "valid_targets": [ "hostile", "ally" ], + "effect": "attack", + "shape": "blast", + "targeted_monster_ids": [ "mon_creeper_vine" ], + "damage_type": "pure", + "min_damage": 1000, + "max_damage": 1000, + "min_aoe": 1, + "max_aoe": 48, + "aoe_increment": 48, + "max_level": 1, + "flags": [ "SILENT" ] + }, + { + "id": "death_kill_breathers", + "type": "SPELL", + "name": { "str": "Death Kill Breathers" }, + "description": "Kill all breathers", + "valid_targets": [ "hostile", "ally" ], + "effect": "attack", + "shape": "blast", + "targeted_monster_ids": [ "mon_breather", "mon_breather_hub" ], + "damage_type": "pure", + "min_damage": 1000, + "max_damage": 1000, + "min_aoe": 48, + "max_aoe": 48, + "aoe_increment": 48, + "flags": [ "SILENT" ] + }, + { + "id": "death_gameover", + "type": "SPELL", + "name": { "str": "Death Gameover" }, + "message": "Game over, man!", + "description": "You Died", + "min_damage": 1000, + "max_damage": 1000, + "min_aoe": 48, + "max_aoe": 48, + "damage_type": "pure", + "effect": "attack", + "shape": "blast", + "valid_targets": [ "ally", "hostile" ] + }, + { + "id": "death_triffid_heart", + "type": "SPELL", + "name": { "str": "Death Triffid Heart" }, + "description": "kills roots", + "effect": "timed_event", + "min_duration": 60000, + "max_duration": 60000, + "min_range": 48, + "max_range": 48, + "effect_str": "ROOTS_DIE", + "shape": "blast", + "valid_targets": [ "ally", "hostile" ] + }, + { + "id": "death_amigara", + "type": "SPELL", + "name": { "str": "Death Amigara" }, + "valid_targets": [ "hostile", "ally", "ground" ], + "description": "removes hypnosis", + "effect": "remove_effect", + "effect_str": "amigara", + "min_range": 48, + "max_range": 48, + "shape": "blast" + } +] diff --git a/data/json/monster_special_attacks/spells.json b/data/json/monster_special_attacks/spells.json index e7a239828601c..fcb6994e2b4b7 100644 --- a/data/json/monster_special_attacks/spells.json +++ b/data/json/monster_special_attacks/spells.json @@ -189,6 +189,22 @@ "effect": "summon", "effect_str": "mon_spawn_raptor" }, + { + "type": "SPELL", + "id": "hive_raptor_spawn", + "name": { "str": "Spawn Raptor" }, + "description": "Summons a zombie-spawn raptor without killing the zombie.", + "flags": [ "HOSTILE_SUMMON", "RANDOM_DAMAGE", "PERMANENT" ], + "valid_targets": [ "ground", "self" ], + "min_damage": 1, + "max_damage": 1, + "min_aoe": 3, + "max_aoe": 3, + "base_casting_time": 100, + "shape": "blast", + "effect": "summon", + "effect_str": "mon_spawn_raptor" + }, { "type": "SPELL", "id": "shady_raptor_spawn", diff --git a/data/json/monsterdrops/misc.json b/data/json/monsterdrops/misc.json index 4a21c3695afe7..5b04aa5f4a13f 100644 --- a/data/json/monsterdrops/misc.json +++ b/data/json/monsterdrops/misc.json @@ -22,6 +22,42 @@ { "item": "amplifier", "count": [ 0, 3 ] } ] }, + { + "type": "item_group", + "id": "amigara_items", + "subtype": "distribution", + "items": [ + [ "art_sphere", 100 ], + [ "art_rod", 100 ], + [ "art_teardrop", 100 ], + [ "art_lamp", 100 ], + [ "art_snake", 100 ], + [ "art_disc", 100 ], + [ "art_beads", 100 ], + [ "art_napkin", 100 ], + [ "art_urchin", 100 ], + [ "art_jelly", 100 ], + [ "art_spiral", 100 ], + [ "art_pin", 100 ], + [ "art_tube", 100 ], + [ "art_pyramid", 100 ], + [ "art_crystal", 100 ], + [ "art_knot", 100 ], + [ "art_crescent", 100 ] + ] + }, + { + "type": "item_group", + "id": "amigara_drops", + "subtype": "distribution", + "entries": [ + { + "group": "amigara_items", + "artifact": { "procgen_id": "netherum_tunnels", "rules": { "power_level": 750, "max_attributes": 4, "max_negative_power": -1000 } }, + "prob": 100 + } + ] + }, { "type": "item_group", "subtype": "collection", diff --git a/data/json/monsterdrops/zombie.json b/data/json/monsterdrops/zombie.json index 4421b276c6d3c..e1b0c8fc26c2e 100644 --- a/data/json/monsterdrops/zombie.json +++ b/data/json/monsterdrops/zombie.json @@ -51,6 +51,12 @@ { "group": "wallets", "damage": [ 1, 4 ] } ] }, + { + "type": "item_group", + "subtype": "collection", + "id": "mon_blob_small_deathdrops", + "entries": [ { "item": "slime_scrap", "count": 1 } ] + }, { "type": "item_group", "subtype": "collection", diff --git a/data/json/monsterdrops/zombie_milbase_personnel.json b/data/json/monsterdrops/zombie_milbase_personnel.json new file mode 100644 index 0000000000000..144261abbb259 --- /dev/null +++ b/data/json/monsterdrops/zombie_milbase_personnel.json @@ -0,0 +1,20 @@ +[ + { + "id": "mon_zombie_milbase_personnel_death_drops", + "type": "item_group", + "subtype": "collection", + "magazine": 100, + "ammo": 60, + "entries": [ + { "group": "clothing_military", "damage": [ 0, 4 ] }, + { "group": "clothing_military_headwear", "prob": 40, "damage": [ 0, 4 ] }, + { "group": "gear_soldier_sidearm", "prob": 10 }, + { "item": "two_way_radio", "charges": [ 0, 300 ], "prob": 25 }, + { "group": "wallets_military", "prob": 5 }, + { "group": "clothing_glasses", "damage": [ 0, 4 ], "prob": 5 }, + { "item": "wristwatch", "damage": [ 0, 4 ], "prob": 33 }, + { "group": "mil_food_nodrugs", "prob": 15 }, + { "group": "misc_smoking", "prob": 10 } + ] + } +] diff --git a/data/json/monstergroups/lab.json b/data/json/monstergroups/lab.json index a5a25cbd9b292..98e95e001bfb3 100644 --- a/data/json/monstergroups/lab.json +++ b/data/json/monstergroups/lab.json @@ -20,7 +20,8 @@ { "monster": "mon_zombie_static", "freq": 50, "cost_multiplier": 3 }, { "monster": "mon_zombie_brute_shocker", "freq": 10, "cost_multiplier": 5 }, { "monster": "mon_zombie_hulk", "freq": 1, "cost_multiplier": 50 }, - { "monster": "mon_skeleton_hulk", "freq": 1, "cost_multiplier": 50 } + { "monster": "mon_skeleton_hulk", "freq": 1, "cost_multiplier": 50 }, + { "monster": "mon_lab_rat", "freq": 30, "cost_multiplier": 20, "pack_size": [ 4, 8 ] } ] }, { @@ -57,9 +58,10 @@ { "monster": "mon_zombie_electric", "freq": 50, "cost_multiplier": 3 }, { "monster": "mon_zombie_necro", "freq": 15, "cost_multiplier": 15 }, { "monster": "mon_zombie_brute_shocker", "freq": 10, "cost_multiplier": 5 }, - { "monster": "mon_mole_cricket", "freq": 20, "cost_multiplier": 3 } + { "monster": "mon_mole_cricket", "freq": 20, "cost_multiplier": 3 }, + { "monster": "mon_lab_rat", "freq": 30, "cost_multiplier": 20, "pack_size": [ 4, 8 ] } ], - "freq_total": 2592 + "freq_total": 2622 }, { "type": "monstergroup", @@ -93,9 +95,10 @@ { "monster": "mon_zombie_bio_op", "freq": 50, "cost_multiplier": 5 }, { "monster": "mon_zombie_bio_op2", "freq": 25, "cost_multiplier": 5, "starts": 1440 }, { "monster": "mon_zombie_armored", "freq": 5, "cost_multiplier": 5 }, - { "monster": "mon_zombie_brute_shocker", "freq": 5, "cost_multiplier": 5 } + { "monster": "mon_zombie_brute_shocker", "freq": 5, "cost_multiplier": 5 }, + { "monster": "mon_lab_rat", "freq": 50, "cost_multiplier": 20, "pack_size": [ 4, 8 ] } ], - "freq_total": 2589 + "freq_total": 2639 }, { "type": "monstergroup", @@ -181,7 +184,8 @@ { "monster": "mon_zombie_electric", "freq": 10, "cost_multiplier": 3 }, { "monster": "mon_zombie_necro", "freq": 1, "cost_multiplier": 15 }, { "monster": "mon_zombie_brute_shocker", "freq": 1, "cost_multiplier": 5 }, - { "monster": "mon_mole_cricket", "freq": 2, "cost_multiplier": 3 } + { "monster": "mon_mole_cricket", "freq": 2, "cost_multiplier": 3 }, + { "monster": "mon_lab_rat", "freq": 20, "cost_multiplier": 20, "pack_size": [ 2, 8 ] } ] } ] diff --git a/data/json/monstergroups/military.json b/data/json/monstergroups/military.json index 235912d435406..d2315df385800 100644 --- a/data/json/monstergroups/military.json +++ b/data/json/monstergroups/military.json @@ -47,12 +47,13 @@ { "monster": "mon_zombie_kevlar_1", "freq": 50, "cost_multiplier": 10 }, { "monster": "mon_zombie_flamer", "freq": 50, "cost_multiplier": 5 }, { "monster": "mon_zombie_military_pilot", "freq": 5, "cost_multiplier": 1 }, + { "monster": "mon_zombie_milbase_personnel", "freq": 40, "cost_multiplier": 1 }, { "monster": "mon_zombie_bio_op", "freq": 30, "cost_multiplier": 5 }, { "monster": "mon_zombie_soldier_blackops_1", "freq": 15, "cost_multiplier": 10 }, { "monster": "mon_zombie_armored", "freq": 5, "cost_multiplier": 5 }, { "monster": "mon_zombie_scorched", "freq": 25, "cost_multiplier": 1 }, { "monster": "mon_zombie_hazmat", "freq": 25, "cost_multiplier": 1 }, - { "monster": "mon_zombie", "freq": 50, "cost_multiplier": 1 } + { "monster": "mon_zombie", "freq": 10, "cost_multiplier": 1 } ] }, { @@ -61,8 +62,8 @@ "//": "Civilians with soldiers and burned ones.", "default": "mon_zombie", "monsters": [ - { "monster": "mon_zombie_fat", "freq": 100, "cost_multiplier": 2 }, - { "monster": "mon_zombie_child", "freq": 40, "cost_multiplier": 1 }, + { "monster": "mon_zombie_fat", "freq": 60, "cost_multiplier": 2 }, + { "monster": "mon_zombie_child", "freq": 30, "cost_multiplier": 1 }, { "monster": "mon_zombie_tough", "freq": 40, "cost_multiplier": 3 }, { "monster": "mon_zombie_rot", "freq": 20, "cost_multiplier": 2 }, { "monster": "mon_zombie_crawler", "freq": 10, "cost_multiplier": 2 }, @@ -80,6 +81,7 @@ { "monster": "mon_zombie_survivor_elite", "freq": 1, "cost_multiplier": 25, "starts": 1440 }, { "monster": "mon_zombie_scorched", "freq": 25, "cost_multiplier": 2 }, { "monster": "mon_zombie_soldier", "freq": 200, "cost_multiplier": 2 }, + { "monster": "mon_zombie_milbase_personnel", "freq": 50, "cost_multiplier": 1 }, { "monster": "mon_zombie_military_pilot", "freq": 5, "cost_multiplier": 1 }, { "monster": "mon_zombie_flamer", "freq": 1, "cost_multiplier": 30 } ] @@ -90,7 +92,7 @@ "//": "Civilians with soldiers, doctors and burned ones. More hazmat.", "default": "mon_zombie_soldier", "monsters": [ - { "monster": "mon_zombie", "freq": 100, "cost_multiplier": 2 }, + { "monster": "mon_zombie", "freq": 50, "cost_multiplier": 2 }, { "monster": "mon_zombie_fat", "freq": 60, "cost_multiplier": 2 }, { "monster": "mon_zombie_child", "freq": 40, "cost_multiplier": 1 }, { "monster": "mon_zombie_tough", "freq": 40, "cost_multiplier": 3 }, @@ -110,6 +112,7 @@ { "monster": "mon_zombie_survivor_elite", "freq": 1, "cost_multiplier": 25, "starts": 1440 }, { "monster": "mon_zombie_scorched", "freq": 25, "cost_multiplier": 1 }, { "monster": "mon_zombie_soldier", "freq": 200, "cost_multiplier": 2 }, + { "monster": "mon_zombie_milbase_personnel", "freq": 50, "cost_multiplier": 1 }, { "monster": "mon_zombie_military_pilot", "freq": 20, "cost_multiplier": 1 }, { "monster": "mon_zombie_flamer", "freq": 1, "cost_multiplier": 30 }, { "monster": "mon_zombie_scientist", "freq": 100, "cost_multiplier": 1 } diff --git a/data/json/monstergroups/misc.json b/data/json/monstergroups/misc.json index 1bd7a3f098902..8278a649d685e 100644 --- a/data/json/monstergroups/misc.json +++ b/data/json/monstergroups/misc.json @@ -5,6 +5,45 @@ "is_safe": true, "default": "mon_null" }, + { + "type": "monstergroup", + "name": "GROUP_BLACK_ROAD", + "default": "mon_zombie", + "monsters": [ + { "monster": "mon_zombie", "freq": 1, "cost_multiplier": 7, "pack_size": [ 5, 20 ] }, + { "monster": "mon_zombie", "freq": 1, "cost_multiplier": 13, "pack_size": [ 15, 40 ] }, + { "monster": "mon_zombie", "freq": 1, "cost_multiplier": 20, "pack_size": [ 25, 60 ] }, + { "monster": "mon_zombie", "freq": 75, "cost_multiplier": 0 }, + { "monster": "mon_zombie_fat", "freq": 75, "cost_multiplier": 2 }, + { "monster": "mon_zombie_fat", "freq": 3, "cost_multiplier": 7, "pack_size": [ 3, 5 ] }, + { "monster": "mon_zombie_tough", "freq": 75, "cost_multiplier": 3 }, + { "monster": "mon_zombie_child", "freq": 75, "cost_multiplier": 1 }, + { "monster": "mon_zombie_rot", "freq": 50, "cost_multiplier": 3 }, + { "monster": "mon_zombie_crawler", "freq": 25, "cost_multiplier": 3 }, + { "monster": "mon_zombie_dog", "freq": 20, "cost_multiplier": 2 }, + { "monster": "mon_zombie_dog", "freq": 1, "cost_multiplier": 4, "pack_size": [ 3, 5 ] }, + { "monster": "mon_zombie_dog", "freq": 1, "cost_multiplier": 16, "pack_size": [ 5, 8 ] }, + { "monster": "mon_zombie_dog", "freq": 1, "cost_multiplier": 24, "pack_size": [ 8, 12 ] }, + { "monster": "mon_dog_zombie_cop", "freq": 5, "cost_multiplier": 4 }, + { "monster": "mon_dog_zombie_rot", "freq": 5, "cost_multiplier": 5 }, + { "monster": "mon_zombie_soldier", "freq": 10, "cost_multiplier": 2 }, + { "monster": "mon_zombie_cop", "freq": 20, "cost_multiplier": 3 }, + { "monster": "mon_zombie_swat", "freq": 10, "cost_multiplier": 3 }, + { "monster": "mon_zombie_hazmat", "freq": 10, "cost_multiplier": 3 }, + { "monster": "mon_zombie_fireman", "freq": 10, "cost_multiplier": 2 }, + { "monster": "mon_zombie_swimmer", "freq": 10, "cost_multiplier": 5 }, + { "monster": "mon_zombie_static", "freq": 10, "cost_multiplier": 5 }, + { "monster": "mon_zombie_survivor", "freq": 1, "cost_multiplier": 25 }, + { "monster": "mon_zombie_survivor_elite", "freq": 1, "cost_multiplier": 25, "starts": 1440 }, + { "monster": "mon_beekeeper", "freq": 1, "cost_multiplier": 5 }, + { "monster": "mon_zombie_technician", "freq": 1, "cost_multiplier": 12 }, + { "monster": "mon_zombie_runner", "freq": 20, "cost_multiplier": 5, "pack_size": [ 1, 4 ] }, + { "monster": "mon_feral_human_pipe", "freq": 4, "cost_multiplier": 1, "pack_size": [ 2, 3 ] }, + { "monster": "mon_feral_human_crowbar", "freq": 4, "cost_multiplier": 1, "pack_size": [ 2, 3 ] }, + { "monster": "mon_feral_human_axe", "freq": 2, "cost_multiplier": 2, "pack_size": [ 1, 2 ] }, + { "monster": "mon_zombie_brainless", "freq": 65, "cost_multiplier": 1 } + ] + }, { "type": "monstergroup", "name": "GROUP_CHUD", @@ -14,6 +53,13 @@ { "monster": "mon_crawler", "freq": 35, "cost_multiplier": 0 } ] }, + { + "type": "monstergroup", + "name": "GROUP_SUBWAY", + "//": "Work very much in progress", + "default": "mon_null", + "monsters": [ { "monster": "mon_unseen_hunter", "freq": 100, "cost_multiplier": 1, "starts": 168 } ] + }, { "type": "monstergroup", "name": "GROUP_DOMESTIC", diff --git a/data/json/monstergroups/nether.json b/data/json/monstergroups/nether.json index c89fc03953a4a..c1d1050423eb3 100644 --- a/data/json/monstergroups/nether.json +++ b/data/json/monstergroups/nether.json @@ -35,6 +35,7 @@ { "monster": "mon_flying_polyp", "freq": 100, "cost_multiplier": 0 }, { "monster": "mon_hunting_horror", "freq": 100, "cost_multiplier": 0 }, { "monster": "mon_mi_go", "freq": 100, "cost_multiplier": 0 }, + { "monster": "mon_unseen_hunter", "freq": 100, "cost_multiplier": 1, "starts": 180 }, { "monster": "mon_mi_go_scout", "freq": 100, "cost_multiplier": 0, "starts": 360 }, { "monster": "mon_yugg", "freq": 100, "cost_multiplier": 0 }, { "monster": "mon_gelatin", "freq": 100, "cost_multiplier": 0 }, @@ -51,6 +52,7 @@ "monsters": [ { "monster": "mon_flying_polyp", "freq": 25, "cost_multiplier": 0 }, { "monster": "mon_hunting_horror", "freq": 240, "cost_multiplier": 0 }, + { "monster": "mon_unseen_hunter", "freq": 50, "cost_multiplier": 0, "starts": 720 }, { "monster": "mon_yugg", "freq": 70, "cost_multiplier": 0 }, { "monster": "mon_gelatin", "freq": 120, "cost_multiplier": 0 }, { "monster": "mon_flaming_eye", "freq": 120, "cost_multiplier": 0 }, @@ -80,6 +82,7 @@ { "monster": "mon_flaming_eye", "freq": 200, "cost_multiplier": 0 }, { "monster": "mon_kreck", "freq": 200, "cost_multiplier": 0 }, { "monster": "mon_gracke", "freq": 200, "cost_multiplier": 0 }, + { "monster": "mon_unseen_hunter", "freq": 100, "cost_multiplier": 0, "starts": 720 }, { "monster": "mon_blank", "freq": 200, "cost_multiplier": 0 } ] }, diff --git a/data/json/monstergroups/triffid.json b/data/json/monstergroups/triffid.json index 52c2547a73520..b0b3486557c11 100644 --- a/data/json/monstergroups/triffid.json +++ b/data/json/monstergroups/triffid.json @@ -4,30 +4,38 @@ "name": "GROUP_TRIFFID", "default": "mon_triffid", "monsters": [ - { "monster": "mon_triffid_young", "freq": 100, "cost_multiplier": 1 }, + { "monster": "mon_triffid_young", "freq": 300, "cost_multiplier": 0, "pack_size": [ 2, 4 ] }, { "monster": "mon_fungal_fighter", "freq": 100, "cost_multiplier": 1 }, + { "monster": "mon_triffid", "freq": 100, "cost_multiplier": 2, "pack_size": [ 2, 3 ] }, { "monster": "mon_vinebeast", "freq": 160, "cost_multiplier": 10 }, { "monster": "mon_triffid_queen", "freq": 60, "cost_multiplier": 20 }, - { "monster": "mon_creeper_hub", "freq": 50, "cost_multiplier": 2 }, - { "monster": "mon_biollante", "freq": 50, "cost_multiplier": 2 }, - { "monster": "mon_triffid_heart", "freq": 0, "cost_multiplier": 0 } + { "monster": "mon_biollante", "freq": 100, "cost_multiplier": 2, "pack_size": [ 1, 3 ] }, + { "monster": "mon_triffid_flower", "freq": 100, "cost_multiplier": 4 } ] }, { "type": "monstergroup", "name": "GROUP_TRIFFID_OUTER", "default": "mon_triffid", - "//": "Same as GROUP_TRIFFID with no queen or heart, and creeper hubs/fungal fighters mixed in.", "monsters": [ - { "monster": "mon_triffid_young", "freq": 300, "cost_multiplier": 0, "pack_size": [ 2, 4 ] }, - { "monster": "mon_triffid", "freq": 100, "cost_multiplier": 2, "pack_size": [ 2, 3 ] }, + { "monster": "mon_triffid_young", "freq": 100, "cost_multiplier": 0, "pack_size": [ 2, 4 ] }, + { "monster": "mon_triffid", "freq": 300, "cost_multiplier": 2, "pack_size": [ 2, 3 ] }, { "monster": "mon_fungal_fighter", "freq": 160, "cost_multiplier": 0 }, { "monster": "mon_vinebeast", "freq": 160, "cost_multiplier": 10 }, - { "monster": "mon_creeper_hub", "freq": 50, "cost_multiplier": 2 }, { "monster": "mon_biollante", "freq": 50, "cost_multiplier": 2 }, { "monster": "mon_triffid_flower", "freq": 25, "cost_multiplier": 4 } ] }, + { + "type": "monstergroup", + "name": "GROUP_TRIFFID_HEARTGUARDS", + "default": "mon_triffid", + "monsters": [ + { "monster": "mon_triffid", "freq": 300, "cost_multiplier": 0, "pack_size": [ 4, 6 ] }, + { "monster": "mon_vinebeast", "freq": 260, "cost_multiplier": 2 }, + { "monster": "mon_triffid_queen", "freq": 160, "cost_multiplier": 5 } + ] + }, { "type": "monstergroup", "name": "GROUP_TRIFFID_HEART", diff --git a/data/json/monstergroups/zombie_upgrades.json b/data/json/monstergroups/zombie_upgrades.json index a9044da69c7c1..934f2c6e295f5 100644 --- a/data/json/monstergroups/zombie_upgrades.json +++ b/data/json/monstergroups/zombie_upgrades.json @@ -87,9 +87,11 @@ "default": "mon_zombie_brute", "//": "Brute upgrades. Note that 'freq' units are tenth of a percent, with default filling in the gap.", "monsters": [ - { "monster": "mon_zombie_brute_grappler", "freq": 330, "cost_multiplier": 10 }, - { "monster": "mon_zombie_brute_ninja", "freq": 265, "cost_multiplier": 10 }, - { "monster": "mon_zombie_hulk", "freq": 265, "cost_multiplier": 50 }, + { "monster": "mon_zombie_brute_grappler", "freq": 240, "cost_multiplier": 10 }, + { "monster": "mon_zombie_brute_ninja", "freq": 175, "cost_multiplier": 10 }, + { "monster": "mon_brute_pupa", "freq": 100, "cost_multiplier": 10 }, + { "monster": "mon_brute_pupa_decoy", "freq": 100, "cost_multiplier": 10 }, + { "monster": "mon_zombie_hulk", "freq": 245, "cost_multiplier": 50 }, { "monster": "mon_gas_zombie", "freq": 140, "cost_multiplier": 10 } ] }, @@ -107,6 +109,16 @@ { "monster": "mon_zombie_waif", "freq": 200, "cost_multiplier": 7 } ] }, + { + "type": "monstergroup", + "name": "GROUP_BRUTE_PUPA", + "default": "mon_null", + "//": "this is a sub-group of pupating zombies that can only evolve from pupating zombie brutes. Note that 'freq' units are tenth of a percent, with default filling in the gap.", + "monsters": [ + { "monster": "mon_hulk_pupa", "freq": 500, "cost_multiplier": 50 }, + { "monster": "mon_hulk_pupa_decoy", "freq": 500, "cost_multiplier": 50 } + ] + }, { "type": "monstergroup", "name": "GROUP_ZOMBIE_ELECTRIC_UPGRADE", diff --git a/data/json/monsters/bird.json b/data/json/monsters/bird.json index afc64b80d7b73..be66f78153bd8 100644 --- a/data/json/monsters/bird.json +++ b/data/json/monsters/bird.json @@ -27,7 +27,6 @@ "reproduction": { "baby_egg": "egg_chicken", "baby_count": 1, "baby_timer": 2 }, "baby_flags": [ "SPRING", "SUMMER", "AUTUMN", "WINTER" ], "biosignature": { "biosig_item": "feces_bird", "biosig_timer": 3 }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "BIRDFOOD", "SWARMS" ] }, { @@ -69,7 +68,6 @@ "dodge": 4, "harvest": "bird_tiny", "fear_triggers": [ "SOUND", "PLAYER_CLOSE", "FRIEND_ATTACKED", "FRIEND_DIED", "FIRE", "HURT" ], - "death_function": [ "NORMAL" ], "reproduction": { "baby_egg": "egg_crow", "baby_count": 3, "baby_timer": 8 }, "baby_flags": [ "SPRING" ], "biosignature": { "biosig_item": "feces_bird", "biosig_timer": 8 }, @@ -99,7 +97,6 @@ "dodge": 4, "harvest": "bird_small", "fear_triggers": [ "SOUND", "PLAYER_CLOSE", "FRIEND_ATTACKED", "FRIEND_DIED", "FIRE", "HURT" ], - "death_function": [ "NORMAL" ], "reproduction": { "baby_egg": "egg_duck", "baby_count": 3, "baby_timer": 5 }, "baby_flags": [ "SPRING" ], "biosignature": { "biosig_item": "feces_bird", "biosig_timer": 5 }, @@ -149,7 +146,6 @@ "harvest": "bird_small", "vision_day": 50, "fear_triggers": [ "PLAYER_CLOSE", "FRIEND_DIED", "FIRE", "HURT" ], - "death_function": [ "NORMAL" ], "reproduction": { "baby_egg": "egg_turkey", "baby_count": 3, "baby_timer": 12 }, "baby_flags": [ "SPRING", "SUMMER" ], "biosignature": { "biosig_item": "feces_bird", "biosig_timer": 8 }, @@ -200,7 +196,6 @@ "reproduction": { "baby_egg": "egg_cockatrice", "baby_count": 3, "baby_timer": 10 }, "baby_flags": [ "SPRING", "SUMMER", "AUTUMN" ], "biosignature": { "biosig_item": "feces_bird", "biosig_timer": 8 }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "FLIES" ] }, { @@ -228,7 +223,6 @@ "melee_cut": 1, "dodge": 1, "harvest": "bird_tiny", - "death_function": [ "NORMAL" ], "upgrades": { "age_grow": 14, "into": "mon_chicken" }, "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "BIRDFOOD", "SWARMS" ] }, @@ -310,7 +304,6 @@ "harvest": "bird_large", "fear_triggers": [ "PLAYER_CLOSE" ], "special_attacks": [ [ "SHRIEK", 10 ] ], - "death_function": [ "NORMAL" ], "biosignature": { "biosig_item": "feces_bird", "biosig_timer": 8 }, "upgrades": { "half_life": 10, "into_group": "GROUP_CROW_MUTANT" }, "flags": [ "SEES", "HEARS", "SMELLS", "PATH_AVOID_DANGER_1", "WARM", "FLIES" ] @@ -340,7 +333,6 @@ "vision_night": 4, "harvest": "bird_large", "special_attacks": [ [ "SHRIEK", 10 ], [ "LUNGE", 8 ], { "type": "leap", "cooldown": 10, "max_range": 3 } ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "PATH_AVOID_DANGER_1", "STUMBLES", "WARM" ] }, { @@ -367,7 +359,6 @@ "dodge": 4, "harvest": "bird_tiny", "fear_triggers": [ "SOUND", "PLAYER_CLOSE", "FRIEND_ATTACKED", "FRIEND_DIED", "FIRE", "HURT" ], - "death_function": [ "NORMAL" ], "biosignature": { "biosig_item": "feces_bird", "biosig_timer": 4 }, "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "FLIES", "SWARMS", "BIRDFOOD" ] } diff --git a/data/json/monsters/cyborgs.json b/data/json/monsters/cyborgs.json index ac6a6bb8123c0..9bdfebbbd05a9 100644 --- a/data/json/monsters/cyborgs.json +++ b/data/json/monsters/cyborgs.json @@ -27,7 +27,6 @@ "vision_day": 50, "revert_to_itype": "bot_broken_cyborg", "special_attacks": [ [ "PARROT", 800 ] ], - "death_function": [ "NORMAL" ], "harvest": "mon_broken_cyborg", "flags": [ "SEES", @@ -72,7 +71,6 @@ "path_settings": { "avoid_traps": true, "avoid_sharp": true }, "revert_to_itype": "bot_prototype_cyborg", "special_attacks": [ [ "PARROT", 800 ] ], - "death_function": [ "NORMAL" ], "harvest": "mon_broken_cyborg", "flags": [ "SEES", @@ -115,7 +113,7 @@ "revert_to_itype": "e_scrap", "anger_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT" ], "death_drops": { "subtype": "collection", "groups": [ [ "robots", 80 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", "GOODHEARING", "NOHEAD", "NO_BREATHE", "PATH_AVOID_DANGER_2", "PRIORITIZE_TARGETS", "HIT_AND_RUN" ] }, { @@ -166,7 +164,7 @@ } ], "death_drops": { "subtype": "collection", "groups": [ [ "robots", 80 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", "GOODHEARING", "NOHEAD", "NO_BREATHE", "PATH_AVOID_DANGER_2", "PRIORITIZE_TARGETS", "HIT_AND_RUN" ] }, { @@ -193,10 +191,11 @@ "melee_cut": 12, "armor_bash": 12, "armor_cut": 28, + "bleed_rate": 50, "vision_night": 3, "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "GRAB", 7 ], [ "scratch", 20 ] ], "death_drops": { "subtype": "collection", "groups": [ [ "robots", 80 ] ] }, - "death_function": [ "FIREBALL" ], + "death_function": { "effect": { "id": "death_fireball", "hit_self": true } }, "harvest": "mon_zomborg", "flags": [ "SEES", diff --git a/data/json/monsters/defense_bot.json b/data/json/monsters/defense_bot.json index e578189b34edd..befeec1d821d2 100644 --- a/data/json/monsters/defense_bot.json +++ b/data/json/monsters/defense_bot.json @@ -29,7 +29,7 @@ "revert_to_itype": "bot_copbot", "special_attacks": [ [ "COPBOT", 3 ] ], "death_drops": { "groups": [ [ "robots", 4 ], [ "copbot", 1 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", "BASHES", "ELECTRONIC", "COLDPROOF", "NO_BREATHE", "PRIORITIZE_TARGETS", "PATH_AVOID_DANGER_1" ] }, { @@ -60,7 +60,7 @@ "special_attacks": [ [ "RIOTBOT", 1 ] ], "special_when_hit": [ "ZAPBACK", 100 ], "death_drops": { "groups": [ [ "robots", 4 ], [ "copbot", 1 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", "GOODHEARING", "ELECTRONIC", "COLDPROOF", "NO_BREATHE", "PRIORITIZE_TARGETS", "PATH_AVOID_DANGER_1" ] }, { @@ -107,7 +107,7 @@ } ], "death_drops": { }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", "ELECTRONIC", "COLDPROOF", "NO_BREATHE", "PATH_AVOID_DANGER_1", "LOUDMOVES", "DROPS_AMMO" ] }, { @@ -154,7 +154,7 @@ } ], "death_drops": { }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", "ELECTRONIC", "COLDPROOF", "NO_BREATHE", "PATH_AVOID_DANGER_1", "LOUDMOVES", "DROPS_AMMO" ] }, { @@ -183,7 +183,7 @@ "path_settings": { "max_dist": 5 }, "special_attacks": [ [ "TAZER", 5 ] ], "death_drops": { "groups": [ [ "robots", 4 ], [ "skitterbot", 1 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", "GOODHEARING", "ELECTRONIC", "COLDPROOF", "NO_BREATHE", "PATH_AVOID_DANGER_1" ] }, { @@ -218,7 +218,7 @@ "path_settings": { "max_dist": 5, "avoid_traps": true, "avoid_sharp": true }, "special_attacks": [ [ "SCIENCE", 16 ], [ "TAZER", 10 ] ], "death_drops": { "groups": [ [ "robots", 4 ], [ "skitterbot", 1 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", @@ -259,7 +259,7 @@ "path_settings": { "max_dist": 5, "avoid_traps": true, "avoid_sharp": true }, "special_attacks": [ [ "SMASH", 20 ], [ "BIO_OP_TAKEDOWN", 20 ] ], "death_drops": "mon_robofac_prototype_drops", - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", @@ -305,7 +305,7 @@ "starting_ammo": { "bot_c4_hack": 2, "bot_flashbang_hack": 3, "bot_gasbomb_hack": 3, "bot_grenade_hack": 10 }, "special_attacks": [ [ "GRENADIER", 10 ] ], "death_drops": { "groups": [ [ "robots", 1 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", @@ -350,7 +350,7 @@ "starting_ammo": { "bot_c4_hack": 10, "bot_flashbang_hack": 10, "bot_gasbomb_hack": 10, "bot_grenade_hack": 20, "bot_mininuke_hack": 1 }, "special_attacks": [ [ "GRENADIER_ELITE", 10 ] ], "death_drops": { "groups": [ [ "robots", 1 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", diff --git a/data/json/monsters/drones.json b/data/json/monsters/drones.json index 550fa09c3f8a3..9e3ff55845cbe 100644 --- a/data/json/monsters/drones.json +++ b/data/json/monsters/drones.json @@ -14,7 +14,7 @@ "morale": 100, "luminance": 5, "death_drops": { "subtype": "collection", "groups": [ [ "robots", 80 ] ], "//": "80% chance of an item from group robots" }, - "death_function": [ "BROKEN_AMMO" ], + "death_function": { "message": "The %s's interior compartment sizzles with destructive energy.", "corpse_type": "BROKEN" }, "flags": [ "SEES", "FLIES", "NOHEAD", "ELECTRONIC", "NO_BREATHE", "INTERIOR_AMMO" ] }, { @@ -110,7 +110,7 @@ "armor_bullet": 6, "revert_to_itype": "bot_manhack", "death_drops": { "groups": [ [ "robots", 4 ], [ "manhack", 1 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "extend": { "flags": [ "HIT_AND_RUN" ] } }, { @@ -172,7 +172,7 @@ } ], "death_drops": { "subtype": "collection", "groups": [ [ "robots", 80 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", diff --git a/data/json/monsters/feral_humans.json b/data/json/monsters/feral_humans.json index 3d3829915f477..8c18b608fa17e 100644 --- a/data/json/monsters/feral_humans.json +++ b/data/json/monsters/feral_humans.json @@ -44,7 +44,6 @@ } ], "death_drops": "feral_humans_death_drops_pipe", - "death_function": [ "NORMAL" ], "zombify_into": "mon_zombie", "anger_triggers": [ "FRIEND_DIED", "FRIEND_ATTACKED", "HURT" ], "flags": [ @@ -107,7 +106,6 @@ "vision_day": 50, "vision_night": 3, "death_drops": "feral_scientists_death_drops_scalpel", - "death_function": [ "NORMAL" ], "zombify_into": "mon_zombie_scientist", "anger_triggers": [ "FRIEND_DIED", "FRIEND_ATTACKED", "HURT", "PLAYER_CLOSE" ], "flags": [ @@ -172,7 +170,6 @@ } ], "death_drops": "feral_security_death_drops_9mm", - "death_function": [ "NORMAL" ], "zombify_into": "mon_zombie_labsecurity", "anger_triggers": [ "FRIEND_DIED", "FRIEND_ATTACKED", "HURT", "PLAYER_WEAK" ], "flags": [ diff --git a/data/json/monsters/fish.json b/data/json/monsters/fish.json index cccbc26cab972..2f51abbb748d8 100644 --- a/data/json/monsters/fish.json +++ b/data/json/monsters/fish.json @@ -25,6 +25,7 @@ "armor_bash": 20, "armor_cut": 30, "armor_bullet": 24, + "bleed_rate": 60, "vision_day": 30, "vision_night": 20, "path_settings": { "max_dist": 50, "avoid_traps": true, "avoid_sharp": true }, @@ -32,7 +33,6 @@ "special_attacks": [ [ "SHRIEK_ALERT", 6 ], [ "SHRIEK_STUN", 1 ] ], "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], "fear_triggers": [ "FIRE" ], - "death_function": [ "NORMAL" ], "flags": [ "SMELLS", "HEARS", "SEES", "SWIMS", "GRABS", "ARTHROPOD_BLOOD", "QUEEN", "PATH_AVOID_DANGER_1" ] }, { @@ -62,7 +62,6 @@ "reproduction": { "baby_egg": "egg_fish", "baby_count": 2, "baby_timer": 17 }, "baby_flags": [ "SPRING", "SUMMER" ], "fear_triggers": [ "PLAYER_CLOSE", "SOUND" ], - "death_function": [ "NORMAL" ], "harvest": "fish_tiny", "flags": [ "FISHABLE", "SEES", "SMELLS", "WARM", "SWIMS", "AQUATIC" ] }, @@ -93,7 +92,6 @@ "reproduction": { "baby_egg": "egg_fish", "baby_count": 2, "baby_timer": 17 }, "baby_flags": [ "SPRING", "SUMMER" ], "fear_triggers": [ "PLAYER_CLOSE", "SOUND" ], - "death_function": [ "NORMAL" ], "harvest": "fish_small", "flags": [ "FISHABLE", "SEES", "SMELLS", "WARM", "SWIMS", "AQUATIC" ] }, @@ -124,7 +122,6 @@ "reproduction": { "baby_egg": "egg_fish", "baby_count": 2, "baby_timer": 17 }, "baby_flags": [ "SPRING", "SUMMER" ], "fear_triggers": [ "PLAYER_CLOSE", "SOUND" ], - "death_function": [ "NORMAL" ], "harvest": "fish_small", "flags": [ "FISHABLE", "SEES", "SMELLS", "WARM", "SWIMS", "AQUATIC" ] }, @@ -155,7 +152,6 @@ "reproduction": { "baby_egg": "egg_fish", "baby_count": 2, "baby_timer": 17 }, "baby_flags": [ "SPRING", "SUMMER" ], "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "harvest": "fish_large", "flags": [ "FISHABLE", "SEES", "SMELLS", "WARM", "SWIMS", "AQUATIC" ] }, @@ -186,7 +182,6 @@ "reproduction": { "baby_egg": "egg_fish", "baby_count": 2, "baby_timer": 17 }, "baby_flags": [ "SPRING", "SUMMER" ], "fear_triggers": [ "PLAYER_CLOSE", "SOUND" ], - "death_function": [ "NORMAL" ], "harvest": "fish_large", "flags": [ "FISHABLE", "SEES", "SMELLS", "WARM", "SWIMS", "AQUATIC" ] }, @@ -507,7 +502,6 @@ "reproduction": { "baby_egg": "egg_fish", "baby_count": 2, "baby_timer": 180 }, "baby_flags": [ "SUMMER", "AUTUMN" ], "fear_triggers": [ "PLAYER_CLOSE", "SOUND" ], - "death_function": [ "NORMAL" ], "flags": [ "FISHABLE", "SEES", "SMELLS", "WARM", "SWIMS", "AQUATIC" ] }, { @@ -536,7 +530,6 @@ "reproduction": { "baby_egg": "egg_fish", "baby_count": 2, "baby_timer": 21 }, "baby_flags": [ "AUTUMN" ], "fear_triggers": [ "PLAYER_CLOSE", "SOUND" ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 14, "into": "mon_crayfish_small" }, "flags": [ "FISHABLE", "SEES", "SMELLS", "WARM", "SWIMS", "AQUATIC" ] }, @@ -563,7 +556,6 @@ "melee_cut": 1, "luminance": 5, "fear_triggers": [ "PLAYER_CLOSE", "SOUND" ], - "death_function": [ "NORMAL" ], "harvest": "fish_small", "flags": [ "FISHABLE", "SEES", "SMELLS", "WARM", "SWIMS", "AQUATIC" ] }, @@ -590,7 +582,6 @@ "melee_cut": 1, "luminance": 0, "fear_triggers": [ "PLAYER_CLOSE", "SOUND" ], - "death_function": [ "NORMAL" ], "harvest": "fish_small", "flags": [ "FISHABLE", "SEES", "SMELLS", "WARM", "SWIMS", "AQUATIC" ] }, @@ -628,10 +619,10 @@ "dodge": 2, "armor_cut": 8, "armor_bullet": 6, + "bleed_rate": 85, "harvest": "shellfish", "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], "fear_triggers": [ "FIRE" ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 21, "into": "mon_crayfish_mega" }, "flags": [ "SMELLS", "HEARS", "SEES", "SWIMS", "GRABS", "ARTHROPOD_BLOOD" ] }, @@ -645,6 +636,7 @@ "volume": "625 L", "weight": "815 kg", "melee_dice": 2, + "bleed_rate": 60, "special_attacks": [ [ "PARROT", 20 ], { "id": "scratch", "damage_max_instance": [ { "damage_type": "cut", "amount": 23, "armor_multiplier": 0.8 } ] } @@ -677,6 +669,7 @@ "armor_bash": 10, "armor_cut": 18, "armor_bullet": 14, + "bleed_rate": 65, "vision_day": 30, "vision_night": 15, "path_settings": { "max_dist": 50, "avoid_traps": true, "avoid_sharp": true }, @@ -684,7 +677,6 @@ "special_attacks": [ [ "SHRIEK_ALERT", 6 ], [ "SHRIEK_STUN", 1 ] ], "anger_triggers": [ "PLAYER_CLOSE", "FRIEND_DIED", "FRIEND_ATTACKED", "HURT" ], "fear_triggers": [ "FIRE" ], - "death_function": [ "NORMAL" ], "flags": [ "SMELLS", "HEARS", "SEES", "SWIMS", "GRABS", "ARTHROPOD_BLOOD", "PATH_AVOID_DANGER_1" ] }, { @@ -713,7 +705,6 @@ "harvest": "mutant_fish", "reproduction": { "baby_egg": "egg_fish", "baby_count": 1, "baby_timer": 6 }, "baby_flags": [ "SPRING" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "SWIMS", "AQUATIC" ] }, { @@ -742,7 +733,6 @@ "harvest": "mutant_fish", "reproduction": { "baby_egg": "egg_fish", "baby_count": 2, "baby_timer": 150 }, "baby_flags": [ "AUTUMN" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "SWIMS", "AQUATIC" ] }, { @@ -773,7 +763,6 @@ "reproduction": { "baby_egg": "egg_fish", "baby_count": 2, "baby_timer": 19 }, "baby_flags": [ "SPRING", "SUMMER", "AUTUMN", "WINTER" ], "path_settings": { "max_dist": 5 }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "WARM", "AQUATIC" ] } ] diff --git a/data/json/monsters/fungus.json b/data/json/monsters/fungus.json index 4841d66df4bd4..6c254d7b1d206 100644 --- a/data/json/monsters/fungus.json +++ b/data/json/monsters/fungus.json @@ -22,12 +22,13 @@ "melee_dice_sides": 6, "melee_cut": 0, "armor_bash": 2, + "bleed_rate": 0, "vision_day": 30, "vision_night": 3, "harvest": "zombie", "special_attacks": [ [ "FUNGUS", 100 ], [ "BOOMER", 20 ], [ "scratch", 20 ] ], "death_drops": "default_zombie_items", - "death_function": [ "FUNGUS", "NORMAL" ], + "death_function": { "effect": { "id": "death_fungus", "hit_self": true } }, "burn_into": "mon_zombie_scorched", "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "GROUP_BASH", "POISON", "NO_BREATHE", "PUSH_MON", "FILTHY" ] }, @@ -52,10 +53,11 @@ "armor_bash": 4, "armor_cut": 4, "armor_bullet": 3, + "bleed_rate": 0, "luminance": 40, "harvest": "exempt", "special_attacks": [ [ "FUNGUS_HAZE", 25 ] ], - "death_function": [ "FUNGUS" ], + "death_function": { "corpse_type": "NO_CORPSE", "effect": { "id": "death_fungus", "hit_self": true } }, "flags": [ "HEARS", "GOODHEARING", "NOHEAD", "POISON", "IMMOBILE", "NO_BREATHE" ] }, { @@ -82,9 +84,10 @@ "armor_bash": 10, "armor_cut": 10, "armor_bullet": 8, + "bleed_rate": 0, "harvest": "exempt", "special_attacks": [ [ "FUNGUS_BRISTLE", 10 ] ], - "death_function": [ "DISINTEGRATE" ], + "death_function": { "message": "The %s disintegrates!", "corpse_type": "NO_CORPSE" }, "flags": [ "NOHEAD", "POISON", "NO_BREATHE", "IMMOBILE" ] }, { @@ -112,9 +115,10 @@ "armor_bash": 10, "armor_cut": 4, "armor_bullet": 3, + "bleed_rate": 0, "harvest": "exempt", "special_attacks": [ [ "FUNGUS_INJECT", 10 ] ], - "death_function": [ "FUNGUS" ], + "death_function": { "corpse_type": "NO_CORPSE", "effect": { "id": "death_fungus", "hit_self": true } }, "flags": [ "HEARS", "GOODHEARING", "NOHEAD", "POISON", "IMMOBILE", "NO_BREATHE", "HARDTOSHOOT" ] }, { @@ -141,9 +145,10 @@ "armor_bash": 10, "armor_cut": 10, "armor_bullet": 8, + "bleed_rate": 0, "harvest": "exempt", "special_attacks": [ [ "FUNGUS", 10 ] ], - "death_function": [ "DISINTEGRATE" ], + "death_function": { "message": "The %s disintegrates!", "corpse_type": "NO_CORPSE" }, "flags": [ "NOHEAD", "POISON", "NO_BREATHE", "IMMOBILE" ] }, { @@ -169,9 +174,10 @@ "melee_dice_sides": 4, "melee_cut": 0, "armor_bash": 4, + "bleed_rate": 0, "harvest": "fungaloid", "special_attacks": [ [ "FUNGUS", 30 ] ], - "death_function": [ "FUNGUS", "NORMAL" ], + "death_function": { "effect": { "id": "death_fungus", "hit_self": true } }, "upgrades": { "half_life": 14, "into": "mon_fungaloid_shambler" }, "flags": [ "STUMBLES", "POISON", "NO_BREATHE", "NOHEAD" ] }, @@ -189,6 +195,7 @@ "armor_bullet": 20, "armor_stab": 20, "armor_acid": 3, + "bleed_rate": 0, "special_attacks": [ [ "FUNGUS", 20 ], { @@ -229,7 +236,7 @@ "armor_cut": 10, "armor_bullet": 8, "special_attacks": [ [ "FUNGUS_SPROUT", 10 ] ], - "death_function": [ "FUNGUS", "NORMAL" ], + "death_function": { "effect": { "id": "death_fungus", "hit_self": true } }, "harvest": "fungaloid_mass", "flags": [ "NOHEAD", "POISON", "IMMOBILE", "NO_BREATHE", "QUEEN" ] }, @@ -256,7 +263,7 @@ "armor_bullet": 8, "luminance": 200, "special_attacks": [ [ "FUNGUS_BIG_BLOSSOM", 10 ] ], - "death_function": [ "FUNGUS", "NORMAL" ], + "death_function": { "effect": { "id": "death_fungus", "hit_self": true } }, "harvest": "fungaloid_mass", "flags": [ "NOHEAD", "POISON", "IMMOBILE", "NO_BREATHE", "QUEEN" ] }, @@ -287,7 +294,7 @@ "armor_bullet": 12, "special_attacks": [ [ "FUNGUS_FORTIFY", 10 ] ], "death_drops": "marloss_yellow_drops", - "death_function": [ "FUNGUS", "NORMAL" ], + "death_function": { "effect": { "id": "death_fungus", "hit_self": true } }, "harvest": "fungaloid_mass", "flags": [ "NOHEAD", "POISON", "IMMOBILE", "HARDTOSHOOT", "NO_BREATHE", "QUEEN" ] }, @@ -316,9 +323,9 @@ "armor_bash": 4, "armor_cut": 4, "armor_bullet": 3, + "bleed_rate": 0, "harvest": "fungaloid", "special_attacks": [ [ "FUNGUS_GROWTH", 10000 ] ], - "death_function": [ "NORMAL" ], "flags": [ "HEARS", "POISON", "NO_BREATHE", "NOHEAD" ] }, { @@ -340,9 +347,10 @@ "morale": 75, "melee_cut": 0, "dodge": 2, + "bleed_rate": 0, "harvest": "exempt", "special_attacks": [ [ "PLANT", 100 ] ], - "death_function": [ "DISINTEGRATE" ], + "death_function": { "message": "The %s disintegrates!", "corpse_type": "NO_CORPSE" }, "upgrades": { "half_life": 10, "into": "mon_fungaloid" }, "flags": [ "STUMBLES", "FLIES", "POISON", "NO_BREATHE", "NOHEAD", "NOGIB" ] }, @@ -369,12 +377,12 @@ "melee_dice_sides": 6, "melee_cut": 0, "armor_bash": 3, + "bleed_rate": 0, "vision_day": 5, "vision_night": 5, "harvest": "zombie", "special_attacks": [ [ "FUNGUS", 200 ], { "type": "bite", "cooldown": 5 } ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", "SMELLS", "STUMBLES", "WARM", "BASHES", "GROUP_BASH", "POISON", "NO_BREATHE", "PUSH_MON", "FILTHY" ] }, @@ -401,13 +409,14 @@ "melee_dice": 2, "melee_dice_sides": 4, "melee_cut": 0, + "bleed_rate": 0, "vision_day": 5, "vision_night": 5, "harvest": "exempt", "emit_fields": [ { "emit_id": "emit_fungal_leak", "delay": "1 s" } ], "special_attacks": [ [ "SUICIDE", 20 ], [ "scratch", 15 ] ], "death_drops": "default_zombie_items", - "death_function": [ "FUNGALBURST" ], + "death_function": { "effect": { "id": "death_fungalburst", "hit_self": true } }, "flags": [ "SEES", "STUMBLES", "WARM", "POISON", "NO_BREATHE", "FILTHY" ] }, { @@ -435,12 +444,13 @@ "melee_cut": 2, "dodge": 4, "armor_fire": 5, + "bleed_rate": 0, "vision_day": 5, "vision_night": 3, "harvest": "zombie", "emit_fields": [ { "emit_id": "emit_fungal_haze_plume", "delay": "1 s" } ], "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "scratch", 15 ] ], - "death_function": [ "FUNGUS" ], + "death_function": { "corpse_type": "NO_CORPSE", "effect": { "id": "death_fungus", "hit_self": true } }, "flags": [ "SEES", "STUMBLES", "WARM", "BASHES", "GROUP_BASH", "POISON", "HARDTOSHOOT", "NO_BREATHE", "PUSH_MON", "FILTHY" ] }, { @@ -469,12 +479,13 @@ "armor_bash": 20, "armor_cut": 45, "armor_bullet": 36, + "bleed_rate": 0, "vision_day": 5, "vision_night": 5, "harvest": "mr_bones", "special_attacks": [ [ "SMASH", 20 ] ], "death_drops": "mon_zombie_hulk_death_drops", - "death_function": [ "FUNGUS" ], + "death_function": { "corpse_type": "NO_CORPSE", "effect": { "id": "death_fungus", "hit_self": true } }, "burn_into": "mon_zombie_fiend", "flags": [ "HEARS", @@ -513,6 +524,7 @@ "melee_dice_sides": 6, "melee_cut": 2, "dodge": 2, + "bleed_rate": 0, "vision_day": 30, "vision_night": 5, "harvest": "zombie", @@ -522,7 +534,6 @@ "groups": [ [ "default_zombie_clothes", 100 ], [ "child_items", 65 ] ], "//": "cloth as any other zombie (always), additional items from child_items (sometimes)" }, - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_child_scorched", "flags": [ "SEES", "SMELLS", "STUMBLES", "WARM", "BASHES", "POISON", "GUILT", "NO_BREATHE", "FILTHY" ] }, @@ -552,11 +563,12 @@ "armor_bash": 1, "armor_cut": 1, "armor_bullet": 1, + "bleed_rate": 0, "vision_day": 3, "vision_night": 3, "harvest": "arachnid", "special_attacks": [ [ "FUNGUS", 200 ] ], - "death_function": [ "NORMAL", "FUNGUS" ], + "death_function": { "effect": { "id": "death_fungus", "hit_self": true } }, "flags": [ "SEES", "SMELLS", "POISON", "CLIMBS", "PATH_AVOID_FIRE", "PATH_AVOID_FALL" ] }, { @@ -585,11 +597,12 @@ "armor_bash": 2, "armor_cut": 6, "armor_bullet": 5, + "bleed_rate": 0, "vision_day": 5, "vision_night": 5, "harvest": "arachnid", "special_attacks": [ [ "FUNGAL_TRAIL", 3 ] ], - "death_function": [ "NORMAL", "FUNGUS" ], + "death_function": { "effect": { "id": "death_fungus", "hit_self": true } }, "flags": [ "SEES", "SMELLS", "VENOM", "WEBWALK", "CLIMBS", "PATH_AVOID_FIRE", "INSECTICIDEPROOF" ] } ] diff --git a/data/json/monsters/insect_spider.json b/data/json/monsters/insect_spider.json index 167cc9d8007e3..1b86c0b305cdd 100644 --- a/data/json/monsters/insect_spider.json +++ b/data/json/monsters/insect_spider.json @@ -22,8 +22,8 @@ "melee_cut": 4, "dodge": 4, "armor_bash": 6, + "bleed_rate": 60, "harvest": "arachnid_acid", - "death_function": [ "NORMAL" ], "flags": [ "SMELLS", "HEARS", "GOODHEARING", "BASHES", "BORES", "POISON", "SUNDEATH", "ACIDPROOF", "ACIDTRAIL" ] }, { @@ -50,8 +50,13 @@ "armor_bash": 12, "armor_cut": 8, "armor_bullet": 6, + "bleed_rate": 60, "harvest": "meatslug", - "death_function": [ "WORM" ], + "death_function": { + "message": "The %s splits in two!", + "effect": { "id": "death_halfworm", "hit_self": true }, + "corpse_type": "NO_CORPSE" + }, "flags": [ "DIGS", "HEARS", "POISON", "GOODHEARING", "BASHES", "DESTROYS" ] }, { @@ -77,7 +82,6 @@ "melee_cut": 0, "armor_bash": 2, "harvest": "mutant_meatslug", - "death_function": [ "NORMAL" ], "upgrades": { "age_grow": 10, "into": "mon_worm" }, "flags": [ "DIGS", "HEARS", "GOODHEARING" ] }, @@ -104,7 +108,11 @@ "melee_cut": 3, "armor_bash": 2, "harvest": "mutant_meatslug", - "death_function": [ "WORM" ], + "death_function": { + "message": "The %s splits in two!", + "effect": { "id": "death_halfworm", "hit_self": true }, + "corpse_type": "NO_CORPSE" + }, "upgrades": { "half_life": 20, "into": "mon_graboid" }, "flags": [ "DIGS", "HEARS", "GOODHEARING" ] }, @@ -162,7 +170,6 @@ "biosignature": { "biosig_item": "feces_roach", "biosig_timer": 3 }, "upgrades": { "age_grow": 7, "into": "mon_plague_vector" }, "anger_triggers": [ "FRIEND_ATTACKED", "PLAYER_WEAK" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 60 ] ], "flags": [ "SEES", "HEARS", "SMELLS", "CLIMBS", "POISON", "STUMBLES", "PATH_AVOID_FIRE" ] }, @@ -193,7 +200,6 @@ "vision_night": 3, "harvest": "arachnid_tainted", "upgrades": { "age_grow": 7, "into": "mon_skittering_plague" }, - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 120 ] ], "flags": [ "SEES", "HEARS", "SMELLS", "CLIMBS", "POISON", "LARVA", "STUMBLES", "FILTHY", "PATH_AVOID_FIRE" ] }, @@ -230,7 +236,6 @@ "baby_flags": [ "SPRING", "SUMMER", "AUTUMN" ], "biosignature": { "biosig_item": "feces_roach", "biosig_timer": 3 }, "anger_triggers": [ "FRIEND_ATTACKED", "PLAYER_WEAK" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 40 ] ], "flags": [ "SEES", "HEARS", "SMELLS", "CLIMBS", "POISON", "STUMBLES", "PATH_AVOID_FIRE" ] }, @@ -266,7 +271,6 @@ "baby_flags": [ "SPRING", "SUMMER", "AUTUMN" ], "biosignature": { "biosig_item": "feces_roach", "biosig_timer": 3 }, "upgrades": { "age_grow": 7, "into": "mon_pregnant_giant_cockroach" }, - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 60 ] ], "flags": [ "SEES", "HEARS", "SMELLS", "CLIMBS", "PATH_AVOID_FIRE" ] }, @@ -296,7 +300,6 @@ "vision_night": 3, "harvest": "arachnid", "upgrades": { "age_grow": 7, "into": "mon_giant_cockroach" }, - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 120 ] ], "flags": [ "SEES", "HEARS", "SMELLS", "LARVA", "CLIMBS", "PATH_AVOID_FIRE" ] }, @@ -332,7 +335,7 @@ "reproduction": { "baby_egg": "egg_roach", "baby_count": 3, "baby_timer": 7 }, "baby_flags": [ "SPRING", "SUMMER", "AUTUMN" ], "biosignature": { "biosig_item": "feces_roach", "biosig_timer": 3 }, - "death_function": [ "NORMAL", "PREG_ROACH" ], + "death_function": { "effect": { "id": "death_preg_roach", "hit_self": true } }, "special_attacks": [ [ "EAT_FOOD", 40 ] ], "flags": [ "SEES", "HEARS", "SMELLS", "CLIMBS", "PATH_AVOID_FIRE" ] }, @@ -381,7 +384,6 @@ "harvest": "arachnid_bee", "anger_triggers": [ "HURT", "FRIEND_DIED", "PLAYER_CLOSE" ], "fear_triggers": [ "FIRE" ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 21, "into": "mon_bee_mega" }, "flags": [ "SEES", "SMELLS", "FLIES", "STUMBLES", "SWARMS", "GROUP_MORALE", "CANPLAY", "PATH_AVOID_FIRE" ] }, @@ -478,11 +480,11 @@ "armor_cut": 25, "armor_bullet": 12, "armor_stab": 14, + "bleed_rate": 80, "vision_day": 9, "vision_night": 6, "anger_triggers": [ "STALK", "PLAYER_CLOSE" ], "harvest": "arachnid_centipede", - "death_function": [ "NORMAL" ], "upgrades": { "age_grow": 15, "into_group": "GROUP_CENTIPEDE_GIANT" }, "flags": [ "CLIMBS", "SEES", "SMELLS", "KEENNOSE", "HEARS", "GOODHEARING", "PATH_AVOID_FIRE" ] }, @@ -570,6 +572,7 @@ "armor_bullet": 45, "armor_cut": 35, "armor_stab": 15, + "bleed_rate": 60, "vision_day": 12, "vision_night": 7, "anger_triggers": [ "STALK", "PLAYER_WEAK", "HURT" ], @@ -603,7 +606,6 @@ "harvest": "arachnid", "anger_triggers": [ "PLAYER_CLOSE" ], "fear_triggers": [ "HURT" ], - "death_function": [ "NORMAL" ], "flags": [ "AQUATIC", "SEES" ], "upgrades": { "age_grow": 21, "into": "mon_dragonfly_giant" } }, @@ -647,7 +649,6 @@ "harvest": "arachnid_flying", "anger_triggers": [ "PLAYER_WEAK", "STALK" ], "fear_triggers": [ "HURT", "FIRE" ], - "death_function": [ "NORMAL" ], "upgrades": { "age_grow": 40, "into": "mon_dragonfly_mega" }, "flags": [ "SWARMS", "HEARS", "SEES", "FLIES", "PATH_AVOID_FIRE" ] }, @@ -683,7 +684,6 @@ "vision_night": 5, "harvest": "arachnid_dragonfly_mega", "anger_triggers": [ "PLAYER_WEAK", "STALK" ], - "death_function": [ "NORMAL" ], "reproduction": { "baby_egg": "egg_dragonfly", "baby_count": 3, "baby_timer": 1 }, "baby_flags": [ "SPRING", "SUMMER", "AUTUMN" ], "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "SWIMS", "BASHES", "PUSH_MON", "PUSH_VEH" ] @@ -749,7 +749,6 @@ "vision_night": 5, "harvest": "arachnid_flying", "fear_triggers": [ "PLAYER_CLOSE", "HURT", "FIRE" ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 21, "into": "mon_fly_mega" }, "flags": [ "SEES", "SMELLS", "FLIES", "STUMBLES", "HIT_AND_RUN", "CANPLAY", "PATH_AVOID_FIRE" ] }, @@ -806,7 +805,6 @@ "vision_night": 5, "harvest": "arachnid_flying", "fear_triggers": [ "HURT", "FIRE" ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 21, "into": "mon_mosquito_mega" }, "flags": [ "SEES", "SMELLS", "HEARS", "STUMBLES", "VENOM", "FLIES", "HIT_AND_RUN", "PATH_AVOID_FIRE" ] }, @@ -866,7 +864,6 @@ "vision_night": 5, "harvest": "arachnid", "anger_triggers": [ "STALK", "PLAYER_WEAK", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "fungalize_into": "mon_spider_fungus", "upgrades": { "half_life": 21, "into": "mon_spider_cellar_mega" }, "flags": [ "SEES", "SMELLS", "HEARS", "VENOM", "WEBWALK", "CLIMBS", "HARDTOSHOOT", "PUSH_MON", "PATH_AVOID_FIRE" ], @@ -916,7 +913,6 @@ "vision_night": 5, "harvest": "arachnid", "anger_triggers": [ "STALK", "PLAYER_WEAK", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "upgrades": { "age_grow": 40, "into": "mon_spider_cellar_giant" }, "flags": [ "SEES", "SMELLS", "HEARS", "WEBWALK", "CLIMBS", "HARDTOSHOOT", "PATH_AVOID_FIRE" ] }, @@ -963,7 +959,6 @@ "harvest": "arachnid", "special_attacks": [ { "type": "leap", "cooldown": 2, "max_range": 5, "allow_no_target": true } ], "anger_triggers": [ "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "fungalize_into": "mon_spider_fungus", "upgrades": { "half_life": 21, "into": "mon_spider_jumping_mega" }, "flags": [ "SEES", "SMELLS", "HEARS", "HIT_AND_RUN", "CLIMBS", "PATH_AVOID_DANGER_1" ] @@ -978,7 +973,11 @@ "volume": "625 L", "weight": "815 kg", "melee_dice": 2, - "death_function": [ "EXPLODE" ], + "death_function": { + "effect": { "id": "death_explosion_mon_spider_jumping_mega", "hit_self": true }, + "corpse_type": "NO_CORPSE", + "message": "The %s explodes!" + }, "extend": { "flags": [ "DESTROYS", "PUSH_MON", "PUSH_VEH", "FLAMMABLE" ] } }, { @@ -1021,7 +1020,6 @@ "vision_day": 5, "vision_night": 5, "harvest": "arachnid", - "death_function": [ "NORMAL" ], "fungalize_into": "mon_spider_fungus", "upgrades": { "half_life": 21, "into": "mon_spider_trapdoor_mega" }, "flags": [ "SEES", "SMELLS", "HEARS", "VENOM", "GRABS", "CAN_DIG", "WEBWALK", "CLIMBS", "PATH_AVOID_FIRE" ] @@ -1081,7 +1079,6 @@ "vision_day": 5, "vision_night": 5, "harvest": "arachnid", - "death_function": [ "NORMAL" ], "fungalize_into": "mon_spider_fungus", "upgrades": { "half_life": 21, "into": "mon_spider_web_mega" }, "flags": [ "SEES", "SMELLS", "HEARS", "WEBWALK", "CLIMBS", "PATH_AVOID_FIRE", "PATH_AVOID_FALL" ] @@ -1127,7 +1124,6 @@ "vision_day": 5, "vision_night": 5, "harvest": "arachnid", - "death_function": [ "NORMAL" ], "upgrades": { "age_grow": 40, "into": "mon_spider_web" }, "flags": [ "SEES", "SMELLS", "HEARS", "WEBWALK", "STUMBLES", "CLIMBS", "PATH_AVOID_FIRE" ] }, @@ -1172,7 +1168,6 @@ "vision_night": 5, "harvest": "arachnid", "anger_triggers": [ "PLAYER_WEAK", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "fungalize_into": "mon_spider_fungus", "upgrades": { "half_life": 21, "into": "mon_spider_widow_mega" }, "flags": [ "SEES", "SMELLS", "HEARS", "BADVENOM", "WEBWALK", "CLIMBS", "PATH_AVOID_FIRE" ] @@ -1220,7 +1215,6 @@ "vision_night": 5, "harvest": "arachnid", "anger_triggers": [ "PLAYER_WEAK", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "upgrades": { "age_grow": 40, "into": "mon_spider_widow_giant" }, "flags": [ "SEES", "SMELLS", "HEARS", "VENOM", "WEBWALK", "CLIMBS", "PATH_AVOID_FIRE" ] }, @@ -1267,7 +1261,6 @@ "vision_night": 5, "harvest": "arachnid", "anger_triggers": [ "STALK", "PLAYER_WEAK", "HURT", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "fungalize_into": "mon_spider_fungus", "upgrades": { "half_life": 21, "into": "mon_spider_wolf_mega" }, "flags": [ "SEES", "SMELLS", "HEARS", "CLIMBS", "PATH_AVOID_FIRE", "PATH_AVOID_FALL" ] @@ -1369,7 +1362,6 @@ "harvest": "arachnid_wasp", "anger_triggers": [ "FRIEND_ATTACKED", "PLAYER_CLOSE", "PLAYER_WEAK", "HOSTILE_SEEN" ], "fear_triggers": [ "HURT", "FIRE" ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 30, "into": "mon_wasp" }, "flags": [ "SEES", "SMELLS", "HEARS", "FLIES", "SWARMS", "GROUP_MORALE", "CANPLAY", "PATH_AVOID_FIRE", "HARDTOSHOOT" ] }, @@ -1442,12 +1434,12 @@ "armor_cut": 14, "armor_stab": 12, "armor_bullet": 12, + "bleed_rate": 80, "vision_day": 17, "vision_night": 7, "harvest": "arachnid_wasp", "anger_triggers": [ "FRIEND_ATTACKED", "PLAYER_CLOSE", "PLAYER_WEAK", "HOSTILE_SEEN" ], "fear_triggers": [ "HURT", "FIRE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "FLIES", "SWARMS", "GROUP_MORALE", "CANPLAY", "HARDTOSHOOT", "PATH_AVOID_FIRE" ] }, { @@ -1503,6 +1495,7 @@ "armor_cut": 30, "armor_stab": 18, "armor_bullet": 22, + "bleed_rate": 60, "harvest": "arachnid_wasp_queen", "reproduction": { "baby_egg": "egg_wasp", "baby_count": 4, "baby_timer": 5 }, "extend": { "flags": [ "PUSH_MON" ] }, @@ -1533,7 +1526,6 @@ "dodge": 1, "harvest": "arachnid", "upgrades": { "age_grow": 21, "into": "mon_dermatik" }, - "death_function": [ "NORMAL" ], "flags": [ "HEARS", "SMELLS", "POISON", "CAN_DIG", "LARVA" ] }, { @@ -1566,7 +1558,6 @@ "vision_day": 13, "anger_triggers": [ "FRIEND_ATTACKED", "PLAYER_WEAK" ], "fear_triggers": [ "HURT", "FIRE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "FLIES", "PATH_AVOID_FIRE", "CANPLAY" ] }, { @@ -1609,7 +1600,6 @@ } ], "reproduction": { "baby_monster": "mon_dermatik_larva", "baby_count": 2, "baby_timer": 30 }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "IMMOBILE", "PACIFIST" ] }, { @@ -1677,7 +1667,6 @@ "harvest": "arachnid", "upgrades": { "age_grow": 14, "into": "mon_ant_soldier" }, "anger_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT", "PLAYER_WEAK" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 30 ] ], "fungalize_into": "mon_ant_fungus", "flags": [ "SEES", "HEARS", "SMELLS", "CLIMBS", "PATH_AVOID_FIRE", "PATH_AVOID_FALL" ] @@ -1723,7 +1712,7 @@ "upgrades": { "age_grow": 14, "into": "mon_ant_acid_soldier" }, "special_attacks": [ [ "ACID", 23 ], [ "EAT_FOOD", 30 ] ], "anger_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT", "PLAYER_CLOSE" ], - "death_function": [ "ACID", "NORMAL" ], + "death_function": { "message": "The %s's body leaks acid.", "effect": { "id": "death_acid", "hit_self": true } }, "harvest": "arachnid_acid", "flags": [ "ACIDPROOF", "CLIMBS", "HEARS", "POISON", "SEES", "SMELLS", "PATH_AVOID_FIRE", "PATH_AVOID_FALL" ] }, @@ -1749,7 +1738,7 @@ "melee_dice_sides": 3, "melee_cut": 0, "upgrades": { "age_grow": 3, "into": "mon_ant_acid" }, - "death_function": [ "ACID", "NORMAL" ], + "death_function": { "message": "The %s's body leaks acid.", "effect": { "id": "death_acid", "hit_self": true } }, "harvest": "arachnid_acid", "flags": [ "ACIDPROOF", "LARVA", "POISON", "SMELLS" ] }, @@ -1781,7 +1770,6 @@ "armor_bullet": 13, "special_attacks": [ [ "ANTQUEEN", 1 ] ], "anger_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "harvest": "arachnid_acid_queen", "flags": [ "ACIDPROOF", "CLIMBS", "HEARS", "QUEEN", "SEES", "SMELLS", "PATH_AVOID_FIRE", "PATH_AVOID_FALL" ] }, @@ -1811,11 +1799,12 @@ "armor_bash": 12, "armor_cut": 14, "armor_bullet": 11, + "bleed_rate": 80, "vision_day": 5, "vision_night": 5, "special_attacks": [ [ "ACID", 15 ] ], "anger_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT", "PLAYER_CLOSE" ], - "death_function": [ "ACID", "NORMAL" ], + "death_function": { "message": "The %s's body leaks acid.", "effect": { "id": "death_acid", "hit_self": true } }, "harvest": "arachnid_acid", "flags": [ "ACIDPROOF", "SHORTACIDTRAIL", "CLIMBS", "HEARS", "POISON", "SEES", "SMELLS", "PATH_AVOID_FIRE", "PATH_AVOID_FALL" ] }, @@ -1842,7 +1831,6 @@ "melee_cut": 0, "harvest": "arachnid", "upgrades": { "age_grow": 3, "into": "mon_ant" }, - "death_function": [ "NORMAL" ], "flags": [ "SMELLS", "LARVA" ] }, { @@ -1872,7 +1860,6 @@ "harvest": "arachnid", "special_attacks": [ [ "ANTQUEEN", 1 ] ], "anger_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT" ], - "death_function": [ "NORMAL" ], "fungalize_into": "mon_ant_fungus", "flags": [ "SMELLS", "QUEEN", "CLIMBS", "PATH_AVOID_FIRE", "PATH_AVOID_FALL" ] }, @@ -1901,11 +1888,11 @@ "armor_bash": 10, "armor_cut": 12, "armor_bullet": 10, + "bleed_rate": 80, "vision_day": 5, "vision_night": 5, "harvest": "arachnid", "anger_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "fungalize_into": "mon_ant_fungus", "upgrades": { "half_life": 21, "into": "mon_ant_soldier_mega" }, "flags": [ "SEES", "HEARS", "SMELLS", "CLIMBS", "PATH_AVOID_FIRE", "PATH_AVOID_FALL" ] @@ -1920,6 +1907,7 @@ "volume": "625 L", "weight": "815 kg", "melee_dice": 2, + "bleed_rate": 60, "special_attacks": [ [ "SMASH", 30 ], [ "BIO_OP_TAKEDOWN", 20 ], [ "RANGED_PULL", 20 ], [ "GRAB", 5 ] ], "extend": { "flags": [ "DESTROYS", "PUSH_MON", "PUSH_VEH", "RANGED_ATTACKER" ] } }, @@ -1966,7 +1954,6 @@ "biosignature": { "biosig_item": "feces_roach", "biosig_timer": 3 }, "anger_triggers": [ "FRIEND_ATTACKED" ], "fear_triggers": [ "HURT", "FIRE" ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 21, "into": "mon_locust_mega" }, "special_attacks": [ { "type": "leap", "cooldown": 2, "max_range": 8, "allow_no_target": true }, [ "EAT_CROP", 60 ] ], "flags": [ "SEES", "HEARS", "SMELLS", "CLIMBS", "STUMBLES", "PATH_AVOID_FIRE" ] @@ -2009,7 +1996,6 @@ "vision_day": 10, "harvest": "arachnid", "upgrades": { "age_grow": 10, "into": "mon_locust" }, - "death_function": [ "NORMAL" ], "special_attacks": [ { "type": "leap", "cooldown": 4, "max_range": 4, "allow_no_target": true }, [ "EAT_CROP", 120 ] ], "fear_triggers": [ "HURT", "FIRE" ], "flags": [ "SEES", "HEARS", "SMELLS", "CLIMBS", "LARVA", "STUMBLES", "PATH_AVOID_FIRE" ] diff --git a/data/json/monsters/jabberwock.json b/data/json/monsters/jabberwock.json index 8e49506b21980..d9d8dd46894d4 100644 --- a/data/json/monsters/jabberwock.json +++ b/data/json/monsters/jabberwock.json @@ -22,10 +22,10 @@ "armor_bash": 2, "armor_cut": 2, "armor_bullet": 2, + "bleed_rate": 80, "vision_day": 50, "vision_night": 3, "special_attacks": [ [ "FLESH_GOLEM", 10 ], [ "ABSORB_MEAT", 10 ] ], - "death_function": [ "NORMAL" ], "harvest": "zombie", "upgrades": { "half_life": 15, "into": "mon_flesh_golem" }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "ATTACKMON", "POISON" ] @@ -53,10 +53,10 @@ "armor_bash": 6, "armor_cut": 4, "armor_bullet": 3, + "bleed_rate": 60, "vision_day": 50, "vision_night": 3, "special_attacks": [ [ "FLESH_GOLEM", 8 ], [ "ABSORB_MEAT", 1 ] ], - "death_function": [ "NORMAL" ], "harvest": "flesh_golem", "upgrades": { "half_life": 15, "into": "mon_jabberwock" }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "ATTACKMON", "POISON" ] @@ -85,10 +85,10 @@ "armor_bash": 12, "armor_cut": 8, "armor_bullet": 6, + "bleed_rate": 40, "vision_day": 50, "vision_night": 3, "special_attacks": [ [ "FLESH_GOLEM", 5 ] ], - "death_function": [ "JABBERWOCKY" ], "harvest": "jabberwock", "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "DESTROYS", "ATTACKMON", "POISON" ] } diff --git a/data/json/monsters/mammal.json b/data/json/monsters/mammal.json index f70942fe69945..9ebc7fdee0804 100644 --- a/data/json/monsters/mammal.json +++ b/data/json/monsters/mammal.json @@ -37,7 +37,6 @@ "vision_night": 20, "special_attacks": [ { "type": "bite", "cooldown": 15 } ], "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "GOODHEARING", "WARM", "FLIES", "ANIMAL", "PATH_AVOID_DANGER_1" ] }, { @@ -91,7 +90,6 @@ "anger_triggers": [ "HURT", "PLAYER_NEAR_BABY" ], "fear_triggers": [ "SOUND" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "zombify_into": "mon_zombear", "harvest": "mammal_large_fur", "reproduction": { "baby_monster": "mon_bear_cub", "baby_count": 1, "baby_timer": 700 }, @@ -125,7 +123,6 @@ "harvest": "mammal_small_fur", "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], "fear_triggers": [ "SOUND" ], - "death_function": [ "NORMAL" ], "zombify_into": "mon_zombeaver", "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "SWIMS", "WARM" ] }, @@ -158,10 +155,40 @@ "path_settings": { "max_dist": 10 }, "anger_triggers": [ "PLAYER_WEAK" ], "fear_triggers": [ "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 120 ] ], "flags": [ "SEES", "SMELLS", "HEARS", "WARM", "SWIMS", "ANIMAL", "STUMBLES", "PATH_AVOID_DANGER_1" ] }, + { + "id": "mon_lab_rat", + "type": "MONSTER", + "name": { "str": "lab rat" }, + "description": "The albino Norway rat, an omnivorous rodent with sleek white fur and a long, rough tail. While its ancestors were harbingers of plague, these clever animals are omnipresent in modern biomedical research.", + "default_faction": "rat", + "bodytype": "pig", + "categories": [ "WILDLIFE" ], + "species": [ "MAMMAL" ], + "volume": "320 ml", + "weight": "320 g", + "hp": 6, + "speed": 100, + "material": [ "flesh" ], + "symbol": "r", + "color": "white", + "aggression": -15, + "morale": -50, + "melee_skill": 3, + "melee_dice": 1, + "melee_dice_sides": 1, + "melee_cut": 1, + "dodge": 2, + "vision_day": 30, + "vision_night": 15, + "harvest": "mammal_tiny", + "path_settings": { "max_dist": 10 }, + "fear_triggers": [ "PLAYER_CLOSE", "SOUND" ], + "special_attacks": [ [ "EAT_FOOD", 120 ] ], + "flags": [ "SEES", "SMELLS", "HEARS", "KEENNOSE", "WARM", "SWIMS", "ANIMAL", "PATH_AVOID_DANGER_1" ] + }, { "id": "mon_boar_wild_piglet", "type": "MONSTER", @@ -190,7 +217,6 @@ "path_settings": { "max_dist": 10 }, "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "upgrades": { "age_grow": 38, "into": "mon_boar_wild" }, "biosignature": { "biosig_item": "feces_manure", "biosig_timer": 7 }, "special_attacks": [ [ "EAT_FOOD", 40 ] ], @@ -230,7 +256,6 @@ "anger_triggers": [ "PLAYER_WEAK", "FRIEND_ATTACKED" ], "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "zombify_into": "mon_zpig_brute", "special_attacks": [ [ "EAT_FOOD", 20 ] ], "flags": [ "SEES", "HEARS", "SMELLS", "PET_MOUNTABLE", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "KEENNOSE" ] @@ -261,7 +286,6 @@ "vision_night": 20, "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "harvest": "mammal_small_fur", "flags": [ "SEES", "HEARS", "GOODHEARING", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "HIT_AND_RUN" ] }, @@ -286,7 +310,6 @@ "special_attacks": [ [ "scratch", 10 ] ], "fear_triggers": [ "SOUND", "PLAYER_CLOSE", "FRIEND_ATTACKED" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "harvest": "mammal_tiny", "flags": [ "SEES", @@ -329,7 +352,6 @@ "special_attacks": [ [ "scratch", 10 ] ], "fear_triggers": [ "SOUND", "PLAYER_CLOSE", "FRIEND_ATTACKED" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "harvest": "mammal_tiny", "reproduction": { "baby_monster": "mon_cat_kitten", "baby_count": 4, "baby_timer": 60 }, "flags": [ @@ -540,7 +562,6 @@ "dodge": 4, "harvest": "mammal_tiny", "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "WARM", "ANIMAL", "PATH_AVOID_DANGER_1" ] }, { @@ -572,7 +593,6 @@ "anger_triggers": [ "STALK", "PLAYER_WEAK", "HURT", "PLAYER_CLOSE", "FRIEND_ATTACKED" ], "fear_triggers": [ "SOUND" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "zombify_into": "mon_zougar", "harvest": "mammal_fur", "flags": [ "SEES", "HEARS", "GOODHEARING", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "HIT_AND_RUN", "KEENNOSE" ] @@ -623,7 +643,6 @@ "fear_triggers": [ "PLAYER_CLOSE" ], "placate_triggers": [ "PLAYER_WEAK" ], "death_drops": { "subtype": "collection", "groups": [ [ "cow", 25 ] ], "//": "25% chance of an item from group cow" }, - "death_function": [ "NORMAL" ], "harvest": "mammal_large_leather", "upgrades": { "age_grow": 180, "into": "mon_cow" }, "biosignature": { "biosig_item": "feces_cow", "biosig_timer": 7 }, @@ -660,7 +679,6 @@ "fear_triggers": [ "PLAYER_CLOSE" ], "placate_triggers": [ "PLAYER_WEAK" ], "death_drops": { "subtype": "collection", "groups": [ [ "cow", 25 ] ], "//": "25% chance of an item from group cow" }, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zow", "harvest": "mammal_large_leather", "reproduction": { "baby_monster": "mon_cow_calf", "baby_count": 1, "baby_timer": 343 }, @@ -708,7 +726,6 @@ "anger_triggers": [ "STALK", "FRIEND_ATTACKED", "PLAYER_WEAK", "HURT" ], "fear_triggers": [ "SOUND" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "harvest": "mammal_fur", "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "HIT_AND_RUN", "KEENNOSE" ] }, @@ -741,7 +758,6 @@ "anger_triggers": [ "FRIEND_ATTACKED", "PLAYER_WEAK" ], "fear_triggers": [ "SOUND" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "KEENNOSE" ] }, { @@ -772,7 +788,6 @@ "harvest": "mammal_small_leather", "path_settings": { "max_dist": 10 }, "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "upgrades": { "age_grow": 330, "into": "mon_deer" }, "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM" ] }, @@ -803,7 +818,6 @@ "harvest": "mammal_large_leather", "path_settings": { "max_dist": 10 }, "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "zombify_into": "mon_zeer", "reproduction": { "baby_monster": "mon_deer_fawn", "baby_count": 1, "baby_timer": 330 }, "//": " 201 days gestation period. The fawn will stay with its mother for approximately one year, suckling for three to four months.", @@ -844,7 +858,6 @@ "biosignature": { "biosig_item": "feces_dog", "biosig_timer": 6 }, "anger_triggers": [ "HURT", "FRIEND_ATTACKED", "FRIEND_DIED" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 100 ], [ "PARROT_AT_DANGER", 0 ] ], "flags": [ "ANIMAL", @@ -1003,7 +1016,6 @@ "upgrades": { "age_grow": 42, "into": "mon_dog_pitbullmix" }, "biosignature": { "biosig_item": "feces_dog", "biosig_timer": 6 }, "fear_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 100 ] ], "flags": [ "ANIMAL", "DOGFOOD", "HEARS", "KEENNOSE", "PATH_AVOID_DANGER_1", "SEES", "SMELLS", "WARM" ] }, @@ -1069,7 +1081,6 @@ "upgrades": { "age_grow": 42, "into": "mon_dog_beagle" }, "biosignature": { "biosig_item": "feces_dog", "biosig_timer": 6 }, "fear_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 100 ] ], "flags": [ "ANIMAL", "DOGFOOD", "GROUP_MORALE", "HEARS", "KEENNOSE", "PATH_AVOID_DANGER_1", "SEES", "SMELLS", "SWARMS", "WARM" ] }, @@ -1132,7 +1143,6 @@ "upgrades": { "age_grow": 42, "into": "mon_dog_bcollie" }, "biosignature": { "biosig_item": "feces_dog", "biosig_timer": 6 }, "fear_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 100 ] ], "flags": [ "ANIMAL", "DOGFOOD", "HEARS", "KEENNOSE", "PATH_AVOID_DANGER_1", "SEES", "SMELLS", "WARM" ] }, @@ -1185,7 +1195,6 @@ "upgrades": { "age_grow": 42, "into": "mon_dog_boxer" }, "biosignature": { "biosig_item": "feces_dog", "biosig_timer": 6 }, "fear_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 100 ] ], "flags": [ "ANIMAL", @@ -1263,7 +1272,6 @@ "upgrades": { "age_grow": 42, "into": "mon_dog_chihuahua" }, "biosignature": { "biosig_item": "feces_dog", "biosig_timer": 6 }, "fear_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 100 ] ], "flags": [ "ANIMAL", "DOGFOOD", "HARDTOSHOOT", "HEARS", "KEENNOSE", "PATH_AVOID_DANGER_1", "SEES", "SMELLS", "WARM" ] }, @@ -1329,7 +1337,6 @@ "upgrades": { "age_grow": 42, "into": "mon_dog_dachshund" }, "biosignature": { "biosig_item": "feces_dog", "biosig_timer": 6 }, "fear_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 100 ] ], "flags": [ "ANIMAL", "DOGFOOD", "HARDTOSHOOT", "HEARS", "KEENNOSE", "PATH_AVOID_DANGER_1", "SEES", "SMELLS", "STUMBLES", "WARM" ] }, @@ -1380,7 +1387,6 @@ "upgrades": { "age_grow": 42, "into": "mon_dog_gshepherd" }, "biosignature": { "biosig_item": "feces_dog", "biosig_timer": 6 }, "fear_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 100 ] ], "flags": [ "ANIMAL", "DOGFOOD", "HEARS", "KEENNOSE", "PATH_AVOID_DANGER_1", "SEES", "SMELLS", "WARM" ] }, @@ -1447,7 +1453,6 @@ "upgrades": { "age_grow": 42, "into": "mon_dog_gpyrenees" }, "biosignature": { "biosig_item": "feces_dog", "biosig_timer": 6 }, "fear_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 100 ] ], "flags": [ "ANIMAL", "DOGFOOD", "HEARS", "KEENNOSE", "PATH_AVOID_DANGER_1", "SEES", "SMELLS", "WARM" ] }, @@ -1514,7 +1519,6 @@ "upgrades": { "age_grow": 42, "into": "mon_dog_rottweiler" }, "biosignature": { "biosig_item": "feces_dog", "biosig_timer": 6 }, "fear_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 100 ] ], "flags": [ "ANIMAL", "DOGFOOD", "HEARS", "KEENNOSE", "PATH_AVOID_DANGER_1", "SEES", "SMELLS", "WARM" ] }, @@ -1579,7 +1583,6 @@ "upgrades": { "age_grow": 42, "into": "mon_dog_auscattle" }, "biosignature": { "biosig_item": "feces_dog", "biosig_timer": 6 }, "fear_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 100 ] ], "flags": [ "ANIMAL", "DOGFOOD", "HEARS", "KEENNOSE", "PATH_AVOID_DANGER_1", "SEES", "SMELLS", "WARM" ] }, @@ -1635,7 +1638,6 @@ "anger_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED" ], "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "HIT_AND_RUN", "KEENNOSE" ] }, { @@ -1666,7 +1668,6 @@ "anger_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED" ], "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "HIT_AND_RUN", "KEENNOSE" ] }, { @@ -1693,7 +1694,6 @@ "dodge": 4, "harvest": "mammal_small_fur", "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "GOODHEARING", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM" ] }, { @@ -1718,7 +1718,6 @@ "dodge": 6, "harvest": "mammal_small_fur", "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "GOODHEARING", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM" ] }, { @@ -1747,7 +1746,6 @@ "anger_triggers": [ "FRIEND_ATTACKED" ], "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], "placate_triggers": [ "PLAYER_WEAK" ], - "death_function": [ "NORMAL" ], "harvest": "mammal_large_leather", "biosignature": { "biosig_item": "feces_manure", "biosig_timer": 2 }, "special_attacks": [ [ "EAT_CROP", 60 ] ], @@ -1787,7 +1785,6 @@ "dodge": 2, "harvest": "mammal_tiny", "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "WARM", "SWIMS", "ANIMAL", "PATH_AVOID_DANGER_1" ] }, { @@ -1816,7 +1813,6 @@ "anger_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED" ], "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "HIT_AND_RUN", "KEENNOSE" ] }, { @@ -1848,7 +1844,6 @@ "vision_night": 7, "path_settings": { "max_dist": 10 }, "anger_triggers": [ "HURT", "MATING_SEASON" ], - "death_function": [ "NORMAL" ], "zombify_into": "mon_zoose", "baby_flags": [ "AUTUMN" ], "//": "Baby moose don't actually exist (yet), but autumn is their mating season so baby_flags is defined so that they get angry then", @@ -1882,7 +1877,6 @@ "dodge": 2, "harvest": "mammal_small_fur", "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "WARM", "SWIMS", "ANIMAL", "PATH_AVOID_DANGER_1" ] }, { @@ -1918,7 +1912,6 @@ "special_attacks": [ [ "SHRIEK_ALERT", 10 ], [ "SHRIEK_STUN", 1 ], { "type": "bite", "cooldown": 6 }, [ "impale", 10 ] ], "anger_triggers": [ "HURT", "SOUND", "STALK" ], "fear_triggers": [ "FIRE" ], - "death_function": [ "NORMAL" ], "regenerates": 10, "regen_morale": true, "flags": [ "PUSH_MON", "BORES", "CAN_DIG", "HEARS", "KEENNOSE", "PATH_AVOID_DANGER_1", "SMELLS", "WARM" ], @@ -1950,7 +1943,6 @@ "harvest": "mammal_small_fur", "anger_triggers": [ "FRIEND_ATTACKED", "HURT" ], "fear_triggers": [ "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "CLIMBS", "PATH_AVOID_DANGER_1", "WARM", "KEENNOSE" ] }, { @@ -1977,7 +1969,6 @@ "dodge": 4, "harvest": "mammal_small_fur", "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "SWIMS", "WARM" ] }, { @@ -2008,7 +1999,6 @@ "path_settings": { "max_dist": 10 }, "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "upgrades": { "age_grow": 38, "into": "mon_pig" }, "biosignature": { "biosig_item": "feces_manure", "biosig_timer": 7 }, "special_attacks": [ [ "EAT_FOOD", 40 ] ], @@ -2046,7 +2036,6 @@ "anger_triggers": [ "PLAYER_WEAK", "FRIEND_ATTACKED" ], "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "zombify_into": "mon_zombie_pig", "special_attacks": [ [ "EAT_FOOD", 20 ] ], "flags": [ "SEES", "HEARS", "SMELLS", "PET_MOUNTABLE", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "KEENNOSE" ] @@ -2074,7 +2063,6 @@ "reproduction": { "baby_monster": "mon_rabbit", "baby_count": 3, "baby_timer": 55 }, "harvest": "mammal_small_fur", "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "CATTLEFODDER", "PET_WONT_FOLLOW", "WARM" ] }, { @@ -2103,7 +2091,6 @@ "harvest": "mammal_small_fur", "vision_night": 5, "anger_triggers": [ "FRIEND_ATTACKED", "HURT" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "CLIMBS", "PATH_AVOID_DANGER_1", "WARM", "KEENNOSE" ] }, { @@ -2129,7 +2116,7 @@ "melee_cut": 1, "harvest": "mammal_tiny", "special_attacks": [ [ "RATKING", 3 ] ], - "death_function": [ "RATKING" ] + "death_function": { "effect": { "id": "death_ratking" }, "message": "Rats suddenly swarm into view." } }, { "id": "mon_sewer_rat", @@ -2159,7 +2146,6 @@ "harvest": "mammal_tiny", "path_settings": { "max_dist": 10 }, "anger_triggers": [ "PLAYER_WEAK", "FRIEND_ATTACKED", "FRIEND_DIED" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "WARM", "SWIMS", "ANIMAL", "PATH_AVOID_DANGER_1", "STUMBLES" ] }, { @@ -2188,7 +2174,6 @@ "harvest": "mammal_small_wool", "fear_triggers": [ "SOUND", "PLAYER_CLOSE", "FRIEND_ATTACKED" ], "placate_triggers": [ "PLAYER_WEAK" ], - "death_function": [ "NORMAL" ], "upgrades": { "age_grow": 240, "into": "mon_sheep" }, "//": "Puberty reached in 6-9 months.", "biosignature": { "biosig_item": "feces_manure", "biosig_timer": 7 }, @@ -2217,6 +2202,7 @@ "dodge": 2, "starting_ammo": { "milk_raw": 5 }, "anger_triggers": [ ], + "shearing": [ { "result": "wool_staple", "amount": 22 } ], "harvest": "mammal_large_wool", "reproduction": { "baby_monster": "mon_sheep_lamb", "baby_count": 1, "baby_timer": 275 }, "//": "Sheep are seasonal breeders. The natural sexual season is positioned so that lambs will be born in the spring when the weather is warmer and grass is available.", @@ -2224,20 +2210,8 @@ "biosignature": { "biosig_item": "feces_manure", "biosig_timer": 3 }, "fear_triggers": [ "SOUND", "PLAYER_CLOSE", "FRIEND_ATTACKED" ], "placate_triggers": [ "PLAYER_WEAK" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_CROP", 120 ] ], - "flags": [ - "SEES", - "HEARS", - "SMELLS", - "ANIMAL", - "SHEARABLE", - "PATH_AVOID_DANGER_1", - "WARM", - "CATTLEFODDER", - "PET_WONT_FOLLOW", - "MILKABLE" - ] + "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "CATTLEFODDER", "PET_WONT_FOLLOW", "MILKABLE" ] }, { "id": "mon_squirrel", @@ -2263,7 +2237,6 @@ "dodge": 4, "harvest": "mammal_tiny", "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "STUMBLES", "WARM" ] }, { @@ -2290,7 +2263,6 @@ "dodge": 3, "harvest": "mammal_tiny", "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "STUMBLES", "WARM" ] }, { @@ -2317,7 +2289,6 @@ "vision_night": 5, "harvest": "mammal_tiny", "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "SWIMS", "WARM" ] }, { @@ -2348,7 +2319,6 @@ "path_settings": { "max_dist": 10 }, "anger_triggers": [ "STALK", "FRIEND_ATTACKED", "FRIEND_DIED", "PLAYER_WEAK", "PLAYER_CLOSE" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "zombify_into": "mon_zolf", "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "KEENNOSE" ] }, @@ -2380,7 +2350,6 @@ "path_settings": { "max_dist": 14 }, "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], "anger_triggers": [ "HURT", "MATING_SEASON" ], - "death_function": [ "NORMAL" ], "zombify_into": "mon_zeindeer", "reproduction": { "baby_monster": "mon_reindeer_fawn", "baby_count": 5, "baby_timer": 340 }, "biosignature": { "biosig_item": "feces_manure", "biosig_timer": 12 }, diff --git a/data/json/monsters/marloss.json b/data/json/monsters/marloss.json index 66d143afd1c05..38f533a30931c 100644 --- a/data/json/monsters/marloss.json +++ b/data/json/monsters/marloss.json @@ -21,12 +21,12 @@ "melee_dice_sides": 4, "melee_cut": 0, "dodge": 1, + "bleed_rate": 50, "harvest": "human", "vision_day": 30, "vision_night": 3, "special_attacks": [ [ "scratch", 15 ] ], "death_drops": "marloss_zealot_death_drops", - "death_function": [ "NORMAL" ], "anger_triggers": [ "FRIEND_DIED", "FRIEND_ATTACKED", "HURT" ], "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "BASHES", "GROUP_BASH", "HUMAN", "POISON" ] }, @@ -52,12 +52,12 @@ "melee_dice_sides": 4, "melee_cut": 0, "dodge": 1, + "bleed_rate": 50, "harvest": "human", "vision_day": 30, "vision_night": 3, "special_attacks": [ [ "scratch", 15 ] ], "death_drops": "marloss_zealot_death_drops", - "death_function": [ "NORMAL" ], "anger_triggers": [ "FRIEND_DIED", "FRIEND_ATTACKED", "HURT" ], "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "BASHES", "GROUP_BASH", "HUMAN", "POISON" ] } diff --git a/data/json/monsters/mechsuits.json b/data/json/monsters/mechsuits.json index 89fb00a8ca0b9..84cb229ad141d 100644 --- a/data/json/monsters/mechsuits.json +++ b/data/json/monsters/mechsuits.json @@ -28,7 +28,7 @@ "mech_battery": "huge_atomic_battery_cell", "mech_weapon": "recon_mech_laser", "revert_to_itype": "broken_mech_recon", - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "death_drops": { "groups": [ [ "robots", 20 ] ] }, "flags": [ "SEES", @@ -74,7 +74,7 @@ "mech_battery": "huge_atomic_battery_cell", "mech_weapon": "gatling_mech_laser", "revert_to_itype": "broken_mech_combat", - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "death_drops": { "groups": [ [ "robots", 20 ] ] }, "flags": [ "SEES", @@ -121,7 +121,7 @@ "attack_cost": 150, "revert_to_itype": "broken_mech_lifter", "special_attacks": [ [ "SMASH", 40 ] ], - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "death_drops": { "groups": [ [ "robots", 20 ] ] }, "flags": [ "SEES", diff --git a/data/json/monsters/mi-go.json b/data/json/monsters/mi-go.json index e9df4f4ff78cd..41a4d1bc4f187 100644 --- a/data/json/monsters/mi-go.json +++ b/data/json/monsters/mi-go.json @@ -24,6 +24,7 @@ "armor_bash": 4, "armor_cut": 12, "armor_bullet": 10, + "bleed_rate": 75, "vision_day": 50, "vision_night": 20, "harvest": "zombie_meatslug", @@ -33,7 +34,6 @@ [ "PARROT", 800 ], { "id": "scratch", "damage_max_instance": [ { "damage_type": "cut", "amount": 23, "armor_multiplier": 0.8 } ] } ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", @@ -74,6 +74,7 @@ "armor_bash": 4, "armor_cut": 12, "armor_bullet": 10, + "bleed_rate": 50, "vision_day": 50, "vision_night": 20, "harvest": "zombie_meatslug", @@ -84,7 +85,6 @@ { "id": "scratch", "damage_max_instance": [ { "damage_type": "cut", "amount": 23, "armor_multiplier": 0.8 } ] }, { "type": "spell", "spell_data": { "id": "mi-go_slaver_beam", "min_level": 3 }, "cooldown": 100 } ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", @@ -125,6 +125,7 @@ "armor_bash": 5, "armor_cut": 13, "armor_bullet": 10, + "bleed_rate": 75, "vision_day": 50, "vision_night": 20, "harvest": "zombie_meatslug", @@ -134,7 +135,6 @@ [ "PARROT", 800 ], { "id": "scratch", "damage_max_instance": [ { "damage_type": "cut", "amount": 12, "armor_multiplier": 0.4 } ] } ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", @@ -175,6 +175,7 @@ "armor_bash": 17, "armor_cut": 22, "armor_bullet": 18, + "bleed_rate": 50, "vision_day": 50, "vision_night": 20, "harvest": "zombie_meatslug", @@ -188,7 +189,6 @@ { "id": "scratch", "damage_max_instance": [ { "damage_type": "cut", "amount": 35, "armor_multiplier": 0.7 } ] }, { "type": "spell", "spell_data": { "id": "mi-go_slaver_beam", "min_level": 1 }, "cooldown": 100 } ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", @@ -229,6 +229,7 @@ "armor_bash": 19, "armor_cut": 27, "armor_bullet": 22, + "bleed_rate": 25, "vision_day": 50, "vision_night": 25, "harvest": "zombie_meatslug", @@ -241,7 +242,6 @@ { "id": "scratch", "damage_max_instance": [ { "damage_type": "cut", "amount": 30, "armor_multiplier": 0.7 } ] }, { "type": "spell", "spell_data": { "id": "mi-go_slaver_beam", "min_level": 2 }, "cooldown": 100 } ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", @@ -282,6 +282,7 @@ "armor_bash": 4, "armor_cut": 5, "armor_bullet": 4, + "bleed_rate": 25, "vision_day": 50, "vision_night": 25, "harvest": "zombie_meatslug", @@ -301,7 +302,6 @@ "ranges": [ [ 2, 30, "DEFAULT" ] ] } ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", diff --git a/data/json/monsters/misc.json b/data/json/monsters/misc.json index 14914110b76c6..bed0cc0c3df61 100644 --- a/data/json/monsters/misc.json +++ b/data/json/monsters/misc.json @@ -18,7 +18,7 @@ "melee_cut": 0, "vision_day": 1, "harvest": "exempt", - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "regenerates": 50, "flags": [ "IMMOBILE", "NOT_HALLUCINATION", "FILTHY" ] }, @@ -44,7 +44,7 @@ "vision_day": 50, "vision_night": 50, "harvest": "exempt", - "death_function": [ "DISINTEGRATE" ], + "death_function": { "message": "The %s disintegrates!", "corpse_type": "NO_CORPSE" }, "death_drops": "mon_dragon_dummy_drops", "flags": [ "SEES" ] }, @@ -68,7 +68,7 @@ "armor_bullet": 2, "harvest": "exempt", "special_attacks": [ [ "GENERATOR", 1 ] ], - "death_function": [ "GAMEOVER" ], + "death_function": { "effect": { "id": "death_gameover", "hit_self": true } }, "flags": [ "NOHEAD", "ACIDPROOF", "IMMOBILE" ] }, { @@ -92,7 +92,7 @@ "melee_cut": 0, "harvest": "exempt", "special_attacks": [ [ "DISAPPEAR", 20 ] ], - "death_function": [ "DISAPPEAR" ], + "death_function": { "message": "The %s disappears.", "corpse_type": "NO_CORPSE" }, "flags": [ "SEES", "HEARS", "NO_BREATHE", "SMELLS", "GUILT" ] }, { @@ -115,7 +115,7 @@ "melee_cut": 0, "harvest": "exempt", "special_attacks": [ [ "DISAPPEAR", 20 ] ], - "death_function": [ "DISAPPEAR" ], + "death_function": { "message": "The %s disappears.", "corpse_type": "NO_CORPSE" }, "flags": [ "SEES", "HEARS", "NO_BREATHE" ] }, { @@ -138,7 +138,7 @@ "melee_cut": 0, "harvest": "exempt", "special_attacks": [ [ "DISAPPEAR", 20 ] ], - "death_function": [ "DISAPPEAR" ], + "death_function": { "message": "The %s disappears.", "corpse_type": "NO_CORPSE" }, "flags": [ "SEES", "HEARS", "NO_BREATHE" ] }, { @@ -160,7 +160,7 @@ "dodge": 10, "harvest": "exempt", "fear_triggers": [ "PLAYER_CLOSE" ], - "death_function": [ "DISAPPEAR" ], + "death_function": { "message": "The %s disappears.", "corpse_type": "NO_CORPSE" }, "path_settings": { "max_dist": 30 }, "flags": [ "FLIES", "NO_BREATHE", "HARDTOSHOOT", "PET_WONT_FOLLOW" ] }, @@ -185,7 +185,7 @@ "harvest": "exempt", "fear_triggers": [ "PLAYER_CLOSE" ], "special_attacks": [ [ "DISAPPEAR", 200 ] ], - "death_function": [ "DISAPPEAR" ], + "death_function": { "message": "The %s disappears.", "corpse_type": "NO_CORPSE" }, "flags": [ "FLIES", "NO_BREATHE", "NOT_HALLUCINATION", "HARDTOSHOOT" ] }, { @@ -209,7 +209,7 @@ "harvest": "exempt", "fear_triggers": [ "PLAYER_CLOSE" ], "special_attacks": [ [ "DISAPPEAR", 200 ] ], - "death_function": [ "DISAPPEAR" ], + "death_function": { "message": "The %s disappears.", "corpse_type": "NO_CORPSE" }, "flags": [ "FLIES", "NO_BREATHE", "NOT_HALLUCINATION", "HARDTOSHOOT" ] } ] diff --git a/data/json/monsters/mutant.json b/data/json/monsters/mutant.json index 00adc491841d8..94b5e14764a15 100644 --- a/data/json/monsters/mutant.json +++ b/data/json/monsters/mutant.json @@ -28,7 +28,6 @@ "subtype": "collection", "groups": [ [ "subway", 40 ], [ "sewer", 20 ], [ "trash", 5 ], [ "bedroom", 5 ], [ "dresser", 10 ], [ "ammo", 18 ] ] }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "WARM", "BASHES", "GROUP_BASH", "HUMAN", "FILTHY" ] }, { @@ -55,6 +54,7 @@ "armor_bash": 5, "armor_cut": 5, "armor_bullet": 4, + "bleed_rate": 75, "vision_day": 25, "vision_night": 5, "harvest": "human_fur", @@ -70,7 +70,6 @@ "anger_triggers": [ "PLAYER_WEAK", "PLAYER_CLOSE", "STALK", "SOUND" ], "fear_triggers": [ "HURT" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "death_drops": "mon_mutant_experimental_death_drops", "upgrades": { "half_life": 50, "into": "mon_mutant_evolved" }, "regenerates": 1, @@ -97,6 +96,7 @@ "armor_bash": 7, "armor_cut": 7, "armor_bullet": 6, + "bleed_rate": 50, "vision_night": 15, "harvest": "human_large_fur", "special_attacks": [ @@ -142,7 +142,6 @@ "subtype": "collection", "groups": [ [ "subway", 40 ], [ "sewer", 20 ], [ "trash", 5 ], [ "bedroom", 1 ], [ "dresser", 5 ], [ "ammo", 18 ] ] }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "WARM", "BASHES", "GROUP_BASH", "HUMAN" ] } ] diff --git a/data/json/monsters/mutant_mammal.json b/data/json/monsters/mutant_mammal.json index 68f47f28b1c50..e11b1fde244d2 100644 --- a/data/json/monsters/mutant_mammal.json +++ b/data/json/monsters/mutant_mammal.json @@ -24,6 +24,7 @@ "dodge": 3, "armor_bash": 8, "armor_cut": 12, + "bleed_rate": 80, "vision_day": 30, "vision_night": 10, "path_settings": { "max_dist": 10 }, @@ -37,7 +38,6 @@ "anger_triggers": [ "HURT", "PLAYER_CLOSE" ], "fear_triggers": [ "SOUND" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "harvest": "mutant_mammal_large_fur", "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "BASHES", "PUSH_MON", "STUMBLES", "KEENNOSE" ] }, @@ -68,7 +68,6 @@ "harvest": "mutant_mammal_fur", "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], "fear_triggers": [ "SOUND" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "SWIMS", "WARM" ] }, { @@ -97,7 +96,6 @@ "harvest": "bird_large", "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], "fear_triggers": [ "SOUND" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "SWIMS", "WARM" ] }, { @@ -128,7 +126,6 @@ "special_attacks": [ [ "scratch", 10 ] ], "fear_triggers": [ "SOUND", "PLAYER_CLOSE", "FRIEND_ATTACKED" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "harvest": "mammal_tiny", "reproduction": { "baby_monster": "mon_cat_mutant_kitten_prism", "baby_count": 2, "baby_timer": 80 }, "flags": [ @@ -166,7 +163,6 @@ "special_attacks": [ [ "scratch", 10 ] ], "fear_triggers": [ "SOUND", "PLAYER_CLOSE", "FRIEND_ATTACKED" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "harvest": "mammal_tiny", "flags": [ "SEES", "HEARS", "GOODHEARING", "SMELLS", "ANIMAL", "CATFOOD", "PATH_AVOID_DANGER_1", "WARM", "HIT_AND_RUN" ], "upgrades": { "age_grow": 120, "into": "mon_cat_mutant_prism" } @@ -209,7 +205,6 @@ "anger_triggers": [ "FRIEND_ATTACKED", "PLAYER_WEAK" ], "fear_triggers": [ "SOUND" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "KEENNOSE", "GROUP_MORALE" ] }, { @@ -242,7 +237,6 @@ "anger_triggers": [ "STALK", "FRIEND_ATTACKED", "PLAYER_WEAK", "HURT" ], "fear_triggers": [ "SOUND" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "harvest": "mutant_mammal_fur", "flags": [ "SEES", @@ -283,6 +277,7 @@ "dodge": 2, "armor_bash": 8, "armor_cut": 10, + "bleed_rate": 60, "vision_day": 50, "vision_night": 5, "harvest": "mutant_mammal_large_fur", @@ -296,7 +291,6 @@ ], "anger_triggers": [ "STALK", "FRIEND_ATTACKED", "FRIEND_DIED", "PLAYER_WEAK", "PLAYER_CLOSE" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "KEENNOSE" ] }, { @@ -327,7 +321,6 @@ "harvest": "mutant_mammal_large_leather", "path_settings": { "max_dist": 10 }, "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "zombify_into": "mon_zeer", "reproduction": { "baby_monster": "mon_deer_mutant_spider_fawn", "baby_count": 1, "baby_timer": 330 }, "//": " 201 days gestation period. The fawn will stay with its mother for approximately one year, suckling for three to four months.", @@ -364,7 +357,6 @@ "harvest": "mutant_mammal_leather", "path_settings": { "max_dist": 10 }, "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "upgrades": { "age_grow": 330, "into": "mon_deer_mutant_spider" }, "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "STUMBLES" ] }, @@ -401,7 +393,6 @@ "biosignature": { "biosig_item": "feces_dog", "biosig_timer": 6 }, "anger_triggers": [ "HURT", "FRIEND_ATTACKED", "FRIEND_DIED" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 100 ], [ "PARROT_AT_DANGER", 0 ] ], "flags": [ "ANIMAL", diff --git a/data/json/monsters/nether.json b/data/json/monsters/nether.json index d285cf229bfe5..7b86b198cf4fb 100644 --- a/data/json/monsters/nether.json +++ b/data/json/monsters/nether.json @@ -29,7 +29,6 @@ "path_settings": { "max_dist": 5 }, "special_attacks": [ { "type": "bite", "cooldown": 15 }, [ "impale", 20 ] ], "anger_triggers": [ "HURT", "FRIEND_DIED", "FRIEND_ATTACKED" ], - "death_function": [ "NORMAL" ], "harvest": "bird_large", "flags": [ "HEARS", "KEENNOSE", "GOODHEARING", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "SWIMS", "SUNDEATH" ] }, @@ -56,9 +55,11 @@ "melee_dice_sides": 4, "melee_cut": 0, "dodge": 2, + "bleed_rate": 50, "harvest": "human", "special_attacks": [ [ "FEAR_PARALYZE", 0 ] ], - "death_function": [ "AMIGARA", "NORMAL" ], + "death_function": { "effect": { "id": "death_amigara" } }, + "death_drops": "amigara_drops", "flags": [ "SMELLS", "HEARS", "SEES", "STUMBLES", "HARDTOSHOOT" ] }, { @@ -85,7 +86,6 @@ "dodge": 1, "harvest": "demihuman", "special_attacks": [ [ "SHRIEK", 10 ] ], - "death_function": [ "NORMAL" ], "flags": [ "SMELLS", "HEARS", "WARM", "ANIMAL", "PATH_AVOID_DANGER_1", "SUNDEATH", "NO_BREATHE", "HUMAN" ] }, { @@ -111,7 +111,6 @@ "harvest": "zombie", "special_attacks": [ [ "FEAR_PARALYZE", 0 ], { "type": "bite", "cooldown": 5 } ], "death_drops": "default_zombie_clothes", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "IMMOBILE", "GUILT", "POISON", "REVIVES", "FILTHY" ] }, { @@ -131,7 +130,7 @@ "melee_cut": 0, "harvest": "exempt", "special_attacks": [ [ "BREATHE", 8 ] ], - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "IMMOBILE", "NOGIB" ] }, { @@ -151,7 +150,7 @@ "melee_cut": 0, "harvest": "exempt", "special_attacks": [ [ "BREATHE", 8 ] ], - "death_function": [ "KILL_BREATHERS" ], + "death_function": { "effect": { "id": "death_kill_breathers", "hit_self": true }, "corpse_type": "NO_CORPSE" }, "flags": [ "ACIDPROOF", "ACID_BLOOD", "IMMOBILE" ] }, { @@ -182,7 +181,7 @@ "luminance": 6, "harvest": "exempt", "special_attacks": [ [ "DARKMAN", 5 ], [ "scratch", 15 ] ], - "death_function": [ "DARKMAN" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away.", "effect": { "id": "death_darkman" } }, "regenerates_in_dark": true, "flags": [ "NOHEAD", "HARDTOSHOOT", "WEBWALK", "FLIES", "PLASTIC", "ELECTRIC", "ACIDPROOF", "SUNDEATH", "NO_BREATHE" ] }, @@ -211,7 +210,6 @@ "harvest": "zombie_leather", "special_attacks": [ [ "scratch", 15 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "BASHES", "GROUP_BASH", "HUMAN", "POISON", "REVIVES", "FILTHY" ] }, { @@ -238,7 +236,7 @@ "dodge": 3, "harvest": "exempt", "special_attacks": [ [ "DOGTHING", 40 ] ], - "death_function": [ "THING" ], + "death_function": { "effect": { "id": "death_thing", "hit_self": true }, "corpse_type": "NO_CORPSE", "message": "The %s emerges!" }, "flags": [ "SEES", "SMELLS", "HEARS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM" ] }, { @@ -260,13 +258,13 @@ "melee_cut": 0, "dodge": 1, "armor_bash": 4, + "bleed_rate": 20, "vision_day": 50, "vision_night": 40, "luminance": 25, "harvest": "zombie_meatslug", "//": "Add a demihuman alien anatomy for things like flaming eye's and Mi-go, polyps and other lovecraftian horrors from other dimensions", "special_attacks": [ [ "STARE", 12 ] ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "WARM", "FLIES", "FIREY", "NO_BREATHE", "NOHEAD" ] }, { @@ -293,8 +291,9 @@ "melee_cut": 6, "dodge": 7, "armor_bash": 8, + "bleed_rate": 40, "harvest": "exempt", - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "SMELLS", "HEARS", @@ -310,6 +309,60 @@ "NOGIB" ] }, + { + "id": "mon_unseen_hunter", + "type": "MONSTER", + "name": { "str": "unseen hunter" }, + "description": "There was nothing here a moment ago, but now you see the faintest outline of an otherworldly creature approaching you with jittery leaps. Trying to focus on it reveals a pointed beak dripping translucent fluid and rows upon rows of bladed legs grasping the floor, before your eyes begin to burn and your head starts to spin.", + "symbol": " ", + "color": "light_blue", + "default_faction": "nether", + "bodytype": "insect", + "diff": 15, + "volume": "50 L", + "weight": "80 kg", + "hp": 150, + "speed": 100, + "aggression": 30, + "morale": 25, + "regen_morale": true, + "regenerates_in_dark": true, + "melee_skill": 10, + "melee_dice": 4, + "melee_dice_sides": 3, + "melee_damage": [ { "damage_type": "cut", "amount": 5, "armor_penetration": 10 } ], + "dodge": 8, + "vision_day": 20, + "vision_night": 20, + "path_settings": { "allow_open_doors": true, "avoid_traps": true, "avoid_sharp": true }, + "special_attacks": [ + [ "RANGED_PULL", 8 ], + { "type": "leap", "cooldown": 20, "max_range": 6, "allow_no_target": true }, + { "id": "hunter_peck" } + ], + "armor_bash": 5, + "armor_cut": 5, + "armor_stab": 5, + "armor_bullet": 30, + "//": "Reduce bullet armor when things are harder to hit or players miss more", + "anger_triggers": [ "FIRE" ], + "fear_triggers": [ "HURT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, + "flags": [ + "SEES", + "HEARS", + "GOODHEARING", + "SMELLS", + "DESTROYS", + "WARM", + "CAMOUFLAGE", + "FIREPROOF", + "NIGHT_INVISIBILITY", + "PATH_AVOID_DANGER_1", + "HARDTOSHOOT", + "HIT_AND_RUN" + ] + }, { "id": "mon_gozu", "type": "MONSTER", @@ -333,10 +386,10 @@ "melee_dice_sides": 6, "melee_cut": 0, "dodge": 4, + "bleed_rate": 60, "vision_day": 30, "harvest": "gozu", "special_attacks": [ [ "FEAR_PARALYZE", 20 ] ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "WARM", "BASHES", "GROUP_BASH", "ANIMAL", "NO_BREATHE", "PATH_AVOID_DANGER_1" ] }, { @@ -361,9 +414,9 @@ "melee_dice_sides": 4, "melee_cut": 0, "dodge": 4, + "bleed_rate": 60, "path_settings": { "avoid_traps": true, "avoid_sharp": true }, "harvest": "demihuman", - "death_function": [ "NORMAL" ], "flags": [ "SMELLS", "HEARS", "WARM", "NO_BREATHE", "GRABS", "PRIORITIZE_TARGETS", "PATH_AVOID_DANGER_1" ] }, { @@ -391,7 +444,7 @@ "dodge": 4, "harvest": "exempt", "special_attacks": [ [ "TENTACLE", 5 ] ], - "death_function": [ "THING" ], + "death_function": { "effect": { "id": "death_thing", "hit_self": true }, "corpse_type": "NO_CORPSE", "message": "The %s emerges!" }, "flags": [ "SEES", "SMELLS", "HEARS", "BASHES" ] }, { @@ -418,13 +471,14 @@ "dodge": 5, "armor_cut": 50, "armor_bullet": 40, + "bleed_rate": 20, "vision_day": 50, "vision_night": 50, "harvest": "exempt", "special_attacks": [ [ "TINDALOS_TELEPORT", 5 ] ], "emit_fields": [ { "emit_id": "emit_tindalos_gas_leak", "delay": "1 s" } ], "path_settings": { "max_dist": 10 }, - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "SEES", "SMELLS", @@ -462,13 +516,14 @@ "dodge": 5, "armor_cut": 50, "armor_bullet": 40, + "bleed_rate": 0, "vision_day": 50, "vision_night": 50, "harvest": "exempt", "special_attacks": [ [ "TINDALOS_TELEPORT", 5 ], [ "DISAPPEAR", 25 ] ], "emit_fields": [ { "emit_id": "emit_tindalos_gas_leak", "delay": "1 s" } ], "path_settings": { "max_dist": 10 }, - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "SEES", "SMELLS", @@ -508,7 +563,6 @@ "harvest": "demihuman", "special_attacks": [ [ "ACID", 15 ] ], "anger_triggers": [ "PLAYER_WEAK", "FRIEND_DIED" ], - "death_function": [ "NORMAL" ], "flags": [ "SMELLS", "HEARS", "POISON", "ACIDPROOF", "ACID_BLOOD" ] }, { @@ -533,7 +587,7 @@ "dodge": 8, "harvest": "exempt", "anger_triggers": [ "STALK", "PLAYER_WEAK", "PLAYER_CLOSE", "FRIEND_ATTACKED" ], - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "SEES", "SMELLS", @@ -572,11 +626,12 @@ "dodge": 8, "armor_cut": 5, "armor_bullet": 4, + "bleed_rate": 40, "vision_day": 50, "//": "a good candidate for an alien anatomy harvest", "harvest": "exempt", "path_settings": { "max_dist": 10 }, - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "SEES", "SMELLS", "HEARS", "WARM", "BASHES", "HIT_AND_RUN", "NO_BREATHE", "NOGIB" ] }, { @@ -609,7 +664,6 @@ "vision_night": 15, "path_settings": { "avoid_traps": true, "avoid_sharp": true }, "harvest": "mammal_small_fur", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "HARDTOSHOOT", "PATH_AVOID_DANGER_1" ] }, { @@ -637,7 +691,7 @@ "harvest": "exempt", "special_attacks": [ [ "DISAPPEAR", 200 ] ], "special_when_hit": [ "ZAPBACK", 100 ], - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "SEES", "HEARS", @@ -681,7 +735,7 @@ "dodge": 1, "harvest": "exempt", "special_attacks": [ [ "DISAPPEAR", 200 ] ], - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "SEES", "SMELLS", "WARM", "SWIMS", "PLASTIC", "SUNDEATH", "NOGIB" ] }, { @@ -711,7 +765,7 @@ "harvest": "exempt", "path_settings": { "max_dist": 5 }, "special_attacks": [ [ "PARROT", 400 ] ], - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "regenerates": 50, "regen_morale": true, "flags": [ "SEES", "SMELLS", "SWIMS", "PLASTIC", "SLUDGEPROOF", "ACID_BLOOD", "ACIDPROOF", "NOHEAD", "ABSORBS_SPLITS", "NOGIB" ] @@ -740,9 +794,10 @@ "melee_cut": 0, "dodge": 2, "armor_bash": 8, + "bleed_rate": 20, "harvest": "exempt", "special_attacks": [ [ "TENTACLE", 5 ] ], - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "SMELLS", "HEARS", "NOHEAD", "BASHES", "GROUP_BASH", "SWIMS", "ATTACKMON", "PLASTIC", "ACIDPROOF", "NOGIB", "CLIMBS" ] }, { @@ -768,7 +823,6 @@ "melee_cut": 0, "dodge": 6, "harvest": "demihuman", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "GOODHEARING", "POISON", "HUMAN", "CLIMBS" ] }, { @@ -795,9 +849,9 @@ "melee_cut": 8, "dodge": 1, "armor_bash": 6, + "bleed_rate": 50, "harvest": "meatslug", "special_attacks": [ [ "GENE_STING", 20 ] ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "BASHES", "DESTROYS", "POISON", "VENOM", "NO_BREATHE", "DIGS" ] }, { @@ -819,7 +873,7 @@ "morale": 100, "melee_cut": 0, "harvest": "exempt", - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "HEARS", "GOODHEARING", "STUMBLES", "NOHEAD", "HARDTOSHOOT", "FLIES", "PLASTIC", "NO_BREATHE", "NOGIB" ] } ] diff --git a/data/json/monsters/obsolete.json b/data/json/monsters/obsolete.json index fcac715abb71c..65b61fe0f13f2 100644 --- a/data/json/monsters/obsolete.json +++ b/data/json/monsters/obsolete.json @@ -21,7 +21,6 @@ "dodge": 2, "harvest": "mammal_tiny", "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "WARM", "SWIMS", "ANIMAL", "PATH_AVOID_DANGER_1", "VERMIN" ] }, { @@ -46,7 +45,6 @@ "harvest": "arachnid", "anger_triggers": [ "PLAYER_WEAK" ], "fear_triggers": [ "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "FLIES", "VERMIN" ] }, { @@ -68,7 +66,6 @@ "harvest": "mammal_tiny", "special_attacks": [ { "type": "leap", "cooldown": 10, "max_range": 5 } ], "fear_triggers": [ "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "SWIMS" ] }, { @@ -88,7 +85,6 @@ "melee_cut": 0, "dodge": 6, "harvest": "mammal_tiny", - "death_function": [ "NORMAL" ], "flags": [ "SMELLS", "HEARS", "STUMBLES", "VERMIN", "FLIES" ] }, { @@ -112,7 +108,6 @@ "dodge": 2, "harvest": "mammal_tiny", "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "VERMIN" ] }, { @@ -133,7 +128,6 @@ "dodge": 6, "harvest": "mammal_tiny", "fear_triggers": [ "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "VERMIN", "ACIDPROOF", "ARTHROPOD_BLOOD" ] }, { @@ -154,7 +148,6 @@ "melee_cut": 0, "dodge": 2, "harvest": "mammal_tiny", - "death_function": [ "NORMAL" ], "flags": [ "SMELLS", "HEARS", "VERMIN", "CLIMBS" ] }, { @@ -174,7 +167,6 @@ "melee_cut": 0, "dodge": 2, "harvest": "mammal_tiny", - "death_function": [ "NORMAL" ], "flags": [ "SMELLS", "HEARS", "VERMIN", "WEBWALK", "CLIMBS" ] }, { @@ -194,7 +186,6 @@ "melee_cut": 0, "dodge": 2, "harvest": "arachnid", - "death_function": [ "NORMAL" ], "flags": [ "SMELLS", "HEARS", "VERMIN", "BADVENOM", "CLIMBS" ] }, { @@ -214,7 +205,6 @@ "melee_cut": 0, "dodge": 2, "harvest": "mammal_tiny", - "death_function": [ "NORMAL" ], "flags": [ "SMELLS", "HEARS", "VERMIN", "CLIMBS" ] }, { @@ -245,7 +235,7 @@ "revert_to_itype": "bot_tripod", "special_attacks": [ [ "FLAMETHROWER", 10 ] ], "death_drops": { "groups": [ [ "robots", 4 ], [ "tripod", 1 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", "GOODHEARING", "BASHES", "NO_BREATHE", "ELECTRONIC", "CLIMBS", "PRIORITIZE_TARGETS" ] }, { @@ -277,7 +267,7 @@ "starting_ammo": { "40x46mm_m433": 200, "556": 3000 }, "path_settings": { "max_dist": 20 }, "special_attacks": [ [ "MULTI_ROBOT", 3 ] ], - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", @@ -321,7 +311,7 @@ "starting_ammo": { "40x46mm_m433": 100, "556": 1000 }, "path_settings": { "max_dist": 10 }, "special_attacks": [ [ "CHICKENBOT", 4 ] ], - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", "BASHES", "NO_BREATHE", "ELECTRONIC", "PRIORITIZE_TARGETS", "DROPS_AMMO" ] }, { @@ -358,7 +348,7 @@ ], "special_when_hit": [ "RETURN_FIRE", 100 ], "death_drops": { }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "NOHEAD", "ELECTRONIC", "COLDPROOF", "IMMOBILE", "NO_BREATHE" ] } ] diff --git a/data/json/monsters/power_leech.json b/data/json/monsters/power_leech.json index f103c93c9d557..f54e9e62cf5f5 100644 --- a/data/json/monsters/power_leech.json +++ b/data/json/monsters/power_leech.json @@ -17,6 +17,7 @@ "aggression": 100, "morale": 100, "armor_bash": 15, + "bleed_rate": 30, "vision_day": 30, "vision_night": 12, "luminance": 200, @@ -36,7 +37,6 @@ ], "special_when_hit": [ "ZAPBACK", 100 ], "harvest": "flesh_plant_bloom", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "NOHEAD", "IMMOBILE", "NO_BREATHE", "QUEEN", "HARDTOSHOOT" ] }, { @@ -57,6 +57,7 @@ "aggression": 100, "morale": 100, "armor_bash": 15, + "bleed_rate": 30, "vision_day": 30, "vision_night": 8, "luminance": 200, @@ -74,7 +75,6 @@ ], "special_when_hit": [ "ZAPBACK", 100 ], "harvest": "flesh_plant", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "NOHEAD", "IMMOBILE", "NO_BREATHE", "HARDTOSHOOT" ] }, { @@ -95,13 +95,13 @@ "aggression": 100, "morale": 100, "armor_bash": 15, + "bleed_rate": 30, "vision_day": 30, "vision_night": 8, "luminance": 200, "special_when_hit": [ "ZAPBACK", 100 ], "harvest": "flesh_plant", "death_drops": { }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "NOHEAD", "IMMOBILE", "NO_BREATHE", "HARDTOSHOOT" ] }, { @@ -135,7 +135,6 @@ [ "LEECH_SPAWNER", 120 ] ], "harvest": "flesh_plant", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "NOHEAD", "IMMOBILE", "NO_BREATHE" ] }, { @@ -178,7 +177,6 @@ ], "special_when_hit": [ "ZAPBACK", 100 ], "harvest": "flesh_plant", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "NOHEAD", "NO_BREATHE", "HARDTOSHOOT" ] }, { @@ -219,7 +217,6 @@ [ "EVOLVE_KILL_STRIKE", 6 ] ], "harvest": "flesh_plant", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "NOHEAD", "NO_BREATHE", "HARDTOSHOOT" ] } ] diff --git a/data/json/monsters/reptile_amphibian.json b/data/json/monsters/reptile_amphibian.json index d8bcd485bd498..da2e2d079cd3c 100644 --- a/data/json/monsters/reptile_amphibian.json +++ b/data/json/monsters/reptile_amphibian.json @@ -38,7 +38,6 @@ "upgrades": { "half_life": 50, "into": "mon_frog_mother" }, "special_attacks": [ { "type": "leap", "cooldown": 10, "move_cost": 0, "max_range": 10, "min_consider_range": 2 } ], "anger_triggers": [ "STALK", "PLAYER_WEAK", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "SWIMS" ] }, { @@ -87,7 +86,6 @@ "anger_triggers": [ "PLAYER_CLOSE", "PLAYER_WEAK" ], "fear_triggers": [ "FIRE", "HURT" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "GOODHEARING", "SMELLS", "KEENNOSE", "PATH_AVOID_DANGER_1", "ANIMAL", "PUSH_MON", "SWIMS" ] }, { @@ -121,7 +119,6 @@ "anger_triggers": [ "HURT" ], "fear_triggers": [ "PLAYER_CLOSE" ], "placate_triggers": [ "PLAYER_WEAK" ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 14, "into": "mon_rattlesnake_giant" }, "flags": [ "SEES", "HEARS", "SMELLS", "BADVENOM", "HARDTOSHOOT", "SWIMS" ] }, @@ -165,7 +162,6 @@ ], "anger_triggers": [ "HURT", "PLAYER_CLOSE" ], "placate_triggers": [ "PLAYER_WEAK" ], - "death_function": [ "NORMAL" ], "reproduction": { "baby_egg": "egg_reptile", "baby_count": 3, "baby_timer": 10 }, "baby_flags": [ "SPRING" ], "flags": [ "SEES", "HEARS", "SMELLS", "BADVENOM", "HARDTOSHOOT", "SWIMS" ] @@ -197,7 +193,6 @@ "vision_night": 30, "harvest": "mutant_animal_large_noskin", "path_settings": { "max_dist": 5 }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "WARM", "VENOM", "SWIMS" ] } ] diff --git a/data/json/monsters/robofac_robots.json b/data/json/monsters/robofac_robots.json index 941950cf5e131..9472aaf45751c 100644 --- a/data/json/monsters/robofac_robots.json +++ b/data/json/monsters/robofac_robots.json @@ -30,7 +30,7 @@ ], "special_when_hit": [ "RETURN_FIRE", 100 ], "death_drops": { }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "NOHEAD", "ELECTRONIC", "COLDPROOF", "IMMOBILE", "NO_BREATHE" ] } ] diff --git a/data/json/monsters/slimes.json b/data/json/monsters/slimes.json index 230e6956aad0b..680d9e788ed73 100644 --- a/data/json/monsters/slimes.json +++ b/data/json/monsters/slimes.json @@ -25,9 +25,14 @@ "armor_bash": 12, "armor_stab": 14, "armor_acid": 15, + "bleed_rate": 30, "harvest": "exempt", "special_attacks": [ [ "FORMBLOB", 30 ] ], - "death_function": [ "BLOBSPLIT" ], + "death_function": { + "message": "The %s splits in two!", + "corpse_type": "NO_CORPSE", + "effect": { "id": "death_blobsplit", "hit_self": true } + }, "flags": [ "HEARS", "GOODHEARING", "NOHEAD", "POISON", "NO_BREATHE", "ACIDPROOF" ] }, { @@ -54,9 +59,14 @@ "melee_dice_sides": 4, "melee_cut": 0, "armor_bash": 12, + "bleed_rate": 20, "harvest": "exempt", "special_attacks": [ [ "CALLBLOBS", 0 ] ], - "death_function": [ "BRAINBLOB" ], + "death_function": { + "message": "The %s splits in two!", + "corpse_type": "NO_CORPSE", + "effect": { "id": "death_blob_brain", "hit_self": true } + }, "flags": [ "SEES", "HEARS", "GOODHEARING", "NOHEAD", "POISON", "NO_BREATHE", "ACIDPROOF", "QUEEN" ] }, { @@ -87,9 +97,14 @@ "armor_bullet": 3, "armor_stab": 20, "armor_acid": 20, + "bleed_rate": 30, "harvest": "exempt", "special_attacks": [ [ "FORMBLOB", 20 ] ], - "death_function": [ "BLOBSPLIT" ], + "death_function": { + "message": "The %s splits in two!", + "corpse_type": "NO_CORPSE", + "effect": { "id": "death_blobsplit_large", "hit_self": true } + }, "flags": [ "HEARS", "GOODHEARING", "NOHEAD", "POISON", "NO_BREATHE", "ACIDPROOF" ] }, { @@ -119,7 +134,8 @@ "armor_stab": 10, "armor_acid": 10, "harvest": "exempt", - "death_function": [ "BLOBSPLIT" ], + "death_function": { "message": "The %s's body melts away.", "corpse_type": "NO_CORPSE" }, + "death_drops": "mon_blob_small_deathdrops", "flags": [ "HEARS", "GOODHEARING", "NOHEAD", "POISON", "NO_BREATHE", "ACIDPROOF" ] }, { @@ -147,7 +163,7 @@ "armor_bash": 10, "harvest": "exempt", "special_attacks": [ [ "FORMBLOB", 4 ] ], - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "SMELLS", "HEARS", "PLASTIC", "NO_BREATHE", "NOHEAD", "NOGIB" ] }, { @@ -178,7 +194,11 @@ "vision_night": 5, "harvest": "exempt", "special_attacks": [ [ "SLIMESPRING", 15 ] ], - "death_function": [ "ACID" ], + "death_function": { + "message": "The %s's body dissolves into acid.", + "effect": { "id": "death_acid", "hit_self": true }, + "corpse_type": "NO_CORPSE" + }, "flags": [ "SEES", "HEARS", "SMELLS", "GOODHEARING", "NOHEAD", "POISON", "VENOM", "WARM", "GUILT" ] } ] diff --git a/data/json/monsters/slugs.json b/data/json/monsters/slugs.json index 94a9ad034227c..ea4b205505b1b 100644 --- a/data/json/monsters/slugs.json +++ b/data/json/monsters/slugs.json @@ -22,10 +22,11 @@ "melee_cut": 0, "dodge": 12, "armor_bash": 4, + "bleed_rate": 30, "vision_day": 10, "vision_night": 30, "harvest": "exempt", - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "regenerates": 50, "flags": [ "NOHEAD", "SEES", "POISON", "HEARS", "SMELLS", "SLUDGEPROOF", "SLUDGETRAIL", "SWIMS", "FLAMMABLE", "NOGIB" ] }, @@ -65,11 +66,11 @@ "armor_bash": 8, "armor_cut": 2, "armor_bullet": 2, + "bleed_rate": 60, "vision_day": 30, "harvest": "mutant_meatslug", "special_attacks": [ [ "ACID", 10 ] ], "anger_triggers": [ "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "BASHES", "ACIDPROOF", "ACIDTRAIL", "ARTHROPOD_BLOOD" ] } ] diff --git a/data/json/monsters/triffid.json b/data/json/monsters/triffid.json index e92824b27659f..cf3d81b2ac195 100644 --- a/data/json/monsters/triffid.json +++ b/data/json/monsters/triffid.json @@ -43,10 +43,10 @@ "aggression": 100, "morale": 100, "melee_cut": 0, + "bleed_rate": 80, "harvest": "biollante", "special_attacks": [ [ "SPIT_SAP", 2 ] ], "death_drops": { "subtype": "collection", "groups": [ [ "biollante", 8 ] ], "//": "80% chance of an item from group biollante" }, - "death_function": [ "NORMAL" ], "flags": [ "NOHEAD", "IMMOBILE" ] }, { @@ -67,9 +67,10 @@ "morale": 100, "melee_cut": 0, "armor_bash": 8, + "bleed_rate": 50, "harvest": "exempt", "special_attacks": [ [ "GROW_VINE", 60 ] ], - "death_function": [ "KILL_VINES" ], + "death_function": { "effect": { "id": "death_kill_vines", "hit_self": true, "min_level": 1 }, "corpse_type": "NO_CORPSE" }, "flags": [ "NOHEAD", "IMMOBILE" ] }, { @@ -90,9 +91,10 @@ "morale": 100, "melee_cut": 0, "armor_bash": 2, + "bleed_rate": 80, "harvest": "exempt", "special_attacks": [ [ "VINE", 100 ] ], - "death_function": [ "VINE_CUT" ], + "death_function": { "effect": { "id": "death_kill_vines", "hit_self": true }, "corpse_type": "NO_CORPSE" }, "flags": [ "NOHEAD", "HARDTOSHOOT", "PLASTIC", "IMMOBILE" ] }, { @@ -117,7 +119,6 @@ "melee_cut": 1, "harvest": "triffid_small", "upgrades": { "age_grow": 14, "into": "mon_triffid_young" }, - "death_function": [ "NORMAL" ], "flags": [ "HEARS", "SMELLS", "NOHEAD", "STUMBLES" ] }, { @@ -139,10 +140,10 @@ "melee_dice": 1, "melee_dice_sides": 4, "melee_cut": 4, + "bleed_rate": 75, "harvest": "triffid_paralytic", "upgrades": { "age_grow": 14, "into": "mon_triffid" }, "special_attacks": [ [ "TRIFFID_GROWTH", 28800 ] ], - "death_function": [ "NORMAL" ], "fungalize_into": "mon_fungaloid", "flags": [ "HEARS", "SMELLS", "NOHEAD", "PARALYZEVENOM" ] }, @@ -169,8 +170,8 @@ "armor_bash": 10, "armor_cut": 4, "armor_bullet": 3, + "bleed_rate": 60, "harvest": "triffid_paralytic", - "death_function": [ "NORMAL" ], "fungalize_into": "mon_fungaloid", "flags": [ "SEES", "SMELLS", "BASHES", "GROUP_BASH", "NOHEAD", "PARALYZEVENOM" ] }, @@ -197,9 +198,9 @@ "armor_bash": 12, "armor_cut": 8, "armor_bullet": 6, + "bleed_rate": 40, "harvest": "triffid_queen", "special_attacks": [ [ "GROWPLANTS", 20 ] ], - "death_function": [ "NORMAL" ], "fungalize_into": "mon_fungaloid", "flags": [ "HEARS", "SMELLS", "BASHES", "NOHEAD", "PARALYZEVENOM" ] }, @@ -225,8 +226,8 @@ "melee_cut": 0, "dodge": 4, "armor_bash": 18, + "bleed_rate": 10, "harvest": "triffid_small", - "death_function": [ "NORMAL" ], "flags": [ "HEARS", "GOODHEARING", "NOHEAD", "HARDTOSHOOT", "GRABS", "SWIMS", "PLASTIC" ] }, { @@ -252,7 +253,8 @@ "armor_bash": 4, "armor_cut": 6, "armor_bullet": 5, - "harvest": "triffid_paralytic", + "bleed_rate": 60, + "harvest": "triffid_fungal_fighter", "attack_effs": [ { "id": "paralyzepoison", "//": "applying this multiple times makes intensity go up by 3 instead of 1", "duration": 33 }, { "id": "paralyzepoison", "duration": 33 }, @@ -260,7 +262,6 @@ ], "special_attacks": [ [ "PARA_STING", 10 ] ], "death_drops": { "subtype": "collection", "groups": [ [ "fungal_sting", 80 ] ], "//": "80% chance of an item from group fungal_sting" }, - "death_function": [ "NORMAL" ], "flags": [ "HEARS", "SMELLS", "NOHEAD", "CAN_DIG" ] }, { @@ -281,9 +282,10 @@ "aggression": 100, "morale": 100, "melee_cut": 0, + "bleed_rate": 60, + "emit_fields": [ { "emit_id": "emit_pollen_stream", "delay": "1 s" } ], "harvest": "triffid_paralytic", "special_attacks": [ [ "SPIT_SAP", 3 ], [ "PARA_STING", 12 ] ], - "death_function": [ "NORMAL" ], "flags": [ "NOHEAD", "IMMOBILE" ] }, { @@ -309,7 +311,7 @@ "armor_bullet": 13, "harvest": "triffid_small", "special_attacks": [ [ "TRIFFID_HEARTBEAT", 50 ] ], - "death_function": [ "TRIFFID_HEART" ], + "death_function": { "effect": { "id": "death_triffid_heart", "hit_self": true } }, "flags": [ "NOHEAD", "IMMOBILE", "QUEEN" ] } ] diff --git a/data/json/monsters/turrets.json b/data/json/monsters/turrets.json index aa1bf09e25515..23df37eaf9feb 100644 --- a/data/json/monsters/turrets.json +++ b/data/json/monsters/turrets.json @@ -44,7 +44,7 @@ ], "special_when_hit": [ "RETURN_FIRE", 100 ], "death_drops": { }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "NOHEAD", "ELECTRONIC", "COLDPROOF", "IMMOBILE", "NO_BREATHE", "DROPS_AMMO" ] }, { @@ -72,7 +72,11 @@ "revert_to_itype": "bot_turret_searchlight", "special_attacks": [ [ "SEARCHLIGHT", 1 ] ], "death_drops": { "groups": [ [ "robots", 1 ], [ "turret_searchlight", 1 ] ] }, - "death_function": [ "FOCUSEDBEAM" ], + "death_function": { + "effect": { "id": "death_focused_beam" }, + "message": "As the final light is destroyed, it erupts in a blinding flare!", + "corpse_type": "NO_CORPSE" + }, "flags": [ "SEES", "NOHEAD", "ELECTRONIC", "COLDPROOF", "IMMOBILE", "NO_BREATHE", "PRIORITIZE_TARGETS" ] }, { @@ -121,7 +125,7 @@ ], "special_when_hit": [ "RETURN_FIRE", 100 ], "death_drops": { }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "NOHEAD", @@ -180,7 +184,7 @@ ], "special_when_hit": [ "RETURN_FIRE", 100 ], "death_drops": { }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "NOHEAD", @@ -239,7 +243,7 @@ ], "special_when_hit": [ "RETURN_FIRE", 100 ], "death_drops": { }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "NOHEAD", @@ -300,7 +304,7 @@ } ], "death_drops": { }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "NOHEAD", "ELECTRONIC", "COLDPROOF", "IMMOBILE", "NO_BREATHE", "DROPS_AMMO" ] }, { @@ -328,7 +332,7 @@ "vision_night": 50, "revert_to_itype": "bot_turret_speaker", "special_attacks": [ [ "SPEAKER", 10 ] ], - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "death_drops": { "groups": [ [ "turret_speaker", 1 ] ] }, "flags": [ "SEES", "NOHEAD", "ELECTRONIC", "IMMOBILE", "NO_BREATHE" ] }, @@ -376,7 +380,7 @@ ], "special_when_hit": [ "RETURN_FIRE", 100 ], "death_drops": { "subtype": "collection", "groups": [ [ "robots", 80 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", "GOODHEARING", "NOHEAD", "IMMOBILE", "NO_BREATHE", "PRIORITIZE_TARGETS", "INTERIOR_AMMO" ] } ] diff --git a/data/json/monsters/utility_bot.json b/data/json/monsters/utility_bot.json index aedfada0b44d8..55b13e60201b7 100644 --- a/data/json/monsters/utility_bot.json +++ b/data/json/monsters/utility_bot.json @@ -23,7 +23,7 @@ "revert_to_itype": "bot_eyebot", "special_attacks": [ [ "PHOTOGRAPH", 30 ] ], "death_drops": { "groups": [ [ "robots", 4 ], [ "eyebot", 1 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "FLIES", "ELECTRONIC", "COLDPROOF", "NO_BREATHE", "NOHEAD", "PRIORITIZE_TARGETS" ] }, { @@ -49,7 +49,7 @@ "revert_to_itype": "bot_grocerybot", "special_attacks": [ [ "PAID_BOT", 1 ] ], "death_drops": { "groups": [ [ "robots", 4 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "ELECTRONIC", @@ -87,7 +87,7 @@ "revert_to_itype": "bot_grocerybot_busted", "special_attacks": [ [ "PAID_BOT", 1 ] ], "death_drops": { "groups": [ [ "robots", 4 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "ELECTRONIC", "COLDPROOF", "NO_BREATHE", "FIREPROOF", "PUSH_MON", "HEARS", "PACIFIST", "PAY_BOT" ] }, { @@ -112,7 +112,11 @@ "armor_bullet": 10, "vision_day": 50, "revert_to_itype": "bot_hazmatbot", - "death_function": [ "EXPLODE" ], + "death_function": { + "corpse_type": "NO_CORPSE", + "effect": { "id": "death_explosion_mon_hazmatbot", "hit_self": true }, + "message": "The %s explodes!" + }, "flags": [ "SEES", "HEARS", "BASHES", "ELECTRONIC", "COLDPROOF", "NO_BREATHE", "PRIORITIZE_TARGETS", "PATH_AVOID_DANGER_1" ] }, { @@ -140,7 +144,7 @@ "armor_bullet": 10, "revert_to_itype": "bot_molebot", "death_drops": { "groups": [ [ "robots", 4 ], [ "molebot", 1 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "HEARS", "GOODHEARING", "DIGS", "NO_BREATHE", "ELECTRONIC", "COLDPROOF", "PATH_AVOID_DANGER_1" ] }, { @@ -170,7 +174,7 @@ "revert_to_itype": "bot_nursebot", "special_attacks": [ [ "ASSIST", 30 ], [ "CHECK_UP", 120 ] ], "death_drops": { "groups": [ [ "robots", 4 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "ELECTRONIC", "COLDPROOF", "NO_BREATHE", "FIREPROOF", "PUSH_MON", "HEARS", "PACIFIST" ] }, { @@ -203,7 +207,7 @@ "revert_to_itype": "bot_nursebot", "special_attacks": [ [ "OPERATE", 30 ], [ "PARROT", 20 ] ], "death_drops": { "groups": [ [ "robots", 4 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "ELECTRONIC", diff --git a/data/json/monsters/zanimal_upgrade.json b/data/json/monsters/zanimal_upgrade.json index 077f5b4e2167f..84797b29e8de4 100644 --- a/data/json/monsters/zanimal_upgrade.json +++ b/data/json/monsters/zanimal_upgrade.json @@ -25,11 +25,11 @@ "armor_bullet": 12, "armor_stab": 30, "armor_acid": 3, + "bleed_rate": 50, "vision_night": 3, "harvest": "mr_bones", "special_attacks": [ { "type": "bite", "cooldown": 5 } ], "upgrades": { "half_life": 15, "into": "mon_dog_skeleton_brute" }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "NO_BREATHE", "HARDTOSHOOT", "REVIVES", "POISON", "FILTHY" ] }, { @@ -50,6 +50,7 @@ "armor_bullet": 5, "vision_night": 1 }, + "bleed_rate": 50, "upgrades": { "half_life": 21, "into": "mon_dog_zombie_hulk" }, "special_attacks": [ [ "SMASH", 30 ], { "type": "bite", "move_cost": 150, "cooldown": 2, "accuracy": 4, "no_infection_chance": 12 } ], "extend": { "flags": [ "GROUP_BASH", "PUSH_VEH" ] } @@ -69,6 +70,7 @@ "armor_bash": 8, "armor_cut": 12, "armor_bullet": 10, + "bleed_rate": 0, "upgrades": { }, "special_attacks": [ [ "SMASH", 20 ], { "type": "bite", "move_cost": 188, "cooldown": 2, "accuracy": 4, "no_infection_chance": 12 } ], "extend": { "flags": [ "DESTROYS" ] } @@ -87,6 +89,7 @@ "armor_bullet": 24, "armor_bash": 12, "armor_acid": 1, + "bleed_rate": 0, "special_attacks": [ [ "SMASH", 45 ], { "id": "scratch", "damage_max_instance": [ { "damage_type": "cut", "amount": 15, "armor_multiplier": 0.6 } ] } @@ -100,6 +103,7 @@ "description": "This former wild boar appears to have been a truly massive specimen in life. Stretching eight to nine feet in length, the most arresting feature of this animal is that the enamel of its tusks has spread across its face leaving a skull-like appearance with deep-set eyeholes.", "diff": 2, "color": "red", + "weight": "281 kg", "proportional": { "hp": 1.5, "speed": 1.5, "attack_cost": 1.5 }, "relative": { "melee_dice": 1, @@ -110,6 +114,7 @@ "armor_bullet": 5, "vision_night": 1 }, + "bleed_rate": 50, "special_attacks": [ [ "SMASH", 30 ], { "id": "impale" } ], "extend": { "flags": [ "GROUP_BASH", "PUSH_VEH", "HIT_AND_RUN" ] } }, @@ -121,9 +126,11 @@ "description": "Billowing clouds of yellow-streaked gas precede boar-shaped shadows. Glimpses of a zombie boar are quickly obscured by the gases leaving its body through open wounds.", "diff": 5, "color": "red", + "bleed_rate": 50, + "weight": "150 kg", "harvest": "exempt", "emit_fields": [ { "emit_id": "emit_tear_gas_stream", "delay": "1 s" } ], - "death_function": [ "TEARBURST" ], + "death_function": { "effect": { "id": "death_tearburst", "hit_self": true }, "message": "A %s explode!", "corpse_type": "NO_CORPSE" }, "special_attacks": [ { "id": "impale" } ], "extend": { "flags": [ "HIT_AND_RUN" ] } }, @@ -154,11 +161,11 @@ "armor_bullet": 12, "armor_stab": 30, "armor_acid": 3, + "bleed_rate": 50, "vision_night": 3, "harvest": "mr_bones", "special_attacks": [ { "type": "bite", "cooldown": 5 } ], "upgrades": { "half_life": 15, "into": "mon_dog_skeleton_brute" }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "NO_BREATHE", "HARDTOSHOOT", "REVIVES", "POISON", "FILTHY" ] }, { @@ -174,6 +181,7 @@ "melee_dice": 6, "melee_cut": 8, "dodge": 5, + "bleed_rate": 50, "vision_night": 12, "special_attacks": [ { "id": "scratch", "move_cost": 190, "damage_max_instance": [ { "damage_type": "cut", "amount": 12 } ] }, @@ -205,6 +213,7 @@ "armor_bullet": 32, "armor_stab": 30, "armor_acid": 3, + "bleed_rate": 0, "vision_day": 10, "harvest": "mr_bones", "special_attacks": [ [ "scratch", 10 ], { "type": "bite", "cooldown": 5 } ], @@ -218,6 +227,7 @@ "description": "An uncanny shadow envelops this creature, as if light itself were too repulsed to touch it. All you can make out is the outline of a large, shambling cat.", "color": "light_gray", "vision_day": 3, + "bleed_rate": 50, "vision_night": 45, "flags": [ "SEES", @@ -248,8 +258,9 @@ "melee_skill": 4, "melee_dice": 3, "dodge": 3, + "bleed_rate": 50, "special_attacks": [ [ "ACID_BARF", 10 ] ], - "death_function": [ "ACID", "NORMAL" ], + "death_function": { "message": "The %s's body leaks acid.", "effect": { "id": "death_acid", "hit_self": true } }, "flags": [ "SEES", "HEARS", @@ -285,6 +296,7 @@ "armor_bash": 10, "armor_cut": 10, "armor_bullet": 8, + "bleed_rate": 50, "vision_night": 6, "special_attacks": [ [ "SMASH", 30 ], [ "GRAB", 7 ] ], "flags": [ @@ -319,6 +331,7 @@ "armor_bash": 8, "armor_cut": 8, "armor_bullet": 6, + "bleed_rate": 0, "vision_night": 7, "harvest": "zombie_thorny", "attack_effs": [ { "id": "paralyzepoison", "duration": 33 } ], diff --git a/data/json/monsters/zed-animal.json b/data/json/monsters/zed-animal.json index 1e0dcc041a0fe..6e07c5f5923f9 100644 --- a/data/json/monsters/zed-animal.json +++ b/data/json/monsters/zed-animal.json @@ -26,7 +26,6 @@ "armor_bullet": 2, "luminance": 0, "harvest": "zombie_leather", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "SWIMS", "AQUATIC", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ] }, { @@ -56,7 +55,6 @@ "vision_night": 4, "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5 } ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 28, "into_group": "GROUP_ZOMBIE_DOG_UPGRADE" }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ] }, @@ -91,7 +89,6 @@ "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5 } ], "death_drops": { "subtype": "collection", "groups": [ [ "dog_cop", 40 ] ], "//": "40% chance of an item from group dog_cop" }, - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 28, "into_group": "GROUP_ZOMBIE_DOG_UPGRADE" }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "PUSH_MON", "FILTHY" ] }, @@ -118,11 +115,11 @@ "melee_dice_sides": 4, "melee_cut": 2, "dodge": 1, + "bleed_rate": 50, "vision_day": 30, "vision_night": 4, "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 2, "accuracy": 4, "no_infection_chance": 12 } ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 28, "into": "mon_dog_zombie_brute" }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "PUSH_MON", "FILTHY" ] }, @@ -154,7 +151,6 @@ "special_attacks": [ [ "HOWL", 10 ] ], "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], "fear_triggers": [ "FIRE" ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 28, "into_group": "GROUP_ZOLF_UPGRADE" }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "KEENNOSE", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ] }, @@ -189,7 +185,6 @@ "harvest": "zombie_fur", "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], "fear_triggers": [ "FIRE" ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 14, "into_group": "GROUP_ZOMBEAR_UPGRADE" }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "PUSH_MON", "FILTHY" ] }, @@ -222,7 +217,6 @@ "special_attacks": [ { "type": "bite", "cooldown": 2 } ], "anger_triggers": [ "PLAYER_WEAK", "PLAYER_CLOSE" ], "fear_triggers": [ "FIRE" ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 20, "into_group": "GROUP_ZOMBIE_PIG_UPGRADE" }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "KEENNOSE", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ], "//": "1d8->2d5, minor bonus over 1d9" @@ -255,7 +249,6 @@ "harvest": "zombie_leather", "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], "fear_triggers": [ "FIRE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "FILTHY", "SWIMS" ] }, { @@ -288,7 +281,6 @@ "harvest": "zombie_leather", "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], "fear_triggers": [ "FIRE" ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 14, "into_group": "GROUP_ZOOSE_UPGRADE" }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ] }, @@ -322,7 +314,6 @@ "special_attacks": [ { "type": "leap", "cooldown": 10, "max_range": 5 } ], "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], "fear_triggers": [ "FIRE" ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 14, "into_group": "GROUP_ZOUGAR_UPGRADE" }, "flags": [ "SEES", @@ -368,7 +359,6 @@ "vision_night": 3, "harvest": "zombie_leather", "anger_triggers": [ "PLAYER_CLOSE", "PLAYER_WEAK" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "BASHES", "NO_BREATHE", "REVIVES", "BONES", "FAT" ] }, { @@ -414,7 +404,6 @@ "vision_night": 3, "anger_triggers": [ "PLAYER_CLOSE", "PLAYER_WEAK" ], "death_drops": { "subtype": "collection", "groups": [ [ "cow", 25 ] ], "//": "25% chance of an item from group cow" }, - "death_function": [ "NORMAL" ], "harvest": "zombie_leather", "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ] }, @@ -447,7 +436,6 @@ "vision_night": 3, "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], "fear_triggers": [ "FIRE" ], - "death_function": [ "NORMAL" ], "harvest": "zombie_leather", "special_attacks": [ [ "SMASH", 20 ] ], "flags": [ @@ -492,7 +480,6 @@ "armor_bash": 1, "armor_cut": 3, "vision_night": 15, - "death_function": [ "NORMAL" ], "harvest": "zombie_leather", "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ] }, @@ -525,7 +512,6 @@ "vision_day": 5, "vision_night": 5, "harvest": "arachnid_tainted", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -569,7 +555,6 @@ "armor_bash": 5, "armor_cut": 4, "vision_night": 10, - "death_function": [ "NORMAL" ], "harvest": "zombie_leather", "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ] } diff --git a/data/json/monsters/zed-classic.json b/data/json/monsters/zed-classic.json index a11db87639196..8177826d8318f 100644 --- a/data/json/monsters/zed-classic.json +++ b/data/json/monsters/zed-classic.json @@ -30,7 +30,6 @@ "groups": [ [ "default_zombie_clothes", 100 ], [ "hive", 80 ] ], "//": "cloth as any other zombie (always), additional items from group hive (sometimes)" }, - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "HEARS", @@ -73,7 +72,6 @@ "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "GRAB", 7 ], [ "scratch", 20 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "fungalize_into": "mon_zombie_fungus", "upgrades": { "half_life": 14, "into_group": "GROUP_ZOMBIE_UPGRADE" }, @@ -123,7 +121,6 @@ "harvest": "zombie", "special_attacks": [ [ "GRAB", 7 ], [ "scratch", 20 ] ], "death_drops": "mon_zombie_cop_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "fungalize_into": "mon_zombie_fungus", "flags": [ @@ -167,7 +164,6 @@ "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "scratch", 20 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "upgrades": { "half_life": 14, "into_group": "GROUP_ZOMBIE_CRAWLER_UPGRADE" }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "GRABS", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ] @@ -202,7 +198,6 @@ "special_attacks": [ [ "DANCE", 30 ] ], "death_drops": "mon_zombie_hulk_death_drops", "fungalize_into": "mon_zombie_fungus", - "death_function": [ "NORMAL" ], "regenerates": 50, "flags": [ "WARM", "BASHES", "DESTROYS", "NO_BREATHE", "POISON", "FILTHY" ] }, @@ -235,7 +230,6 @@ "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5, "min_mul": 0.75, "//": "Fat zombies have stronger jaws" }, [ "scratch", 20 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "fungalize_into": "mon_zombie_fungus", "upgrades": { "half_life": 12, "into_group": "GROUP_ZOMBIE_FAT" }, @@ -285,7 +279,6 @@ "harvest": "zombie", "special_attacks": [ [ "GRAB", 7 ] ], "death_drops": "mon_zombie_fireman_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", @@ -332,7 +325,6 @@ "harvest": "zombie", "special_attacks": [ [ "GRAB", 7 ] ], "death_drops": "mon_zombie_hazmat_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", @@ -376,7 +368,6 @@ "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 2, "accuracy": 3, "no_infection_chance": 10 }, [ "GRAB", 7 ], [ "scratch", 20 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "fungalize_into": "mon_zombie_fungus", "upgrades": { "half_life": 23, "into": "mon_devourer" }, @@ -425,7 +416,6 @@ "harvest": "zombie", "special_attacks": [ [ "GRAB", 7 ], [ "scratch", 15 ] ], "death_drops": "mon_zombie_swat_death_drops", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 28, "into": "mon_zombie_kevlar_1" }, "burn_into": "mon_zombie_scorched", "flags": [ @@ -473,7 +463,6 @@ "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5, "min_mul": 0.7 }, [ "GRAB", 7 ], [ "scratch", 20 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "fungalize_into": "mon_zombie_fungus", "upgrades": { "half_life": 14, "into_group": "GROUP_ZOMBIE_UPGRADE" }, diff --git a/data/json/monsters/zed-pupating.json b/data/json/monsters/zed-pupating.json index ea40b60c81045..f91e5faf54bd4 100644 --- a/data/json/monsters/zed-pupating.json +++ b/data/json/monsters/zed-pupating.json @@ -9,6 +9,7 @@ "armor_bash": 7, "armor_cut": 5, "armor_bullet": 5, + "bleed_rate": 50, "special_attacks": [ { "type": "bite", "cooldown": 3 } ], "regenerates": 10, "extend": { "flags": [ "SLUDGETRAIL", "SLUDGEPROOF" ] } @@ -40,6 +41,7 @@ "armor_bash": 8, "armor_cut": 6, "armor_bullet": 6, + "bleed_rate": 50, "special_attacks": [ { "type": "bite", "cooldown": 3 } ], "regenerates": 10, "extend": { "flags": [ "SLUDGETRAIL", "SLUDGEPROOF" ] } @@ -61,6 +63,143 @@ ] } }, + { + "id": "mon_brute_pupa_decoy", + "type": "MONSTER", + "name": { "str": "pupating brute" }, + "description": "This muscular human corpse is wrapped in sticky black fibers that cover everything from the neck down. Beneath the wrapping there is a strange rhythmic movement, grotesque to behold.", + "copy-from": "mon_zombie_brute", + "delete": { "categories": [ "CLASSIC" ] }, + "speed": 95, + "regenerates": 10, + "upgrades": { "half_life": 21, "into_group": "GROUP_BRUTE_PUPA" }, + "extend": { "flags": [ "SLUDGETRAIL", "SLUDGEPROOF" ] } + }, + { + "id": "mon_brute_pupa", + "type": "MONSTER", + "name": { "str": "pupating brute" }, + "description": "This muscular human corpse is wrapped in sticky black fibers that cover everything from the neck down. Beneath the wrapping there is a strange rhythmic movement, grotesque to behold.", + "copy-from": "mon_brute_pupa_decoy", + "extend": { + "special_attacks": [ + { + "type": "spell", + "spell_data": { "id": "big_raptor_spawn", "hit_self": true }, + "cooldown": 50, + "monster_message": "The pupating brute bursts, and gore-smeared winged beasts climb out of the corpse!" + } + ] + } + }, + { + "id": "mon_hulk_pupa_decoy", + "type": "MONSTER", + "name": { "str": "hive hulk" }, + "//": "Not using copy_from as it messes with monster evolution.", + "description": "The bloated torso of this gigantic corpse is wrapped in sticky black fibers. Beneath the wrapping there is a strange rhythmic movement, grotesque to behold.", + "default_faction": "zombie", + "bodytype": "human", + "species": [ "ZOMBIE", "HUMAN" ], + "diff": 5, + "volume": "875000 ml", + "weight": "200 kg", + "hp": 300, + "speed": 85, + "material": [ "flesh" ], + "symbol": "Z", + "color": "white_magenta", + "aggression": 100, + "morale": 100, + "melee_skill": 4, + "melee_dice": 3, + "melee_dice_sides": 7, + "melee_cut": 0, + "armor_bash": 8, + "armor_cut": 10, + "armor_bullet": 10, + "vision_day": 83, + "vision_night": 4, + "harvest": "zombie", + "special_attacks": [ [ "SMASH", 30 ] ], + "death_drops": "mon_zombie_hulk_death_drops", + "regenerates": 10, + "flags": [ + "SEES", + "HEARS", + "SMELLS", + "STUMBLES", + "WARM", + "BASHES", + "DESTROYS", + "POISON", + "NO_BREATHE", + "REVIVES", + "PUSH_MON", + "PUSH_VEH", + "SLUDGETRAIL", + "SLUDGEPROOF", + "FILTHY" + ] + }, + { + "id": "mon_hulk_pupa", + "type": "MONSTER", + "name": { "str": "hive hulk" }, + "//": "Not using copy_from as it messes with monster evolution.", + "description": "The bloated torso of this gigantic corpse is wrapped in sticky black fibers. Beneath the wrapping there is a strange rhythmic movement, grotesque to behold.", + "default_faction": "zombie", + "bodytype": "human", + "species": [ "ZOMBIE", "HUMAN" ], + "diff": 5, + "volume": "875000 ml", + "weight": "200 kg", + "hp": 300, + "speed": 85, + "material": [ "flesh" ], + "symbol": "Z", + "color": "white_magenta", + "aggression": 100, + "morale": 100, + "melee_skill": 4, + "melee_dice": 3, + "melee_dice_sides": 7, + "melee_cut": 0, + "armor_bash": 8, + "armor_cut": 10, + "armor_bullet": 10, + "vision_day": 83, + "vision_night": 4, + "harvest": "zombie", + "special_attacks": [ + [ "SMASH", 30 ], + { + "type": "spell", + "spell_data": { "id": "hive_raptor_spawn", "hit_self": true }, + "cooldown": 30, + "monster_message": "The hive hulk opens its mouth, and a gore-smeared winged beast flies out of it!" + } + ], + "death_drops": "mon_zombie_hulk_death_drops", + "regenerates": 10, + "flags": [ + "SEES", + "HEARS", + "SMELLS", + "STUMBLES", + "WARM", + "BASHES", + "DESTROYS", + "POISON", + "NO_BREATHE", + "REVIVES", + "PUSH_MON", + "PUSH_VEH", + "SLUDGETRAIL", + "SLUDGEPROOF", + "FILTHY" + ] + }, { "id": "mon_zombie_pupa_decoy_shady", "type": "MONSTER", @@ -73,6 +212,7 @@ "armor_bullet": 6, "special_attacks": [ { "type": "bite", "cooldown": 3 } ], "regenerates": 5, + "bleed_rate": 0, "vision_day": 8, "vision_night": 15, "extend": { "flags": [ "SLUDGETRAIL", "SLUDGEPROOF", "NIGHT_INVISIBILITY" ] } diff --git a/data/json/monsters/zed-winged.json b/data/json/monsters/zed-winged.json index 8c7c26b093cd2..bb8f2821c65e3 100644 --- a/data/json/monsters/zed-winged.json +++ b/data/json/monsters/zed-winged.json @@ -20,6 +20,7 @@ "melee_dice": 2, "melee_dice_sides": 2, "melee_cut": 0, + "bleed_rate": 50, "vision_night": 3, "harvest": "zombie", "special_attacks": [ @@ -29,7 +30,6 @@ { "type": "leap", "cooldown": 10, "max_range": 5 } ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "upgrades": { "half_life": 28, "into": "mon_zombie_brute_winged" }, "flags": [ @@ -73,6 +73,7 @@ "armor_bash": 2, "armor_cut": 2, "armor_bullet": 2, + "bleed_rate": 0, "vision_night": 7, "harvest": "zombie", "special_attacks": [ @@ -84,7 +85,6 @@ } ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_fiend", "flags": [ "SEES", @@ -126,7 +126,6 @@ "vision_night": 5, "harvest": "zombie", "special_attacks": [ { "id": "impale", "damage_max_instance": [ { "damage_type": "stab", "amount": 15, "armor_multiplier": 0.6 } ] } ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 28, "into_group": "GROUP_ZOMBIE_RAPTOR_UPGRADES" }, "flags": [ "SEES", @@ -168,7 +167,11 @@ [ "SUICIDE", 20 ], { "id": "impale", "damage_max_instance": [ { "damage_type": "stab", "amount": 15, "armor_multiplier": 0.6 } ] } ], - "death_function": [ "EXPLODE" ], + "death_function": { + "effect": { "id": "death_explosion_mon_spawn_raptor_unstable", "hit_self": true }, + "corpse_type": "NO_CORPSE", + "message": "The %s explodes!" + }, "upgrades": { } }, { diff --git a/data/json/monsters/zed_acid.json b/data/json/monsters/zed_acid.json index 328abbac67496..8a133e42c495c 100644 --- a/data/json/monsters/zed_acid.json +++ b/data/json/monsters/zed_acid.json @@ -26,7 +26,7 @@ "harvest": "zombie", "special_attacks": [ [ "ACID_BARF", 10 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "ACID", "NORMAL" ], + "death_function": { "message": "The %s's body leaks acid.", "effect": { "id": "death_acid", "hit_self": true } }, "burn_into": "mon_zombie_scorched", "upgrades": { "half_life": 10, "into": "mon_zombie_spitter" }, "flags": [ @@ -73,6 +73,7 @@ "armor_cut": 2, "armor_bullet": 2, "armor_stab": 12, + "bleed_rate": 50, "vision_night": 3, "luminance": 0, "harvest": "zombie", @@ -93,7 +94,7 @@ ], "special_when_hit": [ "ACIDSPLASH", 100 ], "death_drops": "default_zombie_death_drops", - "death_function": [ "ACID", "NORMAL" ], + "death_function": { "message": "The %s's body leaks acid.", "effect": { "id": "death_acid", "hit_self": true } }, "burn_into": "mon_zombie_scorched", "flags": [ "SEES", @@ -135,11 +136,12 @@ "melee_dice_sides": 6, "melee_cut": 0, "dodge": 1, + "bleed_rate": 50, "vision_night": 3, "harvest": "zombie", "special_attacks": [ [ "ACID", 20 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "ACID", "NORMAL" ], + "death_function": { "message": "The %s's body leaks acid.", "effect": { "id": "death_acid", "hit_self": true } }, "burn_into": "mon_zombie_scorched", "upgrades": { "half_life": 28, "into": "mon_zombie_corrosive" }, "flags": [ @@ -188,7 +190,7 @@ "harvest": "zombie", "special_attacks": [ [ "ACID_BARF", 22 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "ACID", "NORMAL" ], + "death_function": { "message": "The %s's body leaks acid.", "effect": { "id": "death_acid", "hit_self": true } }, "burn_into": "mon_zombie_scorched", "upgrades": { "half_life": 8, "into": "mon_zombie_acidic" }, "flags": [ @@ -235,7 +237,7 @@ "harvest": "zombie", "melee_damage": [ { "damage_type": "acid", "amount": 4 } ], "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "ACID_BARF", 10 ] ], - "death_function": [ "NORMAL", "ACID" ], + "death_function": { "message": "The %s's body leaks acid.", "effect": { "id": "death_acid", "hit_self": true } }, "upgrades": { "half_life": 12, "into": "mon_zombie_dog_brute_acidic" }, "flags": [ "SEES", @@ -272,6 +274,7 @@ "armor_bullet": 3, "vision_night": 1 }, + "bleed_rate": 50, "proportional": { "hp": 1.8, "speed": 1.3, "volume": 1.4, "weigth": 1.1 }, "special_when_hit": [ "ACIDSPLASH", 100 ] } diff --git a/data/json/monsters/zed_burned.json b/data/json/monsters/zed_burned.json index a5e022bafe5b7..544686a927d44 100644 --- a/data/json/monsters/zed_burned.json +++ b/data/json/monsters/zed_burned.json @@ -26,10 +26,11 @@ "armor_bullet": 4, "armor_acid": 3, "armor_fire": 15, + "bleed_rate": 0, "vision_day": 10, "vision_night": 3, "harvest": "zombie", - "death_function": [ "SMOKEBURST", "NORMAL" ], + "death_function": { "effect": { "id": "death_smokeburst", "hit_self": true }, "message": "A %s explodes!" }, "upgrades": { "half_life": 14, "into_group": "GROUP_CHILD_ZOMBIE_UPGRADE" }, "flags": [ "SEES", @@ -73,11 +74,12 @@ "armor_bullet": 10, "armor_acid": 5, "armor_fire": 15, + "bleed_rate": 0, "vision_day": 10, "vision_night": 3, "harvest": "zombie", "special_attacks": [ [ "SMASH", 30 ], [ "GRAB", 7 ] ], - "death_function": [ "SMOKEBURST", "NORMAL" ], + "death_function": { "effect": { "id": "death_smokeburst", "hit_self": true }, "message": "A %s explodes!" }, "upgrades": { "half_life": 21, "into_group": "GROUP_ZOMBIE_BRUTE" }, "flags": [ "SEES", "HEARS", "STUMBLES", "POISON", "NO_BREATHE", "REVIVES", "REVIVES_HEALTHY", "NO_NECRO", "FILTHY" ] }, @@ -107,11 +109,12 @@ "armor_bullet": 7, "armor_acid": 3, "armor_fire": 15, + "bleed_rate": 0, "vision_day": 10, "vision_night": 3, "harvest": "zombie", "special_attacks": [ [ "GRAB", 7 ] ], - "death_function": [ "SMOKEBURST", "NORMAL" ], + "death_function": { "effect": { "id": "death_smokeburst", "hit_self": true }, "message": "A %s explodes!" }, "upgrades": { "half_life": 14, "into_group": "GROUP_ZOMBIE_UPGRADE" }, "flags": [ "SEES", "HEARS", "STUMBLES", "POISON", "NO_BREATHE", "REVIVES", "REVIVES_HEALTHY", "NO_NECRO", "FILTHY" ] } diff --git a/data/json/monsters/zed_children.json b/data/json/monsters/zed_children.json index 6512ba1615ce2..1d618888086a7 100644 --- a/data/json/monsters/zed_children.json +++ b/data/json/monsters/zed_children.json @@ -21,14 +21,14 @@ "melee_dice_sides": 4, "melee_cut": 2, "dodge": 3, + "bleed_rate": 50, "harvest": "zombie", "vision_day": 30, "vision_night": 3, "special_attacks": [ { "type": "bite", "cooldown": 2 } ], "death_drops": { "subtype": "collection", "groups": [ [ "default_zombie_clothes", 100 ], [ "child_items", 65 ] ] }, - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_child_scorched", - "zombify_into": "mon_zombie_child_fungus", + "fungalize_into": "mon_zombie_child_fungus", "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ], "//": "no GUILT because it no longer looks enough like a child to evoke pity" }, @@ -64,9 +64,8 @@ "groups": [ [ "default_zombie_children_clothes", 100 ], [ "child_items", 65 ] ], "//": "default zombie children clothing (always), additional items from child_items (sometimes)" }, - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_child_scorched", - "zombify_into": "mon_zombie_child_fungus", + "fungalize_into": "mon_zombie_child_fungus", "upgrades": { "half_life": 14, "into_group": "GROUP_CHILD_ZOMBIE_UPGRADE" }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "POISON", "GUILT", "NO_BREATHE", "REVIVES", "FILTHY" ] }, @@ -92,14 +91,14 @@ "melee_dice_sides": 2, "melee_cut": 1, "dodge": 1, + "bleed_rate": 50, "vision_day": 10, "vision_night": 10, "harvest": "zombie", "special_attacks": [ [ "SHRIEK", 5 ] ], "death_drops": { "subtype": "collection", "groups": [ [ "default_zombie_clothes", 100 ], [ "child_items", 65 ] ] }, - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_child_scorched", - "zombify_into": "mon_zombie_child_fungus", + "fungalize_into": "mon_zombie_child_fungus", "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "CLIMBS", "FILTHY" ], "//": "no GUILT because it no longer looks enough like a child to evoke pity" }, @@ -125,15 +124,15 @@ "melee_dice": 2, "melee_dice_sides": 2, "melee_cut": 1, + "bleed_rate": 50, "dodge": 1, "vision_day": 30, "vision_night": 5, "harvest": "zombie", "special_attacks": [ [ "SHRIEK", 5 ], [ "scratch", 15 ] ], "death_drops": { "subtype": "collection", "groups": [ [ "default_zombie_clothes", 100 ], [ "child_items", 65 ] ] }, - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_child_scorched", - "zombify_into": "mon_zombie_child_fungus", + "fungalize_into": "mon_zombie_child_fungus", "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "GUILT", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ], "//": "GUILT because it still looks enough like a child to evoke pity" }, @@ -160,14 +159,15 @@ "melee_cut": 2, "dodge": 1, "armor_bash": 1, + "bleed_rate": 50, "vision_day": 30, "vision_night": 5, "harvest": "zombie", "special_attacks": [ [ "GRAB", 5 ] ], "death_drops": { "subtype": "collection", "groups": [ [ "default_zombie_clothes", 100 ], [ "child_items", 65 ] ] }, - "death_function": [ "BOOMER" ], + "death_function": { "effect": { "id": "death_boomer", "hit_self": true }, "message": "A %s explode!", "corpse_type": "NO_CORPSE" }, "burn_into": "mon_zombie_child_scorched", - "zombify_into": "mon_zombie_child_fungus", + "fungalize_into": "mon_zombie_child_fungus", "flags": [ "SEES", "HEARS", "STUMBLES", "WARM", "GUILT", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ], "//": "GUILT because it still looks enough like a child to evoke pity" }, @@ -193,14 +193,14 @@ "melee_dice_sides": 4, "melee_cut": 3, "dodge": 2, + "bleed_rate": 50, "vision_day": 10, "vision_night": 10, "harvest": "zombie", "special_attacks": [ [ "scratch", 10 ], { "type": "leap", "cooldown": 10, "max_range": 5 } ], "death_drops": { "subtype": "collection", "groups": [ [ "default_zombie_clothes", 100 ], [ "child_items", 65 ] ] }, - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_child_scorched", - "zombify_into": "mon_zombie_child_fungus", + "fungalize_into": "mon_zombie_child_fungus", "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "CLIMBS", "FILTHY" ], "//": "no GUILT because it no longer looks enough like a child to evoke pity" }, @@ -229,14 +229,14 @@ "dodge": 2, "armor_cut": 5, "armor_bullet": 4, + "bleed_rate": 50, "vision_day": 30, "vision_night": 5, "harvest": "zombie", "special_attacks": [ [ "SHRIEK", 15 ], [ "scratch", 10 ] ], "death_drops": { "subtype": "collection", "groups": [ [ "default_zombie_clothes", 100 ], [ "child_items", 65 ] ] }, - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_child_scorched", - "zombify_into": "mon_zombie_child_fungus", + "fungalize_into": "mon_zombie_child_fungus", "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "GUILT", "POISON", "NO_BREATHE", "REVIVES", "HARDTOSHOOT", "FILTHY" ], "//": "GUILT because it still looks enough like a child to evoke pity" } diff --git a/data/json/monsters/zed_electric.json b/data/json/monsters/zed_electric.json index cd0af42c05415..a5d1aaf2a4ca3 100644 --- a/data/json/monsters/zed_electric.json +++ b/data/json/monsters/zed_electric.json @@ -25,13 +25,13 @@ "armor_bash": 3, "armor_cut": 8, "armor_bullet": 6, + "bleed_rate": 0, "vision_night": 3, "luminance": 16, - "harvest": "CBM_SUBS", + "harvest": "zombie", "special_attacks": [ [ "SHOCKSTORM", 15 ], [ "SMASH", 30 ] ], "special_when_hit": [ "ZAPBACK", 75 ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -72,12 +72,12 @@ "melee_damage": [ { "damage_type": "electric", "amount": 8 } ], "melee_cut": 0, "dodge": 2, + "bleed_rate": 50, "luminance": 8, - "harvest": "CBM_CIV", + "harvest": "zombie", "special_attacks": [ [ "SHOCKSTORM", 25 ] ], "special_when_hit": [ "ZAPBACK", 100 ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 28, "into_group": "GROUP_ZOMBIE_ELECTRIC_UPGRADE" }, "flags": [ "SEES", @@ -118,15 +118,15 @@ "melee_skill": 5, "melee_dice": 1, "melee_dice_sides": 2, + "bleed_rate": 0, "//2": "melee damage is quite weak since the shockfield around it is its most dangerous function", "melee_damage": [ { "damage_type": "electric", "amount": 6 } ], "vision_night": 3, "luminance": 16, - "harvest": "CBM_SUBS", + "harvest": "zombie", "emit_fields": [ { "emit_id": "emit_shock_cloud", "delay": "1 s" } ], "special_when_hit": [ "ZAPBACK", 75 ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "WARM", "POISON", "ELECTRIC", "NO_BREATHE", "REVIVES", "ELECTRIC_FIELD", "FILTHY" ] }, { @@ -156,7 +156,6 @@ "harvest": "zombie", "special_when_hit": [ "ZAPBACK", 100 ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 8, "into": "mon_zombie_electric" }, "flags": [ "SEES", diff --git a/data/json/monsters/zed_explosive.json b/data/json/monsters/zed_explosive.json index 47f11eda5b05e..5dbd35018104b 100644 --- a/data/json/monsters/zed_explosive.json +++ b/data/json/monsters/zed_explosive.json @@ -25,7 +25,7 @@ "harvest": "exempt", "special_attacks": [ [ "BOOMER", 20 ], [ "scratch", 20 ] ], "death_drops": "default_zombie_items", - "death_function": [ "BOOMER" ], + "death_function": { "effect": { "id": "death_boomer", "hit_self": true }, "message": "A %s explode!", "corpse_type": "NO_CORPSE" }, "upgrades": { "half_life": 14, "into": "mon_boomer_huge" }, "fungalize_into": "mon_boomer_fungus", "flags": [ @@ -70,12 +70,17 @@ "armor_bash": 5, "armor_cut": 5, "armor_bullet": 4, + "bleed_rate": 50, "vision_night": 3, "harvest": "zombie", "fungalize_into": "mon_boomer_fungus", "special_attacks": [ [ "BOOMER_GLOW", 20 ], [ "scratch", 20 ] ], "death_drops": "default_zombie_items", - "death_function": [ "BOOMER_GLOW" ], + "death_function": { + "effect": { "id": "death_boomer_glow", "hit_self": true, "min_level": 1 }, + "message": "A %s explode!", + "corpse_type": "NO_CORPSE" + }, "flags": [ "SEES", "GOODHEARING", @@ -120,7 +125,7 @@ "harvest": "exempt", "special_attacks": [ [ "scratch", 20 ] ], "death_drops": "default_zombie_items", - "death_function": [ "CONFLAGRATION" ], + "death_function": { "effect": { "id": "death_conflagration", "hit_self": true }, "message": "A %s explodes!", "corpse_type": "NO_CORPSE" }, "flags": [ "SEES", "HEARS", @@ -163,7 +168,7 @@ "emit_fields": [ { "emit_id": "emit_toxic_leak", "delay": "1 s" } ], "special_attacks": [ [ "SUICIDE", 20 ], [ "scratch", 15 ] ], "death_drops": "default_zombie_items", - "death_function": [ "GAS" ], + "death_function": { "message": "A %s explodes!", "effect": { "id": "death_gas", "hit_self": true }, "corpse_type": "NO_CORPSE" }, "fungalize_into": "mon_zombie_gasbag_fungus", "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ] } diff --git a/data/json/monsters/zed_ferrous.json b/data/json/monsters/zed_ferrous.json index 7ef920f5c26ff..e4f32142da0d3 100644 --- a/data/json/monsters/zed_ferrous.json +++ b/data/json/monsters/zed_ferrous.json @@ -26,7 +26,6 @@ "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "GRAB", 7 ], [ "scratch", 20 ] ], "attack_effs": [ { "id": "tetanus", "chance": 10 } ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "upgrades": { "half_life": 15, "into_group": "GROUP_FERROUS_UPGRADE" }, "flags": [ @@ -69,12 +68,12 @@ "armor_cut": 8, "armor_bullet": 8, "armor_stab": 8, + "bleed_rate": 50, "vision_night": 3, "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "GRAB", 7 ], [ "scratch", 20 ] ], "attack_effs": [ { "id": "tetanus", "chance": 10 } ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "upgrades": { "half_life": 15, "into_group": "GROUP_FERROUS_UPGRADE" }, "flags": [ @@ -118,13 +117,13 @@ "armor_cut": 15, "armor_bullet": 15, "armor_stab": 15, + "bleed_rate": 0, "vision_night": 3, "luminance": 0, "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "GRAB", 7 ], [ "scratch", 20 ] ], "attack_effs": [ { "id": "tetanus", "chance": 10 } ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", @@ -163,12 +162,12 @@ "melee_dice_sides": 6, "melee_cut": 12, "dodge": 1, + "bleed_rate": 0, "vision_night": 3, "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "GRAB", 7 ], [ "scratch", 20 ], [ "impale", 25 ] ], "attack_effs": [ { "id": "tetanus", "chance": 20 } ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", @@ -210,11 +209,11 @@ "melee_dice": 3, "melee_dice_sides": 8, "melee_cut": 2, + "bleed_rate": 0, "vision_day": 14, "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "GRAB", 7 ], [ "scratch", 20 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "attack_effs": [ { "id": "tetanus", "chance": 10 } ], "burn_into": "mon_zombie_scorched", "flags": [ diff --git a/data/json/monsters/zed_fusion.json b/data/json/monsters/zed_fusion.json index 65ce920c03cea..62e15403ce9cd 100644 --- a/data/json/monsters/zed_fusion.json +++ b/data/json/monsters/zed_fusion.json @@ -23,7 +23,6 @@ "armor_bash": 8, "harvest": "zombie_leather", "fear_triggers": [ "HURT", "FIRE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "BASHES", "GROUP_BASH", "POISON", "HUMAN" ] }, { @@ -58,7 +57,6 @@ "subtype": "collection", "groups": [ "default_zombie_death_drops", "default_zombie_death_drops", "default_zombie_death_drops" ] }, - "death_function": [ "NORMAL" ], "regenerates": 1, "flags": [ "SEES", @@ -103,9 +101,10 @@ "armor_bash": 10, "armor_cut": 20, "armor_bullet": 16, + "bleed_rate": 0, "harvest": "exempt", "special_attacks": [ [ "FLESH_TENDRIL", 1 ] ], - "death_function": [ "GAS" ], + "death_function": { "message": "A %s explodes!", "effect": { "id": "death_gas", "hit_self": true }, "corpse_type": "NO_CORPSE" }, "flags": [ "SEES", "HEARS", "SMELLS", "IMMOBILE", "WARM", "POISON", "IMMOBILE", "NO_BREATHE", "FILTHY" ] }, { @@ -135,7 +134,7 @@ "special_attacks": [ [ "SUICIDE", 20 ] ], "death_drops": "default_zombie_items", "upgrades": { "half_life": 8, "into": "mon_zombie_gasbag_crawler" }, - "death_function": [ "GAS" ], + "death_function": { "message": "A %s explodes!", "effect": { "id": "death_gas", "hit_self": true }, "corpse_type": "NO_CORPSE" }, "flags": [ "SEES", "HEARS", "SMELLS", "IMMOBILE", "WARM", "POISON", "NO_BREATHE", "FILTHY" ] }, { @@ -163,10 +162,11 @@ "armor_bash": 6, "armor_cut": 6, "armor_bullet": 5, + "bleed_rate": 50, "vision_night": 50, "harvest": "exempt", "special_attacks": [ { "type": "leap", "cooldown": 5, "max_range": 5, "allow_no_target": true }, [ "scratch", 5 ] ], - "death_function": [ "GAS" ], + "death_function": { "message": "A %s explodes!", "effect": { "id": "death_gas", "hit_self": true }, "corpse_type": "NO_CORPSE" }, "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "POISON", "CLIMBS", "NO_BREATHE", "CLIMBS", "HARDTOSHOOT" ] }, { @@ -195,6 +195,7 @@ "armor_bash": 6, "armor_cut": 6, "armor_bullet": 5, + "bleed_rate": 50, "harvest": "exempt", "starting_ammo": { "barb_paralysis": 100 }, "special_attacks": [ @@ -208,7 +209,7 @@ { "type": "leap", "cooldown": 15, "max_range": 2, "allow_no_target": true }, [ "scratch", 5 ] ], - "death_function": [ "GAS" ], + "death_function": { "message": "A %s explodes!", "effect": { "id": "death_gas", "hit_self": true }, "corpse_type": "NO_CORPSE" }, "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "POISON", "CLIMBS", "NO_BREATHE", "CLIMBS", "HARDTOSHOOT" ] }, { @@ -236,9 +237,10 @@ "armor_bash": 2, "armor_cut": 10, "armor_bullet": 10, + "bleed_rate": 50, "vision_day": 1, "special_attacks": [ { "type": "leap", "cooldown": 5, "max_range": 3, "allow_no_target": true }, [ "scratch", 5 ] ], - "death_function": [ "GAS" ], + "death_function": { "message": "A %s explodes!", "effect": { "id": "death_gas", "hit_self": true }, "corpse_type": "NO_CORPSE" }, "flags": [ "SEES", "HEARS", "GOODHEARING", "WARM", "POISON", "CLIMBS", "NO_BREATHE", "CLIMBS", "HARDTOSHOOT" ] }, { @@ -265,11 +267,12 @@ "armor_bash": 6, "armor_cut": 10, "armor_bullet": 6, + "bleed_rate": 50, "vision_day": 2, "vision_night": 2, "harvest": "exempt", "special_attacks": [ [ "RANGED_PULL", 20 ], [ "SMASH", 20 ] ], - "death_function": [ "GAS" ], + "death_function": { "message": "A %s explodes!", "effect": { "id": "death_gas", "hit_self": true }, "corpse_type": "NO_CORPSE" }, "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "POISON", "CLIMBS", "NO_BREATHE", "IMMOBILE", "RANGED_ATTACKER" ] }, { @@ -293,8 +296,8 @@ "armor_bash": 25, "armor_cut": 25, "armor_bullet": 20, + "bleed_rate": 50, "harvest": "exempt", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "IMMOBILE", "WARM", "POISON", "IMMOBILE", "NO_BREATHE", "FILTHY" ] }, { @@ -318,8 +321,8 @@ "armor_bash": 15, "armor_cut": 15, "armor_bullet": 10, + "bleed_rate": 0, "harvest": "exempt", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "IMMOBILE", "WARM", "POISON", "IMMOBILE", "NO_BREATHE", "FILTHY" ] } ] diff --git a/data/json/monsters/zed_lab.json b/data/json/monsters/zed_lab.json index 2022c945d063e..6006681666c71 100644 --- a/data/json/monsters/zed_lab.json +++ b/data/json/monsters/zed_lab.json @@ -29,7 +29,6 @@ "path_settings": { "max_dist": 5 }, "special_attacks": [ [ "scratch", 20 ] ], "death_drops": "mon_zombie_scientist_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "upgrades": { "half_life": 28, "into_group": "GROUP_ZOMBIE_UPGRADE" }, "flags": [ @@ -81,7 +80,6 @@ "harvest": "zombie", "special_attacks": [ [ "GRAB", 10 ], [ "scratch", 10 ] ], "death_drops": "mon_zombie_labsecurity_death_drops", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 28, "into_group": "GROUP_SOLDIER_UPGRADE" }, "burn_into": "mon_zombie_scorched", "flags": [ @@ -139,7 +137,7 @@ } ], "death_drops": "phase_zombie_death_drops", - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "GROUP_BASH", "NOGIB", "POISON", "FILTHY", "STUN_IMMUNE" ] }, { @@ -156,6 +154,7 @@ "armor_bash": 40, "armor_cut": 40, "armor_bullet": 30, + "bleed_rate": 50, "vision_night": 5, "luminance": 16, "special_attacks": [ diff --git a/data/json/monsters/zed_misc.json b/data/json/monsters/zed_misc.json index afd33a3c5ed05..655ddb00596f0 100644 --- a/data/json/monsters/zed_misc.json +++ b/data/json/monsters/zed_misc.json @@ -23,6 +23,7 @@ "armor_bash": 12, "armor_cut": 2, "armor_bullet": 1, + "bleed_rate": 0, "vision_night": 7, "harvest": "zombie", "special_attacks": [ @@ -36,7 +37,6 @@ "monster_message": "Some of the pustules pop, and the frog mother opens her mouth and vomits tadpoles!" } ], - "death_function": [ "NORMAL" ], "regenerates": 40, "regen_morale": true, "flags": [ @@ -81,7 +81,11 @@ "vision_night": 7, "harvest": "exempt", "special_attacks": [ { "type": "leap", "cooldown": 10, "move_cost": 0, "max_range": 4, "min_consider_range": 2 }, [ "GRAB", 1 ] ], - "death_function": [ "ACID", "MELT" ], + "death_function": { + "message": "The %s's body melts away.", + "effect": { "id": "death_acid", "hit_self": true }, + "corpse_type": "NO_CORPSE" + }, "flags": [ "SEES", "HEARS", "SMELLS", "KEENNOSE", "STUMBLES", "WARM", "POISON", "GRABS", "NO_BREATHE", "FILTHY" ] }, { @@ -109,6 +113,7 @@ "armor_bash": 5, "armor_cut": 2, "armor_bullet": 2, + "bleed_rate": 0, "vision_day": 15, "vision_night": 3, "harvest": "zombie", @@ -125,7 +130,6 @@ [ "GRAB", 4 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", @@ -173,7 +177,6 @@ "special_attacks": [ [ "GRAB", 7 ], [ "scratch", 20 ] ], "//4": "Removed Bite attack to reflect damage to mouth.", "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "upgrades": { "half_life": 8, "into": "mon_zombie_ears" }, "flags": [ @@ -215,11 +218,11 @@ "armor_bash": 4, "armor_cut": 6, "armor_bullet": 5, + "bleed_rate": 50, "vision_night": 4, "harvest": "zombie", "special_attacks": [ [ "SMASH", 30 ], [ "GRAB", 7 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_fiend", "upgrades": { "half_life": 21, "into_group": "GROUP_ZOMBIE_BRUTE" }, "fungalize_into": "mon_zombie_fungus", @@ -266,11 +269,11 @@ "armor_cut": 14, "armor_bullet": 8, "armor_stab": 8, + "bleed_rate": 50, "vision_night": 3, "harvest": "zombie", "special_attacks": [ [ "SMASH", 30 ], [ "BIO_OP_TAKEDOWN", 20 ], [ "RANGED_PULL", 20 ], [ "GRAB_DRAG", 10 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_fiend", "flags": [ "SEES", @@ -315,12 +318,12 @@ "armor_bash": 8, "armor_cut": 5, "armor_bullet": 4, + "bleed_rate": 0, "vision_day": 5, "vision_night": 40, "harvest": "zombie", "special_attacks": [ [ "SMASH", 40 ], [ "STRETCH_ATTACK", 20 ], [ "LONGSWIPE", 20 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_fiend", "flags": [ "SEES", @@ -361,13 +364,13 @@ "melee_dice": 2, "melee_dice_sides": 4, "melee_cut": 0, + "bleed_rate": 50, "vision_day": 7, "vision_night": 4, "harvest": "zombie", "special_attacks": [ [ "GRAB", 6 ], [ "scratch", 20 ] ], "//3": "Removed Bite as this creature does not have a 'mouth'.", "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "upgrades": { "half_life": 28, "into": "mon_zombie_skull" }, "flags": [ @@ -408,12 +411,12 @@ "melee_dice_sides": 4, "melee_cut": 0, "dodge": 1, + "bleed_rate": 50, "vision_day": 30, "vision_night": 3, "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "scratch", 20 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "upgrades": { "half_life": 14, "into_group": "GROUP_ZOMBIE_GRAB" }, "fungalize_into": "mon_zombie_fungus", @@ -455,12 +458,12 @@ "melee_dice_sides": 5, "melee_cut": 0, "dodge": 2, + "bleed_rate": 50, "vision_day": 30, "vision_night": 5, "harvest": "zombie", "special_attacks": [ [ "RANGED_PULL", 20 ], [ "GRAB_DRAG", 3 ], { "type": "bite", "cooldown": 5 } ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "fungalize_into": "mon_zombie_fungus", "flags": [ @@ -505,11 +508,16 @@ "armor_cut": 4, "armor_bullet": 10, "armor_stab": 10, + "bleed_rate": 0, "vision_day": 30, "vision_night": 3, "harvest": "zombie", "special_attacks": [ [ "STRETCH_BITE", 10 ], [ "STRETCH_ATTACK", 5 ] ], - "death_function": [ "BLOBSPLIT" ], + "death_function": { + "message": "The %s splits in two!", + "corpse_type": "NO_CORPSE", + "effect": { "id": "death_blobsplit", "hit_self": true } + }, "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "BASHES", "GROUP_BASH", "POISON", "NO_BREATHE", "FILTHY" ] }, { @@ -537,12 +545,12 @@ "armor_bash": 8, "armor_cut": 12, "armor_bullet": 10, + "bleed_rate": 0, "vision_day": 83, "vision_night": 4, "harvest": "zombie", "special_attacks": [ [ "SMASH", 20 ] ], "death_drops": "mon_zombie_hulk_death_drops", - "death_function": [ "NORMAL" ], "fungalize_into": "mon_zombie_fungus", "flags": [ "SEES", @@ -582,6 +590,7 @@ "melee_dice_sides": 4, "melee_cut": 2, "dodge": 3, + "bleed_rate": 50, "vision_night": 5, "harvest": "zombie", "special_attacks": [ @@ -594,7 +603,6 @@ } ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "upgrades": { "half_life": 28, "into": "mon_zombie_predator" }, "fungalize_into": "mon_zombie_fungus", @@ -630,7 +638,7 @@ "harvest": "zombie", "special_attacks": [ [ "JACKSON", 0 ] ], "death_drops": "jackson_drops", - "death_function": [ "JACKSON" ], + "death_function": { "message": "The music stops!", "effect": { "id": "death_jackson", "hit_self": true }, "corpse_type": "NO_CORPSE" }, "flags": [ "SEES", "SMELLS", "WARM", "BASHES", "NO_BREATHE", "POISON", "FILTHY" ] }, { @@ -658,6 +666,7 @@ "armor_bash": 8, "armor_cut": 10, "armor_bullet": 8, + "bleed_rate": 0, "vision_day": 25, "vision_night": 5, "harvest": "zombie", @@ -675,7 +684,6 @@ [ "GRAB_DRAG", 10 ] ], "death_drops": "mon_zombie_swimmer_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", @@ -720,6 +728,7 @@ "armor_bash": 2, "armor_cut": 2, "armor_bullet": 2, + "bleed_rate": 0, "vision_day": 50, "vision_night": 5, "harvest": "zombie", @@ -727,7 +736,6 @@ "special_attacks": [ [ "UPGRADE", 10 ] ], "anger_triggers": [ "HURT", "PLAYER_CLOSE", "PLAYER_WEAK" ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", @@ -768,6 +776,7 @@ "melee_dice_sides": 6, "melee_cut": 2, "dodge": 2, + "bleed_rate": 0, "vision_day": 50, "vision_night": 5, "harvest": "zombie", @@ -775,7 +784,6 @@ "special_attacks": [ [ "RESURRECT", 0 ] ], "anger_triggers": [ "HURT", "PLAYER_CLOSE", "PLAYER_WEAK" ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", @@ -801,7 +809,10 @@ "description": "At first this creature looks like nothing more than a grotesque and oleaginous husk, bloated and punctured by jet-black pustules. When approached, its glowing red eyes and an aching grin take form; its skin tears and its guts teem with unmatched fecundity, as its gaze inspires fear of nothing less than cosmic, inhuman ecstasy.", "copy-from": "mon_zombie_necro", "diff": 25, - "death_function": [ "NECRO_BOOMER" ] + "death_function": { + "effect": { "id": "necro_boomer_death", "hit_self": true }, + "message": "The %s lets out an unholy screech, and the corpses around it stir." + } }, { "id": "mon_zombie_runner", @@ -837,7 +848,6 @@ } ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "upgrades": { "half_life": 20, "into": "mon_zombie_hunter" }, "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "PUSH_MON", "FILTHY" ] @@ -867,6 +877,7 @@ "armor_bash": 5, "armor_cut": 5, "armor_bullet": 4, + "bleed_rate": 0, "vision_day": 45, "vision_night": 15, "harvest": "zombie", @@ -881,7 +892,6 @@ { "id": "impale" } ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "PUSH_MON", "FILTHY" ] }, @@ -908,12 +918,12 @@ "melee_dice_sides": 4, "melee_cut": 5, "dodge": 2, + "bleed_rate": 50, "vision_day": 50, "vision_night": 8, "harvest": "zombie", "special_attacks": [ [ "SHRIEK_ALERT", 20 ], [ "SHRIEK_STUN", 1 ], [ "scratch", 20 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", "KEENNOSE", "STUMBLES", "WARM", "BASHES", "GROUP_BASH", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ] }, @@ -943,7 +953,6 @@ "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "GRAB", 7 ], [ "scratch", 20 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 28, "into_group": "GROUP_ZOMBIE_SHADY_UPGRADES" }, "burn_into": "mon_zombie_scorched", "flags": [ @@ -991,7 +1000,6 @@ "anger_triggers": [ "STALK", "PLAYER_WEAK", "HURT", "PLAYER_CLOSE" ], "fear_triggers": [ "FIRE" ], "death_drops": { "groups": [ [ "shia_stuff", 1 ] ] }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "WARM", "BASHES", "POISON", "NO_BREATHE", "PATH_AVOID_DANGER_2", "PRIORITIZE_TARGETS", "FILTHY" ] }, { @@ -1022,7 +1030,6 @@ "harvest": "zombie", "special_attacks": [ [ "SHRIEK", 10 ], [ "GRAB", 7 ], [ "scratch", 20 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "fungalize_into": "mon_zombie_fungus", "upgrades": { "half_life": 10, "into": "mon_zombie_screecher" }, @@ -1066,12 +1073,12 @@ "armor_bash": 5, "armor_cut": 3, "armor_bullet": 2, + "bleed_rate": 0, "vision_day": 25, "vision_night": 5, "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5, "min_mul": 0.7 }, [ "GRAB", 6 ], [ "scratch", 15 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "HEARS", @@ -1112,12 +1119,13 @@ "melee_cut": 2, "dodge": 4, "armor_fire": 5, + "bleed_rate": 50, "vision_day": 50, "vision_night": 3, "harvest": "exempt", "emit_fields": [ { "emit_id": "emit_smoke_stream", "delay": "1 s" } ], "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "scratch", 15 ] ], - "death_function": [ "SMOKEBURST" ], + "death_function": { "effect": { "id": "death_smokeburst", "hit_self": true }, "message": "A %s explode!" }, "fungalize_into": "mon_zombie_smoker_fungus", "upgrades": { "half_life": 28, "into": "mon_smoker_brute" }, "flags": [ @@ -1160,6 +1168,7 @@ "armor_cut": 8, "armor_stab": 8, "armor_bullet": 10, + "bleed_rate": 50, "dodge": 7, "armor_fire": 5, "vision_day": 30, @@ -1167,7 +1176,7 @@ "harvest": "exempt", "emit_fields": [ { "emit_id": "emit_smoke_stream", "delay": "1 s" } ], "special_attacks": [ [ "SMASH", 30 ], { "type": "bite", "cooldown": 5 }, [ "scratch", 15 ], [ "RANGED_PULL", 20 ], [ "GRAB_DRAG", 10 ] ], - "death_function": [ "SMOKEBURST" ], + "death_function": { "effect": { "id": "death_smokeburst", "hit_self": true }, "message": "A %s explode!" }, "flags": [ "SEES", "HEARS", @@ -1211,7 +1220,6 @@ "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "GRAB", 7 ], [ "scratch", 20 ] ], "death_drops": "mon_zombie_swimmer_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "fungalize_into": "mon_zombie_fungus", "upgrades": { "half_life": 14, "into": "mon_zombie_swimmer" }, @@ -1257,7 +1265,6 @@ "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "GRAB", 7 ], [ "scratch", 20 ] ], "death_drops": "mon_zombie_swimmer_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "fungalize_into": "mon_zombie_fungus", "upgrades": { "half_life": 28, "into": "mon_zombie_mancroc" }, @@ -1309,7 +1316,6 @@ "fungalize_into": "mon_zombie_fungus", "special_attacks": [ [ "PULL_METAL_WEAPON", 25 ], { "type": "bite", "cooldown": 20 } ], "death_drops": "mon_zombie_technician_death_drops", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -1356,7 +1362,6 @@ "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 20 } ], "death_drops": "mon_zombie_miner_death_drops", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "BASHES", "GROUP_BASH", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ] }, { @@ -1383,12 +1388,12 @@ "armor_bash": 2, "armor_cut": 4, "armor_bullet": 3, + "bleed_rate": 50, "vision_night": 5, "harvest": "zombie_thorny", "attack_effs": [ { "id": "paralyzepoison", "duration": 33 } ], "special_attacks": [ [ "GRAB", 7 ], [ "scratch", 20 ], [ "PARA_STING", 30 ] ], "death_drops": "mon_zombie_thorny_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", diff --git a/data/json/monsters/zed_radiation.json b/data/json/monsters/zed_radiation.json index 1941df0cf89bf..1a787a7b9f444 100644 --- a/data/json/monsters/zed_radiation.json +++ b/data/json/monsters/zed_radiation.json @@ -24,12 +24,13 @@ "armor_bash": 6, "armor_cut": 6, "armor_bullet": 5, + "bleed_rate": 0, "vision_day": 50, "vision_night": 3, "harvest": "zombie", "special_attacks": [ [ "LONGSWIPE", 8 ], { "id": "scratch", "damage_max_instance": [ { "damage_type": "cut", "amount": 21 } ] } ], "death_drops": { "groups": [ [ "vault_wanderer", 1 ] ] }, - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "GROUP_BASH", "NOGIB", "POISON", "FILTHY" ] }, { @@ -57,12 +58,13 @@ "armor_bash": 4, "armor_cut": 4, "armor_bullet": 3, + "bleed_rate": 50, "vision_day": 50, "vision_night": 3, "harvest": "zombie", "special_attacks": [ [ "LUNGE", 20 ] ], "death_drops": { "groups": [ [ "vault_wanderer", 3 ] ] }, - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "GROUP_BASH", "NOGIB", "POISON", "FILTHY" ] }, { @@ -90,13 +92,14 @@ "armor_bash": 5, "armor_cut": 5, "armor_bullet": 4, + "bleed_rate": 50, "vision_day": 50, "vision_night": 3, "luminance": 8, "harvest": "zombie", "special_attacks": [ [ "LUNGE", 15 ] ], "death_drops": { "groups": [ [ "vault_wanderer", 3 ] ] }, - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "GROUP_BASH", "NOGIB", "POISON", "FILTHY" ] }, { @@ -124,13 +127,14 @@ "armor_bash": 6, "armor_cut": 6, "armor_bullet": 5, + "bleed_rate": 50, "vision_day": 50, "vision_night": 3, "luminance": 16, "harvest": "zombie", "special_attacks": [ [ "LUNGE", 10 ] ], "death_drops": { "groups": [ [ "vault_wanderer", 3 ] ] }, - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "GROUP_BASH", "NOGIB", "POISON", "FILTHY" ] }, { @@ -158,13 +162,14 @@ "armor_bash": 8, "armor_cut": 8, "armor_bullet": 6, + "bleed_rate": 50, "vision_day": 50, "vision_night": 3, "luminance": 32, "harvest": "zombie", "special_attacks": [ [ "LUNGE", 5 ] ], "death_drops": { "groups": [ [ "vault_wanderer", 3 ] ] }, - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "GROUP_BASH", "NOGIB", "POISON", "FILTHY" ] } ] diff --git a/data/json/monsters/zed_skeletal.json b/data/json/monsters/zed_skeletal.json index f3c08171c2590..bf8f65955d53a 100644 --- a/data/json/monsters/zed_skeletal.json +++ b/data/json/monsters/zed_skeletal.json @@ -25,13 +25,13 @@ "armor_bullet": 24, "armor_stab": 30, "armor_acid": 3, + "bleed_rate": 50, "vision_day": 30, "vision_night": 3, "harvest": "mr_bones", "special_attacks": [ [ "scratch", 10 ], { "type": "bite", "cooldown": 5 } ], "upgrades": { "half_life": 15, "into": "mon_skeleton_brute" }, "death_drops": "default_zombie_clothes", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "HARDTOSHOOT", "REVIVES", "NO_BREATHE", "POISON", "FILTHY" ] }, { @@ -61,6 +61,7 @@ "armor_bullet": 30, "armor_bash": 12, "armor_acid": 1, + "bleed_rate": 0, "vision_day": 35, "vision_night": 3, "harvest": "mr_bones", @@ -70,7 +71,6 @@ ], "upgrades": { "half_life": 12, "into": "mon_skeleton_hulk" }, "death_drops": "default_zombie_clothes", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "HARDTOSHOOT", "REVIVES", "NO_BREATHE", "POISON", "FILTHY" ] }, { @@ -101,12 +101,12 @@ "armor_bullet": 30, "armor_stab": 30, "armor_acid": 3, + "bleed_rate": 0, "vision_day": 30, "vision_night": 3, - "harvest": "CBM_CIV", + "harvest": "mr_bones", "special_attacks": [ [ "scratch", 10 ], { "type": "bite", "cooldown": 5 }, [ "SHOCKSTORM", 25 ] ], "death_drops": "default_zombie_clothes", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "ELECTRIC", "REVIVES", "NO_BREATHE", "POISON", "FILTHY" ] }, { @@ -134,6 +134,7 @@ "armor_bash": 20, "armor_cut": 45, "armor_bullet": 36, + "bleed_rate": 0, "vision_day": 50, "vision_night": 4, "harvest": "mr_bones", @@ -144,7 +145,6 @@ { "id": "scratch", "damage_max_instance": [ { "damage_type": "cut", "amount": 23, "armor_multiplier": 0.8 } ] } ], "death_drops": "mon_zombie_hulk_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_fiend", "flags": [ "SEES", diff --git a/data/json/monsters/zed_soldiers.json b/data/json/monsters/zed_soldiers.json index 601d3c93b765b..fb3d16eb90ae9 100644 --- a/data/json/monsters/zed_soldiers.json +++ b/data/json/monsters/zed_soldiers.json @@ -30,7 +30,6 @@ "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5, "min_mul": 0.8 } ], "death_drops": "mon_zombie_soldier_death_drops", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 28, "into_group": "GROUP_SOLDIER_UPGRADE" }, "burn_into": "mon_zombie_scorched", "fungalize_into": "mon_zombie_fungus", @@ -62,6 +61,7 @@ "armor_bash": 12, "armor_cut": 25, "armor_bullet": 20, + "bleed_rate": 50, "vision_day": 30, "vision_night": 35, "harvest": "zombie", @@ -73,7 +73,6 @@ } ], "death_drops": "mon_zombie_soldier_death_drops", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 38, "into": "mon_zombie_soldier_blackops_2" }, "burn_into": "mon_zombie_scorched", "flags": [ @@ -98,6 +97,7 @@ "description": "Fragments of visible uniform hint that this monstrosity was once a soldier. Anything human is invisible, hidden inside a sheath of living shadow. It moves with preternatural fluidity and grace.", "copy-from": "mon_zombie_soldier_blackops_1", "looks_like": "mon_zombie_soldier_blackops_1", + "bleed_rate": 0, "relative": { "hp": 20, "speed": 10, "melee_skill": 1, "dodge": 1, "vision_night": 15 }, "delete": { "upgrades": { "half_life": 38, "into": "mon_zombie_soldier_blackops_2" } }, "extend": { @@ -120,6 +120,7 @@ "copy-from": "mon_zombie_soldier", "looks_like": "mon_zombie_soldier", "diff": 20, + "bleed_rate": 50, "delete": { "upgrades": { "half_life": 28, "into_group": "GROUP_SOLDIER_UPGRADE" } }, "relative": { "hp": 20, "speed": 10, "melee_skill": 1, "vision_day": 10, "vision_night": 10 }, "extend": { @@ -138,7 +139,11 @@ "ranges": [ [ 2, 20, "DEFAULT" ] ] } ], - "death_function": [ "ACID" ], + "death_function": { + "message": "The %s's body dissolves into acid.", + "effect": { "id": "death_acid", "hit_self": true }, + "corpse_type": "NO_CORPSE" + }, "flags": [ "ACIDPROOF", "ACID_BLOOD" ] } }, @@ -150,6 +155,7 @@ "copy-from": "mon_zombie_soldier", "looks_like": "mon_zombie_soldier", "diff": 20, + "bleed_rate": 50, "delete": { "upgrades": { "half_life": 28, "into_group": "GROUP_SOLDIER_UPGRADE" } }, "relative": { "hp": 40, "speed": -10, "melee_skill": 2, "armor_bash": 5 }, "extend": { @@ -169,7 +175,11 @@ "ranges": [ [ 2, 8, "DEFAULT" ] ] } ], - "death_function": [ "ACID" ], + "death_function": { + "message": "The %s's body dissolves into acid.", + "effect": { "id": "death_acid", "hit_self": true }, + "corpse_type": "NO_CORPSE" + }, "flags": [ "ACIDPROOF", "ACID_BLOOD" ] } }, @@ -199,6 +209,7 @@ "armor_bash": 20, "armor_cut": 30, "armor_bullet": 24, + "bleed_rate": 50, "vision_day": 30, "vision_night": 5, "harvest": "zombie_kevlar", @@ -207,7 +218,6 @@ [ "SMASH", 30 ] ], "death_drops": "mon_zombie_kevlar_death_drops", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 42, "into": "mon_zombie_kevlar_2" }, "burn_into": "mon_zombie_scorched", "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "BASHES", "GROUP_BASH", "POISON", "NO_BREATHE", "REVIVES", "PUSH_MON", "FILTHY" ] @@ -238,6 +248,7 @@ "armor_bash": 30, "armor_cut": 50, "armor_bullet": 40, + "bleed_rate": 0, "vision_day": 50, "vision_night": 10, "harvest": "zombie_kevlar", @@ -247,7 +258,6 @@ [ "SMASH", 20 ] ], "death_drops": "mon_zombie_kevlar_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "BASHES", "GROUP_BASH", "POISON", "NO_BREATHE", "REVIVES", "PUSH_MON", "FILTHY" ] }, @@ -282,7 +292,6 @@ "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "GRAB", 7 ], [ "scratch", 20 ] ], "death_drops": "mon_zombie_military_pilot_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", @@ -299,6 +308,17 @@ "FILTHY" ] }, + { + "id": "mon_zombie_milbase_personnel", + "type": "MONSTER", + "name": { "str": "uniformed zombie" }, + "description": "This undead soldier is adorned in standard military fatigues. It carries itself rather steadily for a zombie.", + "copy-from": "mon_zombie_military_pilot", + "looks_like": "mon_zombie", + "delete": { "flags": [ "NOHEAD" ] }, + "upgrades": { "half_life": 18, "into_group": "GROUP_ZOMBIE_UPGRADE" }, + "death_drops": "mon_zombie_milbase_personnel_death_drops" + }, { "id": "mon_zombie_flamer", "type": "MONSTER", @@ -331,7 +351,7 @@ "harvest": "zombie", "starting_ammo": { "pressurized_tank": 1000 }, "death_drops": { "subtype": "collection", "groups": [ [ "mon_zombie_soldier_death_drops", 100 ], [ "mon_zombie_flamer", 100 ] ] }, - "death_function": [ "FIREBALL" ], + "death_function": { "effect": { "id": "death_fireball", "hit_self": true } }, "burn_into": "mon_zombie_scorched", "flags": [ "SEES", @@ -376,11 +396,11 @@ "armor_bullet": 51, "armor_acid": 20, "armor_fire": 20, + "bleed_rate": 0, "vision_day": 30, "vision_night": 3, "harvest": "zombie", "death_drops": "mon_zombie_armored_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "BASHES", "GROUP_BASH", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ] }, @@ -418,7 +438,6 @@ "special_attacks": [ [ "BIO_OP_TAKEDOWN", 20 ] ], "special_when_hit": [ "ZAPBACK", 75 ], "death_drops": "mon_zombie_bio_op_death_drops", - "death_function": [ "NORMAL" ], "fungalize_into": "mon_zombie_fungus", "flags": [ "SEES", diff --git a/data/json/monsters/zed_survivor.json b/data/json/monsters/zed_survivor.json index e6b3913ff5ea2..b3f147d91fd18 100644 --- a/data/json/monsters/zed_survivor.json +++ b/data/json/monsters/zed_survivor.json @@ -36,7 +36,6 @@ { "id": "scratch", "damage_max_instance": [ { "damage_type": "cut", "amount": 16 } ] } ], "death_drops": "mon_zombie_survivor_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "fungalize_into": "mon_zombie_fungus", "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "BASHES", "GROUP_BASH", "POISON", "NO_BREATHE", "REVIVES", "PUSH_MON", "FILTHY" ] diff --git a/data/json/mutations/mutation_ordering.json b/data/json/mutations/mutation_ordering.json index ef971db43e08c..1e243ed177ac3 100644 --- a/data/json/mutations/mutation_ordering.json +++ b/data/json/mutations/mutation_ordering.json @@ -64,6 +64,8 @@ "LIGHT_FUR", "LUPINE_FUR", "LYNX_FUR", + "PATCHSKIN1", + "PATCHSKIN2", "PLANTSKIN", "SCALES", "SKIN_ROUGH", diff --git a/data/json/mutations/mutations.json b/data/json/mutations/mutations.json index f9b79d68c349a..e1dea797f3933 100644 --- a/data/json/mutations/mutations.json +++ b/data/json/mutations/mutations.json @@ -255,7 +255,7 @@ "description": "You're just generally quick! You get a 10% bonus to action points.", "starting_trait": true, "category": [ "FISH", "BIRD", "INSECT", "TROGLOBITE", "CHIMERA", "RAPTOR", "MOUSE" ], - "speed_modifier": 1.1 + "enchantments": [ { "condition": "ALWAYS", "values": [ { "value": "SPEED", "multiply": 0.1 } ] } ] }, { "type": "mutation", @@ -458,7 +458,8 @@ "description": "You have a flexible mind, allowing you to learn skills much faster than others. Note that this only applies to real-world experience, not to skill gain from other sources like books.", "starting_trait": true, "valid": false, - "cancels": [ "SLOWLEARNER" ] + "cancels": [ "SLOWLEARNER" ], + "enchantments": [ { "condition": "ALWAYS", "values": [ { "value": "LEARNING_FOCUS", "add": 15 } ] } ] }, { "type": "mutation", @@ -488,11 +489,11 @@ "name": { "str": "Good Memory" }, "points": 3, "description": "You have an exceptional memory, and find it easy to remember things. Your skills will erode slightly slower than usual, and you can remember more terrain.", - "map_memory_capacity_multiplier": 2, "skill_rust_multiplier": 1.33, "starting_trait": true, "valid": false, - "cancels": [ "FORGETFUL" ] + "cancels": [ "FORGETFUL" ], + "enchantments": [ { "condition": "ALWAYS", "values": [ { "value": "MAP_MEMORY", "multiply": 1 } ] } ] }, { "type": "mutation", @@ -1051,7 +1052,8 @@ "description": "You are slow to grasp new ideas, and thus learn things more slowly than others. Note that this only applies to real-world experience, not to skill gain from other sources like books.", "starting_trait": true, "valid": false, - "cancels": [ "FASTLEARNER" ] + "cancels": [ "FASTLEARNER" ], + "enchantments": [ { "condition": "ALWAYS", "values": [ { "value": "LEARNING_FOCUS", "add": -15 } ] } ] }, { "type": "mutation", @@ -1195,11 +1197,11 @@ "points": -3, "description": "You have a hard time remembering things. Your skills will erode slightly faster than usual, and you can remember less terrain.", "social_modifiers": { "lie": -5 }, - "map_memory_capacity_multiplier": 0.5, "skill_rust_multiplier": 0.66, "starting_trait": true, "category": [ "BEAST", "MEDICAL", "CHIMERA", "MOUSE", "INSECT" ], - "cancels": [ "GOODMEMORY" ] + "cancels": [ "GOODMEMORY" ], + "enchantments": [ { "condition": "ALWAYS", "values": [ { "value": "MAP_MEMORY", "multiply": -0.5 } ] } ] }, { "type": "mutation", @@ -1352,7 +1354,7 @@ "starting_trait": true, "social_modifiers": { "intimidate": -10 }, "valid": false, - "cancels": [ "PSYCHOPATH", "KILLER", "PRED1", "PRED2", "PRED3", "PRED4" ] + "cancels": [ "PSYCHOPATH", "KILLER", "PRED1", "PRED2", "PRED3", "PRED4", "PACK_HUNTER" ] }, { "type": "mutation", @@ -1489,7 +1491,7 @@ "ugliness": 1, "description": "Your skin is slightly rough. This has no gameplay effect.", "types": [ "SKIN" ], - "changes_to": [ "SCALES", "FEATHERS", "LIGHTFUR", "CHITIN", "PLANTSKIN" ], + "changes_to": [ "SCALES", "FEATHERS", "LIGHTFUR", "CHITIN", "PLANTSKIN", "PATCHSKIN1" ], "category": [ "LIZARD" ] }, { @@ -1917,7 +1919,7 @@ "bash": 3 } ], - "speed_modifier": 0.8 + "enchantments": [ { "condition": "ALWAYS", "values": [ { "value": "SPEED", "multiply": -0.2 } ] } ] }, { "type": "mutation", @@ -1952,7 +1954,7 @@ "bash": 5 } ], - "speed_modifier": 0.8 + "enchantments": [ "ENCH_TRAIT_MSKIN" ] }, { "type": "mutation", @@ -1963,7 +1965,7 @@ "ugliness": 3, "description": "A set of flexible green scales has grown to cover your body, acting as natural armor. Somewhat reduces wet effects.", "types": [ "SKIN" ], - "category": [ "CHIMERA", "RAPTOR", "LIZARD" ], + "category": [ "RAPTOR", "LIZARD" ], "prereqs": [ "SKIN_ROUGH" ], "changes_to": [ "THICK_SCALES", "SLEEK_SCALES" ], "movecost_swim_modifier": 0.9, @@ -2108,7 +2110,7 @@ "bodytemp_modifiers": [ 250, 500 ], "bodytemp_sleep": 100, "description": "Light fur has grown to cover your entire body, providing slight protection from cold.", - "category": [ "CHIMERA", "SPIDER", "MOUSE" ], + "category": [ "SPIDER", "MOUSE" ], "types": [ "SKIN" ], "prereqs": [ "SKIN_ROUGH" ], "changes_to": [ "FUR", "FELINE_FUR", "LUPINE_FUR", "URSINE_FUR", "CHITIN_FUR" ] @@ -2203,6 +2205,73 @@ "category": [ "FELINE" ], "armor": [ { "parts": [ "head", "mouth" ], "bash": 1 } ] }, + { + "type": "mutation", + "id": "PATCHSKIN1", + "name": { "str": "Patchwork Skin" }, + "points": 2, + "visibility": 10, + "ugliness": 6, + "bodytemp_modifiers": [ 125, 250 ], + "bodytemp_sleep": 50, + "description": "Your skin has mutated into an amalgamation of fur and scales.", + "movecost_swim_modifier": 0.95, + "wet_protection": [ + { "part": "head", "ignored": 2 }, + { "part": "leg_l", "ignored": 5 }, + { "part": "leg_r", "ignored": 5 }, + { "part": "foot_l", "ignored": 2 }, + { "part": "foot_r", "ignored": 2 }, + { "part": "arm_l", "ignored": 5 }, + { "part": "arm_r", "ignored": 5 }, + { "part": "hand_l", "ignored": 1 }, + { "part": "hand_r", "ignored": 1 }, + { "part": "torso", "ignored": 10 } + ], + "armor": [ + { + "parts": [ "torso", "head", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r", "mouth" ], + "cut": 1 + } + ], + "category": [ "CHIMERA" ], + "types": [ "SKIN" ], + "prereqs": [ "SKIN_ROUGH" ], + "changes_to": [ "PATCHSKIN2" ] + }, + { + "type": "mutation", + "id": "PATCHSKIN2", + "name": { "str": "Thickened Patchwork Skin" }, + "points": 4, + "visibility": 10, + "ugliness": 8, + "bodytemp_modifiers": [ 250, 500 ], + "bodytemp_sleep": 100, + "description": "Your skin has mutated into an amalgamation of thickened fur and scales.", + "movecost_swim_modifier": 0.9, + "wet_protection": [ + { "part": "head", "ignored": 3 }, + { "part": "leg_l", "ignored": 10 }, + { "part": "leg_r", "ignored": 10 }, + { "part": "foot_l", "ignored": 3 }, + { "part": "foot_r", "ignored": 3 }, + { "part": "arm_l", "ignored": 9 }, + { "part": "arm_r", "ignored": 9 }, + { "part": "hand_l", "ignored": 2 }, + { "part": "hand_r", "ignored": 2 }, + { "part": "torso", "ignored": 20 } + ], + "armor": [ + { + "parts": [ "torso", "head", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r", "mouth" ], + "cut": 2 + } + ], + "category": [ "CHIMERA" ], + "types": [ "SKIN" ], + "prereqs": [ "PATCHSKIN1" ] + }, { "type": "mutation", "id": "CHITIN", @@ -2847,7 +2916,8 @@ "types": [ "CLAWS" ], "prereqs": [ "NAILS" ], "cancels": [ "ARM_TENTACLES", "ARM_TENTACLES_4", "ARM_TENTACLES_8" ], - "category": [ "LIZARD", "BIRD", "CHIMERA" ] + "category": [ "LIZARD", "BIRD", "CHIMERA" ], + "allowed_items": [ "ALLOWS_TALONS" ] }, { "type": "mutation", @@ -3271,10 +3341,9 @@ "id": "BURROW", "name": { "str": "Burrowing" }, "points": 10, - "consume_time_modifier": 2.0, "valid": false, "purifiable": false, - "description": "Between your claws and teeth, you can tunnel through just about anything.", + "description": "Your tough paws allow you to dig through dirt and rubble with ease.", "prereqs": [ "CLAWS_ST", "PAWS", "PAWS_LARGE" ], "threshreq": [ "THRESH_RAT", "THRESH_LUPINE", "THRESH_URSINE" ], "category": [ "RAT", "LUPINE", "URSINE" ], @@ -3839,7 +3908,7 @@ "prereqs": [ "CARNIVORE", "THRESH_URSINE" ], "prereqs2": [ "PRED2" ], "leads_to": [ "SAPIOVORE" ], - "changes_to": [ "PRED4" ], + "changes_to": [ "PRED4", "PACK_HUNTER" ], "threshreq": [ "THRESH_BEAST", "THRESH_RAPTOR", @@ -3888,6 +3957,22 @@ "category": [ "BEAST", "RAPTOR", "CHIMERA", "URSINE", "LIZARD", "SPIDER" ], "flags": [ "CANNIBAL" ] }, + { + "type": "mutation", + "id": "PACK_HUNTER", + "name": { "str": "Pack Hunter" }, + "points": 4, + "description": "Puny as they may seem, a hunter needs a pack, and some of those hairless bipeds may yet prove some worth. You continue to gain combat skills at an elevated rate, and maintain a level of critical thinking that supports cooperation.", + "social_modifiers": { "intimidate": 4 }, + "valid": false, + "purifiable": false, + "prereqs": [ "CARNIVORE" ], + "prereqs2": [ "PRED3" ], + "cancels": [ "PACIFIST" ], + "threshreq": [ "THRESH_LUPINE" ], + "category": [ "LUPINE" ], + "flags": [ "PRED3" ] + }, { "type": "mutation", "id": "M_DEFENDER", @@ -4194,7 +4279,7 @@ "prereqs": [ "STR_UP", "STR_UP_2", "STR_UP_3", "STR_UP_4" ], "cancels": [ "SMALL", "SMALL2" ], "changes_to": [ "LARGE_OK", "HUGE" ], - "category": [ "URSINE", "CATTLE", "LIZARD" ], + "category": [ "URSINE", "CATTLE", "LIZARD", "CHIMERA" ], "passive_mods": { "str_mod": 2 }, "stomach_size_multiplier": 1.5, "weight_capacity_modifier": 1.05 @@ -4210,10 +4295,10 @@ "prereqs": [ "LARGE" ], "prereqs2": [ "STR_UP", "STR_UP_2", "STR_UP_3", "STR_UP_4" ], "cancels": [ "SMALL", "SMALL2" ], - "threshreq": [ "THRESH_URSINE", "THRESH_CATTLE", "THRESH_LIZARD" ], + "threshreq": [ "THRESH_URSINE", "THRESH_CATTLE", "THRESH_LIZARD", "THRESH_CHIMERA" ], "changes_to": [ "HUGE" ], "leads_to": [ "MUT_TOUGH" ], - "category": [ "URSINE", "CATTLE", "LIZARD" ], + "category": [ "URSINE", "CATTLE", "LIZARD", "CHIMERA" ], "passive_mods": { "str_mod": 2 }, "stomach_size_multiplier": 1.5, "weight_capacity_modifier": 1.05 @@ -4616,7 +4701,7 @@ "threshreq": [ "THRESH_MOUSE" ], "category": [ "MOUSE" ], "stealth_modifier": 40, - "speed_modifier": 1.15, + "enchantments": [ { "condition": "ALWAYS", "values": [ { "value": "SPEED", "multiply": 0.15 } ] } ], "movecost_modifier": 0.75 }, { diff --git a/data/json/npcs/NC_SOLDIER.json b/data/json/npcs/NC_SOLDIER.json index d5e6ccb771832..32254860913cf 100644 --- a/data/json/npcs/NC_SOLDIER.json +++ b/data/json/npcs/NC_SOLDIER.json @@ -149,29 +149,7 @@ { "item": "e_tool", "prob": 15 }, { "item": "chocolate", "prob": 30 }, { "item": "can_beans", "prob": 20 }, - { "item": "mre_chilibeans_box", "prob": 45 }, - { "item": "mre_bbqbeef_box", "prob": 45 }, - { "item": "mre_chickennoodle_box", "prob": 45 }, - { "item": "mre_spaghetti_box", "prob": 45 }, - { "item": "mre_chicken_box", "prob": 45 }, - { "item": "mre_beeftaco_box", "prob": 45 }, - { "item": "mre_beef_box", "prob": 45 }, - { "item": "mre_meatball_box", "prob": 45 }, - { "item": "mre_beefstew_box", "prob": 45 }, - { "item": "mre_chilimac_box", "prob": 45 }, - { "item": "mre_veggy_box", "prob": 45 }, - { "item": "mre_macaronimarinara_box", "prob": 45 }, - { "item": "mre_cheesetort_box", "prob": 45 }, - { "item": "mre_mushroomfettuccine_box", "prob": 45 }, - { "item": "mre_mexicanchickenstew_box", "prob": 45 }, - { "item": "mre_maplesausage_box", "prob": 45 }, - { "item": "mre_ravioli_box", "prob": 45 }, - { "item": "mre_hashbrownbacon_box", "prob": 45 }, - { "item": "mre_lemontuna_box", "prob": 45 }, - { "item": "mre_asianbeef_box", "prob": 45 }, - { "item": "mre_chickenpesto_box", "prob": 45 }, - { "item": "mre_southwestbeef_box", "prob": 45 }, - { "item": "mre_hotdog_box", "prob": 45 }, + { "group": "any_MRE", "count": [ 2, 3 ], "prob": 45 }, { "group": "full_ifak", "prob": 35 }, { "item": "saline", "prob": 10 }, { "item": "con_milk", "prob": 10 }, diff --git a/data/json/npcs/items_generic.json b/data/json/npcs/items_generic.json index 3c112bae478e7..64a3fe75c951b 100644 --- a/data/json/npcs/items_generic.json +++ b/data/json/npcs/items_generic.json @@ -799,29 +799,7 @@ [ "money_bundle", 10 ], [ "moonshine", 5 ], [ "mp3", 10 ], - [ "mre_chilibeans_box", 6 ], - [ "mre_bbqbeef_box", 6 ], - [ "mre_chickennoodle_box", 6 ], - [ "mre_spaghetti_box", 6 ], - [ "mre_chicken_box", 6 ], - [ "mre_beeftaco_box", 6 ], - [ "mre_beef_box", 6 ], - [ "mre_meatball_box", 6 ], - [ "mre_beefstew_box", 6 ], - [ "mre_chilimac_box", 6 ], - [ "mre_veggy_box", 6 ], - [ "mre_macaronimarinara_box", 6 ], - [ "mre_cheesetort_box", 6 ], - [ "mre_mushroomfettuccine_box", 6 ], - [ "mre_mexicanchickenstew_box", 6 ], - [ "mre_maplesausage_box", 6 ], - [ "mre_ravioli_box", 6 ], - [ "mre_hashbrownbacon_box", 6 ], - [ "mre_lemontuna_box", 6 ], - [ "mre_asianbeef_box", 6 ], - [ "mre_chickenpesto_box", 6 ], - [ "mre_southwestbeef_box", 6 ], - [ "mre_hotdog_box", 6 ], + { "group": "any_MRE", "count": [ 1, 3 ], "prob": 20 }, [ "mushroom", 5 ], [ "mustard", 3 ], [ "muzzle_brake", 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 4484feb847eae..ac4999a89bc8c 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 @@ -64,8 +64,7 @@ "items": [ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, { "item": "stanag30", "ammo-item": "556", "charges": 30 }, - { "item": "mre_chilibeans_box" }, - { "item": "mre_chickennoodle_box" } + { "group": "any_MRE", "count": 2 } ] }, { diff --git a/data/json/obsolete.json b/data/json/obsolete.json index 90fd10d28dc38..82c8646ae6964 100644 --- a/data/json/obsolete.json +++ b/data/json/obsolete.json @@ -119,7 +119,6 @@ "name": { "str": "survivor utility belt" }, "weight": "3390 g", "color": "brown", - "covers": [ "torso" ], "symbol": "[", "description": "A custom-built leather utility belt covered with straps and pouches containing many useful hand tools and a sheath to carry a smaller blade. Durable and carefully crafted to be comfortable to wear. Activate to sheathe/draw a weapon.", "price": 50000, @@ -127,8 +126,6 @@ "material": [ "leather", "iron" ], "volume": "4 L", "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY", "WAIST", "OVERSIZE" ], - "coverage": 15, - "encumbrance": 4, "material_thickness": 2, "pocket_data": [ { @@ -154,7 +151,8 @@ [ "SAW_M_FINE", 1 ], [ "WRENCH_FINE", 1 ], [ "SCREW_FINE", 1 ] - ] + ], + "armor": [ { "encumbrance": 4, "coverage": 15, "covers": [ "torso" ] } ] }, { "id": "combination_gun_shotgun_pipe", @@ -1528,5 +1526,26 @@ "price": 10000, "weight": "3000 g", "difficulty": 4 + }, + { + "type": "recipe", + "activity_level": "MODERATE_EXERCISE", + "result": "cable", + "category": "CC_ELECTRONIC", + "subcategory": "CSC_ELECTRONIC_COMPONENTS", + "skill_used": "fabrication", + "skills_required": [ "electronics", 2 ], + "difficulty": 5, + "time": "3 m", + "autolearn": true, + "charges": 1, + "qualities": [ + { "id": "ANVIL", "level": 1 }, + { "id": "HAMMER", "level": 2 }, + { "id": "CHISEL", "level": 3 }, + { "id": "CUT", "level": 1 } + ], + "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "surface_heat", 1, "LIST" ], [ "forge", 1 ], [ "oxy_torch", 1 ] ] ], + "components": [ [ [ "copper", 1 ] ], [ [ "duct_tape", 1 ] ] ] } ] diff --git a/data/json/obsolete_terrains.json b/data/json/obsolete_terrains.json index dc517d80da30e..3660ac84d28f3 100644 --- a/data/json/obsolete_terrains.json +++ b/data/json/obsolete_terrains.json @@ -10,6 +10,9 @@ "bridge_east", "bridge_south", "bridge_west", + "triffid_grove", + "triffid_roots", + "triffid_finale", "fema", "fema_entrance", "fema_1_3", diff --git a/data/json/overmap/map_extras.json b/data/json/overmap/map_extras.json index deabe0dfca879..3a3568af648fc 100644 --- a/data/json/overmap/map_extras.json +++ b/data/json/overmap/map_extras.json @@ -260,7 +260,10 @@ "type": "map_extra", "name": { "str": "Derelict shed" }, "description": "A collapsed shed.", - "generator": { "generator_method": "update_mapgen", "generator_id": "mx_fallen_shed_map" } + "generator": { "generator_method": "update_mapgen", "generator_id": "mx_fallen_shed_map" }, + "sym": "^", + "color": "dark_gray", + "autonote": true }, { "id": "mx_clay_deposit", @@ -299,7 +302,7 @@ "description": "Burned ground is here.", "generator": { "generator_method": "map_extra_function", "generator_id": "mx_burned_ground" }, "sym": ".", - "color": "yellow", + "color": "light_gray", "autonote": true }, { @@ -309,7 +312,7 @@ "description": "Burned ground is here.", "generator": { "generator_method": "map_extra_function", "generator_id": "mx_point_burned_ground" }, "sym": ".", - "color": "yellow", + "color": "light_gray", "autonote": true }, { diff --git a/data/json/overmap/multitile_city_buildings.json b/data/json/overmap/multitile_city_buildings.json index 7819a4433a62d..1cd34ec73777f 100644 --- a/data/json/overmap/multitile_city_buildings.json +++ b/data/json/overmap/multitile_city_buildings.json @@ -3321,6 +3321,16 @@ { "point": [ 0, 0, 2 ], "overmap": "craft_shop_roof_2_north" } ] }, + { + "type": "city_building", + "id": "craft_shop_3", + "locations": [ "land" ], + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "craft_shop_3_north" }, + { "point": [ 0, 0, 1 ], "overmap": "craft_shop_2ndfloor_3_north" }, + { "point": [ 0, 0, 2 ], "overmap": "craft_shop_roof_3_north" } + ] + }, { "type": "city_building", "id": "pool", diff --git a/data/json/overmap/overmap_special/specials.json b/data/json/overmap/overmap_special/specials.json index 5640d574157e7..82696331784f6 100644 --- a/data/json/overmap/overmap_special/specials.json +++ b/data/json/overmap/overmap_special/specials.json @@ -263,7 +263,7 @@ "connections": [ { "point": [ 0, -1, 0 ], "terrain": "road", "existing": true } ], "locations": [ "land", "swamp" ], "city_distance": [ 15, -1 ], - "city_sizes": [ 1, 8 ], + "city_sizes": [ 0, 12 ], "occurrences": [ 0, 2 ], "flags": [ "CLASSIC", "WILDERNESS" ] }, @@ -1244,7 +1244,7 @@ { "type": "overmap_special", "id": "Slime Pit", - "overmaps": [ { "point": [ 0, 0, 0 ], "overmap": "slimepit_down" } ], + "overmaps": [ { "point": [ 0, 0, 0 ], "overmap": "slimepit_top" }, { "point": [ 0, 0, -1 ], "overmap": "slimepit_bottom" } ], "locations": [ "wilderness" ], "city_distance": [ 3, 30 ], "occurrences": [ 0, 3 ], @@ -1289,16 +1289,34 @@ "type": "overmap_special", "id": "Triffid Grove", "overmaps": [ - { "point": [ 0, 0, 0 ], "overmap": "triffid_grove" }, - { "point": [ 0, 0, -1 ], "overmap": "triffid_roots" }, - { "point": [ 0, 0, -2 ], "overmap": "triffid_finale" } + { "point": [ 0, 0, 3 ], "overmap": "triffid_grove_roof_north" }, + { "point": [ 0, 0, 2 ], "overmap": "triffid_grove_z3_north" }, + { "point": [ 0, 0, 1 ], "overmap": "triffid_grove_z2_north" }, + { "point": [ 0, 0, 0 ], "overmap": "triffid_grove_north" }, + { "point": [ 0, 1, 0 ], "overmap": "triffid_field_north" }, + { "point": [ 0, -1, 0 ], "overmap": "triffid_field_north" }, + { "point": [ 1, 0, 0 ], "overmap": "triffid_field_north" }, + { "point": [ -1, 0, 0 ], "overmap": "triffid_field_north" }, + { "point": [ 1, 1, 0 ], "overmap": "triffid_field_north" }, + { "point": [ -1, -1, 0 ], "overmap": "triffid_field_north" }, + { "point": [ -1, 1, 0 ], "overmap": "triffid_field_north" }, + { "point": [ 1, -1, 0 ], "overmap": "triffid_field_north" }, + { "point": [ 0, 0, -1 ], "overmap": "triffid_roots_north" }, + { "point": [ 0, -1, -1 ], "overmap": "triffid_rootss_north" }, + { "point": [ 0, 1, -1 ], "overmap": "triffid_rootsn_north" }, + { "point": [ 1, 0, -1 ], "overmap": "triffid_rootse_north" }, + { "point": [ -1, 0, -1 ], "overmap": "triffid_rootsw_north" }, + { "point": [ 1, 1, -1 ], "overmap": "triffid_rootsen_north" }, + { "point": [ -1, 1, -1 ], "overmap": "triffid_rootsnw_north" }, + { "point": [ -1, -1, -1 ], "overmap": "triffid_rootssw_north" }, + { "point": [ 1, -1, -1 ], "overmap": "triffid_rootsse_north" }, + { "point": [ 0, 0, -2 ], "overmap": "triffid_finale_north" } ], "locations": [ "forest" ], "city_distance": [ 10, -1 ], "occurrences": [ 0, 3 ], "flags": [ "TRIFFID" ], - "rotate": false, - "spawns": { "group": "GROUP_TRIFFID", "population": [ 800, 1300 ], "radius": [ 12, 20 ] } + "spawns": { "group": "GROUP_TRIFFID_OUTER", "population": [ 1000, 1600 ], "radius": [ 12, 20 ] } }, { "type": "overmap_special", @@ -3368,7 +3386,7 @@ "city_distance": [ 3, -1 ], "city_sizes": [ 4, -1 ], "occurrences": [ 75, 100 ], - "flags": [ "UNIQUE" ] + "flags": [ "UNIQUE", "SAFE_AT_WORLDGEN" ] }, { "type": "overmap_special", @@ -3378,7 +3396,7 @@ "city_distance": [ 20, -1 ], "city_sizes": [ 4, -1 ], "occurrences": [ 80, 100 ], - "flags": [ "CLASSIC", "WILDERNESS", "UNIQUE" ] + "flags": [ "CLASSIC", "WILDERNESS", "UNIQUE", "SAFE_AT_WORLDGEN" ] }, { "type": "overmap_special", @@ -3393,7 +3411,7 @@ "city_distance": [ 20, -1 ], "city_sizes": [ 4, -1 ], "occurrences": [ 50, 100 ], - "flags": [ "CLASSIC", "WILDERNESS", "UNIQUE" ] + "flags": [ "CLASSIC", "WILDERNESS", "UNIQUE", "SAFE_AT_WORLDGEN" ] }, { "type": "overmap_special", @@ -3550,7 +3568,7 @@ "city_distance": [ 3, -1 ], "rotate": false, "occurrences": [ 30, 100 ], - "flags": [ "UNIQUE" ] + "flags": [ "UNIQUE", "SAFE_AT_WORLDGEN" ] }, { "type": "overmap_special", @@ -3778,7 +3796,9 @@ { "point": [ 0, 3, 0 ], "overmap": "pond_field_north" }, { "point": [ 1, 3, 0 ], "overmap": "orchard_tree_apple_north" }, { "point": [ 2, 3, 0 ], "overmap": "orchard_tree_apple_north" }, - { "point": [ 3, 3, 0 ], "overmap": "orchard_tree_apple_north" } + { "point": [ 3, 3, 0 ], "overmap": "orchard_tree_apple_north" }, + { "point": [ 0, 0, 1 ], "overmap": "orchard_processing_roof_north" }, + { "point": [ 0, 1, 1 ], "overmap": "orchard_stall_roof_north" } ], "connections": [ { "point": [ -1, 1, 0 ], "terrain": "road", "connection": "local_road", "from": [ 0, 1, 0 ] } ], "locations": [ "wilderness" ], @@ -4497,7 +4517,7 @@ "city_sizes": [ 1, 16 ], "occurrences": [ 33, 100 ], "rotate": false, - "flags": [ "UNIQUE" ] + "flags": [ "UNIQUE", "SAFE_AT_WORLDGEN" ] }, { "type": "overmap_special", @@ -6752,7 +6772,7 @@ "occurrences": [ 35, 100 ], "//": "Inflated chance, effective rate ~19% (n=726)", "connections": [ { "point": [ -1, 15, 0 ], "terrain": "road" } ], - "flags": [ "FARM", "UNIQUE" ] + "flags": [ "FARM", "UNIQUE", "SAFE_AT_WORLDGEN" ] }, { "id": "airliner_crashed", @@ -7427,5 +7447,27 @@ "//": "Low chance to find a matching location, so always try to place it", "occurrences": [ 100, 100 ], "flags": [ "LAB", "UNIQUE" ] + }, + { + "type": "overmap_special", + "id": "o_lightindustry_scen", + "overmaps": [ + { "point": [ 1, 0, 0 ], "overmap": "s_lightindustry_scen_road_0_south" }, + { "point": [ 0, 0, 0 ], "overmap": "s_lightindustry_scen_road_1_south" }, + { "point": [ 1, -1, 0 ], "overmap": "s_lightindustry_scen_00_south" }, + { "point": [ 1, -1, 1 ], "overmap": "s_lightindustry_scen_00_roof_south" }, + { "point": [ 0, -1, 0 ], "overmap": "s_lightindustry_scen_01_south" }, + { "point": [ 0, -1, 1 ], "overmap": "s_lightindustry_scen_01_roof_south" }, + { "point": [ 1, 1, 0 ], "overmap": "s_lightindustry_scen_10_south" }, + { "point": [ 1, 1, 1 ], "overmap": "s_lightindustry_scen_10_roof_south" }, + { "point": [ 0, 1, 0 ], "overmap": "s_lightindustry_scen_11_south" }, + { "point": [ 0, 1, 1 ], "overmap": "s_lightindustry_scen_11_roof_south" } + ], + "connections": [ { "point": [ -1, 0, 0 ], "terrain": "road", "from": [ 0, 0, 0 ] } ], + "locations": [ "wilderness" ], + "city_distance": [ 1, 40 ], + "city_sizes": [ 4, -1 ], + "occurrences": [ 0, 1 ], + "flags": [ "CLASSIC" ] } ] diff --git a/data/json/overmap/overmap_terrain/overmap_terrain.json b/data/json/overmap/overmap_terrain/overmap_terrain.json index 6338ba751a437..383f4bda69ee5 100644 --- a/data/json/overmap/overmap_terrain/overmap_terrain.json +++ b/data/json/overmap/overmap_terrain/overmap_terrain.json @@ -22,6 +22,15 @@ "copy-from": "generic_city_building_no_sidewalk", "extend": { "flags": [ "SIDEWALK" ] } }, + { + "type": "overmap_terrain", + "id": "solid_earth", + "name": "solid earth", + "sym": "#", + "color": "brown", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] + }, { "type": "overmap_terrain", "id": "park", @@ -653,7 +662,16 @@ }, { "type": "overmap_terrain", - "id": [ "lab_subway_vent_shaft-1", "lab_subway_vent_shaft-2", "lab_subway_vent_shaft-3", "lab_subway_vent_shaft-4" ], + "id": "lab_subway_vent_shaft-1", + "name": "ventilation shaft", + "sym": "#", + "color": "brown", + "see_cost": 5, + "flags": [ "NO_ROTATE", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": [ "lab_subway_vent_shaft-2", "lab_subway_vent_shaft-3", "lab_subway_vent_shaft-4" ], "name": "ventilation shaft", "sym": "%", "color": "dark_gray", diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_agricultural.json b/data/json/overmap/overmap_terrain/overmap_terrain_agricultural.json index 5a2e2ccef9845..ce31bf7a15cbe 100644 --- a/data/json/overmap/overmap_terrain/overmap_terrain_agricultural.json +++ b/data/json/overmap/overmap_terrain/overmap_terrain_agricultural.json @@ -317,6 +317,22 @@ "color": "i_light_green", "mondensity": 3 }, + { + "type": "overmap_terrain", + "id": "orchard_processing_roof", + "copy-from": "generic_rural_building", + "name": "orchard processing roof", + "sym": "T", + "color": "i_light_green" + }, + { + "type": "overmap_terrain", + "id": "orchard_stall_roof", + "copy-from": "generic_rural_building", + "name": "orchard stall roof", + "sym": "T", + "color": "i_light_green" + }, { "type": "overmap_terrain", "id": [ diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_alien.json b/data/json/overmap/overmap_terrain/overmap_terrain_alien.json new file mode 100644 index 0000000000000..e5178718e09d2 --- /dev/null +++ b/data/json/overmap/overmap_terrain/overmap_terrain_alien.json @@ -0,0 +1,11 @@ +[ + { + "type": "overmap_terrain", + "id": [ "slimepit_bottom", "slimepit_top" ], + "name": "slime pit", + "sym": "~", + "color": "light_green", + "see_cost": 2, + "flags": [ "KNOWN_DOWN", "NO_ROTATE" ] + } +] diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_commercial.json b/data/json/overmap/overmap_terrain/overmap_terrain_commercial.json index dfba53e9ffe20..6df3392f2db5d 100644 --- a/data/json/overmap/overmap_terrain/overmap_terrain_commercial.json +++ b/data/json/overmap/overmap_terrain/overmap_terrain_commercial.json @@ -1241,7 +1241,7 @@ }, { "type": "overmap_terrain", - "id": [ "craft_shop", "craft_shop_1", "craft_shop_2" ], + "id": [ "craft_shop", "craft_shop_1", "craft_shop_2", "craft_shop_3" ], "copy-from": "generic_city_building", "name": "craft shop", "sym": "s", @@ -1258,7 +1258,7 @@ }, { "type": "overmap_terrain", - "id": [ "craft_shop_roof", "craft_shop_roof_1", "craft_shop_roof_2" ], + "id": [ "craft_shop_roof", "craft_shop_roof_1", "craft_shop_roof_2", "craft_shop_roof_3" ], "copy-from": "generic_city_building", "name": "craft shop roof", "sym": "s", @@ -1266,7 +1266,7 @@ }, { "type": "overmap_terrain", - "id": "craft_shop_2ndfloor_2", + "id": [ "craft_shop_2ndfloor_2", "craft_shop_2ndfloor_3" ], "name": "craft shop 2nd floor", "copy-from": "generic_city_building", "sym": "s", diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_evac_center.json b/data/json/overmap/overmap_terrain/overmap_terrain_evac_center.json index 02bfcfe4eaa2c..c9f05abc1ad63 100644 --- a/data/json/overmap/overmap_terrain/overmap_terrain_evac_center.json +++ b/data/json/overmap/overmap_terrain/overmap_terrain_evac_center.json @@ -757,6 +757,14 @@ ], "copy-from": "generic_rc_air" }, + { + "type": "overmap_terrain", + "abstract": "generic_rc_earth", + "name": "solid earth", + "sym": "#", + "color": "brown", + "see_cost": 5 + }, { "type": "overmap_terrain", "abstract": "generic_rc_underground", @@ -769,902 +777,908 @@ "type": "overmap_terrain", "id": [ "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_1_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", + "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", + "refctr_E1a_z-1", + "refctr_E1b_z-1", + "refctr_E1c_z-1", + "refctr_E1d_z-1", + "refctr_E1e_z-1", + "refctr_E2a_z-1", + "refctr_E2b_z-1", + "refctr_E2c_z-1", + "refctr_E2d_z-1", + "refctr_E2e_z-1", + "refctr_E3a_z-1", + "refctr_E3b_z-1", + "refctr_E3c_z-1", + "refctr_E3d_z-1", + "refctr_E3e_z-1", + "refctr_E4a_z-1", + "refctr_E4b_z-1", + "refctr_E4c_z-1", + "refctr_E4d_z-1", + "refctr_E4e_z-1", + "refctr_E5a_z-1", + "refctr_E5b_z-1", + "refctr_E5c_z-1", + "refctr_E5d_z-1", + "refctr_E5e_z-1", + "refctr_N1a_z-1", + "refctr_N1b_z-1", + "refctr_N1c_z-1", + "refctr_N1d_z-1", + "refctr_N1e_z-1", + "refctr_N2a_z-1", + "refctr_N2b_z-1", + "refctr_N2c_z-1", + "refctr_N2d_z-1", + "refctr_N2e_z-1", + "refctr_N3a_z-1", + "refctr_N3b_z-1", + "refctr_N3c_z-1", + "refctr_N3d_z-1", + "refctr_N3e_z-1", + "refctr_N4a_z-1", + "refctr_N4b_z-1", + "refctr_N4c_z-1", + "refctr_N4d_z-1", + "refctr_N4e_z-1", + "refctr_N5a_z-1", + "refctr_N5b_z-1", + "refctr_N5c_z-1", + "refctr_N5d_z-1", + "refctr_N5e_z-1", + "refctr_NE1a_z-1", + "refctr_NE1b_z-1", + "refctr_NE1c_z-1", + "refctr_NE1d_z-1", + "refctr_NE1e_z-1", + "refctr_NE2a_z-1", + "refctr_NE2b_z-1", + "refctr_NE2c_z-1", + "refctr_NE2d_z-1", + "refctr_NE2e_z-1", + "refctr_NE3a_z-1", + "refctr_NE3b_z-1", + "refctr_NE3c_z-1", + "refctr_NE3d_z-1", + "refctr_NE3e_z-1", + "refctr_NE4a_z-1", + "refctr_NE4b_z-1", + "refctr_NE4c_z-1", + "refctr_NE4d_z-1", + "refctr_NE4e_z-1", + "refctr_NE5a_z-1", + "refctr_NE5b_z-1", + "refctr_NE5c_z-1", + "refctr_NE5d_z-1", + "refctr_NE5e_z-1", + "refctr_NW1a_z-1", + "refctr_NW1b_z-1", + "refctr_NW1c_z-1", + "refctr_NW1d_z-1", + "refctr_NW1e_z-1", + "refctr_NW2a_z-1", + "refctr_NW2b_z-1", + "refctr_NW2c_z-1", + "refctr_NW2d_z-1", + "refctr_NW2e_z-1", + "refctr_NW3a_z-1", + "refctr_NW3b_z-1", + "refctr_NW3c_z-1", + "refctr_NW3d_z-1", + "refctr_NW3e_z-1", + "refctr_NW4a_z-1", + "refctr_NW4b_z-1", + "refctr_NW4c_z-1", + "refctr_NW4d_z-1", + "refctr_NW4e_z-1", + "refctr_NW5a_z-1", + "refctr_NW5b_z-1", + "refctr_NW5c_z-1", + "refctr_NW5d_z-1", + "refctr_NW5e_z-1", + "refctr_S1a_z-1", + "refctr_S1b_z-1", + "refctr_S1c_z-1", + "refctr_S1d_z-1", + "refctr_S1e_z-1", + "refctr_S2a_z-1", + "refctr_S2b_z-1", + "refctr_S2c_z-1", + "refctr_S2d_z-1", + "refctr_S2e_z-1", + "refctr_S3a_z-1", + "refctr_S3b_z-1", + "refctr_S3c_z-1", + "refctr_S3d_z-1", + "refctr_S3e_z-1", + "refctr_S4a_z-1", + "refctr_S4b_z-1", + "refctr_S4c_z-1", + "refctr_S4d_z-1", + "refctr_S4e_z-1", + "refctr_S5a_z-1", + "refctr_S5b_z-1", + "refctr_S5c_z-1", + "refctr_S5d_z-1", + "refctr_S5e_z-1", + "refctr_SE1a_z-1", + "refctr_SE1b_z-1", + "refctr_SE1c_z-1", + "refctr_SE1d_z-1", + "refctr_SE1e_z-1", + "refctr_SE2a_z-1", + "refctr_SE2b_z-1", + "refctr_SE2c_z-1", + "refctr_SE2d_z-1", + "refctr_SE2e_z-1", + "refctr_SE3a_z-1", + "refctr_SE3b_z-1", + "refctr_SE3c_z-1", + "refctr_SE3d_z-1", + "refctr_SE3e_z-1", + "refctr_SE4a_z-1", + "refctr_SE4b_z-1", + "refctr_SE4c_z-1", + "refctr_SE4d_z-1", + "refctr_SE4e_z-1", + "refctr_SE5a_z-1", + "refctr_SE5b_z-1", + "refctr_SE5c_z-1", + "refctr_SE5d_z-1", + "refctr_SE5e_z-1", + "refctr_SW1a_z-1", + "refctr_SW1b_z-1", + "refctr_SW1c_z-1", + "refctr_SW1d_z-1", + "refctr_SW1e_z-1", + "refctr_SW2a_z-1", + "refctr_SW2b_z-1", + "refctr_SW2c_z-1", + "refctr_SW2d_z-1", + "refctr_SW2e_z-1", + "refctr_SW3a_z-1", + "refctr_SW3b_z-1", + "refctr_SW3c_z-1", + "refctr_SW3d_z-1", + "refctr_SW3e_z-1", + "refctr_SW4a_z-1", + "refctr_SW4b_z-1", + "refctr_SW4c_z-1", + "refctr_SW4d_z-1", + "refctr_SW4e_z-1", + "refctr_SW5a_z-1", + "refctr_SW5b_z-1", + "refctr_SW5c_z-1", + "refctr_SW5d_z-1", + "refctr_SW5e_z-1", + "refctr_W1a_z-1", + "refctr_W1b_z-1", + "refctr_W1c_z-1", + "refctr_W1d_z-1", + "refctr_W1e_z-1", + "refctr_W2a_z-1", + "refctr_W2b_z-1", + "refctr_W2c_z-1", + "refctr_W2d_z-1", + "refctr_W2e_z-1", + "refctr_W3a_z-1", + "refctr_W3b_z-1", + "refctr_W3c_z-1", + "refctr_W3d_z-1", + "refctr_W3e_z-1", + "refctr_W4a_z-1", + "refctr_W4b_z-1", + "refctr_W4c_z-1", + "refctr_W4d_z-1", + "refctr_W4e_z-1", + "refctr_W5a_z-1", + "refctr_W5b_z-1", + "refctr_W5c_z-1", + "refctr_W5d_z-1", + "refctr_W5e_z-1" + ], + "copy-from": "generic_rc_earth" + }, + { + "type": "overmap_terrain", + "id": [ "evac_center_10_z-2", "evac_center_10_z-3", "evac_center_10_z-4", - "evac_center_11_z-1", "evac_center_11_z-2", "evac_center_11_z-3", "evac_center_11_z-4", - "evac_center_12_z-1", "evac_center_12_z-2", "evac_center_12_z-3", "evac_center_12_z-4", - "evac_center_13_z-1", "evac_center_13_z-2", "evac_center_13_z-3", "evac_center_13_z-4", - "evac_center_14_z-1", "evac_center_14_z-2", "evac_center_14_z-3", "evac_center_14_z-4", - "evac_center_15_z-1", "evac_center_15_z-2", "evac_center_15_z-3", "evac_center_15_z-4", - "evac_center_16_z-1", "evac_center_16_z-2", "evac_center_16_z-3", "evac_center_16_z-4", - "evac_center_17_z-1", "evac_center_17_z-2", "evac_center_17_z-3", "evac_center_17_z-4", - "evac_center_18_z-1", "evac_center_18_z-2", "evac_center_18_z-3", "evac_center_18_z-4", - "evac_center_19_z-1", "evac_center_19_z-2", "evac_center_19_z-3", "evac_center_19_z-4", - "evac_center_1_z-1", "evac_center_1_z-2", "evac_center_1_z-3", "evac_center_1_z-4", - "evac_center_20_z-1", "evac_center_20_z-2", "evac_center_20_z-3", "evac_center_20_z-4", - "evac_center_21_z-1", "evac_center_21_z-2", "evac_center_21_z-3", "evac_center_21_z-4", - "evac_center_22_z-1", "evac_center_22_z-2", "evac_center_22_z-3", "evac_center_22_z-4", - "evac_center_23_z-1", "evac_center_23_z-2", "evac_center_23_z-3", "evac_center_23_z-4", - "evac_center_24_z-1", "evac_center_24_z-2", "evac_center_24_z-3", "evac_center_24_z-4", - "evac_center_25_z-1", "evac_center_25_z-2", "evac_center_25_z-3", "evac_center_25_z-4", - "evac_center_2_z-1", "evac_center_2_z-2", "evac_center_2_z-3", "evac_center_2_z-4", - "evac_center_3_z-1", "evac_center_3_z-2", "evac_center_3_z-3", "evac_center_3_z-4", - "evac_center_4_z-1", "evac_center_4_z-2", "evac_center_4_z-3", "evac_center_4_z-4", - "evac_center_5_z-1", "evac_center_5_z-2", "evac_center_5_z-3", "evac_center_5_z-4", - "evac_center_6_z-1", "evac_center_6_z-2", "evac_center_6_z-3", "evac_center_6_z-4", - "evac_center_7_z-1", "evac_center_7_z-2", "evac_center_7_z-3", "evac_center_7_z-4", - "evac_center_8_z-1", "evac_center_8_z-2", "evac_center_8_z-3", "evac_center_8_z-4", - "evac_center_9_z-1", "evac_center_9_z-2", "evac_center_9_z-3", "evac_center_9_z-4", - "refctr_E1a_z-1", "refctr_E1a_z-2", "refctr_E1a_z-3", "refctr_E1a_z-4", - "refctr_E1b_z-1", "refctr_E1b_z-2", "refctr_E1b_z-3", "refctr_E1b_z-4", - "refctr_E1c_z-1", "refctr_E1c_z-2", "refctr_E1c_z-3", "refctr_E1c_z-4", - "refctr_E1d_z-1", "refctr_E1d_z-2", "refctr_E1d_z-3", "refctr_E1d_z-4", - "refctr_E1e_z-1", "refctr_E1e_z-2", "refctr_E1e_z-3", "refctr_E1e_z-4", - "refctr_E2a_z-1", "refctr_E2a_z-2", "refctr_E2a_z-3", "refctr_E2a_z-4", - "refctr_E2b_z-1", "refctr_E2b_z-2", "refctr_E2b_z-3", "refctr_E2b_z-4", - "refctr_E2c_z-1", "refctr_E2c_z-2", "refctr_E2c_z-3", "refctr_E2c_z-4", - "refctr_E2d_z-1", "refctr_E2d_z-2", "refctr_E2d_z-3", "refctr_E2d_z-4", - "refctr_E2e_z-1", "refctr_E2e_z-2", "refctr_E2e_z-3", "refctr_E2e_z-4", - "refctr_E3a_z-1", "refctr_E3a_z-2", "refctr_E3a_z-3", "refctr_E3a_z-4", - "refctr_E3b_z-1", "refctr_E3b_z-2", "refctr_E3b_z-3", "refctr_E3b_z-4", - "refctr_E3c_z-1", "refctr_E3c_z-2", "refctr_E3c_z-3", "refctr_E3c_z-4", - "refctr_E3d_z-1", "refctr_E3d_z-2", "refctr_E3d_z-3", "refctr_E3d_z-4", - "refctr_E3e_z-1", "refctr_E3e_z-2", "refctr_E3e_z-3", "refctr_E3e_z-4", - "refctr_E4a_z-1", "refctr_E4a_z-2", "refctr_E4a_z-3", "refctr_E4a_z-4", - "refctr_E4b_z-1", "refctr_E4b_z-2", "refctr_E4b_z-3", "refctr_E4b_z-4", - "refctr_E4c_z-1", "refctr_E4c_z-2", "refctr_E4c_z-3", "refctr_E4c_z-4", - "refctr_E4d_z-1", "refctr_E4d_z-2", "refctr_E4d_z-3", "refctr_E4d_z-4", - "refctr_E4e_z-1", "refctr_E4e_z-2", "refctr_E4e_z-3", "refctr_E4e_z-4", - "refctr_E5a_z-1", "refctr_E5a_z-2", "refctr_E5a_z-3", "refctr_E5a_z-4", - "refctr_E5b_z-1", "refctr_E5b_z-2", "refctr_E5b_z-3", "refctr_E5b_z-4", - "refctr_E5c_z-1", "refctr_E5c_z-2", "refctr_E5c_z-3", "refctr_E5c_z-4", - "refctr_E5d_z-1", "refctr_E5d_z-2", "refctr_E5d_z-3", "refctr_E5d_z-4", - "refctr_E5e_z-1", "refctr_E5e_z-2", "refctr_E5e_z-3", "refctr_E5e_z-4", - "refctr_N1a_z-1", "refctr_N1a_z-2", "refctr_N1a_z-3", "refctr_N1a_z-4", - "refctr_N1b_z-1", "refctr_N1b_z-2", "refctr_N1b_z-3", "refctr_N1b_z-4", - "refctr_N1c_z-1", "refctr_N1c_z-2", "refctr_N1c_z-3", "refctr_N1c_z-4", - "refctr_N1d_z-1", "refctr_N1d_z-2", "refctr_N1d_z-3", "refctr_N1d_z-4", - "refctr_N1e_z-1", "refctr_N1e_z-2", "refctr_N1e_z-3", "refctr_N1e_z-4", - "refctr_N2a_z-1", "refctr_N2a_z-2", "refctr_N2a_z-3", "refctr_N2a_z-4", - "refctr_N2b_z-1", "refctr_N2b_z-2", "refctr_N2b_z-3", "refctr_N2b_z-4", - "refctr_N2c_z-1", "refctr_N2c_z-2", "refctr_N2c_z-3", "refctr_N2c_z-4", - "refctr_N2d_z-1", "refctr_N2d_z-2", "refctr_N2d_z-3", "refctr_N2d_z-4", - "refctr_N2e_z-1", "refctr_N2e_z-2", "refctr_N2e_z-3", "refctr_N2e_z-4", - "refctr_N3a_z-1", "refctr_N3a_z-2", "refctr_N3a_z-3", "refctr_N3a_z-4", - "refctr_N3b_z-1", "refctr_N3b_z-2", "refctr_N3b_z-3", "refctr_N3b_z-4", - "refctr_N3c_z-1", "refctr_N3c_z-2", "refctr_N3c_z-3", "refctr_N3c_z-4", - "refctr_N3d_z-1", "refctr_N3d_z-2", "refctr_N3d_z-3", "refctr_N3d_z-4", - "refctr_N3e_z-1", "refctr_N3e_z-2", "refctr_N3e_z-3", "refctr_N3e_z-4", - "refctr_N4a_z-1", "refctr_N4a_z-2", "refctr_N4a_z-3", "refctr_N4a_z-4", - "refctr_N4b_z-1", "refctr_N4b_z-2", "refctr_N4b_z-3", "refctr_N4b_z-4", - "refctr_N4c_z-1", "refctr_N4c_z-2", "refctr_N4c_z-3", "refctr_N4c_z-4", - "refctr_N4d_z-1", "refctr_N4d_z-2", "refctr_N4d_z-3", "refctr_N4d_z-4", - "refctr_N4e_z-1", "refctr_N4e_z-2", "refctr_N4e_z-3", "refctr_N4e_z-4", - "refctr_N5a_z-1", "refctr_N5a_z-2", "refctr_N5a_z-3", "refctr_N5a_z-4", - "refctr_N5b_z-1", "refctr_N5b_z-2", "refctr_N5b_z-3", "refctr_N5b_z-4", - "refctr_N5c_z-1", "refctr_N5c_z-2", "refctr_N5c_z-3", "refctr_N5c_z-4", - "refctr_N5d_z-1", "refctr_N5d_z-2", "refctr_N5d_z-3", "refctr_N5d_z-4", - "refctr_N5e_z-1", "refctr_N5e_z-2", "refctr_N5e_z-3", "refctr_N5e_z-4", - "refctr_NE1a_z-1", "refctr_NE1a_z-2", "refctr_NE1a_z-3", "refctr_NE1a_z-4", - "refctr_NE1b_z-1", "refctr_NE1b_z-2", "refctr_NE1b_z-3", "refctr_NE1b_z-4", - "refctr_NE1c_z-1", "refctr_NE1c_z-2", "refctr_NE1c_z-3", "refctr_NE1c_z-4", - "refctr_NE1d_z-1", "refctr_NE1d_z-2", "refctr_NE1d_z-3", "refctr_NE1d_z-4", - "refctr_NE1e_z-1", "refctr_NE1e_z-2", "refctr_NE1e_z-3", "refctr_NE1e_z-4", - "refctr_NE2a_z-1", "refctr_NE2a_z-2", "refctr_NE2a_z-3", "refctr_NE2a_z-4", - "refctr_NE2b_z-1", "refctr_NE2b_z-2", "refctr_NE2b_z-3", "refctr_NE2b_z-4", - "refctr_NE2c_z-1", "refctr_NE2c_z-2", "refctr_NE2c_z-3", "refctr_NE2c_z-4", - "refctr_NE2d_z-1", "refctr_NE2d_z-2", "refctr_NE2d_z-3", "refctr_NE2d_z-4", - "refctr_NE2e_z-1", "refctr_NE2e_z-2", "refctr_NE2e_z-3", "refctr_NE2e_z-4", - "refctr_NE3a_z-1", "refctr_NE3a_z-2", "refctr_NE3a_z-3", "refctr_NE3a_z-4", - "refctr_NE3b_z-1", "refctr_NE3b_z-2", "refctr_NE3b_z-3", "refctr_NE3b_z-4", - "refctr_NE3c_z-1", "refctr_NE3c_z-2", "refctr_NE3c_z-3", "refctr_NE3c_z-4", - "refctr_NE3d_z-1", "refctr_NE3d_z-2", "refctr_NE3d_z-3", "refctr_NE3d_z-4", - "refctr_NE3e_z-1", "refctr_NE3e_z-2", "refctr_NE3e_z-3", "refctr_NE3e_z-4", - "refctr_NE4a_z-1", "refctr_NE4a_z-2", "refctr_NE4a_z-3", "refctr_NE4a_z-4", - "refctr_NE4b_z-1", "refctr_NE4b_z-2", "refctr_NE4b_z-3", "refctr_NE4b_z-4", - "refctr_NE4c_z-1", "refctr_NE4c_z-2", "refctr_NE4c_z-3", "refctr_NE4c_z-4", - "refctr_NE4d_z-1", "refctr_NE4d_z-2", "refctr_NE4d_z-3", "refctr_NE4d_z-4", - "refctr_NE4e_z-1", "refctr_NE4e_z-2", "refctr_NE4e_z-3", "refctr_NE4e_z-4", - "refctr_NE5a_z-1", "refctr_NE5a_z-2", "refctr_NE5a_z-3", "refctr_NE5a_z-4", - "refctr_NE5b_z-1", "refctr_NE5b_z-2", "refctr_NE5b_z-3", "refctr_NE5b_z-4", - "refctr_NE5c_z-1", "refctr_NE5c_z-2", "refctr_NE5c_z-3", "refctr_NE5c_z-4", - "refctr_NE5d_z-1", "refctr_NE5d_z-2", "refctr_NE5d_z-3", "refctr_NE5d_z-4", - "refctr_NE5e_z-1", "refctr_NE5e_z-2", "refctr_NE5e_z-3", "refctr_NE5e_z-4", - "refctr_NW1a_z-1", "refctr_NW1a_z-2", "refctr_NW1a_z-3", "refctr_NW1a_z-4", - "refctr_NW1b_z-1", "refctr_NW1b_z-2", "refctr_NW1b_z-3", "refctr_NW1b_z-4", - "refctr_NW1c_z-1", "refctr_NW1c_z-2", "refctr_NW1c_z-3", "refctr_NW1c_z-4", - "refctr_NW1d_z-1", "refctr_NW1d_z-2", "refctr_NW1d_z-3", "refctr_NW1d_z-4", - "refctr_NW1e_z-1", "refctr_NW1e_z-2", "refctr_NW1e_z-3", "refctr_NW1e_z-4", - "refctr_NW2a_z-1", "refctr_NW2a_z-2", "refctr_NW2a_z-3", "refctr_NW2a_z-4", - "refctr_NW2b_z-1", "refctr_NW2b_z-2", "refctr_NW2b_z-3", "refctr_NW2b_z-4", - "refctr_NW2c_z-1", "refctr_NW2c_z-2", "refctr_NW2c_z-3", "refctr_NW2c_z-4", - "refctr_NW2d_z-1", "refctr_NW2d_z-2", "refctr_NW2d_z-3", "refctr_NW2d_z-4", - "refctr_NW2e_z-1", "refctr_NW2e_z-2", "refctr_NW2e_z-3", "refctr_NW2e_z-4", - "refctr_NW3a_z-1", "refctr_NW3a_z-2", "refctr_NW3a_z-3", "refctr_NW3a_z-4", - "refctr_NW3b_z-1", "refctr_NW3b_z-2", "refctr_NW3b_z-3", "refctr_NW3b_z-4", - "refctr_NW3c_z-1", "refctr_NW3c_z-2", "refctr_NW3c_z-3", "refctr_NW3c_z-4", - "refctr_NW3d_z-1", "refctr_NW3d_z-2", "refctr_NW3d_z-3", "refctr_NW3d_z-4", - "refctr_NW3e_z-1", "refctr_NW3e_z-2", "refctr_NW3e_z-3", "refctr_NW3e_z-4", - "refctr_NW4a_z-1", "refctr_NW4a_z-2", "refctr_NW4a_z-3", "refctr_NW4a_z-4", - "refctr_NW4b_z-1", "refctr_NW4b_z-2", "refctr_NW4b_z-3", "refctr_NW4b_z-4", - "refctr_NW4c_z-1", "refctr_NW4c_z-2", "refctr_NW4c_z-3", "refctr_NW4c_z-4", - "refctr_NW4d_z-1", "refctr_NW4d_z-2", "refctr_NW4d_z-3", "refctr_NW4d_z-4", - "refctr_NW4e_z-1", "refctr_NW4e_z-2", "refctr_NW4e_z-3", "refctr_NW4e_z-4", - "refctr_NW5a_z-1", "refctr_NW5a_z-2", "refctr_NW5a_z-3", "refctr_NW5a_z-4", - "refctr_NW5b_z-1", "refctr_NW5b_z-2", "refctr_NW5b_z-3", "refctr_NW5b_z-4", - "refctr_NW5c_z-1", "refctr_NW5c_z-2", "refctr_NW5c_z-3", "refctr_NW5c_z-4", - "refctr_NW5d_z-1", "refctr_NW5d_z-2", "refctr_NW5d_z-3", "refctr_NW5d_z-4", - "refctr_NW5e_z-1", "refctr_NW5e_z-2", "refctr_NW5e_z-3", "refctr_NW5e_z-4", - "refctr_S1a_z-1", "refctr_S1a_z-2", "refctr_S1a_z-3", "refctr_S1a_z-4", - "refctr_S1b_z-1", "refctr_S1b_z-2", "refctr_S1b_z-3", "refctr_S1b_z-4", - "refctr_S1c_z-1", "refctr_S1c_z-2", "refctr_S1c_z-3", "refctr_S1c_z-4", - "refctr_S1d_z-1", "refctr_S1d_z-2", "refctr_S1d_z-3", "refctr_S1d_z-4", - "refctr_S1e_z-1", "refctr_S1e_z-2", "refctr_S1e_z-3", "refctr_S1e_z-4", - "refctr_S2a_z-1", "refctr_S2a_z-2", "refctr_S2a_z-3", "refctr_S2a_z-4", - "refctr_S2b_z-1", "refctr_S2b_z-2", "refctr_S2b_z-3", "refctr_S2b_z-4", - "refctr_S2c_z-1", "refctr_S2c_z-2", "refctr_S2c_z-3", "refctr_S2c_z-4", - "refctr_S2d_z-1", "refctr_S2d_z-2", "refctr_S2d_z-3", "refctr_S2d_z-4", - "refctr_S2e_z-1", "refctr_S2e_z-2", "refctr_S2e_z-3", "refctr_S2e_z-4", - "refctr_S3a_z-1", "refctr_S3a_z-2", "refctr_S3a_z-3", "refctr_S3a_z-4", - "refctr_S3b_z-1", "refctr_S3b_z-2", "refctr_S3b_z-3", "refctr_S3b_z-4", - "refctr_S3c_z-1", "refctr_S3c_z-2", "refctr_S3c_z-3", "refctr_S3c_z-4", - "refctr_S3d_z-1", "refctr_S3d_z-2", "refctr_S3d_z-3", "refctr_S3d_z-4", - "refctr_S3e_z-1", "refctr_S3e_z-2", "refctr_S3e_z-3", "refctr_S3e_z-4", - "refctr_S4a_z-1", "refctr_S4a_z-2", "refctr_S4a_z-3", "refctr_S4a_z-4", - "refctr_S4b_z-1", "refctr_S4b_z-2", "refctr_S4b_z-3", "refctr_S4b_z-4", - "refctr_S4c_z-1", "refctr_S4c_z-2", "refctr_S4c_z-3", "refctr_S4c_z-4", - "refctr_S4d_z-1", "refctr_S4d_z-2", "refctr_S4d_z-3", "refctr_S4d_z-4", - "refctr_S4e_z-1", "refctr_S4e_z-2", "refctr_S4e_z-3", "refctr_S4e_z-4", - "refctr_S5a_z-1", "refctr_S5a_z-2", "refctr_S5a_z-3", "refctr_S5a_z-4", - "refctr_S5b_z-1", "refctr_S5b_z-2", "refctr_S5b_z-3", "refctr_S5b_z-4", - "refctr_S5c_z-1", "refctr_S5c_z-2", "refctr_S5c_z-3", "refctr_S5c_z-4", - "refctr_S5d_z-1", "refctr_S5d_z-2", "refctr_S5d_z-3", "refctr_S5d_z-4", - "refctr_S5e_z-1", "refctr_S5e_z-2", "refctr_S5e_z-3", "refctr_S5e_z-4", - "refctr_SE1a_z-1", "refctr_SE1a_z-2", "refctr_SE1a_z-3", "refctr_SE1a_z-4", - "refctr_SE1b_z-1", "refctr_SE1b_z-2", "refctr_SE1b_z-3", "refctr_SE1b_z-4", - "refctr_SE1c_z-1", "refctr_SE1c_z-2", "refctr_SE1c_z-3", "refctr_SE1c_z-4", - "refctr_SE1d_z-1", "refctr_SE1d_z-2", "refctr_SE1d_z-3", "refctr_SE1d_z-4", - "refctr_SE1e_z-1", "refctr_SE1e_z-2", "refctr_SE1e_z-3", "refctr_SE1e_z-4", - "refctr_SE2a_z-1", "refctr_SE2a_z-2", "refctr_SE2a_z-3", "refctr_SE2a_z-4", - "refctr_SE2b_z-1", "refctr_SE2b_z-2", "refctr_SE2b_z-3", "refctr_SE2b_z-4", - "refctr_SE2c_z-1", "refctr_SE2c_z-2", "refctr_SE2c_z-3", "refctr_SE2c_z-4", - "refctr_SE2d_z-1", "refctr_SE2d_z-2", "refctr_SE2d_z-3", "refctr_SE2d_z-4", - "refctr_SE2e_z-1", "refctr_SE2e_z-2", "refctr_SE2e_z-3", "refctr_SE2e_z-4", - "refctr_SE3a_z-1", "refctr_SE3a_z-2", "refctr_SE3a_z-3", "refctr_SE3a_z-4", - "refctr_SE3b_z-1", "refctr_SE3b_z-2", "refctr_SE3b_z-3", "refctr_SE3b_z-4", - "refctr_SE3c_z-1", "refctr_SE3c_z-2", "refctr_SE3c_z-3", "refctr_SE3c_z-4", - "refctr_SE3d_z-1", "refctr_SE3d_z-2", "refctr_SE3d_z-3", "refctr_SE3d_z-4", - "refctr_SE3e_z-1", "refctr_SE3e_z-2", "refctr_SE3e_z-3", "refctr_SE3e_z-4", - "refctr_SE4a_z-1", "refctr_SE4a_z-2", "refctr_SE4a_z-3", "refctr_SE4a_z-4", - "refctr_SE4b_z-1", "refctr_SE4b_z-2", "refctr_SE4b_z-3", "refctr_SE4b_z-4", - "refctr_SE4c_z-1", "refctr_SE4c_z-2", "refctr_SE4c_z-3", "refctr_SE4c_z-4", - "refctr_SE4d_z-1", "refctr_SE4d_z-2", "refctr_SE4d_z-3", "refctr_SE4d_z-4", - "refctr_SE4e_z-1", "refctr_SE4e_z-2", "refctr_SE4e_z-3", "refctr_SE4e_z-4", - "refctr_SE5a_z-1", "refctr_SE5a_z-2", "refctr_SE5a_z-3", "refctr_SE5a_z-4", - "refctr_SE5b_z-1", "refctr_SE5b_z-2", "refctr_SE5b_z-3", "refctr_SE5b_z-4", - "refctr_SE5c_z-1", "refctr_SE5c_z-2", "refctr_SE5c_z-3", "refctr_SE5c_z-4", - "refctr_SE5d_z-1", "refctr_SE5d_z-2", "refctr_SE5d_z-3", "refctr_SE5d_z-4", - "refctr_SE5e_z-1", "refctr_SE5e_z-2", "refctr_SE5e_z-3", "refctr_SE5e_z-4", - "refctr_SW1a_z-1", "refctr_SW1a_z-2", "refctr_SW1a_z-3", "refctr_SW1a_z-4", - "refctr_SW1b_z-1", "refctr_SW1b_z-2", "refctr_SW1b_z-3", "refctr_SW1b_z-4", - "refctr_SW1c_z-1", "refctr_SW1c_z-2", "refctr_SW1c_z-3", "refctr_SW1c_z-4", - "refctr_SW1d_z-1", "refctr_SW1d_z-2", "refctr_SW1d_z-3", "refctr_SW1d_z-4", - "refctr_SW1e_z-1", "refctr_SW1e_z-2", "refctr_SW1e_z-3", "refctr_SW1e_z-4", - "refctr_SW2a_z-1", "refctr_SW2a_z-2", "refctr_SW2a_z-3", "refctr_SW2a_z-4", - "refctr_SW2b_z-1", "refctr_SW2b_z-2", "refctr_SW2b_z-3", "refctr_SW2b_z-4", - "refctr_SW2c_z-1", "refctr_SW2c_z-2", "refctr_SW2c_z-3", "refctr_SW2c_z-4", - "refctr_SW2d_z-1", "refctr_SW2d_z-2", "refctr_SW2d_z-3", "refctr_SW2d_z-4", - "refctr_SW2e_z-1", "refctr_SW2e_z-2", "refctr_SW2e_z-3", "refctr_SW2e_z-4", - "refctr_SW3a_z-1", "refctr_SW3a_z-2", "refctr_SW3a_z-3", "refctr_SW3a_z-4", - "refctr_SW3b_z-1", "refctr_SW3b_z-2", "refctr_SW3b_z-3", "refctr_SW3b_z-4", - "refctr_SW3c_z-1", "refctr_SW3c_z-2", "refctr_SW3c_z-3", "refctr_SW3c_z-4", - "refctr_SW3d_z-1", "refctr_SW3d_z-2", "refctr_SW3d_z-3", "refctr_SW3d_z-4", - "refctr_SW3e_z-1", "refctr_SW3e_z-2", "refctr_SW3e_z-3", "refctr_SW3e_z-4", - "refctr_SW4a_z-1", "refctr_SW4a_z-2", "refctr_SW4a_z-3", "refctr_SW4a_z-4", - "refctr_SW4b_z-1", "refctr_SW4b_z-2", "refctr_SW4b_z-3", "refctr_SW4b_z-4", - "refctr_SW4c_z-1", "refctr_SW4c_z-2", "refctr_SW4c_z-3", "refctr_SW4c_z-4", - "refctr_SW4d_z-1", "refctr_SW4d_z-2", "refctr_SW4d_z-3", "refctr_SW4d_z-4", - "refctr_SW4e_z-1", "refctr_SW4e_z-2", "refctr_SW4e_z-3", "refctr_SW4e_z-4", - "refctr_SW5a_z-1", "refctr_SW5a_z-2", "refctr_SW5a_z-3", "refctr_SW5a_z-4", - "refctr_SW5b_z-1", "refctr_SW5b_z-2", "refctr_SW5b_z-3", "refctr_SW5b_z-4", - "refctr_SW5c_z-1", "refctr_SW5c_z-2", "refctr_SW5c_z-3", "refctr_SW5c_z-4", - "refctr_SW5d_z-1", "refctr_SW5d_z-2", "refctr_SW5d_z-3", "refctr_SW5d_z-4", - "refctr_SW5e_z-1", "refctr_SW5e_z-2", "refctr_SW5e_z-3", "refctr_SW5e_z-4", - "refctr_W1a_z-1", "refctr_W1a_z-2", "refctr_W1a_z-3", "refctr_W1a_z-4", - "refctr_W1b_z-1", "refctr_W1b_z-2", "refctr_W1b_z-3", "refctr_W1b_z-4", - "refctr_W1c_z-1", "refctr_W1c_z-2", "refctr_W1c_z-3", "refctr_W1c_z-4", - "refctr_W1d_z-1", "refctr_W1d_z-2", "refctr_W1d_z-3", "refctr_W1d_z-4", - "refctr_W1e_z-1", "refctr_W1e_z-2", "refctr_W1e_z-3", "refctr_W1e_z-4", - "refctr_W2a_z-1", "refctr_W2a_z-2", "refctr_W2a_z-3", "refctr_W2a_z-4", - "refctr_W2b_z-1", "refctr_W2b_z-2", "refctr_W2b_z-3", "refctr_W2b_z-4", - "refctr_W2c_z-1", "refctr_W2c_z-2", "refctr_W2c_z-3", "refctr_W2c_z-4", - "refctr_W2d_z-1", "refctr_W2d_z-2", "refctr_W2d_z-3", "refctr_W2d_z-4", - "refctr_W2e_z-1", "refctr_W2e_z-2", "refctr_W2e_z-3", "refctr_W2e_z-4", - "refctr_W3a_z-1", "refctr_W3a_z-2", "refctr_W3a_z-3", "refctr_W3a_z-4", - "refctr_W3b_z-1", "refctr_W3b_z-2", "refctr_W3b_z-3", "refctr_W3b_z-4", - "refctr_W3c_z-1", "refctr_W3c_z-2", "refctr_W3c_z-3", "refctr_W3c_z-4", - "refctr_W3d_z-1", "refctr_W3d_z-2", "refctr_W3d_z-3", "refctr_W3d_z-4", - "refctr_W3e_z-1", "refctr_W3e_z-2", "refctr_W3e_z-3", "refctr_W3e_z-4", - "refctr_W4a_z-1", "refctr_W4a_z-2", "refctr_W4a_z-3", "refctr_W4a_z-4", - "refctr_W4b_z-1", "refctr_W4b_z-2", "refctr_W4b_z-3", "refctr_W4b_z-4", - "refctr_W4c_z-1", "refctr_W4c_z-2", "refctr_W4c_z-3", "refctr_W4c_z-4", - "refctr_W4d_z-1", "refctr_W4d_z-2", "refctr_W4d_z-3", "refctr_W4d_z-4", - "refctr_W4e_z-1", "refctr_W4e_z-2", "refctr_W4e_z-3", "refctr_W4e_z-4", - "refctr_W5a_z-1", "refctr_W5a_z-2", "refctr_W5a_z-3", "refctr_W5a_z-4", - "refctr_W5b_z-1", "refctr_W5b_z-2", "refctr_W5b_z-3", "refctr_W5b_z-4", - "refctr_W5c_z-1", "refctr_W5c_z-2", "refctr_W5c_z-3", "refctr_W5c_z-4", - "refctr_W5d_z-1", "refctr_W5d_z-2", "refctr_W5d_z-3", "refctr_W5d_z-4", - "refctr_W5e_z-1", "refctr_W5e_z-2", "refctr_W5e_z-3", "refctr_W5e_z-4" diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_faction_base.json b/data/json/overmap/overmap_terrain/overmap_terrain_faction_base.json index 9d285c8bb4b88..ff3e8ce0b8258 100644 --- a/data/json/overmap/overmap_terrain/overmap_terrain_faction_base.json +++ b/data/json/overmap/overmap_terrain/overmap_terrain_faction_base.json @@ -190,6 +190,14 @@ "color": "i_green", "delete": { "flags": [ "SOURCE_PEOPLE" ] } }, + { + "type": "overmap_terrain", + "id": "faction_base_helipad_garage_0", + "copy-from": "faction_base_camp_0", + "name": "military helipad garage", + "color": "red", + "delete": { "flags": [ "SOURCE_PEOPLE" ] } + }, { "type": "overmap_terrain", "id": "faction_base_mansion_e1", diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_hardcoded.json b/data/json/overmap/overmap_terrain/overmap_terrain_hardcoded.json index a47b500821000..641a86234638f 100644 --- a/data/json/overmap/overmap_terrain/overmap_terrain_hardcoded.json +++ b/data/json/overmap/overmap_terrain/overmap_terrain_hardcoded.json @@ -229,33 +229,6 @@ "see_cost": 2, "flags": [ "KNOWN_DOWN", "NO_ROTATE" ] }, - { - "type": "overmap_terrain", - "id": "triffid_grove", - "name": "triffid grove", - "sym": "T", - "color": "light_red", - "see_cost": 5, - "flags": [ "KNOWN_DOWN", "NO_ROTATE", "RISK_HIGH" ] - }, - { - "type": "overmap_terrain", - "id": "triffid_roots", - "name": "triffid roots", - "sym": "T", - "color": "light_red", - "see_cost": 5, - "flags": [ "KNOWN_UP", "KNOWN_DOWN", "NO_ROTATE" ] - }, - { - "type": "overmap_terrain", - "id": "triffid_finale", - "name": "triffid heart", - "sym": "T", - "color": "red", - "see_cost": 5, - "flags": [ "KNOWN_UP", "NO_ROTATE" ] - }, { "type": "overmap_terrain", "id": "cavern", diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_industrial.json b/data/json/overmap/overmap_terrain/overmap_terrain_industrial.json index c57c4e7367a21..0f066501a694e 100644 --- a/data/json/overmap/overmap_terrain/overmap_terrain_industrial.json +++ b/data/json/overmap/overmap_terrain/overmap_terrain_industrial.json @@ -419,5 +419,34 @@ "color": "dark_gray", "see_cost": 5, "flags": [ "KNOWN_UP" ] + }, + { + "type": "overmap_terrain", + "id": [ "s_lightindustry_scen_road_0", "s_lightindustry_scen_road_1" ], + "name": "light industry", + "sym": "─", + "color": "dark_gray", + "see_cost": 5, + "extras": "build", + "mondensity": 2 + }, + { + "type": "overmap_terrain", + "id": [ + "s_lightindustry_scen_00", + "s_lightindustry_scen_00_roof", + "s_lightindustry_scen_01", + "s_lightindustry_scen_01_roof", + "s_lightindustry_scen_10", + "s_lightindustry_scen_10_roof", + "s_lightindustry_scen_11", + "s_lightindustry_scen_11_roof" + ], + "name": "light industry", + "sym": "I", + "color": "light_blue", + "see_cost": 5, + "extras": "build", + "mondensity": 2 } ] diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_lab.json b/data/json/overmap/overmap_terrain/overmap_terrain_lab.json index b0ff4dde7a1ad..57d9b86574c61 100644 --- a/data/json/overmap/overmap_terrain/overmap_terrain_lab.json +++ b/data/json/overmap/overmap_terrain/overmap_terrain_lab.json @@ -276,9 +276,9 @@ "lab_surface_brick_basementE3", "lab_surface_brick_basementE4" ], - "name": "solid rock", - "sym": "%", - "color": "dark_gray", + "name": "solid earth", + "sym": "#", + "color": "brown", "see_cost": 5 }, { diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_necropolis.json b/data/json/overmap/overmap_terrain/overmap_terrain_necropolis.json index a35ab83f79ca7..acbaaccb2315e 100644 --- a/data/json/overmap/overmap_terrain/overmap_terrain_necropolis.json +++ b/data/json/overmap/overmap_terrain/overmap_terrain_necropolis.json @@ -352,7 +352,17 @@ "necropolis_b_76", "necropolis_b_80", "necropolis_b_81", - "necropolis_b_9", + "necropolis_b_9" + ], + "copy-from": "generic_necropolis_underground", + "name": "solid earth", + "sym": "#", + "color": "brown" + }, + { + "//": "xxx Bookmark for necropolis sewers", + "type": "overmap_terrain", + "id": [ "necropolis_c_19", "necropolis_c_46", "necropolis_c_55", diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_transportation.json b/data/json/overmap/overmap_terrain/overmap_terrain_transportation.json index 25a58e55cb521..7b0c6a2a99ce2 100644 --- a/data/json/overmap/overmap_terrain/overmap_terrain_transportation.json +++ b/data/json/overmap/overmap_terrain/overmap_terrain_transportation.json @@ -295,6 +295,7 @@ "mapgen_end": [ { "method": "builtin", "name": "subway_end" } ], "mapgen_tee": [ { "method": "builtin", "name": "subway_tee" } ], "mapgen_four_way": [ { "method": "builtin", "name": "subway_four_way" } ], + "spawns": { "group": "GROUP_SUBWAY", "population": [ 1, 2 ], "chance": 50 }, "flags": [ "LINEAR" ] }, { diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_triffid.json b/data/json/overmap/overmap_terrain/overmap_terrain_triffid.json new file mode 100644 index 0000000000000..7b0b3679be08f --- /dev/null +++ b/data/json/overmap/overmap_terrain/overmap_terrain_triffid.json @@ -0,0 +1,158 @@ +[ + { + "type": "overmap_terrain", + "id": "triffid_grove", + "name": "triffid grove", + "sym": "T", + "color": "light_red", + "see_cost": 5, + "mondensity": 2, + "flags": [ "KNOWN_UP", "KNOWN_DOWN", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": "triffid_roots", + "name": "triffid roots", + "sym": "T", + "color": "light_red", + "see_cost": 5, + "mondensity": 2, + "spawns": { "group": "GROUP_TRIFFID", "population": [ 40, 45 ], "chance": 80 }, + "flags": [ "KNOWN_UP", "KNOWN_DOWN", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": "triffid_rootss", + "name": "triffid roots", + "sym": "T", + "color": "light_red", + "see_cost": 5, + "mondensity": 2, + "spawns": { "group": "GROUP_TRIFFID", "population": [ 40, 45 ], "chance": 80 }, + "flags": [ "KNOWN_UP", "KNOWN_DOWN", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": "triffid_rootsn", + "name": "triffid roots", + "sym": "T", + "color": "light_red", + "see_cost": 5, + "mondensity": 2, + "spawns": { "group": "GROUP_TRIFFID", "population": [ 40, 45 ], "chance": 80 }, + "flags": [ "KNOWN_UP", "KNOWN_DOWN", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": "triffid_rootse", + "name": "triffid roots", + "sym": "T", + "color": "light_red", + "see_cost": 5, + "mondensity": 2, + "spawns": { "group": "GROUP_TRIFFID", "population": [ 40, 45 ], "chance": 80 }, + "flags": [ "KNOWN_UP", "KNOWN_DOWN", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": "triffid_rootsw", + "name": "triffid roots", + "sym": "T", + "color": "light_red", + "see_cost": 5, + "mondensity": 2, + "spawns": { "group": "GROUP_TRIFFID", "population": [ 40, 45 ], "chance": 80 }, + "flags": [ "KNOWN_UP", "KNOWN_DOWN", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": "triffid_rootsen", + "name": "triffid roots", + "sym": "T", + "color": "light_red", + "see_cost": 5, + "mondensity": 2, + "spawns": { "group": "GROUP_TRIFFID", "population": [ 40, 45 ], "chance": 80 }, + "flags": [ "KNOWN_UP", "KNOWN_DOWN", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": "triffid_rootsnw", + "name": "triffid roots", + "sym": "T", + "color": "light_red", + "see_cost": 5, + "mondensity": 2, + "spawns": { "group": "GROUP_TRIFFID", "population": [ 40, 45 ], "chance": 80 }, + "flags": [ "KNOWN_UP", "KNOWN_DOWN", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": "triffid_rootssw", + "name": "triffid roots", + "sym": "T", + "color": "light_red", + "see_cost": 5, + "mondensity": 2, + "spawns": { "group": "GROUP_TRIFFID", "population": [ 40, 45 ], "chance": 80 }, + "flags": [ "KNOWN_UP", "KNOWN_DOWN", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": "triffid_rootsse", + "name": "triffid roots", + "sym": "T", + "color": "light_red", + "see_cost": 5, + "mondensity": 2, + "spawns": { "group": "GROUP_TRIFFID", "population": [ 40, 45 ], "chance": 80 }, + "flags": [ "KNOWN_UP", "KNOWN_DOWN", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": "triffid_finale", + "name": "triffid heart", + "sym": "T", + "color": "red", + "see_cost": 5, + "mondensity": 2, + "spawns": { "group": "GROUP_TRIFFID_HEARTGUARDS", "population": [ 50, 60 ], "chance": 80 }, + "flags": [ "KNOWN_UP", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": "triffid_grove_z3", + "name": "triffid grove trunk", + "sym": "T", + "color": "light_red", + "see_cost": 5, + "flags": [ "KNOWN_UP", "KNOWN_DOWN", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": "triffid_grove_z2", + "name": "triffid grove trunk", + "sym": "T", + "color": "light_red", + "see_cost": 5, + "flags": [ "KNOWN_UP", "KNOWN_DOWN", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": "triffid_grove_roof", + "name": "triffid grove roof", + "sym": "T", + "color": "light_red", + "see_cost": 5, + "flags": [ "KNOWN_DOWN", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": "triffid_field", + "name": "vibrant field", + "sym": ".", + "color": "green", + "see_cost": 5, + "mondensity": 2 + } +] diff --git a/data/json/overmap/special_locations.json b/data/json/overmap/special_locations.json index 39efb21801aea..9d9bfecd9ed08 100644 --- a/data/json/overmap/special_locations.json +++ b/data/json/overmap/special_locations.json @@ -63,7 +63,7 @@ { "type": "overmap_location", "id": "subterranean", - "terrains": [ "cavern", "empty_rock", "rock", "slimepit", "sewer" ] + "terrains": [ "cavern", "empty_rock", "rock", "slimepit", "sewer", "solid_earth" ] }, { "type": "overmap_location", diff --git a/data/json/player_activities.json b/data/json/player_activities.json index 3ced2d6de6b7b..947c20723245e 100644 --- a/data/json/player_activities.json +++ b/data/json/player_activities.json @@ -506,13 +506,13 @@ "no_resume": true }, { - "id": "ACT_SHEAR", + "id": "ACT_SHEARING", "type": "activity_type", "activity_level": "MODERATE_EXERCISE", "verb": "shearing an animal", "suspendable": false, "rooted": true, - "based_on": "time", + "based_on": "speed", "no_resume": true }, { @@ -872,6 +872,15 @@ "based_on": "neither", "no_resume": true }, + { + "id": "ACT_CONSUME_FUEL_MENU", + "type": "activity_type", + "activity_level": "NO_EXERCISE", + "verb": "consuming fuel", + "suspendable": false, + "based_on": "neither", + "no_resume": true + }, { "id": "ACT_MIND_SPLICER", "type": "activity_type", @@ -942,5 +951,27 @@ "suspendable": false, "based_on": "time", "no_resume": true + }, + { + "id": "ACT_TENT_PLACE", + "type": "activity_type", + "activity_level": "LIGHT_EXERCISE", + "verb": "pitching a tent", + "rooted": true, + "based_on": "time", + "no_resume": true, + "refuel_fires": false, + "auto_needs": false + }, + { + "id": "ACT_TENT_DECONSTRUCT", + "type": "activity_type", + "activity_level": "LIGHT_EXERCISE", + "verb": "packing up a tent", + "rooted": true, + "based_on": "time", + "no_resume": true, + "refuel_fires": false, + "auto_needs": false } ] diff --git a/data/json/professions.json b/data/json/professions.json index e60fc867d5c37..6792e5838fd47 100644 --- a/data/json/professions.json +++ b/data/json/professions.json @@ -11,6 +11,15 @@ "id": "army_mags_mp5", "entries": [ { "item": "mp5mag", "ammo-item": "9mm", "charges": 30 }, { "item": "mp5mag", "ammo-item": "9mm", "charges": 30 } ] }, + { + "type": "item_group", + "subtype": "collection", + "id": "ranger_mags", + "entries": [ + { "item": "p320mag_13rd_357sig", "ammo-item": "357sig_fmj", "charges": 13 }, + { "item": "p320mag_13rd_357sig", "ammo-item": "357sig_fmj", "charges": 13 } + ] + }, { "type": "item_group", "subtype": "collection", @@ -952,7 +961,8 @@ { "item": "knife_combat", "container-item": "sheath" }, { "item": "shot_00", "count": 2 }, { - "item": "m1014", + "item": "mossberg_930", + "variant": "m1014", "ammo-item": "shot_00", "charges": 8, "contents-item": [ "shoulder_strap", "holo_sight" ] @@ -1814,6 +1824,231 @@ "female": [ "bra", "panties" ] } }, + { + "id": "car_survivor", + "type": "profession", + "name": "Day Driver", + "description": "You love driving and making a living with it. On your way to pick up someone with your car, you start to notice all the chaos happening around you. Not wanting to be a part of it, you took a long detour to safety, only to find yourself in a different place. All that's left is your car.", + "points": 4, + "skills": [ { "level": 1, "name": "barter" }, { "level": 4, "name": "driving" } ], + "vehicle": "car", + "items": { + "both": { + "items": [ "sneakers", "socks", "jeans", "tshirt", "wristwatch", "jacket_light", "water_clean" ], + "entries": [ { "group": "charged_cell_phone" } ] + }, + "male": [ "boxer_shorts" ], + "female": [ "panties", "bra" ] + } + }, + { + "id": "emt_firefighter", + "type": "profession", + "name": "EMT Firefighter", + "description": "You love driving as much as you love extinguishing fire and helping the wounded, where every second counts. On your way to respond to an emergency call with your firetruck, you encounter chaos in the city, recklessness and violence are plentiful. Not wanting to use of the streets covered in burning trash and debris, you took a long detour to your fire station, only to find yourself unsure of the route back. Looks like the only emergency you will respond to will be your own.", + "points": 5, + "skills": [ { "level": 3, "name": "firstaid" }, { "level": 3, "name": "driving" }, { "level": 1, "name": "electronics" } ], + "vehicle": "fire_engine", + "items": { + "both": { + "items": [ + "boots_bunker", + "bunker_coat", + "bunker_pants", + "dress_shirt", + "fire_gauntlets", + "firehelmet", + "glasses_safety", + "mbag", + "nomex_socks", + "water_clean", + "wristwatch" + ], + "entries": [ + { "group": "full_1st_aid" }, + { "group": "charged_cell_phone" }, + { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, + { "item": "halligan", "container-item": "fireman_belt" } + ] + }, + "male": [ "boxer_shorts" ], + "female": [ "panties", "bra" ] + } + }, + { + "id": "handymanservice", + "type": "profession", + "name": "Serviceman", + "description": "Employed by a large company, you performed services directly at annoying customer's homes and also troubleshoot problems with their devices. After you finally finished replacing the 'wifi-cable' you finally were able to go back to your company, along the road back you notice all the chaos happening around you. Not wanting to get in the way of angry looking protesters, you took an old neglected side road, only to find yourself low on gas in a truly deserted place. Couldn't this all just happen before you finished your work?", + "points": 4, + "skills": [ { "level": 3, "name": "electronics" }, { "level": 2, "name": "driving" }, { "level": 1, "name": "mechanics" } ], + "vehicle": "cube_van_cheap", + "items": { + "both": { + "items": [ + "dress_shirt", + "socks", + "boots", + "pants", + "multitool", + "wristwatch", + "mbag", + "water_clean", + "gloves_work", + "hammer", + "hat_ball" + ], + "entries": [ { "group": "charged_cell_phone" } ] + }, + "male": [ "boxer_shorts" ], + "female": [ "panties", "bra" ] + } + }, + { + "id": "bus_driver", + "type": "profession", + "name": "Bus Driver", + "description": "You are making a living with delivering noisy brats to their schools, where you wish with every delivery, that they don't break a seat or window for you. On your way to pick up the first row of brats, you start to notice all the chaos happening around you. By the time you arrive at the station, all the brats look like zombies, so you took a long detour to safety, only to find yourself in a different place. At last you have been freed of the hellish noises they release, but new ones are on the merge.", + "points": 4, + "skills": [ { "level": 1, "name": "barter" }, { "level": 3, "name": "driving" } ], + "vehicle": "schoolbus", + "items": { + "both": { + "items": [ "sneakers", "socks", "jeans", "tshirt", "wristwatch", "jacket_light", "water_clean", "hat_ball" ], + "entries": [ { "group": "charged_cell_phone" } ] + }, + "male": [ "boxer_shorts" ], + "female": [ "panties", "bra" ] + } + }, + { + "id": "cop_car", + "type": "profession", + "name": "Police Interceptor", + "description": "As on-duty officer, you received the call and got ready to respond to the robbery with your patrol car. After arriving at the scene, it was soon you who needed rescuing, and you were lucky to escape with your life and car. No one responds on the radio anymore either. Who's going to respect your authority when the government this badge represents might not even exist anymore?", + "points": 6, + "skills": [ { "level": 3, "name": "gun" }, { "level": 3, "name": "pistol" }, { "level": 3, "name": "driving" } ], + "vehicle": "policecar", + "traits": [ "PROF_POLICE" ], + "items": { + "both": { + "items": [ "pants_army", "socks", "badge_deputy", "sheriffshirt", "police_belt", "boots", "whistle", "kevlar", "wristwatch" ], + "entries": [ + { "group": "charged_cell_phone" }, + { "group": "charged_two_way_radio" }, + { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, + { "item": "usp_45", "ammo-item": "45_acp", "charges": 12, "container-item": "holster" }, + { "item": "legpouch_large", "contents-group": "army_mags_usp45" } + ] + }, + "male": [ "boxer_shorts" ], + "female": [ "bra", "boy_shorts" ] + } + }, + { + "type": "profession", + "id": "militia_car", + "name": "Militia", + "description": "You’ve long since prepared yourself for this outcome. You, alongside a band of compatriots, started a hideout in the woods from which to launch looting raids on a jury-rigged pickup. The last run went poorly, leaving you last alive amongst your former comrades. Every breath you take now is an act of rebellion against the cruelty of this doomed world. Do not let that flame of hope perish inside you.", + "points": 8, + "skills": [ + { "level": 2, "name": "gun" }, + { "level": 2, "name": "rifle" }, + { "level": 3, "name": "driving" }, + { "level": 1, "name": "mechanics" } + ], + "vehicle": "pickup_technical", + "items": { + "both": { + "items": [ + "pants_army", + "jacket_army", + "socks", + "sweatshirt", + "boots", + "cig", + "elbow_pads", + "slingpack", + "kevlar", + "balclava", + "knee_pads", + "beret", + "wristwatch", + "water_clean" + ], + "entries": [ + { "group": "charged_cell_phone" }, + { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, + { "item": "knife_combat", "container-item": "sheath" }, + { "item": "m9", "ammo-item": "9mm", "charges": 15, "container-item": "holster" }, + { "item": "chestrig", "contents-group": "army_mags_m4" }, + { "item": "lighter", "charges": 100 }, + { "item": "ar15", "ammo-item": "556", "charges": 30, "contents-item": [ "shoulder_strap" ] } + ] + }, + "male": [ "boxer_shorts" ], + "female": [ "bra", "boy_shorts" ] + } + }, + { + "type": "profession", + "id": "park_ranger", + "name": "Park Ranger", + "description": "As a park ranger, most things you usually do is maintain the park, teach people how to not start a fire in the forest, patrol, and check out stuff on your daily to-do list. After arriving at a deserted camp with notes left from survivors, you took upon heeding their warning, and packed at your station with some supplies alongside your pickup, just before the station was overrun as well.", + "points": 9, + "skills": [ + { "level": 1, "name": "gun" }, + { "level": 1, "name": "pistol" }, + { "level": 3, "name": "driving" }, + { "level": 2, "name": "firstaid" }, + { "level": 1, "name": "fabrication" }, + { "level": 2, "name": "swimming" }, + { "level": 2, "name": "survival" } + ], + "vehicle": "pickup", + "items": { + "both": { + "items": [ + "boots_hiking", + "cowboy_hat", + "diving_watch", + "e_tool", + "hammer", + "knife_folding", + "multitool", + "pants_army", + "police_belt", + "rollmat", + "sheriffshirt", + "socks", + "travelpack", + "vest", + "water_clean", + "whistle_multitool" + ], + "entries": [ + { "group": "charged_cell_phone" }, + { "group": "charged_flashlight" }, + { "group": "charged_two_way_radio" }, + { "group": "full_1st_aid" }, + { "item": "black_pen", "charges": 100 }, + { "item": "coat_rain", "custom-flags": [ "no_auto_equip" ] }, + { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, + { "item": "file" }, + { "item": "legpouch_large", "contents-group": "ranger_mags" }, + { "item": "lighter", "charges": 100 }, + { "item": "p320_357sig", "ammo-item": "357sig_fmj", "charges": 13, "container-item": "holster" }, + { "item": "paper", "charges": 20, "container-item": "leather_journal" }, + { "item": "permanent_marker", "charges": 500 }, + { "item": "roadmap" }, + { "item": "sm_extinguisher", "charges": 10 }, + { "item": "trailmap" } + ] + }, + "male": [ "boxer_shorts" ], + "female": [ "bra", "boy_shorts" ] + } + }, { "type": "profession", "id": "lumberjack", diff --git a/data/json/proficiencies/chemistry.json b/data/json/proficiencies/chemistry.json index d472022501a6c..425bad92e47e8 100644 --- a/data/json/proficiencies/chemistry.json +++ b/data/json/proficiencies/chemistry.json @@ -1,4 +1,101 @@ [ + { + "type": "proficiency", + "id": "prof_intro_chemistry", + "name": { "str": "Principles of Chemistry" }, + "description": "You are beginning to grasp a general idea of how elements and compounds react with each other.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_fail_multiplier": 4, + "time_to_learn": "12 h" + }, + { + "type": "proficiency", + "id": "prof_intro_biology", + "name": { "str": "Principles of Biology" }, + "description": "You are beginning to gain a general idea of how various living beings fuction.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_fail_multiplier": 4, + "time_to_learn": "12 h" + }, + { + "type": "proficiency", + "id": "prof_organic_chemistry", + "name": { "str": "Organic Chemistry" }, + "description": "Knowledge of the branch of chemistry that studies and uses carbon-containing compounds.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_fail_multiplier": 2.5, + "required_proficiencies": [ "prof_intro_chemistry" ], + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_inorganic_chemistry", + "name": { "str": "Inorganic Chemistry" }, + "description": "Knowledge of the branch of chemistry that studies and uses compounds not containing carbon.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_fail_multiplier": 2.5, + "required_proficiencies": [ "prof_intro_chemistry" ], + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_biochemistry", + "name": { "str": "Biochemistry" }, + "description": "The understanding of the chemistry of living things.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_fail_multiplier": 2.5, + "required_proficiencies": [ "prof_organic_chemistry", "prof_intro_biology" ], + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_physiology", + "name": { "str": "Physiology" }, + "description": "An in-depth understanding of how humans and animals operate.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_fail_multiplier": 2.5, + "required_proficiencies": [ "prof_intro_biology" ], + "time_to_learn": "12 h" + }, + { + "type": "proficiency", + "id": "prof_xenology", + "name": { "str": "Xenology" }, + "description": "You are beginning to grasp a general idea of how alien and post-Cataclysm mutated creatures function and operate.", + "can_learn": true, + "default_time_multiplier": 2.0, + "default_fail_multiplier": 3.0, + "required_proficiencies": [ "prof_intro_biology" ], + "time_to_learn": "12 h" + }, + { + "type": "proficiency", + "id": "prof_intro_chem_synth", + "name": { "str": "Principles of Chemical Synthesis" }, + "description": "You're beginning to grasp the basics of chemical production.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_fail_multiplier": 5, + "required_proficiencies": [ "prof_intro_chemistry" ], + "time_to_learn": "12 h" + }, + { + "type": "proficiency", + "id": "prof_chem_synth", + "name": { "str": "Complex Chemical Synthesis" }, + "description": "The proper understanding of safe chemical synthesization and how to clean your tools used for the next batch.", + "can_learn": true, + "default_time_multiplier": 2, + "default_fail_multiplier": 2.5, + "required_proficiencies": [ "prof_intro_chem_synth" ], + "time_to_learn": "16 h" + }, { "type": "proficiency", "id": "prof_metallurgy", @@ -8,5 +105,16 @@ "default_time_multiplier": 2, "default_fail_multiplier": 1.25, "time_to_learn": "6 h" + }, + { + "type": "proficiency", + "id": "prof_pharmaceutical", + "name": { "str": "Pharmaceutical Production." }, + "description": "An understanding of how to produce various natural and chemical substances pure enough for human consumption.", + "can_learn": true, + "default_time_multiplier": 2, + "default_fail_multiplier": 2.5, + "required_proficiencies": [ "prof_intro_chemistry", "prof_intro_biology" ], + "time_to_learn": "8 h" } ] diff --git a/data/json/proficiencies/metalwork.json b/data/json/proficiencies/metalwork.json index e4f191756a178..1706c23d2a1ef 100644 --- a/data/json/proficiencies/metalwork.json +++ b/data/json/proficiencies/metalwork.json @@ -95,5 +95,16 @@ "default_fail_multiplier": 1.15, "time_to_learn": "10 h", "required_proficiencies": [ "prof_blacksmithing" ] + }, + { + "type": "proficiency", + "id": "prof_wiremaking", + "name": { "str": "Wire Making" }, + "description": "How to turn raw ingots and metals into usable wire. Includes both drawing and extruding.", + "can_learn": true, + "default_time_multiplier": 2, + "default_fail_multiplier": 1.5, + "time_to_learn": "10 h", + "required_proficiencies": [ "prof_metalworking" ] } ] diff --git a/data/json/recipes/armor/hands.json b/data/json/recipes/armor/hands.json index 062c77558098f..a744c2f5e185b 100644 --- a/data/json/recipes/armor/hands.json +++ b/data/json/recipes/armor/hands.json @@ -416,7 +416,7 @@ "time": "30 m", "autolearn": true, "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ [ [ "gloves_lsurvivor", 1 ] ] ] + "components": [ [ [ "gloves_survivor", 1 ] ] ] }, { "result": "xl_gloves_survivor_fingerless", @@ -424,6 +424,26 @@ "copy-from": "gloves_survivor_fingerless", "time": "40 m", "qualities": [ { "id": "CUT", "level": 1 } ], + "components": [ [ [ "xl_gloves_survivor", 1 ] ] ] + }, + { + "result": "gloves_lsurvivor_fingerless", + "type": "recipe", + "activity_level": "NO_EXERCISE", + "category": "CC_ARMOR", + "subcategory": "CSC_ARMOR_HANDS", + "skill_used": "tailor", + "time": "30 m", + "autolearn": true, + "qualities": [ { "id": "CUT", "level": 1 } ], + "components": [ [ [ "gloves_lsurvivor", 1 ] ] ] + }, + { + "result": "xl_gloves_lsurvivor_fingerless", + "type": "recipe", + "copy-from": "gloves_lsurvivor_fingerless", + "time": "40 m", + "qualities": [ { "id": "CUT", "level": 1 } ], "components": [ [ [ "xl_gloves_lsurvivor", 1 ] ] ] }, { @@ -626,7 +646,7 @@ ] }, { - "result": "gloves_xlsurvivor", + "result": "xl_gloves_survivor", "type": "recipe", "activity_level": "LIGHT_EXERCISE", "category": "CC_ARMOR", diff --git a/data/json/recipes/armor/head.json b/data/json/recipes/armor/head.json index 873b72beb7f40..49c3d4605078b 100644 --- a/data/json/recipes/armor/head.json +++ b/data/json/recipes/armor/head.json @@ -41,6 +41,21 @@ "using": [ [ "sewing_standard", 20 ] ], "components": [ [ [ "felt_patch", 4 ] ] ] }, + { + "result": "makeshift_blindfold", + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "category": "CC_ARMOR", + "subcategory": "CSC_ARMOR_HEAD", + "skill_used": "survival", + "difficulty": 2, + "skills_required": [ [ "tailor", 1 ] ], + "time": "20 m", + "autolearn": true, + "reversible": true, + "components": [ [ [ "withered", 10 ] ], [ [ "string_6", 2 ], [ "cordage_6", 2 ] ] ], + "proficiencies": [ { "proficiency": "prof_basketweaving" } ] + }, { "result": "blindfold_duct", "type": "recipe", diff --git a/data/json/recipes/armor/other.json b/data/json/recipes/armor/other.json index 69218f4560f08..aa82eb974f15e 100644 --- a/data/json/recipes/armor/other.json +++ b/data/json/recipes/armor/other.json @@ -222,7 +222,8 @@ "difficulty": 4, "time": "60 m", "book_learn": [ [ "textbook_fabrication", 4 ], [ "welding_book", 4 ] ], - "qualities": [ { "id": "ANVIL", "level": 1 }, { "id": "WELD", "level": 1 }, { "id": "CUT", "level": 1 } ], + "qualities": [ { "id": "ANVIL", "level": 1 }, { "id": "CUT", "level": 1 } ], + "using": [ [ "welding_standard", 1 ] ], "proficiencies": [ { "proficiency": "prof_plasticworking" } ], "tools": [ [ [ "surface_heat", 5, "LIST" ] ] ], "components": [ [ [ "plastic_chunk", 20 ] ] ] diff --git a/data/json/recipes/armor/suit.json b/data/json/recipes/armor/suit.json index 9f13daebc1c39..13418543dfa37 100644 --- a/data/json/recipes/armor/suit.json +++ b/data/json/recipes/armor/suit.json @@ -1,54 +1,4 @@ [ - { - "result": "aep_suit", - "type": "recipe", - "activity_level": "LIGHT_EXERCISE", - "category": "CC_ARMOR", - "subcategory": "CSC_ARMOR_SUIT", - "skill_used": "fabrication", - "difficulty": 6, - "skills_required": [ "tailor", 5 ], - "time": "12 h", - "book_learn": [ [ "tailor_portfolio", 7 ], [ "textbook_tailor", 8 ], [ "textbook_fireman", 6 ] ], - "qualities": [ { "id": "CUT", "level": 1 } ], - "tools": [ [ [ "welder", 112 ], [ "welder_crude", 168 ], [ "soldering_iron", 168 ], [ "toolset", 168 ] ] ], - "proficiencies": [ - { "proficiency": "prof_closures" }, - { "proficiency": "prof_polymerworking" }, - { "proficiency": "prof_closures_waterproofing" } - ], - "components": [ - [ [ "cleansuit", 1 ] ], - [ [ "duct_tape", 600 ] ], - [ [ "kevlar", 1 ], [ "ballistic_vest_empty", 1 ], [ "swat_armor", 1 ], [ "sheet_kevlar_layered", 24 ] ], - [ [ "plastic_sheet", 1 ] ] - ] - }, - { - "result": "anbc_suit", - "type": "recipe", - "activity_level": "LIGHT_EXERCISE", - "category": "CC_ARMOR", - "subcategory": "CSC_ARMOR_SUIT", - "skill_used": "fabrication", - "difficulty": 8, - "skills_required": [ "tailor", 7 ], - "time": "12 h 40 m", - "book_learn": [ [ "tailor_portfolio", 7 ], [ "textbook_fireman", 7 ] ], - "qualities": [ { "id": "CUT", "level": 1 } ], - "tools": [ [ [ "welder", 112 ], [ "welder_crude", 168 ], [ "soldering_iron", 168 ], [ "toolset", 168 ] ] ], - "proficiencies": [ - { "proficiency": "prof_closures" }, - { "proficiency": "prof_polymerworking" }, - { "proficiency": "prof_closures_waterproofing" } - ], - "components": [ - [ [ "hazmat_suit", 1 ] ], - [ [ "duct_tape", 800 ] ], - [ [ "swat_armor", 1 ], [ "sheet_kevlar_layered", 48 ] ], - [ [ "plastic_sheet", 1 ] ] - ] - }, { "result": "armor_blarmor", "type": "recipe", diff --git a/data/json/recipes/basecamps/fbmc_helipad/recipe_modular_helipad_common.json b/data/json/recipes/basecamps/fbmc_helipad/recipe_modular_helipad_common.json new file mode 100644 index 0000000000000..b7fceb8fc6212 --- /dev/null +++ b/data/json/recipes/basecamps/fbmc_helipad/recipe_modular_helipad_common.json @@ -0,0 +1,151 @@ +[ + { + "type": "recipe", + "result": "faction_base_helipad_0", + "description": "We should survey the base site 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": "fbmc_helipad_0", + "blueprint_provides": [ + { "id": "gathering" }, + { "id": "firewood" }, + { "id": "sorting" }, + { "id": "logging" }, + { "id": "foraging" }, + { "id": "kitchen" }, + { "id": "kitchen_recipes_1" }, + { "id": "kitchen_recipes_2" }, + { "id": "primitive_camp_recipes_1" }, + { "id": "fbmc_helipad_0" } + ], + "blueprint_resources": [ "fake_oven", "fake_water_purifier" ], + "blueprint_requires": [ { "id": "not_an_upgrade" } ], + "blueprint_name": "basic survey", + "check_blueprint_needs": false + }, + { + "type": "recipe", + "result": "faction_base_helipad_barricade_wood", + "description": "We need to barricade front windows, let's build wooden walls over them.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_helipad_barricade_wood", + "blueprint_name": "wooden barricades", + "blueprint_provides": [ { "id": "fbmc_helipad_barricade" }, { "id": "bed", "amount": 4 } ], + "blueprint_requires": [ { "id": "fbmc_helipad_0" } ], + "blueprint_excludes": [ { "id": "fbmc_helipad_barricade" } ] + }, + { + "type": "recipe", + "result": "faction_base_helipad_migo_resin", + "description": "We need to barricade front windows, let's build mi-go resin walls over them.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_helipad_barricade_migo_resin", + "blueprint_name": "mi-go resin barricades", + "blueprint_provides": [ { "id": "fbmc_helipad_barricade" }, { "id": "bed", "amount": 4 } ], + "blueprint_requires": [ { "id": "fbmc_helipad_0" } ], + "blueprint_excludes": [ { "id": "fbmc_helipad_barricade" } ] + }, + { + "type": "recipe", + "result": "faction_base_helipad_root_cellar", + "description": "Digging a root cellar will allow us trapping small game and preserving it.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_helipad_root_cellar", + "blueprint_name": "root cellar", + "blueprint_provides": [ { "id": "fbmc_helipad_root_cellar" }, { "id": "pantry" }, { "id": "trapping" } ], + "blueprint_requires": [ { "id": "fbmc_helipad_barricade" } ], + "blueprint_excludes": [ { "id": "fbmc_helipad_root_cellar" } ] + }, + { + "type": "recipe", + "result": "faction_base_helipad_butchery_rack", + "description": "We could build butchery rack to start hunting larger animals.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_helipad_butchery_rack", + "blueprint_name": "butchery rack", + "blueprint_provides": [ { "id": "fbmc_helipad_butchery_rack" }, { "id": "hunting" } ], + "blueprint_requires": [ { "id": "fbmc_helipad_root_cellar" } ], + "blueprint_excludes": [ { "id": "fbmc_helipad_butchery_rack" } ] + }, + { + "type": "recipe", + "result": "faction_base_helipad_reinforce_doors", + "description": "We should reinforce front doors to make this base safer.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_helipad_reinforce_doors", + "blueprint_name": "reinforce doors", + "blueprint_provides": [ { "id": "fbmc_helipad_reinforce_doors" }, { "id": "bed", "amount": 4 }, { "id": "relaying" }, { "id": "walls" } ], + "blueprint_requires": [ { "id": "fbmc_helipad_barricade" } ], + "blueprint_excludes": [ { "id": "fbmc_helipad_reinforce_doors" } ] + }, + { + "type": "recipe", + "result": "faction_base_helipad_radio", + "description": "Let's set up a radio tower to improve our recruitment efforts.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_helipad_radio", + "blueprint_name": "radio tower", + "blueprint_provides": [ + { "id": "fbmc_helipad_radio" }, + { "id": "radio" }, + { "id": "recruiting" }, + { "id": "scouting" }, + { "id": "patroling" } + ], + "blueprint_requires": [ { "id": "fbmc_helipad_reinforce_doors" }, { "id": "fbmc_helipad_root_cellar" } ], + "blueprint_excludes": [ { "id": "fbmc_helipad_radio" } ], + "blueprint_needs": { + "time": "2 d", + "skills": [ [ "fabrication", 3 ] ], + "inline": { + "tools": [ ], + "qualities": [ [ { "id": "HAMMER", "level": 2 } ], [ { "id": "SAW_M" } ], [ { "id": "SCREW" } ], [ { "id": "WRENCH" } ] ], + "components": [ + [ + [ "wind_turbine", 4 ], + [ "xl_wind_turbine", 1 ], + [ "solar_panel", 4 ], + [ "reinforced_solar_panel", 4 ], + [ "solar_panel_v2", 2 ], + [ "reinforced_solar_panel_v2", 2 ] + ], + [ [ "storage_battery", 1 ], [ "medium_storage_battery", 4 ], [ "small_storage_battery", 32 ] ], + [ [ "sheet_metal", 2 ], [ "wire", 8 ] ], + [ [ "pipe", 24 ] ], + [ [ "processor", 2 ] ], + [ [ "RAM", 2 ] ], + [ [ "large_lcd_screen", 1 ] ], + [ [ "e_scrap", 8 ] ], + [ [ "frame", 1 ] ], + [ [ "circuit", 4 ] ], + [ [ "power_supply", 2 ] ], + [ [ "amplifier", 2 ] ], + [ [ "cable", 80 ] ], + [ [ "motor_small", 1 ], [ "motor_tiny", 2 ] ] + ] + } + } + } +] diff --git a/data/json/recipes/basecamps/fbmc_helipad/recipe_modular_helipad_garage.json b/data/json/recipes/basecamps/fbmc_helipad/recipe_modular_helipad_garage.json new file mode 100644 index 0000000000000..1158cbe6b3058 --- /dev/null +++ b/data/json/recipes/basecamps/fbmc_helipad/recipe_modular_helipad_garage.json @@ -0,0 +1,25 @@ +[ + { + "type": "recipe", + "result": "faction_base_helipad_garage_0", + "description": "Survey military helipad garage.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "time": "180 m", + "construction_blueprint": "faction_base_helipad_garage_0", + "blueprint_provides": [ + { "id": "fbmc_helipad_garage_0" }, + { "id": "tool_storage" }, + { "id": "dismantling" }, + { "id": "blacksmith" }, + { "id": "power_saw_recipes" } + ], + "blueprint_resources": [ "fake_planer", "fake_drill_press" ], + "blueprint_requires": [ { "id": "not_an_upgrade" } ], + "blueprint_name": "military helipad garage survey", + "check_blueprint_needs": false + } +] diff --git a/data/json/recipes/basecamps/fbmc_outpost/recipe_modular_outpost_cross.json b/data/json/recipes/basecamps/fbmc_outpost/recipe_modular_outpost_cross.json new file mode 100644 index 0000000000000..b8500a41d8c6f --- /dev/null +++ b/data/json/recipes/basecamps/fbmc_outpost/recipe_modular_outpost_cross.json @@ -0,0 +1,186 @@ +[ + { + "type": "recipe", + "result": "faction_base_outpost_cross_0", + "description": "We should survey the base site 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": "fbmc_outpost_cross_0", + "blueprint_provides": [ + { "id": "bed", "amount": 12 }, + { "id": "tool_storage" }, + { "id": "gathering" }, + { "id": "firewood" }, + { "id": "sorting" }, + { "id": "logging" }, + { "id": "kitchen" }, + { "id": "kitchen_recipes_1" }, + { "id": "primitive_camp_recipes_1" }, + { "id": "fbmc_outpost_cross_0" } + ], + "blueprint_requires": [ { "id": "not_an_upgrade" } ], + "blueprint_name": "basic survey", + "check_blueprint_needs": false + }, + { + "type": "recipe", + "result": "faction_base_outpost_cross_bed_0", + "description": "Let's build a bunk bed.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_outpost_cross_bed_0", + "blueprint_name": "bunk bed", + "blueprint_provides": [ { "id": "fbmc_outpost_cross_bed_0" }, { "id": "bed", "amount": 2 } ], + "blueprint_requires": [ { "id": "fbmc_outpost_cross_0" } ], + "blueprint_excludes": [ { "id": "fbmc_outpost_cross_bed_0" } ] + }, + { + "type": "recipe", + "result": "faction_base_outpost_cross_bed_1", + "description": "Let's build another bunk bed.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_outpost_cross_bed_1", + "blueprint_name": "another bunk bed", + "blueprint_provides": [ { "id": "fbmc_outpost_cross_bed_1" }, { "id": "bed", "amount": 2 } ], + "blueprint_requires": [ { "id": "fbmc_outpost_cross_bed_0" } ], + "blueprint_excludes": [ { "id": "fbmc_outpost_cross_bed_1" } ] + }, + { + "type": "recipe", + "result": "faction_base_outpost_cross_root_cellar", + "description": "Digging a root cellar will allow us trapping small game and preserving it.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_outpost_cross_root_cellar", + "blueprint_name": "root cellar", + "blueprint_provides": [ { "id": "fbmc_outpost_cross_root_cellar" }, { "id": "pantry" }, { "id": "trapping" } ], + "blueprint_requires": [ { "id": "fbmc_outpost_cross_0" } ], + "blueprint_excludes": [ { "id": "fbmc_outpost_cross_root_cellar" } ] + }, + { + "type": "recipe", + "result": "faction_base_outpost_cross_butchery_rack", + "description": "Building a butchery rack will allow us hunting bigger animals.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_outpost_cross_butchery_rack", + "blueprint_name": "butchery rack", + "blueprint_provides": [ { "id": "fbmc_outpost_cross_butchery_rack" }, { "id": "hunting" } ], + "blueprint_requires": [ { "id": "fbmc_outpost_cross_root_cellar" } ], + "blueprint_excludes": [ { "id": "fbmc_outpost_cross_butchery_rack" } ] + }, + { + "type": "recipe", + "result": "faction_base_outpost_cross_water_well", + "description": "Digging a well will give us easy access to water and allow us to start small farm.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_outpost_cross_water_well", + "blueprint_name": "water well", + "blueprint_provides": [ { "id": "fbmc_outpost_cross_water_well" } ], + "blueprint_requires": [ { "id": "fbmc_outpost_cross_0" } ], + "blueprint_excludes": [ { "id": "fbmc_outpost_cross_water_well" } ] + }, + { + "type": "recipe", + "result": "faction_base_outpost_cross_farm", + "description": "Let's plow some plots.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_outpost_cross_farm", + "blueprint_name": "small farm", + "blueprint_provides": [ { "id": "fbmc_outpost_cross_farm" }, { "id": "farming" } ], + "blueprint_requires": [ { "id": "fbmc_outpost_cross_water_well" } ], + "blueprint_excludes": [ { "id": "fbmc_outpost_cross_farm" } ], + "time": "2 h", + "qualities": [ [ { "id": "DIG", "level": 1 } ] ], + "check_blueprint_needs": false + }, + { + "type": "recipe", + "result": "faction_base_outpost_cross_generator", + "description": "We could try to fix reactor's controller to power lights, it would really help us in planning missions.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_outpost_cross_generator", + "blueprint_name": "fix reactor's controller", + "blueprint_provides": [ { "id": "fbmc_outpost_cross_generator" }, { "id": "walls" }, { "id": "scouting" }, { "id": "patrolling" } ], + "blueprint_requires": [ { "id": "fbmc_outpost_cross_0" } ], + "blueprint_excludes": [ { "id": "fbmc_outpost_cross_generator" } ], + "blueprint_needs": { + "time": "1 d", + "skills": [ [ "electronics", 8 ] ], + "inline": { + "tools": [ [ [ "hazmat_suit", -1 ] ], [ [ "mask_gas", 50 ] ], [ [ "soldering_iron", 50 ] ] ], + "qualities": [ [ { "id": "SCREW" } ], [ { "id": "SCREW_FINE" } ], [ { "id": "WRENCH" } ], [ { "id": "WRENCH_FINE" } ] ], + "components": [ + [ [ "solder_wire", 50 ] ], + [ [ "processor", 2 ] ], + [ [ "RAM", 8 ] ], + [ [ "cable", 10 ] ], + [ [ "e_scrap", 20 ] ], + [ [ "circuit", 10 ] ], + [ [ "ai_module_basic", 1 ], [ "ai_module", 1 ] ] + ] + } + }, + "check_blueprint_needs": false + }, + { + "type": "recipe", + "activity_level": "MODERATE_EXERCISE", + "result": "faction_base_outpost_cross_radio", + "description": "Let's set up a radio tower to improve our recruitment efforts, we will redirect some power into it from nuclear reactor.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_outpost_cross_radio", + "blueprint_name": "radio tower", + "blueprint_requires": [ { "id": "fbmc_outpost_cross_generator" } ], + "blueprint_provides": [ { "id": "fbmc_outpost_cross_radio" }, { "id": "recruiting" }, { "id": "radio" } ], + "blueprint_excludes": [ { "id": "fbmc_outpost_cross_radio" } ], + "blueprint_needs": { + "time": "1 d", + "skills": [ [ "fabrication", 3 ] ], + "inline": { + "tools": [ ], + "qualities": [ [ { "id": "HAMMER", "level": 2 } ], [ { "id": "SAW_M" } ], [ { "id": "SCREW" } ], [ { "id": "WRENCH" } ] ], + "components": [ + [ [ "sheet_metal", 2 ], [ "wire", 8 ] ], + [ [ "pipe", 24 ] ], + [ [ "processor", 2 ] ], + [ [ "RAM", 2 ] ], + [ [ "large_lcd_screen", 1 ] ], + [ [ "e_scrap", 8 ] ], + [ [ "frame", 1 ] ], + [ [ "circuit", 4 ] ], + [ [ "power_supply", 2 ] ], + [ [ "amplifier", 2 ] ], + [ [ "cable", 80 ] ], + [ [ "motor_small", 1 ], [ "motor_tiny", 2 ] ] + ] + } + }, + "check_blueprint_needs": false + } +] diff --git a/data/json/recipes/basecamps/fbmc_outpost/recipe_modular_outpost_normal.json b/data/json/recipes/basecamps/fbmc_outpost/recipe_modular_outpost_normal.json new file mode 100644 index 0000000000000..8227ad233c4c1 --- /dev/null +++ b/data/json/recipes/basecamps/fbmc_outpost/recipe_modular_outpost_normal.json @@ -0,0 +1,172 @@ +[ + { + "type": "recipe", + "result": "faction_base_outpost_normal_0", + "description": "We should survey the base site 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": "fbmc_outpost_normal_0", + "blueprint_provides": [ + { "id": "bed", "amount": 14 }, + { "id": "tool_storage" }, + { "id": "gathering" }, + { "id": "firewood" }, + { "id": "sorting" }, + { "id": "logging" }, + { "id": "kitchen" }, + { "id": "kitchen_recipes_1" }, + { "id": "primitive_camp_recipes_1" }, + { "id": "fbmc_outpost_normal_0" } + ], + "blueprint_requires": [ { "id": "not_an_upgrade" } ], + "blueprint_name": "basic survey", + "check_blueprint_needs": false + }, + { + "type": "recipe", + "result": "faction_base_outpost_normal_bed_0", + "description": "Let's build a bunk bed.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_outpost_normal_bed_0", + "blueprint_name": "bunk bed", + "blueprint_provides": [ { "id": "fbmc_outpost_normal_bed_0" }, { "id": "bed", "amount": 2 } ], + "blueprint_requires": [ { "id": "fbmc_outpost_normal_0" } ], + "blueprint_excludes": [ { "id": "fbmc_outpost_normal_bed_0" } ] + }, + { + "type": "recipe", + "result": "faction_base_outpost_normal_root_cellar", + "description": "Digging a root cellar will allow us trapping small game and preserving it.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_outpost_normal_root_cellar", + "blueprint_name": "root cellar", + "blueprint_provides": [ { "id": "fbmc_outpost_normal_root_cellar" }, { "id": "pantry" }, { "id": "trapping" } ], + "blueprint_requires": [ { "id": "fbmc_outpost_normal_0" } ], + "blueprint_excludes": [ { "id": "fbmc_outpost_normal_root_cellar" } ] + }, + { + "type": "recipe", + "result": "faction_base_outpost_normal_butchery_rack", + "description": "Building a butchery rack will allow us hunting bigger animals.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_outpost_normal_butchery_rack", + "blueprint_name": "butchery rack", + "blueprint_provides": [ { "id": "fbmc_outpost_normal_butchery_rack" }, { "id": "hunting" } ], + "blueprint_requires": [ { "id": "fbmc_outpost_normal_root_cellar" } ], + "blueprint_excludes": [ { "id": "fbmc_outpost_normal_butchery_rack" } ] + }, + { + "type": "recipe", + "result": "faction_base_outpost_normal_water_well", + "description": "Digging a well will give us easy access to water and allow us to start small farm.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_outpost_normal_water_well", + "blueprint_name": "water well", + "blueprint_provides": [ { "id": "fbmc_outpost_normal_water_well" } ], + "blueprint_requires": [ { "id": "fbmc_outpost_normal_0" } ], + "blueprint_excludes": [ { "id": "fbmc_outpost_normal_water_well" } ] + }, + { + "type": "recipe", + "result": "faction_base_outpost_normal_farm", + "description": "Let's plow some plots.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_outpost_normal_farm", + "blueprint_name": "small farm", + "blueprint_provides": [ { "id": "fbmc_outpost_normal_farm" }, { "id": "farming" } ], + "blueprint_requires": [ { "id": "fbmc_outpost_normal_water_well" } ], + "blueprint_excludes": [ { "id": "fbmc_outpost_normal_farm" } ], + "time": "1 h", + "qualities": [ [ { "id": "DIG", "level": 1 } ] ], + "check_blueprint_needs": false + }, + { + "type": "recipe", + "result": "faction_base_outpost_normal_generator", + "description": "We could try to fix reactor's controller to power lights, it would really help us in planning missions.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_outpost_normal_generator", + "blueprint_name": "fix reactor's controller", + "blueprint_provides": [ { "id": "fbmc_outpost_normal_generator" }, { "id": "walls" }, { "id": "scouting" }, { "id": "patrolling" } ], + "blueprint_requires": [ { "id": "fbmc_outpost_normal_0" } ], + "blueprint_excludes": [ { "id": "fbmc_outpost_normal_generator" } ], + "blueprint_needs": { + "time": "1 d", + "skills": [ [ "electronics", 8 ] ], + "inline": { + "tools": [ [ [ "hazmat_suit", -1 ] ], [ [ "mask_gas", 50 ] ], [ [ "soldering_iron", 50 ] ] ], + "qualities": [ [ { "id": "SCREW" } ], [ { "id": "SCREW_FINE" } ], [ { "id": "WRENCH" } ], [ { "id": "WRENCH_FINE" } ] ], + "components": [ + [ [ "solder_wire", 50 ] ], + [ [ "processor", 2 ] ], + [ [ "RAM", 8 ] ], + [ [ "cable", 10 ] ], + [ [ "e_scrap", 20 ] ], + [ [ "circuit", 10 ] ], + [ [ "ai_module_basic", 1 ], [ "ai_module", 1 ] ] + ] + } + }, + "check_blueprint_needs": false + }, + { + "type": "recipe", + "activity_level": "MODERATE_EXERCISE", + "result": "faction_base_outpost_normal_radio", + "description": "Let's set up a radio tower to improve our recruitment efforts, we will redirect some power into it from nuclear reactor.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmc_outpost_normal_radio", + "blueprint_name": "radio tower", + "blueprint_requires": [ { "id": "fbmc_outpost_normal_generator" } ], + "blueprint_provides": [ { "id": "fbmc_outpost_normal_radio" }, { "id": "recruiting" }, { "id": "radio" } ], + "blueprint_excludes": [ { "id": "fbmc_outpost_normal_radio" } ], + "blueprint_needs": { + "time": "1 d", + "skills": [ [ "fabrication", 3 ] ], + "inline": { + "tools": [ ], + "qualities": [ [ { "id": "HAMMER", "level": 2 } ], [ { "id": "SAW_M" } ], [ { "id": "SCREW" } ], [ { "id": "WRENCH" } ] ], + "components": [ + [ [ "sheet_metal", 2 ], [ "wire", 8 ] ], + [ [ "pipe", 24 ] ], + [ [ "processor", 2 ] ], + [ [ "RAM", 2 ] ], + [ [ "large_lcd_screen", 1 ] ], + [ [ "e_scrap", 8 ] ], + [ [ "frame", 1 ] ], + [ [ "circuit", 4 ] ], + [ [ "power_supply", 2 ] ], + [ [ "amplifier", 2 ] ], + [ [ "cable", 80 ] ], + [ [ "motor_small", 1 ], [ "motor_tiny", 2 ] ] + ] + } + }, + "check_blueprint_needs": false + } +] diff --git a/data/json/recipes/basecamps/recipe_groups.json b/data/json/recipes/basecamps/recipe_groups.json index 4453c6b1295bc..35f3469e07af1 100644 --- a/data/json/recipes/basecamps/recipe_groups.json +++ b/data/json/recipes/basecamps/recipe_groups.json @@ -25,6 +25,17 @@ "description": "Central Stairs Evac Shelter Base", "om_terrains": [ "shelter_2", "shelter_2_vandal" ] }, + { "id": "faction_base_helipad_0", "description": "Military Helipad Base", "om_terrains": [ "helipad_nw" ] }, + { + "id": "faction_base_outpost_normal_0", + "description": "Normal Military Outpost Base", + "om_terrains": [ "outpost" ] + }, + { + "id": "faction_base_outpost_cross_0", + "description": "Cross Military Outpost Base", + "om_terrains": [ "outpost_cross" ] + }, { "id": "faction_base_lighthouse_0", "description": "Lighthouse Base", "om_terrains": [ "lighthouse_ground" ] }, { "id": "faction_base_pottery_cottage_0", @@ -80,6 +91,11 @@ { "id": "faction_base_storehouse_0", "description": "Central Storage Building", "om_terrains": [ "field" ] }, { "id": "faction_base_saltworks_0", "description": "Saltworks Area", "om_terrains": [ "field" ] }, { "id": "faction_base_workshop_0", "description": "Fabrication Workshop", "om_terrains": [ "field" ] }, + { + "id": "faction_base_helipad_garage_0", + "description": "Military Helipad Garage", + "om_terrains": [ "helipad_ne" ] + }, { "id": "faction_base_mansion_e1", "description": "Mansion's Entrance", "om_terrains": [ "mansion_e1" ] }, { "id": "faction_base_mansion_e2", "description": "Mansion's Entrance", "om_terrains": [ "mansion_e2" ] }, { "id": "faction_base_mansion_t1", "description": "Mansion's Swimming Pool", "om_terrains": [ "mansion_t1" ] }, diff --git a/data/json/recipes/chem/other.json b/data/json/recipes/chem/other.json index 2a4b09be3ff22..a8f8403ba7356 100644 --- a/data/json/recipes/chem/other.json +++ b/data/json/recipes/chem/other.json @@ -14,7 +14,7 @@ "book_learn": [ [ "recipe_arrows", 1 ], [ "textbook_survival", 1 ], [ "survival_book", 1 ] ], "qualities": [ { "id": "COOK", "level": 2 } ], "tools": [ [ [ "surface_heat", 3, "LIST" ] ] ], - "components": [ [ [ "water", 1 ], [ "water_clean", 1 ] ], [ [ "bone_any", 10, "LIST" ] ] ] + "components": [ [ [ "water", 1 ], [ "water_clean", 1 ] ], [ [ "bone_any", 10, "LIST" ], [ "skewer_bone", 500 ] ] ] }, { "result": "superglue", @@ -34,6 +34,7 @@ [ "bleach", 1 ], [ "lye_powder", 100 ], [ "bone_any", 20, "LIST" ], + [ "skewer_bone", 1000 ], [ "cured_hide", 2 ], [ "pine_bough", 10 ], [ "raw_dandelion", 20 ], diff --git a/data/json/recipes/food/bread.json b/data/json/recipes/food/bread.json index d1c8b5256bd79..2160ba52e968c 100644 --- a/data/json/recipes/food/bread.json +++ b/data/json/recipes/food/bread.json @@ -75,5 +75,27 @@ ], "//": "I'm not sure whether this should also be rewritten to use a portion of charges, or scaled up so that the smallest component in the recipe becomes a single charge.", "//2": "Since milk is only used sparingly in the creation of hallula, to give it a glazed appearance, Cataclysm practicality suggests omitting it." + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "result": "crackers", + "category": "CC_FOOD", + "subcategory": "CSC_FOOD_BREAD", + "skill_used": "cooking", + "difficulty": 2, + "charges": 8, + "time": "45 m", + "batch_time_factors": [ 50, 5 ], + "book_learn": [ [ "baking_book", 2 ], [ "cookbook", 2 ] ], + "qualities": [ { "id": "COOK", "level": 3 } ], + "tools": [ [ [ "surface_heat", 8, "LIST" ] ] ], + "components": [ + [ [ "flour", 30 ] ], + [ [ "sugar", 4 ] ], + [ [ "salt", 5 ] ], + [ [ "water", 1 ] ], + [ [ "any_butter_or_oil", 8, "LIST" ] ] + ] } ] diff --git a/data/json/recipes/food/brewing.json b/data/json/recipes/food/brewing.json index 59701f11055fe..89494b0c430d1 100644 --- a/data/json/recipes/food/brewing.json +++ b/data/json/recipes/food/brewing.json @@ -11,7 +11,7 @@ "autolearn": true, "//": "Should be taught by a flag/mutation rather than autolearned", "batch_time_factors": [ 80, 4 ], - "qualities": [ { "id": "COOK", "level": 2 } ], + "qualities": [ { "id": "BOIL", "level": 2 } ], "tools": [ [ [ "surface_heat", 6, "LIST" ] ] ], "components": [ [ [ "water", 3 ], [ "water_clean", 3 ] ], [ [ "mycus_fruit", 1 ] ], [ [ "yeast", 1 ] ] ] }, @@ -33,66 +33,59 @@ }, { "type": "recipe", - "activity_level": "LIGHT_EXERCISE", + "activity_level": "NO_EXERCISE", "result": "brew_whiskey", "result_mult": 3, "category": "CC_FOOD", "subcategory": "CSC_FOOD_BREW", "skill_used": "cooking", "difficulty": 5, - "time": "25 m", - "batch_time_factors": [ 50, 4 ], + "time": "30 m", + "batch_time_factors": [ 95, 4 ], "book_learn": [ [ "distilling_cookbook", 5 ], [ "scots_cookbook", 5 ] ], - "qualities": [ { "id": "COOK", "level": 2 } ], + "qualities": [ { "id": "BOIL", "level": 2 } ], "tools": [ [ [ "surface_heat", 6, "LIST" ] ] ], - "components": [ - [ [ "water", 3 ], [ "water_clean", 3 ] ], - [ [ "corn", 2 ], [ "irradiated_corn", 2 ], [ "cornmeal", 6 ], [ "barley", 1 ], [ "buckwheat", 1 ] ], - [ [ "sugar", 50 ] ], - [ [ "yeast", 1 ] ] - ] + "components": [ [ [ "water", 3 ], [ "water_clean", 3 ] ], [ [ "malted_grain", 2 ] ], [ [ "sugar", 50 ] ], [ [ "yeast", 1 ] ] ] }, { "type": "recipe", - "activity_level": "LIGHT_EXERCISE", + "activity_level": "NO_EXERCISE", "result": "brew_gin", "result_mult": 3, "category": "CC_FOOD", "subcategory": "CSC_FOOD_BREW", "skill_used": "cooking", "difficulty": 3, - "time": 10000, - "batch_time_factors": [ 50, 4 ], + "time": "30 m", + "batch_time_factors": [ 95, 4 ], "book_learn": [ [ "distilling_cookbook", 3 ] ], - "qualities": [ { "id": "COOK", "level": 2 } ], + "qualities": [ { "id": "BOIL", "level": 2 } ], "tools": [ [ [ "surface_heat", 6, "LIST" ] ] ], "components": [ [ [ "water", 2 ], [ "water_clean", 2 ] ], - [ [ "vodka", 4 ], [ "whiskey", 4 ], [ "hb_beer", 4 ] ], + [ [ "corn", 3 ], [ "cornmeal", 3 ], [ "barley", 3 ], [ "buckwheat", 3 ], [ "oats", 3 ] ], [ [ "juniper", 10 ] ] ] }, { "type": "recipe", - "activity_level": "LIGHT_EXERCISE", + "activity_level": "NO_EXERCISE", "result": "brew_vodka", "result_mult": 3, "category": "CC_FOOD", "subcategory": "CSC_FOOD_BREW", "skill_used": "cooking", "difficulty": 5, - "time": "50 m", + "time": "30 m", "batch_time_factors": [ 50, 4 ], "autolearn": [ [ "cooking", 7 ] ], "book_learn": [ [ "distilling_cookbook", 4 ] ], - "qualities": [ { "id": "COOK", "level": 2 } ], + "qualities": [ { "id": "BOIL", "level": 2 } ], "tools": [ [ [ "surface_heat", 6, "LIST" ] ] ], "components": [ [ [ "water", 3 ], [ "water_clean", 3 ] ], [ [ "molasses", 2 ], - [ "corn", 2 ], - [ "cornmeal", 6 ], [ "wheat", 1 ], [ "barley", 1 ], [ "buckwheat", 1 ], @@ -105,44 +98,44 @@ }, { "type": "recipe", - "activity_level": "LIGHT_EXERCISE", + "activity_level": "NO_EXERCISE", "result": "brew_rum", "result_mult": 3, "category": "CC_FOOD", "subcategory": "CSC_FOOD_BREW", "skill_used": "cooking", "difficulty": 5, - "time": "15 m", - "batch_time_factors": [ 50, 4 ], + "time": "30 m", + "batch_time_factors": [ 95, 4 ], "book_learn": [ [ "distilling_cookbook", 4 ] ], - "qualities": [ { "id": "COOK", "level": 2 } ], + "qualities": [ { "id": "BOIL", "level": 2 } ], "tools": [ [ [ "surface_heat", 6, "LIST" ] ] ], "components": [ [ [ "water", 3 ], [ "water_clean", 3 ] ], [ [ "molasses", 2 ], [ "sugar_beet", 1 ] ], [ [ "yeast", 1 ] ] ] }, { "type": "recipe", - "activity_level": "LIGHT_EXERCISE", + "activity_level": "NO_EXERCISE", "result": "brew_moonshine", "result_mult": 15, "category": "CC_FOOD", "subcategory": "CSC_FOOD_BREW", "skill_used": "cooking", "difficulty": 2, - "time": "40 m", - "batch_time_factors": [ 50, 4 ], + "time": "30 m", + "batch_time_factors": [ 95, 4 ], "book_learn": [ [ "brewing_cookbook", 1 ], [ "family_cookbook", 1 ] ], - "qualities": [ { "id": "COOK", "level": 2 } ], + "qualities": [ { "id": "BOIL", "level": 2 } ], "tools": [ [ [ "surface_heat", 30, "LIST" ] ] ], "components": [ [ [ "water", 15 ], [ "water_clean", 15 ] ], - [ [ "cornmeal", 12 ], [ "buckwheat", 2 ] ], + [ [ "cornmeal", 12 ], [ "corn", 2 ] ], [ [ "sugar", 100 ] ], [ [ "yeast", 2 ] ] ] }, { "type": "recipe", - "activity_level": "LIGHT_EXERCISE", + "activity_level": "NO_EXERCISE", "result": "brew_moonshine", "id_suffix": "pumpkin", "result_mult": 15, @@ -151,79 +144,74 @@ "subcategory": "CSC_FOOD_BREW", "skill_used": "cooking", "difficulty": 2, - "time": "40 m", - "batch_time_factors": [ 50, 4 ], + "time": "30 m", + "batch_time_factors": [ 95, 4 ], "book_learn": [ [ "distilling_cookbook", 1 ], [ "family_cookbook", 1 ] ], - "qualities": [ { "id": "COOK", "level": 2 } ], + "qualities": [ { "id": "BOIL", "level": 2 } ], "tools": [ [ [ "surface_heat", 30, "LIST" ] ] ], "components": [ [ [ "water", 15 ], [ "water_clean", 15 ] ], [ [ "pumpkin", 12 ] ], [ [ "sugar", 50 ] ], [ [ "yeast", 2 ] ] ] }, { "type": "recipe", - "activity_level": "LIGHT_EXERCISE", + "activity_level": "NO_EXERCISE", "result": "brew_fruit_wine", "result_mult": 3, "category": "CC_FOOD", "subcategory": "CSC_FOOD_BREW", "skill_used": "cooking", "difficulty": 3, - "time": "40 m", - "batch_time_factors": [ 50, 4 ], + "time": "30 s", + "batch_time_factors": [ 95, 4 ], "book_learn": [ [ "brewing_cookbook", 2 ], [ "winemaking_beginner", 2 ] ], - "qualities": [ { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 6, "LIST" ] ] ], - "components": [ [ [ "water", 3 ], [ "water_clean", 3 ] ], [ [ "sweet_fruit", 2, "LIST" ], [ "juice", 1 ] ], [ [ "yeast", 1 ] ] ] + "qualities": [ { "id": "CONTAIN", "level": 1 } ], + "components": [ [ [ "juice", 2 ] ], [ [ "yeast", 1 ] ], [ [ "water", 2 ], [ "water_clean", 2 ] ] ] }, { "type": "recipe", - "activity_level": "LIGHT_EXERCISE", + "activity_level": "NO_EXERCISE", "result": "brew_hb_beer", - "result_mult": 15, + "result_mult": 10, "category": "CC_FOOD", "subcategory": "CSC_FOOD_BREW", "skill_used": "cooking", "difficulty": 4, - "time": "80 m", - "batch_time_factors": [ 50, 4 ], + "time": "60 m", + "batch_time_factors": [ 95, 4 ], "book_learn": [ [ "brewing_cookbook", 4 ] ], - "qualities": [ { "id": "COOK", "level": 2 } ], + "qualities": [ { "id": "BOIL", "level": 2 } ], "tools": [ [ [ "surface_heat", 6, "LIST" ] ] ], - "components": [ - [ [ "water", 15 ], [ "water_clean", 15 ] ], - [ [ "barley", 3 ], [ "buckwheat", 3 ], [ "oats", 3 ] ], - [ [ "hops", 1 ] ], - [ [ "yeast", 1 ] ] - ] + "components": [ [ [ "water", 10 ], [ "water_clean", 10 ] ], [ [ "malted_grain", 2 ] ], [ [ "hops", 1 ] ], [ [ "yeast", 1 ] ] ] }, { "type": "recipe", - "activity_level": "LIGHT_EXERCISE", + "activity_level": "NO_EXERCISE", "result": "brew_mead", "result_mult": 3, "category": "CC_FOOD", "subcategory": "CSC_FOOD_BREW", "skill_used": "cooking", "difficulty": 3, - "time": "80 m", - "batch_time_factors": [ 50, 4 ], + "time": "2 m", + "batch_time_factors": [ 95, 4 ], "book_learn": [ [ "brewing_cookbook", 2 ], [ "winemaking_beginner", 2 ] ], + "qualities": [ { "id": "CONTAIN", "level": 1 } ], "components": [ - [ [ "water", 3 ], [ "water_clean", 3 ] ], + [ [ "water_clean", 3 ] ], [ [ "honey_bottled", 10 ], [ "honeycomb", 2 ], [ "honey_glassed", 10 ] ], [ [ "yeast", 1 ] ] ] }, { "type": "recipe", - "activity_level": "LIGHT_EXERCISE", + "activity_level": "NO_EXERCISE", "result": "brew_dandelion_wine", "result_mult": 3, "category": "CC_FOOD", "subcategory": "CSC_FOOD_BREW", "skill_used": "cooking", "difficulty": 3, - "time": "80 m", - "batch_time_factors": [ 50, 4 ], + "time": "30 s", + "batch_time_factors": [ 95, 4 ], "book_learn": [ [ "brewing_cookbook", 3 ], [ "family_cookbook", 2 ], @@ -231,25 +219,25 @@ [ "textbook_survival", 3 ], [ "manual_survival", 3 ] ], - "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ], + "qualities": [ { "id": "CONTAIN", "level": 1 } ], "components": [ - [ [ "water", 3 ], [ "water_clean", 3 ] ], - [ [ "raw_dandelion", 10 ] ], + [ [ "water_clean", 3 ] ], + [ [ "soaked_dandelion", 10 ] ], [ [ "sugar", 10 ], [ "honeycomb", 1 ], [ "honey_bottled", 2 ], [ "honey_glassed", 2 ], [ "syrup", 2 ] ], [ [ "yeast", 1 ] ] ] }, { "type": "recipe", - "activity_level": "LIGHT_EXERCISE", + "activity_level": "NO_EXERCISE", "result": "brew_burdock_wine", "result_mult": 3, "category": "CC_FOOD", "subcategory": "CSC_FOOD_BREW", "skill_used": "cooking", "difficulty": 3, - "time": "80 m", - "batch_time_factors": [ 50, 4 ], + "time": "30 m", + "batch_time_factors": [ 95, 4 ], "book_learn": [ [ "brewing_cookbook", 3 ], [ "family_cookbook", 2 ], @@ -257,7 +245,8 @@ [ "textbook_survival", 3 ], [ "manual_survival", 3 ] ], - "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ], + "qualities": [ { "id": "CUT", "level": 1 }, { "id": "BOIL", "level": 2 } ], + "tools": [ [ [ "surface_heat", 6, "LIST" ] ] ], "components": [ [ [ "water", 3 ], [ "water_clean", 3 ] ], [ [ "raw_burdock", 10 ] ], @@ -267,17 +256,18 @@ }, { "type": "recipe", - "activity_level": "LIGHT_EXERCISE", + "activity_level": "NO_EXERCISE", "result": "brew_pine_wine", "result_mult": 3, "category": "CC_FOOD", "subcategory": "CSC_FOOD_BREW", "skill_used": "cooking", "difficulty": 3, - "time": "80 m", - "batch_time_factors": [ 50, 4 ], + "time": "30 m", + "batch_time_factors": [ 95, 4 ], "book_learn": [ [ "survival_book", 3 ], [ "textbook_survival", 3 ], [ "manual_survival", 3 ] ], - "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ], + "qualities": [ { "id": "CUT", "level": 1 }, { "id": "BOIL", "level": 2 } ], + "tools": [ [ [ "surface_heat", 6, "LIST" ] ] ], "components": [ [ [ "water", 3 ], [ "water_clean", 3 ] ], [ [ "pine_bough", 5 ] ], @@ -288,6 +278,40 @@ { "type": "recipe", "activity_level": "NO_EXERCISE", + "result": "malting_grain", + "result_mult": 1, + "category": "CC_FOOD", + "subcategory": "CSC_FOOD_BREW", + "skill_used": "cooking", + "difficulty": 3, + "time": "30 s", + "batch_time_factors": [ 95, 4 ], + "book_learn": [ [ "brewing_cookbook", 4 ] ], + "qualities": [ { "id": "CONTAIN", "level": 1 } ], + "components": [ + [ [ "water", 1 ], [ "water_clean", 1 ] ], + [ [ "corn", 1 ], [ "barley", 1 ], [ "buckwheat", 1 ], [ "oats", 1 ], [ "wheat", 1 ] ] + ] + }, + { + "type": "recipe", + "activity_level": "NO_EXERCISE", + "result": "soaking_dandelion", + "result_mult": 1, + "category": "CC_FOOD", + "subcategory": "CSC_FOOD_BREW", + "skill_used": "cooking", + "difficulty": 3, + "time": "30 m", + "batch_time_factors": [ 95, 4 ], + "book_learn": [ [ "brewing_cookbook", 4 ] ], + "qualities": [ { "id": "BOIL", "level": 2 } ], + "tools": [ [ [ "surface_heat", 6, "LIST" ] ] ], + "components": [ [ [ "water", 1 ], [ "water_clean", 1 ] ], [ [ "raw_dandelion", 1 ] ] ] + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", "result": "brew_vinegar", "result_mult": 10, "category": "CC_FOOD", diff --git a/data/json/recipes/food/casseroles.json b/data/json/recipes/food/casseroles.json index 4fdc4d9cc37b3..d694b41d77aaf 100644 --- a/data/json/recipes/food/casseroles.json +++ b/data/json/recipes/food/casseroles.json @@ -14,7 +14,7 @@ "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], "tools": [ [ [ "surface_heat", 6, "LIST" ] ], [ [ "casserole", -1 ] ] ], "components": [ - [ [ "corn", 8 ], [ "can_corn", 8 ] ], + [ [ "veggy_any_corn_uncooked", 8, "LIST" ] ], [ [ "salt", 7 ], [ "seasoning_salt", 7 ], [ "soysauce", 4 ] ], [ [ "seasoning_italian", 7 ], diff --git a/data/json/recipes/food/corn.json b/data/json/recipes/food/corn.json index 4e8cecb4339a3..43108157de036 100644 --- a/data/json/recipes/food/corn.json +++ b/data/json/recipes/food/corn.json @@ -13,7 +13,7 @@ "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ], "tools": [ [ [ "surface_heat", 6, "LIST" ] ] ], "components": [ - [ [ "corn", 4 ], [ "can_corn", 4 ] ], + [ [ "veggy_any_corn_uncooked", 4, "LIST" ] ], [ [ "salt", 2 ], [ "salt_water", 1 ], [ "saline", 2 ], [ "seasoning_salt", 2 ], [ "soysauce", 1 ] ], [ [ "seasoning_italian", 3 ], diff --git a/data/json/recipes/other/materials.json b/data/json/recipes/other/materials.json index 122dcebce58b4..698c70b13c16b 100644 --- a/data/json/recipes/other/materials.json +++ b/data/json/recipes/other/materials.json @@ -88,7 +88,7 @@ "autolearn": true, "qualities": [ { "id": "HAMMER", "level": 1 } ], "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], - "components": [ [ [ "copper", 25 ] ] ] + "components": [ [ [ "copper", 50 ] ] ] }, { "type": "recipe", diff --git a/data/json/recipes/other/parts.json b/data/json/recipes/other/parts.json index 1ec5fd4198619..2558110721855 100644 --- a/data/json/recipes/other/parts.json +++ b/data/json/recipes/other/parts.json @@ -402,26 +402,72 @@ "qualities": [ { "id": "HAMMER", "level": 1 }, { "id": "SCREW", "level": 1 } ], "components": [ [ [ "e_scrap", 5 ] ], [ [ "cable", 6 ] ] ] }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "result": "copper_rod", + "category": "CC_ELECTRONIC", + "subcategory": "CSC_ELECTRONIC_COMPONENTS", + "skill_used": "fabrication", + "difficulty": 4, + "time": "10 m", + "autolearn": true, + "charges": 1, + "qualities": [ { "id": "ANVIL", "level": 1 }, { "id": "HAMMER", "level": 2 }, { "id": "CHISEL", "level": 3 } ], + "proficiencies": [ { "proficiency": "prof_metalworking" }, { "proficiency": "prof_redsmithing" } ], + "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 10 ], [ "oxy_torch", 10 ] ] ], + "components": [ [ [ "copper_scrap_equivalent", 2, "LIST" ] ] ] + }, { "type": "recipe", "activity_level": "MODERATE_EXERCISE", + "result": "copper_wire", + "id_suffix": "draw_plate", + "category": "CC_ELECTRONIC", + "subcategory": "CSC_ELECTRONIC_COMPONENTS", + "skill_used": "fabrication", + "difficulty": 3, + "time": "32 m", + "autolearn": true, + "charges": 182, + "qualities": [ { "id": "ANVIL", "level": 1 }, { "id": "HAMMER", "level": 2 } ], + "proficiencies": [ { "proficiency": "prof_metalworking" }, { "proficiency": "prof_wiremaking" } ], + "//": "Requires annealing 4 times from the copper rod.", + "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 40 ], [ "oxy_torch", 40 ] ], [ [ "draw_plate", -1 ] ] ], + "components": [ [ [ "copper_rod", 1 ] ] ] + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "result": "copper_wire", + "id_suffix": "wire_draw_machine", + "category": "CC_ELECTRONIC", + "subcategory": "CSC_ELECTRONIC_COMPONENTS", + "skill_used": "fabrication", + "difficulty": 3, + "time": "20 m", + "autolearn": true, + "charges": 182, + "qualities": [ { "id": "ANVIL", "level": 1 }, { "id": "HAMMER", "level": 2 } ], + "proficiencies": [ { "proficiency": "prof_metalworking" } ], + "//": "Requires annealing 4 times from the copper rod.", + "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 40 ], [ "oxy_torch", 40 ] ], [ [ "wire_draw_machine", 100 ] ] ], + "components": [ [ [ "copper_rod", 1 ] ] ] + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", "result": "cable", "category": "CC_ELECTRONIC", "subcategory": "CSC_ELECTRONIC_COMPONENTS", "skill_used": "fabrication", "skills_required": [ "electronics", 2 ], - "difficulty": 5, - "time": "3 m", + "difficulty": 2, + "time": "1 m", "autolearn": true, - "charges": 1, - "qualities": [ - { "id": "ANVIL", "level": 1 }, - { "id": "HAMMER", "level": 2 }, - { "id": "CHISEL", "level": 3 }, - { "id": "CUT", "level": 1 } - ], - "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "surface_heat", 1, "LIST" ], [ "forge", 1 ], [ "oxy_torch", 1 ] ] ], - "components": [ [ [ "copper", 1 ] ], [ [ "duct_tape", 1 ] ] ] + "charges": 6, + "qualities": [ { "id": "CUT", "level": 1 } ], + "components": [ [ [ "copper_wire", 6 ] ], [ [ "duct_tape", 1 ] ] ] }, { "type": "recipe", @@ -488,7 +534,7 @@ "time": "1 h", "reversible": true, "autolearn": true, - "using": [ [ "soldering_standard", 150 ] ], + "using": [ [ "soldering_standard", 40 ] ], "qualities": [ { "id": "SCREW", "level": 1 } ], "proficiencies": [ { "proficiency": "prof_plasticworking" } ], "components": [ [ [ "e_scrap", 5 ] ], [ [ "amplifier", 1 ] ], [ [ "cable", 5 ] ], [ [ "plastic_chunk", 5 ] ] ] @@ -520,10 +566,9 @@ "difficulty": 7, "time": "3 h", "book_learn": [ [ "textbook_electronics", 6 ], [ "advanced_electronics", 6 ] ], - "using": [ [ "soldering_standard", 50 ] ], + "using": [ [ "soldering_standard", 50 ], [ "plastic_molding", 3 ] ], "qualities": [ { "id": "SCREW", "level": 1 } ], "proficiencies": [ { "proficiency": "prof_plasticworking" } ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], "components": [ [ [ "lens", 4 ] ], [ [ "e_scrap", 10 ] ], [ [ "amplifier", 4 ] ], [ [ "cable", 20 ] ], [ [ "plastic_chunk", 5 ] ] ] }, { diff --git a/data/json/recipes/other/parts_construction.json b/data/json/recipes/other/parts_construction.json index 4e3317164f099..ddc19c6c2f2d7 100644 --- a/data/json/recipes/other/parts_construction.json +++ b/data/json/recipes/other/parts_construction.json @@ -271,7 +271,7 @@ "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ], "proficiencies": [ { "proficiency": "prof_metalworking" }, { "proficiency": "prof_redsmithing" } ], "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] ], - "components": [ [ [ "copper_scrap_equivalent", 7, "LIST" ] ] ] + "components": [ [ [ "copper_scrap_equivalent", 8, "LIST" ] ] ] }, { "type": "recipe", diff --git a/data/json/recipes/recipe_ammo.json b/data/json/recipes/recipe_ammo.json index f013b6084ee20..dca5e8daa4155 100644 --- a/data/json/recipes/recipe_ammo.json +++ b/data/json/recipes/recipe_ammo.json @@ -665,7 +665,8 @@ "qualities": [ { "id": "CUT", "level": 1 } ], "book_learn": [ [ "plastics_book", 4 ] ], "proficiencies": [ { "proficiency": "prof_plasticworking" } ], - "tools": [ [ [ "mold_plastic", -1 ] ], [ [ "surface_heat", 15, "LIST" ] ] ], + "using": [ [ "plastic_molding", 1 ] ], + "tools": [ [ [ "surface_heat", 15, "LIST" ] ] ], "components": [ [ [ "plastic_chunk", 3 ] ], [ [ "stick", 1 ], [ "broom", 1 ], [ "2x4", 1 ], [ "bee_sting", 1 ] ], @@ -845,7 +846,7 @@ "book_learn": [ [ "textbook_gaswarfare", 4 ], [ "textbook_chemistry", 4 ], [ "adv_chemistry", 4 ], [ "recipe_labchem", 4 ] ], "qualities": [ { "id": "CHEM", "level": 1 } ], "tools": [ [ [ "surface_heat", 5, "LIST" ] ] ], - "components": [ [ [ "fungicide", 50 ] ], [ [ "chem_sulphur", 150 ] ] ] + "components": [ [ [ "fungicide", 50 ], [ "triffid_fungicide", 1 ] ], [ [ "chem_sulphur", 150 ] ] ] }, { "type": "recipe", diff --git a/data/json/recipes/recipe_deconstruction.json b/data/json/recipes/recipe_deconstruction.json index ccd9c70416174..3084f29d925bb 100644 --- a/data/json/recipes/recipe_deconstruction.json +++ b/data/json/recipes/recipe_deconstruction.json @@ -119,7 +119,7 @@ "difficulty": 1, "time": "2 m", "qualities": [ { "id": "HAMMER", "level": 1 } ], - "components": [ [ [ "scrap_copper", 10 ] ], [ [ "scrap", 3 ] ] ] + "components": [ [ [ "scrap_copper", 12 ] ], [ [ "scrap", 3 ] ] ] }, { "result": "copper_ring", @@ -3068,7 +3068,7 @@ "activity_level": "MODERATE_EXERCISE", "time": "5 m", "qualities": [ { "id": "HAMMER", "level": 1 } ], - "components": [ [ [ "copper_scrap_equivalent", 16, "LIST" ] ] ] + "components": [ [ [ "copper_scrap_equivalent", 20, "LIST" ] ] ] }, { "result": "potato_masher", @@ -3122,7 +3122,7 @@ "difficulty": 1, "time": "3 m", "qualities": [ { "id": "SAW_M", "level": 1 } ], - "components": [ [ [ "scrap_copper", 5 ] ], [ [ "scrap", 1 ] ] ] + "components": [ [ [ "scrap_copper", 6 ] ], [ [ "scrap", 1 ] ] ] }, { "result": "power_armor_basic", @@ -5026,6 +5026,26 @@ "qualities": [ { "id": "HAMMER", "level": 1 } ], "components": [ [ [ "material_rocksalt", 10 ] ] ] }, + { + "result": "broketent", + "type": "uncraft", + "activity_level": "LIGHT_EXERCISE", + "skill_used": "tailor", + "time": "10 m", + "difficulty": 1, + "qualities": [ { "id": "CUT", "level": 1 } ], + "components": [ [ [ "tarp", 1 ] ], [ [ "tent_pole", 2 ] ], [ [ "plastic_sheet", 1 ] ], [ [ "bag_plastic", 1 ] ] ] + }, + { + "result": "largebroketent", + "type": "uncraft", + "activity_level": "LIGHT_EXERCISE", + "skill_used": "tailor", + "time": "30 m", + "difficulty": 1, + "qualities": [ { "id": "CUT", "level": 1 } ], + "components": [ [ [ "tarp", 4 ] ], [ [ "tent_pole", 5 ] ], [ [ "plastic_sheet", 3 ] ], [ [ "bag_plastic", 3 ] ] ] + }, { "result": "knife_butter", "type": "uncraft", diff --git a/data/json/recipes/recipe_deconstruction_package.json b/data/json/recipes/recipe_deconstruction_package.json deleted file mode 100644 index 36fb768f05108..0000000000000 --- a/data/json/recipes/recipe_deconstruction_package.json +++ /dev/null @@ -1,460 +0,0 @@ -[ - { - "result": "mre_accessory", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "3 s", - "components": [ - [ [ "pur_tablets", 6 ] ], - [ [ "gummy_vitamins", 1 ] ], - [ [ "instant_coffee", 1 ] ], - [ [ "lemonade_powder", 1 ] ], - [ [ "matches", 1 ] ], - [ [ "gum", 2 ] ], - [ [ "paper", 8 ] ], - [ [ "spork", 1 ] ], - [ [ "beverage_bag", 1 ] ] - ], - "flags": [ "BLIND_EASY", "FULL_MAGAZINE" ] - }, - { - "result": "mre_dessert", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "3 s", - "components": [ [ [ "dry_fruit", 1 ] ], [ [ "chocolate", 1 ] ], [ [ "candy2", 1 ] ], [ [ "cookies", 1 ] ], [ [ "bag_plastic", 1 ] ] ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_chilibeans_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_chilibeans", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "spread_peanutbutter", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_bbqbeef_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_bbqbeef", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_chickennoodle_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_chickennoodle", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_spaghetti_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_spaghetti", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_chicken_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_chicken", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_beeftaco_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_beeftaco", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_beef_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_beef", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_meatball_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_meatball", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_beefstew_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_beefstew", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_chilimac_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_chilimac", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_veggy_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_veggy", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_macaronimarinara_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_macaronimarinara", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_sfettuccine_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_sfettuccine", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "spread_peanutbutter", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_ratatouille_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_ratatouille", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "spread_peanutbutter", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_cheesetort_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_cheesetort", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_mushroomfettuccine_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_mushroomfettuccine", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_mexicanchickenstew_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_mexicanchickenstew", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_chickenburritobowl_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_chickenburritobowl", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_maplesausage_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_maplesausage", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_ravioli_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_ravioli", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_pepperjackbeef_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_pepperjackbeef", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_hashbrownbacon_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_hashbrownbacon", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_lemontuna_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_lemontuna", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_asianbeef_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_asianbeef", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_chickenpesto_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_chickenpesto", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_southwestbeef_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_southwestbeef", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - }, - { - "result": "mre_hotdog_box", - "type": "uncraft", - "activity_level": "NO_EXERCISE", - "time": "30 s", - "components": [ - [ [ "mre_hotdog", 1 ] ], - [ [ "crackers", 1 ] ], - [ [ "can_cheese", 1 ] ], - [ [ "heatpack", 1 ] ], - [ [ "mre_dessert", 1 ] ], - [ [ "mre_accessory", 1 ] ], - [ [ "bag_plastic", 1 ] ] - ], - "flags": [ "BLIND_EASY" ] - } -] diff --git a/data/json/recipes/recipe_food.json b/data/json/recipes/recipe_food.json index 3e1e341ba17b6..206636c699718 100644 --- a/data/json/recipes/recipe_food.json +++ b/data/json/recipes/recipe_food.json @@ -4781,7 +4781,7 @@ "batch_time_factors": [ 83, 3 ], "flags": [ "BLIND_EASY" ], "tools": [ [ [ "rock_quern", -1 ], [ "clay_quern", -1 ] ] ], - "components": [ [ [ "bone_tainted", 1 ] ] ] + "components": [ [ [ "bone_tainted", 1 ], [ "skewer_bone", 25 ] ] ] }, { "type": "recipe", @@ -6681,7 +6681,7 @@ "autolearn": true, "batch_time_factors": [ 83, 3 ], "tools": [ [ [ "food_processor", 20 ] ] ], - "components": [ [ [ "bone_tainted", 1 ] ] ] + "components": [ [ [ "bone_tainted", 1 ], [ "skewer_bone", 25 ] ] ] }, { "result": "cattlefodder", @@ -6994,7 +6994,7 @@ "batch_time_factors": [ 83, 3 ], "flags": [ "BLIND_EASY" ], "tools": [ [ [ "mortar_pestle", -1 ] ] ], - "components": [ [ [ "bone_tainted", 1 ] ] ] + "components": [ [ [ "bone_tainted", 1 ], [ "skewer_bone", 25 ] ] ] }, { "type": "recipe", diff --git a/data/json/recipes/recipe_medsandchemicals.json b/data/json/recipes/recipe_medsandchemicals.json index 3aa108f5639e1..81b82c994a9ee 100644 --- a/data/json/recipes/recipe_medsandchemicals.json +++ b/data/json/recipes/recipe_medsandchemicals.json @@ -247,6 +247,7 @@ "type": "recipe", "activity_level": "LIGHT_EXERCISE", "result": "fungicide", + "id_suffix": "from_normal_chemicals", "category": "CC_CHEM", "subcategory": "CSC_CHEM_CHEMICALS", "skill_used": "chemistry", @@ -265,7 +266,25 @@ ], "qualities": [ { "id": "CHEM", "level": 2 } ], "tools": [ [ [ "surface_heat", 2, "LIST" ] ] ], - "components": [ [ [ "fighter_sting", 1 ], [ "disinfectant", 20 ], [ "oxy_powder", 100 ] ], [ [ "bleach", 5 ] ] ] + "components": [ [ [ "disinfectant", 20 ], [ "oxy_powder", 100 ] ], [ [ "bleach", 5 ] ] ] + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "result": "fungicide", + "id_suffix": "from_triffids", + "category": "CC_CHEM", + "subcategory": "CSC_CHEM_CHEMICALS", + "skill_used": "chemistry", + "skills_required": [ [ "survival", 6 ], [ "firstaid", 2 ] ], + "difficulty": 7, + "time": "1 h", + "autolearn": true, + "charges": 10, + "batch_time_factors": [ 90, 2 ], + "qualities": [ { "id": "CHEM", "level": 3 } ], + "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], + "components": [ [ [ "triffid_fungicide", 1 ] ], [ [ "charcoal", 5 ] ], [ [ "bleach", 1 ] ] ] }, { "type": "recipe", @@ -615,7 +634,7 @@ "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], "components": [ [ [ "water", 4 ], [ "water_clean", 4 ] ], - [ [ "meal_bone", 2 ] ], + [ [ "meal_bone", 2 ], [ "meal_bone_tainted", 4 ] ], [ [ "meal_chitin_piece", 1 ] ], [ [ "feces_bird", 10 ], [ "feces_cow", 4 ], [ "feces_manure", 6 ] ] ] @@ -649,7 +668,7 @@ "tools": [ [ [ "surface_heat", 5, "LIST" ] ] ], "components": [ [ [ "water", 4 ], [ "water_clean", 4 ] ], - [ [ "meal_bone", 2 ] ], + [ [ "meal_bone", 2 ], [ "meal_bone_tainted", 4 ] ], [ [ "meal_chitin_piece", 1 ] ], [ [ "ammonia", 1 ], [ "lye_powder", 100 ], [ "chem_saltpetre", 50 ] ] ] diff --git a/data/json/recipes/recipe_obsolete.json b/data/json/recipes/recipe_obsolete.json index 9c56edb33c045..043971409cf66 100644 --- a/data/json/recipes/recipe_obsolete.json +++ b/data/json/recipes/recipe_obsolete.json @@ -4,6 +4,151 @@ "result": "cooked_burrito", "obsolete": true }, + { + "type": "recipe", + "result": "mre_accessory", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_dessert", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_chilibeans_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_bbqbeef_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_chickennoodle_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_spaghetti_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_chicken_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_beeftaco_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_beef_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_meatball_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_beefstew_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_chilimac_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_veggy_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_macaronimarinara_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_sfettuccine_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_ratatouille_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_cheesetort_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_mushroomfettuccine_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_mexicanchickenstew_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_chickenburritobowl_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_maplesausage_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_ravioli_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_pepperjackbeef_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_hashbrownbacon_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_lemontuna_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_asianbeef_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_chickenpesto_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_southwestbeef_box", + "obsolete": true + }, + { + "type": "recipe", + "result": "mre_hotdog_box", + "obsolete": true + }, { "type": "recipe", "result": "jar_3l_glass", @@ -70,6 +215,16 @@ "result": "survivor_belt", "obsolete": true }, + { + "result": "aep_suit", + "type": "recipe", + "obsolete": true + }, + { + "result": "anbc_suit", + "type": "recipe", + "obsolete": true + }, { "type": "recipe", "result": "survival_kit", diff --git a/data/json/recipes/recipe_others.json b/data/json/recipes/recipe_others.json index 4dff391234e31..6f2dd0be22937 100644 --- a/data/json/recipes/recipe_others.json +++ b/data/json/recipes/recipe_others.json @@ -136,7 +136,8 @@ "qualities": [ { "id": "CUT", "level": 1 }, { "id": "SCREW", "level": 1 } ], "time": "28 m", "autolearn": true, - "components": [ [ [ "largebroketent", 1 ], [ "broketent", 2 ] ], [ [ "superglue", 2 ], [ "duct_tape", 20 ] ] ] + "using": [ [ "adhesive", 1 ] ], + "components": [ [ [ "tarp", 2 ] ], [ [ "tent_pole", 2 ] ], [ [ "plastic_sheet", 1 ] ], [ [ "bag_plastic", 1 ] ] ] }, { "type": "recipe", @@ -152,7 +153,8 @@ "proficiencies": [ { "proficiency": "prof_closures" }, { "proficiency": "prof_closures_waterproofing" } ], "time": "32 m", "autolearn": true, - "components": [ [ [ "largebroketent", 2 ], [ "broketent", 4 ], [ "tent_kit", 3 ] ], [ [ "superglue", 3 ], [ "duct_tape", 40 ] ] ] + "using": [ [ "adhesive", 3 ] ], + "components": [ [ [ "tarp", 6 ] ], [ [ "tent_pole", 6 ] ], [ [ "plastic_sheet", 3 ] ], [ [ "bag_plastic", 3 ] ] ] }, { "type": "recipe", @@ -260,8 +262,8 @@ "time": "20 m", "proficiencies": [ { "proficiency": "prof_plasticworking" } ], "book_learn": [ [ "recipe_bullets", 6 ], [ "textbook_fabrication", 7 ] ], - "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ] ], - "tools": [ [ [ "mold_plastic", -1 ] ], [ [ "swage", -1 ] ] ], + "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ], [ "plastic_molding", 2 ] ], + "tools": [ [ [ "swage", -1 ] ] ], "components": [ [ [ "plastic_chunk", 5 ] ], [ [ "scrap", 1 ] ] ] }, { @@ -923,7 +925,7 @@ "autolearn": true, "qualities": [ { "id": "HAMMER", "level": 3 } ], "tools": [ [ [ "press", -1 ] ], [ [ "surface_heat", 10, "LIST" ] ] ], - "components": [ [ [ "copper_scrap_equivalent", 20, "LIST" ] ], [ [ "tin", 30 ] ] ] + "components": [ [ [ "copper_scrap_equivalent", 25, "LIST" ] ], [ [ "tin", 30 ] ] ] }, { "type": "recipe", @@ -940,7 +942,7 @@ "qualities": [ { "id": "HAMMER", "level": 3 } ], "tools": [ [ [ "electrolysis_kit", 10 ] ], [ [ "surface_heat", 10, "LIST" ] ] ], "components": [ - [ [ "copper_scrap_equivalent", 20, "LIST" ] ], + [ [ "copper_scrap_equivalent", 25, "LIST" ] ], [ [ "tin", 30 ] ], [ [ "water", 3 ], [ "water_clean", 3 ] ], [ [ "any_strong_acid", 1, "LIST" ] ] @@ -985,8 +987,7 @@ "reversible": true, "autolearn": true, "proficiencies": [ { "proficiency": "prof_plasticworking" } ], - "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ] ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], + "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ], [ "plastic_molding", 2 ] ], "components": [ [ [ "plastic_chunk", 4 ] ], [ [ "lens", 1 ] ], [ [ "wire", 1 ] ] ] }, { @@ -1001,8 +1002,7 @@ "reversible": true, "book_learn": [ [ "plastics_book", 3 ] ], "proficiencies": [ { "proficiency": "prof_plasticworking" } ], - "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ] ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], + "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ], [ "plastic_molding", 2 ] ], "components": [ [ [ "plastic_chunk", 4 ] ], [ [ "lens", 1 ] ], [ [ "lens", 1 ], [ "lens_small", 1 ] ], [ [ "spring", 1 ] ] ] }, { @@ -1240,7 +1240,15 @@ "time": "1 m", "autolearn": true, "components": [ - [ [ "splinter", 40 ], [ "2x4", 6 ], [ "stick", 8 ], [ "bone_any", 40, "LIST" ], [ "pine_bough", 20 ], [ "log", 1 ] ], + [ + [ "splinter", 40 ], + [ "2x4", 6 ], + [ "stick", 8 ], + [ "bone_any", 40, "LIST" ], + [ "skewer_bone", 1000 ], + [ "pine_bough", 20 ], + [ "log", 1 ] + ], [ [ "char_kiln", 1 ] ] ] }, @@ -1443,7 +1451,7 @@ "activity_level": "fake", "result": "toolbox_workshop_empty", "category": "CC_OTHER", - "subcategory": "CSC_OTHER_TOOLS", + "subcategory": "CSC_OTHER_CONTAINERS", "skill_used": "fabrication", "skills_required": [ "mechanics", 5 ], "difficulty": 6, @@ -1593,7 +1601,8 @@ "autolearn": true, "book_learn": [ [ "plastics_book", 2 ] ], "proficiencies": [ { "proficiency": "prof_plasticworking" } ], - "tools": [ [ [ "mold_plastic", -1 ] ], [ [ "surface_heat", 5, "LIST" ] ] ], + "tools": [ [ [ "surface_heat", 5, "LIST" ] ] ], + "using": [ [ "plastic_molding", 1 ] ], "components": [ [ [ "plastic_chunk", 3 ] ] ] }, { diff --git a/data/json/recipes/recipe_vehicle.json b/data/json/recipes/recipe_vehicle.json index 4f9e0580793c2..95c123637b07f 100644 --- a/data/json/recipes/recipe_vehicle.json +++ b/data/json/recipes/recipe_vehicle.json @@ -380,9 +380,8 @@ "difficulty": 5, "time": "90 m", "autolearn": true, - "using": [ [ "welding_standard", 4 ], [ "steel_tiny", 4 ] ], + "using": [ [ "welding_standard", 4 ], [ "steel_tiny", 4 ], [ "plastic_molding", 1 ] ], "proficiencies": [ { "proficiency": "prof_plasticworking" } ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 }, { "id": "SAW_M_FINE", "level": 1 } ], "components": [ [ [ "plastic_chunk", 4 ] ] ] }, @@ -442,7 +441,8 @@ "time": "1 h", "autolearn": true, "proficiencies": [ { "proficiency": "prof_plasticworking" } ], - "tools": [ [ [ "mold_plastic", -1 ] ], [ [ "surface_heat", 50, "LIST" ] ] ], + "tools": [ [ [ "surface_heat", 50, "LIST" ] ] ], + "using": [ [ "plastic_molding", 1 ] ], "components": [ [ [ "plastic_chunk", 50 ] ] ] }, { @@ -515,13 +515,9 @@ "difficulty": 2, "time": "30 m", "autolearn": true, - "proficiencies": [ { "proficiency": "prof_carpentry_basic" }, { "proficiency": "prof_metalworking" } ], - "qualities": [ { "id": "DRILL", "level": 2 }, { "id": "HAMMER", "level": 2 }, { "id": "SAW_W", "level": 2 } ], - "components": [ [ [ "nail", 50 ] ], [ [ "2x4", 5 ] ], [ [ "cordage_36", 1 ] ], [ [ "scrap", 5 ], [ "steel_chunk", 4 ] ] ], - "tools": [ - [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], - [ [ "welder", 30 ], [ "welder_crude", 40 ], [ "toolset", 40 ], [ "forge", 20 ], [ "oxy_torch", 5 ] ] - ] + "proficiencies": [ { "proficiency": "prof_carpentry_basic" } ], + "qualities": [ { "id": "DRILL", "level": 1 }, { "id": "HAMMER", "level": 2 }, { "id": "SAW_W", "level": 2 } ], + "components": [ [ [ "nail", 12 ] ], [ [ "2x4", 2 ] ], [ [ "wire", 1 ] ] ] }, { "type": "recipe", diff --git a/data/json/recipes/recipes_holiday.json b/data/json/recipes/recipes_holiday.json index 3e6156aaf0cd5..f84bf8413e4e3 100644 --- a/data/json/recipes/recipes_holiday.json +++ b/data/json/recipes/recipes_holiday.json @@ -12,7 +12,8 @@ "qualities": [ { "id": "CUT", "level": 1 } ], "book_learn": [ [ "plastics_book", 1 ] ], "proficiencies": [ { "proficiency": "prof_plasticworking" } ], - "tools": [ [ [ "mold_plastic", -1 ] ], [ [ "surface_heat", 5, "LIST" ] ] ], + "tools": [ [ [ "surface_heat", 5, "LIST" ] ] ], + "using": [ [ "plastic_molding", 2 ] ], "components": [ [ [ "jug_plastic", 1 ], [ "bottle_plastic", 3 ], [ "bottle_plastic_small", 6 ] ], [ [ "lightstrip_inactive", 1 ] ], diff --git a/data/json/recipes/tools/containers.json b/data/json/recipes/tools/containers.json index 1a17efa7c17fc..f6bc5c4c43e4a 100644 --- a/data/json/recipes/tools/containers.json +++ b/data/json/recipes/tools/containers.json @@ -185,7 +185,8 @@ "autolearn": true, "book_learn": [ [ "plastics_book", 2 ] ], "proficiencies": [ { "proficiency": "prof_plasticworking" } ], - "tools": [ [ [ "mold_plastic", -1 ] ], [ [ "surface_heat", 5, "LIST" ] ] ], + "tools": [ [ [ "surface_heat", 5, "LIST" ] ] ], + "using": [ [ "plastic_molding", 1 ] ], "components": [ [ [ "plastic_chunk", 2 ] ] ] }, { @@ -200,7 +201,8 @@ "autolearn": true, "book_learn": [ [ "plastics_book", 2 ] ], "proficiencies": [ { "proficiency": "prof_plasticworking" } ], - "tools": [ [ [ "mold_plastic", -1 ] ], [ [ "surface_heat", 3, "LIST" ] ] ], + "tools": [ [ [ "surface_heat", 3, "LIST" ] ] ], + "using": [ [ "plastic_molding", 1 ] ], "components": [ [ [ "plastic_chunk", 1 ] ] ] }, { @@ -215,7 +217,8 @@ "autolearn": true, "book_learn": [ [ "plastics_book", 2 ] ], "proficiencies": [ { "proficiency": "prof_plasticworking" } ], - "tools": [ [ [ "mold_plastic", -1 ] ], [ [ "surface_heat", 10, "LIST" ] ] ], + "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], + "using": [ [ "plastic_molding", 1 ] ], "components": [ [ [ "plastic_chunk", 8 ] ] ] }, { @@ -512,7 +515,8 @@ "autolearn": true, "book_learn": [ [ "plastics_book", 2 ] ], "proficiencies": [ { "proficiency": "prof_plasticworking" } ], - "tools": [ [ [ "mold_plastic", -1 ] ], [ [ "surface_heat", 15, "LIST" ] ] ], + "tools": [ [ [ "surface_heat", 15, "LIST" ] ] ], + "using": [ [ "plastic_molding", 1 ] ], "components": [ [ [ "plastic_chunk", 15 ] ] ] }, { @@ -570,10 +574,10 @@ "difficulty": 4, "time": "35 m", "autolearn": true, - "using": [ [ "sewing_standard", 4 ] ], + "using": [ [ "sewing_standard", 4 ], [ "plastic_molding", 2 ] ], "book_learn": [ [ "plastics_book", 3 ] ], "proficiencies": [ { "proficiency": "prof_plasticworking" } ], - "tools": [ [ [ "mold_plastic", -1 ] ], [ [ "surface_heat", 10, "LIST" ] ] ], + "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], "components": [ [ [ "plastic_chunk", 6 ] ], [ [ "rag", 3 ], [ "leather", 3 ], [ "fur", 3 ] ] ] }, { @@ -586,10 +590,10 @@ "difficulty": 4, "time": "40 m", "autolearn": true, - "using": [ [ "sewing_standard", 4 ] ], + "using": [ [ "sewing_standard", 4 ], [ "plastic_molding", 2 ] ], "book_learn": [ [ "plastics_book", 3 ] ], "proficiencies": [ { "proficiency": "prof_plasticworking" } ], - "tools": [ [ [ "mold_plastic", -1 ] ], [ [ "surface_heat", 15, "LIST" ] ] ], + "tools": [ [ [ "surface_heat", 15, "LIST" ] ] ], "components": [ [ [ "plastic_chunk", 10 ] ], [ [ "rag", 3 ], [ "leather", 3 ], [ "fur", 3 ] ] ] }, { diff --git a/data/json/recipes/tools/tool.json b/data/json/recipes/tools/tool.json index f62926b4b75f1..bb9a5d2f7e290 100644 --- a/data/json/recipes/tools/tool.json +++ b/data/json/recipes/tools/tool.json @@ -253,10 +253,10 @@ "learning_time_multiplier": 0.1 } ], - "using": [ [ "forging_standard", 4 ] ], + "using": [ [ "forging_standard", 4 ], [ "plastic_molding", 1 ] ], "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ], - "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "mold_plastic", -1 ] ] ], - "components": [ [ [ "plastic_chunk", 1 ] ], [ [ "steel_lump", 1 ] ] ] + "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ] ], + "components": [ [ [ "plastic_chunk", 2 ] ], [ [ "steel_lump", 2 ] ] ] }, { "result": "steel_pan", @@ -646,7 +646,7 @@ "autolearn": true, "qualities": [ { "id": "HAMMER", "level": 2 } ], "tools": [ [ [ "surface_heat", 10, "LIST" ], [ "forge", 10 ], [ "oxy_torch", 2 ] ] ], - "components": [ [ [ "copper_scrap_equivalent", 16, "LIST" ] ] ] + "components": [ [ [ "copper_scrap_equivalent", 20, "LIST" ] ] ] }, { "type": "recipe", @@ -952,7 +952,8 @@ "autolearn": false, "proficiencies": [ { "proficiency": "prof_plasticworking" } ], "book_learn": [ [ "plastics_book", 1 ], [ "textbook_extraction", 2 ], [ "textbook_fabrication", 2 ] ], - "tools": [ [ [ "surface_heat", 5, "LIST" ] ], [ [ "mold_plastic", -1 ] ] ], + "tools": [ [ [ "surface_heat", 5, "LIST" ] ] ], + "using": [ [ "plastic_molding", 1 ] ], "components": [ [ [ "plastic_chunk", 1 ] ] ] }, { diff --git a/data/json/recipes/tools/tools_electronic.json b/data/json/recipes/tools/tools_electronic.json index f9617e34770c3..b5540559d46d5 100644 --- a/data/json/recipes/tools/tools_electronic.json +++ b/data/json/recipes/tools/tools_electronic.json @@ -72,9 +72,9 @@ "learning_time_multiplier": 0.1 } ], - "using": [ [ "forging_standard", 4 ], [ "soldering_standard", 20 ] ], + "using": [ [ "forging_standard", 4 ], [ "soldering_standard", 20 ], [ "plastic_molding", 1 ] ], "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ], - "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "mold_plastic", -1 ] ] ], + "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ] ], "components": [ [ [ "plastic_chunk", 1 ] ], [ [ "steel_lump", 1 ] ], [ [ "e_scrap", 1 ] ], [ [ "motor_micro", 1 ] ] ] }, { @@ -282,9 +282,8 @@ { "proficiency": "prof_plasticworking", "required": false, "time_multiplier": 1.5 }, { "proficiency": "prof_elec_soldering" } ], - "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ] ], + "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ], [ "plastic_molding", 2 ] ], "qualities": [ { "id": "SCREW", "level": 1 } ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], "components": [ [ [ "plastic_chunk", 6 ] ], [ [ "blade", 2 ] ], @@ -308,9 +307,8 @@ "decomp_learn": 4, "book_learn": [ [ "advanced_electronics", 3 ], [ "textbook_electronics", 3 ] ], "proficiencies": [ { "proficiency": "prof_plasticworking", "time_multiplier": 1.5 }, { "proficiency": "prof_elec_soldering" } ], - "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ] ], + "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ], [ "plastic_molding", 2 ] ], "qualities": [ { "id": "SCREW", "level": 1 } ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], "components": [ [ [ "antenna", 1 ], [ "screwdriver", 1 ], [ "xacto", 1 ], [ "knife_butter", 1 ] ], [ [ "plastic_chunk", 6 ] ], @@ -334,9 +332,8 @@ "decomp_learn": 5, "book_learn": [ [ "advanced_electronics", 4 ], [ "textbook_electronics", 4 ] ], "proficiencies": [ { "proficiency": "prof_plasticworking", "time_multiplier": 1.5 }, { "proficiency": "prof_elec_soldering" } ], - "using": [ [ "soldering_standard", 12 ], [ "surface_heat", 12 ] ], + "using": [ [ "soldering_standard", 12 ], [ "surface_heat", 12 ], [ "plastic_molding", 2 ] ], "qualities": [ { "id": "SCREW", "level": 1 } ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], "components": [ [ [ "plastic_chunk", 6 ] ], [ [ "chain", 1 ] ], @@ -363,9 +360,8 @@ { "proficiency": "prof_plasticworking", "required": false, "time_multiplier": 1.5 }, { "proficiency": "prof_elec_soldering" } ], - "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ] ], + "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ], [ "plastic_molding", 2 ] ], "qualities": [ { "id": "SCREW", "level": 1 } ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], "components": [ [ [ "plastic_chunk", 6 ] ], [ [ "circsaw_blade", 1 ] ], @@ -578,10 +574,9 @@ "time": "30 m", "reversible": true, "autolearn": true, - "using": [ [ "soldering_standard", 5 ] ], + "using": [ [ "soldering_standard", 5 ], [ "plastic_molding", 2 ] ], "qualities": [ { "id": "SCREW", "level": 1 } ], "proficiencies": [ { "proficiency": "prof_plasticworking" }, { "proficiency": "prof_elec_soldering" } ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], "components": [ [ [ "superglue", 1 ] ], [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 3 ] ], [ [ "cable", 5 ] ], [ [ "motor_micro", 1 ] ] ] }, { @@ -659,6 +654,36 @@ [ [ "power_supply", 1 ] ] ] }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "result": "makeshift_vacuum_mold", + "category": "CC_ELECTRONIC", + "subcategory": "CSC_ELECTRONIC_TOOLS", + "skill_used": "mechanics", + "skills_required": [ "electronics", 2 ], + "difficulty": 4, + "time": "1 h", + "reversible": true, + "book_learn": [ [ "theater_props", 3 ], [ "manual_mechanics", 5 ], [ "manual_electronics", 5 ] ], + "using": [ [ "soldering_standard", 10 ] ], + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "SAW_W", "level": 1 } ], + "proficiencies": [ + { "proficiency": "prof_plasticworking" }, + { "proficiency": "prof_elec_soldering" }, + { "proficiency": "prof_carpentry_basic" } + ], + "components": [ + [ [ "2x4", 4 ] ], + [ [ "plastic_chunk", 2 ] ], + [ [ "clamp", 2 ] ], + [ [ "vac_pump", 1 ] ], + [ [ "nail", 16 ] ], + [ [ "wood_panel", 1 ] ], + [ [ "hose", 1 ] ], + [ [ "power_supply", 1 ] ] + ] + }, { "type": "recipe", "activity_level": "LIGHT_EXERCISE", @@ -676,10 +701,9 @@ [ "textbook_fabrication", 3 ], [ "manual_fabrication", 4 ] ], - "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ] ], + "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ], [ "plastic_molding", 2 ] ], "qualities": [ { "id": "SCREW", "level": 1 } ], "proficiencies": [ { "proficiency": "prof_plasticworking", "time_multiplier": 1.5 }, { "proficiency": "prof_elec_soldering" } ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], "components": [ [ [ "razor_blade", 1 ] ], [ [ "motor_micro", 1 ] ], [ [ "power_supply", 1 ] ], [ [ "plastic_chunk", 1 ] ] ] }, { @@ -695,10 +719,9 @@ "reversible": true, "decomp_learn": 5, "book_learn": [ [ "textbook_electronics", 7 ], [ "textbook_robots", 6 ] ], - "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 20 ] ], + "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 20 ], [ "plastic_molding", 3 ] ], "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "SAW_M", "level": 1 }, { "id": "CUT", "level": 1 } ], "proficiencies": [ { "proficiency": "prof_plasticworking", "time_multiplier": 1.5 }, { "proficiency": "prof_elec_soldering" } ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], "components": [ [ [ "superglue", 4 ], [ "bone_glue", 4 ] ], [ [ "antenna", 1 ] ], @@ -713,5 +736,28 @@ [ [ "spring", 2 ] ], [ [ "radio_car_wheel", 1 ] ] ] + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "result": "wire_draw_machine", + "category": "CC_ELECTRONIC", + "subcategory": "CSC_ELECTRONIC_TOOLS", + "skill_used": "fabrication", + "skills_required": [ [ "mechanics", 2 ], [ "electronics", 1 ] ], + "difficulty": 4, + "time": "1 h", + "autolearn": true, + "using": [ [ "welding_standard", 10 ] ], + "qualities": [ { "id": "SAW_M", "level": 1 } ], + "proficiencies": [ { "proficiency": "prof_welding_basic" } ], + "components": [ + [ [ "motor_small", 1 ] ], + [ [ "jerrycan", 1 ] ], + [ [ "sheet_metal_small", 4 ] ], + [ [ "scrap", 5 ] ], + [ [ "draw_plate", 1 ] ], + [ [ "cable", 10 ] ] + ] } ] diff --git a/data/json/recipes/tools/tools_hand.json b/data/json/recipes/tools/tools_hand.json index a92e2e5837484..4ae6760552340 100644 --- a/data/json/recipes/tools/tools_hand.json +++ b/data/json/recipes/tools/tools_hand.json @@ -1090,16 +1090,29 @@ }, { "type": "recipe", - "activity_level": "LIGHT_EXERCISE", + "activity_level": "MODERATE_EXERCISE", "result": "washboard", "category": "CC_OTHER", "subcategory": "CSC_OTHER_TOOLS", "skill_used": "fabrication", "difficulty": 1, - "time": "1 m", + "time": "25 m", "autolearn": true, "proficiencies": [ { "proficiency": "prof_carving" } ], "qualities": [ { "id": "CUT", "level": 1 } ], "components": [ [ [ "2x4", 1 ] ] ] + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "result": "draw_plate", + "category": "CC_OTHER", + "subcategory": "CSC_OTHER_TOOLS", + "skill_used": "fabrication", + "difficulty": 2, + "time": "5 m", + "autolearn": true, + "tools": [ [ [ "cordless_drill", 20 ] ] ], + "components": [ [ [ "sheet_metal_small", 1 ] ] ] } ] diff --git a/data/json/recipes/tools/tools_primitive.json b/data/json/recipes/tools/tools_primitive.json index c1774b7b84c37..bfa3732aadfee 100644 --- a/data/json/recipes/tools/tools_primitive.json +++ b/data/json/recipes/tools/tools_primitive.json @@ -97,7 +97,7 @@ "proficiencies": [ { "proficiency": "prof_metalworking" }, { "proficiency": "prof_redsmithing" } ], "components": [ [ [ "stick", 1 ], [ "2x4", 1 ] ], - [ [ "copper_scrap_equivalent", 40, "LIST" ] ], + [ [ "copper_scrap_equivalent", 50, "LIST" ] ], [ [ "cordage_short", 2, "LIST" ], [ "filament", 100, "LIST" ], [ "duct_tape", 40 ] ] ] }, diff --git a/data/json/recipes/weapon/bashing.json b/data/json/recipes/weapon/bashing.json index 67d8c55f7ec8d..5061ae80d4380 100644 --- a/data/json/recipes/weapon/bashing.json +++ b/data/json/recipes/weapon/bashing.json @@ -338,8 +338,9 @@ "difficulty": 6, "time": "1 h", "book_learn": [ [ "recipe_melee", 4 ] ], - "proficiencies": [ { "proficiency": "prof_plasticworking", "fail_multiplier": 1.5 } ], - "tools": [ [ [ "mold_plastic", -1 ] ], [ [ "surface_heat", 10, "LIST" ] ] ], + "proficiencies": [ { "proficiency": "prof_plasticworking", "fail_multiplier": 5 } ], + "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], + "using": [ [ "plastic_molding", 1 ] ], "components": [ [ [ "plastic_chunk", 10 ] ] ] }, { @@ -368,9 +369,8 @@ "difficulty": 6, "time": "2 h", "book_learn": [ [ "recipe_melee", 5 ] ], - "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ] ], + "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ], [ "plastic_molding", 1 ] ], "qualities": [ { "id": "SCREW", "level": 1 } ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], "proficiencies": [ { "proficiency": "prof_elec_soldering", "fail_multiplier": 1.5 }, { "proficiency": "prof_shock_weapons" }, diff --git a/data/json/recipes/weapon/explosive.json b/data/json/recipes/weapon/explosive.json index 01214c09c045f..6beb50927cc73 100644 --- a/data/json/recipes/weapon/explosive.json +++ b/data/json/recipes/weapon/explosive.json @@ -172,7 +172,7 @@ "qualities": [ { "id": "SCREW", "level": 1 } ], "components": [ [ [ "bleach", 2 ], [ "oxy_powder", 200 ] ], - [ [ "fungicide", 50 ] ], + [ [ "triffid_fungicide", 1 ], [ "fungicide", 50 ] ], [ [ "chem_sulphur", 150 ] ], [ [ "canister_empty", 1 ], [ "can_food", 1 ], [ "can_drink", 1 ] ], [ [ "superglue", 1 ] ] diff --git a/data/json/recipes/weapon/mods.json b/data/json/recipes/weapon/mods.json index adeb7a1f92b52..e3b93b332e099 100644 --- a/data/json/recipes/weapon/mods.json +++ b/data/json/recipes/weapon/mods.json @@ -479,10 +479,9 @@ "time": "15 m", "decomp_learn": 3, "book_learn": [ [ "manual_rifle", 2 ], [ "manual_fabrication", 3 ], [ "textbook_fabrication", 3 ] ], - "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ] ], + "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ], [ "plastic_molding", 2 ] ], "qualities": [ { "id": "SCREW_FINE", "level": 1 } ], "proficiencies": [ { "proficiency": "prof_plasticworking" } ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], "components": [ [ [ "scrap", 1 ], [ "can_drink", 1 ], [ "can_food", 1 ], [ "canister_empty", 1 ], [ "plastic_chunk", 1 ] ], [ [ "lens", 2 ] ], @@ -501,10 +500,9 @@ "time": "15 m", "decomp_learn": 4, "book_learn": [ [ "manual_pistol", 2 ], [ "manual_fabrication", 3 ], [ "textbook_fabrication", 3 ] ], - "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ] ], + "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ], [ "plastic_molding", 2 ] ], "qualities": [ { "id": "SCREW_FINE", "level": 1 } ], "proficiencies": [ { "proficiency": "prof_plasticworking" } ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], "components": [ [ [ "scrap", 1 ], [ "can_drink", 1 ], [ "can_food", 1 ], [ "canister_empty", 1 ], [ "plastic_chunk", 1 ] ], [ [ "lens", 2 ] ], @@ -523,10 +521,9 @@ "time": "15 m", "decomp_learn": 4, "book_learn": [ [ "manual_pistol", 3 ], [ "manual_fabrication", 4 ], [ "textbook_fabrication", 4 ] ], - "using": [ [ "welding_standard", 15 ] ], + "using": [ [ "welding_standard", 15 ], [ "plastic_molding", 2 ] ], "proficiencies": [ { "proficiency": "prof_plasticworking" } ], "qualities": [ { "id": "HAMMER_FINE", "level": 1 }, { "id": "SCREW_FINE", "level": 1 }, { "id": "SAW_M_FINE", "level": 1 } ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], "components": [ [ [ "scrap", 3 ], [ "steel_chunk", 1 ] ], [ [ "plastic_chunk", 1 ] ], [ [ "spring", 1 ] ] ] }, { diff --git a/data/json/recipes/weapon/piercing.json b/data/json/recipes/weapon/piercing.json index e2f4d6d649448..d7349b8f74f86 100644 --- a/data/json/recipes/weapon/piercing.json +++ b/data/json/recipes/weapon/piercing.json @@ -363,7 +363,7 @@ "proficiencies": [ { "proficiency": "prof_metalworking" }, { "proficiency": "prof_redsmithing" } ], "components": [ [ [ "rag", 1 ], [ "felt_patch", 1 ], [ "duct_tape", 50 ], [ "cordage_short", 2, "LIST" ], [ "filament", 100, "LIST" ] ], - [ [ "copper_scrap_equivalent", 8, "LIST" ] ] + [ [ "copper_scrap_equivalent", 12, "LIST" ] ] ] }, { @@ -469,7 +469,7 @@ [ [ "long_pole", 1 ] ], [ [ "rag", 1 ], [ "felt_patch", 1 ], [ "leather", 1 ], [ "fur", 1 ] ], [ [ "duct_tape", 20 ], [ "cordage_short", 1, "LIST" ], [ "filament", 50, "LIST" ] ], - [ [ "copper_scrap_equivalent", 12, "LIST" ] ] + [ [ "copper_scrap_equivalent", 15, "LIST" ] ] ] }, { @@ -506,7 +506,7 @@ { "proficiency": "prof_redsmithing" }, { "proficiency": "prof_carving", "fail_multiplier": 1 } ], - "components": [ [ [ "stick_long", 1 ] ], [ [ "copper_scrap_equivalent", 12, "LIST" ] ] ] + "components": [ [ [ "stick_long", 1 ] ], [ [ "copper_scrap_equivalent", 15, "LIST" ] ] ] }, { "type": "recipe", diff --git a/data/json/recipes/weapon/ranged.json b/data/json/recipes/weapon/ranged.json index e7b3f0c2ce70c..bd29efe9f1732 100644 --- a/data/json/recipes/weapon/ranged.json +++ b/data/json/recipes/weapon/ranged.json @@ -326,13 +326,8 @@ "difficulty": 1, "time": "4 h", "book_learn": [ [ "manual_shotgun", 1 ] ], - "qualities": [ - { "id": "SAW_M", "level": 1 }, - { "id": "GLARE", "level": 2 }, - { "id": "HAMMER", "level": 2 }, - { "id": "FILE", "level": 1 }, - { "id": "WELD", "level": 1 } - ], + "qualities": [ { "id": "SAW_M", "level": 1 }, { "id": "HAMMER", "level": 2 }, { "id": "FILE", "level": 1 } ], + "using": [ [ "welding_standard", 1 ] ], "tools": [ [ [ "shot_00", -1 ], @@ -435,13 +430,8 @@ "difficulty": 2, "time": "5 h", "book_learn": [ [ "manual_shotgun", 1 ] ], - "qualities": [ - { "id": "SAW_M", "level": 1 }, - { "id": "GLARE", "level": 2 }, - { "id": "HAMMER", "level": 2 }, - { "id": "FILE", "level": 1 }, - { "id": "WELD", "level": 1 } - ], + "qualities": [ { "id": "SAW_M", "level": 1 }, { "id": "HAMMER", "level": 2 }, { "id": "FILE", "level": 1 } ], + "using": [ [ "welding_standard", 1 ] ], "tools": [ [ [ "shot_00", -1 ], @@ -485,13 +475,8 @@ "difficulty": 2, "time": "2 h", "book_learn": [ [ "manual_shotgun", 1 ] ], - "qualities": [ - { "id": "SAW_M", "level": 1 }, - { "id": "GLARE", "level": 2 }, - { "id": "HAMMER", "level": 2 }, - { "id": "FILE", "level": 1 }, - { "id": "WELD", "level": 1 } - ], + "qualities": [ { "id": "SAW_M", "level": 1 }, { "id": "HAMMER", "level": 2 }, { "id": "FILE", "level": 1 } ], + "using": [ [ "welding_standard", 1 ] ], "proficiencies": [ { "proficiency": "prof_metalworking" }, { "proficiency": "prof_welding_basic" }, @@ -515,9 +500,9 @@ { "id": "HAMMER", "level": 2 }, { "id": "FILE", "level": 1 }, { "id": "WRENCH", "level": 1 }, - { "id": "DRILL", "level": 2 }, - { "id": "WELD", "level": 1 } + { "id": "DRILL", "level": 2 } ], + "using": [ [ "welding_standard", 1 ] ], "tools": [ [ [ "shot_00", -1 ], @@ -677,7 +662,7 @@ "reversible": true, "decomp_learn": 1, "proficiencies": [ { "proficiency": "prof_bowyery" }, { "proficiency": "prof_carving" } ], - "book_learn": [ [ "manual_archery", 2 ], [ "recipe_bows", 1 ], [ "book_archery", 3 ] ], + "book_learn": [ [ "manual_archery", 4 ], [ "recipe_bows", 3 ], [ "book_archery", 4 ] ], "qualities": [ { "id": "CUT", "level": 1 } ], "components": [ [ [ "stick_long", 1 ], [ "2x4", 1 ] ], [ [ "cordage_superior", 2, "LIST" ] ] ] }, @@ -1199,7 +1184,8 @@ "autolearn": true, "qualities": [ { "id": "HAMMER", "level": 1 } ], "proficiencies": [ { "proficiency": "prof_plasticworking", "time_multiplier": 3 } ], - "tools": [ [ [ "mold_plastic", -1 ] ], [ [ "surface_heat", 10, "LIST" ] ] ], + "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], + "using": [ [ "plastic_molding", 1 ] ], "components": [ [ [ "plastic_chunk", 4 ] ], [ [ "scrap", 2 ] ] ] }, { @@ -1327,7 +1313,7 @@ "time": "8 h", "reversible": true, "book_learn": [ [ "advanced_electronics", 5 ], [ "textbook_electronics", 5 ], [ "textbook_anarch", 6 ] ], - "using": [ [ "soldering_standard", 20 ], [ "surface_heat", 10 ] ], + "using": [ [ "soldering_standard", 20 ], [ "surface_heat", 10 ], [ "plastic_molding", 3 ] ], "qualities": [ { "id": "SAW_M_FINE", "level": 1 }, { "id": "SCREW", "level": 1 }, { "id": "SCREW_FINE", "level": 1 } ], "proficiencies": [ { "proficiency": "prof_elec_soldering" }, @@ -1335,7 +1321,7 @@ { "proficiency": "prof_gunsmithing_improv" }, { "proficiency": "prof_plasticworking", "time_multiplier": 1.25, "learning_time_multiplier": 0.1 } ], - "tools": [ [ [ "mold_plastic", -1 ] ], [ [ "laptop", -1 ] ] ], + "tools": [ [ [ "laptop", -1 ] ] ], "components": [ [ [ "plastic_chunk", 10 ] ], [ [ "superglue", 1 ] ], diff --git a/data/json/regional_map_settings.json b/data/json/regional_map_settings.json index 645c78f69b909..8f76f1e4ecf9a 100644 --- a/data/json/regional_map_settings.json +++ b/data/json/regional_map_settings.json @@ -2,7 +2,29 @@ { "type": "region_settings", "id": "default", - "default_oter": "field", + "default_oter": [ + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "field", + "solid_earth", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock" + ], "default_groundcover": [ [ "t_region_groundcover", 1 ] ], "region_terrain_and_furniture": { "terrain": { diff --git a/data/json/requirements/cooking_components.json b/data/json/requirements/cooking_components.json index 1e314b25eca32..42b535484276c 100644 --- a/data/json/requirements/cooking_components.json +++ b/data/json/requirements/cooking_components.json @@ -725,10 +725,15 @@ ] ] }, + { + "id": "veggy_any_corn_uncooked", + "type": "requirement", + "components": [ [ [ "corn", 1 ], [ "corn_kernels", 1 ], [ "rehydrated_corn_kernels", 1 ], [ "can_corn", 1 ] ] ] + }, { "id": "veggy_any_uncooked", "type": "requirement", - "components": [ [ [ "rehydrated_veggy", 1 ], [ "rehydrated_corn_kernels", 1 ], [ "veggy_any_fresh_uncooked", 1, "LIST" ] ] ] + "components": [ [ [ "rehydrated_veggy", 1 ], [ "veggy_any_corn_uncooked", 1, "LIST" ], [ "veggy_any_fresh_uncooked", 1, "LIST" ] ] ] }, { "id": "veggy_any_fresh_uncooked", diff --git a/data/json/requirements/materials.json b/data/json/requirements/materials.json index 312a6fee77092..67b63603d1ac7 100644 --- a/data/json/requirements/materials.json +++ b/data/json/requirements/materials.json @@ -39,7 +39,7 @@ "id": "copper_scrap_equivalent", "type": "requirement", "//": "Material used for equivalence between one unit of scrap copper and corresponding amount of elemental copper.", - "components": [ [ [ "scrap_copper", 1 ], [ "copper", 25 ] ] ] + "components": [ [ [ "scrap_copper", 1 ], [ "copper", 50 ] ] ] }, { "id": "plant_cordage", diff --git a/data/json/requirements/tailoring.json b/data/json/requirements/tailoring.json index 3c33b1a0954ad..0dc2fad783add 100644 --- a/data/json/requirements/tailoring.json +++ b/data/json/requirements/tailoring.json @@ -190,10 +190,10 @@ { "id": "plastic_molding", "type": "requirement", - "//": "Melting and reshaping plastic items, per 70 g of plastic. Usually takes 30 minutes per unit.", + "//": "Melting and reshaping plastic items through the use of vacuum forming molds, per 70 g of plastic. Usually takes 30 minutes per unit.", "qualities": [ { "id": "CUT", "level": 1 } ], - "tools": [ [ [ "mold_plastic", -1 ] ], [ [ "surface_heat", 5, "LIST" ] ] ], - "components": [ [ [ "plastic_chunk", 1 ] ] ] + "tools": [ [ [ "makeshift_vacuum_mold", 4 ], [ "vac_mold", 2 ] ], [ [ "surface_heat", 5, "LIST" ] ] ], + "components": [ [ [ "polycarbonate_sheet", 1 ] ] ] }, { "id": "tailoring_cotton", diff --git a/data/json/scenarios.json b/data/json/scenarios.json index 04c2e700792e3..c1a4726a2217a 100644 --- a/data/json/scenarios.json +++ b/data/json/scenarios.json @@ -58,7 +58,8 @@ "sloc_school" ], "start_name": "In Large Building", - "flags": [ "SUR_START", "CITY_START", "LONE_START" ] + "surround_groups": [ [ "GROUP_BLACK_ROAD", 70.0 ] ], + "flags": [ "CITY_START", "LONE_START" ] }, { "type": "scenario", @@ -85,7 +86,8 @@ "sloc_police" ], "start_name": "In Town", - "flags": [ "SUR_START", "CITY_START", "LONE_START" ] + "surround_groups": [ [ "GROUP_BLACK_ROAD", 70.0 ] ], + "flags": [ "CITY_START", "LONE_START" ] }, { "type": "scenario", @@ -103,7 +105,8 @@ "sloc_lighthouse_ground", "sloc_cabin_lake", "sloc_lodge_ground", - "sloc_freshwater_research_station" + "sloc_freshwater_research_station", + "sloc_light_industry_scen" ], "start_name": "Safe Building", "flags": [ "LONE_START" ] @@ -318,7 +321,8 @@ "sloc_campground" ], "start_name": "Outside Town", - "flags": [ "SUR_START", "LONE_START" ], + "surround_groups": [ [ "GROUP_BLACK_ROAD", 70.0 ] ], + "flags": [ "LONE_START" ], "custom_initial_date": { "season": "winter" }, "add_professions": true, "professions": [ "sheltered_survivor", "sheltered_militia", "winter_scavenger", "winter_army" ] diff --git a/data/json/snippets/effect_on_conditions.json b/data/json/snippets/effect_on_conditions.json new file mode 100644 index 0000000000000..11138e0ace058 --- /dev/null +++ b/data/json/snippets/effect_on_conditions.json @@ -0,0 +1,40 @@ +[ + { + "type": "snippet", + "category": "NIGHT_MESSAGES_1", + "text": [ + "You see what seems to be a new constellation in the sky. The stars are quite dense and are precisely aligned in several regular polyhedrons next to each other.", + "You see what seems to be a new constellation in the sky. The stars are in a precise spiral, with the central star constantly shifting color.", + "You see several shooting stars. They seem larger than normal, and are all a deep purple.", + "You see a shooting star. It is bright red and does not fall in a straight line.", + "For a brief moment you see a shape in the sky roughly the size of the moon, but square and green.", + "For a brief moment, the stars and moon all disappear. When they come back, you're not sure if they're in the same places as they were." + ] + }, + { + "type": "snippet", + "category": "NIGHT_MESSAGES_2", + "text": [ + "You see what seems to be a new constellation in the sky. It changes shape as you look from a triangle to a pentagon.", + "You see what seems to be a new constellation in the sky, in the shape of a hexagon. It's easy to pick out - there are glowing lines between the stars.", + "You see several shooting stars. After they go below the horizon a bright glow briefly appears.", + "You see a shooting star. It is bright red and stops falling after a second to hover there ominously.", + "For a brief moment you see a shape in the sky roughly the size of the moon. It had almost looked like a blinking eye.", + "You see a moving object in the sky with a blinking red light coming from it." + ] + }, + { + "type": "snippet", + "category": "NIGHT_MESSAGES_3", + "text": [ + "You see a once-familiar constellation and watch as several of its stars move.", + "You see what seems to be a new constellation in the sky. It reminds you of a serpent - it moves like one.", + "You see a shooting star. It seems to be heading straight for you before vanishing suddenly.", + "For a brief moment, you see a pentagonal shape in the sky, roughly twice the size of the moon. It splits into several triangles and then reforms before vanishing.", + "As you look at the stars, they wink out for an instant, reappearing just slightly out of place, as if the night sky had been rotated ever so slightly. This occurs twice more, in rapid succession.", + "A strange cloud seems to float in the sky, at the very edge of your peripheral vision. Just as you shift your gaze to it, it evaporates, boiling away into a stream of shooting stars.", + "For a brief moment, you feel like you've been jerked to the side. You haven't moved, though - the stars have.", + "As you look at the stars, a broad swath of them are plunged into darkness, then come back to life in ragged succession." + ] + } +] diff --git a/data/json/snippets/lab_signs.json b/data/json/snippets/lab_signs.json new file mode 100644 index 0000000000000..3916f8526c360 --- /dev/null +++ b/data/json/snippets/lab_signs.json @@ -0,0 +1,85 @@ +[ + { + "type": "snippet", + "category": "lab_access_signage", + "//": "signage for the civilian areas (public).", + "text": [ + "***LAB***\nAuthorized Personnel Only", + "Restricted\nAccess\nArea", + "Be Prepared to present ID", + "No visitors beyond this point" + ] + }, + { + "type": "snippet", + "category": "lab_maintenance_signage", + "//": "signage for the maintenance areas (non-public).", + "text": [ + "Restricted\nAccess\nArea", + "Be Prepared to present ID", + "Keep hands free from machinery", + "STOP\nFor Your\nSafety", + "NOTICE\nSafety Glasses Required", + "DANGER\nKeep Hands Clear\nWhen Equipment\nIs Running" + ] + }, + { + "type": "snippet", + "category": "lab_security_signage", + "//": "signage for the civilian security areas (non-public).", + "text": [ + "Restricted\nAccess\nArea", + "Be Prepared to present ID", + "Keep guns holstered or locked up", + "Tasers Save Lives", + "STOP\nWhere's your gun?", + "NOTICE\nCheck in with your squad on the hour." + ] + }, + { + "type": "snippet", + "category": "lab_safety_snippet", + "//": "signage for research scientist levels (working lab areas).", + "text": [ + "Keep Equipment Clean and Hygenic", + "PPE Required", + "Biohazard", + "Do not look into laser with remaining eye", + "There have been\n[4]\ndays without a life-threatening workplace accident", + "Be Alert, Don't get Hurt!", + "Safety First\nWork Safely", + "THINK!\nDON'T CONTAMINATE!\nDon't store food in sample refrigerators!", + "Report ALL Accidents", + "Think!\nDo it the safe way.\nDo it the right way.\nDo it everyday.", + "3 causes of accidents are\nI didn't think\nI didn't see\nI didn't know", + "Think Safety First!", + "Not to be operated by fuckwits", + "Stokey the Chemist says:\n'Only YOU can prevent lab fires. Because you're the asshole who started the last three.'", + "Biohazard", + "Biohazard", + "Biohazard" + ] + }, + { + "type": "snippet", + "category": "lab_volunteer_snippet", + "//": "propaganda signage for the volunteer mutant level.", + "text": [ + "For Country\n For\n Mom", + "Report any unusual or new symptoms", + "Report any unusual or new manifestations", + " Thank You\n For\nYour Service", + " Remember:\nYou're our\n best hope", + "Go Boldly Into Your Future!", + "Metamorphosis Checks at 6:00, 12:00, 18:00", + "Bob palmed his midday dose.\nBob's in the infirmary now\nDon't be Bob: Take doses as advised.", + "Dream Journals\n Save\n Lives", + "Who is your spirit animal?", + "Embrace the Wonder\nEmbrace the Unknown", + "Your best self is yearning to break free!", + "Humans only have 5 senses", + "Find your spirit animal guide!\n Group meditation\n Wednesdays 13:00", + " Do Not\n Share\nMedications" + ] + } +] diff --git a/data/json/start_locations.json b/data/json/start_locations.json index d26eff06a0010..8148499ea4027 100644 --- a/data/json/start_locations.json +++ b/data/json/start_locations.json @@ -467,7 +467,7 @@ "type": "start_location", "id": "sloc_lodge_ground", "name": "Hunting Lodge", - "terrain": [ "lodge_ground" ] + "terrain": [ "lodge_ground1" ] }, { "type": "start_location", @@ -497,6 +497,17 @@ "type": "start_location", "id": "sloc_road", "name": "Road", - "terrain": [ "road_straight", "road_curved", "road_end" ] + "terrain": [ + "road_nesw_manhole", + { "om_terrain": "road_straight", "om_terrain_match_type": "PREFIX" }, + { "om_terrain": "road_curved", "om_terrain_match_type": "PREFIX" }, + { "om_terrain": "road_end", "om_terrain_match_type": "PREFIX" } + ] + }, + { + "type": "start_location", + "id": "sloc_light_industry_scen", + "name": "Industrial Offices", + "terrain": [ "s_lightindustry_scen_10" ] } ] diff --git a/data/json/test_regions.json b/data/json/test_regions.json index f2b9e756918a1..ecf4fbfda8bca 100644 --- a/data/json/test_regions.json +++ b/data/json/test_regions.json @@ -2,7 +2,29 @@ { "type": "region_settings", "id": "desert_test", - "default_oter": "field", + "default_oter": [ + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "field", + "solid_earth", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock" + ], "default_groundcover": [ [ "t_region_groundcover", 1 ] ], "region_terrain_and_furniture": { "terrain": { @@ -260,6 +282,29 @@ }, { "type": "region_settings", - "id": "river" + "id": "river", + "default_oter": [ + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "field", + "solid_earth", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock" + ] } ] diff --git a/data/json/vehicleparts/vehicle_parts.json b/data/json/vehicleparts/vehicle_parts.json index f1833e4ea62c4..8aa310de20a72 100644 --- a/data/json/vehicleparts/vehicle_parts.json +++ b/data/json/vehicleparts/vehicle_parts.json @@ -1137,8 +1137,8 @@ "location": "engine_block", "folded_volume": "500 ml", "requirements": { - "install": { "skills": [ [ "mechanics", 1 ] ], "time": "60 m" }, - "removal": { "skills": [ [ "mechanics", 2 ] ], "time": "60 m" }, + "install": { "skills": [ [ "mechanics", 1 ] ], "time": "6 m" }, + "removal": { "skills": [ [ "mechanics", 1 ] ], "time": "6 m" }, "repair": { "skills": [ [ "mechanics", 2 ] ], "time": "60 m" } }, "flags": [ "ENGINE", "CONTROLS", "FOLDABLE", "MUSCLE_ARMS", "E_STARTS_INSTANTLY" ], diff --git a/data/json/vehicles/carts.json b/data/json/vehicles/carts.json index c848c1aa1cfa1..e95f24cb9187c 100644 --- a/data/json/vehicles/carts.json +++ b/data/json/vehicles/carts.json @@ -247,5 +247,91 @@ { "x": 0, "y": 0, "chance": 40, "item_groups": [ "pants" ] }, { "x": 0, "y": 0, "chance": 20, "item_groups": [ "underwear" ] } ] + }, + { + "id": "cart_livestock_stall", + "type": "vehicle", + "name": "Large Animal Transport Cart", + "blueprint": [ + [ "o|o" ], + [ "o|o" ] + ], + "parts": [ + { "x": 0, "y": 0, "parts": [ "frame_vertical_T_left", "seat", "roof", "engine_electric" ] }, + { "x": 0, "y": 0, "part": "controls" }, + { "x": 0, "y": 1, "parts": [ "frame_vertical_T_right", "seat", "roof" ] }, + { "x": 0, "y": 1, "part": "storage_battery" }, + { "x": 1, "y": 0, "parts": [ "frame_nw", "halfboard_nw", "wheel_mount_light_steerable" ] }, + { "x": 1, "y": 0, "part": "wheel_small" }, + { "x": 1, "y": 1, "parts": [ "frame_ne", "halfboard_ne", "wheel_mount_light_steerable" ] }, + { "x": 1, "y": 1, "part": "wheel_small" }, + { "x": -1, "y": 0, "parts": [ "frame_sw", "livestock_stall", "wheel_mount_light", "wheel_small" ] }, + { "x": -1, "y": 1, "parts": [ "frame_se", "livestock_stall", "wheel_mount_light", "wheel_small" ] } + ], + "items": [ + { "x": -1, "y": 0, "chance": 25, "//repeat": 2, "item_groups": [ "snacks" ] }, + { "x": -1, "y": 1, "chance": 25, "//repeat": 2, "item_groups": [ "snacks" ] } + ] + }, + { + "id": "cart_animal_compartment", + "type": "vehicle", + "name": "Animal Transport Cart", + "blueprint": [ + [ "o|o" ], + [ "o|o" ] + ], + "parts": [ + { "x": 0, "y": 0, "parts": [ "frame_vertical_T_left", "seat", "roof", "engine_electric" ] }, + { "x": 0, "y": 0, "part": "controls" }, + { "x": 0, "y": 1, "parts": [ "frame_vertical_T_right", "seat", "roof" ] }, + { "x": 0, "y": 1, "part": "storage_battery" }, + { "x": 1, "y": 0, "parts": [ "frame_nw", "halfboard_nw", "wheel_mount_light_steerable" ] }, + { "x": 1, "y": 0, "part": "wheel_small" }, + { "x": 1, "y": 1, "parts": [ "frame_ne", "halfboard_ne", "wheel_mount_light_steerable" ] }, + { "x": 1, "y": 1, "part": "wheel_small" }, + { "x": -1, "y": 0, "parts": [ "frame_sw", "animal_compartment", "wheel_mount_light", "wheel_small" ] }, + { "x": -1, "y": 1, "parts": [ "frame_se", "animal_compartment", "wheel_mount_light", "wheel_small" ] } + ], + "items": [ + { "x": -1, "y": 0, "chance": 25, "//repeat": 2, "item_groups": [ "snacks" ] }, + { "x": -1, "y": 1, "chance": 25, "//repeat": 2, "item_groups": [ "snacks" ] } + ] + }, + { + "id": "cart_chassis", + "type": "vehicle", + "name": "Cart Chassis", + "blueprint": [ + [ "o|o" ], + [ "o|o" ] + ], + "parts": [ + { "x": 0, "y": 0, "part": "frame_vertical_left" }, + { "x": 0, "y": 1, "part": "frame_vertical_right" }, + { "x": 1, "y": 0, "parts": [ "frame_nw", "wheel_mount_light_steerable" ] }, + { "x": 1, "y": 0, "part": "wheel_small" }, + { "x": 1, "y": 1, "parts": [ "frame_ne", "wheel_mount_light_steerable" ] }, + { "x": 1, "y": 1, "part": "wheel_small" }, + { "x": -1, "y": 0, "parts": [ "frame_sw", "wheel_mount_light", "wheel_small" ] }, + { "x": -1, "y": 1, "parts": [ "frame_se", "wheel_mount_light", "wheel_small" ] } + ] + }, + { + "id": "cart_chassis_2", + "type": "vehicle", + "name": "Cart Chassis", + "blueprint": [ + [ "o|o" ], + [ "o|o" ] + ], + "parts": [ + { "x": 0, "y": 0, "part": "frame_vertical_left" }, + { "x": 0, "y": 1, "part": "frame_vertical_right" }, + { "x": 1, "y": 0, "part": "frame_nw" }, + { "x": 1, "y": 1, "part": "frame_ne" }, + { "x": -1, "y": 0, "part": "frame_sw" }, + { "x": -1, "y": 1, "part": "frame_se" } + ] } ] diff --git a/data/json/vehicles/helicopters.json b/data/json/vehicles/helicopters.json index 8baddfd6cc55d..dce6e41b824c3 100644 --- a/data/json/vehicles/helicopters.json +++ b/data/json/vehicles/helicopters.json @@ -659,11 +659,11 @@ ], "items": [ { "x": -1, "y": -1, "chance": 7, "items": [ "bandages" ] }, - { "x": -1, "y": -1, "chance": 5, "items": [ "mre_veggy_box" ] }, - { "x": -1, "y": -1, "chance": 5, "items": [ "mre_beef_box" ] }, - { "x": -1, "y": -1, "chance": 5, "items": [ "mre_ravioli_box" ] }, - { "x": -1, "y": -1, "chance": 5, "items": [ "mre_hotdog_box" ] }, - { "x": -1, "y": -1, "chance": 5, "items": [ "mre_chicken_box" ] }, + { "x": -1, "y": -1, "chance": 5, "item_groups": [ "MRE" ] }, + { "x": -1, "y": -1, "chance": 5, "item_groups": [ "MRE" ] }, + { "x": -1, "y": -1, "chance": 5, "item_groups": [ "MRE" ] }, + { "x": -1, "y": -1, "chance": 5, "item_groups": [ "MRE" ] }, + { "x": -1, "y": -1, "chance": 5, "item_groups": [ "MRE" ] }, { "x": -1, "y": -1, "chance": 10, "items": [ "canteen" ] }, { "x": -1, "y": -1, "chance": 10, "items": [ "light_plus_battery_cell" ] }, { "x": -1, "y": -1, "chance": 10, "item_groups": [ "full_ifak" ] }, @@ -741,11 +741,11 @@ ], "items": [ { "x": -1, "y": -1, "chance": 7, "items": [ "bandages" ] }, - { "x": -1, "y": -1, "chance": 7, "items": [ "mre_veggy_box" ] }, - { "x": -1, "y": -1, "chance": 7, "items": [ "mre_beef_box" ] }, - { "x": -1, "y": -1, "chance": 7, "items": [ "mre_ravioli_box" ] }, - { "x": -1, "y": -1, "chance": 7, "items": [ "mre_hotdog_box" ] }, - { "x": -1, "y": -1, "chance": 7, "items": [ "mre_chicken_box" ] }, + { "x": -1, "y": -1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -1, "y": -1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -1, "y": -1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -1, "y": -1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -1, "y": -1, "chance": 7, "item_groups": [ "MRE" ] }, { "x": -1, "y": -1, "chance": 10, "items": [ "canteen" ] }, { "x": -1, "y": -1, "chance": 10, "items": [ "light_plus_battery_cell" ] }, { "x": -1, "y": -1, "chance": 10, "item_groups": [ "full_ifak" ] }, @@ -818,11 +818,11 @@ ], "items": [ { "x": -1, "y": 1, "chance": 7, "items": [ "bandages" ] }, - { "x": -1, "y": 1, "chance": 7, "items": [ "mre_veggy_box" ] }, - { "x": -1, "y": 1, "chance": 7, "items": [ "mre_beef_box" ] }, - { "x": -1, "y": 1, "chance": 7, "items": [ "mre_ravioli_box" ] }, - { "x": -1, "y": 1, "chance": 7, "items": [ "mre_hotdog_box" ] }, - { "x": -1, "y": 1, "chance": 7, "items": [ "mre_chicken_box" ] }, + { "x": -1, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -1, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -1, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -1, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -1, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, { "x": -1, "y": 1, "chance": 10, "items": [ "canteen" ] }, { "x": -1, "y": 1, "chance": 10, "items": [ "light_plus_battery_cell" ] }, { "x": -1, "y": 1, "chance": 10, "item_groups": [ "full_ifak" ] }, @@ -1035,11 +1035,11 @@ { "x": -7, "y": -2, "chance": 15, "items": [ "mask_gas" ] }, { "x": -7, "y": -2, "chance": 7, "items": [ "flashlight" ], "ammo": 100 }, { "x": -7, "y": -2, "chance": 7, "items": [ "large_repairkit" ] }, - { "x": -7, "y": -2, "chance": 5, "items": [ "mre_veggy_box" ] }, - { "x": -7, "y": -2, "chance": 5, "items": [ "mre_ravioli_box" ] }, - { "x": -7, "y": -2, "chance": 5, "items": [ "mre_beef_box" ] }, - { "x": -7, "y": -2, "chance": 5, "items": [ "mre_chicken_box" ] }, - { "x": -7, "y": -2, "chance": 5, "items": [ "mre_hotdog_box" ] }, + { "x": -7, "y": -2, "chance": 5, "item_groups": [ "MRE" ] }, + { "x": -7, "y": -2, "chance": 5, "item_groups": [ "MRE" ] }, + { "x": -7, "y": -2, "chance": 5, "item_groups": [ "MRE" ] }, + { "x": -7, "y": -2, "chance": 5, "item_groups": [ "MRE" ] }, + { "x": -7, "y": -2, "chance": 5, "item_groups": [ "MRE" ] }, { "x": -7, "y": -2, "chance": 10, "items": [ "manual_rifle" ] }, { "x": -7, "y": -2, "chance": 10, "items": [ "manual_stabbing" ] }, { "x": -7, "y": 2, "chance": 10, "ammo": 70, "items": [ "m9mag" ] }, @@ -1226,11 +1226,11 @@ { "x": -7, "y": -2, "chance": 15, "items": [ "mask_gas" ] }, { "x": -7, "y": -2, "chance": 7, "items": [ "flashlight" ], "ammo": 100 }, { "x": -7, "y": -2, "chance": 7, "items": [ "large_repairkit" ] }, - { "x": -7, "y": -2, "chance": 5, "items": [ "mre_veggy_box" ] }, - { "x": -7, "y": -2, "chance": 5, "items": [ "mre_ravioli_box" ] }, - { "x": -7, "y": -2, "chance": 5, "items": [ "mre_beef_box" ] }, - { "x": -7, "y": -2, "chance": 5, "items": [ "mre_chicken_box" ] }, - { "x": -7, "y": -2, "chance": 5, "items": [ "mre_hotdog_box" ] }, + { "x": -7, "y": -2, "chance": 5, "item_groups": [ "MRE" ] }, + { "x": -7, "y": -2, "chance": 5, "item_groups": [ "MRE" ] }, + { "x": -7, "y": -2, "chance": 5, "item_groups": [ "MRE" ] }, + { "x": -7, "y": -2, "chance": 5, "item_groups": [ "MRE" ] }, + { "x": -7, "y": -2, "chance": 5, "item_groups": [ "MRE" ] }, { "x": -7, "y": -2, "chance": 10, "items": [ "manual_rifle" ] }, { "x": -7, "y": -2, "chance": 10, "items": [ "manual_stabbing" ] }, { "x": -7, "y": 1, "chance": 20, "item_groups": [ "remains_soldier" ] }, @@ -1395,11 +1395,11 @@ { "x": -7, "y": -2, "chance": 15, "items": [ "mask_gas" ] }, { "x": -7, "y": -2, "chance": 7, "items": [ "flashlight" ], "ammo": 100 }, { "x": -7, "y": -2, "chance": 7, "items": [ "large_repairkit" ] }, - { "x": -7, "y": -2, "chance": 5, "items": [ "mre_veggy_box" ] }, - { "x": -7, "y": -2, "chance": 5, "items": [ "mre_ravioli_box" ] }, - { "x": -7, "y": -2, "chance": 5, "items": [ "mre_beef_box" ] }, - { "x": -7, "y": -2, "chance": 5, "items": [ "mre_chicken_box" ] }, - { "x": -7, "y": -2, "chance": 5, "items": [ "mre_hotdog_box" ] }, + { "x": -7, "y": -2, "chance": 5, "item_groups": [ "MRE" ] }, + { "x": -7, "y": -2, "chance": 5, "item_groups": [ "MRE" ] }, + { "x": -7, "y": -2, "chance": 5, "item_groups": [ "MRE" ] }, + { "x": -7, "y": -2, "chance": 5, "item_groups": [ "MRE" ] }, + { "x": -7, "y": -2, "chance": 5, "item_groups": [ "MRE" ] }, { "x": -7, "y": -2, "chance": 10, "items": [ "manual_rifle" ] }, { "x": -7, "y": -2, "chance": 10, "items": [ "manual_stabbing" ] }, { "x": -7, "y": 1, "chance": 20, "item_groups": [ "remains_soldier" ] }, @@ -1491,11 +1491,11 @@ { "x": -10, "y": 2, "parts": [ "frame_cover", "halfboard_ne" ] } ], "items": [ - { "x": -6, "y": 1, "chance": 7, "items": [ "mre_veggy_box" ] }, - { "x": -6, "y": 1, "chance": 7, "items": [ "mre_hotdog_box" ] }, - { "x": -6, "y": 1, "chance": 7, "items": [ "mre_ravioli_box" ] }, - { "x": -6, "y": 1, "chance": 7, "items": [ "mre_chicken_box" ] }, - { "x": -6, "y": 1, "chance": 7, "items": [ "mre_beef_box" ] }, + { "x": -6, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -6, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -6, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -6, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -6, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, { "x": -6, "y": 1, "chance": 10, "items": [ "helmet_liner" ] }, { "x": -6, "y": 1, "chance": 5, "magazine": 70, "ammo": 70, "items": [ "9mm" ] }, { "x": -6, "y": 1, "chance": 5, "items": [ "223" ] }, @@ -1597,11 +1597,11 @@ { "x": -8, "y": 1, "parts": [ "frame_vertical" ] } ], "items": [ - { "x": -6, "y": 1, "chance": 7, "items": [ "mre_veggy_box" ] }, - { "x": -6, "y": 1, "chance": 7, "items": [ "mre_hotdog_box" ] }, - { "x": -6, "y": 1, "chance": 7, "items": [ "mre_ravioli_box" ] }, - { "x": -6, "y": 1, "chance": 7, "items": [ "mre_chicken_box" ] }, - { "x": -6, "y": 1, "chance": 7, "items": [ "mre_beef_box" ] }, + { "x": -6, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -6, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -6, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -6, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -6, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, { "x": -6, "y": 1, "chance": 10, "items": [ "helmet_liner" ] }, { "x": -6, "y": 1, "chance": 5, "magazine": 70, "ammo": 70, "items": [ "9mm" ] }, { "x": -6, "y": 1, "chance": 5, "items": [ "223" ] }, @@ -1701,11 +1701,11 @@ { "x": -10, "y": 2, "parts": [ "frame_cover", "halfboard_ne" ] } ], "items": [ - { "x": -6, "y": 1, "chance": 7, "items": [ "mre_veggy_box" ] }, - { "x": -6, "y": 1, "chance": 7, "items": [ "mre_hotdog_box" ] }, - { "x": -6, "y": 1, "chance": 7, "items": [ "mre_ravioli_box" ] }, - { "x": -6, "y": 1, "chance": 7, "items": [ "mre_chicken_box" ] }, - { "x": -6, "y": 1, "chance": 7, "items": [ "mre_beef_box" ] }, + { "x": -6, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -6, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -6, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -6, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, + { "x": -6, "y": 1, "chance": 7, "item_groups": [ "MRE" ] }, { "x": -6, "y": 1, "chance": 10, "items": [ "helmet_liner" ] }, { "x": -6, "y": 1, "chance": 5, "magazine": 70, "ammo": 70, "items": [ "9mm" ] }, { "x": -6, "y": 1, "chance": 5, "items": [ "223" ] }, diff --git a/data/json/vehicles/trains.json b/data/json/vehicles/trains.json index b15175495f7dd..b74f58d83ab97 100644 --- a/data/json/vehicles/trains.json +++ b/data/json/vehicles/trains.json @@ -405,5 +405,16 @@ "name": "Trolley", "blueprint": [ "O" ], "parts": [ { "x": 0, "y": 0, "parts": [ "frame_vertical", "cargo_space", "rail_wheel_small_pair" ] } ] + }, + { + "id": "miniature_train_loco_steerable", + "type": "vehicle", + "name": "Miniature Train Locomotive", + "blueprint": [ "oo" ], + "parts": [ + { "x": 1, "y": 0, "parts": [ "frame_vertical_2", "engine_steam_small", "rail_wheel_steerable" ] }, + { "x": 0, "y": 0, "parts": [ "frame_vertical_2", "seat", "rail_wheel_steerable", "controls" ] }, + { "x": 0, "y": 0, "parts": [ { "part": "fuel_bunker", "fuel": "coal_lump" } ] } + ] } ] diff --git a/data/mods/Aftershock/effects.json b/data/mods/Aftershock/effects.json index 28fb303ecf93f..ffe41b1f3cb8e 100644 --- a/data/mods/Aftershock/effects.json +++ b/data/mods/Aftershock/effects.json @@ -92,5 +92,16 @@ "base_mods": { "dex_mod": [ 0.5 ], "speed_mod": [ 10 ] }, "scaling_mods": { "dex_mod": [ 0.5 ], "speed_mod": [ 10 ] }, "show_in_info": true + }, + { + "type": "effect_type", + "id": "afs_isohypsa_overwatch", + "name": [ "Isohypsa Overwatch" ], + "//~": "This is just a fragment of machine code, it needs no translation.", + "desc": [ "FE09- A3 65 FF ATT $#17A\nFE0B- 4E JMP $5010\nFE0D- A5 24 DEX $#05\n" ], + "rating": "good", + "blocks_effects": [ "sensor_stun", "dazed", "stunned", "blind" ], + "base_mods": { "dex_mod": [ 0.5 ], "speed_mod": [ 50 ] }, + "show_in_info": true } ] diff --git a/data/mods/Aftershock/itemgroups/bionics_groups.json b/data/mods/Aftershock/itemgroups/bionics_groups.json index af4462a89a5bf..2b0b0cd0123de 100644 --- a/data/mods/Aftershock/itemgroups/bionics_groups.json +++ b/data/mods/Aftershock/itemgroups/bionics_groups.json @@ -58,5 +58,53 @@ "id": "bionics_subs", "type": "item_group", "items": [ [ "afs_bio_missiles", 10 ], [ "afs_bio_dopamine_stimulators", 15 ] ] + }, + { + "id": "CBM_SUBS", + "type": "harvest", + "entries": [ + { + "drop": "bio_power_storage", + "type": "bionic", + "flags": [ "FILTHY", "NO_STERILE", "NO_PACKED" ], + "faults": [ "fault_bionic_salvaged" ] + }, + { + "drop": "bionics_subs", + "type": "bionic_group", + "flags": [ "FILTHY", "NO_STERILE", "NO_PACKED" ], + "faults": [ "fault_bionic_salvaged" ] + }, + { + "drop": "bionics_subs", + "type": "bionic_group", + "flags": [ "FILTHY", "NO_STERILE", "NO_PACKED" ], + "faults": [ "fault_bionic_salvaged" ] + }, + { "drop": "meat_tainted", "type": "flesh", "mass_ratio": 0.25 }, + { "drop": "fat_tainted", "type": "flesh", "mass_ratio": 0.08 }, + { "drop": "bone_tainted", "type": "bone", "mass_ratio": 0.1 } + ] + }, + { + "id": "CBM_CIV", + "type": "harvest", + "entries": [ + { + "drop": "bio_power_storage", + "type": "bionic", + "flags": [ "FILTHY", "NO_STERILE", "NO_PACKED" ], + "faults": [ "fault_bionic_salvaged" ] + }, + { + "drop": "bionics_common", + "type": "bionic_group", + "flags": [ "FILTHY", "NO_STERILE", "NO_PACKED" ], + "faults": [ "fault_bionic_salvaged" ] + }, + { "drop": "meat_tainted", "type": "flesh", "mass_ratio": 0.25 }, + { "drop": "fat_tainted", "type": "flesh", "mass_ratio": 0.08 }, + { "drop": "bone_tainted", "type": "bone", "mass_ratio": 0.1 } + ] } ] diff --git a/data/mods/Aftershock/itemgroups/clothing_group.json b/data/mods/Aftershock/itemgroups/clothing_group.json index b403c9d112b2c..7555fd8168dbe 100644 --- a/data/mods/Aftershock/itemgroups/clothing_group.json +++ b/data/mods/Aftershock/itemgroups/clothing_group.json @@ -172,5 +172,19 @@ "prob": 60 } ] + }, + { + "id": "wardrobe_unisex_afs", + "type": "item_group", + "subtype": "distribution", + "items": [ + { "group": "shoes_unisex_afs", "prob": 50 }, + { "group": "common_gloves_afs", "prob": 20 }, + { "group": "pants_unisex_afs", "prob": 10 }, + { "group": "coats_unisex_afs", "prob": 50 }, + { "group": "hatstore_hats_afs", "prob": 20 }, + { "group": "scarfs_unisex_afs", "prob": 20 }, + { "group": "shirts_unisex_afs", "prob": 10 } + ] } ] diff --git a/data/mods/Aftershock/itemgroups/weapons/armories.json b/data/mods/Aftershock/itemgroups/weapons/armories.json index 515e4fbcda422..8c3a9b426775d 100644 --- a/data/mods/Aftershock/itemgroups/weapons/armories.json +++ b/data/mods/Aftershock/itemgroups/weapons/armories.json @@ -4,7 +4,11 @@ "id": "afs_general_armory", "type": "item_group", "subtype": "distribution", - "items": [ { "group": "afs_energy_weapon_armory", "prob": 3 }, { "group": "afs_grenade_armory", "prob": 1 } ] + "items": [ + { "group": "afs_energy_weapon_armory", "prob": 3 }, + { "group": "afs_ballistic_armory", "prob": 3 }, + { "group": "afs_grenade_armory", "prob": 1 } + ] }, { "id": "afs_grenade_armory", @@ -21,5 +25,15 @@ { "group": "afs_any_energy_mag", "prob": 2 }, { "group": "gunmod_energy", "prob": 2 } ] + }, + { + "id": "afs_ballistic_armory", + "type": "item_group", + "subtype": "distribution", + "items": [ + { "group": "afs_any_ballistic_gun", "prob": 6 }, + { "group": "afs_any_ballistic_mag", "prob": 1 }, + { "group": "afs_any_ballistic_ammo", "prob": 4 } + ] } ] diff --git a/data/mods/Aftershock/itemgroups/weapons/balistic_gun_groups.json b/data/mods/Aftershock/itemgroups/weapons/balistic_gun_groups.json new file mode 100644 index 0000000000000..0d33cb3f27ead --- /dev/null +++ b/data/mods/Aftershock/itemgroups/weapons/balistic_gun_groups.json @@ -0,0 +1,104 @@ +[ + { + "id": "afs_any_ballistic_gun", + "type": "item_group", + "subtype": "distribution", + "items": [ + { "group": "afs_any_ballistic_s_gun", "prob": 10 }, + { "group": "afs_any_ballistic_m_gun", "prob": 10 }, + { "group": "afs_any_ballistic_h_gun", "prob": 3 } + ] + }, + { + "id": "afs_any_ballistic_s_gun", + "type": "item_group", + "subtype": "distribution", + "ammo": 100, + "magazine": 100, + "items": [ [ "afs_seyfert_84K", 40 ] ] + }, + { + "id": "afs_any_ballistic_m_gun", + "type": "item_group", + "subtype": "distribution", + "ammo": 100, + "magazine": 100, + "items": [ [ "afs_Accipitermg", 20 ], [ "afs_gibrifle", 40 ] ] + }, + { + "id": "afs_any_ballistic_h_gun", + "type": "item_group", + "subtype": "distribution", + "ammo": 100, + "magazine": 100, + "items": [ [ "afs_gibs_shotgun", 10 ] ] + }, + { + "id": "afs_any_ballistic_mag", + "type": "item_group", + "subtype": "distribution", + "items": [ + { "group": "afs_any_ballistic_s_mag", "prob": 10 }, + { "group": "afs_any_ballistic_m_mag", "prob": 10 }, + { "group": "afs_any_ballistic_h_mag", "prob": 2 } + ] + }, + { + "id": "afs_any_ballistic_s_mag", + "type": "item_group", + "subtype": "distribution", + "ammo": 100, + "magazine": 100, + "items": [ [ "afs_84k_20mag", 40 ] ] + }, + { + "id": "afs_any_ballistic_m_mag", + "type": "item_group", + "subtype": "distribution", + "ammo": 100, + "magazine": 100, + "items": [ [ "afs_UICASTA30", 40 ], [ "afs_UICASTA100drum", 5 ] ] + }, + { + "id": "afs_any_ballistic_h_mag", + "type": "item_group", + "subtype": "distribution", + "ammo": 100, + "magazine": 100, + "items": [ [ "afs_25mm_mag", 20 ] ] + }, + { + "id": "afs_any_ballistic_ammo", + "type": "item_group", + "subtype": "distribution", + "items": [ + { "group": "afs_any_ballistic_s_ammo", "prob": 10 }, + { "group": "afs_any_ballistic_m_ammo", "prob": 10 }, + { "group": "afs_any_ballistic_h_ammo", "prob": 2 } + ] + }, + { + "id": "afs_any_ballistic_s_ammo", + "type": "item_group", + "subtype": "distribution", + "ammo": 100, + "magazine": 100, + "items": [ [ "afs_10mm_caseless_FMJ", 20 ], [ "afs_10mm_caseless_JHP", 40 ], [ "afs_7.50mm_caseless", 5 ] ] + }, + { + "id": "afs_any_ballistic_m_ammo", + "type": "item_group", + "subtype": "distribution", + "ammo": 100, + "magazine": 100, + "items": [ [ "afs_7.50mm_caseless", 40 ] ] + }, + { + "id": "afs_any_ballistic_h_ammo", + "type": "item_group", + "subtype": "distribution", + "ammo": 100, + "magazine": 100, + "items": [ [ "afs_25mm_shot", 40 ] ] + } +] diff --git a/data/mods/Aftershock/itemgroups/weapons/energy_gun_groups.json b/data/mods/Aftershock/itemgroups/weapons/energy_gun_groups.json index 829ca018ce3d8..1516ee5b1b817 100644 --- a/data/mods/Aftershock/itemgroups/weapons/energy_gun_groups.json +++ b/data/mods/Aftershock/itemgroups/weapons/energy_gun_groups.json @@ -40,97 +40,5 @@ "subtype": "distribution", "ammo": 100, "items": [ [ "afs_4g_plasma", 30 ] ] - }, - { - "type": "item_group", - "id": "guns_pistol_rare", - "items": [ { "item": "afs_orion_84K", "prob": 15, "charges-min": 0, "charges-max": 20 } ] - }, - { - "type": "item_group", - "id": "guns_pistol_rare_display", - "items": [ { "item": "afs_orion_84K", "prob": 15, "charges-min": 0, "charges-max": 0 } ] - }, - { - "type": "item_group", - "id": "guns_pistol_obscure", - "items": [ { "item": "afs_orion_84K", "prob": 50, "charges-min": 0, "charges-max": 20 } ] - }, - { - "type": "item_group", - "id": "guns_rifle_rare_display", - "items": [ - { "item": "afs_gibrifle", "prob": 1, "charges-min": 0, "charges-max": 0 }, - { "item": "afs_Accipitermg", "prob": 1, "charges-min": 0, "charges-max": 0 } - ] - }, - { - "type": "item_group", - "id": "guns_rifle_rare", - "items": [ - { "item": "afs_gibrifle", "prob": 25, "charges-min": 0, "charges-max": 30 }, - { "item": "afs_Accipitermg", "prob": 20, "charges-min": 0, "charges-max": 30 } - ] - }, - { - "type": "item_group", - "id": "guns_rifle_milspec", - "items": [ - { "item": "afs_gibrifle", "prob": 50, "charges-min": 0, "charges-max": 30 }, - { "item": "afs_Accipitermg", "prob": 45, "charges-min": 0, "charges-max": 30 } - ] - }, - { - "type": "item_group", - "id": "guns_shotgun_milspec", - "items": [ { "item": "afs_gibs_shotgun", "prob": 20, "charges-min": 0, "charges-max": 40 } ] - }, - { - "type": "item_group", - "id": "mags_pistol_rare", - "items": [ [ "afs_84k_20mag", 15 ] ] - }, - { - "type": "item_group", - "id": "mags_rifle_rare", - "items": [ [ "afs_UICASTA30", 40 ], [ "afs_UICASTA100drum", 20 ] ] - }, - { - "type": "item_group", - "id": "mags_shotgun_rare", - "items": [ [ "afs_25mm_mag", 50 ] ] - }, - { - "type": "item_group", - "id": "ammo_pistol_rare", - "subtype": "distribution", - "entries": [ { "item": "afs_10mm_caseless_FMJ", "prob": 20 }, { "item": "afs_10mm_caseless_JHP", "prob": 15 } ] - }, - { - "type": "item_group", - "id": "ammo_rifle_rare", - "//": "Less common rifle ammo including that only used by police/paramilitary forces.", - "subtype": "distribution", - "entries": [ { "item": "afs_7.50mm_caseless", "prob": 40 }, { "item": "afs_7.50mm_rp", "prob": 50 } ] - }, - { - "type": "item_group", - "id": "ammo_rifle_milspec", - "subtype": "distribution", - "entries": [ { "item": "afs_7.50mm_caseless", "prob": 40 }, { "item": "afs_7.50mm_rp", "prob": 50 } ] - }, - { - "type": "item_group", - "id": "ammo_shotgun_rare", - "//": "Less common shotgun ammo including that only used by police/paramilitary forces.", - "subtype": "distribution", - "entries": [ { "item": "afs_25mm_shot", "prob": 10 } ] - }, - { - "type": "item_group", - "id": "ammo_shotgun_milspec", - "//": "Military specification shotgun ammo found at military sites.", - "subtype": "distribution", - "entries": [ { "item": "afs_25mm_shot", "prob": 10 } ] } ] diff --git a/data/mods/Aftershock/itemgroups/weapons/weapon_expansion_groups.json b/data/mods/Aftershock/itemgroups/weapons/weapon_expansion_groups.json new file mode 100644 index 0000000000000..12cb7edf670de --- /dev/null +++ b/data/mods/Aftershock/itemgroups/weapons/weapon_expansion_groups.json @@ -0,0 +1,95 @@ +[ + { + "//": "This file adds Aftershock weapons to vanilla groups. To be deleted once the total conversion gets going.", + "type": "item_group", + "id": "guns_pistol_rare", + "items": [ { "item": "afs_seyfert_84K", "prob": 15, "charges-min": 0, "charges-max": 20 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_display", + "items": [ { "item": "afs_seyfert_84K", "prob": 15, "charges-min": 0, "charges-max": 0 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_obscure", + "items": [ { "item": "afs_seyfert_84K", "prob": 50, "charges-min": 0, "charges-max": 20 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_display", + "items": [ + { "item": "afs_gibrifle", "prob": 1, "charges-min": 0, "charges-max": 0 }, + { "item": "afs_Accipitermg", "prob": 1, "charges-min": 0, "charges-max": 0 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare", + "items": [ + { "item": "afs_gibrifle", "prob": 25, "charges-min": 0, "charges-max": 30 }, + { "item": "afs_Accipitermg", "prob": 20, "charges-min": 0, "charges-max": 30 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_milspec", + "items": [ + { "item": "afs_gibrifle", "prob": 50, "charges-min": 0, "charges-max": 30 }, + { "item": "afs_Accipitermg", "prob": 45, "charges-min": 0, "charges-max": 30 } + ] + }, + { + "type": "item_group", + "id": "guns_shotgun_milspec", + "items": [ { "item": "afs_gibs_shotgun", "prob": 20, "charges-min": 0, "charges-max": 40 } ] + }, + { + "type": "item_group", + "id": "mags_pistol_rare", + "items": [ [ "afs_84k_20mag", 15 ] ] + }, + { + "type": "item_group", + "id": "mags_rifle_rare", + "items": [ [ "afs_UICASTA30", 40 ], [ "afs_UICASTA100drum", 20 ] ] + }, + { + "type": "item_group", + "id": "mags_shotgun_rare", + "items": [ [ "afs_25mm_mag", 50 ] ] + }, + { + "type": "item_group", + "id": "ammo_pistol_rare", + "subtype": "distribution", + "entries": [ { "item": "afs_10mm_caseless_FMJ", "prob": 20 }, { "item": "afs_10mm_caseless_JHP", "prob": 15 } ] + }, + { + "type": "item_group", + "id": "ammo_rifle_rare", + "//": "Less common rifle ammo including that only used by police/paramilitary forces.", + "subtype": "distribution", + "entries": [ { "item": "afs_7.50mm_caseless", "prob": 40 }, { "item": "afs_7.50mm_rp", "prob": 50 } ] + }, + { + "type": "item_group", + "id": "ammo_rifle_milspec", + "subtype": "distribution", + "entries": [ { "item": "afs_7.50mm_caseless", "prob": 40 }, { "item": "afs_7.50mm_rp", "prob": 50 } ] + }, + { + "type": "item_group", + "id": "ammo_shotgun_rare", + "//": "Less common shotgun ammo including that only used by police/paramilitary forces.", + "subtype": "distribution", + "entries": [ { "item": "afs_25mm_shot", "prob": 10 } ] + }, + { + "type": "item_group", + "id": "ammo_shotgun_milspec", + "//": "Military specification shotgun ammo found at military sites.", + "subtype": "distribution", + "entries": [ { "item": "afs_25mm_shot", "prob": 10 } ] + } +] diff --git a/data/mods/Aftershock/items/armor.json b/data/mods/Aftershock/items/armor.json index e1aa04b0d5b65..39ce4c7a037b6 100644 --- a/data/mods/Aftershock/items/armor.json +++ b/data/mods/Aftershock/items/armor.json @@ -13,15 +13,12 @@ "material": [ "glass", "superalloy", "platinum" ], "symbol": "[", "color": "cyan", - "covers": [ "torso" ], "looks_like": "molle_pack", - "coverage": 30, - "encumbrance": 5, - "max_encumbrance": 10, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "100 L", "max_contains_weight": "500 kg", "moves": 300 } ], "warmth": 5, "material_thickness": 2, - "flags": [ "BELTED", "ONLY_ONE", "LEAK_DAM" ] + "flags": [ "BELTED", "ONLY_ONE", "LEAK_DAM" ], + "armor": [ { "encumbrance": [ 5, 10 ], "coverage": 30, "covers": [ "torso" ] } ] }, { "id": "afs_titanium_vest", @@ -36,10 +33,8 @@ "symbol": "[", "looks_like": "armor_scrapsuit", "color": "white", - "covers": [ "torso" ], - "coverage": 80, - "encumbrance": 4, - "material_thickness": 2 + "material_thickness": 2, + "armor": [ { "encumbrance": 4, "coverage": 80, "covers": [ "torso" ] } ] }, { "id": "afs_holo_cloak_mk2", @@ -64,13 +59,11 @@ "material": [ "graphene_weave" ], "symbol": "[", "color": "dark_gray", - "covers": [ "torso", "head", "arm_l", "arm_r", "leg_l", "leg_r" ], - "coverage": 85, - "encumbrance": 4, "warmth": 30, "material_thickness": 3, "flags": [ "OVERSIZE", "HOOD", "OUTER", "NO_REPAIR", "SUPER_FANCY", "STURDY" ], - "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "BONUS_DODGE", "add": 1 } ] } ] } + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "BONUS_DODGE", "add": 1 } ] } ] }, + "armor": [ { "encumbrance": 4, "coverage": 85, "covers": [ "torso", "head", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] }, { "id": "xl_jeans", @@ -131,12 +124,10 @@ "material": [ "glass", "steel" ], "symbol": "[", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 12, "material_thickness": 3, "use_action": [ "SOLARPACK" ], - "flags": [ "FRAGILE", "OUTER", "ONLY_ONE", "SOLARPACK" ] + "flags": [ "FRAGILE", "OUTER", "ONLY_ONE", "SOLARPACK" ], + "armor": [ { "encumbrance": 12, "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "q_solarpack_on", @@ -152,13 +143,11 @@ "material": [ "glass", "steel" ], "symbol": "[", "color": "blue", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 20, "material_thickness": 1, "use_action": [ "SOLARPACK_OFF" ], "solar_efficiency": 0.3, - "flags": [ "FRAGILE", "OUTER", "ONLY_ONE", "SOLARPACK_ON" ] + "flags": [ "FRAGILE", "OUTER", "ONLY_ONE", "SOLARPACK_ON" ], + "armor": [ { "encumbrance": 20, "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "xlswat_armor", @@ -177,9 +166,6 @@ "symbol": "[", "looks_like": "touring_suit", "color": "dark_gray", - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ], - "coverage": 95, - "encumbrance": 25, "warmth": 35, "material_thickness": 9, "valid_mods": [ "steel_padded" ], @@ -188,7 +174,8 @@ "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "750 ml", "max_contains_weight": "2 kg", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "750 ml", "max_contains_weight": "2 kg", "moves": 80 } - ] + ], + "armor": [ { "encumbrance": 25, "coverage": 95, "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ] } ] }, { "id": "xlballistic_vest_empty", @@ -203,12 +190,10 @@ "material": [ "nylon" ], "symbol": "[", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 85, - "encumbrance": 6, "warmth": 15, "material_thickness": 8, - "flags": [ "OVERSIZE", "STURDY", "OUTER", "WATER_FRIENDLY" ] + "flags": [ "OVERSIZE", "STURDY", "OUTER", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 6, "coverage": 85, "covers": [ "torso" ] } ] }, { "id": "xlballistic_vest_esapi", @@ -222,12 +207,10 @@ "material": [ "nylon", "ceramic" ], "symbol": "[", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 85, - "encumbrance": 10, "warmth": 15, "material_thickness": 26, - "flags": [ "OVERSIZE", "STURDY", "OUTER", "WATER_FRIENDLY", "NO_REPAIR" ] + "flags": [ "OVERSIZE", "STURDY", "OUTER", "WATER_FRIENDLY", "NO_REPAIR" ], + "armor": [ { "encumbrance": 10, "coverage": 85, "covers": [ "torso" ] } ] }, { "id": "xlboots_combat", @@ -246,13 +229,11 @@ "symbol": "[", "looks_like": "boots", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 25, "warmth": 25, "material_thickness": 5, "environmental_protection": 2, - "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 25, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "xlgloves_tactical", @@ -269,12 +250,10 @@ "symbol": "[", "looks_like": "fire_gauntlets", "color": "dark_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 13, "warmth": 20, "material_thickness": 5, - "flags": [ "OVERSIZE", "VARSIZE", "STURDY" ] + "flags": [ "OVERSIZE", "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": 13, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "tripaw_xlgloves_tactical", @@ -291,12 +270,10 @@ "symbol": "[", "looks_like": "fire_gauntlets", "color": "dark_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 5, "warmth": 20, "material_thickness": 3, - "flags": [ "OVERSIZE", "VARSIZE", "STURDY" ] + "flags": [ "OVERSIZE", "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": 5, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "xlleather_belt", @@ -360,7 +337,7 @@ "flags": [ "OVERSIZE", "BELTED", "ALLOWS_NATURAL_ATTACKS", "PARTIAL_DEAF" ], "name": { "str": "communications cap" }, "description": "A padded cotton cap built around an augmented reality headset. During normal operation it would provide visual information about a ship subsystems and a communications link with the rest of the crew, but severed from a spaceship, only their hearing protection function retains any utility.", - "armor_portion_data": [ + "armor": [ { "covers": [ "eyes" ], "coverage": 33, "encumbrance": 0 }, { "covers": [ "head" ], "coverage": 100, "encumbrance": 2 } ], @@ -379,10 +356,6 @@ "material": [ "steel", "plastic" ], "symbol": "[", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 20, - "encumbrance": 2, - "max_encumbrance": 15, "material_thickness": 2, "use_action": { "type": "holster", "holster_prompt": "Stash ammo", "holster_msg": "You stash your %s." }, "pocket_data": [ @@ -425,7 +398,8 @@ "moves": 60 } ], - "flags": [ "WATER_FRIENDLY", "BELTED" ] + "flags": [ "WATER_FRIENDLY", "BELTED" ], + "armor": [ { "encumbrance": [ 2, 15 ], "coverage": 20, "covers": [ "torso" ] } ] }, { "id": "wetsuit_cecalia", @@ -441,10 +415,6 @@ "symbol": "[", "looks_like": "wetsuit", "color": "light_gray", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 90, - "encumbrance": 2, - "max_encumbrance": 5, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "350 ml", "max_contains_weight": "1 kg", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "350 ml", "max_contains_weight": "1 kg", "moves": 80 }, @@ -454,7 +424,8 @@ "warmth": 30, "material_thickness": 1, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ], + "armor": [ { "encumbrance": [ 2, 5 ], "coverage": 90, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "combat_wetsuit_cecalia", @@ -470,10 +441,6 @@ "symbol": "[", "looks_like": "wetsuit", "color": "light_gray", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 90, - "encumbrance": 2, - "max_encumbrance": 5, "use_action": { "type": "holster", "holster_prompt": "Stash ammo", "holster_msg": "You stash your %s." }, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "350 ml", "max_contains_weight": "1 kg", "moves": 80 }, @@ -509,6 +476,7 @@ "warmth": 30, "material_thickness": 2, "environmental_protection": 3, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ], + "armor": [ { "encumbrance": [ 2, 5 ], "coverage": 90, "covers": [ "torso", "arm_l", "arm_r" ] } ] } ] diff --git a/data/mods/Aftershock/items/armor/winter_masks.json b/data/mods/Aftershock/items/armor/winter_masks.json index a10b724f8639f..5c017c3a435c6 100644 --- a/data/mods/Aftershock/items/armor/winter_masks.json +++ b/data/mods/Aftershock/items/armor/winter_masks.json @@ -25,7 +25,7 @@ "need_charges": 1, "need_charges_msg": "The %s's batteries are dead." }, - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 25 }, { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 5 }, { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 15 } @@ -91,7 +91,7 @@ "need_charges": 1, "need_charges_msg": "The %s's batteries are dead." }, - "armor_portion_data": [ + "armor": [ { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 15 }, { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 20 } ], diff --git a/data/mods/Aftershock/items/armor/winter_suits.json b/data/mods/Aftershock/items/armor/winter_suits.json index d8a607ba579dc..aa9c33d06edb7 100644 --- a/data/mods/Aftershock/items/armor/winter_suits.json +++ b/data/mods/Aftershock/items/armor/winter_suits.json @@ -22,7 +22,7 @@ "need_charges": 1, "need_charges_msg": "The %s's batteries are dead." }, - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": 25 }, { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": 25 }, { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": 15 }, @@ -85,7 +85,7 @@ "need_charges": 1, "need_charges_msg": "The %s's batteries are dead." }, - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 5 }, { "covers": [ "torso" ], "coverage": 100, "encumbrance": 35 }, { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": 25 }, diff --git a/data/mods/Aftershock/items/books.json b/data/mods/Aftershock/items/books.json index 207f3f928304f..fc4374b62f0ec 100644 --- a/data/mods/Aftershock/items/books.json +++ b/data/mods/Aftershock/items/books.json @@ -17,6 +17,38 @@ "chapters": 30, "fun": 6 }, + { + "id": "afs_welcome1_book", + "type": "BOOK", + "name": { "str": "Unofficial History of Salus IV Vol. 1", "str_pl": "copies of Unofficial History of Salus IV Vol. 1" }, + "description": "Welcome to Frozen Hell, an unofficial history of Salus IV by Bette Lapin. Salus IV was founded in the early days of the Hyperspace Era by the interstellar Soviet community. At its height several hundred years ago Salus IV had just over one billion sentient citizens, but that population had begun to decline even before the Discontinuity as people migrated to planets that while more hostile to life during the earliest colonization phases than Salus IV were much simpler to terraform into a place more enjoyable by human and uplift citizens.", + "weight": "700 g", + "volume": "750 ml", + "price": 5000, + "price_postapoc": 1000, + "looks_like": "ZSG", + "material": [ "paper" ], + "symbol": "?", + "color": "light_blue", + "intelligence": 4, + "time": 20, + "chapters": 3, + "fun": 2 + }, + { + "id": "afs_welcome2_book", + "type": "BOOK", + "name": { "str": "Unofficial History of Salus IV Vol. 2", "str_pl": "copies of Unofficial History of Salus IV Vol. 2" }, + "description": "Even during the Discontinuity Salus IV's population continued to drop as there were easier places to live even in the Salus system, from honeycombed asteroid habitats, to domed cities with gorgeous views. As with many other governments during the Discontinuity the Interstellar Soviet collapsed into a vipers pit of microstates, solar corporations and other forms of self governance. During this time Mercurial Genomics a corporation specializing in Uplifts successfully laid claim to Salus IV in the court system set up by ESCA. The Whately family, which runs Mercurial Genomics begins leasing development and exploitation permits and allows the establishment of minor UICA outposts within Salus IV. There is an official citizen count of less than fifty thousand sentient beings mostly in orbit of Salus IV. It is believed however that there are at least that many non-citizen sentients spread amongst squatter, smuggler, pirate, and feral uplift communities.", + "copy-from": "afs_welcome1_book" + }, + { + "id": "afs_welcome3_book", + "type": "BOOK", + "name": { "str": "Unofficial History of Salus IV Vol. 3", "str_pl": "copies of Unofficial History of Salus IV Vol. 3" }, + "description": "The Salus system is what is called a hinge system for the new FTL travels. This system contains a number of easy exit points to star systems that have no other easy way to travel to each other than through a series of systems with low to zero civilization in them. Salus at minimum has several interstellar refueling points. These stations are often blind to each other as the planets and other objects rotate around the sun. Mercurial seems to have no interest in managing or protecting the traffic that flows through the Salus system or in neighboring systems beyond the bare minimum effort required by UICA. As a result of this neglect; victims of pirate attacks, engine failure and other critical issues regularly limp to whatever safety they can find in the Salus system. Unfortunately for many of them they will crash land on Salus IV where there are few regular shuttles between its scattered ports and the outside universe. As the locals are fond of saying 'Getting to Salus IV is hard, getting off may be impossible'.", + "copy-from": "afs_welcome1_book" + }, { "id": "textbook_atomic", "type": "BOOK", diff --git a/data/mods/Aftershock/items/cast_spell_items.json b/data/mods/Aftershock/items/cast_spell_items.json index 98cbb5aff37b5..c8d216ee547cf 100644 --- a/data/mods/Aftershock/items/cast_spell_items.json +++ b/data/mods/Aftershock/items/cast_spell_items.json @@ -10,11 +10,10 @@ "material": [ "superalloy" ], "symbol": "[", "color": "light_red", - "covers": [ "torso" ], "charges_per_use": 1, - "coverage": 0, "warmth": 0, - "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "ONLY_ONE", "NO_UNLOAD", "NO_RELOAD" ] + "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "ONLY_ONE", "NO_UNLOAD", "NO_RELOAD" ], + "armor": [ { "coverage": 0, "covers": [ "torso" ] } ] }, { "id": "afs_holo_transposition_caster", diff --git a/data/mods/Aftershock/items/corpses.json b/data/mods/Aftershock/items/corpses.json index 9ae73dc822741..7f6e2216d127b 100644 --- a/data/mods/Aftershock/items/corpses.json +++ b/data/mods/Aftershock/items/corpses.json @@ -201,9 +201,25 @@ "id": "broken_wraitheon_irradiant", "copy-from": "broken_advbot_disarmed", "color": "magenta", - "name": "broken Wraitheon Irradiant", + "name": "broken Irradiant", "description": "The irreparably broken remains of an Irradiant weapons platform. Its mounted plasma cannon self-destructed when the robot was rendered inoperable, but its remains could still be disassembled for some valuable parts." }, + { + "type": "GENERIC", + "id": "broken_wraitheon_isohypsa", + "copy-from": "broken_advbot_disarmed", + "color": "magenta", + "name": { "str_sp": "broken Isohypsa" }, + "description": "The broken shell of an Isohypsa drone coordinator. Most of its sensors and AI units are charred beyond any repair." + }, + { + "type": "GENERIC", + "id": "broken_wraitheon_kaburaya", + "copy-from": "broken_advbot_disarmed", + "color": "magenta", + "name": { "str_sp": "broken Kabura-ya" }, + "description": "A broken Kabura-ya drone. Could be disassembled for a meager amount of parts." + }, { "type": "GENERIC", "id": "broken_advbot_emp", diff --git a/data/mods/Aftershock/items/ethereal.json b/data/mods/Aftershock/items/ethereal.json index 3ae15d5addf67..2628d6ecf13bc 100644 --- a/data/mods/Aftershock/items/ethereal.json +++ b/data/mods/Aftershock/items/ethereal.json @@ -10,8 +10,12 @@ "symbol": "o", "warmth": 150, "color": "green", - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "head", "foot_l", "foot_r", "mouth", "eyes" ], - "flags": [ "AURA", "SEMITANGIBLE", "OVERSIZE", "ONLY_ONE", "TRADER_AVOID", "NO_TAKEOFF", "CLIMATE_CONTROL", "NONCONDUCTIVE" ] + "flags": [ "AURA", "SEMITANGIBLE", "OVERSIZE", "ONLY_ONE", "TRADER_AVOID", "NO_TAKEOFF", "CLIMATE_CONTROL", "NONCONDUCTIVE" ], + "armor": [ + { + "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "head", "foot_l", "foot_r", "mouth", "eyes" ] + } + ] }, { "id": "cold_res_cream_greater", @@ -24,10 +28,14 @@ "symbol": "o", "warmth": 150, "color": "green", - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "head", "foot_l", "foot_r", "mouth", "eyes" ], "flags": [ "AURA", "SEMITANGIBLE", "OVERSIZE", "ONLY_ONE", "TRADER_AVOID", "NO_TAKEOFF", "CLIMATE_CONTROL", "NONCONDUCTIVE" ], "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "ARMOR_COLD", "multiply": -0.25 } ] } ] - } + }, + "armor": [ + { + "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "head", "foot_l", "foot_r", "mouth", "eyes" ] + } + ] } ] diff --git a/data/mods/Aftershock/items/grenades.json b/data/mods/Aftershock/items/grenades.json index 9113e08deb232..7b030143b674c 100644 --- a/data/mods/Aftershock/items/grenades.json +++ b/data/mods/Aftershock/items/grenades.json @@ -1,4 +1,42 @@ [ + { + "id": "afs_kaburaya_bomb", + "type": "TOOL", + "copy-from": "grenade_canister", + "category": "weapons", + "looks_like": "c4", + "name": "Kabura-ya antipersonnel device", + "description": "A tiny plastic explosive meant to be installed in a Kabura-ya drone. Explodes 3 turns after activation.", + "use_action": { + "need_wielding": true, + "target": "afs_kaburaya_bomb_act", + "msg": "You activate the device.", + "target_charges": 3, + "active": true, + "menu_text": "Pull pin", + "type": "transform" + }, + "flags": [ "RADIO_MODABLE", "RADIO_INVOKE_PROC", "BOMB", "GRENADE" ] + }, + { + "id": "afs_kaburaya_bomb_act", + "type": "TOOL", + "copy-from": "grenade_canister", + "looks_like": "c4", + "name": "Armed Kabura-ya antipersonnel device", + "description": "A tiny plastic explosive meant to be installed within a Kabura-ya drone. It is on the verge of exploding.", + "initial_charges": 3, + "max_charges": 3, + "turns_per_charge": 2, + "use_action": { + "type": "explosion", + "sound_volume": 0, + "sound_msg": "Tick.", + "no_deactivate_msg": "You've already activated the %s; try throwing it instead.", + "explosion": { "power": 100, "max_noise": 25, "shrapnel": { "casing_mass": 217, "fragment_mass": 0.25 }, "distance_factor": 0.2 } + }, + "flags": [ "BOMB", "TRADER_AVOID" ] + }, { "id": "afs_electroshock_grenade_1", "type": "TOOL", diff --git a/data/mods/Aftershock/items/gun/10mm.json b/data/mods/Aftershock/items/gun/10mm.json index 1dfe73939b256..0f1762d922522 100644 --- a/data/mods/Aftershock/items/gun/10mm.json +++ b/data/mods/Aftershock/items/gun/10mm.json @@ -1,6 +1,6 @@ [ { - "id": "afs_orion_84K", + "id": "afs_seyfert_84K", "copy-from": "pistol_base", "looks_like": "glock_17", "type": "GUN", diff --git a/data/mods/Aftershock/items/inactiverobot.json b/data/mods/Aftershock/items/inactiverobot.json index c334ea472ff15..aff33347f7ea8 100644 --- a/data/mods/Aftershock/items/inactiverobot.json +++ b/data/mods/Aftershock/items/inactiverobot.json @@ -184,7 +184,7 @@ "price": 600000, "to_hit": -3, "bashing": 8, - "material": [ "alien_resin" ], + "material": [ "aluminum", "plastic" ], "symbol": ";", "color": "green", "use_action": { @@ -195,6 +195,29 @@ "skills": [ "computer" ] } }, + { + "id": "bot_wraitheon_kaburaya", + "type": "TOOL", + "name": { "str": "inactive Kabura-ya drone" }, + "description": "An inactive Karuba-ya hunter drone, folded for ease of storage. If deployed, it will seek and fly to the closest enemy before detonating. Unlike most robots, its activation depends on a successful throw, and not on your computer skill.", + "weight": "550 g", + "volume": "250 ml", + "price": 5000, + "to_hit": -3, + "bashing": 0, + "material": [ "aluminum", "plastic" ], + "symbol": ";", + "color": "green", + "use_action": { + "type": "place_monster", + "monster_id": "mon_wraitheon_kaburaya", + "friendly_msg": "The Kabura-ya emits a short IFF chirp as you throw it.", + "hostile_msg": "The Kabura-ya emits an warning whine after your botched throw!", + "difficulty": 1, + "moves": 100, + "skills": [ "throw" ] + } + }, { "id": "bot_bloodhound_drone", "type": "TOOL", diff --git a/data/mods/Aftershock/items/items.json b/data/mods/Aftershock/items/items.json index 2850b072dc91f..9efde1a91fd57 100644 --- a/data/mods/Aftershock/items/items.json +++ b/data/mods/Aftershock/items/items.json @@ -182,10 +182,9 @@ "material": [ "titanium" ], "symbol": "[", "color": "light_gray", - "covers": [ "hand_l", "hand_r" ], "sided": true, - "coverage": 5, - "flags": [ "WATCH", "STURDY", "BELTED", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY", "OVERSIZE" ] + "flags": [ "WATCH", "STURDY", "BELTED", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY", "OVERSIZE" ], + "armor": [ { "coverage": 5, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "afs_titanium_ring", diff --git a/data/mods/Aftershock/items/obsolete.json b/data/mods/Aftershock/items/obsolete.json index 3dcb09a95aea0..888232598bacf 100644 --- a/data/mods/Aftershock/items/obsolete.json +++ b/data/mods/Aftershock/items/obsolete.json @@ -298,11 +298,7 @@ "price": 100000000, "price_postapoc": 50000, "material": [ "superalloy", "kevlar" ], - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, "material_thickness": 2, - "encumbrance": 4, - "max_encumbrance": 9, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "1 L", "max_contains_weight": "3 kg", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "1 L", "max_contains_weight": "3 kg", "moves": 80 } @@ -320,7 +316,14 @@ "OUTER", "STURDY" ], - "looks_like": "depowered_armor" + "looks_like": "depowered_armor", + "armor": [ + { + "encumbrance": [ 4, 9 ], + "coverage": 100, + "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "afs_hev_helmet", @@ -334,10 +337,7 @@ "price": 10000000, "price_postapoc": 5000, "material": [ "superalloy", "plastic" ], - "covers": [ "head", "eyes", "mouth" ], - "coverage": 100, "material_thickness": 2, - "encumbrance": 15, "warmth": 20, "environmental_protection": 11, "qualities": [ [ "GLARE", 3 ] ], @@ -369,7 +369,8 @@ "light_disposable_cell" ] } - ] + ], + "armor": [ { "encumbrance": 15, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ] }, { "id": "afs_hev_helmet_on", @@ -396,12 +397,10 @@ "symbol": "[", "looks_like": "quiver", "color": "dark_gray", - "covers": [ "torso" ], - "coverage": 20, - "encumbrance": 5, "material_thickness": 1, "pocket_data": [ { "ammo_restriction": { "arrow": 40, "bolt": 40 }, "moves": 20 } ], - "flags": [ "BELTED", "OVERSIZE", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "OVERSIZE", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 5, "coverage": 20, "covers": [ "torso" ] } ] }, { "id": "afs_survivor_belt", @@ -430,12 +429,10 @@ "symbol": "[", "looks_like": "armor_blarmor", "color": "brown", - "covers": [ "torso" ], - "coverage": 100, - "encumbrance": 16, "warmth": 25, "material_thickness": 3, - "flags": [ "RAINPROOF", "STURDY", "OUTER", "ONLY_ONE", "VARSIZE" ] + "flags": [ "RAINPROOF", "STURDY", "OUTER", "ONLY_ONE", "VARSIZE" ], + "armor": [ { "encumbrance": 16, "coverage": 100, "covers": [ "torso" ] } ] }, { "id": "afs_mbr_titanium", @@ -452,10 +449,6 @@ "symbol": "[", "looks_like": "kevlar", "color": "light_gray", - "covers": [ "torso" ], - "coverage": 85, - "encumbrance": 3, - "max_encumbrance": 7, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "1 L", "max_contains_weight": "3 kg", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "1 L", "max_contains_weight": "3 kg", "moves": 80 } @@ -463,7 +456,8 @@ "warmth": 15, "material_thickness": 3, "use_action": { "type": "holster", "holster_prompt": "Stash ammo", "holster_msg": "You stash your %s." }, - "flags": [ "STURDY", "OUTER" ] + "flags": [ "STURDY", "OUTER" ], + "armor": [ { "encumbrance": [ 3, 7 ], "coverage": 85, "covers": [ "torso" ] } ] }, { "id": "afs_sunesthesia", @@ -643,12 +637,10 @@ "symbol": "[", "looks_like": "armor_blarmor", "color": "white", - "covers": [ "torso" ], - "coverage": 95, - "encumbrance": 14, "warmth": 20, "material_thickness": 2, - "flags": [ "OUTER", "VARSIZE" ] + "flags": [ "OUTER", "VARSIZE" ], + "armor": [ { "encumbrance": 14, "coverage": 95, "covers": [ "torso" ] } ] }, { "type": "GENERIC", diff --git a/data/mods/Aftershock/items/tool_armor.json b/data/mods/Aftershock/items/tool_armor.json index 57ea1950fb1cf..10cb0d0ce8ab0 100644 --- a/data/mods/Aftershock/items/tool_armor.json +++ b/data/mods/Aftershock/items/tool_armor.json @@ -33,13 +33,17 @@ "need_charges": 5, "need_charges_msg": "The %s's batteries are dead." }, - "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], "warmth": 20, "environmental_protection": 10, - "coverage": 100, "material_thickness": 1, - "encumbrance": 5, - "flags": [ "VARSIZE", "SKINTIGHT", "RAINPROOF", "STURDY", "WATERPROOF", "HYGROMETER" ] + "flags": [ "VARSIZE", "SKINTIGHT", "RAINPROOF", "STURDY", "WATERPROOF", "HYGROMETER" ], + "armor": [ + { + "encumbrance": 5, + "coverage": 100, + "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "afs_cryopod_bodyglove_on", diff --git a/data/mods/Aftershock/items/tools.json b/data/mods/Aftershock/items/tools.json index 634d7b151cc72..5d0c6819e3493 100644 --- a/data/mods/Aftershock/items/tools.json +++ b/data/mods/Aftershock/items/tools.json @@ -184,13 +184,11 @@ "copy-from": "UPS_off", "name": { "str": "UPS", "str_pl": "UPS's" }, "description": "This is a unified power supply, or UPS. It is a device developed jointly by military and scientific interests for use in combat and the field. The UPS is designed to power armor and some guns, but drains batteries quickly. It can be worn strapped to either leg for ease of access, and it's been waterproofed to protect the delicate electronics. Has its own custom battery, rechargeable and with higher capacity, but not removable", - "coverage": 5, "ammo": [ "battery" ], - "encumbrance": 2, - "covers": [ "leg_l", "leg_r" ], "sided": true, "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "battery": 1500 } } ], - "flags": [ "RECHARGE", "WAIST", "NO_UNLOAD", "NO_RELOAD", "FRAGILE", "OVERSIZE", "WATERPROOF", "IS_UPS" ] + "flags": [ "RECHARGE", "WAIST", "NO_UNLOAD", "NO_RELOAD", "FRAGILE", "OVERSIZE", "WATERPROOF", "IS_UPS" ], + "armor": [ { "encumbrance": 2, "coverage": 5, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "adv_UPS_off", @@ -198,11 +196,9 @@ "copy-from": "adv_UPS_off", "name": { "str": "advanced UPS", "str_pl": "advanced UPS's" }, "description": "This is an advanced version of the unified power supply, or UPS. This device has been significantly redesigned to provide better efficiency as well as to consume plutonium fuel cells rather than batteries, and is both slimmer and lighter to wear. Sadly, its plutonium reactor can't be charged in UPS charging station.", - "coverage": 5, - "encumbrance": 1, - "covers": [ "leg_l", "leg_r" ], "sided": true, - "flags": [ "WAIST", "FRAGILE", "OVERSIZE", "IS_UPS" ] + "flags": [ "WAIST", "FRAGILE", "OVERSIZE", "IS_UPS" ], + "armor": [ { "encumbrance": 1, "coverage": 5, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "bionic_maintenance_toolkit", @@ -290,7 +286,6 @@ "color": "dark_gray", "material": [ "glass", "titanium" ], "copy-from": "fancy_sunglasses", - "covers": [ "eyes", "torso" ], "ammo": [ "battery" ], "charges_per_use": 2, "use_action": [ @@ -316,7 +311,8 @@ "max_contains_weight": "20 kg", "item_restriction": [ "medium_battery_cell", "medium_plus_battery_cell", "medium_atomic_battery_cell", "medium_disposable_cell" ] } - ] + ], + "armor": [ { "covers": [ "eyes", "torso" ] } ] }, { "id": "vr_laptop_holosuite", diff --git a/data/mods/Aftershock/items/vehicle_items.json b/data/mods/Aftershock/items/vehicle_items.json index 2921c2a6ff8dd..276d63a3a5908 100644 --- a/data/mods/Aftershock/items/vehicle_items.json +++ b/data/mods/Aftershock/items/vehicle_items.json @@ -12,7 +12,7 @@ "symbol": "]", "color": "light_gray", "looks_like": "cargo_rack", - "properties": [ [ "monster_size_capacity", "LARGE" ] ], + "properties": [ [ "creature_size_capacity", "LARGE" ] ], "use_action": "CAPTURE_MONSTER_VEH", "flags": [ "TRADER_AVOID" ] } diff --git a/data/mods/Aftershock/items/weapons.json b/data/mods/Aftershock/items/weapons.json index fab508133ca3c..61938e5dbb8e7 100644 --- a/data/mods/Aftershock/items/weapons.json +++ b/data/mods/Aftershock/items/weapons.json @@ -156,9 +156,8 @@ "to_hit": 0, "flags": [ "NO_REPAIR", "NONCONDUCTIVE", "SLOW_WIELD", "DURABLE_MELEE", "UNARMED_WEAPON" ], "techniques": [ "WBLOCK_1" ], - "coverage": 100, - "encumbrance": 5, - "material_thickness": 1 + "material_thickness": 1, + "armor": [ { "encumbrance": 5, "coverage": 100 } ] }, { "type": "GENERIC", @@ -283,7 +282,7 @@ "longest_side": "183 cm", "price_postapoc": 40000, "bashing": 10, - "armor_data": { "covers": [ "torso" ], "coverage": 5, "material_thickness": 1, "encumbrance": 20 }, + "armor_data": { "material_thickness": 1, "armor": [ { "encumbrance": 20, "coverage": 5, "covers": [ "torso" ] } ] }, "reload_noise_volume": 3, "loudness": 8, "ranged_damage": { "damage_type": "stab", "amount": 17 }, @@ -321,7 +320,7 @@ "longest_side": "183 cm", "price_postapoc": 40000, "bashing": 10, - "armor_data": { "covers": [ "torso" ], "coverage": 5, "material_thickness": 1, "encumbrance": 20 }, + "armor_data": { "material_thickness": 1, "armor": [ { "encumbrance": 20, "coverage": 5, "covers": [ "torso" ] } ] }, "reload_noise_volume": 3, "loudness": 8, "ranged_damage": { "damage_type": "stab", "amount": 17 }, @@ -374,7 +373,7 @@ "longest_side": "152 cm", "price_postapoc": 2000, "bashing": 12, - "armor_data": { "covers": [ "torso" ], "coverage": 5, "material_thickness": 1, "encumbrance": 20 }, + "armor_data": { "material_thickness": 1, "armor": [ { "encumbrance": 20, "coverage": 5, "covers": [ "torso" ] } ] }, "reload_noise_volume": 3, "loudness": 8, "ranged_damage": { "damage_type": "stab", "amount": 12 }, diff --git a/data/mods/Aftershock/maps/city_buildings.json b/data/mods/Aftershock/maps/city_buildings.json index d2c90d393751a..9d1c3795747b1 100644 --- a/data/mods/Aftershock/maps/city_buildings.json +++ b/data/mods/Aftershock/maps/city_buildings.json @@ -37,5 +37,14 @@ { "point": [ -1, 2, 0 ], "overmap": "afs_formless_ruins_dynamic_north" } ], "locations": [ "land" ] + }, + { + "id": "afs_house_1", + "type": "city_building", + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "afs_shelter_1_north" }, + { "point": [ 0, 0, 1 ], "overmap": "afs_shelter_1_roof_north" } + ], + "locations": [ "land" ] } ] diff --git a/data/mods/Aftershock/maps/mapgen/formless_ruins/formless_ruins_dynamic.json b/data/mods/Aftershock/maps/mapgen/formless_ruins/formless_ruins_dynamic.json index 7f6327ca83929..c78d4579c9a43 100644 --- a/data/mods/Aftershock/maps/mapgen/formless_ruins/formless_ruins_dynamic.json +++ b/data/mods/Aftershock/maps/mapgen/formless_ruins/formless_ruins_dynamic.json @@ -150,6 +150,75 @@ "place_monsters": [ { "monster": "AFS_GROUP_MOXIE_LOW_RISK", "x": [ 0, 23 ], "y": [ 0, 23 ], "chance": 10, "density": 0.1 } ] } }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "afs_formless_ruins_dynamic" ], + "//": "emptier map with a droneswarm, very rare", + "weight": 10, + "object": { + "predecessor_mapgen": "field", + "rows": [ + " .1 ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " 1 ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_formless_ruins" ], + "nested": { + "1": { + "chunks": [ + [ "formless_ruins_ribs1", 20 ], + [ "formless_ruins_ribs2", 20 ], + [ "formless_ruins_twoway1", 20 ], + [ "formless_ruins_twoway2", 20 ], + [ "formless_ruins_twoway3", 20 ], + [ "formless_ruins_pillar1", 20 ], + [ "formless_ruins_pillar2", 20 ], + [ "formless_ruins_orderly1", 10 ], + [ "formless_ruins_orderly2", 10 ], + [ "formless_ruins_orderly3", 10 ], + [ "formless_ruins_orderly4", 10 ], + [ "formless_ruins_empty1", 10 ], + [ "formless_ruins_empty2", 10 ], + [ "formless_ruins_empty3", 10 ], + [ "formless_ruins_empty4", 10 ] + ] + } + }, + "place_loot": [ { "group": "afs_formless_ruins_random_loot", "x": [ 0, 23 ], "y": [ 0, 23 ], "chance": 50, "repeat": [ 1, 4 ] } ], + "place_monster": [ + { "monster": "mon_wraitheon_isohypsa", "x": 12, "y": 12, "spawn_data": { "patrol": [ { "x": 12, "y": 12 } ] } }, + { + "monster": "mon_wraitheon_irradiant", + "x": 8, + "y": 8, + "spawn_data": { "patrol": [ { "x": 8, "y": 8 }, { "x": 8, "y": 16 }, { "x": 16, "y": 16 }, { "x": 16, "y": 8 } ] } + }, + { "monster": "mon_wraitheon_kaburaya", "x": 4, "y": 4, "repeat": [ 6, 10 ] } + ] + } + }, { "type": "mapgen", "method": "json", diff --git a/data/mods/Aftershock/maps/mapgen/houses/houses.json b/data/mods/Aftershock/maps/mapgen/houses/houses.json new file mode 100644 index 0000000000000..00081a19164be --- /dev/null +++ b/data/mods/Aftershock/maps/mapgen/houses/houses.json @@ -0,0 +1,76 @@ +[ + { + "method": "json", + "om_terrain": "afs_shelter_1", + "type": "mapgen", + "weight": 100, + "object": { + "fill_ter": "t_metal_floor", + "rows": [ + " ", + " ", + " ++o+++o++o+++ppp.ppp ", + " +@.x.x.@+.@++......p ", + " +D.+.+.D+.D+++++l+++ ", + " ++n+.++n+xn++q+...o ", + " +D.x......hf+x++l+++ ", + " o@.+......hfn.77.77+ ", + " +n++++x++++n+......o ", + " o...........x......+ ", + " +nx++nx++nx++...++++ ", + " +5.t+5.t+5.t+...+ ", + " ++9+++9+++9++...o ", + " ++++++++++++....+ ", + " +{L.............++++ ", + " oF..........H.....y+ ", + " oV.J........H..2..y+ ", + " oI.J........H..2..y+ ", + " +P.S........H.....y+ ", + " +M^M...E.......Y...+ ", + " +++++R.......+++++++ ", + " +RRRR.JWZ+ ", + " ++++++ooo+ ", + " " + ], + "palettes": [ "standard_afsshelter_palette" ], + "place_item": [ { "item": "television", "repeat": 1, "x": 21, "y": 17 }, { "item": "toaster", "repeat": 1, "x": 6, "y": 17 } ], + "place_monsters": [ { "monster": "AFS_GROUP_MOXIE_LOW_RISK", "x": [ 0, 23 ], "y": [ 0, 23 ], "chance": 10, "density": 0.1 } ] + } + }, + { + "method": "json", + "om_terrain": "afs_shelter_1_roof", + "type": "mapgen", + "weight": 100, + "object": { + "fill_ter": "t_flat_roof", + "rows": [ + " ", + " ", + " .................... ", + " .................... ", + " .................... ", + " ......&A........... ", + " ......=A............ ", + " ............&....... ", + " ..........=AA....... ", + " .................... ", + " .................... ", + " ................. ", + " ................. ", + " ...&A............ ", + " ...=A............... ", + " ...........&........ ", + " .........=AA........ ", + " ..................X. ", + " ..=&................ ", + " ..AA................ ", + " .................... ", + " .......... ", + " .......... ", + " " + ], + "palettes": [ "roof_palette" ] + } + } +] diff --git a/data/mods/Aftershock/maps/mapgen_pallete/afs_formless_ruins.json b/data/mods/Aftershock/maps/mapgen_pallete/afs_formless_ruins.json index d03d6e696929f..393256c2ea351 100644 --- a/data/mods/Aftershock/maps/mapgen_pallete/afs_formless_ruins.json +++ b/data/mods/Aftershock/maps/mapgen_pallete/afs_formless_ruins.json @@ -3,7 +3,6 @@ "type": "palette", "id": "afs_formless_ruins", "terrain": { - " ": "t_region_groundcover_urban", ".": "t_metal_floor", "!": "t_door_locked_interior", "-": "t_wall_metal", diff --git a/data/mods/Aftershock/maps/mapgen_pallete/houses.json b/data/mods/Aftershock/maps/mapgen_pallete/houses.json new file mode 100644 index 0000000000000..c6743766db28b --- /dev/null +++ b/data/mods/Aftershock/maps/mapgen_pallete/houses.json @@ -0,0 +1,96 @@ +[ + { + "type": "palette", + "//": "the food should be rotted, but the regular food item groups can work for now", + "id": "standard_afsshelter_palette", + "toilets": { "t": { } }, + "terrain": { + " ": "t_region_groundcover_urban", + ".": "t_metal_floor", + "+": "t_wall_prefab_metal", + "o": [ + [ "t_wall_prefab_glass", 2 ], + [ "t_wall_prefab_glass_shutters", 2 ], + [ "t_wall_prefab_bglass_shutters", 4 ], + [ "t_wall_prefab_bglass", 5 ] + ], + "g": "t_wall_metal", + "h": "t_concrete_wall", + "i": [ [ "t_door_glass_c", 5 ], "t_door_glass_o", 5 ], + "j": [ [ "t_door_locked", 1 ], [ "t_door_c", 5 ], [ "t_door_o", 1 ] ], + "x": [ [ "t_door_locked_interior", 1 ], [ "t_door_c", 5 ], [ "t_door_o", 5 ] ], + "l": [ [ "t_door_metal_c", 5 ], [ "t_door_metal_pickable", 3 ], [ "t_door_metal_locked", 1 ], [ "t_door_metal_o", 5 ] ], + "n": "t_metal_ventilation_shutter", + "p": "t_metal_railing", + "<": "t_stairs_down", + ">": "t_stairs_up" + }, + "furniture": { + "@": "f_bed", + "D": "f_wardrobe", + "9": "f_shower", + "5": "f_sink", + "f": "f_table", + "y": "f_table", + "h": "f_chair", + "P": "f_dishwasher", + "i": "f_bench", + "2": "f_coffee_table", + "F": "f_fridge", + "H": "f_sofa", + "L": "f_cupboard", + "{": "f_cupboard", + "V": "f_cupboard", + "I": "f_cupboard", + "^": "f_sink", + "M": "f_cupboard", + "S": "f_cupboard", + "J": "f_counter", + "q": "f_rack", + "O": "f_oven", + "R": "f_bookcase", + "Y": "f_trashcan", + "E": "f_armchair", + "7": "f_locker", + "W": "f_washer", + "Z": "f_dryer" + }, + "items": { + "t": { "item": "SUS_toilet", "chance": 10, "repeat": [ 1, 3 ] }, + "D": [ { "item": "wardrobe_unisex_afs", "chance": 100, "repeat": [ 1, 2 ] } ], + "O": { "item": "SUS_oven", "chance": 100 }, + "2": [ + { "item": "consumer_electronics", "chance": 10, "repeat": [ 1, 3 ] }, + { "item": "livingroom", "chance": 10, "repeat": [ 1, 3 ] } + ], + "F": { "item": "SUS_fridge", "chance": 80 }, + "P": { "item": "SUS_dishwasher", "chance": 70 }, + "f": [ + { "item": "elecsto_persele", "chance": 10, "repeat": [ 1, 3 ] }, + { "item": "livingroom", "chance": 10, "repeat": [ 1, 3 ] } + ], + "q": [ + { "item": "tools_home", "chance": 40 }, + { "item": "cleaning", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "mechanics", "chance": 1, "repeat": [ 1, 2 ] }, + { "item": "camping", "chance": 10 }, + { "item": "tools_survival", "chance": 5, "repeat": [ 1, 2 ] } + ], + "7": { "item": "afs_frontier_cryo_g", "chance": 50 }, + "J": { "item": "kitchen_counters", "chance": 5 }, + "L": [ { "item": "SUS_dishes", "chance": 100 }, { "item": "SUS_silverware", "chance": 100 } ], + "{": { "item": "SUS_cookware", "chance": 100 }, + "V": [ { "item": "SUS_utensils", "chance": 50 }, { "item": "SUS_knife_drawer", "chance": 50 } ], + "I": { "item": "SUS_junk_drawer", "chance": 100 }, + "^": { "item": "SUS_kitchen_sink", "chance": 100 }, + "M": [ { "item": "SUS_pantry", "chance": 25 }, { "item": "cannedfood", "chance": 20, "repeat": [ 1, 2 ] } ], + "S": [ { "item": "SUS_breakfast_cupboard", "chance": 30 }, { "item": "SUS_coffee_cupboard", "chance": 50 } ], + "5": [ { "item": "SUS_bathroom_sink", "chance": 80 }, { "item": "SUS_bathroom_medicine", "chance": 60 } ], + "9": { "item": "shower", "chance": 30, "repeat": [ 1, 2 ] }, + "@": { "item": "bed", "chance": 50 }, + "Z": { "item": "wardrobe_unisex_afs", "chance": 100 }, + "W": { "item": "wardrobe_unisex_afs", "chance": 50 }, + "Y": { "item": "trash", "chance": 30, "repeat": [ 1, 4 ] } + } + } +] diff --git a/data/mods/Aftershock/maps/nested/road.json b/data/mods/Aftershock/maps/nested/road.json new file mode 100644 index 0000000000000..0b768c2404d66 --- /dev/null +++ b/data/mods/Aftershock/maps/nested/road.json @@ -0,0 +1,19 @@ +[ + { + "type": "mapgen", + "method": "json", + "update_mapgen_id": "mx_wraitheon_droneswarm", + "object": { + "place_monster": [ + { "monster": "mon_wraitheon_isohypsa", "x": 12, "y": 12, "spawn_data": { "patrol": [ { "x": 12, "y": 12 } ] } }, + { + "monster": "mon_wraitheon_irradiant", + "x": 8, + "y": 8, + "spawn_data": { "patrol": [ { "x": 8, "y": 8 }, { "x": 8, "y": 16 }, { "x": 16, "y": 16 }, { "x": 16, "y": 8 } ] } + }, + { "monster": "mon_wraitheon_kaburaya", "x": 4, "y": 4, "repeat": [ 6, 10 ] } + ] + } + } +] diff --git a/data/mods/Aftershock/maps/overmap_map_extras.json b/data/mods/Aftershock/maps/overmap_map_extras.json new file mode 100644 index 0000000000000..ff4307546b412 --- /dev/null +++ b/data/mods/Aftershock/maps/overmap_map_extras.json @@ -0,0 +1,12 @@ +[ + { + "id": "mx_wraitheon_droneswarm", + "type": "map_extra", + "name": { "str": "Wraitheon Droneswarm" }, + "description": "A group of combat drones.", + "generator": { "generator_method": "update_mapgen", "generator_id": "mx_wraitheon_droneswarm" }, + "sym": "w", + "color": "pink", + "autonote": true + } +] diff --git a/data/mods/Aftershock/maps/overmap_terrain.json b/data/mods/Aftershock/maps/overmap_terrain.json index fd6fae1a16e15..5930cde32ccd7 100644 --- a/data/mods/Aftershock/maps/overmap_terrain.json +++ b/data/mods/Aftershock/maps/overmap_terrain.json @@ -216,5 +216,23 @@ "color": "i_pink", "see_cost": 2, "mondensity": 2 + }, + { + "type": "overmap_terrain", + "id": [ "afs_shelter_1" ], + "name": "house", + "sym": "<", + "color": "green", + "spawns": { "group": "GROUP_ZOMBIE", "population": [ 1, 4 ], "chance": 50 }, + "flags": [ "SIDEWALK" ], + "see_cost": 3 + }, + { + "type": "overmap_terrain", + "id": [ "afs_shelter_1_roof" ], + "name": "house roof", + "sym": "<", + "color": "green", + "see_cost": 3 } ] diff --git a/data/mods/Aftershock/mobs/PrepPhyle_mobs.json b/data/mods/Aftershock/mobs/PrepPhyle_mobs.json index 1c1b8b25b203c..601f46666c698 100644 --- a/data/mods/Aftershock/mobs/PrepPhyle_mobs.json +++ b/data/mods/Aftershock/mobs/PrepPhyle_mobs.json @@ -59,7 +59,6 @@ "upgrades": { "age_grow": 42, "into": "afs_mon_cyber_mastiff" }, "biosignature": { "biosig_item": "feces_dog", "biosig_timer": 6 }, "fear_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT" ], - "death_function": [ "NORMAL" ], "special_attacks": [ [ "EAT_FOOD", 100 ] ], "flags": [ "ANIMAL", "DOGFOOD", "HEARS", "KEENNOSE", "PATH_AVOID_DANGER_1", "SEES", "SMELLS", "WARM" ] } diff --git a/data/mods/Aftershock/mobs/abstract_monsters.json b/data/mods/Aftershock/mobs/abstract_monsters.json new file mode 100644 index 0000000000000..d7954840f18d9 --- /dev/null +++ b/data/mods/Aftershock/mobs/abstract_monsters.json @@ -0,0 +1,89 @@ +[ + { + "abstract": "mon_milbot_base", + "type": "MONSTER", + "looks_like": "mon_secubot", + "name": "military robot", + "description": "A military robot still operating due to its internal power core. This one is armed with an electric prod and an integrated 5.56mm.", + "default_faction": "WraitheonRobotics", + "species": [ "ROBOT" ], + "volume": "62500 ml", + "weight": "81500 g", + "hp": 80, + "speed": 100, + "material": [ "steel" ], + "symbol": "R", + "color": "red_green", + "aggression": 50, + "morale": 100, + "melee_skill": 4, + "melee_dice": 2, + "melee_dice_sides": 4, + "dodge": 4, + "armor_bash": 12, + "armor_cut": 12, + "armor_stab": 6, + "armor_fire": 5, + "armor_acid": 12, + "vision_day": 50, + "path_settings": { "max_dist": 5 }, + "death_drops": { "groups": [ [ "broken_robots", 1 ] ] }, + "death_function": { "corpse_type": "BROKEN" }, + "flags": [ "SEES", "HEARS", "BASHES", "ELECTRONIC", "NO_BREATHE", "PRIORITIZE_TARGETS", "PATH_AVOID_DANGER_1" ] + }, + { + "abstract": "mon_defbot_base", + "type": "MONSTER", + "looks_like": "mon_secubot", + "name": "defense robot", + "description": "An automated defense robot still active due to its internal power source. This one is armed with an electric prod and an integrated 9mm firearm.", + "default_faction": "cop_bot", + "species": [ "ROBOT" ], + "diff": 10, + "volume": "62500 ml", + "weight": "81500 g", + "hp": 80, + "speed": 100, + "material": [ "steel" ], + "symbol": "R", + "color": "light_blue", + "aggression": 100, + "morale": 100, + "luminance": 20, + "melee_skill": 4, + "melee_dice": 2, + "melee_dice_sides": 4, + "dodge": 4, + "armor_bash": 10, + "armor_cut": 10, + "armor_stab": 5, + "armor_fire": 5, + "armor_acid": 10, + "vision_day": 50, + "path_settings": { "max_dist": 5 }, + "death_drops": { "groups": [ [ "broken_robots", 1 ] ] }, + "death_function": { "corpse_type": "BROKEN" }, + "flags": [ "SEES", "HEARS", "BASHES", "ELECTRONIC", "NO_BREATHE", "PRIORITIZE_TARGETS", "PATH_AVOID_DANGER_1" ] + }, + { + "abstract": "mon_advbot_base", + "type": "MONSTER", + "copy-from": "mon_defbot_base", + "looks_like": "mon_copbot", + "name": "advanced robot", + "description": "An advanced robot still functioning due to its internal fusion core. This model is armed with a powerful laser-emitter.", + "default_faction": "defense_bot", + "species": [ "ROBOT" ], + "hp": 100, + "armor_bash": 8, + "armor_cut": 6, + "armor_stab": 6, + "armor_fire": 8, + "armor_acid": 12, + "vision_day": 50, + "speed": 110, + "color": "white_cyan", + "aggression": 100, + "dodge": 5 + } +] diff --git a/data/mods/Aftershock/mobs/aliens.json b/data/mods/Aftershock/mobs/aliens.json index f1a43aa30ff1e..f6ac6e32e6049 100644 --- a/data/mods/Aftershock/mobs/aliens.json +++ b/data/mods/Aftershock/mobs/aliens.json @@ -22,7 +22,6 @@ "reproduction": { "baby_monster": "afs_mon_rabbit", "baby_count": 3, "baby_timer": 55 }, "harvest": "alien_small_fur", "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "CATTLEFODDER", "PET_WONT_FOLLOW", "WARM" ] }, { @@ -51,7 +50,6 @@ "vision_night": 25, "path_settings": { "max_dist": 10 }, "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "harvest": "alien_large_leather", "biosignature": { "biosig_item": "feces_manure", "biosig_timer": 8 }, "flags": [ "SEES", "HEARS", "SMELLS", "PET_MOUNTABLE", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM" ] @@ -85,7 +83,6 @@ "vision_night": 7, "path_settings": { "max_dist": 10 }, "anger_triggers": [ "HURT", "MATING_SEASON" ], - "death_function": [ "NORMAL" ], "baby_flags": [ "AUTUMN" ], "harvest": "alien_large_leather", "biosignature": { "biosig_item": "feces_manure", "biosig_timer": 8 }, @@ -119,7 +116,6 @@ "harvest": "alien_small_fur", "path_settings": { "max_dist": 10 }, "anger_triggers": [ "PLAYER_WEAK", "FRIEND_ATTACKED", "FRIEND_DIED" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "WARM", "SWIMS", "ANIMAL", "PATH_AVOID_DANGER_1", "STUMBLES" ] }, { @@ -149,7 +145,6 @@ "harvest": "alien_mammal_fur", "path_settings": { "max_dist": 10 }, "anger_triggers": [ "STALK", "FRIEND_ATTACKED", "FRIEND_DIED", "PLAYER_WEAK", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "KEENNOSE" ] } ] diff --git a/data/mods/Aftershock/mobs/monster_faction.json b/data/mods/Aftershock/mobs/monster_faction.json index 667083f11a11f..72ed04203be11 100644 --- a/data/mods/Aftershock/mobs/monster_faction.json +++ b/data/mods/Aftershock/mobs/monster_faction.json @@ -33,11 +33,17 @@ "by_mood": [ "insect", "small_animal", "human", "bee" ], "hate": "zombie" }, + { + "type": "MONSTER_FACTION", + "name": "zombie", + "copy-from": "zombie", + "neutral": [ "moxie" ] + }, { "type": "MONSTER_FACTION", "name": "moxie", "base_faction": "mutant", - "neutral": "bio_machine", + "neutral": [ "bio_machine", "zombie" ], "by_mood": [ "small_animal", "herbivore" ], "hate": [ "insect", "human", "mutant", "WraitheonRobotics", "bot" ] }, diff --git a/data/mods/Aftershock/mobs/mutants.json b/data/mods/Aftershock/mobs/mutants.json index 28253feaa4eeb..74742e1ce3aa1 100644 --- a/data/mods/Aftershock/mobs/mutants.json +++ b/data/mods/Aftershock/mobs/mutants.json @@ -28,7 +28,6 @@ "vision_night": 3, "path_settings": { "avoid_traps": true, "avoid_sharp": true }, "death_drops": "cryo_lab_drops", - "death_function": [ "NORMAL" ], "anger_triggers": [ "FRIEND_DIED", "FRIEND_ATTACKED", "HURT" ], "flags": [ "SEES", "HEARS", "SMELLS", "BASHES", "GROUP_BASH", "HUMAN", "CAN_OPEN_DOORS", "PATH_AVOID_DANGER_1", "COLDPROOF" ] }, diff --git a/data/mods/Aftershock/mobs/robots.json b/data/mods/Aftershock/mobs/robots.json index 6bd58ca042a00..fda0b5e8bc295 100644 --- a/data/mods/Aftershock/mobs/robots.json +++ b/data/mods/Aftershock/mobs/robots.json @@ -32,7 +32,7 @@ } ], "death_drops": { }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "ELECTRONIC", "IMMOBILE", "NO_BREATHE" ] }, { @@ -74,7 +74,7 @@ "starting_ammo": { "40x46mm_m433": 100, "556": 1000 }, "path_settings": { "max_dist": 10 }, "special_attacks": [ [ "CHICKENBOT", 4 ] ], - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", "BASHES", "NO_BREATHE", "ELECTRONIC", "PRIORITIZE_TARGETS", "DROPS_AMMO" ] }, { @@ -106,7 +106,7 @@ "starting_ammo": { "40x46mm_m433": 200, "556": 3000 }, "path_settings": { "max_dist": 20 }, "special_attacks": [ [ "MULTI_ROBOT", 3 ] ], - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", @@ -167,7 +167,7 @@ } ], "death_drops": { "groups": [ [ "robots", 4 ], [ "tripod", 1 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", "GOODHEARING", "BASHES", "NO_BREATHE", "ELECTRONIC", "CLIMBS", "PRIORITIZE_TARGETS", "FIREPROOF" ] }, { @@ -210,7 +210,7 @@ "targeting_sound": "\"Dispatching hostile with lethal force.\"" } ], - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "death_drops": { "groups": [ [ "mon_afs_sentinel_lx_drops", 1 ] ] }, "flags": [ "SEES", @@ -245,7 +245,7 @@ "armor_bullet": 6, "revert_to_itype": "bot_bloodhound_drone", "death_drops": { "groups": [ [ "robots", 4 ], [ "manhack", 1 ], [ "turret_searchlight", 1 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "extend": { "flags": [ "HIT_AND_RUN" ] } }, { @@ -271,7 +271,7 @@ "armor_fire": 4, "armor_acid": 6, "vision_day": 50, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "death_drops": { "groups": [ [ "broken_robots", 3 ] ] }, "flags": [ "SEES", "HEARS", "ELECTRONIC", "NO_BREATHE", "PRIORITIZE_TARGETS", "PATH_AVOID_DANGER_1" ] }, @@ -368,7 +368,7 @@ "vision_day": 50, "special_attacks": [ { "id": "hypo_pkill" } ], "anger_triggers": [ "FRIEND_ATTACKED", "PLAYER_WEAK", "HURT", "PLAYER_CLOSE" ], - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "death_drops": { "groups": [ [ "broken_robots", 3 ] ] }, "flags": [ "SEES", "HEARS", "ELECTRONIC", "NO_BREATHE", "PRIORITIZE_TARGETS", "PATH_AVOID_DANGER_1" ] }, @@ -456,7 +456,7 @@ "type": "gun", "move_cost": 150, "cooldown": 2, - "gun_type": "m1014", + "gun_type": "mossberg_930", "ammo_type": "shot", "fake_skills": [ [ "gun", 2 ], [ "shotgun", 2 ] ], "fake_dex": 9, @@ -466,38 +466,6 @@ ], "extend": { "flags": [ "DROPS_AMMO" ] } }, - { - "abstract": "mon_milbot_base", - "type": "MONSTER", - "looks_like": "mon_secubot", - "name": "military robot", - "description": "A military robot still operating due to its internal power core. This one is armed with an electric prod and an integrated 5.56mm.", - "default_faction": "WraitheonRobotics", - "species": [ "ROBOT" ], - "volume": "62500 ml", - "weight": "81500 g", - "hp": 80, - "speed": 100, - "material": [ "steel" ], - "symbol": "R", - "color": "red_green", - "aggression": 50, - "morale": 100, - "melee_skill": 4, - "melee_dice": 2, - "melee_dice_sides": 4, - "dodge": 4, - "armor_bash": 12, - "armor_cut": 12, - "armor_stab": 6, - "armor_fire": 5, - "armor_acid": 12, - "vision_day": 50, - "path_settings": { "max_dist": 5 }, - "death_drops": { "groups": [ [ "broken_robots", 1 ] ] }, - "death_function": [ "BROKEN" ], - "flags": [ "SEES", "HEARS", "BASHES", "ELECTRONIC", "NO_BREATHE", "PRIORITIZE_TARGETS", "PATH_AVOID_DANGER_1" ] - }, { "id": "mon_milbot_556", "type": "MONSTER", @@ -592,27 +560,6 @@ ], "extend": { "flags": [ "DROPS_AMMO" ] } }, - { - "abstract": "mon_advbot_base", - "type": "MONSTER", - "copy-from": "mon_defbot_base", - "looks_like": "mon_copbot", - "name": "advanced robot", - "description": "An advanced robot still functioning due to its internal fusion core. This model is armed with a powerful laser-emitter.", - "default_faction": "defense_bot", - "species": [ "ROBOT" ], - "hp": 100, - "armor_bash": 8, - "armor_cut": 6, - "armor_stab": 6, - "armor_fire": 8, - "armor_acid": 12, - "vision_day": 50, - "speed": 110, - "color": "white_cyan", - "aggression": 100, - "dodge": 5 - }, { "id": "mon_advbot_laser", "type": "MONSTER", @@ -680,6 +627,50 @@ { "type": "leap", "cooldown": 10, "max_range": 8 } ] }, + { + "id": "mon_wraitheon_isohypsa", + "type": "MONSTER", + "copy-from": "mon_advbot_base", + "name": "Wraitheon Isohypsa", + "description": "A bulky if not particularly large aerial drone, with an advanced AI overwatch unit and a bulbous carapace, mostly dedicated to mounting high-resolution sensors. As an autonomous drone control platform, the Isohypsa is principally meant to coordinate and enhance the combat capabilities of simpler Wraitheon robots in lieu of human operators.", + "default_faction": "WraitheonRobotics", + "symbol": "y", + "diff": 20, + "speed": 100, + "color": "light_red", + "armor_bash": 20, + "armor_cut": 30, + "armor_fire": 15, + "armor_bullet": 35, + "morale": 20, + "luminance": 20, + "tracking_distance": 20, + "extend": { "flags": [ "FIREPROOF", "PACIFIST", "KEEP_DISTANCE", "FLIES" ] }, + "special_attacks": [ + { + "type": "spell", + "spell_data": { "id": "isohypsa_buff", "hit_self": true }, + "cooldown": 5, + "monster_message": "The Isohypsa emits a rapid sequence of sibilant tones!" + } + ] + }, + { + "id": "mon_wraitheon_kaburaya", + "copy-from": "base_drone", + "type": "MONSTER", + "name": "Wraitheon Kabura-ya", + "description": "A microplane drone designed to seek enemy personnel before detonating at close range.", + "default_faction": "WraitheonRobotics", + "diff": 10, + "speed": 250, + "color": "green", + "armor_cut": 4, + "armor_bullet": 3, + "revert_to_itype": "bot_wraitheon_kaburaya", + "starting_ammo": { "afs_kaburaya_bomb": 1 }, + "special_attacks": [ [ "KAMIKAZE", 0 ] ] + }, { "id": "mon_advbot_emp", "type": "MONSTER", @@ -706,39 +697,5 @@ "targeting_volume": 10 } ] - }, - { - "abstract": "mon_defbot_base", - "type": "MONSTER", - "looks_like": "mon_secubot", - "name": "defense robot", - "description": "An automated defense robot still active due to its internal power source. This one is armed with an electric prod and an integrated 9mm firearm.", - "default_faction": "cop_bot", - "species": [ "ROBOT" ], - "diff": 10, - "volume": "62500 ml", - "weight": "81500 g", - "hp": 80, - "speed": 100, - "material": [ "steel" ], - "symbol": "R", - "color": "light_blue", - "aggression": 100, - "morale": 100, - "luminance": 20, - "melee_skill": 4, - "melee_dice": 2, - "melee_dice_sides": 4, - "dodge": 4, - "armor_bash": 10, - "armor_cut": 10, - "armor_stab": 5, - "armor_fire": 5, - "armor_acid": 10, - "vision_day": 50, - "path_settings": { "max_dist": 5 }, - "death_drops": { "groups": [ [ "broken_robots", 1 ] ] }, - "death_function": [ "BROKEN" ], - "flags": [ "SEES", "HEARS", "BASHES", "ELECTRONIC", "NO_BREATHE", "PRIORITIZE_TARGETS", "PATH_AVOID_DANGER_1" ] } ] diff --git a/data/mods/Aftershock/mobs/turrets.json b/data/mods/Aftershock/mobs/turrets.json index 95ab5f628d82c..dd66f296d7e8c 100644 --- a/data/mods/Aftershock/mobs/turrets.json +++ b/data/mods/Aftershock/mobs/turrets.json @@ -33,7 +33,7 @@ ], "special_when_hit": [ "RETURN_FIRE", 100 ], "death_drops": { }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "NOHEAD", "ELECTRONIC", "COLDPROOF", "IMMOBILE", "NO_BREATHE" ] } ] diff --git a/data/mods/Aftershock/mobs/uplifted_monsters.json b/data/mods/Aftershock/mobs/uplifted_monsters.json index 6bf8dd1ab0d90..1fe127f542dd2 100644 --- a/data/mods/Aftershock/mobs/uplifted_monsters.json +++ b/data/mods/Aftershock/mobs/uplifted_monsters.json @@ -48,7 +48,6 @@ "vision_night": 10, "path_settings": { "max_dist": 10 }, "anger_triggers": [ "HURT", "PLAYER_NEAR_BABY" ], - "death_function": [ "NORMAL" ], "zombify_into": "mon_zombie_upliftedbear", "death_drops": "xl_uplift_death_drop", "harvest": "demihuman_large_fur", @@ -106,7 +105,6 @@ "death_drops": "xl_uplift_death_drop", "harvest": "demihuman_large_fur", "special_attacks": [ [ "scratch", 20 ] ], - "death_function": [ "NORMAL" ], "zombify_into": "mon_uplifted_ape_zed", "flags": [ "SEES", "SMELLS", "HEARS", "WARM", "BASHES", "GROUP_BASH", "ANIMAL", "PATH_AVOID_DANGER_1", "PATH_AVOID_DANGER_1" ] }, @@ -159,7 +157,6 @@ "vision_night": 7, "path_settings": { "max_dist": 10 }, "anger_triggers": [ "HURT", "PLAYER_NEAR_BABY" ], - "death_function": [ "NORMAL" ], "zombify_into": "mon_zombie_upliftedoctopus", "death_drops": "seabased_death_drop", "harvest": "demihuman", diff --git a/data/mods/Aftershock/mobs/water_mobs.json b/data/mods/Aftershock/mobs/water_mobs.json index 74d02d52527aa..d21389b41385b 100644 --- a/data/mods/Aftershock/mobs/water_mobs.json +++ b/data/mods/Aftershock/mobs/water_mobs.json @@ -34,7 +34,6 @@ { "id": "scratch", "damage_max_instance": [ { "damage_type": "cut", "amount": 19, "armor_multiplier": 0.8 } ] }, [ "TENTACLE", 5 ] ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", @@ -86,7 +85,6 @@ [ "TENTACLE", 5 ], { "type": "spell", "spell_data": { "id": "mi-go_slaver_beam", "min_level": 1 }, "cooldown": 400 } ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", diff --git a/data/mods/Aftershock/mobs/zombies.json b/data/mods/Aftershock/mobs/zombies.json index 4b2510661e697..da720040b5db4 100644 --- a/data/mods/Aftershock/mobs/zombies.json +++ b/data/mods/Aftershock/mobs/zombies.json @@ -22,7 +22,6 @@ "harvest": "zombie", "special_attacks": [ [ "GRAB", 7 ], [ "scratch", 20 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 28, "into": "mon_afs_headless_horror" }, "flags": [ "STUMBLES", @@ -64,7 +63,6 @@ "harvest": "zombie", "special_attacks": [ [ "GRAB", 3 ], [ "scratch", 3 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -114,7 +112,6 @@ } ], "death_drops": "xl_uplift_death_drop", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -158,7 +155,6 @@ "harvest": "zombie_meatslug", "death_drops": "xl_uplift_death_drop", "special_attacks": [ [ "SMASH", 20 ] ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -204,7 +200,6 @@ "harvest": "zombie", "special_attacks": [ [ "SMASH", 28 ] ], "death_drops": "xl_uplift_death_drop", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -249,7 +244,6 @@ "harvest": "zombie_meatslug", "death_drops": "seabased_death_drop", "special_attacks": [ { "type": "bite", "cooldown": 5 } ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -299,7 +293,6 @@ { "type": "bite", "cooldown": 5 }, { "id": "scratch", "damage_max_instance": [ { "damage_type": "cut", "amount": 12 } ] } ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -358,7 +351,6 @@ ] } ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -410,7 +402,6 @@ { "type": "bite", "cooldown": 5 }, { "id": "scratch", "damage_max_instance": [ { "damage_type": "cut", "amount": 6 } ] } ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -455,7 +446,6 @@ "harvest": "frost_human", "death_drops": "default_moxie_human_death_drops", "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "GRAB", 20 ] ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -499,7 +489,6 @@ "harvest": "frost_human", "death_drops": "default_moxie_human_death_drops", "special_attacks": [ [ "PARROT", 0 ] ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -558,7 +547,6 @@ ] } ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -610,7 +598,6 @@ { "type": "bite", "cooldown": 5 }, { "id": "scratch", "damage_max_instance": [ { "damage_type": "cut", "amount": 6 } ] } ], - "death_function": [ "NORMAL" ], "flags": [ "STUMBLES", "HEARS", @@ -657,7 +644,7 @@ "armor_cut": 5, "harvest": "alien_moxphore", "special_attacks": [ [ "ACID", 20 ], { "id": "scratch", "damage_max_instance": [ { "damage_type": "cut", "amount": 6 } ] } ], - "death_function": [ "ACID", "NORMAL" ], + "death_function": { "message": "The %s's body leaks acid.", "effect": { "id": "death_acid", "hit_self": true } }, "flags": [ "SEES", "HEARS", @@ -674,5 +661,33 @@ "PUSH_MON", "FILTHY" ] + }, + { + "id": "mon_zombie_brute_shocker", + "type": "MONSTER", + "name": { "str": "shocker brute" }, + "copy-from": "mon_zombie_brute_shocker", + "harvest": "CBM_SUBS" + }, + { + "id": "mon_zombie_electric", + "type": "MONSTER", + "name": { "str": "shocker zombie" }, + "copy-from": "mon_zombie_electric", + "harvest": "CBM_CIV" + }, + { + "id": "mon_zombie_nullfield", + "type": "MONSTER", + "name": { "str": "incandescent husk" }, + "copy-from": "mon_zombie_nullfield", + "harvest": "CBM_SUBS" + }, + { + "id": "mon_skeleton_electric", + "type": "MONSTER", + "name": { "str": "skeletal shocker" }, + "copy-from": "mon_skeleton_electric", + "harvest": "CBM_CIV" } ] diff --git a/data/mods/Aftershock/recipes/deconstruction.json b/data/mods/Aftershock/recipes/deconstruction.json index 8fe5e31e6e793..b7ca56af712e2 100644 --- a/data/mods/Aftershock/recipes/deconstruction.json +++ b/data/mods/Aftershock/recipes/deconstruction.json @@ -152,6 +152,48 @@ [ [ "flamethrower", 1 ] ] ] }, + { + "result": "broken_wraitheon_isohypsa", + "type": "uncraft", + "activity_level": "fake", + "skill_used": "electronics", + "difficulty": 8, + "time": "5 h", + "using": [ [ "soldering_standard", 10 ], [ "welding_standard", 10 ] ], + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "SAW_M", "level": 1 } ], + "components": [ + [ [ "ai_module", 4 ] ], + [ [ "self_monitoring_module", 1 ] ], + [ [ "sensor_module", 2 ] ], + [ [ "memory_module", 1 ] ], + [ [ "pathfinding_module", 1 ] ], + [ [ "identification_module", 4 ] ], + [ [ "quad_rotors", 5 ] ], + [ [ "targeting_module", 1 ] ], + [ [ "afs_magnet_3", 4 ] ], + [ [ "afs_circuitry_4", 1 ] ], + [ [ "afs_material_1", 10 ] ], + [ [ "afs_material_3", 1 ] ], + [ [ "afs_heat_2_salvage", 2 ] ], + [ [ "afs_energy_storage_4", 1 ] ] + ] + }, + { + "result": "broken_wraitheon_kaburaya", + "type": "uncraft", + "activity_level": "fake", + "skill_used": "electronics", + "difficulty": 4, + "time": "10 m", + "using": [ [ "soldering_standard", 5 ], [ "welding_standard", 10 ] ], + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "SAW_M_FINE", "level": 1 } ], + "components": [ + [ [ "afs_magnet_1", 1 ] ], + [ [ "afs_circuitry_1", 1 ] ], + [ [ "afs_material_1", 2 ] ], + [ [ "afs_energy_storage_1", 1 ] ] + ] + }, { "result": "broken_bloodhound_drone", "type": "uncraft", diff --git a/data/mods/Aftershock/region_settings.json b/data/mods/Aftershock/region_settings.json index 6745d5a5e58fa..0cc57c09f0dbd 100644 --- a/data/mods/Aftershock/region_settings.json +++ b/data/mods/Aftershock/region_settings.json @@ -15,8 +15,32 @@ "afs_astrobiology_lab": 300, "mall": 700 }, - "houses": { "afs_city_ruinfield": 200, "afs_formless_ruins_dynamic": 300 } + "houses": { "afs_city_ruinfield": 200, "afs_formless_ruins_dynamic": 300, "afs_house_1": 100 } }, - "overmap_lake_settings": { "noise_threshold_lake": 0.12 } + "overmap_lake_settings": { "noise_threshold_lake": 0.12 }, + "map_extras": { + "road": { + "chance": 75, + "extras": { + "mx_helicopter": 1, + "mx_military": 25, + "mx_science": 40, + "mx_collegekids": 50, + "mx_wraitheon_droneswarm": 10, + "mx_roadblock": 100, + "mx_bandits_block": 80, + "mx_drugdeal": 30, + "mx_supplydrop": 10, + "mx_portal": 5, + "mx_crater": 10, + "mx_portal_in": 4, + "mx_roadworks": 100, + "mx_mayhem": 50, + "mx_casings": 100, + "mx_corpses": 30, + "mx_prison_bus": 15 + } + } + } } ] diff --git a/data/mods/Aftershock/spells/monster_spells.json b/data/mods/Aftershock/spells/monster_spells.json new file mode 100644 index 0000000000000..f7805b5795f16 --- /dev/null +++ b/data/mods/Aftershock/spells/monster_spells.json @@ -0,0 +1,37 @@ +[ + { + "id": "isohypsa_buff", + "type": "SPELL", + "name": { "str": "Isohypsa Coordination" }, + "description": "Increases the speed of simpler Wraitheon drones.", + "valid_targets": [ "self", "ally" ], + "targeted_monster_ids": [ + "mon_chickenbot", + "mon_tankbot", + "afs_mon_sentinel_lx", + "mon_defbot_shot", + "mon_advbot_laser", + "mon_wraitheon_irradiant", + "mon_wraitheon_kaburaya", + "mon_wraitheon_isohypsa", + "mon_advbot_emp" + ], + "flags": [ "NO_HANDS", "NO_LEGS" ], + "effect": "attack", + "effect_str": "afs_isohypsa_overwatch", + "shape": "blast", + "affected_body_parts": [ "torso" ], + "base_casting_time": 100, + "base_energy_cost": 100, + "energy_source": "MANA", + "difficulty": 1, + "max_level": 1, + "min_aoe": 40, + "max_aoe": 40, + "min_range": 10, + "max_range": 10, + "//": "duration is in moves", + "min_duration": 500, + "max_duration": 500 + } +] diff --git a/data/mods/Aftershock/suit_operating_time.md b/data/mods/Aftershock/suit_operating_time.md index 4a346e910efef..1f07e9388aa8c 100644 --- a/data/mods/Aftershock/suit_operating_time.md +++ b/data/mods/Aftershock/suit_operating_time.md @@ -59,7 +59,7 @@ Consider the Magellan exosuit, which has the following definition: "need_charges": 1, "need_charges_msg": "The %s's batteries are dead." }, - "armor_portion_data": [ + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": 25 }, { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": 25 }, { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": 15 }, diff --git a/data/mods/BlazeIndustries/vehicleparts/blaze_turrets_vanilla.json b/data/mods/BlazeIndustries/vehicleparts/blaze_turrets_vanilla.json index 4cf46dd686f76..f93f36f6d9602 100644 --- a/data/mods/BlazeIndustries/vehicleparts/blaze_turrets_vanilla.json +++ b/data/mods/BlazeIndustries/vehicleparts/blaze_turrets_vanilla.json @@ -240,8 +240,8 @@ "copy-from": "turret", "type": "vehicle_part", "name": { "str": "mounted M1014 shotgun" }, - "item": "m1014", - "breaks_into": [ { "item": "m1014", "prob": 50 } ], + "item": "mossberg_930", + "breaks_into": [ { "item": "mossberg_930", "prob": 50 } ], "requirements": { "install": { "skills": [ [ "mechanics", 4 ] ] }, "removal": { "skills": [ [ "mechanics", 2 ] ] } } }, { diff --git a/data/mods/CRT_EXPANSION/crt_gear/advanced_gear.json b/data/mods/CRT_EXPANSION/crt_gear/advanced_gear.json index 6f646b8f256e9..ff01f286cee9f 100644 --- a/data/mods/CRT_EXPANSION/crt_gear/advanced_gear.json +++ b/data/mods/CRT_EXPANSION/crt_gear/advanced_gear.json @@ -12,8 +12,6 @@ "material": [ "plastic", "steel" ], "symbol": "[", "color": "light_green", - "coverage": 0, - "encumbrance": 0, "warmth": 0, "//": "Legacy artifact data is set for all stats +2", "relic_data": { @@ -32,7 +30,8 @@ }, "material_thickness": 10, "environmental_protection": 0, - "flags": [ "ONLY_ONE", "TRADER_AVOID", "BELTED", "NO_TAKEOFF" ] + "flags": [ "ONLY_ONE", "TRADER_AVOID", "BELTED", "NO_TAKEOFF" ], + "armor": [ { "encumbrance": 0, "coverage": 0 } ] }, { "id": "ds_armor", @@ -48,9 +47,6 @@ "material": [ "superalloy", "nomex", "kevlar" ], "symbol": "[", "color": "light_gray", - "covers": [ "head", "eyes", "mouth", "torso", "leg_l", "leg_r", "arm_l", "arm_r", "hand_l", "hand_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 25, "warmth": 15, "pocket_data": [ { @@ -65,6 +61,13 @@ "material_thickness": 3, "environmental_protection": 18, "use_action": [ "WEATHER_TOOL" ], - "flags": [ "ELECTRIC_IMMUNE", "GAS_PROOF", "VARSIZE", "OVERSIZE", "STURDY", "ONLY_ONE", "WATERPROOF", "CLIMATE_CONTROL" ] + "flags": [ "ELECTRIC_IMMUNE", "GAS_PROOF", "VARSIZE", "OVERSIZE", "STURDY", "ONLY_ONE", "WATERPROOF", "CLIMATE_CONTROL" ], + "armor": [ + { + "encumbrance": 25, + "coverage": 100, + "covers": [ "head", "eyes", "mouth", "torso", "leg_l", "leg_r", "arm_l", "arm_r", "hand_l", "hand_r", "foot_l", "foot_r" ] + } + ] } ] diff --git a/data/mods/CRT_EXPANSION/items/crt_armor.json b/data/mods/CRT_EXPANSION/items/crt_armor.json index 2f6d322632d9b..a1c092bd8241c 100644 --- a/data/mods/CRT_EXPANSION/items/crt_armor.json +++ b/data/mods/CRT_EXPANSION/items/crt_armor.json @@ -12,14 +12,12 @@ "material": [ "neoprene", "kevlar" ], "symbol": "[", "color": "dark_gray", - "covers": [ "eyes", "mouth" ], - "coverage": 100, - "encumbrance": 20, "warmth": 30, "material_thickness": 2, "environmental_protection": 10, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "WATERPROOF", "STURDY", "SUN_GLASSES", "VARSIZE", "WATCH", "THERMOMETER" ] + "flags": [ "WATERPROOF", "STURDY", "SUN_GLASSES", "VARSIZE", "WATCH", "THERMOMETER" ], + "armor": [ { "encumbrance": 20, "coverage": 100, "covers": [ "eyes", "mouth" ] } ] }, { "id": "crt_boots", @@ -31,9 +29,9 @@ "weight": "1500 g", "price": 250000, "warmth": 40, - "encumbrance": 17, "material_thickness": 5, - "environmental_protection": 5 + "environmental_protection": 5, + "armor": [ { "encumbrance": 17 } ] }, { "id": "crt_la_boots", @@ -49,13 +47,11 @@ "material": [ "rubber", "superalloy", "nomex" ], "symbol": "[", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 10, "warmth": 25, "material_thickness": 3, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 10, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "crt_gloves", @@ -63,12 +59,11 @@ "type": "ARMOR", "name": { "str": "pair of CRIT fingertip-less gloves", "str_pl": "pairs of CRIT fingertip-less gloves" }, "description": "A pair of standard-issue gloves. Made with superalloy mesh for those with gene-modding and/or mutations while still allowing greater manipulation of items and moderate protection.", - "encumbrance": 12, - "coverage": 85, "warmth": 20, "material": [ "kevlar", "superalloy" ], "material_thickness": 2, - "flags": [ "ALLOWS_NATURAL_ATTACKS", "STURDY", "WATERPROOF" ] + "flags": [ "ALLOWS_NATURAL_ATTACKS", "STURDY", "WATERPROOF" ], + "armor": [ { "encumbrance": 12, "coverage": 85, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "crt_gloves_liner", @@ -76,12 +71,11 @@ "type": "ARMOR", "name": { "str": "pair of CRIT fingertip-less liners", "str_pl": "pairs of CRIT fingertip-less liners" }, "description": "A pair of standard-issue glove liners. Made with neoprene and rubber mesh for warmth and fingertip-less for those with gene-modding and/or mutations while still allowing greater manipulation of items and moderate protection.", - "encumbrance": 3, - "coverage": 85, "warmth": 15, "material": [ "neoprene", "rubber" ], "material_thickness": 1, - "flags": [ "ALLOWS_NATURAL_ATTACKS", "SKINTIGHT" ] + "flags": [ "ALLOWS_NATURAL_ATTACKS", "SKINTIGHT" ], + "armor": [ { "encumbrance": 3, "coverage": 85, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "crt_backpack", @@ -91,10 +85,10 @@ "description": "A standard-issue pack. Based on the MOLLE backpack's design, this smaller pack strikes a fine balance between storage space and encumbrance and allows a larger weapon to be holstered, drawing and holstering is still rather awkward even with the magnetized clips, but practice helps.", "color": "dark_gray", "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "9 L", "max_contains_weight": "27 kg", "moves": 200 } ], - "encumbrance": 3, "material_thickness": 3, "material": [ "leather", "kevlar" ], - "flags": [ "BELTED", "OVERSIZE", "NO_QUICKDRAW", "STURDY", "WATERPROOF" ] + "flags": [ "BELTED", "OVERSIZE", "NO_QUICKDRAW", "STURDY", "WATERPROOF" ], + "armor": [ { "encumbrance": [ 3, 20 ], "coverage": 20, "covers": [ "torso" ] } ] }, { "id": "crt_chestrig", @@ -134,13 +128,11 @@ "material": [ "superalloy", "neoprene", "rubber" ], "symbol": "[", "color": "white", - "covers": [ "arm_l", "arm_r" ], - "coverage": 100, - "encumbrance": 20, "warmth": 17, "material_thickness": 4, "environmental_protection": 3, - "flags": [ "STURDY", "BELTED", "BLOCK_WHILE_WORN", "WATER_FRIENDLY" ] + "flags": [ "STURDY", "BELTED", "BLOCK_WHILE_WORN", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 20, "coverage": 100, "covers": [ "arm_l", "arm_r" ] } ] }, { "id": "crt_belt", @@ -165,10 +157,6 @@ "material": [ "neoprene", "rubber", "kevlar" ], "symbol": "[", "color": "black_green", - "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "coverage": 100, - "encumbrance": 10, - "max_encumbrance": 20, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "1 L", "max_contains_weight": "3 kg", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "1 L", "max_contains_weight": "3 kg", "moves": 80 }, @@ -178,7 +166,8 @@ "warmth": 20, "material_thickness": 3, "environmental_protection": 9, - "flags": [ "POCKETS", "OUTER", "COLLAR", "STURDY", "WATERPROOF", "RAINPROOF" ] + "flags": [ "POCKETS", "OUTER", "COLLAR", "STURDY", "WATERPROOF", "RAINPROOF" ], + "armor": [ { "encumbrance": [ 10, 20 ], "coverage": 100, "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] }, { "id": "crt_aarmor", @@ -194,10 +183,6 @@ "material": [ "kevlar", "nomex", "plastic" ], "symbol": "[", "color": "light_green", - "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ], - "coverage": 100, - "encumbrance": 17, - "max_encumbrance": 25, "warmth": 25, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "1 L", "max_contains_weight": "3 kg", "moves": 80 }, @@ -205,7 +190,8 @@ ], "material_thickness": 5, "environmental_protection": 25, - "flags": [ "VARSIZE", "WATERPROOF", "HOOD", "COLLAR", "RAINPROOF", "STURDY", "RAD_RESIST", "OUTER" ] + "flags": [ "VARSIZE", "WATERPROOF", "HOOD", "COLLAR", "RAINPROOF", "STURDY", "RAD_RESIST", "OUTER" ], + "armor": [ { "encumbrance": [ 17, 25 ], "coverage": 100, "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ] } ] }, { "id": "crt_legrig", @@ -218,16 +204,13 @@ "material": [ "plastic", "cotton", "rubber" ], "symbol": "[", "color": "dark_gray", - "covers": [ "leg_l", "leg_r" ], - "coverage": 30, - "encumbrance": 1, - "max_encumbrance": 3, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "1 L", "max_contains_weight": "3 kg", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "1 L", "max_contains_weight": "3 kg", "moves": 80 } ], "material_thickness": 2, - "flags": [ "VARSIZE", "WATER_FRIENDLY", "BELTED", "RAINPROOF", "ALLOWS_TAIL" ] + "flags": [ "VARSIZE", "WATER_FRIENDLY", "BELTED", "RAINPROOF", "ALLOWS_TAIL" ], + "armor": [ { "encumbrance": [ 1, 3 ], "coverage": 30, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "crt_earmor", @@ -243,10 +226,6 @@ "material": [ "steel", "kevlar" ], "symbol": "[", "color": "cyan", - "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ], - "coverage": 90, - "encumbrance": 27, - "max_encumbrance": 35, "warmth": 20, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "1 L", "max_contains_weight": "3 kg", "moves": 80 }, @@ -254,7 +233,8 @@ ], "material_thickness": 4, "environmental_protection": 5, - "flags": [ "VARSIZE", "STURDY", "BELTED" ] + "flags": [ "VARSIZE", "STURDY", "BELTED" ], + "armor": [ { "encumbrance": [ 27, 35 ], "coverage": 90, "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ] } ] }, { "id": "crt_earmor_boots", @@ -270,13 +250,11 @@ "material": [ "kevlar", "superalloy" ], "symbol": "[", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 30, "warmth": 5, "material_thickness": 3, "environmental_protection": 4, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY", "OUTER", "OVERSIZE" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY", "OUTER", "OVERSIZE" ], + "armor": [ { "encumbrance": 30, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "crt_sarmor", @@ -290,10 +268,6 @@ "material": [ "neoprene", "kevlar", "superalloy" ], "symbol": "[", "color": "light_blue", - "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ], - "coverage": 100, - "encumbrance": 3, - "max_encumbrance": 7, "warmth": 20, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "1 L", "max_contains_weight": "3 kg", "moves": 80 }, @@ -301,7 +275,8 @@ ], "material_thickness": 2, "environmental_protection": 3, - "flags": [ "VARSIZE", "STURDY" ] + "flags": [ "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": [ 3, 7 ], "coverage": 100, "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ] } ] }, { "id": "crt_warmor", @@ -315,10 +290,6 @@ "material": [ "hardsteel", "kevlar" ], "symbol": "[", "color": "light_green", - "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ], - "coverage": 100, - "encumbrance": 24, - "max_encumbrance": 40, "warmth": 25, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "2 L", "max_contains_weight": "3 kg", "moves": 80 }, @@ -326,6 +297,7 @@ ], "material_thickness": 3, "environmental_protection": 10, - "flags": [ "VARSIZE", "WATERPROOF", "OUTER", "OVERSIZE", "COLLAR", "STURDY", "NO_QUICKDRAW" ] + "flags": [ "VARSIZE", "WATERPROOF", "OUTER", "OVERSIZE", "COLLAR", "STURDY", "NO_QUICKDRAW" ], + "armor": [ { "encumbrance": [ 24, 40 ], "coverage": 100, "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ] } ] } ] diff --git a/data/mods/CRT_EXPANSION/items/crt_clothes.json b/data/mods/CRT_EXPANSION/items/crt_clothes.json index 8cc97601e9a26..7337555eec893 100644 --- a/data/mods/CRT_EXPANSION/items/crt_clothes.json +++ b/data/mods/CRT_EXPANSION/items/crt_clothes.json @@ -19,8 +19,8 @@ "color": "light_gray", "material": [ "neoprene", "kevlar" ], "warmth": 35, - "coverage": 100, - "flags": [ "WATERPROOF", "VARSIZE", "STURDY" ] + "flags": [ "WATERPROOF", "VARSIZE", "STURDY" ], + "armor": [ { "encumbrance": [ 11, 22 ], "coverage": 100, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "crt_dress_pants", @@ -32,11 +32,9 @@ "symbol": "[", "material": [ "cotton", "neoprene" ], "warmth": 17, - "covers": [ "leg_l", "leg_r" ], - "encumbrance": 10, - "coverage": 100, "material_thickness": 2, - "flags": [ "WATERPROOF", "VARSIZE", "FANCY" ] + "flags": [ "WATERPROOF", "VARSIZE", "FANCY" ], + "armor": [ { "encumbrance": [ 10, 11 ], "coverage": 100, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "crt_helmet_liner", @@ -62,13 +60,11 @@ "material": [ "cotton", "plastic", "rubber" ], "symbol": "[", "color": "dark_gray", - "covers": [ "foot_l", "foot_r" ], - "coverage": 65, - "encumbrance": 15, "warmth": 15, "material_thickness": 1, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATERPROOF", "FANCY" ] + "flags": [ "VARSIZE", "WATERPROOF", "FANCY" ], + "armor": [ { "encumbrance": 15, "coverage": 65, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "crt_rec_gloves", @@ -82,13 +78,11 @@ "material": [ "cotton", "neoprene" ], "symbol": "[", "color": "dark_gray", - "covers": [ "hand_l", "hand_r" ], - "coverage": 90, - "encumbrance": 4, "warmth": 10, "material_thickness": 1, "environmental_protection": 2, - "flags": [ "SKINTIGHT", "WATER_FRIENDLY" ] + "flags": [ "SKINTIGHT", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 4, "coverage": 90, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "crt_belt", @@ -123,10 +117,6 @@ "material": [ "cotton", "neoprene", "rubber" ], "symbol": "[", "color": "black_green", - "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "coverage": 100, - "encumbrance": 6, - "max_encumbrance": 13, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "1 L", "max_contains_weight": "3 kg", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "1 L", "max_contains_weight": "3 kg", "moves": 80 }, @@ -136,7 +126,8 @@ "warmth": 15, "material_thickness": 1, "environmental_protection": 2, - "flags": [ "POCKETS", "OUTER", "OVERSIZE", "COLLAR", "WATERPROOF", "RAINPROOF", "FANCY" ] + "flags": [ "POCKETS", "OUTER", "OVERSIZE", "COLLAR", "WATERPROOF", "RAINPROOF", "FANCY" ], + "armor": [ { "encumbrance": [ 6, 13 ], "coverage": 100, "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] }, { "id": "crt_rec_hat", @@ -149,12 +140,10 @@ "material": [ "cotton", "neoprene", "rubber" ], "symbol": "[", "color": "white", - "covers": [ "head" ], - "coverage": 50, - "encumbrance": 10, "warmth": 15, "material_thickness": 1, "environmental_protection": 1, - "flags": [ "FANCY", "VARSIZE", "RAINPROOF", "WATERPROOF" ] + "flags": [ "FANCY", "VARSIZE", "RAINPROOF", "WATERPROOF" ], + "armor": [ { "encumbrance": 10, "coverage": 50, "covers": [ "head" ] } ] } ] diff --git a/data/mods/CRT_EXPANSION/items/crt_makeshift_survival.json b/data/mods/CRT_EXPANSION/items/crt_makeshift_survival.json index 0582358dda85d..8aa5494576c94 100644 --- a/data/mods/CRT_EXPANSION/items/crt_makeshift_survival.json +++ b/data/mods/CRT_EXPANSION/items/crt_makeshift_survival.json @@ -12,12 +12,10 @@ "material": [ "dry_plant" ], "symbol": "[", "color": "black_green", - "covers": [ "torso", "leg_l", "leg_r" ], - "coverage": 50, - "encumbrance": 15, "warmth": 7, "material_thickness": 3, - "flags": [ "OVERSIZE" ] + "flags": [ "OVERSIZE" ], + "armor": [ { "encumbrance": 15, "coverage": 50, "covers": [ "torso", "leg_l", "leg_r" ] } ] }, { "id": "crt_plant_band", @@ -32,10 +30,9 @@ "material": [ "dry_plant" ], "symbol": "[", "color": "black_green", - "coverage": 0, - "encumbrance": 0, "warmth": 7, "material_thickness": 1, - "flags": [ "OVERSIZE" ] + "flags": [ "OVERSIZE" ], + "armor": [ { "encumbrance": 0, "coverage": 0 } ] } ] diff --git a/data/mods/CRT_EXPANSION/items/crt_toolarmor.json b/data/mods/CRT_EXPANSION/items/crt_toolarmor.json index 551b49fd24be8..66fea36a97fe8 100644 --- a/data/mods/CRT_EXPANSION/items/crt_toolarmor.json +++ b/data/mods/CRT_EXPANSION/items/crt_toolarmor.json @@ -22,9 +22,6 @@ "material": [ "plastic", "kevlar" ], "symbol": "[", "color": "dark_gray", - "covers": [ "eyes", "mouth" ], - "coverage": 100, - "encumbrance": 50, "warmth": 20, "material_thickness": 5, "environmental_protection": 16, @@ -39,7 +36,8 @@ "USE_UPS", "NO_UNLOAD", "SLEEP_IGNORE" - ] + ], + "armor": [ { "encumbrance": 50, "coverage": 100, "covers": [ "eyes", "mouth" ] } ] }, { "id": "crt_gasmask_on", @@ -59,9 +57,6 @@ "material": [ "plastic", "kevlar" ], "symbol": "[", "color": "light_green", - "covers": [ "eyes", "mouth" ], - "coverage": 100, - "encumbrance": 5, "warmth": 75, "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "PERCEPTION", "add": 2 } ] } ] }, "material_thickness": 5, @@ -81,7 +76,8 @@ "USE_UPS", "NO_UNLOAD", "SLEEP_IGNORE" - ] + ], + "armor": [ { "encumbrance": 5, "coverage": 100, "covers": [ "eyes", "mouth" ] } ] }, { "id": "crt_em_vest", @@ -97,7 +93,6 @@ "material": [ "kevlar", "superalloy" ], "symbol": "[", "color": "light_gray", - "covers": [ "torso" ], "max_charges": 300, "initial_charges": 300, "charges_per_use": 1, @@ -110,8 +105,6 @@ "need_charges_msg": "Power levels too low for safe bootup…" }, "//": "Artifact data is charge_type solar", - "coverage": 85, - "encumbrance": 50, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "2 L", "max_contains_weight": "6 kg", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "2 L", "max_contains_weight": "6 kg", "moves": 80 } @@ -119,7 +112,8 @@ "warmth": 10, "material_thickness": 4, "environmental_protection": 4, - "flags": [ "WATER_FRIENDLY", "STURDY", "VARSIZE", "USE_UPS", "NO_UNLOAD", "OUTER" ] + "flags": [ "WATER_FRIENDLY", "STURDY", "VARSIZE", "USE_UPS", "NO_UNLOAD", "OUTER" ], + "armor": [ { "encumbrance": 50, "coverage": 85, "covers": [ "torso" ] } ] }, { "id": "crt_em_vest_on", @@ -135,9 +129,6 @@ "material": [ "kevlar", "superalloy" ], "symbol": "[", "color": "light_green", - "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ], - "coverage": 100, - "encumbrance": 5, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "2 L", "max_contains_weight": "6 kg", "moves": 40 }, { "pocket_type": "CONTAINER", "max_contains_volume": "2 L", "max_contains_weight": "6 kg", "moves": 40 } @@ -170,7 +161,8 @@ "USE_UPS", "NO_UNLOAD", "OUTER" - ] + ], + "armor": [ { "encumbrance": 5, "coverage": 100, "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ] } ] }, { "id": "crt_helmet", @@ -250,9 +242,6 @@ "material": [ "cotton" ], "symbol": "[", "color": "blue", - "covers": [ "mouth" ], - "coverage": 95, - "encumbrance": 7, "warmth": 0, "material_thickness": 1, "environmental_protection": 3, @@ -261,6 +250,7 @@ "initial_charges": 50, "charges_per_use": 1, "turns_per_charge": 5, - "flags": [ "WET" ] + "flags": [ "WET" ], + "armor": [ { "encumbrance": 7, "coverage": 95, "covers": [ "mouth" ] } ] } ] diff --git a/data/mods/CRT_EXPANSION/monsters/crt_monster.json b/data/mods/CRT_EXPANSION/monsters/crt_monster.json index 8717d5a9c1754..dd8c206309a61 100644 --- a/data/mods/CRT_EXPANSION/monsters/crt_monster.json +++ b/data/mods/CRT_EXPANSION/monsters/crt_monster.json @@ -28,7 +28,6 @@ "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 3 }, [ "GRAB", 7 ], [ "scratch", 10 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", @@ -74,7 +73,6 @@ "harvest": "zombie", "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "GRAB", 7 ], [ "scratch", 10 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", @@ -122,7 +120,6 @@ "harvest": "zombie", "special_attacks": [ [ "scratch", 10 ], { "type": "bite", "cooldown": 5 } ], "death_drops": "mon_zombie_cop_death_drops", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "REVIVES", "NO_BREATHE", "POISON", "FILTHY" ] }, { @@ -162,7 +159,6 @@ } ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "CLIMBS", "PUSH_MON", "FILTHY" ] }, @@ -211,7 +207,6 @@ { "id": "impale" } ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_scorched", "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "PUSH_MON", "FILTHY" ] }, @@ -245,7 +240,6 @@ "harvest": "zombie", "special_attacks": [ [ "SHRIEK", 7 ], [ "scratch", 5 ], { "type": "leap", "cooldown": 4, "max_range": 3 } ], "death_drops": { "subtype": "collection", "groups": [ [ "default_zombie_clothes", 100 ], [ "child_items", 65 ] ] }, - "death_function": [ "NORMAL" ], "burn_into": "mon_zombie_child_scorched", "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "CLIMBS", "FILTHY", "SWARMS" ], "//": "no GUILT because it no longer looks enough like a child to evoke pity" @@ -280,7 +274,7 @@ "harvest": "zombie", "special_attacks": [ [ "ACID_BARF", 5 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "ACID", "NORMAL" ], + "death_function": { "message": "The %s's body leaks acid.", "effect": { "id": "death_acid", "hit_self": true } }, "burn_into": "mon_zombie_scorched", "flags": [ "SEES", diff --git a/data/mods/CRT_EXPANSION/monsters/monster.json b/data/mods/CRT_EXPANSION/monsters/monster.json index d3f189c90b4db..7628270547ce1 100644 --- a/data/mods/CRT_EXPANSION/monsters/monster.json +++ b/data/mods/CRT_EXPANSION/monsters/monster.json @@ -26,7 +26,6 @@ "armor_bullet": 13, "harvest": "zombie", "special_attacks": [ [ "TENTACLE", 2 ], [ "scratch", 10 ] ], - "death_function": [ "NORMAL" ], "flags": [ "HEARS", "GOODHEARING", "WARM", "CLIMBS", "NOHEAD", "POISON", "NO_BREATHE" ] }, { @@ -55,7 +54,6 @@ "armor_cut": 40, "harvest": "zombie", "special_attacks": [ [ "TENTACLE", 7 ], [ "scratch", 8 ] ], - "death_function": [ "NORMAL" ], "flags": [ "WARM", "CLIMBS", "NOHEAD", "POISON", "NO_BREATHE" ] } ] diff --git a/data/mods/CRT_EXPANSION/scenarios/crt_classes.json b/data/mods/CRT_EXPANSION/scenarios/crt_classes.json index 041172c84f5a0..80478294efd54 100644 --- a/data/mods/CRT_EXPANSION/scenarios/crt_classes.json +++ b/data/mods/CRT_EXPANSION/scenarios/crt_classes.json @@ -88,7 +88,6 @@ "legguard_hard", "pants_army", "armguard_hard", - "mre_veggy_box", "crt_backpack", "two_way_radio", "crt_gloves_liner", @@ -101,6 +100,7 @@ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, { "item": "knife_crt", "container-item": "sheath" }, { "item": "m4a1", "ammo-item": "223", "contents-item": [ "grip", "holo_sight" ] }, + { "group": "MRE" }, { "item": "stanag30", "ammo-item": "223", "count": 1 } ] }, @@ -127,7 +127,6 @@ "army_top", "crt_jacket", "armguard_hard", - "mre_veggy_box", "crt_helmet", "glasses_bal", "molle_pack", @@ -141,6 +140,7 @@ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, { "item": "knife_rm42", "container-item": "sheath" }, { "item": "scar_h", "ammo-item": "308", "contents-item": "shoulder_strap" }, + { "group": "MRE" }, { "item": "scarhmag", "ammo-item": "308", "count": 2 } ] }, @@ -176,7 +176,6 @@ "crt_canteen", "crt_legrig", "socks", - "mre_veggy_box", "crt_la_boots", "two_way_radio", "bandages", @@ -188,6 +187,7 @@ { "group": "full_ifak" }, { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, { "item": "sleeping_bag", "custom-flags": [ "no_auto_equip" ] }, + { "group": "MRE" }, { "item": "crt_laser_pistol", "container-item": "holster" } ] }, @@ -215,7 +215,6 @@ "jacket_army", "army_top", "crt_armguard", - "mre_veggy_box", "molle_pack", "two_way_radio", "crt_gloves", @@ -230,6 +229,7 @@ { "item": "l_lmg_223", "ammo-item": "223" }, { "item": "lw223bigmag", "count": 1 }, { "item": "m9", "ammo-item": "9mm", "container-item": "holster" }, + { "group": "MRE" }, { "item": "m9mag", "ammo-item": "9mm", "count": 2 } ] }, @@ -261,7 +261,6 @@ "crt_iduster", "army_top", "crt_pants", - "mre_veggy_box", "heavy_flashlight", "two_way_radio", "socks", @@ -273,6 +272,7 @@ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, { "item": "knife_rm42", "container-item": "sheath" }, { "item": "m9", "ammo-item": "9mm", "container-item": "holster" }, + { "group": "MRE" }, { "item": "m9mag", "ammo-item": "9mm", "count": 2 } ] }, @@ -450,7 +450,6 @@ "UPS_off", "geiger_off", "crt_hatchet", - "mre_veggy_box", "crt_mess_kit", "lighter", "badge_marshal", @@ -466,6 +465,7 @@ { "item": "knife_crt", "container-item": "crt_belt" }, { "item": "crt_laser_pistol", "container-item": "holster" }, { "item": "signal_flare", "ammo-item": "signal_flare", "count": 5 }, + { "group": "MRE" }, { "item": "battery", "ammo-item": "battery", "count": 25 } ] }, @@ -514,7 +514,6 @@ "crt_boots", "two_way_radio", "crt_hatchet", - "mre_veggy_box", "lighter", "pellet", "pelletgun", @@ -523,6 +522,7 @@ ], "entries": [ { "item": "water_clean", "ammo-item": "water_clean", "container-item": "crt_canteen" }, + { "group": "MRE" }, { "item": "knife_crt", "container-item": "sheath" } ] }, @@ -561,7 +561,6 @@ "socks", "crt_la_boots", "crt_hatchet", - "mre_veggy_box", "lighter", "crt_mess_kit", "id_military", @@ -569,7 +568,7 @@ "knife_swissarmy", "pellet" ], - "entries": [ { "item": "water_clean", "container-item": "canteen" } ] + "entries": [ { "item": "water_clean", "container-item": "canteen" }, { "group": "MRE" } ] }, "male": [ "boxer_shorts" ], "female": [ "sports_bra", "boxer_shorts" ] @@ -648,13 +647,12 @@ "ds_rivet_gun", "ds_ripper", "toolbox", - "mre_veggy_box", "lighter", "UPS_off", "id_military", "id_science" ], - "entries": [ { "item": "water_clean", "ammo-item": "water_clean", "container-item": "canteen" } ] + "entries": [ { "item": "water_clean", "ammo-item": "water_clean", "container-item": "canteen" }, { "group": "MRE" } ] }, "male": [ "boxer_shorts" ], "female": [ "sports_bra", "boxer_shorts" ] @@ -724,7 +722,6 @@ "socks", "crt_la_boots", "crt_hatchet", - "mre_veggy_box", "crt_mess_kit", "lighter", "knife_swissarmy", @@ -736,6 +733,7 @@ ], "entries": [ { "item": "water_clean", "ammo-item": "water_clean", "container-item": "canteen" }, + { "group": "MRE" }, { "item": "knife_crt", "container-item": "crt_belt" } ] }, diff --git a/data/mods/CrazyCataclysm/crazy_monsters.json b/data/mods/CrazyCataclysm/crazy_monsters.json index 30a5246dfd178..61300bcce983f 100644 --- a/data/mods/CrazyCataclysm/crazy_monsters.json +++ b/data/mods/CrazyCataclysm/crazy_monsters.json @@ -55,7 +55,6 @@ "vision_day": 30, "vision_night": 3, "death_drops": "skeltal_drops", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "HARDTOSHOOT", "REVIVES", "NO_BREATHE", "FILTHY" ], "harvest": "mr_bones", "special_attacks": [ [ "DOOT", 50 ] ] @@ -83,7 +82,7 @@ "dodge": 0, "vision_day": 30, "vision_night": 3, - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "harvest": "mr_bones", "flags": [ "SEES", "HEARS", "HARDTOSHOOT", "REVIVES", "NO_BREATHE", "POISON", "BONES", "FILTHY" ] }, @@ -116,7 +115,7 @@ "special_attacks": [ { "type": "bite", "cooldown": 5 } ], "anger_triggers": [ "HURT", "PLAYER_CLOSE" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "SMOKEBURST" ], + "death_function": { "effect": { "id": "death_smokeburst", "hit_self": true }, "message": "A %s explode!" }, "harvest": "zombie_fur", "flags": [ "SEES", diff --git a/data/mods/Dark-Skies-Above/monsters/alien_cyborgs.json b/data/mods/Dark-Skies-Above/monsters/alien_cyborgs.json index 6eea495a4ba5c..b6b8a6ed20f9b 100644 --- a/data/mods/Dark-Skies-Above/monsters/alien_cyborgs.json +++ b/data/mods/Dark-Skies-Above/monsters/alien_cyborgs.json @@ -52,7 +52,7 @@ "no_ammo_sound": "a roar!" } ], - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", @@ -121,7 +121,7 @@ "no_ammo_sound": "a roar!" } ], - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", @@ -189,7 +189,7 @@ "no_ammo_sound": "a roar!" } ], - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", @@ -244,7 +244,6 @@ } ], "anger_triggers": [ "PLAYER_CLOSE", "PLAYER_WEAK" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "SWIMS", "AQUATIC", "POISON", "HARDTOSHOOT" ] }, { @@ -288,7 +287,6 @@ [ "SMASH", 20 ] ], "anger_triggers": [ "FRIEND_ATTACKED", "HURT" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "BASHES", "DESTROYS", "ACIDPROOF", "CAN_DIG", "ARTHROPOD_BLOOD" ] }, { @@ -321,7 +319,6 @@ "vision_night": 5, "special_attacks": [ { "type": "leap", "cooldown": 10, "max_range": 5 }, { "id": "melee_shock" } ], "path_settings": { "max_dist": 5 }, - "death_function": [ "NORMAL" ], "harvest": "dks_alien_hcyborg", "flags": [ "SEES", "HEARS", "SMELLS", "SWARMS", "WARM", "BASHES", "GROUP_BASH", "PRIORITIZE_TARGETS", "PATH_AVOID_DANGER_2" ] } diff --git a/data/mods/Dark-Skies-Above/monsters/alien_fauna.json b/data/mods/Dark-Skies-Above/monsters/alien_fauna.json index 080acdb4c813e..5254dd7ad8482 100644 --- a/data/mods/Dark-Skies-Above/monsters/alien_fauna.json +++ b/data/mods/Dark-Skies-Above/monsters/alien_fauna.json @@ -35,7 +35,6 @@ } ], "anger_triggers": [ "PLAYER_CLOSE", "PLAYER_WEAK" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "SWIMS", "AQUATIC", "POISON", "HARDTOSHOOT" ] }, { @@ -76,7 +75,6 @@ } ], "anger_triggers": [ "PLAYER_CLOSE", "PLAYER_WEAK" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "SWIMS", "AQUATIC", "POISON" ] }, { @@ -112,7 +110,6 @@ "anger_triggers": [ "HURT" ], "fear_triggers": [ "FIRE" ], "placate_triggers": [ "MEAT", "PLAYER_WEAK" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -157,7 +154,6 @@ "anger_triggers": [ "PLAYER_CLOSE", "FRIEND_ATTACKED", "HURT" ], "fear_triggers": [ "FIRE" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -193,7 +189,7 @@ "morale": 0, "dodge": 4, "fear_triggers": [ "SOUND", "FRIEND_DIED", "FRIEND_ATTACKED", "HURT" ], - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "//": "will want sweets instead of birdfood if/when we can define animal food", "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "FLIES", "BIRDFOOD", "SWARMS" ] }, @@ -224,7 +220,6 @@ "harvest": "mutant_meatslug", "special_attacks": [ [ "ACID_BARF", 10 ] ], "anger_triggers": [ "PLAYER_WEAK" ], - "death_function": [ "NORMAL" ], "flags": [ "KEENNOSE", "HEARS", "SMELLS", "BASHES", "DESTROYS", "ACIDPROOF", "CAN_DIG", "ARTHROPOD_BLOOD" ] } ] diff --git a/data/mods/Dark-Skies-Above/monsters/alien_robots.json b/data/mods/Dark-Skies-Above/monsters/alien_robots.json index e2267a8587ea3..5e52b242886ec 100644 --- a/data/mods/Dark-Skies-Above/monsters/alien_robots.json +++ b/data/mods/Dark-Skies-Above/monsters/alien_robots.json @@ -21,7 +21,7 @@ "luminance": 5, "path_settings": { "max_dist": 5 }, "death_drops": { "groups": [ [ "robots", 4 ] ] }, - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "SEES", "FLIES", "ELECTRONIC", "COLDPROOF", "NO_BREATHE", "NOHEAD", "PRIORITIZE_TARGETS" ] }, { @@ -48,7 +48,7 @@ "special_attacks": [ [ "SEARCHLIGHT", 1 ], [ "DSA_DRONE_SCAN", 2 ] ], "path_settings": { "max_dist": 5 }, "death_drops": { "groups": [ [ "robots", 4 ], [ "eyebot", 1 ], [ "turret_searchlight", 1 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "FLIES", "ELECTRONIC", "COLDPROOF", "NO_BREATHE", "NOHEAD", "PRIORITIZE_TARGETS" ] }, { @@ -89,7 +89,7 @@ "path_settings": { "max_dist": 5 }, "anger_triggers": [ "HURT", "PLAYER_WEAK", "STALK" ], "death_drops": { "groups": [ [ "robots", 4 ], [ "skitterbot", 1 ] ] }, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "FLIES", diff --git a/data/mods/Dark-Skies-Above/monsters/strays.json b/data/mods/Dark-Skies-Above/monsters/strays.json index 97cf7eb220967..c1c0efa4ab0e6 100644 --- a/data/mods/Dark-Skies-Above/monsters/strays.json +++ b/data/mods/Dark-Skies-Above/monsters/strays.json @@ -28,7 +28,6 @@ "path_settings": { "max_dist": 4 }, "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "GRAB", 7 ], [ "scratch", 20 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 21, "into_group": "DKS_GROUP_STRAY_UPGRADE" }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "POISON", "FILTHY", "BASHES", "GROUP_BASH", "PUSH_MON", "REVIVES" ] }, @@ -67,7 +66,6 @@ ], "death_drops": "mon_zombie_cop_death_drops", "upgrades": { "half_life": 60, "into": "dks_mon_crystal_baby" }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "GROUP_BASH", "POISON", "PUSH_MON", "FILTHY", "REVIVES" ] }, { @@ -106,7 +104,6 @@ { "id": "slam", "damage_max_instance": [ { "damage_type": "bash", "amount": 12 } ] } ], "death_drops": "mon_zombie_soldier_death_drops", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 60, "into": "dks_mon_crystal_baby" }, "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "BASHES", "GROUP_BASH", "POISON", "PUSH_MON", "FILTHY", "REVIVES" ] }, @@ -143,7 +140,6 @@ "path_settings": { "max_dist": 4 }, "special_attacks": [ { "id": "slam" }, [ "GRAB", 7 ] ], "death_drops": "mon_zombie_fireman_death_drops", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 60, "into": "dks_mon_crystal_baby" }, "flags": [ "SEES", @@ -191,7 +187,6 @@ "path_settings": { "max_dist": 4 }, "special_attacks": [ { "type": "bite", "cooldown": 5, "min_mul": 0.75, "no_infection_chance": 10 }, [ "GRAB", 6 ], [ "SHRIEK", 10 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 21, "into": "dks_mon_stray_eater" }, "flags": [ "SEES", "HEARS", "SMELLS", "BASHES", "GROUP_BASH", "PUSH_MON", "STUMBLES", "WARM", "POISON", "FILTHY", "REVIVES" ] }, @@ -226,7 +221,7 @@ "path_settings": { "max_dist": 4 }, "special_attacks": [ [ "BOOMER", 20 ], { "type": "bite", "cooldown": 5, "min_mul": 0.75, "no_infection_chance": 10 }, [ "SHRIEK", 10 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "BOOMER", "NORMAL" ], + "death_function": { "effect": { "id": "death_boomer", "hit_self": true }, "message": "A %s explode!" }, "upgrades": { "half_life": 21, "into": "dks_mon_stray_tender" }, "flags": [ "SEES", @@ -276,7 +271,7 @@ "reproduction": { "baby_monster": "dks_mon_crystal_mite", "baby_count": 5, "baby_timer": 60 }, "anger_triggers": [ "PLAYER_CLOSE", "FRIEND_ATTACKED" ], "placate_triggers": [ "PLAYER_WEAK" ], - "death_function": [ "BOOMER_GLOW", "NORMAL" ], + "death_function": { "effect": { "id": "death_boomer_glow", "hit_self": true, "min_level": 1 }, "message": "A %s explode!" }, "upgrades": { "half_life": 60, "into": "dks_mon_crystal_hive" }, "flags": [ "SEES", @@ -322,7 +317,6 @@ "path_settings": { "max_dist": 4 }, "special_when_hit": [ "ZAPBACK", 100 ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 10, "into": "dks_mon_stray_electric" }, "flags": [ "SEES", @@ -370,7 +364,6 @@ "special_attacks": [ [ "SHOCKSTORM", 25 ] ], "special_when_hit": [ "ZAPBACK", 100 ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 60, "into": "dks_mon_crystal_zap" }, "flags": [ "SEES", @@ -426,7 +419,6 @@ } ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 21, "into": "dks_mon_stray_prowler" }, "flags": [ "SEES", @@ -479,7 +471,6 @@ [ "LUNGE", 20 ] ], "death_drops": "default_zombie_death_drops", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 40, "into": "dks_mon_stray_predator" }, "flags": [ "SEES", @@ -535,7 +526,6 @@ ], "death_drops": "mon_zombie_hulk_death_drops", "upgrades": { "half_life": 60, "into": "dks_mon_crystal_baby" }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -587,7 +577,6 @@ ], "death_drops": "default_zombie_death_drops", "upgrades": { "half_life": 21, "into_group": "DKS_GROUP_STRAY_UPGRADE" }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -640,7 +629,6 @@ ], "death_drops": "mon_zombie_hulk_death_drops", "upgrades": { "half_life": 40, "into": "dks_mon_stray_titan" }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -691,7 +679,6 @@ ], "death_drops": "mon_zombie_hulk_death_drops", "upgrades": { "half_life": 50, "into": "dks_mon_crystal_sprout" }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -740,7 +727,6 @@ "path_settings": { "max_dist": 2 }, "special_attacks": [ { "type": "bite", "cooldown": 5 }, [ "scratch", 10 ] ], "death_drops": { "subtype": "collection", "groups": [ [ "default_zombie_children_clothes", 100 ], [ "child_items", 65 ] ] }, - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 50, "into": "dks_mon_stray_wretch" }, "flags": [ "SEES", "HEARS", "SMELLS", "BASHES", "GROUP_BASH", "STUMBLES", "WARM", "GUILT", "POISON", "FILTHY", "REVIVES" ] }, @@ -772,7 +758,6 @@ "harvest": "zombie_fur", "path_settings": { "max_dist": 3 }, "special_attacks": [ [ "scratch", 10 ], { "type": "bite", "cooldown": 5 } ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 21, "into": "dks_mon_stray_wretch" }, "flags": [ "SEES", @@ -825,7 +810,6 @@ "damage_max_instance": [ { "damage_type": "stab", "amount": 10, "armor_multiplier": 0.7 } ] } ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 23, "into_group": "DKS_WRETCH_UPGRADE" }, "flags": [ "SEES", @@ -875,7 +859,6 @@ { "id": "scratch", "damage_max_instance": [ { "damage_type": "cut", "amount": 10, "armor_multiplier": 0.7 } ] }, { "type": "leap", "cooldown": 5, "max_range": 5 } ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -920,7 +903,6 @@ "attack_effs": [ { "id": "paralyzepoison", "duration": 33 } ], "path_settings": { "max_dist": 5 }, "special_attacks": [ { "type": "leap", "cooldown": 10, "max_range": 5 }, [ "RANGED_PULL", 20 ], [ "GRAB_DRAG", 3 ], [ "LONGSWIPE", 20 ] ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -968,7 +950,6 @@ "path_settings": { "max_dist": 10 }, "special_attacks": [ { "type": "leap", "cooldown": 10, "max_range": 5 } ], "special_when_hit": [ "ZAPBACK", 100 ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "LOUDMOVES", "WARM", "BASHES", "POISON", "ELECTRIC", "FILTHY", "REVIVES" ] }, { @@ -1011,7 +992,6 @@ "damage_max_instance": [ { "damage_type": "stab", "amount": 20, "armor_multiplier": 0.5 } ] } ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", @@ -1048,7 +1028,7 @@ "armor_stab": 20, "harvest": "exempt", "special_when_hit": [ "ZAPBACK", 100 ], - "death_function": [ "DISINTEGRATE" ], + "death_function": { "message": "The %s disintegrates!", "corpse_type": "NO_CORPSE" }, "upgrades": { "half_life": 5, "into": "dks_mon_crystal_sprout" }, "flags": [ "IMMOBILE", "NOGIB", "ELECTRIC", "WARM", "NO_BREATHE", "NOHEAD", "ARTHROPOD_BLOOD" ] }, @@ -1075,7 +1055,7 @@ "armor_stab": 30, "harvest": "exempt", "special_when_hit": [ "ZAPBACK", 100 ], - "death_function": [ "DISINTEGRATE" ], + "death_function": { "message": "The %s disintegrates!", "corpse_type": "NO_CORPSE" }, "upgrades": { "half_life": 5, "into_group": "MON_CRYSTAL_UPGRADE" }, "flags": [ "IMMOBILE", "NOGIB", "ELECTRIC", "WARM", "NO_BREATHE", "NOHEAD", "ARTHROPOD_BLOOD" ] }, @@ -1105,7 +1085,7 @@ "harvest": "exempt", "special_attacks": [ [ "SHRIEK_ALERT", 20 ], [ "SHRIEK_STUN", 1 ] ], "special_when_hit": [ "ZAPBACK", 100 ], - "death_function": [ "DISINTEGRATE" ], + "death_function": { "message": "The %s disintegrates!", "corpse_type": "NO_CORPSE" }, "flags": [ "SEES", "IMMOBILE", "HARDTOSHOOT", "NOGIB", "ELECTRIC", "WARM", "NO_BREATHE", "NOHEAD", "ARTHROPOD_BLOOD" ] }, { @@ -1137,7 +1117,7 @@ "harvest": "exempt", "special_attacks": [ [ "RANGED_PULL", 20 ], [ "STRETCH_ATTACK", 20 ] ], "special_when_hit": [ "ZAPBACK", 100 ], - "death_function": [ "DISINTEGRATE" ], + "death_function": { "message": "The %s disintegrates!", "corpse_type": "NO_CORPSE" }, "flags": [ "SEES", "IMMOBILE", "NOGIB", "ELECTRIC", "WARM", "NO_BREATHE", "NOHEAD", "ARTHROPOD_BLOOD" ] }, { @@ -1167,7 +1147,7 @@ "harvest": "exempt", "emit_fields": [ { "emit_id": "emit_shock_cloud", "delay": "3 s" } ], "special_when_hit": [ "ZAPBACK", 100 ], - "death_function": [ "DISINTEGRATE" ], + "death_function": { "message": "The %s disintegrates!", "corpse_type": "NO_CORPSE" }, "flags": [ "IMMOBILE", "NOGIB", "ELECTRIC", "WARM", "NO_BREATHE", "NOHEAD", "ARTHROPOD_BLOOD" ] }, { @@ -1196,7 +1176,7 @@ "luminance": 10, "harvest": "exempt", "special_when_hit": [ "ZAPBACK", 100 ], - "death_function": [ "DISINTEGRATE" ], + "death_function": { "message": "The %s disintegrates!", "corpse_type": "NO_CORPSE" }, "flags": [ "IMMOBILE", "NOGIB", "ELECTRIC", "WARM", "NO_BREATHE", "NOHEAD", "ARTHROPOD_BLOOD" ] }, { @@ -1229,7 +1209,11 @@ "reproduction": { "baby_monster": "dks_mon_crystal_mite", "baby_count": 4, "baby_timer": 60 }, "special_attacks": [ [ "BOOMER_GLOW", 20 ], [ "STRETCH_ATTACK", 20 ], [ "LONGSWIPE", 20 ] ], "special_when_hit": [ "ZAPBACK", 100 ], - "death_function": [ "BOOMER_GLOW", "DISINTEGRATE" ], + "death_function": { + "effect": { "id": "death_boomer_glow", "hit_self": true, "min_level": 1 }, + "message": "A %s explode!", + "corpse_type": "NO_CORPSE" + }, "flags": [ "SEES", "IMMOBILE", "NOGIB", "ELECTRIC", "WARM", "NO_BREATHE", "NOHEAD", "ARTHROPOD_BLOOD" ] }, { @@ -1257,7 +1241,7 @@ "harvest": "exempt", "upgrades": { "age_grow": 12, "into": "dks_mon_crystal_mite_fat" }, "fear_triggers": [ "SOUND", "PLAYER_CLOSE" ], - "death_function": [ "DISINTEGRATE" ], + "death_function": { "message": "The %s disintegrates!", "corpse_type": "NO_CORPSE" }, "flags": [ "SEES", "HEARS", diff --git a/data/mods/Dark-Skies-Above/obsolete.json b/data/mods/Dark-Skies-Above/obsolete.json index d9fd020b4da5b..b30c457cd2b1d 100644 --- a/data/mods/Dark-Skies-Above/obsolete.json +++ b/data/mods/Dark-Skies-Above/obsolete.json @@ -57,10 +57,6 @@ "symbol": "[", "looks_like": "power_armor", "color": "light_gray", - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r", "head" ], - "coverage": 95, - "encumbrance": 24, - "max_encumbrance": 40, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "2 L", "max_contains_weight": "4 kg", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "2 L", "max_contains_weight": "4 kg", "moves": 80 } @@ -68,7 +64,14 @@ "warmth": 50, "material_thickness": 4, "environmental_protection": 6, - "flags": [ "WATERPROOF", "STURDY" ] + "flags": [ "WATERPROOF", "STURDY" ], + "armor": [ + { + "encumbrance": [ 24, 40 ], + "coverage": 95, + "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r", "head" ] + } + ] }, { "id": "dks_riotshield", @@ -83,13 +86,11 @@ "material": [ "plastic" ], "symbol": "[", "color": "dark_gray", - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], "sided": true, - "coverage": 85, - "encumbrance": 16, "material_thickness": 3, "techniques": [ "WBLOCK_2" ], - "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "BLOCK_WHILE_WORN" ] + "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "BLOCK_WHILE_WORN" ], + "armor": [ { "encumbrance": 16, "coverage": 85, "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ] } ] }, { "id": "dks_battleshield", @@ -104,12 +105,10 @@ "material": [ "steel" ], "symbol": "[", "color": "dark_gray", - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], "sided": true, - "coverage": 90, - "encumbrance": 20, "material_thickness": 3, "techniques": [ "WBLOCK_3" ], - "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "BLOCK_WHILE_WORN" ] + "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "BLOCK_WHILE_WORN" ], + "armor": [ { "encumbrance": 20, "coverage": 90, "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ] } ] } ] diff --git a/data/mods/DinoMod/NPC/NC_Red.json b/data/mods/DinoMod/NPC/NC_Red.json index 79044d4231a0c..b465b548807fe 100644 --- a/data/mods/DinoMod/NPC/NC_Red.json +++ b/data/mods/DinoMod/NPC/NC_Red.json @@ -36,11 +36,6 @@ "condition": { "not": { "u_has_var": "asked_about_kill_dinos", "type": "dialogue", "context": "dino", "value": "yes" } }, "effect": { "u_add_var": "asked_about_kill_dinos", "type": "dialogue", "context": "dino", "value": "yes" } }, - { - "text": "So about hunting dinosaurs…", - "topic": "TALK_RED_DINOSAURS", - "condition": { "u_has_var": "asked_about_kill_dinos", "type": "dialogue", "context": "dino", "value": "yes" } - }, { "text": "Let's trade items.", "topic": "TALK_OLD_GUARD_RED", "effect": "start_trade" }, { "text": "How can I help?", @@ -134,7 +129,7 @@ "followup": "MISSION_OLD_GUARD_DINO_4", "end": { "opinion": { "trust": 1, "value": 1 }, - "effect": [ { "u_buy_monster": "mon_zachycephalosaurus_chain", "count": 1, "name": "Betty" } ] + "effect": [ { "u_buy_monster": "mon_zachycephalosaurus_chain", "count": 1, "name": "Betty" }, { "u_buy_item": "meth" } ] }, "dialogue": { "describe": "We need help…", @@ -159,9 +154,10 @@ "difficulty": 9, "value": 100000, "origins": [ "ORIGIN_SECONDARY" ], + "followup": "MISSION_OLD_GUARD_DINO_5", "end": { "opinion": { "trust": 1, "value": 1 }, - "effect": [ { "u_buy_monster": "mon_zachycephalosaurus_chain", "count": 1, "name": "Stromer" } ] + "effect": [ { "u_buy_monster": "mon_zachycephalosaurus_chain", "count": 1, "name": "Stromer" }, { "u_buy_item": "meth" } ] }, "dialogue": { "describe": "We need help…", @@ -190,11 +186,11 @@ "origins": [ "ORIGIN_SECONDARY" ], "end": { "opinion": { "trust": 1, "value": 1 }, - "effect": [ "npc_die", { "u_buy_monster": "mon_zyrannosaurus_chain", "count": 1, "name": "Wilma" } ] + "effect": [ "npc_die", { "u_buy_monster": "mon_zyrannosaurus_chain", "count": 1, "name": "Wilma" }, { "u_buy_item": "meth" } ] }, "dialogue": { "describe": "We need help…", - "offer": "I have a special mission I need to complete before these dinos finish killing me off, and I need you to bring me a something special. Go kill me a T Rex. We're going to be gods. It's all going to be worth it.", + "offer": "I have a special mission I need to complete before these dinos finish killing me off, and I need you to bring me something special. Go kill me a T Rex. We're going to be gods. It's all going to be worth it.", "accepted": "MY LIFE FOR YOU.", "rejected": "I'm right on the edge soldier. Whose side are you on here?", "advice": "You're a dino killing machine like me. You know what to do.", diff --git a/data/mods/DinoMod/monsters/dinosaur.json b/data/mods/DinoMod/monsters/dinosaur.json index 6c9993f687e84..bab86c74c7332 100644 --- a/data/mods/DinoMod/monsters/dinosaur.json +++ b/data/mods/DinoMod/monsters/dinosaur.json @@ -67,7 +67,6 @@ "armor_cut": 1, "armor_bullet": 1, "hp": 150, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zilophosaurus", "description": "A medium dinosaur with sharp teeth and two prominent bony crests on its head.", "reproduction": { "baby_egg": "egg_dilophosaurus", "baby_count": 3, "baby_timer": 18 }, @@ -105,7 +104,6 @@ "armor_cut": 2, "armor_bullet": 1, "hp": 70, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zeratosaurus", "description": "A large, fast predatory bipedal dinosaur, decorated with three colorful horns on its head and dotted with bright skin bones with long sharp teeth and a long flexible tail.", "reproduction": { "baby_egg": "egg_ceratosaurus", "baby_count": 3, "baby_timer": 24 }, @@ -141,7 +139,6 @@ "armor_cut": 3, "armor_bullet": 2, "hp": 425, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zpinosaurus", "description": "Meet the king of the river, a huge dinosaur about the size of a small house, with a ferocious crocodile-like head and a sail on its back. Usually feeds on fish.", "reproduction": { "baby_egg": "egg_spinosaurus", "baby_count": 3, "baby_timer": 24 }, @@ -178,7 +175,6 @@ "armor_cut": 1, "armor_bullet": 1, "hp": 160, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zallosaurus", "description": "A large predatory bipedal dinosaur, with tiger-like stripes on its broad back.", "reproduction": { "baby_egg": "egg_allosaurus", "baby_count": 3, "baby_timer": 24 }, @@ -245,7 +241,6 @@ "armor_cut": 2, "armor_bullet": 2, "hp": 300, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zyrannosaurus", "description": "Enormous teeth in a massive jaw, fierce eyes and a powerful frame to drive it forward.", "reproduction": { "baby_egg": "egg_tyrannosaurus", "baby_count": 3, "baby_timer": 24 }, @@ -283,7 +278,6 @@ "armor_cut": 2, "armor_bullet": 2, "hp": 200, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zalbertosaurus", "description": "Looks like a smaller tyrannosaurus rex, but those arms are much longer", "reproduction": { "baby_egg": "egg_albertosaurus", "baby_count": 3, "baby_timer": 24 }, @@ -319,7 +313,6 @@ "vision_day": 50, "armor_bash": 1, "hp": 20, - "death_function": [ "NORMAL" ], "description": "A fast moving bipedal dinosaur about the size of a turkey. Its teeth and claws are small but sharp.", "reproduction": { "baby_egg": "egg_compsognathus", "baby_count": 3, "baby_timer": 12 }, "baby_flags": [ "SPRING", "SUMMER" ], @@ -368,7 +361,6 @@ "armor_cut": 1, "armor_bullet": 1, "hp": 40, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zallimimus", "description": "A feathered bipedal dinosaur, standing as tall as a human. It looks somewhat like a reptilian ostrich.", "reproduction": { "baby_egg": "egg_gallimimus", "baby_count": 3, "baby_timer": 12 }, @@ -415,7 +407,6 @@ "armor_bash": 1, "armor_cut": 1, "hp": 30, - "death_function": [ "NORMAL" ], "vision_night": 5, "special_attacks": [ { "type": "leap", "cooldown": 5, "max_range": 5, "allow_no_target": true }, { "type": "bite", "cooldown": 10 } ], "description": "A small bipedal dinosaur covered with feathers. Small, hooked claws emerge from its feet and hands.", @@ -452,7 +443,6 @@ "armor_cut": 2, "armor_bullet": 2, "hp": 800, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zothronychus", "description": "A large feathered bipedal dinosaur with a pot-bellied stomach and a long neck. Sharp claws extend from its dextrous hands.", "reproduction": { "baby_egg": "egg_nothronychus", "baby_count": 3, "baby_timer": 24 }, @@ -499,7 +489,6 @@ "armor_bash": 1, "armor_cut": 1, "hp": 60, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zeinonychus", "vision_night": 5, "path_settings": { "max_dist": 10, "avoid_traps": true, "avoid_sharp": true }, @@ -549,7 +538,6 @@ "armor_cut": 1, "armor_bullet": 1, "hp": 100, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zutahraptor", "vision_night": 5, "special_attacks": [ { "type": "leap", "cooldown": 5, "max_range": 5, "allow_no_target": true }, { "type": "bite", "cooldown": 5 } ], @@ -585,7 +573,6 @@ "dodge": 4, "armor_bash": 1, "hp": 10, - "death_function": [ "NORMAL" ], "death_drops": { "subtype": "collection", "groups": [ [ "science", 100 ], [ "mut_lab", 10 ] ] }, "description": "A bipedal dinosaur about the size of a chicken. It darts around quickly and has long arms for grabbing what it desires. It's holding something.", "reproduction": { "baby_egg": "egg_eoraptor", "baby_count": 3, "baby_timer": 12 }, @@ -621,7 +608,6 @@ "armor_bullet": 2, "vision_day": 50, "hp": 1000, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zapatosaurus", "special_attacks": [ { "id": "slam", "cooldown": 10, "damage_max_instance": [ { "damage_type": "bash", "amount": 12 } ] }, @@ -748,7 +734,6 @@ "armor_cut": 10, "armor_bullet": 1, "hp": 300, - "death_function": [ "NORMAL" ], "zombify_into": "mon_ztegosaurus", "special_attacks": [ { "id": "slam", "cooldown": 10, "damage_max_instance": [ { "damage_type": "bash", "amount": 12 } ] }, @@ -804,7 +789,6 @@ "armor_cut": 18, "armor_bullet": 6, "hp": 600, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zankylosaurus", "special_attacks": [ { "id": "slam", "cooldown": 10, "damage_max_instance": [ { "damage_type": "bash", "amount": 12 } ] }, @@ -887,7 +871,6 @@ "armor_cut": 2, "armor_bullet": 2, "hp": 160, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zamptosaurus", "description": "A large feathered bipedal dinosaur with strong legs, broad shoulders and a pointed beak. It moves slowly but with enormous strength.", "reproduction": { "baby_egg": "egg_camptosaurus", "baby_count": 30, "baby_timer": 12 }, @@ -936,7 +919,6 @@ "armor_cut": 4, "armor_bullet": 3, "hp": 300, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zarasaurolophus", "description": "A huge mottled dinosaur with a blunt head crest.", "reproduction": { "baby_egg": "egg_parasaurolophus", "baby_count": 30, "baby_timer": 24 }, @@ -1005,7 +987,6 @@ "armor_cut": 1, "armor_bullet": 1, "hp": 40, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zachycephalosaurus", "description": "A feathered bipedal dinosaur, standing as tall as a human. It looks like a reptilian ostrich with a round hard-looking domed head.", "reproduction": { "baby_egg": "egg_pachycephalosaurus", "baby_count": 3, "baby_timer": 12 }, @@ -1098,7 +1079,6 @@ "armor_cut": 4, "armor_bullet": 2, "hp": 600, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zriceratops", "description": "A massive rhino-like dinosaur with a bony crest from which three large horns emerge.", "reproduction": { "baby_egg": "egg_triceratops", "baby_count": 20, "baby_timer": 24 }, @@ -1145,7 +1125,6 @@ "armor_cut": 1, "vision_day": 50, "hp": 2, - "death_function": [ "NORMAL" ], "description": "A feathered flying reptile over three feet long, with short wings and a big colorful beak.", "reproduction": { "baby_egg": "egg_dimorphodon", "baby_count": 3, "baby_timer": 24 }, "baby_flags": [ "SPRING", "SUMMER" ], @@ -1218,7 +1197,6 @@ "armor_cut": 4, "armor_bullet": 6, "hp": 350, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zosasaurus", "description": "A huge aquatic dinosaur about the size of a small house, with a ferocious crocodile-like head and powerful swimming fins.", "reproduction": { "baby_egg": "egg_mosasaurus", "baby_count": 3, "baby_timer": 24 }, @@ -1256,7 +1234,6 @@ "armor_bullet": 12, "hp": 250, "vision_day": 36, - "death_function": [ "NORMAL" ], "zombify_into": "mon_zianzhousaurus", "description": "Also known as pinnochio rex, this bipedal dinosaur is slower than most and covered in fur, it also looks very hungry.", "reproduction": { "baby_egg": "egg_qianzhousaurus", "baby_count": 5, "baby_timer": 23 }, diff --git a/data/mods/DinoMod/monsters/hatchling.json b/data/mods/DinoMod/monsters/hatchling.json index 46bc671dd69bc..7f7c6d8021ae6 100644 --- a/data/mods/DinoMod/monsters/hatchling.json +++ b/data/mods/DinoMod/monsters/hatchling.json @@ -22,7 +22,6 @@ "melee_dice_sides": 1, "melee_cut": 1, "dodge": 1, - "death_function": [ "NORMAL" ], "upgrades": { "age_grow": 14, "into": "mon_compsognathus" }, "flags": [ "SEES", diff --git a/data/mods/DinoMod/monsters/juvenile.json b/data/mods/DinoMod/monsters/juvenile.json index 0dc549715a0e6..c00db4decac9b 100644 --- a/data/mods/DinoMod/monsters/juvenile.json +++ b/data/mods/DinoMod/monsters/juvenile.json @@ -134,7 +134,6 @@ "melee_dice_sides": 1, "melee_cut": 1, "dodge": 2, - "death_function": [ "NORMAL" ], "upgrades": { "age_grow": 70, "into": "mon_gallimimus" }, "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "CATTLEFODDER", "GUILT", "NO_BREED", "CANPLAY" ], "harvest": "bird_small" diff --git a/data/mods/DinoMod/monsters/zed-dinosaur.json b/data/mods/DinoMod/monsters/zed-dinosaur.json index 967bba247de57..6f2781fdb177b 100644 --- a/data/mods/DinoMod/monsters/zed-dinosaur.json +++ b/data/mods/DinoMod/monsters/zed-dinosaur.json @@ -64,7 +64,6 @@ "armor_bash": 6, "armor_cut": 8, "hp": 670, - "death_function": [ "NORMAL" ], "description": "Enormous putrid dinosaur corpse with a ferocious crocodile-like head, oozing black eyes, and a tattered sail on its back.", "special_attacks": [ [ "scratch", 10 ], { "type": "bite", "cooldown": 5 } ], "upgrades": { "half_life": 14, "into_group": "GROUP_zpinosaurus_UPGRADE" }, @@ -211,7 +210,6 @@ "armor_cut": 8, "armor_bullet": 1, "hp": 500, - "death_function": [ "NORMAL" ], "description": "Massive piles of ragged, stinking flesh lifting enormous teeth.", "special_attacks": [ [ "scratch", 10 ], { "type": "bite", "cooldown": 5 } ], "upgrades": { "half_life": 14, "into_group": "GROUP_zyrannosaurus_UPGRADE" }, @@ -282,7 +280,6 @@ "armor_cut": 4, "armor_bullet": 2, "hp": 70, - "death_function": [ "NORMAL" ], "special_attacks": [ [ "scratch", 10 ], { "type": "bite", "cooldown": 5 } ], "description": "The shuffling corpse of a medium-sized bipedal dinosaur, covered with tattered feathers and black, putrid liquid.", "upgrades": { "half_life": 14, "into_group": "GROUP_zallimimus_UPGRADE" }, @@ -335,7 +332,6 @@ "armor_cut": 4, "armor_bullet": 2, "hp": 100, - "death_function": [ "NORMAL" ], "special_attacks": [ { "type": "leap", "cooldown": 5, "max_range": 5, "allow_no_target": true }, [ "scratch", 10 ], @@ -548,7 +544,6 @@ "armor_cut": 21, "armor_bullet": 7, "hp": 1000, - "death_function": [ "NORMAL" ], "special_attacks": [ [ "scratch", 10 ], { "type": "bite", "cooldown": 5 }, @@ -615,7 +610,6 @@ "armor_cut": 4, "armor_bullet": 2, "hp": 130, - "death_function": [ "NORMAL" ], "special_attacks": [ [ "scratch", 10 ], { "type": "bite", "cooldown": 5 } ], "description": "The shuffling corpse of a large, feathered, bipedal dinosaur with strong legs, broad shoulders, and a pointed beak. Its tattered feathers are stained with black, sticky liquid.", "upgrades": { "half_life": 14, "into_group": "GROUP_zamptosaurus_UPGRADE" }, @@ -717,7 +711,6 @@ "armor_cut": 4, "armor_bullet": 1, "hp": 70, - "death_function": [ "NORMAL" ], "special_attacks": [ [ "scratch", 10 ], { "type": "bite", "cooldown": 5 } ], "description": "The shuffling corpse of a medium-sized bipedal dinosaur covered with tattered feathers and black, putrid liquid. It resembles a reptilian ostrich with a hard-looking domed head.", "upgrades": { "half_life": 14, "into_group": "GROUP_zachycephalosaurus_UPGRADE" }, @@ -840,7 +833,6 @@ "armor_cut": 4, "armor_bullet": 1, "hp": 70, - "death_function": [ "NORMAL" ], "special_attacks": [ [ "scratch", 10 ], { "type": "bite", "cooldown": 5 } ], "description": "The ragged but flying corpse of a large, feathered reptile with a long, pointy, toothless beak and a long, pointy head crest.", "upgrades": { "half_life": 14, "into": "mon_zteranodon_brute" }, @@ -932,7 +924,6 @@ "armor_cut": 4, "armor_bullet": 2, "hp": 1500, - "death_function": [ "NORMAL" ], "special_attacks": [ { "id": "slam", "cooldown": 10, "damage_max_instance": [ { "damage_type": "bash", "amount": 12 } ] }, [ "SMASH", 30 ] diff --git a/data/mods/DinoMod/monsters/zinosaur_upgrade.json b/data/mods/DinoMod/monsters/zinosaur_upgrade.json index d0b524038d944..829699fbcca05 100644 --- a/data/mods/DinoMod/monsters/zinosaur_upgrade.json +++ b/data/mods/DinoMod/monsters/zinosaur_upgrade.json @@ -1850,7 +1850,7 @@ { "group": "supplies_mechanics", "count": 10 }, { "group": "supplies_metal", "count": 10 } ], - "death_function": [ "FIREBALL" ] + "death_function": { "effect": { "id": "death_fireball", "hit_self": true } } }, { "type": "MONSTER", @@ -1873,7 +1873,7 @@ { "group": "mil_hw", "count": 10 }, { "group": "supplies_metal", "count": 10 } ], - "death_function": [ "FIREBALL" ] + "death_function": { "effect": { "id": "death_fireball", "hit_self": true } } }, { "type": "MONSTER", diff --git a/data/mods/DinoMod/mutations/mutations.json b/data/mods/DinoMod/mutations/mutations.json index 901a11cba6b70..31fdd2dfd2405 100644 --- a/data/mods/DinoMod/mutations/mutations.json +++ b/data/mods/DinoMod/mutations/mutations.json @@ -127,7 +127,7 @@ "bullet": 6 } ], - "speed_modifier": 0.95 + "enchantments": [ { "condition": "ALWAYS", "values": [ { "value": "SPEED", "multiply": -0.05 } ] } ] }, { "type": "mutation", diff --git a/data/mods/DinoMod/snippets/grave_labels.json b/data/mods/DinoMod/snippets/grave_labels.json new file mode 100644 index 0000000000000..72fdc095b3988 --- /dev/null +++ b/data/mods/DinoMod/snippets/grave_labels.json @@ -0,0 +1,21 @@ +[ + { + "type": "snippet", + "category": "grave_label", + "text": [ + "Good soldier. Killed 40 dinos.", + "Bad soldier. Killed 3 dinos.", + "Fed the great Eaters. Will be honored for all time.", + "Meh scientist but a good friend.", + "Loved dinosaurs. Should have run.", + "Died tragically rescuing his family from a burning tyrannosaurus.", + "Died wrestling a mosasaurus. It was not just a big gator.", + "Built a beautiful farm and filled it with dangerous dinosaurs.", + "Life did not find a way.", + "The greatest dinosaur expert of our times. Crushed to death by an apatosaurus.", + "Fool hid in a cardboard box from a deinonychus, shouting Dino Dave! Didn't work.", + "Here lies a dinosaur, don't know what kind. Hated shovels.", + "Alonso did not know her, but she was beautiful and majestic and she deserved the proper burial. Alonso will remember this dinosaur for some of the time." + ] + } +] diff --git a/data/mods/Fuji_Mil_Prof/prof/spc.json b/data/mods/Fuji_Mil_Prof/prof/spc.json index aa296a046d4da..5f41ff5897554 100644 --- a/data/mods/Fuji_Mil_Prof/prof/spc.json +++ b/data/mods/Fuji_Mil_Prof/prof/spc.json @@ -183,7 +183,7 @@ "items": { "both": { "items": [ - "anbc_suit", + "hazmat_suit", "pants_cargo", "longshirt", "dump_pouch", diff --git a/data/mods/Generic_Guns/firearms/gg_firearms_migration.json b/data/mods/Generic_Guns/firearms/gg_firearms_migration.json index 428c44560049f..90db3241b58be 100644 --- a/data/mods/Generic_Guns/firearms/gg_firearms_migration.json +++ b/data/mods/Generic_Guns/firearms/gg_firearms_migration.json @@ -334,20 +334,15 @@ { "id": [ "shotgun_410", - "browning_a5", "ksg", "ksg-25", - "m1014", "mossberg_500", - "mossberg_500_security", "mossberg_590", "mossberg_930", "remington_870", "remington_870_breacher", "remington_870_express", - "remington_1100", - "streetsweeper", - "SPAS_12" + "streetsweeper" ], "type": "MIGRATION", "replace": "shot_pump" diff --git a/data/mods/Generic_Guns/recipes/recipes_firearms_repeater.json b/data/mods/Generic_Guns/recipes/recipes_firearms_repeater.json index 7dfd931fca539..0b6ba029196a1 100644 --- a/data/mods/Generic_Guns/recipes/recipes_firearms_repeater.json +++ b/data/mods/Generic_Guns/recipes/recipes_firearms_repeater.json @@ -23,6 +23,7 @@ [ "pistol_casing", -1 ] ] ], + "proficiencies": [ { "proficiency": "prof_gunsmithing_basic" }, { "proficiency": "prof_gunsmithing_improv" } ], "components": [ [ [ "pipe", 4 ] ], [ [ "spring", 1 ] ], [ [ "steel_chunk", 3 ] ], [ [ "scrap", 3 ] ] ] }, { @@ -56,6 +57,7 @@ [ "pistol_magnum_casing", -1 ] ] ], + "proficiencies": [ { "proficiency": "prof_gunsmithing_basic" }, { "proficiency": "prof_gunsmithing_improv" } ], "components": [ [ [ "pipe", 2 ] ], [ [ "spring", 1 ] ], [ [ "steel_chunk", 3 ] ], [ [ "2x4", 1 ] ], [ [ "scrap", 3 ] ] ] }, { @@ -71,6 +73,7 @@ "autolearn": true, "book_learn": [ [ "manual_pistol", 6 ] ], "qualities": [ { "id": "SAW_M_FINE", "level": 1 }, { "id": "SCREW", "level": 1 }, { "id": "GLARE", "level": 2 } ], + "proficiencies": [ { "proficiency": "prof_gunsmithing_basic" }, { "proficiency": "prof_gunsmithing_antique" } ], "using": [ [ "blacksmithing_standard", 4 ] ], "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ] ], "components": [ [ [ "pipe", 1 ] ], [ [ "spring", 2 ] ], [ [ "steel_chunk", 2 ] ], [ [ "scrap", 2 ] ], [ [ "sharp_rock", 1 ] ] ] diff --git a/data/mods/Generic_Guns/recipes/recipes_firearms_single.json b/data/mods/Generic_Guns/recipes/recipes_firearms_single.json index ab5ff4a27b52b..4ab9d5459cf73 100644 --- a/data/mods/Generic_Guns/recipes/recipes_firearms_single.json +++ b/data/mods/Generic_Guns/recipes/recipes_firearms_single.json @@ -21,6 +21,7 @@ [ "pistol_tiny_casing", -1 ] ] ], + "proficiencies": [ { "proficiency": "prof_gunsmithing_basic" }, { "proficiency": "prof_gunsmithing_improv" } ], "qualities": [ { "id": "SAW_M_FINE", "level": 1 }, { "id": "SCREW_FINE", "level": 1 } ], "components": [ [ [ "pipe", 1 ] ], [ [ "scrap", 1 ] ], [ [ "duct_tape", 50 ] ] ] }, @@ -55,6 +56,7 @@ [ "pistol_magnum_casing", -1 ] ] ], + "proficiencies": [ { "proficiency": "prof_gunsmithing_basic" }, { "proficiency": "prof_gunsmithing_improv" } ], "components": [ [ [ "pipe", 1 ] ], [ [ "scrap", 2 ] ], [ [ "steel_chunk", 1 ] ], [ [ "2x4", 1 ] ] ] }, { @@ -91,6 +93,7 @@ [ "shot_casing", -1 ] ] ], + "proficiencies": [ { "proficiency": "prof_gunsmithing_basic" }, { "proficiency": "prof_gunsmithing_improv" } ], "qualities": [ { "id": "SAW_M_FINE", "level": 1 }, { "id": "SCREW_FINE", "level": 1 } ], "components": [ [ [ "pipe", 2 ] ], [ [ "scrap", 3 ] ], [ [ "2x4", 1 ] ] ] }, @@ -107,6 +110,13 @@ "autolearn": true, "book_learn": [ [ "manual_pistol", 5 ], [ "mag_pistol", 6 ] ], "qualities": [ { "id": "SAW_M_FINE", "level": 1 }, { "id": "SCREW", "level": 1 } ], + "proficiencies": [ + { "proficiency": "prof_metalworking" }, + { "proficiency": "prof_blacksmithing" }, + { "proficiency": "prof_gunsmithing_basic" }, + { "proficiency": "prof_gunsmithing_antique" }, + { "proficiency": "prof_carving", "time_multiplier": 1.5, "fail_multiplier": 1.15 } + ], "using": [ [ "blacksmithing_standard", 1 ], [ "steel_standard", 3 ] ], "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ] ], "components": [ [ [ "2x4", 1 ] ], [ [ "pipe", 1 ] ], [ [ "sharp_rock", 1 ] ] ] @@ -124,6 +134,13 @@ "autolearn": true, "book_learn": [ [ "manual_rifle", 5 ], [ "mag_rifle", 6 ] ], "qualities": [ { "id": "SAW_M_FINE", "level": 1 }, { "id": "SCREW", "level": 1 } ], + "proficiencies": [ + { "proficiency": "prof_metalworking" }, + { "proficiency": "prof_blacksmithing" }, + { "proficiency": "prof_gunsmithing_basic" }, + { "proficiency": "prof_gunsmithing_antique" }, + { "proficiency": "prof_carving", "time_multiplier": 1.5, "fail_multiplier": 1.15 } + ], "using": [ [ "blacksmithing_standard", 2 ], [ "steel_standard", 1 ] ], "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ] ], "components": [ [ [ "2x4", 1 ] ], [ [ "pipe", 1 ] ], [ [ "sharp_rock", 1 ] ] ] @@ -140,13 +157,8 @@ "time": "2 h", "autolearn": true, "book_learn": [ [ "manual_shotgun", 1 ] ], - "qualities": [ - { "id": "SAW_M", "level": 1 }, - { "id": "GLARE", "level": 2 }, - { "id": "HAMMER", "level": 2 }, - { "id": "FILE", "level": 1 }, - { "id": "WELD", "level": 1 } - ], + "qualities": [ { "id": "SAW_M", "level": 1 }, { "id": "HAMMER", "level": 2 }, { "id": "FILE", "level": 1 } ], + "using": [ [ "welding_standard", 1 ] ], "tools": [ [ [ "shot_buck", -1 ], @@ -169,6 +181,11 @@ [ "shot_hull", -1 ] ] ], + "proficiencies": [ + { "proficiency": "prof_metalworking" }, + { "proficiency": "prof_welding_basic" }, + { "proficiency": "prof_gunsmithing_improv" } + ], "components": [ [ [ "pipe", 2 ] ], [ [ "nail", 1 ] ], [ [ "scrap", 3 ] ] ] }, { @@ -211,6 +228,7 @@ [ "shot_hull", -1 ] ] ], + "proficiencies": [ { "proficiency": "prof_gunsmithing_basic" }, { "proficiency": "prof_gunsmithing_improv" } ], "components": [ [ [ "pipe", 2 ] ], [ [ "nail", 1 ] ], [ [ "pipe_fittings", 1 ] ] ] }, { @@ -225,13 +243,8 @@ "time": "2 h", "autolearn": true, "book_learn": [ [ "manual_shotgun", 1 ] ], - "qualities": [ - { "id": "SAW_M", "level": 1 }, - { "id": "GLARE", "level": 2 }, - { "id": "HAMMER", "level": 2 }, - { "id": "FILE", "level": 1 }, - { "id": "WELD", "level": 1 } - ], + "qualities": [ { "id": "SAW_M", "level": 1 }, { "id": "HAMMER", "level": 2 }, { "id": "FILE", "level": 1 } ], + "using": [ [ "welding_standard", 1 ] ], "tools": [ [ [ "shot_buck", -1 ], @@ -254,6 +267,11 @@ [ "shot_hull", -1 ] ] ], + "proficiencies": [ + { "proficiency": "prof_metalworking" }, + { "proficiency": "prof_welding_basic" }, + { "proficiency": "prof_gunsmithing_improv" } + ], "components": [ [ [ "pipe", 4 ] ], [ [ "nail", 2 ] ], [ [ "scrap", 5 ] ] ] }, { @@ -271,12 +289,11 @@ "book_learn": [ [ "manual_shotgun", 1 ] ], "qualities": [ { "id": "SAW_M", "level": 1 }, - { "id": "GLARE", "level": 2 }, { "id": "HAMMER", "level": 2 }, { "id": "FILE", "level": 1 }, - { "id": "WRENCH", "level": 1 }, - { "id": "WELD", "level": 1 } + { "id": "WRENCH", "level": 1 } ], + "using": [ [ "welding_standard", 1 ] ], "tools": [ [ [ "shot_buck", -1 ], @@ -299,6 +316,11 @@ [ "shot_hull", -1 ] ] ], + "proficiencies": [ + { "proficiency": "prof_metalworking" }, + { "proficiency": "prof_welding_basic" }, + { "proficiency": "prof_gunsmithing_improv" } + ], "components": [ [ [ "pipe", 4 ] ], [ [ "nail", 2 ] ], [ [ "pipe_fittings", 2 ] ], [ [ "scrap", 2 ] ] ] }, { @@ -313,7 +335,12 @@ "difficulty": 1, "time": "2 h", "autolearn": true, - "qualities": [ { "id": "WELD", "level": 1 } ], + "using": [ [ "welding_standard", 1 ] ], + "proficiencies": [ + { "proficiency": "prof_metalworking" }, + { "proficiency": "prof_welding_basic" }, + { "proficiency": "prof_gunsmithing_improv" } + ], "components": [ [ [ "slamfire_shotgun", 2 ] ], [ [ "scrap", 2 ] ] ] }, { @@ -327,6 +354,7 @@ "skills_required": [ [ "gun", 1 ] ], "time": "1 h", "autolearn": true, + "proficiencies": [ { "proficiency": "prof_gunsmithing_improv" } ], "components": [ [ [ "slamfire_shotgun", 2 ] ], [ [ "duct_tape", 100 ] ] ] } ] diff --git a/data/mods/Magiclysm/Spells/attunements/Force_Mage.json b/data/mods/Magiclysm/Spells/attunements/Force_Mage.json index 46d25875e1788..3e82de7e33d6c 100644 --- a/data/mods/Magiclysm/Spells/attunements/Force_Mage.json +++ b/data/mods/Magiclysm/Spells/attunements/Force_Mage.json @@ -34,9 +34,6 @@ "to_hit": -10, "symbol": "[", "color": "brown", - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "head", "foot_l", "foot_r", "mouth", "eyes" ], - "coverage": 100, - "encumbrance": 0, "environmental_protection": 2, "relic_data": { "passive_effects": [ @@ -52,7 +49,14 @@ } ] }, - "flags": [ "WATERPROOF", "TRADER_AVOID", "SEMITANGIBLE", "ONLY_ONE", "OVERSIZE", "AURA" ] + "flags": [ "WATERPROOF", "TRADER_AVOID", "SEMITANGIBLE", "ONLY_ONE", "OVERSIZE", "AURA" ], + "armor": [ + { + "encumbrance": 0, + "coverage": 100, + "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "head", "foot_l", "foot_r", "mouth", "eyes" ] + } + ] }, { "id": "force_magical_armor", diff --git a/data/mods/Magiclysm/Spells/technomancer.json b/data/mods/Magiclysm/Spells/technomancer.json index 4ae8a68dd170f..95a42aac189da 100644 --- a/data/mods/Magiclysm/Spells/technomancer.json +++ b/data/mods/Magiclysm/Spells/technomancer.json @@ -84,7 +84,7 @@ "min_damage": 1, "max_damage": 1, "effect": "spawn_item", - "effect_str": "armor_lightplate", + "effect_str": "armor_spirit", "shape": "blast", "spell_class": "TECHNOMANCER", "energy_source": "MANA", diff --git a/data/mods/Magiclysm/enchantments/Soulfire.json b/data/mods/Magiclysm/enchantments/Soulfire.json index 16ecdb83a9bd5..8b22743d59056 100644 --- a/data/mods/Magiclysm/enchantments/Soulfire.json +++ b/data/mods/Magiclysm/enchantments/Soulfire.json @@ -32,10 +32,10 @@ "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "MAX_HP", "multiply": -0.4 } ] } ] }, - "covers": [ "torso" ], "symbol": "~", "color": "red", "weight": "1 g", - "volume": "1 ml" + "volume": "1 ml", + "armor": [ { "covers": [ "torso" ] } ] } ] diff --git a/data/mods/Magiclysm/items/alchemy_items.json b/data/mods/Magiclysm/items/alchemy_items.json index e3c3a17f1e0b9..57b53300bcd33 100644 --- a/data/mods/Magiclysm/items/alchemy_items.json +++ b/data/mods/Magiclysm/items/alchemy_items.json @@ -61,13 +61,11 @@ "material": [ "copper", "wood" ], "symbol": "[", "color": "brown", - "covers": [ "head" ], - "coverage": 5, - "encumbrance": 1, "warmth": 0, "material_thickness": 1, "flags": [ "BELTED" ], - "qualities": [ [ "MANA_FOCUS", 1 ] ] + "qualities": [ [ "MANA_FOCUS", 1 ] ], + "armor": [ { "encumbrance": 1, "coverage": 5, "covers": [ "head" ] } ] }, { "id": "potion_starter", diff --git a/data/mods/Magiclysm/items/archery.json b/data/mods/Magiclysm/items/archery.json index 35c9a6ef06756..ee336b12d1011 100644 --- a/data/mods/Magiclysm/items/archery.json +++ b/data/mods/Magiclysm/items/archery.json @@ -26,7 +26,7 @@ "weight": "740 g", "volume": "5 L", "bashing": 14, - "armor_data": { "covers": [ "torso" ], "coverage": 5, "material_thickness": 1, "encumbrance": 14 }, + "armor_data": { "material_thickness": 1, "armor": [ { "encumbrance": 14, "coverage": 5, "covers": [ "torso" ] } ] }, "reload_noise_volume": 2, "loudness": 5, "ranged_damage": { "damage_type": "stab", "amount": 15 }, diff --git a/data/mods/Magiclysm/items/black_dragon_items.json b/data/mods/Magiclysm/items/black_dragon_items.json index 10f2bc1a42cc0..d507dc91c1f71 100644 --- a/data/mods/Magiclysm/items/black_dragon_items.json +++ b/data/mods/Magiclysm/items/black_dragon_items.json @@ -104,13 +104,11 @@ "material": [ "black_dragon_hide", "black_dragon_scales" ], "symbol": "[", "color": "black_white", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 30, "warmth": 25, "material_thickness": 5, "environmental_protection": 3, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 30, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "boots_black_dragon_hide", @@ -126,13 +124,11 @@ "material": [ "black_dragon_hide" ], "symbol": "[", "color": "black_white", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 20, "warmth": 20, "material_thickness": 3, "environmental_protection": 3, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "helmet_black_dragon_scale", @@ -149,7 +145,7 @@ "material": [ "black_dragon_hide", "black_dragon_scales" ], "symbol": "[", "color": "black_white", - "armor_portion_data": [ + "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 32 }, { "covers": [ "eyes", "mouth" ], "coverage": 100, "encumbrance": 20 } ], @@ -169,7 +165,7 @@ "description": "A helmet made from incredibly durable black dragonscale, held together with black dragonhide. The visor is raised.", "use_action": { "type": "transform", "target": "helmet_black_dragon_scale", "msg": "You put down your visor." }, "symbol": "[", - "armor_portion_data": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 32 } ], + "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 32 } ], "delete": { "qualities": [ [ "GLARE", 1 ] ], "flags": [ "SUN_GLASSES" ] } }, { @@ -186,14 +182,12 @@ "material": [ "black_dragon_hide" ], "symbol": "[", "color": "black_white", - "covers": [ "head" ], - "coverage": 100, - "encumbrance": 20, "warmth": 15, "material_thickness": 3, "environmental_protection": 1, "techniques": [ "WBLOCK_1" ], - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 100, "covers": [ "head" ] } ] }, { "id": "suit_black_dragon_scale", @@ -209,13 +203,11 @@ "material": [ "black_dragon_hide", "black_dragon_scales" ], "symbol": "[", "color": "black_white", - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ], - "coverage": 100, - "encumbrance": 25, "warmth": 25, "material_thickness": 5, "environmental_protection": 3, - "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ], + "armor": [ { "encumbrance": 25, "coverage": 100, "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ] } ] }, { "id": "suit_black_dragon_hide", @@ -231,13 +223,11 @@ "material": [ "black_dragon_hide" ], "symbol": "[", "color": "black_white", - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ], - "coverage": 100, - "encumbrance": 18, "warmth": 15, "material_thickness": 3, "environmental_protection": 2, - "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ], + "armor": [ { "encumbrance": 18, "coverage": 100, "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ] } ] }, { "id": "gauntlets_black_dragon_scale", @@ -252,13 +242,11 @@ "material": [ "black_dragon_hide", "black_dragon_scales" ], "symbol": "[", "color": "black_white", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 20, "warmth": 20, "material_thickness": 4, "environmental_protection": 3, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 20, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_black_dragon_hide", @@ -273,13 +261,11 @@ "material": [ "black_dragon_hide" ], "symbol": "[", "color": "black_white", - "covers": [ "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 8, "warmth": 13, "material_thickness": 2, "environmental_protection": 1, - "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 8, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "boots_xlblack_dragon_scale", @@ -289,8 +275,8 @@ "description": "Massive boots made of incredibly durable black dragonscale, modified to fit even the strangest of bodies. Very protective, and surprisingly light.", "weight": "1545 g", "volume": "6250 ml", - "encumbrance": 40, - "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 40, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "boots_xlblack_dragon_hide", @@ -300,8 +286,8 @@ "description": "Massive boots made of very durable black dragonhide, modified to fit even the strangest of bodies. Very protective, and surprisingly light.", "weight": "955 g", "volume": "6250 ml", - "encumbrance": 25, - "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 25, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "gauntlets_xlblack_dragon_scale", @@ -311,8 +297,8 @@ "description": "A pair of heavy-duty gauntlets made of incredibly durable black dragonscale that covers your hands, or whatever you use as hands.", "weight": "680 g", "volume": "2 L", - "encumbrance": 30, - "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 30, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "gloves_xlblack_dragon_hide", @@ -322,8 +308,8 @@ "description": "A pair of gloves made of very durable black dragonhide, modified to be easy to wear while providing maximum protection under extreme conditions. Sized to fit even the strangest of anatomy.", "weight": "430 g", "volume": "1500 ml", - "encumbrance": 18, - "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 18, "coverage": 100, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "helmet_xlblack_dragon_scale", @@ -334,7 +320,10 @@ "use_action": { "type": "transform", "target": "helmet_xlblack_dragon_scale_raised", "msg": "You raise your visor." }, "weight": "1256 g", "volume": "4500 ml", - "armor_portion_data": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 42 } ], + "armor": [ + { "covers": [ "head" ], "coverage": 100, "encumbrance": 42 }, + { "covers": [ "eyes", "mouth" ], "coverage": 100, "encumbrance": 20 } + ], "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY", "SUN_GLASSES" ] }, { @@ -344,7 +333,7 @@ "name": { "str": "XL black dragonscale helmet (raised visor)", "str_pl": "XL black dragonscale helmets (raised visor)" }, "description": "A massive helmet made from incredibly durable black dragonscale, held together with black dragonhide. It is large enough to fit even the strangest of heads. The visor is raised", "use_action": { "type": "transform", "target": "helmet_xlblack_dragon_scale", "msg": "You put down your visor." }, - "armor_portion_data": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 42 } ], + "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 42 } ], "weight": "1256 g", "volume": "4500 ml", "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] @@ -357,8 +346,8 @@ "description": "A massive helmet made from very durable black dragonhide. It protects your head well, and doesn't cover your face, but is large enough to fit even the strangest of heads.", "weight": "815 g", "volume": "4500 ml", - "encumbrance": 26, - "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 26, "coverage": 100, "covers": [ "head" ] } ] }, { "id": "suit_xlblack_dragon_scale", @@ -368,8 +357,8 @@ "description": "A massive full suit of incredibly durable black dragon scale mail. It comes with all the accoutrements that cover your torso, legs, and arms; sized to fit even the strangest of bodies.", "weight": "6250 g", "volume": "18 L", - "encumbrance": 35, - "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ] + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ], + "armor": [ { "encumbrance": 35, "coverage": 100, "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ] } ] }, { "id": "suit_xlblack_dragon_hide", @@ -379,8 +368,8 @@ "description": "A massive full suit of very durable black dragonhide armor. It comes with all the accoutrements that cover your torso, legs, and arms; sized to fit even the strangest of bodies.", "weight": "5500 g", "volume": "18 L", - "encumbrance": 26, - "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ] + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ], + "armor": [ { "encumbrance": 26, "coverage": 100, "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r" ] } ] }, { "id": "backpack_black_dragon_hide", @@ -396,10 +385,6 @@ "symbol": "[", "looks_like": "backpack", "color": "black", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 5, - "max_encumbrance": 30, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -413,7 +398,8 @@ "warmth": 8, "material_thickness": 3, "environmental_protection": 3, - "flags": [ "WATER_FRIENDLY", "STURDY", "BELTED", "WATERPROOF" ] + "flags": [ "WATER_FRIENDLY", "STURDY", "BELTED", "WATERPROOF" ], + "armor": [ { "encumbrance": [ 5, 30 ], "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "backpack_xl_black_dragon_hide", @@ -425,8 +411,6 @@ "price": 280000, "price_postapoc": 3450, "symbol": "[", - "encumbrance": 8, - "max_encumbrance": 40, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -440,6 +424,7 @@ "warmth": 9, "material_thickness": 4, "environmental_protection": 3, - "extend": { "flags": [ "OVERSIZE" ] } + "extend": { "flags": [ "OVERSIZE" ] }, + "armor": [ { "encumbrance": [ 8, 40 ], "coverage": 40, "covers": [ "torso" ] } ] } ] diff --git a/data/mods/Magiclysm/items/enchanted.json b/data/mods/Magiclysm/items/enchanted.json index a8cf279b6c59a..aa024b3dd172e 100644 --- a/data/mods/Magiclysm/items/enchanted.json +++ b/data/mods/Magiclysm/items/enchanted.json @@ -92,16 +92,14 @@ "material": [ "cotton" ], "symbol": "^", "color": "light_blue", - "covers": [ "head" ], - "coverage": 50, - "encumbrance": 12, "warmth": 7, "material_thickness": 2, "environmental_protection": 2, "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "MAX_MANA", "multiply": 0.2, "add": 500 } ] } ] }, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 12, "coverage": 50, "covers": [ "head" ] } ] }, { "id": "debug_fireball_hammer", @@ -131,13 +129,11 @@ "material": [ "black_dragon_hide" ], "symbol": "[", "color": "dark_gray", - "covers": [ "torso", "head", "arm_l", "arm_r", "leg_l", "leg_r" ], - "coverage": 85, - "encumbrance": 4, "warmth": 30, "material_thickness": 3, "flags": [ "OVERSIZE", "HOOD", "OUTER", "NO_REPAIR", "SUPER_FANCY", "STURDY", "TRADER_KEEP_EQUIPPED" ], - "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "BONUS_DODGE", "add": 1 } ] } ] } + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "BONUS_DODGE", "add": 1 } ] } ] }, + "armor": [ { "encumbrance": 4, "coverage": 85, "covers": [ "torso", "head", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] }, { "id": "wolfshead_cufflinks", diff --git a/data/mods/Magiclysm/items/enchanted_belts.json b/data/mods/Magiclysm/items/enchanted_belts.json index 9c2628ab984d4..8ccf537cbbeac 100644 --- a/data/mods/Magiclysm/items/enchanted_belts.json +++ b/data/mods/Magiclysm/items/enchanted_belts.json @@ -11,14 +11,13 @@ "material": [ "leather" ], "symbol": "[", "color": "brown", - "covers": [ "torso" ], - "coverage": 5, "material_thickness": 2, "pocket_data": [ { "max_contains_volume": "500 ml", "max_contains_weight": "400 g", "moves": 60, "flag_restriction": [ "BELT_CLIP" ] } ], "use_action": { "type": "holster", "holster_prompt": "Stick what into your belt", "holster_msg": "You tuck your %s into your %s" }, - "flags": [ "WAIST", "WATER_FRIENDLY", "STURDY" ] + "flags": [ "WAIST", "WATER_FRIENDLY", "STURDY" ], + "armor": [ { "coverage": 5, "covers": [ "torso" ] } ] }, { "type": "TOOL_ARMOR", @@ -50,9 +49,6 @@ "id": "mbelt_pockets_lesser", "name": { "str": "lesser dimensional toolbelt" }, "description": "A sturdy workman's belt that fits around your waist, covered in easy to access pouches. Like all dimensional spaces, they hold more than they should with a fair weight reduction.", - "coverage": 10, - "encumbrance": 4, - "max_encumbrance": 10, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -90,7 +86,8 @@ "weight_multiplier": 0.5, "volume_multiplier": 0.35 } - ] + ], + "armor": [ { "encumbrance": [ 4, 10 ], "coverage": 10, "covers": [ "torso" ] } ] }, { "type": "TOOL_ARMOR", @@ -98,9 +95,6 @@ "id": "mbelt_pockets_greater", "name": { "str": "greater dimensional toolbelt" }, "description": "A heavy duty workman's belt that fits around your waist, covered in easy to access pouches. Like all dimensional spaces, they hold far more than they should with a substantial weight reduction.", - "coverage": 10, - "encumbrance": 6, - "max_encumbrance": 8, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -138,7 +132,8 @@ "weight_multiplier": 0.3, "volume_multiplier": 0.2 } - ] + ], + "armor": [ { "encumbrance": [ 6, 8 ], "coverage": 10, "covers": [ "torso" ] } ] }, { "type": "TOOL_ARMOR", @@ -146,9 +141,6 @@ "id": "mbelt_weaponry", "name": { "str": "Belt of Weaponry", "str_pl": "Belts of Weaponry" }, "description": "A wide girdle that fits around your waist, you can sheath or holster any weapon into it in the blink of an eye, and it seemingly stores them somewhere else.", - "coverage": 10, - "encumbrance": 3, - "max_encumbrance": 3, "pocket_data": [ { "holster": true, @@ -183,7 +175,8 @@ "weight_multiplier": 0.0 } ], - "use_action": { "type": "holster", "holster_prompt": "Stick what into your belt", "holster_msg": "You tuck your %s into your %s" } + "use_action": { "type": "holster", "holster_prompt": "Stick what into your belt", "holster_msg": "You tuck your %s into your %s" }, + "armor": [ { "encumbrance": [ 3, 3 ], "coverage": 10, "covers": [ "torso" ] } ] }, { "type": "ARMOR", @@ -191,7 +184,6 @@ "name": { "str": "technomancer's toolbelt" }, "weight": "2000 g", "color": "brown", - "covers": [ "torso" ], "pocket_data": [ { "pocket_type": "CONTAINER", @@ -208,8 +200,6 @@ "material": [ "leather", "steel" ], "volume": "4 L", "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY", "WAIST", "OVERSIZE" ], - "coverage": 10, - "encumbrance": 4, "material_thickness": 4, "use_action": [ { "type": "holster", "holster_prompt": "Sheath blade", "holster_msg": "You sheath your %s" }, "CROWBAR" ], "qualities": [ @@ -224,7 +214,8 @@ [ "SAW_M_FINE", 1 ], [ "WRENCH_FINE", 1 ], [ "SCREW_FINE", 1 ] - ] + ], + "armor": [ { "encumbrance": 4, "coverage": 10, "covers": [ "torso" ] } ] }, { "type": "TOOL_ARMOR", diff --git a/data/mods/Magiclysm/items/enchanted_boots.json b/data/mods/Magiclysm/items/enchanted_boots.json index d99ce8999b1dd..8e5a44bd91f2c 100644 --- a/data/mods/Magiclysm/items/enchanted_boots.json +++ b/data/mods/Magiclysm/items/enchanted_boots.json @@ -8,11 +8,11 @@ "price_postapoc": "750 USD", "description": "Rugged yet extremely comfortable and well fitting boots of worn leather and steel, they look like they've seen a lot of use and will likely see a lot more. They make your movement a lot less work.", "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "MOVE_COST", "add": -30 } ] } ] }, - "encumbrance": 8, "warmth": 30, "material_thickness": 3, "environmental_protection": 3, - "flags": [ "WATERPROOF", "STURDY" ] + "flags": [ "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 8, "coverage": 95, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "mboots_haste", @@ -28,11 +28,11 @@ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "SPEED", "add": 10 } ] } ] }, - "encumbrance": 8, "warmth": 30, "material_thickness": 3, "environmental_protection": 3, - "flags": [ "WATERPROOF", "STURDY" ] + "flags": [ "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 8, "coverage": 95, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "mboots_escape", @@ -46,11 +46,11 @@ "relic_data": { "charge_info": { "recharge_type": "periodic", "time": "24 h", "regenerate_ammo": true } }, "pocket_data": [ { "pocket_type": "MAGAZINE", "ammo_restriction": { "crystallized_mana": 1 } } ], "use_action": { "type": "cast_spell", "spell_id": "magus_escape", "no_fail": true, "level": 10, "need_worn": true }, - "encumbrance": 8, "warmth": 30, "material_thickness": 3, "environmental_protection": 3, - "flags": [ "WATERPROOF", "STURDY", "NO_UNLOAD", "NO_RELOAD" ] + "flags": [ "WATERPROOF", "STURDY", "NO_UNLOAD", "NO_RELOAD" ], + "armor": [ { "encumbrance": 8, "coverage": 95, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "mboots_freerunner", @@ -65,11 +65,11 @@ { "has": "WORN", "condition": "ALWAYS", "mutations": [ "PARKOUR" ], "values": [ { "value": "MOVE_COST", "add": -5 } ] } ] }, - "encumbrance": 8, "warmth": 15, "material_thickness": 3, "environmental_protection": 3, - "flags": [ "WATERPROOF", "STURDY" ] + "flags": [ "WATERPROOF", "STURDY" ], + "armor": [ { "encumbrance": 8, "coverage": 95, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "mboots_grounding", @@ -79,11 +79,11 @@ "looks_like": "boots_hiking", "price_postapoc": "350 USD", "description": "Rugged yet extremely comfortable and well fitting boots of leather with small engraved runes seemingly filled with rubber. When worn, you are immune to damage from electricity.", - "encumbrance": 8, "warmth": 30, "material_thickness": 3, "environmental_protection": 3, "flags": [ "WATERPROOF", "STURDY" ], - "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "ARMOR_ELEC", "add": -20 } ] } ] } + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "ARMOR_ELEC", "add": -20 } ] } ] }, + "armor": [ { "encumbrance": 8, "coverage": 95, "covers": [ "foot_l", "foot_r" ] } ] } ] diff --git a/data/mods/Magiclysm/items/enchanted_bracers.json b/data/mods/Magiclysm/items/enchanted_bracers.json index c5353f4b9cbc1..49f1af91fcc8a 100644 --- a/data/mods/Magiclysm/items/enchanted_bracers.json +++ b/data/mods/Magiclysm/items/enchanted_bracers.json @@ -12,12 +12,10 @@ "material": [ "steel", "leather" ], "symbol": "[", "color": "light_gray", - "covers": [ "arm_l", "arm_r" ], - "coverage": 45, - "encumbrance": 10, "warmth": 10, "material_thickness": 5, - "flags": [ "BELTED", "STURDY", "BLOCK_WHILE_WORN", "WATER_FRIENDLY" ] + "flags": [ "BELTED", "STURDY", "BLOCK_WHILE_WORN", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 10, "coverage": 45, "covers": [ "arm_l", "arm_r" ] } ] }, { "copy-from": "mbracer_steel_pair", @@ -26,7 +24,6 @@ "name": { "str": "steel bracer" }, "weight": "770 g", "volume": "1250 ml", - "covers": [ "arm_l", "arm_r" ], "sided": true }, { diff --git a/data/mods/Magiclysm/items/enchanted_cloaks.json b/data/mods/Magiclysm/items/enchanted_cloaks.json index 74e97f49b2f35..c7a0c4c0af853 100644 --- a/data/mods/Magiclysm/items/enchanted_cloaks.json +++ b/data/mods/Magiclysm/items/enchanted_cloaks.json @@ -17,11 +17,9 @@ "price": 100000, "symbol": "w", "color": "blue", - "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "coverage": 0, - "encumbrance": 0, "flags": [ "OUTER", "OVERSIZE", "NONCONDUCTIVE", "WATER_FRIENDLY", "RAINPROOF" ], - "relic_data": { "passive_effects": [ { "id": "ench_fishform" } ] } + "relic_data": { "passive_effects": [ { "id": "ench_fishform" } ] }, + "armor": [ { "encumbrance": 0, "coverage": 0, "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] }, { "id": "ench_bearform", @@ -55,11 +53,9 @@ "price": 200000, "symbol": "w", "color": "brown", - "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "coverage": 0, - "encumbrance": 0, "flags": [ "OUTER", "OVERSIZE", "NONCONDUCTIVE", "WATER_FRIENDLY", "RAINPROOF" ], - "relic_data": { "passive_effects": [ { "id": "ench_bearform" } ] } + "relic_data": { "passive_effects": [ { "id": "ench_bearform" } ] }, + "armor": [ { "encumbrance": 0, "coverage": 0, "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] }, { "id": "ench_deerform", @@ -91,10 +87,8 @@ "price": 150000, "symbol": "w", "color": "green", - "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "coverage": 0, - "encumbrance": 0, "flags": [ "OUTER", "OVERSIZE", "NONCONDUCTIVE", "WATER_FRIENDLY", "RAINPROOF" ], - "relic_data": { "passive_effects": [ { "id": "ench_deerform" } ] } + "relic_data": { "passive_effects": [ { "id": "ench_deerform" } ] }, + "armor": [ { "encumbrance": 0, "coverage": 0, "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ] } ] } ] diff --git a/data/mods/Magiclysm/items/enchanted_masks.json b/data/mods/Magiclysm/items/enchanted_masks.json index e65e38e377bf7..82fe2de62d8b1 100644 --- a/data/mods/Magiclysm/items/enchanted_masks.json +++ b/data/mods/Magiclysm/items/enchanted_masks.json @@ -12,13 +12,11 @@ "material": [ "steel", "leather" ], "symbol": "[", "color": "dark_gray", - "covers": [ "eyes", "mouth" ], - "coverage": 95, - "encumbrance": 10, "warmth": 10, "material_thickness": 2, "environmental_protection": 1, - "flags": [ "WATER_FRIENDLY", "STURDY" ] + "flags": [ "WATER_FRIENDLY", "STURDY" ], + "armor": [ { "encumbrance": 10, "coverage": 95, "covers": [ "eyes", "mouth" ] } ] }, { "type": "TOOL_ARMOR", @@ -38,14 +36,12 @@ "name": { "str": "mask of perfect vision", "str_pl": "masks of perfect vision" }, "description": "A decidedly steampunk-looking half mask that covers the eye area of the face, it has large lenses that correct and greatly enhance the vision of the wearer.", "copy-from": "mmask", - "covers": [ "eyes" ], - "coverage": 100, - "encumbrance": 5, "environmental_protection": 6, "flags": [ "FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FIX_FARSIGHT", "ZOOM" ], "qualities": [ [ "GLARE", 2 ] ], "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "PERCEPTION", "multiply": 0.25 } ] } ] - } + }, + "armor": [ { "encumbrance": 5, "coverage": 100, "covers": [ "eyes" ] } ] } ] diff --git a/data/mods/Magiclysm/items/enchanted_ranged.json b/data/mods/Magiclysm/items/enchanted_ranged.json index 21ec01c9a39ce..4fb94e65dff40 100644 --- a/data/mods/Magiclysm/items/enchanted_ranged.json +++ b/data/mods/Magiclysm/items/enchanted_ranged.json @@ -22,7 +22,7 @@ "SHEATH_BOW" ], "min_strength": 9, - "armor_data": { "covers": [ "torso" ], "coverage": 5, "material_thickness": 1, "encumbrance": 13 }, + "armor_data": { "material_thickness": 1, "armor": [ { "encumbrance": 13, "coverage": 5, "covers": [ "torso" ] } ] }, "valid_mod_locations": [ [ "sights", 1 ], [ "accessories", 1 ], [ "dampening", 1 ] ], "ranged_damage": { "damage_type": "stab", "amount": 9 }, "range": 13, diff --git a/data/mods/Magiclysm/items/enchanted_rings.json b/data/mods/Magiclysm/items/enchanted_rings.json index cd0bd583d432b..dce8b1f5c88c4 100644 --- a/data/mods/Magiclysm/items/enchanted_rings.json +++ b/data/mods/Magiclysm/items/enchanted_rings.json @@ -11,11 +11,10 @@ "material": [ "copper" ], "symbol": "[", "color": "light_red", - "covers": [ "hand_l", "hand_r" ], "sided": true, - "coverage": 0, "warmth": 0, - "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "FANCY", "ONE_PER_LAYER", "SKINTIGHT" ] + "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "FANCY", "ONE_PER_LAYER", "SKINTIGHT" ], + "armor": [ { "coverage": 0, "covers": [ "hand_l", "hand_r" ] } ] }, { "abstract": "mring_silver", @@ -29,11 +28,10 @@ "material": [ "silver" ], "symbol": "[", "color": "light_gray", - "covers": [ "hand_l", "hand_r" ], "sided": true, - "coverage": 0, "warmth": 0, - "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "FANCY", "ONE_PER_LAYER", "SKINTIGHT" ] + "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "FANCY", "ONE_PER_LAYER", "SKINTIGHT" ], + "armor": [ { "coverage": 0, "covers": [ "hand_l", "hand_r" ] } ] }, { "abstract": "mring_gold", @@ -47,11 +45,10 @@ "material": [ "gold" ], "symbol": "[", "color": "yellow", - "covers": [ "hand_l", "hand_r" ], "sided": true, - "coverage": 0, "warmth": 0, - "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "FANCY", "ONE_PER_LAYER", "SKINTIGHT" ] + "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "FANCY", "ONE_PER_LAYER", "SKINTIGHT" ], + "armor": [ { "coverage": 0, "covers": [ "hand_l", "hand_r" ] } ] }, { "abstract": "mring_platinum", @@ -65,11 +62,10 @@ "material": [ "platinum" ], "symbol": "[", "color": "light_gray", - "covers": [ "hand_l", "hand_r" ], "sided": true, - "coverage": 0, "warmth": 0, - "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "FANCY", "ONE_PER_LAYER", "SKINTIGHT" ] + "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "FANCY", "ONE_PER_LAYER", "SKINTIGHT" ], + "armor": [ { "coverage": 0, "covers": [ "hand_l", "hand_r" ] } ] }, { "copy-from": "mring_copper", diff --git a/data/mods/Magiclysm/items/ethereal_items.json b/data/mods/Magiclysm/items/ethereal_items.json index a4ac0b348f05d..774ac5c6cab3f 100644 --- a/data/mods/Magiclysm/items/ethereal_items.json +++ b/data/mods/Magiclysm/items/ethereal_items.json @@ -13,12 +13,10 @@ "symbol": "[", "color": "light_gray", "armor_data": { - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 0, "warmth": 20, "material_thickness": 4, - "environmental_protection": 10 + "environmental_protection": 10, + "armor": [ { "encumbrance": 0, "coverage": 100, "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ] } ] }, "qualities": [ [ "HAMMER", 1 ] ], "flags": [ "VARSIZE", "STURDY", "UNARMED_WEAPON", "DURABLE_MELEE", "NONCONDUCTIVE", "MAGIC_FOCUS" ], @@ -51,15 +49,13 @@ "material": [ "superalloy" ], "symbol": "[", "color": "light_gray", - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], - "coverage": 100, - "encumbrance": 0, "warmth": 20, "material_thickness": 4, "environmental_protection": 10, "qualities": [ [ "HAMMER", 1 ] ], "flags": [ "VARSIZE", "STURDY", "UNARMED_WEAPON", "DURABLE_MELEE", "NONCONDUCTIVE", "MAGIC_FOCUS" ], - "techniques": [ "WBLOCK_3" ] + "techniques": [ "WBLOCK_3" ], + "armor": [ { "encumbrance": 0, "coverage": 100, "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ] } ] }, { "id": "magic_lamp", @@ -74,8 +70,8 @@ "bashing": 8, "symbol": ",", "color": "light_green", - "covers": [ "head" ], - "flags": [ "LIGHT_300", "AURA", "SEMITANGIBLE" ] + "flags": [ "LIGHT_300", "AURA", "SEMITANGIBLE" ], + "armor": [ { "covers": [ "head" ] } ] }, { "id": "magic_light", @@ -88,8 +84,8 @@ "price": 0, "symbol": ",", "color": "light_green", - "covers": [ "head" ], - "flags": [ "LIGHT_8", "AURA", "SEMITANGIBLE" ] + "flags": [ "LIGHT_8", "AURA", "SEMITANGIBLE" ], + "armor": [ { "covers": [ "head" ] } ] }, { "id": "shield_ice", @@ -105,13 +101,11 @@ "material": [ "steel" ], "symbol": "[", "color": "light_gray", - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], "sided": true, - "coverage": 70, - "encumbrance": 15, "material_thickness": 3, "techniques": [ "WBLOCK_3" ], - "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "BLOCK_WHILE_WORN" ] + "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "BLOCK_WHILE_WORN" ], + "armor": [ { "encumbrance": 15, "coverage": 70, "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ] } ] }, { "id": "ice_gliders", @@ -126,14 +120,12 @@ "material": [ "steel" ], "symbol": "[", "color": "brown", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 0, "warmth": 30, "material_thickness": 3, "environmental_protection": 2, "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "MOVE_COST", "add": -5 } ] } ] }, - "flags": [ "WATERPROOF", "ROLLER_QUAD", "BELTED" ] + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "ROLLER_QUAD", "BELTED" ], + "armor": [ { "encumbrance": 0, "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "type": "GENERIC", @@ -276,13 +268,10 @@ "material": [ "flesh" ], "symbol": "[", "color": "green", - "covers": [ "torso" ], - "coverage": 40, - "encumbrance": 5, - "max_encumbrance": 10, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "25 L", "max_contains_weight": "75 kg", "moves": 60 } ], "material_thickness": 3, - "flags": [ "BELTED", "TRADER_AVOID", "WATERPROOF", "STURDY", "NO_UNWIELD", "ONLY_ONE", "NO_REPAIR", "NO_SALVAGE" ] + "flags": [ "BELTED", "TRADER_AVOID", "WATERPROOF", "STURDY", "NO_UNWIELD", "ONLY_ONE", "NO_REPAIR", "NO_SALVAGE" ], + "armor": [ { "encumbrance": [ 5, 10 ], "coverage": 40, "covers": [ "torso" ] } ] }, { "id": "bonespear", @@ -406,9 +395,13 @@ "price": 3646, "symbol": "o", "color": "white", - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "head", "foot_l", "foot_r", "mouth", "eyes" ], "flags": [ "AURA", "SEMITANGIBLE", "OVERSIZE", "ONLY_ONE", "TRADER_AVOID", "NO_TAKEOFF", "NONCONDUCTIVE" ], - "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "BONUS_DODGE", "add": 2 } ] } ] } + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "BONUS_DODGE", "add": 2 } ] } ] }, + "armor": [ + { + "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "head", "foot_l", "foot_r", "mouth", "eyes" ] + } + ] }, { "id": "acid_res_aura", @@ -420,11 +413,15 @@ "price": 3646, "symbol": "o", "color": "green", - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "head", "foot_l", "foot_r", "mouth", "eyes" ], "flags": [ "AURA", "SEMITANGIBLE", "OVERSIZE", "ONLY_ONE", "TRADER_AVOID", "NO_TAKEOFF", "NONCONDUCTIVE" ], "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "ARMOR_ACID", "multiply": -0.25 } ] } ] - } + }, + "armor": [ + { + "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "head", "foot_l", "foot_r", "mouth", "eyes" ] + } + ] }, { "id": "acid_res_aura_greater", @@ -436,11 +433,15 @@ "price": 3646, "symbol": "o", "color": "green", - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "head", "foot_l", "foot_r", "mouth", "eyes" ], "flags": [ "AURA", "SEMITANGIBLE", "OVERSIZE", "ONLY_ONE", "TRADER_AVOID", "NO_TAKEOFF", "NONCONDUCTIVE" ], "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "ARMOR_ACID", "multiply": -0.6 } ] } ] - } + }, + "armor": [ + { + "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "head", "foot_l", "foot_r", "mouth", "eyes" ] + } + ] }, { "id": "armor_frost", @@ -453,13 +454,17 @@ "material": [ "steel" ], "symbol": "[", "color": "light_gray", - "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 10, "warmth": 0, "material_thickness": 2, "environmental_protection": 2, - "flags": [ "ONLY_ONE", "OVERSIZE", "PERSONAL", "STURDY" ] + "flags": [ "ONLY_ONE", "OVERSIZE", "PERSONAL", "STURDY" ], + "armor": [ + { + "encumbrance": 10, + "coverage": 100, + "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "aura_stoneskin", @@ -472,13 +477,17 @@ "material": [ "stone" ], "symbol": "[", "color": "light_gray", - "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 20, "warmth": 5, "material_thickness": 2, "environmental_protection": 2, - "flags": [ "ONLY_ONE", "OVERSIZE", "PERSONAL", "STURDY" ] + "flags": [ "ONLY_ONE", "OVERSIZE", "PERSONAL", "STURDY" ], + "armor": [ + { + "encumbrance": 20, + "coverage": 100, + "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "burn_scar", @@ -502,10 +511,9 @@ "volume": "1 ml", "symbol": "~", "color": "light_red", - "covers": [ "eyes", "mouth" ], - "encumbrance": 18, "relic_data": { "passive_effects": [ { "id": "ench_overcharge_burn_scar" } ] }, - "flags": [ "NO_TAKEOFF", "TRADER_AVOID", "BLIND" ] + "flags": [ "NO_TAKEOFF", "TRADER_AVOID", "BLIND" ], + "armor": [ { "encumbrance": 18, "covers": [ "eyes", "mouth" ] } ] }, { "id": "protect_env", @@ -517,8 +525,12 @@ "symbol": "o", "color": "blue", "environmental_protection": 15, - "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "head", "foot_l", "foot_r", "mouth", "eyes" ], - "flags": [ "AURA", "SEMITANGIBLE", "OVERSIZE", "ONLY_ONE", "TRADER_AVOID", "NO_TAKEOFF", "NONCONDUCTIVE" ] + "flags": [ "AURA", "SEMITANGIBLE", "OVERSIZE", "ONLY_ONE", "TRADER_AVOID", "NO_TAKEOFF", "NONCONDUCTIVE" ], + "armor": [ + { + "covers": [ "leg_l", "leg_r", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "head", "foot_l", "foot_r", "mouth", "eyes" ] + } + ] }, { "id": "thorns_electric", @@ -727,11 +739,8 @@ "weight": "1 g", "volume": "1 ml", "material": [ "steel" ], - "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], "symbol": "o", "color": "green", - "coverage": 100, - "encumbrance": 0, "warmth": 0, "material_thickness": 2, "environmental_protection": 2, @@ -744,7 +753,14 @@ "hit_me_effect": [ { "id": "dragon_shell_retaliation_black", "hit_self": false } ] } ] - } + }, + "armor": [ + { + "encumbrance": 0, + "coverage": 100, + "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "subzero_talons", @@ -775,6 +791,26 @@ "passive_effects": [ { "has": "WIELD", "condition": "ALWAYS", "values": [ { "value": "ITEM_DAMAGE_COLD", "add": 6 } ] } ] } }, + { + "id": "armor_spirit", + "type": "ARMOR", + "category": "armor", + "copy-from": "armor_lightplate", + "name": { "str_sp": "spiritual armor" }, + "description": "A summoned medieval armor. It glows softly and looks sturdy.", + "material": [ "superalloy" ], + "//": "I added a helmet to the summon", + "warmth": 0, + "material_thickness": 4, + "flags": [ "ONLY_ONE", "OVERSIZE", "PERSONAL", "VARSIZE", "STURDY", "NO_REPAIR", "NO_SALVAGE", "LIGHT_2", "TRADER_AVOID" ], + "armor": [ + { + "encumbrance": 5, + "coverage": 100, + "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] + }, { "id": "jar_3l_force", "type": "GENERIC", diff --git a/data/mods/Magiclysm/monsters.json b/data/mods/Magiclysm/monsters.json index 22a7a32203e29..700b4a4cf3395 100644 --- a/data/mods/Magiclysm/monsters.json +++ b/data/mods/Magiclysm/monsters.json @@ -20,7 +20,7 @@ "harvest": "exempt", "fear_triggers": [ "PLAYER_CLOSE" ], "special_attacks": [ [ "DISAPPEAR", 200 ] ], - "death_function": [ "DISAPPEAR" ], + "death_function": { "message": "The %s disappears.", "corpse_type": "NO_CORPSE" }, "flags": [ "FLIES", "NO_BREATHE", "NOT_HALLUCINATION", "HARDTOSHOOT" ] }, { @@ -51,7 +51,7 @@ "vision_night": 30, "material": [ "steel" ], "harvest": "exempt", - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "flags": [ "SEES", "HEARS", "NOHEAD", "HARDTOSHOOT", "FLIES", "PRIORITIZE_TARGETS", "NO_BREATHE", "NOGIB" ] } ] diff --git a/data/mods/Magiclysm/monsters/Ogre.json b/data/mods/Magiclysm/monsters/Ogre.json index 9049eaca0b634..ac6c4f19ba441 100644 --- a/data/mods/Magiclysm/monsters/Ogre.json +++ b/data/mods/Magiclysm/monsters/Ogre.json @@ -25,7 +25,6 @@ "vision_day": 10, "vision_night": 3, "path_settings": { "avoid_traps": true, "avoid_sharp": true }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "WARM", "BASHES", "FILTHY", "PATH_AVOID_DANGER_1", "FIREPROOF" ] } ] diff --git a/data/mods/Magiclysm/monsters/Orcs.json b/data/mods/Magiclysm/monsters/Orcs.json index d01baf6a96df9..a1445b706f866 100644 --- a/data/mods/Magiclysm/monsters/Orcs.json +++ b/data/mods/Magiclysm/monsters/Orcs.json @@ -44,7 +44,6 @@ { "item": "longsword", "prob": 100 } ] }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "WARM", "BASHES", "FILTHY", "PATH_AVOID_DANGER_1", "SWARMS", "GROUP_MORALE" ] }, { diff --git a/data/mods/Magiclysm/monsters/demon_spider.json b/data/mods/Magiclysm/monsters/demon_spider.json index d97b4c2eaa869..caadb61a2b92b 100644 --- a/data/mods/Magiclysm/monsters/demon_spider.json +++ b/data/mods/Magiclysm/monsters/demon_spider.json @@ -55,7 +55,6 @@ "vision_night": 7, "harvest": "demon_spider", "anger_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT", "STALK", "PLAYER_WEAK", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "VENOM", "WEBWALK", "CLIMBS", "HARDTOSHOOT", "PUSH_MON" ] }, { @@ -93,7 +92,6 @@ "harvest": "demon_spider", "special_attacks": [ { "type": "spell", "spell_data": { "id": "burning_hands", "min_level": 4 }, "cooldown": 20 } ], "anger_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT", "STALK", "PLAYER_WEAK", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "VENOM", "WEBWALK", "CLIMBS", "HARDTOSHOOT", "PUSH_MON" ] }, { diff --git a/data/mods/Magiclysm/monsters/dragon.json b/data/mods/Magiclysm/monsters/dragon.json index ff4bbd5c3f7c8..5d61184fe692e 100644 --- a/data/mods/Magiclysm/monsters/dragon.json +++ b/data/mods/Magiclysm/monsters/dragon.json @@ -96,7 +96,6 @@ "vision_night": 20, "path_settings": { "//min_dist": 8, "avoid_traps": true, "avoid_sharp": true }, "harvest": "dragon_black", - "death_function": [ "NORMAL" ], "special_attacks": [ { "type": "bite", "cooldown": 10 }, [ "scratch", 7 ], diff --git a/data/mods/Magiclysm/monsters/forgedwellers.json b/data/mods/Magiclysm/monsters/forgedwellers.json index e61b444f30e5c..8b5bf0fc5da8c 100644 --- a/data/mods/Magiclysm/monsters/forgedwellers.json +++ b/data/mods/Magiclysm/monsters/forgedwellers.json @@ -31,7 +31,7 @@ "path_settings": { "avoid_traps": true, "avoid_sharp": true }, "special_attacks": [ { "type": "spell", "spell_data": { "id": "manatouched_seeker_bolts", "min_level": 5 }, "cooldown": 60 } ], "anger_triggers": [ "FRIEND_ATTACKED", "HURT" ], - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "NO_BREATHE", "PATH_AVOID_DANGER_1", "LOUDMOVES" ] }, { @@ -95,7 +95,6 @@ "armor_fire": 50, "harvest": "demihuman_large_fur", "special_attacks": [ { "type": "spell", "spell_data": { "id": "demon_breath_fire", "min_level": 7 }, "cooldown": 10 }, [ "scratch", 15 ] ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "WARM", "BASHES", "ANIMAL", "PATH_AVOID_DANGER_1", "NO_BREATHE" ] }, { @@ -127,7 +126,6 @@ "harvest": "demihuman", "path_settings": { "avoid_traps": true, "avoid_sharp": true }, "death_drops": { "subtype": "collection", "groups": [ [ "forge_life", 40 ], [ "bedroom", 1 ], [ "dresser", 5 ], [ "ammo", 18 ] ] }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "WARM", "BASHES", "GROUP_BASH", "HUMAN", "PATH_AVOID_DANGER_1" ] }, { diff --git a/data/mods/Magiclysm/monsters/goblin.json b/data/mods/Magiclysm/monsters/goblin.json index fda530b6396f1..f2e29b5e73547 100644 --- a/data/mods/Magiclysm/monsters/goblin.json +++ b/data/mods/Magiclysm/monsters/goblin.json @@ -35,7 +35,6 @@ { "item": "cudgel", "prob": 95 } ] }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "WARM", "BASHES", "FILTHY", "PATH_AVOID_DANGER_1" ] }, { diff --git a/data/mods/Magiclysm/monsters/golems.json b/data/mods/Magiclysm/monsters/golems.json index b0c35a8cdbbb4..dd6f59ac548ff 100644 --- a/data/mods/Magiclysm/monsters/golems.json +++ b/data/mods/Magiclysm/monsters/golems.json @@ -27,7 +27,7 @@ "dodge": 0, "vision_day": 40, "vision_night": 40, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "NO_BREATHE", "ACIDPROOF", "LOUDMOVES" ] }, { @@ -56,7 +56,7 @@ "vision_day": 30, "vision_night": 30, "regenerates": 4, - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "HEARS", "NO_BREATHE", "LOUDMOVES" ] }, { @@ -88,7 +88,7 @@ "vision_day": 40, "vision_night": 40, "special_attacks": [ { "type": "spell", "spell_data": { "id": "rocket_punch", "min_level": 5 }, "cooldown": 10 } ], - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "NO_BREATHE", "ACIDPROOF", "LOUDMOVES" ] }, { @@ -120,7 +120,7 @@ "vision_day": 40, "vision_night": 40, "special_attacks": [ { "type": "spell", "spell_data": { "id": "gas_attack", "min_level": 5 }, "cooldown": 60 } ], - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "flags": [ "SEES", "NO_BREATHE", "ACIDPROOF", "LOUDMOVES" ] } ] diff --git a/data/mods/Magiclysm/monsters/holiday_magiclysm.json b/data/mods/Magiclysm/monsters/holiday_magiclysm.json index d635d8aca79b9..7fe369ad54232 100644 --- a/data/mods/Magiclysm/monsters/holiday_magiclysm.json +++ b/data/mods/Magiclysm/monsters/holiday_magiclysm.json @@ -27,7 +27,6 @@ "vision_night": 12, "path_settings": { "max_dist": 21, "avoid_traps": true, "avoid_sharp": true }, "harvest": "mammal_fur", - "death_function": [ "NORMAL" ], "reproduction": { "baby_monster": "mon_yulecat_cub", "baby_count": 6, "baby_timer": 234 }, "baby_flags": [ "WINTER" ], "special_attacks": [ { "type": "bite", "cooldown": 10 }, [ "GRAB", 8 ], [ "scratch", 6 ] ], @@ -81,7 +80,6 @@ "armor_bullet": 3, "harvest": "demihuman", "path_settings": { "avoid_traps": true, "avoid_sharp": true }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "PATH_AVOID_DANGER_1", "WARM" ] }, { @@ -106,7 +104,6 @@ "dodge": 6, "harvest": "demihuman", "path_settings": { "avoid_traps": true, "avoid_sharp": true }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "PATH_AVOID_DANGER_1", "WARM" ] } ] diff --git a/data/mods/Magiclysm/monsters/lizardfolk.json b/data/mods/Magiclysm/monsters/lizardfolk.json index 5efa022321446..2aeea3de917d7 100644 --- a/data/mods/Magiclysm/monsters/lizardfolk.json +++ b/data/mods/Magiclysm/monsters/lizardfolk.json @@ -28,7 +28,6 @@ "armor_bullet": 10, "armor_stab": 6, "harvest": "lizardfolk", - "death_function": [ "NORMAL" ], "death_drops": [ { "item": "lizardfolk_club", "prob": 30 }, { "item": "loincloth", "prob": 40 }, diff --git a/data/mods/Magiclysm/monsters/monsters.json b/data/mods/Magiclysm/monsters/monsters.json index dff670b0269d5..f5cdc0d37e2c6 100644 --- a/data/mods/Magiclysm/monsters/monsters.json +++ b/data/mods/Magiclysm/monsters/monsters.json @@ -29,7 +29,6 @@ "harvest": "owlbear", "reproduction": { "baby_egg": "egg_owlbear_rock", "baby_count": 1, "baby_timer": 20 }, "baby_flags": [ "SPRING", "SUMMER", "AUTUMN", "WINTER" ], - "death_function": [ "NORMAL" ], "special_attacks": [ { "type": "bite", "cooldown": 10 }, [ "GRAB", 7 ], [ "scratch", 7 ] ], "flags": [ "SEES", "HEARS", "SMELLS", "KEENNOSE", "PATH_AVOID_DANGER_1", "WARM", "GRABS", "SWARMS" ] }, @@ -60,7 +59,7 @@ "armor_acid": 15, "harvest": "exempt", "path_settings": { "avoid_traps": true, "avoid_sharp": true }, - "death_function": [ "MELT" ], + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, "special_attacks": [ { "type": "spell", @@ -98,7 +97,6 @@ "vision_night": 30, "vision_day": 30, "path_settings": { "max_dist": 35 }, - "death_function": [ "NORMAL" ], "anger_triggers": [ "HURT", "PLAYER_CLOSE", "PLAYER_WEAK" ], "special_attacks": [ { @@ -161,7 +159,6 @@ "armor_bullet": 24, "harvest": "bulette", "anger_triggers": [ "SOUND" ], - "death_function": [ "NORMAL" ], "special_attacks": [ { "id": "scratch", @@ -205,7 +202,7 @@ "harvest": "exempt", "death_drops": "wisp_death", "anger_triggers": [ "PLAYER_CLOSE" ], - "death_function": [ "DISINTEGRATE" ], + "death_function": { "message": "The %s disintegrates!", "corpse_type": "NO_CORPSE" }, "flags": [ "SEES", "HEARS", @@ -246,7 +243,6 @@ "vision_day": 40, "vision_night": 3, "harvest": "human_large_leather", - "death_function": [ "NORMAL" ], "special_attacks": [ { "type": "bite", "cooldown": 30 }, [ "GRAB", 15 ], [ "scratch", 15 ], [ "slam", 10 ], [ "SMASH", 30 ] ], "regenerates": 1, "flags": [ "SEES", "SMELLS", "KEENNOSE", "PATH_AVOID_DANGER_1", "WARM", "GRABS", "FLAMMABLE" ] @@ -278,7 +274,6 @@ "harvest": "stirge", "special_attacks": [ { "type": "spell", "spell_data": { "id": "blood_suck", "min_level": 3 }, "cooldown": 3 } ], "anger_triggers": [ "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "FLIES", "HIT_AND_RUN", "PATH_AVOID_FIRE", "SWARMS" ] }, { @@ -305,7 +300,6 @@ "harvest": "shrieker", "special_attacks": [ [ "SHRIEK_ALERT", 1 ] ], "anger_triggers": [ "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "NOHEAD", "POISON", "IMMOBILE", "NO_BREATHE", "PACIFIST" ] }, { @@ -327,7 +321,6 @@ "harvest": "mammal_tiny", "special_attacks": [ { "type": "leap", "cooldown": 10, "max_range": 5 } ], "fear_triggers": [ "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "SWIMS" ] }, { @@ -357,7 +350,6 @@ "vision_night": 40, "harvest": "lemure", "anger_triggers": [ "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "regenerates": 1, "flags": [ "SEES", "SMELLS", "HEARS", "STUMBLES", "PATH_AVOID_FIRE", "REVIVES" ] }, @@ -392,7 +384,6 @@ "special_attacks": [ { "type": "spell", "spell_data": { "id": "cone_cold", "min_level": 4 }, "cooldown": 25 } ], "anger_triggers": [ "STALK", "FRIEND_ATTACKED", "FRIEND_DIED", "PLAYER_WEAK", "PLAYER_CLOSE" ], "placate_triggers": [ "MEAT" ], - "death_function": [ "NORMAL" ], "zombify_into": "mon_zolf", "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "KEENNOSE", "COLDPROOF" ] }, @@ -426,7 +417,6 @@ "harvest": "demihuman_fur", "path_settings": { "max_dist": 10 }, "anger_triggers": [ "STALK", "FRIEND_ATTACKED", "FRIEND_DIED", "PLAYER_WEAK", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "zombify_into": "mon_were_zolf", "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "KEENNOSE" ] } diff --git a/data/mods/Magiclysm/monsters/zombified_monsters.json b/data/mods/Magiclysm/monsters/zombified_monsters.json index f48845de2c44a..c3b1583b25673 100644 --- a/data/mods/Magiclysm/monsters/zombified_monsters.json +++ b/data/mods/Magiclysm/monsters/zombified_monsters.json @@ -29,7 +29,6 @@ "harvest": "zombie_fur", "special_attacks": [ [ "HOWL", 10 ] ], "fear_triggers": [ "FIRE" ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 28, "into_group": "GROUP_ZOLF_UPGRADE" }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "KEENNOSE", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ] }, @@ -61,7 +60,6 @@ "armor_bullet": 23, "vision_night": 12, "harvest": "orc", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "GROUP_BASH", "POISON", "NO_BREATHE", "REVIVES", "FILTHY" ] } ] diff --git a/data/mods/Magiclysm/recipes/mods.json b/data/mods/Magiclysm/recipes/mods.json index b38d47639e828..8d188db6fdd8c 100644 --- a/data/mods/Magiclysm/recipes/mods.json +++ b/data/mods/Magiclysm/recipes/mods.json @@ -25,12 +25,9 @@ "skills_required": [ [ "spellcraft", 7 ], [ "gun", 4 ] ], "time": "3 h", "book_learn": [ [ "techno_basic", 5 ] ], - "using": [ [ "soldering_standard", 20 ], [ "surface_heat", 20 ] ], + "using": [ [ "soldering_standard", 20 ], [ "surface_heat", 20 ], [ "plastic_molding", 2 ] ], "qualities": [ { "id": "SCREW_FINE", "level": 1 }, { "id": "CHEM", "level": 2 }, { "id": "MANA_INFUSE", "level": 1 } ], - "tools": [ - [ [ "mold_plastic", -1 ] ], - [ [ "rune_alchemist", -1 ], [ "rune_technomancer", -1 ], [ "rune_technomancer_weapon", -1 ] ] - ], + "tools": [ [ [ "rune_alchemist", -1 ], [ "rune_technomancer", -1 ], [ "rune_technomancer_weapon", -1 ] ] ], "components": [ [ [ "plastic_chunk", 2 ] ], [ [ "amplifier", 1 ] ], diff --git a/data/mods/Magiclysm/scenarios.json b/data/mods/Magiclysm/scenarios.json index cb7966e68cf34..a76016ef8e5ef 100644 --- a/data/mods/Magiclysm/scenarios.json +++ b/data/mods/Magiclysm/scenarios.json @@ -3,7 +3,8 @@ "type": "scenario", "id": "lost_faith", "name": "Lost Faith", - "flags": [ "SUR_START", "LONE_START" ], + "surround_groups": [ [ "GROUP_BLACK_ROAD", 70.0 ] ], + "flags": [ "LONE_START" ], "points": 2, "description": "You've been preaching your faith for a long time, but the recent events have begun to make you doubt it. Wandering in your temple, you just found books that may restore your faith or shatter it completely.", "start_name": "Church", diff --git a/data/mods/Magiclysm/traits/attunements.json b/data/mods/Magiclysm/traits/attunements.json index 0cc9497ed6dc9..7ff06b3d9ffbf 100644 --- a/data/mods/Magiclysm/traits/attunements.json +++ b/data/mods/Magiclysm/traits/attunements.json @@ -381,7 +381,6 @@ "description": "Force = Mass x Acceleration. This is the typical thing that people think of nowadays when the word is used, but Force Mages have a different meaning, coming from traditional roots: untyped magical damage appears to be a ghostly \"force.\" This might be the effect of the attunement, but the cause is even more intriguing: they appear to turn Newton's Third Law on its head. Magical scholars of the 21st century have theorized that this isn't really the case; instead of the opposite reaction happening on this plane of existence, a Force Mage uses the Aetherium's alternate Laws to rebound the force back upon itself, effectively doubling the force in the same direction instead. However this ability comes with limitations, as the Force Mage can only do this for melee damage.", "prereqs": [ "MAGUS", "STORMSHAPER" ], "spells_learned": [ [ "force_blade", 5 ], [ "force_magical_armor", 5 ] ], - "speed_modifier": 1.2, "cancels": [ "ARTIFICER", "AURA_MAGE", @@ -410,7 +409,8 @@ "SOULFIRE", "WITHER_MAGE" ], - "flags": [ "ATTUNEMENT" ] + "flags": [ "ATTUNEMENT" ], + "enchantments": [ { "condition": "ALWAYS", "values": [ { "value": "SPEED", "multiply": 0.2 } ] } ] }, { "id": "GAIAS_CHOSEN", diff --git a/data/mods/Magiclysm/worldgen/orc_village.json b/data/mods/Magiclysm/worldgen/orc_village.json index 15384b9b4182d..b09b447f0ea00 100644 --- a/data/mods/Magiclysm/worldgen/orc_village.json +++ b/data/mods/Magiclysm/worldgen/orc_village.json @@ -57,7 +57,7 @@ { "type": "overmap_terrain", "id": [ "orc_village" ], - "name": "orc_village", + "name": "orc village", "sym": "o", "color": "green", "see_cost": 6, diff --git a/data/mods/My_Sweet_Cataclysm/sweet_monsters.json b/data/mods/My_Sweet_Cataclysm/sweet_monsters.json index 5d5e1d9266c71..0ce7abd3e2475 100644 --- a/data/mods/My_Sweet_Cataclysm/sweet_monsters.json +++ b/data/mods/My_Sweet_Cataclysm/sweet_monsters.json @@ -15,7 +15,7 @@ "material": [ "junk" ], "symbol": "%", "color": "magenta", - "death_function": [ "BROKEN" ], + "death_function": { "corpse_type": "BROKEN" }, "placate_triggers": [ "HURT" ], "flags": [ "SEES", "HEARS", "GOODHEARING", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "HIT_AND_RUN" ] }, @@ -42,7 +42,6 @@ "vision_day": 30, "vision_night": 3, "harvest": "marshmallow_boy", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 14, "into": "mon_marshmallow_guy" }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "NO_BREATHE" ] }, @@ -67,7 +66,6 @@ "melee_dice_sides": 3, "vision_night": 3, "harvest": "marshmallow_boy", - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 14, "into": "mon_marshmallow_buff" }, "reproduction": { "baby_egg": "marshmallow", "baby_count": 5, "baby_timer": 14 }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "GROUP_BASH", "NO_BREATHE", "PUSH_MON" ] @@ -98,7 +96,6 @@ "vision_night": 4, "harvest": "marshmallow_boy", "special_attacks": [ [ "SMASH", 30 ] ], - "death_function": [ "NORMAL" ], "upgrades": { "half_life": 21, "into": "mon_marshmallow_goliath" }, "reproduction": { "baby_egg": "marshmallow", "baby_count": 7, "baby_timer": 12 }, "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "GROUP_BASH", "NO_BREATHE", "PUSH_MON", "PUSH_VEH" ] @@ -130,7 +127,6 @@ "vision_night": 4, "harvest": "marshmallow_boy", "special_attacks": [ [ "SMASH", 20 ] ], - "death_function": [ "NORMAL" ], "reproduction": { "baby_egg": "marshmallow", "baby_count": 10, "baby_timer": 10 }, "flags": [ "SEES", @@ -249,7 +245,6 @@ "vision_night": 10, "path_settings": { "max_dist": 10 }, "anger_triggers": [ "HURT" ], - "death_function": [ "NORMAL" ], "harvest": "gummy_bear", "reproduction": { "baby_egg": "candy3", "baby_count": 1, "baby_timer": 10 }, "flags": [ "SEES", "HEARS", "SMELLS", "PATH_AVOID_DANGER_1", "WARM", "BASHES", "ATTACKMON", "NO_BREATHE" ] @@ -298,7 +293,6 @@ "harvest": "cracker_boy", "special_attacks": [ [ "scratch", 10 ] ], "upgrades": { "half_life": 15, "into": "mon_cracker" }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "NO_BREATHE" ] }, { @@ -330,7 +324,6 @@ "harvest": "cracker_boy", "special_attacks": [ [ "scratch", 10 ] ], "reproduction": { "baby_egg": "grahmcrackers", "baby_count": 3, "baby_timer": 20 }, - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "NO_BREATHE" ] }, { @@ -373,7 +366,6 @@ "path_settings": { "max_dist": 10 }, "anger_triggers": [ "PLAYER_WEAK" ], "fear_triggers": [ "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "PATH_AVOID_DANGER_1" ], "reproduction": { "baby_egg": "cookies", "baby_count": 10, "baby_timer": 5 } }, @@ -448,7 +440,6 @@ "vision_night": 5, "harvest": "gum_spider", "emit_fields": [ { "emit_id": "emit_gum_web", "delay": "30 m" } ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "CLIMBS", "PATH_AVOID_FIRE", "PATH_AVOID_FALL" ], "reproduction": { "baby_egg": "gum", "baby_count": 10, "baby_timer": 5 } }, @@ -481,7 +472,6 @@ "vision_night": 5, "harvest": "caff_gum_spider", "anger_triggers": [ "STALK", "PLAYER_WEAK", "HURT", "PLAYER_CLOSE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "CLIMBS", "PATH_AVOID_FIRE", "PATH_AVOID_FALL" ] }, { @@ -529,7 +519,6 @@ "vision_day": 23, "vision_night": 50, "harvest": "licorice_snake", - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES" ] }, { diff --git a/data/mods/National_Guard_Camp/military.json b/data/mods/National_Guard_Camp/military.json index 4dc09ad18304c..3e48bbe17e635 100644 --- a/data/mods/National_Guard_Camp/military.json +++ b/data/mods/National_Guard_Camp/military.json @@ -36,7 +36,7 @@ } ], "death_drops": { "groups": [ [ "wraitheon_infantry", 30 ] ] }, - "death_function": [ "DISINTEGRATE" ], + "death_function": { "message": "The %s disintegrates!", "corpse_type": "NO_CORPSE" }, "flags": [ "HEARS", "SEES", "NOHEAD", "ELECTRONIC", "NO_BREATHE", "PATH_AVOID_DANGER_2", "PRIORITIZE_TARGETS" ] }, { diff --git a/data/mods/TEST_DATA/items.json b/data/mods/TEST_DATA/items.json index bd4789d06d0a6..69bcc5bc5a2e1 100644 --- a/data/mods/TEST_DATA/items.json +++ b/data/mods/TEST_DATA/items.json @@ -30,14 +30,13 @@ "material": [ "copper" ], "symbol": "[", "color": "light_red", - "covers": [ "hand_l", "hand_r" ], "sided": true, - "coverage": 0, "warmth": 0, "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "FANCY", "ONLY_ONE", "SKINTIGHT" ], "name": { "str": "ring of strength +1", "str_pl": "rings of strength +1" }, "description": "A copper ring that makes you a little stronger when you wear it.", - "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "STRENGTH", "add": 1 } ] } ] } + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "STRENGTH", "add": 1 } ] } ] }, + "armor": [ { "coverage": 0, "covers": [ "hand_l", "hand_r" ] } ] }, { "id": "test_rag", @@ -95,6 +94,60 @@ "price": 7500, "price_postapoc": 300 }, + { + "type": "TOOL", + "id": "test_shears", + "name": { "str_sp": "shears" }, + "description": "This is a set of shears designed to obtain wool from sheep.", + "weight": "820 g", + "volume": "750 ml", + "price": 500, + "price_postapoc": 250, + "to_hit": -1, + "cutting": 3, + "material": [ "steel", "plastic" ], + "symbol": ";", + "color": "light_gray", + "qualities": [ [ "SHEAR", 1 ] ], + "flags": [ "STAB" ] + }, + { + "type": "TOOL", + "id": "test_shears_off", + "copy-from": "test_shears", + "name": { "str": "electric shears (off)" }, + "description": "This is a set of electric shears designed to obtain wool from sheep.", + "qualities": [ ], + "use_action": { + "type": "transform", + "msg": "Your %s activates.", + "target": "test_shears_on", + "active": true, + "need_charges": 1, + "need_charges_msg": "The shears batteries are dead." + }, + "pocket_data": [ + { + "pocket_type": "MAGAZINE_WELL", + "holster": true, + "rigid": true, + "max_contains_volume": "20 L", + "max_contains_weight": "20 kg", + "item_restriction": [ "test_battery_disposable" ] + } + ] + }, + { + "type": "TOOL", + "id": "test_shears_on", + "copy-from": "test_shears_off", + "name": { "str": "electric shears (on)" }, + "description": "This is a set of electric shears designed to obtain wool from sheep. These shears have been turned on.", + "power_draw": 10000, + "revert_to": "test_shears_off", + "use_action": { "type": "transform", "msg": "Your %s deactivates.", "target": "test_shears_off" }, + "qualities": [ [ "SHEAR", 3 ] ] + }, { "id": "test_tool_belt", "type": "ARMOR", @@ -109,9 +162,6 @@ "symbol": "[", "looks_like": "holster", "color": "brown", - "covers": [ "torso" ], - "coverage": 20, - "encumbrance": 2, "material_thickness": 2, "pocket_data": [ { @@ -152,7 +202,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Store tool or blade", "holster_msg": "You put your %1$s in your %2$s" }, - "flags": [ "WAIST", "NO_QUICKDRAW", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "NO_QUICKDRAW", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 2, "coverage": 20, "covers": [ "torso" ] } ] }, { "id": "test_utility_belt", @@ -168,9 +219,6 @@ "symbol": "[", "looks_like": "holster", "color": "yellow", - "covers": [ "TORSO" ], - "coverage": 30, - "encumbrance": 5, "material_thickness": 4, "pocket_data": [ { @@ -239,7 +287,8 @@ } ], "use_action": { "type": "holster", "holster_prompt": "Store tool or blade", "holster_msg": "You put your %1$s in your %2$s" }, - "flags": [ "WAIST", "NO_QUICKDRAW", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "NO_QUICKDRAW", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 5, "coverage": 30, "covers": [ "TORSO" ] } ] }, { "type": "GENERIC", @@ -490,11 +539,10 @@ "symbol": "[", "looks_like": "socks_wool", "color": "white", - "covers": [ "foot_l", "foot_r" ], - "coverage": 100, "warmth": 5, "material_thickness": 1, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 100, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "test_croc_socks", @@ -508,11 +556,10 @@ "symbol": "[", "looks_like": "socks_wool", "color": "green", - "covers": [ "foot_l", "foot_r" ], - "coverage": 50, "warmth": 2, "material_thickness": 1, - "flags": [ "VARSIZE", "SKINTIGHT" ] + "flags": [ "VARSIZE", "SKINTIGHT" ], + "armor": [ { "coverage": 50, "covers": [ "foot_l", "foot_r" ] } ] }, { "id": "test_longshirt", @@ -526,12 +573,10 @@ "symbol": "[", "looks_like": "dress_shirt", "color": "blue", - "covers": [ "torso", "arm_l", "arm_r" ], - "coverage": 90, - "encumbrance": 3, "warmth": 5, "material_thickness": 0.2, - "flags": [ "VARSIZE" ] + "flags": [ "VARSIZE" ], + "armor": [ { "encumbrance": 3, "coverage": 90, "covers": [ "torso", "arm_l", "arm_r" ] } ] }, { "id": "test_ear_plugs", @@ -544,13 +589,13 @@ "material": [ "plastic" ], "symbol": ";", "color": "light_gray", - "coverage": 1, "material_thickness": 1, - "flags": [ "DEAF", "OVERSIZE", "POWERARMOR_COMPATIBLE" ] + "flags": [ "DEAF", "OVERSIZE", "POWERARMOR_COMPATIBLE" ], + "armor": [ { "coverage": 1 } ] }, { "id": "test_hazmat_suit", - "repairs_like": "aep_suit", + "repairs_like": "fsurvivor_suit", "type": "ARMOR", "name": "TEST hazmat suit", "description": "An impermeable whole-body garment worn as protection against hazardous materials. Though very restrictive and fragile, wearing it will provide complete protection against ambient radiation. It requires a separate gas mask for full protection.", @@ -561,13 +606,17 @@ "symbol": "[", "looks_like": "beekeeping_suit", "color": "yellow", - "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 37, "warmth": 40, "material_thickness": 2, "environmental_protection": 20, - "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "GAS_PROOF", "RAD_PROOF", "ELECTRIC_IMMUNE", "OUTER" ] + "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "GAS_PROOF", "RAD_PROOF", "ELECTRIC_IMMUNE", "OUTER" ], + "armor": [ + { + "encumbrance": 37, + "coverage": 100, + "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "test_zentai", @@ -581,11 +630,15 @@ "material": [ "lycra" ], "symbol": "[", "color": "dark_gray", - "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, "warmth": 20, "material_thickness": 1, - "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ] + "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ], + "armor": [ + { + "coverage": 100, + "covers": [ "head", "mouth", "eyes", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "test_sunglasses", @@ -602,13 +655,11 @@ "symbol": "[", "looks_like": "glasses_eye", "color": "dark_gray", - "covers": [ "eyes" ], - "coverage": 85, - "encumbrance": 1, "material_thickness": 1, "environmental_protection": 1, "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "WATER_FRIENDLY", "SUN_GLASSES", "FRAGILE" ] + "flags": [ "WATER_FRIENDLY", "SUN_GLASSES", "FRAGILE" ], + "armor": [ { "encumbrance": 1, "coverage": 85, "covers": [ "eyes" ] } ] }, { "id": "test_umbrella", @@ -808,7 +859,7 @@ "material": [ "leather" ], "symbol": ")", "color": "brown", - "armor_data": { "covers": [ "leg_l", "leg_r" ], "sided": true, "coverage": 5, "material_thickness": 2 }, + "armor_data": { "sided": true, "material_thickness": 2, "armor": [ { "coverage": 5, "covers": [ "leg_l", "leg_r" ] } ] }, "pocket_data": [ { "max_item_volume": "15 ml", @@ -887,14 +938,11 @@ "symbol": "[", "looks_like": "ragpouch", "color": "green", - "covers": [ "torso" ], - "coverage": 30, - "encumbrance": 2, - "max_encumbrance": 15, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "15 L", "max_contains_weight": "30 kg", "moves": 300 } ], "warmth": 6, "material_thickness": 2, - "flags": [ "BELTED" ] + "flags": [ "BELTED" ], + "armor": [ { "encumbrance": [ 2, 15 ], "coverage": 30, "covers": [ "torso" ] } ] }, { "id": "test_briefcase", @@ -911,10 +959,7 @@ "symbol": "[", "looks_like": "plastic_shopping_bag", "color": "light_gray", - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], "sided": true, - "coverage": 10, - "encumbrance": 30, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -925,7 +970,8 @@ } ], "material_thickness": 2, - "flags": [ "FANCY", "OVERSIZE", "BELTED", "RESTRICT_HANDS", "WATER_FRIENDLY" ] + "flags": [ "FANCY", "OVERSIZE", "BELTED", "RESTRICT_HANDS", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 30, "coverage": 10, "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ] } ] }, { "id": "test_quiver", @@ -941,13 +987,11 @@ "symbol": "[", "looks_like": "bscabbard", "color": "brown", - "covers": [ "leg_l", "leg_r" ], "sided": true, - "coverage": 10, - "encumbrance": 3, "material_thickness": 1, "pocket_data": [ { "ammo_restriction": { "arrow": 20, "bolt": 20 }, "moves": 20 } ], - "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ] + "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ], + "armor": [ { "encumbrance": 3, "coverage": 10, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "test_arrow_wood", @@ -1044,6 +1088,41 @@ "price": 7500, "price_postapoc": 300 }, + { + "id": "test_bullwhip", + "type": "GENERIC", + "symbol": "/", + "color": "brown", + "name": { "str": "TEST bullwhip" }, + "description": "A long strip of braided leather with a handle on one end. Originally developed to settle disagreements with cattle, it's better used now for flaying the rotten flesh off of walking corpses. Great for when a problem comes along.", + "weight": "3460 g", + "volume": "2 L", + "price": 3500, + "price_postapoc": 500, + "material": [ "leather" ], + "flags": [ "REACH_ATTACK", "REACH3", "WHIP" ], + "cutting": 3, + "category": "weapons" + }, + { + "id": "test_glaive", + "type": "GENERIC", + "symbol": "/", + "color": "light_gray", + "name": { "str": "TEST glaive" }, + "description": "A sturdy polearm with a sizable, single-edged blade on the end.", + "price": 50000, + "material": [ "steel", "wood" ], + "qualities": [ [ "CUT", 1 ], [ "BUTCHER", -28 ] ], + "flags": [ "DURABLE_MELEE", "REACH_ATTACK", "NONCONDUCTIVE", "POLEARM", "SHEATH_SPEAR", "ALWAYS_TWOHAND" ], + "techniques": [ "WIDE", "WBLOCK_1" ], + "weight": "2100 g", + "volume": "2500 ml", + "longest_side": "180 cm", + "bashing": 17, + "cutting": 40, + "price_postapoc": 8000 + }, { "id": "test_glock", "type": "GUN", @@ -1432,9 +1511,6 @@ "symbol": "[", "looks_like": "depowered_armor", "color": "light_gray", - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "coverage": 100, - "encumbrance": 50, "pocket_data": [ { "pocket_type": "CONTAINER", @@ -1449,7 +1525,14 @@ "material_thickness": 14, "environmental_protection": 16, "use_action": { "type": "transform", "msg": "The %s engages.", "target": "test_power_armor_on", "active": true }, - "flags": [ "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE" ] + "flags": [ "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE" ], + "armor": [ + { + "encumbrance": 50, + "coverage": 100, + "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + } + ] }, { "id": "test_power_armor_on", @@ -1462,8 +1545,7 @@ "flags": [ "USE_UPS", "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE", "TRADER_AVOID", "CLIMATE_CONTROL" ], "power_draw": 4000000, "revert_to": "test_power_armor", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "test_power_armor" }, - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] + "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "test_power_armor" } }, { "id": "test_meower_armor", @@ -1552,7 +1634,7 @@ "symbol": "[", "looks_like": "touring_suit", "color": "dark_gray", - "armor_portion_data": [ { "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 12, 25 ] } ], + "armor": [ { "covers": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r" ], "coverage": 95, "encumbrance": [ 12, 25 ] } ], "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "1 L", "max_contains_weight": "3 kg", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "1 L", "max_contains_weight": "3 kg", "moves": 80 }, @@ -1579,10 +1661,6 @@ "symbol": "[", "looks_like": "pants", "color": "brown", - "covers": [ "leg_l", "leg_r" ], - "coverage": 95, - "encumbrance": 16, - "max_encumbrance": 20, "pocket_data": [ { "pocket_type": "CONTAINER", "max_contains_volume": "350 ml", "max_contains_weight": "1 kg", "moves": 80 }, { "pocket_type": "CONTAINER", "max_contains_volume": "350 ml", "max_contains_weight": "1 kg", "moves": 80 }, @@ -1593,7 +1671,8 @@ "material_thickness": 3, "valid_mods": [ "steel_padded" ], "environmental_protection": 3, - "flags": [ "VARSIZE", "POCKETS" ] + "flags": [ "VARSIZE", "POCKETS" ], + "armor": [ { "encumbrance": [ 16, 20 ], "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ] }, { "id": "test_pants_faux_fur", @@ -1602,7 +1681,6 @@ "name": { "str_sp": "faux fur pants" }, "description": "A pair of long cotton pants lined with warm imitation fur.", "material": [ "faux_fur", "cotton" ], - "covers": [ "leg_l", "leg_r" ], "warmth": 70 }, { @@ -1612,7 +1690,7 @@ "name": { "str_sp": "faux fur pants suit test thing" }, "description": "A TEST OBJECT SHOULD NOT BE IN GAME", "material": [ "faux_fur", "cotton" ], - "armor_portion_data": [ + "armor": [ { "covers": [ "torso", "leg_r", "arm_r" ], "coverage": 100, "encumbrance": [ 10, 25 ] }, { "covers": [ "arm_l", "leg_l", "head" ], "coverage": 50, "encumbrance": 5 } ], @@ -1665,7 +1743,7 @@ "sealed_data": { "spoil_multiplier": 0.0 } } ], - "armor_data": { "covers": [ "torso" ], "coverage": 10, "encumbrance": 4, "material_thickness": 2 }, + "armor_data": { "material_thickness": 2, "armor": [ { "encumbrance": 4, "coverage": 10, "covers": [ "torso" ] } ] }, "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ] }, { @@ -1723,7 +1801,7 @@ "sealed_data": { "spoil_multiplier": 0.0 } } ], - "armor_data": { "covers": [ "torso" ], "coverage": 10, "encumbrance": 4, "material_thickness": 2 }, + "armor_data": { "material_thickness": 2, "armor": [ { "encumbrance": 4, "coverage": 10, "covers": [ "torso" ] } ] }, "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ] }, { @@ -1760,7 +1838,7 @@ "item_restriction": [ "test_watertight_open_sealed_multipocket_container_2x250ml", "test_solid_1ml" ] } ], - "armor_data": { "covers": [ "torso" ], "coverage": 10, "encumbrance": 4, "material_thickness": 2 }, + "armor_data": { "material_thickness": 2, "armor": [ { "encumbrance": 4, "coverage": 10, "covers": [ "torso" ] } ] }, "flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ] }, { @@ -1784,7 +1862,7 @@ ] } ], - "armor_data": { "covers": [ "torso" ], "coverage": 10, "encumbrance": 4, "material_thickness": 2 }, + "armor_data": { "material_thickness": 2, "armor": [ { "encumbrance": 4, "coverage": 10, "covers": [ "torso" ] } ] }, "flags": [ "BELTED" ] }, { diff --git a/data/mods/TEST_DATA/monsters.json b/data/mods/TEST_DATA/monsters.json new file mode 100644 index 0000000000000..6db3d5787cc82 --- /dev/null +++ b/data/mods/TEST_DATA/monsters.json @@ -0,0 +1,30 @@ +[ + { + "type": "MONSTER", + "id": "mon_test_non_shearable", + "name": { "str_sp": "non shearable monster" }, + "description": "An 8-legged beast of rugged greenish skin.", + "default_faction": "herbivore", + "material": [ "flesh" ], + "symbol": "S", + "volume": "81500 ml", + "weight": "81500 g", + "hp": 100, + "speed": 50, + "flags": [ "SEES", "HEARS", "SMELLS", "ANIMAL", "PATH_AVOID_DANGER_1", "WARM", "CATTLEFODDER", "PET_WONT_FOLLOW" ] + }, + { + "type": "MONSTER", + "id": "mon_test_shearable", + "copy-from": "mon_test_non_shearable", + "name": { "str_sp": "shearable monster" }, + "description": "An 8-legged beast of a surprisingly comfy sanguine fur.", + "//": "A random assortment of items to test shearing", + "shearing": [ + { "result": "test_rock", "amount": 30 }, + { "result": "test_2x4", "amount": [ 5, 10 ] }, + { "result": "test_rag", "ratio_mass": 0.5 }, + { "result": "test_pipe", "ratio_volume": 0.3 } + ] + } +] diff --git a/data/mods/aftershock_exoplanet/region_settings.json b/data/mods/aftershock_exoplanet/region_settings.json index 615b3cd483879..9e5ab9838a179 100644 --- a/data/mods/aftershock_exoplanet/region_settings.json +++ b/data/mods/aftershock_exoplanet/region_settings.json @@ -8,7 +8,29 @@ "clear_whitelist": false, "whitelist": [ ] }, - "default_oter": "field", + "default_oter": [ + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "field", + "solid_earth", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock" + ], "default_groundcover": [ [ "t_region_groundcover", 1 ] ], "river_scale": 0, "city": { @@ -16,7 +38,7 @@ "shop_sigma": 80, "park_radius": 20, "park_sigma": 80, - "houses": { "afs_city_ruinfield": 400, "afs_formless_ruins_dynamic": 600 }, + "houses": { "afs_city_ruinfield": 400, "afs_formless_ruins_dynamic": 600, "afs_house_1": 300 }, "parks": { "afs_city_ruinfield": 100 }, "shops": { "afs_augmentation_clinic_1": 400, "afs_astrobiology_lab": 400 } }, @@ -202,6 +224,6 @@ "trail_terrain": { "t_deaddirt": 1 }, "trailheads": { "trailhead_basic": 1, "trailhead_outhouse": 1, "trailhead_shack": 1 } }, - "map_extras": { } + "map_extras": { "road": { "chance": 75, "extras": { "mx_wraitheon_droneswarm": 10 } } } } ] diff --git a/data/mods/desert_region/desert_insect_spider.json b/data/mods/desert_region/desert_insect_spider.json index df5fd07075687..372d9d2662dc4 100644 --- a/data/mods/desert_region/desert_insect_spider.json +++ b/data/mods/desert_region/desert_insect_spider.json @@ -27,7 +27,6 @@ "vision_night": 5, "harvest": "arachnid", "special_attacks": [ { "id": "impale" } ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "SMELLS", "HEARS", "BADVENOM", "PARALYZEVENOM", "GRABS" ] } ] diff --git a/data/mods/desert_region/desert_mammal.json b/data/mods/desert_region/desert_mammal.json index 53b6e8189a7ba..f52f7bef73e3e 100644 --- a/data/mods/desert_region/desert_mammal.json +++ b/data/mods/desert_region/desert_mammal.json @@ -25,7 +25,6 @@ "armor_cut": 3, "path_settings": { "max_dist": 20 }, "anger_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT", "MATING_SEASON" ], - "death_function": [ "NORMAL" ], "baby_flags": [ "SPRING" ], "//": "Baby elephants don't actually exist (yet), but Spring is the wet season (their mating season) so baby_flags is defined so that they get angry then", "harvest": "mammal_large_leather", diff --git a/data/mods/desert_region/desert_monsters.json b/data/mods/desert_region/desert_monsters.json index 17685e7e77f94..b79cd4f1af472 100644 --- a/data/mods/desert_region/desert_monsters.json +++ b/data/mods/desert_region/desert_monsters.json @@ -33,7 +33,6 @@ ], "anger_triggers": [ "STALK", "PLAYER_WEAK", "PLAYER_CLOSE" ], "fear_triggers": [ "FIRE" ], - "death_function": [ "NORMAL" ], "flags": [ "SEES", "HEARS", "SMELLS", "STUMBLES", "WARM", "BASHES", "POISON", "NO_BREATHE", "REVIVES", "FILTHY", "SWIMS" ] }, { @@ -53,7 +52,7 @@ "melee_dice_sides": 3, "armor_bash": 3, "armor_cut": 1, - "death_function": [ "NORMAL", "FUNGUS" ], + "death_function": { "effect": { "id": "death_fungus", "hit_self": true } }, "special_attacks": [ [ "FUNGUS", 200 ], [ "SMASH", 15 ], [ "FUNGUS_BRISTLE", 20 ], [ "FUNGUS_BIG_BLOSSOM", 30 ] ], "extend": { "flags": [ "POISON", "NO_BREATHE" ] }, "delete": { diff --git a/data/mods/desert_region/desert_regional_map_settings.json b/data/mods/desert_region/desert_regional_map_settings.json index 3a054d8fc46ee..86f57f60acb44 100644 --- a/data/mods/desert_region/desert_regional_map_settings.json +++ b/data/mods/desert_region/desert_regional_map_settings.json @@ -2,7 +2,29 @@ { "type": "region_settings", "id": "default", - "default_oter": "desert", + "default_oter": [ + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "field", + "solid_earth", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock" + ], "default_groundcover": [ [ "t_region_groundcover", 1 ] ], "region_terrain_and_furniture": { "terrain": { diff --git a/data/mods/desert_region/desert_reptile_amphibian.json b/data/mods/desert_region/desert_reptile_amphibian.json index d306e8eca142f..e35243b49365f 100644 --- a/data/mods/desert_region/desert_reptile_amphibian.json +++ b/data/mods/desert_region/desert_reptile_amphibian.json @@ -24,7 +24,6 @@ "anger_triggers": [ "HURT", "PLAYER_CLOSE" ], "fear_triggers": [ "PLAYER_CLOSE" ], "placate_triggers": [ "PLAYER_WEAK" ], - "death_function": [ "NORMAL" ], "flags": [ "ANIMAL", "CLIMBS", "KEENNOSE", "SEES", "HEARS", "SMELLS", "BADVENOM" ] } ] diff --git a/data/mods/rural_biome/rural_regional_map_settings.json b/data/mods/rural_biome/rural_regional_map_settings.json index c2492070f9be1..6f35908615b8a 100644 --- a/data/mods/rural_biome/rural_regional_map_settings.json +++ b/data/mods/rural_biome/rural_regional_map_settings.json @@ -2,7 +2,29 @@ { "type": "region_settings", "id": "default", - "default_oter": "field", + "default_oter": [ + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "open_air", + "field", + "solid_earth", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock", + "empty_rock" + ], "default_groundcover": [ [ "t_region_groundcover", 1 ] ], "region_terrain_and_furniture": { "terrain": { diff --git a/data/raw/keybindings.json b/data/raw/keybindings.json index 6756fa7251fcc..cd21934be8fd7 100644 --- a/data/raw/keybindings.json +++ b/data/raw/keybindings.json @@ -304,6 +304,13 @@ { "input_method": "keyboard_code", "key": "d", "mod": [ "shift" ] } ] }, + { + "type": "keybinding", + "id": "CHANGE_MAPEXTRA_CHARACTER", + "category": "AUTO_NOTES", + "name": "Change a symbol for map extra", + "bindings": [ { "input_method": "keyboard_any", "key": "=" } ] + }, { "type": "keybinding", "id": "ADD_RULE", @@ -1399,6 +1406,13 @@ "name": "Change tire", "bindings": [ { "input_method": "keyboard_any", "key": "c" } ] }, + { + "type": "keybinding", + "id": "CHANGE_SHAPE", + "category": "VEH_INTERACT", + "name": "Change part shape", + "bindings": [ { "input_method": "keyboard_any", "key": "p" } ] + }, { "type": "keybinding", "id": "ASSIGN_CREW", @@ -1679,6 +1693,13 @@ "name": "Toggle safe fuel mod", "bindings": [ { "input_method": "keyboard_char", "key": "S" }, { "input_method": "keyboard_code", "key": "s", "mod": [ "shift" ] } ] }, + { + "type": "keybinding", + "id": "REFUEL", + "category": "BIONICS", + "name": "Open refuel menu", + "bindings": [ { "input_method": "keyboard_char", "key": "R" }, { "input_method": "keyboard_code", "key": "r", "mod": [ "shift" ] } ] + }, { "type": "keybinding", "id": "TOGGLE_AUTO_START", diff --git a/doc/ITEM_SPAWN.md b/doc/ITEM_SPAWN.md index 2e7463624ba2e..faf8c9dc42592 100644 --- a/doc/ITEM_SPAWN.md +++ b/doc/ITEM_SPAWN.md @@ -195,6 +195,10 @@ Another example: The group "milk" spawns a container (taken from milk_containers }, ``` +## Adding to item groups + +Mods can add entries to item groups simply by specifying an item group with the same id; any entries will be added to the item group. + ## Inlined item groups In some places one can define an item group directly instead of giving the id of a group. One cannot refer to that group elsewhere - it has no visible id (it has an unspecific/random id internally). This is most useful when the group is very specific to the place it is used and won't ever appear anywhere else. diff --git a/doc/JSON_FLAGS.md b/doc/JSON_FLAGS.md index 84c67f308f17c..c99a5fbe89f81 100644 --- a/doc/JSON_FLAGS.md +++ b/doc/JSON_FLAGS.md @@ -892,6 +892,7 @@ Other monster flags. - ```BORES``` Tunnels through just about anything (15x bash multiplier: dark wyrms' bash skill 12->180) - ```CAN_DIG``` Can dig _and_ walk. - ```CAN_OPEN_DOORS``` Can open doors on its path. +- ```CAMOUFLAGE``` Stays invisible up to (current Perception, + base Perception if the character has the Spotting proficiency) tiles away, even in broad daylight. Monsters see it from the lower of `vision_day` and `vision_night` ranges. - ```CANPLAY``` This creature can be played with if it's a pet. - ```CATFOOD``` Becomes friendly / tamed with cat food. - ```CATTLEFODDER``` Becomes friendly / tamed with cattle fodder. @@ -954,6 +955,7 @@ Other monster flags. - ```PET_HARNESSABLE```Creature can be attached to an harness. - ```NULL``` Source use only. - ```PACIFIST``` Monster will never do melee attacks. +- ```KEEP_DISTANCE``` Monster will try to keep `tracking_distance` number of tiles between it and its current target. - ```PARALYZE``` Attack may paralyze the player with venom. - ```PLASTIC``` Absorbs physical damage to a great degree. - ```POISON``` Poisonous to eat. @@ -1144,6 +1146,7 @@ These branches are also the valid entries for the categories of `dreams` in `dre - ```FUNGAL``` Location is related to fungi. Used to classify location. - ```LAKE``` Location is is placed on a lake and will be ignored for placement if the overmap doesn't contain any lake terrain. - ```MI-GO``` Location is related to mi-go. +- ```SAFE_AT_WORLDGEN``` Location will not spawn overmap monster groups during worldgen (does not affect monsters spawned by mapgen). - ```TRIFFID``` Location is related to triffids. Used to classify location. - ```UNIQUE``` Location is unique and will only occur once per overmap. `occurrences` is overridden to define a percent chance (e.g. `"occurrences" : [75, 100]` is 75%) - ```URBAN``` @@ -1226,7 +1229,6 @@ These branches are also the valid entries for the categories of `dreams` in `dre - ```INFECTED``` Player starts the game infected. - ```FUNGAL_INFECTION``` Player starts the game with a fungal infection. - ```LONE_START``` If starting NPC spawn option is switched to "Scenario-based", this scenario won't spawn a fellow NPC on game start. -- ```SUR_START``` Surrounded start, zombies outside the starting location. #### Profession Flags @@ -1529,3 +1531,5 @@ Gun fault flags: - ```DIMENSIONAL_ANCHOR``` You can't be teleported. - ```CLIMATE_CONTROL``` You are resistant to extreme temperatures. - ```HEATSINK``` You are resistant to extreme heat. +- ```THERMOMETER``` You always know what temperature it is. +- ```CBQ_LEARN_BONUS``` You learn CBQ from the bionic bio_cqb faster. diff --git a/doc/JSON_INFO.md b/doc/JSON_INFO.md index 7fe197ac90d4b..10572e9727d7f 100644 --- a/doc/JSON_INFO.md +++ b/doc/JSON_INFO.md @@ -120,6 +120,8 @@ Use the `Home` key to return to the top. - [Furniture](#furniture) - [`type`](#type-1) - [`move_cost_mod`](#move_cost_mod) + - [`lockpick_result`](#lockpick_result) + - [`lockpick_message`](#lockpick_message) - [`light_emitted`](#light_emitted) - [`required_str`](#required_str) - [`crafting_pseudo_item`](#crafting_pseudo_item) @@ -131,6 +133,8 @@ Use the `Home` key to return to the top. - [`move_cost`](#move_cost) - [`heat_radiation`](#heat_radiation) - [`light_emitted`](#light_emitted-1) + - [`lockpick_result`](#lockpick_result-1) + - [`lockpick_message`](#lockpick_message-1) - [`trap`](#trap) - [`transforms_into`](#transforms_into) - [`harvest_by_season`](#harvest_by_season) @@ -229,7 +233,7 @@ Each of these types is documented separately, either below or in other documentation which should be linked from below (doubtless a few have been missed; feel free to file bugs for missing documentation). -The documentation is organised by file, because objects of the same type tend +The documentation is organized by file, because objects of the same type tend to be defined together in one file or a collection of co-located files. However, the game does not enforce this convention and in practice you could define a JSON object of any type in any file. If you were writing a small mod @@ -338,7 +342,7 @@ This section describes some common features of formatting values in CDDA JSON fi Most values which represent physical quantities (length, volume, time, etc.) are given as a string with a numerical value and an abbreviation of the unit, separated with a space. Generally we use SI units and try to stick to the -conventional SI abbreviations. For example, a volume of 3 litres would be +conventional SI abbreviations. For example, a volume of 3 liters would be defined as `"3 L"`. ### Time duration @@ -678,8 +682,11 @@ For information about tools with option to export ASCII art in format ready to b | learned_proficiencies | (_optional_) Array of proficiency ids you gain when installing this CBM, and lose when uninstalling | installation_requirement | (_optional_) Requirement id pointing to a requirement defining the tools and components necessary to install this CBM. | vitamin_absorb_mod | (_optional_) Modifier to vitamin absorption, affects all vitamins. (default: `1.0`) +| dupes_allowed | (_optional_) Boolean to determine if multiple copies of this bionic can be installed. Defaults to false. | cant_remove_reason | (_optional_) String message to be displayed as the reason it can't be uninstalled. Having any value other than `""` as this will prevent unistalling the bionic. Formatting includes two `%s` for example: `The Telescopic Lenses are part of %1$s eyes now. Removing them would leave %2$s blind.` (default: `""`) | social_modifiers | (_optional_) Json object with optional members: persuade, lie, and intimidate which add or subtract that amount from those types of social checks +| dispersion_mod | (_optional_) Modifier to change firearm disperation. + ```C++ { "id" : "bio_batteries", @@ -906,11 +913,11 @@ If a fuel has the PERPETUAL flag, engines powered by it never use any fuel. Thi |--- |--- | `name` | Unique ID. Must be one continuous word, use underscores if necessary. | `default` | Default monster, automatically fills in any remaining spawn chances. -| `monsters` | To choose a monster for spawning, the game creates `freq_total` entries (default 1000) and picks one. Each monster will have a number of entries equal to it's `freq` and the default monster will fill in the remaining. See the table below for how to build the single monster definitions. +| `monsters` | To choose a monster for spawning, the game creates `freq_total` entries (default 1000) and picks one. Each monster will have a number of entries equal to its `freq` and the default monster will fill in the remaining. See the table below for how to build the single monster definitions. | `is_safe` | (bool) Check to not trigger safe-mode warning, currently inconsequential. | `is_animal` | (bool) Check if that group has only normal animals, currently inconsequential. -| `freq_total`| (int) Determines the number of entries created for the monster roll, default 1000. If the total eligable `freq`s of a group exceed `freq_total` the entries after the monster that exceeded it **won't be included** in the roll - ie if the first two monsters out of a group of ten each have `freq: 500` the rest of the group won't have a chance to spawn at all! -| `replace_monster_group` | (bool) Check if the group should be replaced completely by another monster group as game time progresses - doesn't affect already spawned monsters, as such mostly superceded by monster evolution. +| `freq_total`| (int) Determines the number of entries created for the monster roll, default 1000. If the total eligible `freq`s of a group exceed `freq_total` the entries after the monster that exceeded it **won't be included** in the roll - i.e., if the first two monsters out of a group of ten each have `freq: 500` the rest of the group won't have a chance to spawn at all! +| `replace_monster_group` | (bool) Check if the group should be replaced completely by another monster group as game time progresses - doesn't affect already spawned monsters, as such mostly superseded by monster evolution. | `new_monster_group_id` | (string) The id of the monster group that should replace this one. | `replacement_time` | (int) The amount of time before the group should be replaced by the new one, in days. Final replacement date is calculated by `replacement_time * evolution factor`. @@ -1252,7 +1259,7 @@ Crafting recipes are defined as a JSON object with the following fields: "required": false, // Whether or not you must have the proficiency to craft it. Incompatible with `time_multiplier` "time_multiplier": 2.0 // The multiplier on time taken to craft this recipe if you do not have this proficiency "fail_multiplier": 2.5 // The multiplier on failure chance when crafting without this proficiency. Defaults to 2.5. Multiple proficiencies will multiply this value. (if all have the default, it's fail_multiplier ^ n, where n is the number of proficiencies that are lacked) - "learning_time_multiplier": 1.2 // The multiplier on learning speed for this proficiency. By default, it's the time of the recipe, divded by the time multiplier, and by the number of proficiencies that can also be learned from it. + "learning_time_multiplier": 1.2 // The multiplier on learning speed for this proficiency. By default, it's the time of the recipe, divided by the time multiplier, and by the number of proficiencies that can also be learned from it. "max_experience": "15 m" // This recipe cannot raise your experience for that proficiency above 15 minutes worth. } ] @@ -1713,7 +1720,7 @@ optional. It defaults to ": ". #### `achievement` Achievements are goals for the player to aspire to, in the usual sense of the -term as popularised in other games. +term as popularized in other games. An achievement is specified via requirements, each of which is a constraint on an `event_statistic`. For example: @@ -1903,7 +1910,7 @@ it is present to help catch errors. "scent_mask": -200,// int added to your target scent value. (default: 0) "scent_type": "sc_flower",// scent_typeid, defined in scent_types.json, The type scent you emit. (default: empty) "consume_time_modifier": 1.0f,//time to eat or drink is multiplied by this -"bleed_resist": 1000, // Int quantifiying your resistance to bleed effect, if its > to the intensity of the effect you don't get any bleeding. (default: 0) +"bleed_resist": 1000, // Int quantifying your resistance to bleed effect, if it's > to the intensity of the effect you don't get any bleeding. (default: 0) "fat_to_max_hp": 1.0, // Amount of hp_max gained for each unit of bmi above character_weight_category::normal. (default: 0.0) "healthy_rate": 0.0, // How fast your health can change. If set to 0 it never changes. (default: 1.0) "weakness_to_water": 5, // How much damage water does to you, negative values heal you. (default: 0) @@ -1921,7 +1928,7 @@ it is present to help catch errors. "healing_awake": 1.0, // Healing rate per turn while awake. "healing_resting": 0.5, // Healing rate per turn while resting. "mending_modifier": 1.2 // Multiplier on how fast your limbs mend - This value would make your limbs mend 20% faster -"transform": { "target": "BIOLUM1", // Trait_id of the mutation this one will transfomr into +"transform": { "target": "BIOLUM1", // Trait_id of the mutation this one will transform into "msg_transform": "You turn your photophore OFF.", // message displayed upon transformation "active": false , // Will the target mutation start powered ( turn ON ). "moves": 100 // how many moves this costs. (default: 0) @@ -1982,7 +1989,7 @@ it is present to help catch errors. "floor_bedding_warmth": -500, "spell_data": { "id": "bear_trap" }, // data required for trapfunc::spell() "trigger_weight": "200 g", // If an item with this weight or more is thrown onto the trap, it triggers. TODO: what is the default? - "drops": [ "beartrap" ], // For disassembly? + "drops": [ "beartrap" ], // ID of item spawned when disassembled "flags": [ "EXAMPLE_FLAG" ], // A set of valid flags for this trap "vehicle_data": { "damage": 300, @@ -2018,7 +2025,7 @@ Vehicle components when installed on a vehicle. "symbol": "0", // (Optional) ASCII character displayed when part is working "symbols": { // (Optional) ASCII characters displayed when the part is working, "left": "0", "right": "0" // listed by variant suffix. See below for more on variants -"standard_symbols: false, // (Optional) Use the standard ASCII characters for variants +"standard_symbols": false, // (Optional) Use the standard ASCII characters for variants // must have one of symbol, symbols, or standard_symbols "looks_like": "small_wheel", // (Optional) hint to tilesets if this part has no tile, // use the looks_like tile. @@ -2047,7 +2054,7 @@ Vehicle components when installed on a vehicle. "flags": [ // Flags associated with the part "EXTERNAL", "MOUNT_OVER", "WHEEL", "MOUNT_POINT", "VARIABLE_SIZE" ], -"requirements": { // (Optional) Special installation, removal, or repair requirementsi +"requirements": { // (Optional) Special installation, removal, or repair requirements // for the part. Each field consists of an object, with fields // "skills", "time", and "using". "install": { @@ -2163,13 +2170,13 @@ The following `wheel_types` are available: #### The following optional fields are specific to ROTORs. ```c++ -"rotor_diameter": 15, // Rotor diamater in meters. Larger rotors provide more lift. +"rotor_diameter": 15, // Rotor diameter in meters. Larger rotors provide more lift. ``` #### The following optional fields are specific to WORKBENCHes. These values apply to crafting tasks performed at the WORKBENCH. ```c++ -"multiplier": 1.1, // Crafting speed multipler. +"multiplier": 1.1, // Crafting speed multiplier. "mass": 1000000, // Maximum mass in grams of a completed craft that can be crafted. "volume": "20L", // Maximum volume (as a string) of a completed craft that can be craft. ``` @@ -2416,7 +2423,7 @@ According to `"npc_has_worn_with_flag"` | string | `true` if the player character or NPC is wearing something with the `u_has_worn_with_flag` or `npc_has_worn_with_flag` flag. `"u_has_wielded_with_flag"`
`"npc_has_wielded_with_flag"` | string | `true` if the player character or NPC is wielding something with the `u_has_wielded_with_flag` or `npc_has_wielded_with_flag` flag. `"u_has_power"`
`"npc_has_power"` | int | `true` if the player character's or NPC's bionic power is at least the value of `u_has_power` or `npc_has_power`. +`"u_can_see"`
`"npc_can_see"` | simple string | `true` if the player character or NPC is not blind and is either not sleeping or has the see_sleep trait. #### Player Only conditions diff --git a/gfx/ChibiUltica/ChibiLargeMonster.png b/gfx/ChibiUltica/ChibiLargeMonster.png index 10d23ccc8434d..6ae76394d440b 100644 Binary files a/gfx/ChibiUltica/ChibiLargeMonster.png and b/gfx/ChibiUltica/ChibiLargeMonster.png differ diff --git a/gfx/ChibiUltica/ChibiNormalMonster.png b/gfx/ChibiUltica/ChibiNormalMonster.png index e3281ceab2e22..68cbda4165107 100644 Binary files a/gfx/ChibiUltica/ChibiNormalMonster.png and b/gfx/ChibiUltica/ChibiNormalMonster.png differ diff --git a/gfx/ChibiUltica/fillerhoder.png b/gfx/ChibiUltica/fillerhoder.png index 3d41b30acd5f2..be2fac634cb28 100644 Binary files a/gfx/ChibiUltica/fillerhoder.png and b/gfx/ChibiUltica/fillerhoder.png differ diff --git a/gfx/ChibiUltica/incomplete.png b/gfx/ChibiUltica/incomplete.png index 9236fb862f5dc..fab2bb30afec9 100644 Binary files a/gfx/ChibiUltica/incomplete.png and b/gfx/ChibiUltica/incomplete.png differ diff --git a/gfx/ChibiUltica/large.png b/gfx/ChibiUltica/large.png index 0875fc4f8d5cb..2bed153892407 100644 Binary files a/gfx/ChibiUltica/large.png and b/gfx/ChibiUltica/large.png differ diff --git a/gfx/ChibiUltica/normal.png b/gfx/ChibiUltica/normal.png index bf603bd72ce81..825ab498539e2 100644 Binary files a/gfx/ChibiUltica/normal.png and b/gfx/ChibiUltica/normal.png differ diff --git a/gfx/ChibiUltica/small.png b/gfx/ChibiUltica/small.png index 8ceb9a157dee1..34455ec0939c1 100644 Binary files a/gfx/ChibiUltica/small.png and b/gfx/ChibiUltica/small.png differ diff --git a/gfx/ChibiUltica/tallfurniture.png b/gfx/ChibiUltica/tallfurniture.png index 869eb28f4798d..8c48da91d95d7 100644 Binary files a/gfx/ChibiUltica/tallfurniture.png and b/gfx/ChibiUltica/tallfurniture.png differ diff --git a/gfx/ChibiUltica/tile_config.json b/gfx/ChibiUltica/tile_config.json index dbf650c40cd91..2dc4559e2636e 100644 --- a/gfx/ChibiUltica/tile_config.json +++ b/gfx/ChibiUltica/tile_config.json @@ -5,7 +5,7 @@ "tiles-new": [ { "file": "ChibiLargeMonster.png", - "//": "range 1 to 47", + "//": "range 1 to 63", "sprite_width": 64, "sprite_height": 80, "sprite_offset_x": -16, @@ -22,46 +22,47 @@ { "id": "mon_fungaloid_queen", "fg": 10, "rotates": false }, { "id": "mon_fungaloid_seeder", "fg": 8, "rotates": false }, { "id": "mon_fungaloid_tower", "fg": 9, "rotates": false }, - { "id": "mon_gas_zombie", "fg": 26, "bg": [ ], "rotates": false }, + { "id": "mon_gas_zombie", "fg": 27, "bg": [ ], "rotates": false }, { "id": "mon_jabberwock", "fg": 3, "rotates": false }, - { "id": "mon_mi_go_guard", "fg": 31, "rotates": false }, - { "id": "mon_mi_go_myrmidon", "fg": 32, "rotates": false }, - { "id": "mon_mi_go_slaver", "fg": 33, "rotates": false }, - { "id": "mon_mi_go_surgeon", "fg": 34, "rotates": false }, + { "id": "mon_mi_go_guard", "fg": 32, "rotates": false }, + { "id": "mon_mi_go_myrmidon", "fg": 33, "rotates": false }, + { "id": "mon_mi_go_slaver", "fg": 34, "rotates": false }, + { "id": "mon_mi_go_surgeon", "fg": 35, "rotates": false }, { "id": "mon_nakedmolerat_giant", "fg": 13, "rotates": false }, { "id": "mon_parasaurolophus", "fg": 20, "rotates": false }, - { "id": "mon_shoggoth", "fg": [ 4, 35 ], "rotates": false }, + { "id": "mon_shoggoth", "fg": [ 4, 36 ], "rotates": false }, { "id": "mon_skeleton_hulk", "fg": 1, "rotates": false }, { "id": "mon_spinosaurus", "fg": 14, "rotates": false }, { "id": "mon_stegosaurus", "fg": 17, "rotates": false }, { "id": "mon_triceratops", "fg": 16, "rotates": false }, { "id": "mon_triffid_heart", "fg": 11, "rotates": false }, - { "id": "mon_triffid_queen", "fg": 36, "bg": [ ], "rotates": false }, + { "id": "mon_triffid_queen", "fg": 37, "bg": [ ], "rotates": false }, { "id": "mon_turret_searchlight", "fg": 6, "rotates": false }, { "id": "mon_tyrannosaurus", "fg": 15, "rotates": false }, { "id": "mon_utahraptor", "fg": 21, "rotates": false }, { "id": "mon_yugg", "fg": 12, "rotates": false }, - { "id": "mon_zombie_corrosive", "fg": 37, "bg": [ ], "rotates": false }, + { "id": "mon_zombie_corrosive", "fg": 38, "bg": [ ], "rotates": false }, { "id": "mon_zombie_hulk", "fg": 5, "rotates": false }, - { "id": "mon_zombie_kevlar_2", "fg": 41, "bg": [ ], "rotates": false }, - { "id": "mon_zombie_nullfield", "fg": 43, "bg": [ ], "rotates": false }, - { "id": "mon_horse", "fg": 27 }, - { "id": "mon_mech_combat", "fg": 28 }, - { "id": "mon_mech_lifter", "fg": 29 }, - { "id": "mon_mech_recon", "fg": 30 }, - { "id": "mon_zombie_crushed_giant", "fg": 38 }, - { "id": "mon_zombie_gasbag_impaler", "fg": 39 }, - { "id": "mon_zombie_horse", "fg": 40 }, - { "id": "mon_zombie_living_wall", "fg": 42 }, - { "id": "rid_mon_horse", "fg": 44 }, - { "id": "rid_mon_mech_combat", "fg": 45 }, - { "id": "rid_mon_mech_lifter", "fg": 46 }, - { "id": "rid_mon_mech_recon", "fg": 47 } + { "id": "mon_zombie_kevlar_2", "fg": 42, "bg": [ ], "rotates": false }, + { "id": "mon_zombie_nullfield", "fg": 44, "bg": [ ], "rotates": false }, + { "id": "mon_frog_giant", "fg": 26 }, + { "id": "mon_horse", "fg": 28 }, + { "id": "mon_mech_combat", "fg": 29 }, + { "id": "mon_mech_lifter", "fg": 30 }, + { "id": "mon_mech_recon", "fg": 31 }, + { "id": "mon_zombie_crushed_giant", "fg": 39 }, + { "id": "mon_zombie_gasbag_impaler", "fg": 40 }, + { "id": "mon_zombie_horse", "fg": 41 }, + { "id": "mon_zombie_living_wall", "fg": 43 }, + { "id": "rid_mon_horse", "fg": 45 }, + { "id": "rid_mon_mech_combat", "fg": 46 }, + { "id": "rid_mon_mech_lifter", "fg": 47 }, + { "id": "rid_mon_mech_recon", "fg": 48 } ] }, { "file": "ChibiLargeMonsterMagiclysm.png", - "//": "range 48 to 63", + "//": "range 64 to 79", "sprite_width": 64, "sprite_height": 80, "sprite_offset_x": -16, @@ -70,10 +71,10 @@ { "id": "mon_claygolem", "fg": [ - { "weight": 10, "sprite": 49 }, - { "weight": 1, "sprite": 50 }, - { "weight": 2, "sprite": 51 }, - { "weight": 3, "sprite": 52 } + { "weight": 10, "sprite": 65 }, + { "weight": 1, "sprite": 66 }, + { "weight": 2, "sprite": 67 }, + { "weight": 3, "sprite": 68 } ], "rotates": false }, @@ -81,1887 +82,1870 @@ "id": "mon_demon_spider_queen", "animated": true, "fg": [ - { "weight": 15, "sprite": 53 }, - { "weight": 15, "sprite": 54 }, - { "weight": 15, "sprite": 55 }, - { "weight": 15, "sprite": 56 }, - { "weight": 15, "sprite": 55 }, - { "weight": 15, "sprite": 54 } + { "weight": 15, "sprite": 69 }, + { "weight": 15, "sprite": 70 }, + { "weight": 15, "sprite": 71 }, + { "weight": 15, "sprite": 72 }, + { "weight": 15, "sprite": 71 }, + { "weight": 15, "sprite": 70 } ], "rotates": false }, { "id": "mon_plasticgolem", "fg": [ - { "weight": 10, "sprite": 63 }, - { "weight": 10, "sprite": 58 }, - { "weight": 6, "sprite": 59 }, - { "weight": 5, "sprite": 62 }, - { "weight": 3, "sprite": 60 }, - { "weight": 1, "sprite": 61 } + { "weight": 10, "sprite": 79 }, + { "weight": 10, "sprite": 74 }, + { "weight": 6, "sprite": 75 }, + { "weight": 5, "sprite": 78 }, + { "weight": 3, "sprite": 76 }, + { "weight": 1, "sprite": 77 } ], "rotates": false }, - { "id": "broken_claygolem", "fg": 48 }, - { "id": "broken_plasticgolem", "fg": 57 } + { "id": "broken_claygolem", "fg": 64 }, + { "id": "broken_plasticgolem", "fg": 73 } ] }, { "file": "ChibiLargeOverlay.png", - "//": "range 64 to 79", + "//": "range 80 to 95", "sprite_width": 64, "sprite_height": 80, "sprite_offset_x": -16, "sprite_offset_y": -48, "tiles": [ - { "id": "overlay_wielded_pike", "fg": 64, "rotates": false }, - { "id": "overlay_wielded_qiang", "fg": 64, "rotates": false }, - { "id": "overlay_worn_cape_fp", "fg": 65 }, - { "id": "overlay_worn_foodperson_mask", "fg": 66 }, - { "id": "overlay_worn_foodperson_mask_on", "fg": 67 } + { "id": "overlay_wielded_pike", "fg": 80, "rotates": false }, + { "id": "overlay_wielded_qiang", "fg": 80, "rotates": false }, + { "id": "overlay_worn_cape_fp", "fg": 81 }, + { "id": "overlay_worn_foodperson_mask", "fg": 82 }, + { "id": "overlay_worn_foodperson_mask_on", "fg": 83 } ] }, { "file": "ChibiNormalCharacter.png", - "//": "range 80 to 1023", + "//": "range 96 to 1039", "tiles": [ - { "id": [ "player_female", "npc_female" ], "fg": 80, "rotates": false, "bg": 1295 }, - { "id": [ "player_male", "npc_male" ], "fg": 81, "rotates": false, "bg": 1295 }, - { "id": "overlay_female_mutation_active_bio_ads", "fg": 82, "rotates": false }, - { "id": "overlay_female_mutation_active_bio_alarm", "fg": 83, "rotates": false }, - { "id": "overlay_female_mutation_active_bio_cloak", "fg": 84, "rotates": false }, - { "id": "overlay_female_mutation_active_bio_ods", "fg": 85, "rotates": false }, - { "id": "overlay_female_mutation_bio_ads", "fg": 86, "rotates": false }, - { "id": "overlay_female_mutation_bio_alarm", "fg": 87, "rotates": false }, - { "id": "overlay_female_mutation_bio_ankles", "fg": 88, "rotates": false }, - { "id": "overlay_female_mutation_bio_armor_arms", "fg": 89, "rotates": false }, - { "id": "overlay_female_mutation_bio_armor_eyes", "fg": 90, "rotates": false }, - { "id": "overlay_female_mutation_bio_armor_head", "fg": 91, "rotates": false }, - { "id": "overlay_female_mutation_bio_armor_legs", "fg": 92, "rotates": false }, - { "id": "overlay_female_mutation_bio_armor_torso", "fg": 93, "rotates": false }, - { "id": "overlay_female_mutation_bio_blaster", "fg": 94, "rotates": false }, - { "id": "overlay_female_mutation_bio_blood_anal", "fg": 95, "rotates": false }, - { "id": "overlay_female_mutation_bio_blood_filter", "fg": 96, "rotates": false }, - { "id": "overlay_female_mutation_bio_carbon", "fg": 97, "rotates": false }, - { "id": "overlay_female_mutation_bio_climate", "fg": 98, "rotates": false }, - { "id": "overlay_female_mutation_bio_cloak", "fg": 99, "rotates": false }, - { "id": "overlay_female_mutation_bio_deformity", "fg": 100, "rotates": false }, - { "id": "overlay_female_mutation_bio_dis_acid", "fg": 101, "rotates": false }, - { "id": "overlay_female_mutation_bio_evap", "fg": 102, "rotates": false }, - { "id": "overlay_female_mutation_bio_night", "fg": 103, "rotates": false }, - { "id": "overlay_female_mutation_bio_ods", "fg": 104, "rotates": false }, - { "id": "overlay_female_mutation_bio_purifier", "fg": 105, "rotates": false }, - { "id": "overlay_male_mutation_active_bio_ads", "fg": 106, "rotates": false }, - { "id": "overlay_male_mutation_active_bio_alarm", "fg": 107, "rotates": false }, - { "id": "overlay_male_mutation_active_bio_cloak", "fg": 108, "rotates": false }, - { "id": "overlay_male_mutation_active_bio_ods", "fg": 109, "rotates": false }, - { "id": "overlay_male_mutation_bio_ads", "fg": 110, "rotates": false }, - { "id": "overlay_male_mutation_bio_alarm", "fg": 111, "rotates": false }, - { "id": "overlay_male_mutation_bio_ankles", "fg": 112, "rotates": false }, - { "id": "overlay_male_mutation_bio_armor_arms", "fg": 113, "rotates": false }, - { "id": "overlay_male_mutation_bio_armor_eyes", "fg": 114, "rotates": false }, - { "id": "overlay_male_mutation_bio_armor_head", "fg": 115, "rotates": false }, - { "id": "overlay_male_mutation_bio_armor_legs", "fg": 116, "rotates": false }, - { "id": "overlay_male_mutation_bio_armor_torso", "fg": 117, "rotates": false }, - { "id": "overlay_male_mutation_bio_blaster", "fg": 118, "rotates": false }, - { "id": "overlay_male_mutation_bio_blood_anal", "fg": 119, "rotates": false }, - { "id": "overlay_male_mutation_bio_blood_filter", "fg": 120, "rotates": false }, - { "id": "overlay_male_mutation_bio_carbon", "fg": 121, "rotates": false }, - { "id": "overlay_male_mutation_bio_climate", "fg": 122, "rotates": false }, - { "id": "overlay_male_mutation_bio_cloak", "fg": 123, "rotates": false }, - { "id": "overlay_male_mutation_bio_deformity", "fg": 124, "rotates": false }, - { "id": "overlay_male_mutation_bio_dis_acid", "fg": 125, "rotates": false }, - { "id": "overlay_male_mutation_bio_evap", "fg": 126, "rotates": false }, - { "id": "overlay_male_mutation_bio_night", "fg": 127, "rotates": false }, - { "id": "overlay_male_mutation_bio_ods", "fg": 128, "rotates": false }, - { "id": "overlay_male_mutation_bio_purifier", "fg": 129, "rotates": false }, - { "id": "overlay_mutation_active_bio_advreactor", "fg": 130, "rotates": false }, - { "id": "overlay_mutation_active_bio_batteries", "fg": 131, "rotates": false }, - { "id": "overlay_mutation_active_bio_blindfold", "fg": 132, "rotates": false }, - { "id": "overlay_mutation_active_bio_cable", "fg": 133, "rotates": false }, - { "id": "overlay_mutation_active_bio_cqb", "fg": 134, "rotates": false }, - { "id": "overlay_mutation_active_bio_infrared", "fg": 135, "rotates": false }, - { "id": "overlay_mutation_active_bio_night_vision", "fg": 136, "rotates": false }, - { "id": "overlay_mutation_active_bio_shotgun", "fg": 137, "rotates": false }, - { "id": "overlay_mutation_bio_adrenaline", "fg": 138, "rotates": false }, - { "id": "overlay_mutation_bio_advreactor", "fg": 139, "rotates": false }, - { "id": "overlay_mutation_bio_batteries", "fg": 140, "rotates": false }, - { "id": "overlay_mutation_bio_blade", "fg": 141, "rotates": false }, - { "id": "overlay_mutation_bio_blindfold", "fg": 142, "rotates": false }, - { "id": "overlay_mutation_bio_cable", "fg": 143, "rotates": false }, - { "id": "overlay_mutation_bio_chain_lightning", "fg": 144, "rotates": false }, - { "id": "overlay_mutation_bio_claws", "fg": 145, "rotates": false }, - { "id": "overlay_mutation_bio_cqb", "fg": 146, "rotates": false }, - { "id": "overlay_mutation_bio_infrared", "fg": 147, "rotates": false }, - { "id": "overlay_mutation_bio_night_vision", "fg": 148, "rotates": false }, - { "id": "overlay_mutation_bio_shotgun", "fg": 149, "rotates": false }, - { "id": "overlay_mutation_bio_sunglasses", "fg": 150, "rotates": false }, - { "id": "overlay_mutation_bio_surgical_razor", "fg": 151, "rotates": false }, - { "id": "overlay_wielded_bio_blade", "fg": 152, "rotates": false }, - { "id": "overlay_effect_blisters", "fg": 157 }, - { "id": "overlay_effect_cold", "fg": 154 }, - { "id": [ "overlay_effect_evil", "overlay_effect_attention", "overlay_effect_teleglow" ], "fg": 153 }, - { "id": "overlay_effect_frostbite", "fg": 156 }, - { "id": "overlay_effect_hot", "fg": 155 }, - { "id": "overlay_effect_onfire", "fg": 158 }, - { "id": "overlay_female_mutation_ALBINO", "fg": 215, "rotates": false }, - { "id": "overlay_female_mutation_AMORPHOUS", "fg": 159, "rotates": false }, - { "id": "overlay_female_mutation_FEATHERS", "fg": 162, "rotates": false }, - { "id": "overlay_female_mutation_FUR", "fg": 164, "rotates": false }, - { "id": "overlay_female_mutation_HYDE", "fg": 224, "rotates": false }, - { "id": "overlay_female_mutation_LEAVES", "fg": 163, "rotates": false }, - { "id": "overlay_female_mutation_LIGHTFUR", "fg": 164, "rotates": false }, - { "id": "overlay_female_mutation_LUPINE_FUR", "fg": 165, "rotates": false }, - { "id": "overlay_female_mutation_LYNX_FUR", "fg": 166, "rotates": false }, - { "id": "overlay_female_mutation_M_SKIN", "fg": 167, "rotates": false }, - { "id": "overlay_female_mutation_PALE", "fg": 215, "rotates": false }, + { "id": [ "player_female", "npc_female" ], "fg": 96, "rotates": false, "bg": 1311 }, + { "id": [ "player_male", "npc_male" ], "fg": 97, "rotates": false, "bg": 1311 }, + { "id": "overlay_female_mutation_active_bio_ads", "fg": 98, "rotates": false }, + { "id": "overlay_female_mutation_active_bio_alarm", "fg": 99, "rotates": false }, + { "id": "overlay_female_mutation_active_bio_cloak", "fg": 100, "rotates": false }, + { "id": "overlay_female_mutation_active_bio_ods", "fg": 101, "rotates": false }, + { "id": "overlay_female_mutation_bio_ads", "fg": 102, "rotates": false }, + { "id": "overlay_female_mutation_bio_alarm", "fg": 103, "rotates": false }, + { "id": "overlay_female_mutation_bio_ankles", "fg": 104, "rotates": false }, + { "id": "overlay_female_mutation_bio_armor_arms", "fg": 105, "rotates": false }, + { "id": "overlay_female_mutation_bio_armor_eyes", "fg": 106, "rotates": false }, + { "id": "overlay_female_mutation_bio_armor_head", "fg": 107, "rotates": false }, + { "id": "overlay_female_mutation_bio_armor_legs", "fg": 108, "rotates": false }, + { "id": "overlay_female_mutation_bio_armor_torso", "fg": 109, "rotates": false }, + { "id": "overlay_female_mutation_bio_blaster", "fg": 110, "rotates": false }, + { "id": "overlay_female_mutation_bio_blood_anal", "fg": 111, "rotates": false }, + { "id": "overlay_female_mutation_bio_blood_filter", "fg": 112, "rotates": false }, + { "id": "overlay_female_mutation_bio_carbon", "fg": 113, "rotates": false }, + { "id": "overlay_female_mutation_bio_climate", "fg": 114, "rotates": false }, + { "id": "overlay_female_mutation_bio_cloak", "fg": 115, "rotates": false }, + { "id": "overlay_female_mutation_bio_deformity", "fg": 116, "rotates": false }, + { "id": "overlay_female_mutation_bio_dis_acid", "fg": 117, "rotates": false }, + { "id": "overlay_female_mutation_bio_evap", "fg": 118, "rotates": false }, + { "id": "overlay_female_mutation_bio_night", "fg": 119, "rotates": false }, + { "id": "overlay_female_mutation_bio_ods", "fg": 120, "rotates": false }, + { "id": "overlay_female_mutation_bio_purifier", "fg": 121, "rotates": false }, + { "id": "overlay_male_mutation_active_bio_ads", "fg": 122, "rotates": false }, + { "id": "overlay_male_mutation_active_bio_alarm", "fg": 123, "rotates": false }, + { "id": "overlay_male_mutation_active_bio_cloak", "fg": 124, "rotates": false }, + { "id": "overlay_male_mutation_active_bio_ods", "fg": 125, "rotates": false }, + { "id": "overlay_male_mutation_bio_ads", "fg": 126, "rotates": false }, + { "id": "overlay_male_mutation_bio_alarm", "fg": 127, "rotates": false }, + { "id": "overlay_male_mutation_bio_ankles", "fg": 128, "rotates": false }, + { "id": "overlay_male_mutation_bio_armor_arms", "fg": 129, "rotates": false }, + { "id": "overlay_male_mutation_bio_armor_eyes", "fg": 130, "rotates": false }, + { "id": "overlay_male_mutation_bio_armor_head", "fg": 131, "rotates": false }, + { "id": "overlay_male_mutation_bio_armor_legs", "fg": 132, "rotates": false }, + { "id": "overlay_male_mutation_bio_armor_torso", "fg": 133, "rotates": false }, + { "id": "overlay_male_mutation_bio_blaster", "fg": 134, "rotates": false }, + { "id": "overlay_male_mutation_bio_blood_anal", "fg": 135, "rotates": false }, + { "id": "overlay_male_mutation_bio_blood_filter", "fg": 136, "rotates": false }, + { "id": "overlay_male_mutation_bio_carbon", "fg": 137, "rotates": false }, + { "id": "overlay_male_mutation_bio_climate", "fg": 138, "rotates": false }, + { "id": "overlay_male_mutation_bio_cloak", "fg": 139, "rotates": false }, + { "id": "overlay_male_mutation_bio_deformity", "fg": 140, "rotates": false }, + { "id": "overlay_male_mutation_bio_dis_acid", "fg": 141, "rotates": false }, + { "id": "overlay_male_mutation_bio_evap", "fg": 142, "rotates": false }, + { "id": "overlay_male_mutation_bio_night", "fg": 143, "rotates": false }, + { "id": "overlay_male_mutation_bio_ods", "fg": 144, "rotates": false }, + { "id": "overlay_male_mutation_bio_purifier", "fg": 145, "rotates": false }, + { "id": "overlay_mutation_active_bio_advreactor", "fg": 146, "rotates": false }, + { "id": "overlay_mutation_active_bio_batteries", "fg": 147, "rotates": false }, + { "id": "overlay_mutation_active_bio_blindfold", "fg": 148, "rotates": false }, + { "id": "overlay_mutation_active_bio_cable", "fg": 149, "rotates": false }, + { "id": "overlay_mutation_active_bio_cqb", "fg": 150, "rotates": false }, + { "id": "overlay_mutation_active_bio_infrared", "fg": 151, "rotates": false }, + { "id": "overlay_mutation_active_bio_night_vision", "fg": 152, "rotates": false }, + { "id": "overlay_mutation_active_bio_shotgun", "fg": 153, "rotates": false }, + { "id": "overlay_mutation_bio_adrenaline", "fg": 154, "rotates": false }, + { "id": "overlay_mutation_bio_advreactor", "fg": 155, "rotates": false }, + { "id": "overlay_mutation_bio_batteries", "fg": 156, "rotates": false }, + { "id": "overlay_mutation_bio_blade", "fg": 157, "rotates": false }, + { "id": "overlay_mutation_bio_blindfold", "fg": 158, "rotates": false }, + { "id": "overlay_mutation_bio_cable", "fg": 159, "rotates": false }, + { "id": "overlay_mutation_bio_chain_lightning", "fg": 160, "rotates": false }, + { "id": "overlay_mutation_bio_claws", "fg": 161, "rotates": false }, + { "id": "overlay_mutation_bio_cqb", "fg": 162, "rotates": false }, + { "id": "overlay_mutation_bio_infrared", "fg": 163, "rotates": false }, + { "id": "overlay_mutation_bio_night_vision", "fg": 164, "rotates": false }, + { "id": "overlay_mutation_bio_shotgun", "fg": 165, "rotates": false }, + { "id": "overlay_mutation_bio_sunglasses", "fg": 166, "rotates": false }, + { "id": "overlay_mutation_bio_surgical_razor", "fg": 167, "rotates": false }, + { "id": "overlay_wielded_bio_blade", "fg": 168, "rotates": false }, + { "id": "overlay_effect_blisters", "fg": 173 }, + { "id": "overlay_effect_cold", "fg": 170 }, + { "id": [ "overlay_effect_evil", "overlay_effect_attention", "overlay_effect_teleglow" ], "fg": 169 }, + { "id": "overlay_effect_frostbite", "fg": 172 }, + { "id": "overlay_effect_hot", "fg": 171 }, + { "id": "overlay_effect_onfire", "fg": 174 }, + { "id": "overlay_female_mutation_ALBINO", "fg": 231, "rotates": false }, + { "id": "overlay_female_mutation_AMORPHOUS", "fg": 175, "rotates": false }, + { "id": "overlay_female_mutation_FEATHERS", "fg": 178, "rotates": false }, + { "id": "overlay_female_mutation_FUR", "fg": 180, "rotates": false }, + { "id": "overlay_female_mutation_HYDE", "fg": 240, "rotates": false }, + { "id": "overlay_female_mutation_LEAVES", "fg": 179, "rotates": false }, + { "id": "overlay_female_mutation_LIGHTFUR", "fg": 180, "rotates": false }, + { "id": "overlay_female_mutation_LUPINE_FUR", "fg": 181, "rotates": false }, + { "id": "overlay_female_mutation_LYNX_FUR", "fg": 182, "rotates": false }, + { "id": "overlay_female_mutation_M_SKIN", "fg": 183, "rotates": false }, + { "id": "overlay_female_mutation_PALE", "fg": 231, "rotates": false }, { "id": [ "overlay_female_mutation_CHLOROMORPH", "overlay_female_mutation_PLANTSKIN" ], - "fg": 221, + "fg": 237, "rotates": false }, - { "id": "overlay_female_mutation_QUILLS", "fg": 162, "rotates": false }, - { "id": "overlay_female_mutation_SHELL", "fg": 229, "rotates": false }, - { "id": "overlay_female_mutation_SHELL2", "fg": 230, "rotates": false }, - { "id": "overlay_female_mutation_SLIMY", "fg": 232, "rotates": false }, - { "id": "overlay_female_mutation_SUNBURN", "fg": 215, "rotates": false }, - { "id": "overlay_female_mutation_TROGLO", "fg": 236, "rotates": false }, - { "id": "overlay_female_mutation_TROGLO2", "fg": 237, "rotates": false }, - { "id": "overlay_female_mutation_TROGLO3", "fg": 238, "rotates": false }, - { "id": "overlay_female_mutation_VISCOUS", "fg": 168, "rotates": false }, - { "id": "overlay_male_mutation_ALBINO", "fg": 240, "rotates": false }, - { "id": "overlay_male_mutation_AMORPHOUS", "fg": 169, "rotates": false }, - { "id": "overlay_male_mutation_FEATHERS", "fg": 170, "rotates": false }, - { "id": "overlay_male_mutation_FUR", "fg": 172, "rotates": false }, - { "id": "overlay_male_mutation_HYDE", "fg": 249, "rotates": false }, - { "id": "overlay_male_mutation_LEAVES", "fg": 171, "rotates": false }, - { "id": "overlay_male_mutation_LIGHTFUR", "fg": 172, "rotates": false }, - { "id": "overlay_male_mutation_LUPINE_FUR", "fg": 173, "rotates": false }, - { "id": "overlay_male_mutation_LYNX_FUR", "fg": 174, "rotates": false }, - { "id": "overlay_male_mutation_M_SKIN", "fg": 175, "rotates": false }, - { "id": "overlay_male_mutation_PALE", "fg": 240, "rotates": false }, + { "id": "overlay_female_mutation_QUILLS", "fg": 178, "rotates": false }, + { "id": "overlay_female_mutation_SHELL", "fg": 245, "rotates": false }, + { "id": "overlay_female_mutation_SHELL2", "fg": 246, "rotates": false }, + { "id": "overlay_female_mutation_SLIMY", "fg": 248, "rotates": false }, + { "id": "overlay_female_mutation_SUNBURN", "fg": 231, "rotates": false }, + { "id": "overlay_female_mutation_TROGLO", "fg": 252, "rotates": false }, + { "id": "overlay_female_mutation_TROGLO2", "fg": 253, "rotates": false }, + { "id": "overlay_female_mutation_TROGLO3", "fg": 254, "rotates": false }, + { "id": "overlay_female_mutation_VISCOUS", "fg": 184, "rotates": false }, + { "id": "overlay_male_mutation_ALBINO", "fg": 256, "rotates": false }, + { "id": "overlay_male_mutation_AMORPHOUS", "fg": 185, "rotates": false }, + { "id": "overlay_male_mutation_FEATHERS", "fg": 186, "rotates": false }, + { "id": "overlay_male_mutation_FUR", "fg": 188, "rotates": false }, + { "id": "overlay_male_mutation_HYDE", "fg": 265, "rotates": false }, + { "id": "overlay_male_mutation_LEAVES", "fg": 187, "rotates": false }, + { "id": "overlay_male_mutation_LIGHTFUR", "fg": 188, "rotates": false }, + { "id": "overlay_male_mutation_LUPINE_FUR", "fg": 189, "rotates": false }, + { "id": "overlay_male_mutation_LYNX_FUR", "fg": 190, "rotates": false }, + { "id": "overlay_male_mutation_M_SKIN", "fg": 191, "rotates": false }, + { "id": "overlay_male_mutation_PALE", "fg": 256, "rotates": false }, { "id": [ "overlay_male_mutation_CHLOROMORPH", "overlay_male_mutation_PLANTSKIN" ], - "fg": 246, + "fg": 262, "rotates": false }, - { "id": "overlay_male_mutation_QUILLS", "fg": 170, "rotates": false }, - { "id": "overlay_male_mutation_SHELL", "fg": 254, "rotates": false }, - { "id": "overlay_male_mutation_SHELL2", "fg": 255, "rotates": false }, - { "id": "overlay_male_mutation_SLIMY", "fg": 257, "rotates": false }, - { "id": "overlay_male_mutation_SUNBURN", "fg": 240, "rotates": false }, - { "id": "overlay_male_mutation_TROGLO", "fg": 261, "rotates": false }, - { "id": "overlay_male_mutation_TROGLO2", "fg": 262, "rotates": false }, - { "id": "overlay_male_mutation_TROGLO3", "fg": 263, "rotates": false }, - { "id": "overlay_male_mutation_VISCOUS", "fg": 176, "rotates": false }, - { "id": "overlay_mutation_ALCMET", "fg": 177, "rotates": false }, - { "id": "overlay_mutation_ANTENNAE", "fg": 178, "rotates": false }, - { "id": "overlay_mutation_ANTLERS", "fg": 179, "rotates": false }, - { "id": "overlay_mutation_ARACHNID_ARMS", "fg": 180, "rotates": false }, - { "id": "overlay_mutation_ARACHNID_ARMS_OK", "fg": 180, "rotates": false }, - { "id": "overlay_mutation_ARM_TENTACLES", "fg": 181, "rotates": false }, - { "id": "overlay_mutation_ARM_TENTACLES_4", "fg": 182, "rotates": false }, - { "id": "overlay_mutation_ARM_TENTACLES_8", "fg": 183, "rotates": false }, - { "id": "overlay_mutation_BIRD_EYE", "fg": 160, "rotates": false }, - { "id": "overlay_mutation_CANINE_EARS", "fg": 184, "rotates": false }, - { "id": "overlay_mutation_CENOBITE", "fg": 185, "rotates": false }, - { "id": "overlay_mutation_CEPH_EYES", "fg": 161, "rotates": false }, - { "id": "overlay_male_mutation_CHITIN3", "fg": 245, "rotates": false }, - { "id": "overlay_female_mutation_CHITIN3", "fg": 220, "rotates": false }, - { "id": "overlay_male_mutation_CHITIN2", "fg": 244, "rotates": false }, - { "id": "overlay_female_mutation_CHITIN2", "fg": 219, "rotates": false }, - { "id": "overlay_male_mutation_CHITIN", "fg": 243, "rotates": false }, - { "id": "overlay_female_mutation_CHITIN", "fg": 218, "rotates": false }, - { "id": [ "overlay_mutation_CLAWS", "overlay_mutation_CLAWS_RETRACT_active" ], "fg": 268, "rotates": false }, - { "id": "overlay_mutation_CLAWS_RAT", "fg": 269, "rotates": false }, - { "id": "overlay_mutation_CLAWS_ST", "fg": 270, "rotates": false }, - { "id": "overlay_mutation_COMPOUND_EYES", "fg": 271, "rotates": false }, - { "id": "overlay_mutation_DEBUG_CLOAK", "fg": 186, "rotates": false }, - { "id": "overlay_mutation_DEBUG_HS", "fg": 186, "rotates": false }, - { "id": "overlay_mutation_DEBUG_LS", "fg": 186, "rotates": false }, - { "id": "overlay_mutation_DEBUG_MIND_CONTROL", "fg": 186, "rotates": false }, - { "id": "overlay_mutation_DEBUG_NIGHTVISION", "fg": 186, "rotates": false }, - { "id": "overlay_mutation_DEBUG_NODMG", "fg": 186, "rotates": false }, - { "id": "overlay_mutation_DEBUG_NOSCENT", "fg": 186, "rotates": false }, - { "id": "overlay_mutation_DEBUG_NOTEMP", "fg": 186, "rotates": false }, - { "id": "overlay_mutation_DEBUG_SILENT", "fg": 186, "rotates": false }, - { "id": "overlay_mutation_ELFA_EARS", "fg": 187, "rotates": false }, - { "id": [ "overlay_mutation_EYEBULGE" ], "fg": 273, "rotates": false }, - { "id": [ "overlay_male_mutation_FANGS" ], "fg": 247, "rotates": false }, - { "id": [ "overlay_female_mutation_FANGS" ], "fg": 222, "rotates": false }, - { "id": "overlay_female_mutation_FELINE_EARS", "fg": 223, "rotates": false }, - { "id": "overlay_male_mutation_FELINE_EARS", "fg": 248, "rotates": false }, - { "id": "overlay_mutation_FLOWERS", "fg": 188, "rotates": false }, - { "id": [ "overlay_mutation_HOOVES", "overlay_mutation_DEMON_HOOVES" ], "fg": 275, "rotates": false }, - { "id": "overlay_mutation_HORNS", "fg": 189, "rotates": false }, - { "id": [ "overlay_mutation_HORNS_CURLED", "overlay_mutation_DEMON_HORNS" ], "fg": 190, "rotates": false }, - { "id": [ "overlay_male_mutation_INCISORS" ], "fg": 250, "rotates": false }, - { "id": [ "overlay_female_mutation_INCISORS" ], "fg": 225, "rotates": false }, - { "id": "overlay_mutation_INSECT_ARMS", "fg": 191, "rotates": false }, - { "id": "overlay_mutation_INSECT_ARMS_OK", "fg": 191, "rotates": false }, - { "id": "overlay_mutation_LEG_TENTACLES", "fg": 192, "rotates": false }, - { "id": [ "overlay_mutation_LIZ_EYE" ], "fg": 276, "rotates": false }, - { "id": "overlay_mutation_LUPINE_EARS", "fg": 184, "rotates": false }, - { "id": [ "overlay_mutation_MEMBRANE" ], "fg": 278, "rotates": false }, - { "id": "overlay_mutation_MOUSE_EARS", "fg": 279, "rotates": false }, - { "id": "overlay_mutation_MOUTH_FLAPS", "fg": 193, "rotates": false }, - { "id": "overlay_mutation_MOUTH_TENTACLES", "fg": 194, "rotates": false }, - { "id": "overlay_mutation_MUZZLE_LONG", "fg": 195, "rotates": false }, - { "id": "overlay_mutation_MUZZLE_RAT", "fg": 196, "rotates": false }, - { "id": "overlay_mutation_M_BLOOM", "fg": 197, "rotates": false }, - { "id": [ "overlay_male_mutation_M_SKIN2" ], "fg": 251, "rotates": false }, - { "id": [ "overlay_female_mutation_M_SKIN2" ], "fg": 226, "rotates": false }, - { "id": "overlay_mutation_PAWS_LARGE", "fg": 198, "rotates": false }, - { "id": "overlay_mutation_RAP_TALONS", "fg": 282, "rotates": false }, - { "id": "overlay_mutation_ROOTS2", "fg": 199, "rotates": false }, - { "id": "overlay_mutation_ROOTS3", "fg": 199, "rotates": false }, - { "id": [ "overlay_male_mutation_SABER_TEETH" ], "fg": 252, "rotates": false }, - { "id": [ "overlay_female_mutation_SABER_TEETH" ], "fg": 227, "rotates": false }, - { "id": "overlay_male_mutation_SCALES", "fg": 253, "rotates": false }, - { "id": "overlay_female_mutation_SCALES", "fg": 228, "rotates": false }, - { "id": "overlay_male_mutation_SLEEK_SCALES", "fg": 256, "rotates": false }, - { "id": "overlay_female_mutation_SLEEK_SCALES", "fg": 231, "rotates": false }, - { "id": "overlay_male_mutation_THICK_SCALES", "fg": 259, "rotates": false }, - { "id": "overlay_female_mutation_THICK_SCALES", "fg": 234, "rotates": false }, - { "id": "overlay_mutation_SORES", "fg": 200, "rotates": false }, - { "id": "overlay_mutation_SPOTS", "fg": 200, "rotates": false }, - { "id": "overlay_mutation_TAIL_CATTLE", "fg": 201, "rotates": false }, - { "id": "overlay_mutation_TAIL_CLUB", "fg": 202, "rotates": false }, - { "id": "overlay_mutation_TAIL_FLUFFY", "fg": 202, "rotates": false }, - { "id": "overlay_mutation_TAIL_RAPTOR", "fg": 203, "rotates": false }, - { "id": "overlay_mutation_TAIL_RAT", "fg": 204, "rotates": false }, - { "id": "overlay_mutation_TAIL_STING", "fg": 205, "rotates": false }, - { "id": "overlay_mutation_TAIL_STUB", "fg": 206, "rotates": false }, - { "id": "overlay_mutation_VINES1", "fg": 207, "rotates": false }, - { "id": "overlay_mutation_VINES2", "fg": 208, "rotates": false }, - { "id": "overlay_mutation_VINES3", "fg": 208, "rotates": false }, - { "id": "overlay_mutation_WHISKERS_RAT", "fg": 209, "rotates": false }, - { "id": "overlay_mutation_WINGS_BAT", "fg": 210, "rotates": false }, - { "id": "overlay_mutation_WINGS_BIRD", "fg": 211, "rotates": false }, - { "id": "overlay_mutation_WINGS_BUTTERFLY", "fg": 212, "rotates": false }, - { "id": "overlay_mutation_WINGS_INSECT", "fg": 213, "rotates": false }, - { "id": "overlay_mutation_WINGS_STUB", "fg": 214, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_ZAPPA", "fg": 313, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_WALRUS", "fg": 312, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_VANDYKE", "fg": 311, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_SOUL_PATCH", "fg": 310, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_SHENANDOAH", "fg": 308, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_NECKBEARD", "fg": 306, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_HANDLEBAR", "fg": 302, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_BEARD", "fg": 294, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_CHIN_STRAP", "fg": 297, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_CHIN_CURTAIN", "fg": 296, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_CHIN_STRIP", "fg": 298, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_GUNSLINGER", "fg": 301, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_MUTTONCHOPS", "fg": 305, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_MUSTACHE", "fg": 304, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_HORSESHOE", "fg": 303, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_3DAYSTUBBLE", "fg": 292, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_CHEVRON", "fg": 295, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_SHORTBOXED", "fg": 309, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_ANCHOR", "fg": 293, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_ROYALE", "fg": 307, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_CIRCLE", "fg": 299, "rotates": false }, - { "id": "overlay_female_mutation_FACIAL_HAIR_GOATEE", "fg": 300, "rotates": false }, - { "id": "overlay_female_mutation_hair_black_crewcut", "fg": 314, "rotates": false }, - { "id": "overlay_female_mutation_hair_gray_crewcut", "fg": 326, "rotates": false }, - { "id": "overlay_female_mutation_hair_blond_crewcut", "fg": 318, "rotates": false }, - { "id": "overlay_female_mutation_hair_brown_crewcut", "fg": 322, "rotates": false }, - { "id": "overlay_female_mutation_hair_white_crewcut", "fg": 334, "rotates": false }, - { "id": "overlay_female_mutation_hair_red_crewcut", "fg": 330, "rotates": false }, - { "id": "overlay_female_mutation_hair_black_long", "fg": 315, "rotates": false }, - { "id": "overlay_female_mutation_hair_gray_long", "fg": 327, "rotates": false }, - { "id": "overlay_female_mutation_hair_blond_long", "fg": 319, "rotates": false }, - { "id": "overlay_female_mutation_hair_brown_long", "fg": 323, "rotates": false }, - { "id": "overlay_female_mutation_hair_white_long", "fg": 335, "rotates": false }, - { "id": "overlay_female_mutation_hair_red_long", "fg": 331, "rotates": false }, - { "id": "overlay_female_mutation_hair_black_medium", "fg": 316, "rotates": false }, - { "id": "overlay_female_mutation_hair_gray_medium", "fg": 328, "rotates": false }, - { "id": "overlay_female_mutation_hair_blond_medium", "fg": 320, "rotates": false }, - { "id": "overlay_female_mutation_hair_brown_medium", "fg": 324, "rotates": false }, - { "id": "overlay_female_mutation_hair_white_medium", "fg": 336, "rotates": false }, - { "id": "overlay_female_mutation_hair_red_medium", "fg": 332, "rotates": false }, - { "id": "overlay_female_mutation_hair_black_short", "fg": 317, "rotates": false }, - { "id": "overlay_female_mutation_hair_gray_short", "fg": 329, "rotates": false }, - { "id": "overlay_female_mutation_hair_blond_short", "fg": 321, "rotates": false }, - { "id": "overlay_female_mutation_hair_brown_short", "fg": 325, "rotates": false }, - { "id": "overlay_female_mutation_hair_white_short", "fg": 337, "rotates": false }, - { "id": "overlay_female_mutation_hair_red_short", "fg": 333, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_ZAPPA", "fg": 359, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_WALRUS", "fg": 358, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_VANDYKE", "fg": 357, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_SOUL_PATCH", "fg": 356, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_SHENANDOAH", "fg": 354, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_NECKBEARD", "fg": 352, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_HANDLEBAR", "fg": 348, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_BEARD", "fg": 340, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_CHIN_STRAP", "fg": 343, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_CHIN_CURTAIN", "fg": 342, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_CHIN_STRIP", "fg": 344, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_GUNSLINGER", "fg": 347, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_MUTTONCHOPS", "fg": 351, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_MUSTACHE", "fg": 350, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_HORSESHOE", "fg": 349, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_3DAYSTUBBLE", "fg": 338, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_CHEVRON", "fg": 341, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_SHORTBOXED", "fg": 355, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_ANCHOR", "fg": 339, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_ROYALE", "fg": 353, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_CIRCLE", "fg": 345, "rotates": false }, - { "id": "overlay_male_mutation_FACIAL_HAIR_GOATEE", "fg": 346, "rotates": false }, - { "id": "overlay_male_mutation_hair_black_crewcut", "fg": 360, "rotates": false }, - { "id": "overlay_male_mutation_hair_gray_crewcut", "fg": 372, "rotates": false }, - { "id": "overlay_male_mutation_hair_blond_crewcut", "fg": 364, "rotates": false }, - { "id": "overlay_male_mutation_hair_brown_crewcut", "fg": 368, "rotates": false }, - { "id": "overlay_male_mutation_hair_white_crewcut", "fg": 380, "rotates": false }, - { "id": "overlay_male_mutation_hair_red_crewcut", "fg": 376, "rotates": false }, - { "id": "overlay_male_mutation_hair_black_long", "fg": 361, "rotates": false }, - { "id": "overlay_male_mutation_hair_gray_long", "fg": 373, "rotates": false }, - { "id": "overlay_male_mutation_hair_blond_long", "fg": 365, "rotates": false }, - { "id": "overlay_male_mutation_hair_brown_long", "fg": 369, "rotates": false }, - { "id": "overlay_male_mutation_hair_white_long", "fg": 381, "rotates": false }, - { "id": "overlay_male_mutation_hair_red_long", "fg": 377, "rotates": false }, - { "id": "overlay_male_mutation_hair_black_medium", "fg": 362, "rotates": false }, - { "id": "overlay_male_mutation_hair_gray_medium", "fg": 374, "rotates": false }, - { "id": "overlay_male_mutation_hair_blond_medium", "fg": 366, "rotates": false }, - { "id": "overlay_male_mutation_hair_brown_medium", "fg": 370, "rotates": false }, - { "id": "overlay_male_mutation_hair_white_medium", "fg": 382, "rotates": false }, - { "id": "overlay_male_mutation_hair_red_medium", "fg": 378, "rotates": false }, - { "id": "overlay_male_mutation_hair_black_short", "fg": 363, "rotates": false }, - { "id": "overlay_male_mutation_hair_gray_short", "fg": 375, "rotates": false }, - { "id": "overlay_male_mutation_hair_blond_short", "fg": 367, "rotates": false }, - { "id": "overlay_male_mutation_hair_brown_short", "fg": 371, "rotates": false }, - { "id": "overlay_male_mutation_hair_white_short", "fg": 383, "rotates": false }, - { "id": "overlay_male_mutation_hair_red_short", "fg": 379, "rotates": false }, - { "id": "overlay_wielded_2_shot_special", "fg": 445, "rotates": false }, - { "id": "overlay_wielded_2x4", "fg": 417, "rotates": false }, - { "id": "overlay_wielded_30gal_barrel", "fg": 395, "rotates": false }, - { "id": "overlay_wielded_30gal_drum", "fg": 395, "rotates": false }, - { "id": "overlay_wielded_50pistol", "fg": 450, "rotates": false }, - { "id": "overlay_wielded_55gal_drum", "fg": 395, "rotates": false }, - { "id": "overlay_wielded_BFG", "fg": 452, "rotates": false }, - { "id": "overlay_wielded_LAW", "fg": 482, "rotates": false }, - { "id": "overlay_wielded_LAW_Packed", "fg": 482, "rotates": false }, - { "id": "overlay_wielded_PR24-extended", "fg": 401, "rotates": false }, - { "id": "overlay_wielded_PR24-retracted", "fg": 403, "rotates": false }, - { "id": "overlay_wielded_RPG", "fg": 508, "rotates": false }, - { "id": "overlay_wielded_TDI", "fg": 521, "rotates": false }, - { "id": "overlay_wielded_abzats", "fg": 507, "rotates": false }, - { "id": "overlay_wielded_acoustic_guitar", "fg": 580, "rotates": false }, - { "id": "overlay_wielded_acr", "fg": 446, "rotates": false }, - { "id": "overlay_wielded_airspeargun", "fg": 517, "rotates": false }, - { "id": "overlay_wielded_ak47", "fg": 447, "rotates": false }, - { "id": "overlay_wielded_ak74", "fg": 447, "rotates": false }, - { "id": "overlay_wielded_american_180", "fg": 505, "rotates": false }, - { "id": "overlay_wielded_an94", "fg": 447, "rotates": false }, - { "id": "overlay_wielded_ar15", "fg": 448, "rotates": false }, - { "id": "overlay_wielded_arccan", "fg": 522, "rotates": false }, - { "id": "overlay_wielded_arming_sword", "fg": 533, "rotates": false }, - { "id": "overlay_wielded_arming_sword_fake", "fg": 533, "rotates": false }, - { "id": "overlay_wielded_arming_sword_inferior", "fg": 533, "rotates": false }, - { "id": "overlay_wielded_arx160", "fg": 449, "rotates": false }, - { "id": "overlay_wielded_ashot", "fg": 450, "rotates": false }, - { "id": "overlay_wielded_ax", "fg": 528, "rotates": false }, - { "id": "overlay_wielded_bag_canvas", "fg": 919, "rotates": false }, - { "id": "overlay_wielded_bag_canvas_small", "fg": 919, "rotates": false }, - { "id": "overlay_wielded_bagh_nakha", "fg": 399, "rotates": false }, - { "id": "overlay_wielded_bagpipes", "fg": 581, "rotates": false }, - { "id": "overlay_wielded_banjo", "fg": 529, "rotates": false }, - { "id": "overlay_wielded_bat", "fg": 400, "rotates": false }, - { "id": "overlay_wielded_bat_metal", "fg": 402, "rotates": false }, - { "id": "overlay_wielded_baton-extended", "fg": 401, "rotates": false }, - { "id": "overlay_wielded_baton", "fg": 403, "rotates": false }, - { "id": "overlay_wielded_battleaxe", "fg": 528, "rotates": false }, - { "id": "overlay_wielded_battleaxe_fake", "fg": 528, "rotates": false }, - { "id": "overlay_wielded_battleaxe_inferior", "fg": 528, "rotates": false }, - { "id": "overlay_wielded_battletorch", "fg": 530, "rotates": false }, - { "id": "overlay_wielded_battletorch_done", "fg": 530, "rotates": false }, - { "id": "overlay_wielded_battletorch_lit", "fg": 531, "rotates": false }, - { "id": "overlay_wielded_bbgun", "fg": 451, "rotates": false }, - { "id": "overlay_wielded_bee_sting", "fg": 403, "rotates": false }, - { "id": "overlay_wielded_bh_m89", "fg": 459, "rotates": false }, - { "id": "overlay_wielded_bigun", "fg": 453, "rotates": false }, - { "id": "overlay_wielded_bio_blade_weapon", "fg": 404, "rotates": false }, - { "id": "overlay_wielded_bio_claws_weapon", "fg": 405, "rotates": false }, - { "id": "overlay_wielded_bio_sword_weapon", "fg": 404, "rotates": false }, - { "id": "overlay_wielded_blade", "fg": 546, "rotates": false }, - { "id": "overlay_wielded_blowgun", "fg": 537, "rotates": false }, - { "id": "overlay_wielded_blunderbuss", "fg": 457, "rotates": false }, - { "id": "overlay_wielded_bokken", "fg": 406, "rotates": false }, - { "id": "overlay_wielded_bomblet_launcher_double", "fg": 454, "rotates": false }, - { "id": "overlay_wielded_bomblet_launcher_dualshot", "fg": 455, "rotates": false }, - { "id": "overlay_wielded_bomblet_launcher_rotary", "fg": 456, "rotates": false }, - { "id": "overlay_wielded_bomblet_launcher_single", "fg": 457, "rotates": false }, - { "id": "overlay_wielded_bowling_axe", "fg": 407, "rotates": false }, - { "id": [ "overlay_wielded_brazier", "brazier" ], "fg": 5112, "rotates": false }, - { "id": "overlay_wielded_briefcase_smg", "fg": 458, "rotates": false }, - { "id": "overlay_wielded_broadfire_off", "fg": 533, "rotates": false }, - { "id": "overlay_wielded_broadfire_on", "fg": 534, "rotates": false }, - { "id": "overlay_wielded_broadsword", "fg": 533, "rotates": false }, - { "id": "overlay_wielded_broadsword_fake", "fg": 533, "rotates": false }, - { "id": "overlay_wielded_broadsword_inferior", "fg": 533, "rotates": false }, - { "id": "overlay_wielded_broom", "fg": 408, "rotates": false }, - { "id": "overlay_wielded_browning_blr", "fg": 459, "rotates": false }, - { "id": "overlay_wielded_bullet_crossbow", "fg": 460, "rotates": false }, - { "id": "overlay_wielded_bullwhip", "fg": 409, "rotates": false }, - { "id": "overlay_wielded_bwirebat", "fg": 410, "rotates": false }, - { "id": "overlay_wielded_calico", "fg": 461, "rotates": false }, - { "id": "overlay_wielded_candlestick", "fg": 411, "rotates": false }, - { "id": "overlay_wielded_cane", "fg": 412, "rotates": false }, - { "id": "overlay_wielded_carbine_flintlock", "fg": 459, "rotates": false }, - { "id": "overlay_wielded_carbine_flintlock_double", "fg": 459, "rotates": false }, - { "id": "overlay_wielded_carver_off", "fg": 535, "rotates": false }, - { "id": "overlay_wielded_carver_on", "fg": 535, "rotates": false }, - { "id": "overlay_wielded_chain", "fg": 413, "rotates": false }, - { "id": "overlay_wielded_chainsaw_off", "fg": 536, "rotates": false }, - { "id": "overlay_wielded_chainsaw_on", "fg": 536, "rotates": false }, - { "id": "overlay_wielded_chemical_thrower", "fg": 462, "rotates": false }, - { "id": "overlay_wielded_clarinet", "fg": 537, "rotates": false }, - { "id": "overlay_wielded_clay_hydria", "fg": 392, "rotates": false }, - { "id": "overlay_wielded_clay_watercont", "fg": 393, "rotates": false }, - { "id": "overlay_wielded_coilgun", "fg": 445, "rotates": false }, - { "id": "overlay_wielded_colt_army", "fg": 497, "rotates": false }, - { "id": "overlay_wielded_colt_navy", "fg": 497, "rotates": false }, - { "id": "overlay_wielded_combatsaw_off", "fg": 536, "rotates": false }, - { "id": "overlay_wielded_combatsaw_on", "fg": 536, "rotates": false }, - { "id": "overlay_wielded_combination_gun", "fg": 451, "rotates": false }, - { "id": "overlay_wielded_compbow", "fg": 464, "rotates": false }, - { "id": "overlay_wielded_compositebow", "fg": 465, "rotates": false }, - { "id": "overlay_wielded_cop_38", "fg": 450, "rotates": false }, - { "id": "overlay_wielded_copper_ax", "fg": 532, "rotates": false }, - { "id": "overlay_wielded_copper_knife", "fg": 540, "rotates": false }, - { "id": "overlay_wielded_corpse", "fg": 414, "rotates": false }, - { "id": [ "overlay_wielded_crossbow", "overlay_wielded_crossbow_makeshift" ], "fg": 466, "rotates": false }, - { "id": "overlay_wielded_crowbar", "fg": 561, "rotates": false }, - { "id": "overlay_wielded_crucible", "fg": 395, "rotates": false }, - { "id": "overlay_wielded_cs_lajatang_off", "fg": 538, "rotates": false }, - { "id": "overlay_wielded_cs_lajatang_on", "fg": 538, "rotates": false }, - { "id": "overlay_wielded_cu_pipe", "fg": 416, "rotates": false }, - { "id": "overlay_wielded_cudgel", "fg": 415, "rotates": false }, - { "id": "overlay_wielded_cutlass", "fg": 539, "rotates": false }, - { "id": "overlay_wielded_cutlass_fake", "fg": 539, "rotates": false }, - { "id": "overlay_wielded_cutlass_inferior", "fg": 539, "rotates": false }, - { "id": "overlay_wielded_cw-24", "fg": 447, "rotates": false }, - { "id": "overlay_wielded_cw-24hack", "fg": 447, "rotates": false }, - { "id": "overlay_wielded_cw-24k", "fg": 447, "rotates": false }, - { "id": "overlay_wielded_cw-24m", "fg": 447, "rotates": false }, - { "id": "overlay_wielded_cw-24m_hack", "fg": 447, "rotates": false }, - { "id": "overlay_wielded_cwd-63", "fg": 485, "rotates": false }, - { "id": "overlay_wielded_cx4", "fg": 467, "rotates": false }, - { "id": "overlay_wielded_dao", "fg": 545, "rotates": false }, - { "id": "overlay_wielded_deagle_44", "fg": 450, "rotates": false }, - { "id": "overlay_wielded_digging_stick", "fg": 417, "rotates": false }, - { "id": "overlay_wielded_diveknife", "fg": 540, "rotates": false }, - { "id": "overlay_wielded_doublespeargun", "fg": 517, "rotates": false }, - { "id": "overlay_wielded_dusksword", "fg": 441, "rotates": false }, - { "id": "overlay_wielded_e_handcuffs", "fg": 543, "rotates": false }, - { "id": "overlay_wielded_e_tool", "fg": 544, "rotates": false }, - { "id": "overlay_wielded_elc_bld", "fg": 541, "rotates": false }, - { "id": "overlay_wielded_elc_blds", "fg": 542, "rotates": false }, - { "id": "overlay_wielded_elec_chainsaw_off", "fg": 536, "rotates": false }, - { "id": "overlay_wielded_elec_chainsaw_on", "fg": 536, "rotates": false }, - { "id": "overlay_wielded_emp_gun", "fg": 468, "rotates": false }, - { "id": "overlay_wielded_estoc", "fg": 418, "rotates": false }, - { "id": "overlay_wielded_estoc_fake", "fg": 418, "rotates": false }, - { "id": "overlay_wielded_ethereal_crossbow", "fg": 466, "rotates": false }, - { "id": "overlay_wielded_fencing_epee", "fg": 418, "rotates": false }, - { "id": "overlay_wielded_fencing_foil", "fg": 418, "rotates": false }, - { "id": "overlay_wielded_fencing_sabre", "fg": 418, "rotates": false }, - { "id": "overlay_wielded_ficrico", "fg": 450, "rotates": false }, - { "id": "overlay_wielded_fighter_sting", "fg": 403, "rotates": false }, - { "id": "overlay_wielded_fire_ax", "fg": 548, "rotates": false }, - { "id": "overlay_wielded_fire_lance", "fg": 439, "rotates": false }, - { "id": "overlay_wielded_fishing_rod_basic", "fg": 549, "rotates": false }, - { "id": "overlay_wielded_fishing_rod_professional", "fg": 549, "rotates": false }, - { "id": "overlay_wielded_flamethrower", "fg": 469, "rotates": false }, - { "id": "overlay_wielded_flamethrower_crude", "fg": 469, "rotates": false }, - { "id": "overlay_wielded_flamethrower_simple", "fg": 469, "rotates": false }, - { "id": "overlay_wielded_flaregun", "fg": 445, "rotates": false }, - { "id": "overlay_wielded_flute", "fg": 537, "rotates": false }, - { "id": "overlay_wielded_fn57", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_fn_fal", "fg": 449, "rotates": false }, - { "id": "overlay_wielded_fn_p90", "fg": 470, "rotates": false }, - { "id": "overlay_wielded_ftk93", "fg": 471, "rotates": false }, - { "id": "overlay_wielded_garand", "fg": 472, "rotates": false }, - { "id": "overlay_wielded_gattler", "fg": 586, "rotates": false }, - { "id": "overlay_wielded_glaive", "fg": 440, "rotates": false }, - { "id": "overlay_wielded_glass_macuahuitl", "fg": 419, "rotates": false }, - { "id": "overlay_wielded_glass_shiv", "fg": 420, "rotates": false }, - { "id": "overlay_wielded_glock_17", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_glock_19", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_glock_22", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_glowstick", "fg": 552, "rotates": false }, - { "id": "overlay_wielded_glowstick_dead", "fg": 552, "rotates": false }, - { "id": "overlay_wielded_glowstick_lit", "fg": 553, "rotates": false }, - { "id": "overlay_wielded_golf_club", "fg": 421, "rotates": false }, - { "id": "overlay_wielded_grapnel", "fg": 422, "rotates": false }, - { "id": "overlay_wielded_gungnir_replica", "fg": 569, "rotates": false }, - { "id": "overlay_wielded_gunknife", "fg": 450, "rotates": false }, - { "id": "overlay_wielded_gunsword", "fg": 495, "rotates": false }, - { "id": "overlay_wielded_h&k416a5", "fg": 585, "rotates": false }, - { "id": "overlay_wielded_halberd", "fg": 430, "rotates": false }, - { "id": "overlay_wielded_halberd_fake", "fg": 430, "rotates": false }, - { "id": "overlay_wielded_halligan", "fg": 550, "rotates": false }, - { "id": "overlay_wielded_hammer", "fg": 551, "rotates": false }, - { "id": "overlay_wielded_hammer_sledge", "fg": 423, "rotates": false }, - { "id": "overlay_wielded_hand_crossbow", "fg": 473, "rotates": false }, - { "id": "overlay_wielded_handflare", "fg": 552, "rotates": false }, - { "id": "overlay_wielded_handflare_dead", "fg": 552, "rotates": false }, - { "id": "overlay_wielded_handflare_lit", "fg": 553, "rotates": false }, - { "id": "overlay_wielded_hatchet", "fg": 532, "rotates": false }, - { "id": "overlay_wielded_heavy_flashlight", "fg": 552, "rotates": false }, - { "id": "overlay_wielded_heavy_flashlight_on", "fg": 553, "rotates": false }, - { "id": "overlay_wielded_heavy_rail_rifle", "fg": 477, "rotates": false }, - { "id": "overlay_wielded_helsing", "fg": 474, "rotates": false }, - { "id": "overlay_wielded_henry_big_boy", "fg": 451, "rotates": false }, - { "id": "overlay_wielded_hexenhammer", "fg": 423, "rotates": false }, - { "id": "overlay_wielded_hexenhammer_active", "fg": 423, "rotates": false }, - { "id": "overlay_wielded_hk_g36", "fg": 476, "rotates": false }, - { "id": "overlay_wielded_hk_g3", "fg": 475, "rotates": false }, - { "id": "overlay_wielded_hk_g80", "fg": 477, "rotates": false }, - { "id": "overlay_wielded_hk_mp5", "fg": 478, "rotates": false }, - { "id": "overlay_wielded_hk_mp5eod", "fg": 514, "rotates": false }, - { "id": "overlay_wielded_hk_mp7", "fg": 491, "rotates": false }, - { "id": "overlay_wielded_hk_ucp", "fg": 445, "rotates": false }, - { "id": "overlay_wielded_hk_ump45", "fg": 478, "rotates": false }, - { "id": "overlay_wielded_hockey_stick", "fg": 421, "rotates": false }, - { "id": "overlay_wielded_hoe", "fg": 554, "rotates": false }, - { "id": "overlay_wielded_homewrecker", "fg": 410, "rotates": false }, - { "id": "overlay_wielded_honey_scraper", "fg": 535, "rotates": false }, - { "id": "overlay_wielded_huge_crossbow", "fg": 460, "rotates": false }, - { "id": "overlay_wielded_i_staff", "fg": 424, "rotates": false }, - { "id": "overlay_wielded_iceaxe", "fg": 555, "rotates": false }, - { "id": "overlay_wielded_ichaival_replica", "fg": 465, "rotates": false }, - { "id": "overlay_wielded_javelin", "fg": 415, "rotates": false }, - { "id": "overlay_wielded_javelin_copper", "fg": 415, "rotates": false }, - { "id": "overlay_wielded_javelin_iron", "fg": 425, "rotates": false }, - { "id": "overlay_wielded_javelin_stone", "fg": 425, "rotates": false }, - { "id": "overlay_wielded_jerrycan", "fg": 394, "rotates": false }, - { "id": "overlay_wielded_jerrycan_big", "fg": 394, "rotates": false }, - { "id": "overlay_wielded_ji", "fg": 440, "rotates": false }, - { "id": "overlay_wielded_jian", "fg": 441, "rotates": false }, - { "id": "overlay_wielded_jian_fake", "fg": 441, "rotates": false }, - { "id": "overlay_wielded_jian_inferior", "fg": 441, "rotates": false }, - { "id": "overlay_wielded_katana", "fg": 545, "rotates": false }, - { "id": "overlay_wielded_katana_fake", "fg": 545, "rotates": false }, - { "id": "overlay_wielded_katana_inferior", "fg": 545, "rotates": false }, - { "id": [ "overlay_wielded_keg", "overlay_wielded_keg_steel" ], "fg": 395, "rotates": false }, - { "id": "overlay_wielded_khopesh", "fg": 568, "rotates": false }, - { "id": "overlay_wielded_knife_butcher", "fg": 556, "rotates": false }, - { "id": "overlay_wielded_knife_combat", "fg": 557, "rotates": false }, - { "id": "overlay_wielded_knife_hunting", "fg": 557, "rotates": false }, - { "id": "overlay_wielded_knife_rambo", "fg": 557, "rotates": false }, - { "id": "overlay_wielded_knife_rm42", "fg": 557, "rotates": false }, - { "id": "overlay_wielded_knife_steak", "fg": 535, "rotates": false }, - { "id": "overlay_wielded_knife_swissarmy", "fg": 420, "rotates": false }, - { "id": "overlay_wielded_knife_trench", "fg": 557, "rotates": false }, - { "id": "overlay_wielded_knuckle_brass", "fg": 426, "rotates": false }, - { "id": "overlay_wielded_knuckle_katar", "fg": 427, "rotates": false }, - { "id": "overlay_wielded_knuckle_nail", "fg": 427, "rotates": false }, - { "id": "overlay_wielded_knuckle_steel", "fg": 426, "rotates": false }, - { "id": "overlay_wielded_kris", "fg": 558, "rotates": false }, - { "id": "overlay_wielded_kris_fake", "fg": 558, "rotates": false }, - { "id": "overlay_wielded_ksg", "fg": 476, "rotates": false }, - { "id": "overlay_wielded_ksub2000", "fg": 449, "rotates": false }, - { "id": "overlay_wielded_kukri", "fg": 559, "rotates": false }, - { "id": "overlay_wielded_l-stick", "fg": 552, "rotates": false }, - { "id": "overlay_wielded_l-stick_on", "fg": 553, "rotates": false }, - { "id": "overlay_wielded_l_bak_223", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_l_base_223", "fg": 484, "rotates": false }, - { "id": "overlay_wielded_l_car_223", "fg": 484, "rotates": false }, - { "id": "overlay_wielded_l_def_12", "fg": 453, "rotates": false }, - { "id": "overlay_wielded_l_dsr_223", "fg": 484, "rotates": false }, - { "id": "overlay_wielded_l_enforcer_45", "fg": 445, "rotates": false }, - { "id": "overlay_wielded_l_lmg_223", "fg": 484, "rotates": false }, - { "id": "overlay_wielded_l_long_45", "fg": 472, "rotates": false }, - { "id": "overlay_wielded_l_lookout_9mm", "fg": 445, "rotates": false }, - { "id": "overlay_wielded_l_mbr_223", "fg": 484, "rotates": false }, - { "id": "overlay_wielded_l_mp_45", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_l_mp_9mm", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_l_sp_45", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_l_sp_9mm", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_laevateinn_replica", "fg": 533, "rotates": false }, - { "id": "overlay_wielded_lajatang", "fg": 428, "rotates": false }, - { "id": "overlay_wielded_laser_cannon", "fg": 479, "rotates": false }, - { "id": "overlay_wielded_laser_rifle", "fg": 480, "rotates": false }, - { "id": "overlay_wielded_launcher_simple", "fg": 481, "rotates": false }, - { "id": "overlay_wielded_lemat_revolver", "fg": 445, "rotates": false }, - { "id": "overlay_wielded_levergun_44", "fg": 459, "rotates": false }, - { "id": "overlay_wielded_lobotomizer", "fg": 560, "rotates": false }, - { "id": "overlay_wielded_longbow", "fg": 483, "rotates": false }, - { "id": "overlay_wielded_longsword", "fg": 578, "rotates": false }, - { "id": "overlay_wielded_longsword_fake", "fg": 578, "rotates": false }, - { "id": "overlay_wielded_longsword_inferior", "fg": 578, "rotates": false }, - { "id": "overlay_wielded_ltcarb", "fg": 522, "rotates": false }, - { "id": "overlay_wielded_m1014", "fg": 453, "rotates": false }, - { "id": "overlay_wielded_m107a1", "fg": 485, "rotates": false }, - { "id": "overlay_wielded_m134", "fg": 486, "rotates": false }, - { "id": "overlay_wielded_m14a", "fg": 446, "rotates": false }, - { "id": "overlay_wielded_m14ebr", "fg": 446, "rotates": false }, - { "id": "overlay_wielded_m1903", "fg": 459, "rotates": false }, - { "id": "overlay_wielded_m1911", "fg": 450, "rotates": false }, - { "id": "overlay_wielded_m1918", "fg": 487, "rotates": false }, - { "id": "overlay_wielded_m1a", "fg": 451, "rotates": false }, - { "id": "overlay_wielded_m2010", "fg": 472, "rotates": false }, - { "id": "overlay_wielded_m202_flash", "fg": 488, "rotates": false }, - { "id": "overlay_wielded_m240", "fg": 487, "rotates": false }, - { "id": "overlay_wielded_m249", "fg": 487, "rotates": false }, - { "id": "overlay_wielded_m27iar", "fg": 448, "rotates": false }, - { "id": "overlay_wielded_m2browning", "fg": 489, "rotates": false }, - { "id": "overlay_wielded_m2browning_sawn", "fg": 487, "rotates": false }, - { "id": "overlay_wielded_m320", "fg": 481, "rotates": false }, - { "id": "overlay_wielded_m3_carlgustav", "fg": 490, "rotates": false }, - { "id": "overlay_wielded_m4a1", "fg": 585, "rotates": false }, - { "id": "overlay_wielded_m60", "fg": 487, "rotates": false }, - { "id": "overlay_wielded_m79", "fg": 481, "rotates": false }, - { "id": "overlay_wielded_m9", "fg": 450, "rotates": false }, - { "id": "overlay_wielded_mac_10", "fg": 491, "rotates": false }, - { "id": "overlay_wielded_mace", "fg": 429, "rotates": false }, - { "id": "overlay_wielded_machete", "fg": 546, "rotates": false }, - { "id": "overlay_wielded_makarov", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_makeshift_axe", "fg": 564, "rotates": false }, - { "id": "overlay_wielded_makeshift_crowbar", "fg": 561, "rotates": false }, - { "id": "overlay_wielded_makeshift_halberd", "fg": 430, "rotates": false }, - { "id": "overlay_wielded_makeshift_hammer", "fg": 551, "rotates": false }, - { "id": "overlay_wielded_makeshift_knife", "fg": 540, "rotates": false }, - { "id": "overlay_wielded_makeshift_machete", "fg": 546, "rotates": false }, - { "id": "overlay_wielded_makeshift_shovel", "fg": 567, "rotates": false }, - { "id": "overlay_wielded_mark19", "fg": 492, "rotates": false }, - { "id": "overlay_wielded_marlin_9a", "fg": 459, "rotates": false }, - { "id": "overlay_wielded_metal_tank", "fg": 396, "rotates": false }, - { "id": "overlay_wielded_metal_tank_little", "fg": 397, "rotates": false }, - { "id": "overlay_wielded_metal_tank_small", "fg": 397, "rotates": false }, - { "id": "overlay_wielded_mgl", "fg": 492, "rotates": false }, - { "id": "overlay_wielded_mininuke_launcher", "fg": 493, "rotates": false }, - { "id": "overlay_wielded_minispeargun", "fg": 494, "rotates": false }, - { "id": "overlay_wielded_mjolnir", "fg": 431, "rotates": false }, - { "id": "overlay_wielded_mjolnir_replica", "fg": 431, "rotates": false }, - { "id": "overlay_wielded_mop", "fg": 562, "rotates": false }, - { "id": "overlay_wielded_morningstar", "fg": 432, "rotates": false }, - { "id": "overlay_wielded_mosin44", "fg": 459, "rotates": false }, - { "id": "overlay_wielded_mosin44_ebr", "fg": 459, "rotates": false }, - { "id": "overlay_wielded_mosin91_30", "fg": 459, "rotates": false }, - { "id": "overlay_wielded_mosin91_30_ebr", "fg": 459, "rotates": false }, - { "id": "overlay_wielded_moss_brownie", "fg": 450, "rotates": false }, - { "id": "overlay_wielded_mossberg_500", "fg": 453, "rotates": false }, - { "id": "overlay_wielded_naginata", "fg": 440, "rotates": false }, - { "id": "overlay_wielded_naginata_survivor", "fg": 440, "rotates": false }, - { "id": "overlay_wielded_nailbat", "fg": 410, "rotates": false }, - { "id": "overlay_wielded_nailboard", "fg": 433, "rotates": false }, - { "id": "overlay_wielded_nailgun", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_nailrifle", "fg": 459, "rotates": false }, - { "id": "overlay_wielded_needlegun", "fg": 504, "rotates": false }, - { "id": "overlay_wielded_needlepistol", "fg": 502, "rotates": false }, - { "id": "overlay_wielded_nodachi", "fg": 563, "rotates": false }, - { "id": "overlay_wielded_nodachi_fake", "fg": 563, "rotates": false }, - { "id": "overlay_wielded_nx17", "fg": 522, "rotates": false }, - { "id": "overlay_wielded_pan", "fg": 434, "rotates": false }, - { "id": "overlay_wielded_pickaxe", "fg": 555, "rotates": false }, - { "id": "overlay_wielded_pipe", "fg": 435, "rotates": false }, - { "id": "overlay_wielded_pipe__gun_44", "fg": 495, "rotates": false }, - { "id": "overlay_wielded_pipe_combination_gun", "fg": 495, "rotates": false }, - { "id": "overlay_wielded_pipe_double_shotgun", "fg": 496, "rotates": false }, - { "id": "overlay_wielded_pipe_shotgun", "fg": 451, "rotates": false }, - { "id": "overlay_wielded_pipe_shotgunsawn", "fg": 584, "rotates": false }, - { "id": "overlay_wielded_pistol_flintlock", "fg": 497, "rotates": false }, - { "id": "overlay_wielded_pistol_pepperbox", "fg": 495, "rotates": false }, - { "id": "overlay_wielded_pitchfork", "fg": 436, "rotates": false }, - { "id": "overlay_wielded_plasma_rifle", "fg": 498, "rotates": false }, - { "id": "overlay_wielded_pockknife", "fg": 540, "rotates": false }, - { "id": "overlay_wielded_pointy_stick", "fg": 415, "rotates": false }, - { "id": "overlay_wielded_pool_cue", "fg": 415, "rotates": false }, - { "id": "overlay_wielded_pot", "fg": 434, "rotates": false }, - { "id": "overlay_wielded_pot_copper", "fg": 434, "rotates": false }, - { "id": "overlay_wielded_ppsh", "fg": 499, "rotates": false }, - { "id": "overlay_wielded_primitive_adze", "fg": 564, "rotates": false }, - { "id": "overlay_wielded_primitive_axe", "fg": 564, "rotates": false }, - { "id": "overlay_wielded_primitive_hammer", "fg": 564, "rotates": false }, - { "id": "overlay_wielded_primitive_knife", "fg": 535, "rotates": false }, - { "id": "overlay_wielded_primitive_shovel", "fg": 567, "rotates": false }, - { "id": "overlay_wielded_punch_dagger", "fg": 438, "rotates": false }, - { "id": "overlay_wielded_q_staff", "fg": 424, "rotates": false }, - { "id": "overlay_wielded_raging_bull", "fg": 450, "rotates": false }, - { "id": "overlay_wielded_rapier", "fg": 565, "rotates": false }, - { "id": "overlay_wielded_rapier_fake", "fg": 565, "rotates": false }, - { "id": "overlay_wielded_rebar_rifle", "fg": 477, "rotates": false }, - { "id": "overlay_wielded_recurbow", "fg": 465, "rotates": false }, - { "id": "overlay_wielded_reflexbow", "fg": 465, "rotates": false }, - { "id": "overlay_wielded_reflexrecurvebow", "fg": 500, "rotates": false }, - { "id": "overlay_wielded_remington_700", "fg": 459, "rotates": false }, - { "id": "overlay_wielded_remington_870", "fg": 451, "rotates": false }, - { "id": "overlay_wielded_rep_crossbow", "fg": 501, "rotates": false }, - { "id": "overlay_wielded_revolver_shotgun", "fg": 451, "rotates": false }, - { "id": "overlay_wielded_rifle_223", "fg": 496, "rotates": false }, - { "id": "overlay_wielded_rifle_22", "fg": 496, "rotates": false }, - { "id": "overlay_wielded_rifle_3006", "fg": 496, "rotates": false }, - { "id": "overlay_wielded_rifle_308", "fg": 496, "rotates": false }, - { "id": "overlay_wielded_rifle_38", "fg": 496, "rotates": false }, - { "id": "overlay_wielded_rifle_40", "fg": 496, "rotates": false }, - { "id": "overlay_wielded_rifle_44", "fg": 496, "rotates": false }, - { "id": "overlay_wielded_rifle_45", "fg": 496, "rotates": false }, - { "id": "overlay_wielded_rifle_9mm", "fg": 496, "rotates": false }, - { "id": "overlay_wielded_rifle_flintlock", "fg": 496, "rotates": false }, - { "id": "overlay_wielded_rm103a_pistol", "fg": 502, "rotates": false }, - { "id": "overlay_wielded_rm11b_sniper_rifle", "fg": 485, "rotates": false }, - { "id": "overlay_wielded_rm120c", "fg": 507, "rotates": false }, - { "id": "overlay_wielded_rm2000_smg", "fg": 504, "rotates": false }, - { "id": "overlay_wielded_rm20", "fg": 503, "rotates": false }, - { "id": "overlay_wielded_rm228", "fg": 478, "rotates": false }, - { "id": "overlay_wielded_rm298", "fg": 487, "rotates": false }, - { "id": "overlay_wielded_rm360_carbine", "fg": 505, "rotates": false }, - { "id": "overlay_wielded_rm451_flamethrower", "fg": 506, "rotates": false }, - { "id": "overlay_wielded_rm51_assault_rifle", "fg": 507, "rotates": false }, - { "id": "overlay_wielded_rm614_lmg", "fg": 503, "rotates": false }, - { "id": "overlay_wielded_rm802", "fg": 481, "rotates": false }, - { "id": "overlay_wielded_rm88_battle_rifle", "fg": 507, "rotates": false }, - { "id": "overlay_wielded_rm99_pistol", "fg": 502, "rotates": false }, - { "id": "overlay_wielded_rock", "fg": 438, "rotates": false }, - { "id": "overlay_wielded_rock_sock", "fg": 437, "rotates": false }, - { "id": "overlay_wielded_ruger_1022", "fg": 459, "rotates": false }, - { "id": "overlay_wielded_ruger_lcr_22", "fg": 450, "rotates": false }, - { "id": "overlay_wielded_ruger_lcr_38", "fg": 450, "rotates": false }, - { "id": "overlay_wielded_ruger_mini", "fg": 446, "rotates": false }, - { "id": "overlay_wielded_ruger_redhawk", "fg": 450, "rotates": false }, - { "id": "overlay_wielded_saiga_12", "fg": 475, "rotates": false }, - { "id": "overlay_wielded_saiga_sawn", "fg": 584, "rotates": false }, - { "id": "overlay_wielded_savage_111f", "fg": 459, "rotates": false }, - { "id": "overlay_wielded_saxophone", "fg": 582, "rotates": false }, - { "id": "overlay_wielded_scar_h", "fg": 509, "rotates": false }, - { "id": "overlay_wielded_scar_l", "fg": 509, "rotates": false }, - { "id": "overlay_wielded_scimitar_fake", "fg": 545, "rotates": false }, - { "id": "overlay_wielded_scimitar_inferior", "fg": 545, "rotates": false }, + { "id": "overlay_male_mutation_QUILLS", "fg": 186, "rotates": false }, + { "id": "overlay_male_mutation_SHELL", "fg": 270, "rotates": false }, + { "id": "overlay_male_mutation_SHELL2", "fg": 271, "rotates": false }, + { "id": "overlay_male_mutation_SLIMY", "fg": 273, "rotates": false }, + { "id": "overlay_male_mutation_SUNBURN", "fg": 256, "rotates": false }, + { "id": "overlay_male_mutation_TROGLO", "fg": 277, "rotates": false }, + { "id": "overlay_male_mutation_TROGLO2", "fg": 278, "rotates": false }, + { "id": "overlay_male_mutation_TROGLO3", "fg": 279, "rotates": false }, + { "id": "overlay_male_mutation_VISCOUS", "fg": 192, "rotates": false }, + { "id": "overlay_mutation_ALCMET", "fg": 193, "rotates": false }, + { "id": "overlay_mutation_ANTENNAE", "fg": 194, "rotates": false }, + { "id": "overlay_mutation_ANTLERS", "fg": 195, "rotates": false }, + { "id": "overlay_mutation_ARACHNID_ARMS", "fg": 196, "rotates": false }, + { "id": "overlay_mutation_ARACHNID_ARMS_OK", "fg": 196, "rotates": false }, + { "id": "overlay_mutation_ARM_TENTACLES", "fg": 197, "rotates": false }, + { "id": "overlay_mutation_ARM_TENTACLES_4", "fg": 198, "rotates": false }, + { "id": "overlay_mutation_ARM_TENTACLES_8", "fg": 199, "rotates": false }, + { "id": "overlay_mutation_BIRD_EYE", "fg": 176, "rotates": false }, + { "id": "overlay_mutation_CANINE_EARS", "fg": 200, "rotates": false }, + { "id": "overlay_mutation_CENOBITE", "fg": 201, "rotates": false }, + { "id": "overlay_mutation_CEPH_EYES", "fg": 177, "rotates": false }, + { "id": "overlay_male_mutation_CHITIN3", "fg": 261, "rotates": false }, + { "id": "overlay_female_mutation_CHITIN3", "fg": 236, "rotates": false }, + { "id": "overlay_male_mutation_CHITIN2", "fg": 260, "rotates": false }, + { "id": "overlay_female_mutation_CHITIN2", "fg": 235, "rotates": false }, + { "id": "overlay_male_mutation_CHITIN", "fg": 259, "rotates": false }, + { "id": "overlay_female_mutation_CHITIN", "fg": 234, "rotates": false }, + { "id": [ "overlay_mutation_CLAWS", "overlay_mutation_CLAWS_RETRACT_active" ], "fg": 284, "rotates": false }, + { "id": "overlay_mutation_CLAWS_RAT", "fg": 285, "rotates": false }, + { "id": "overlay_mutation_CLAWS_ST", "fg": 286, "rotates": false }, + { "id": "overlay_mutation_COMPOUND_EYES", "fg": 287, "rotates": false }, + { "id": "overlay_mutation_DEBUG_CLOAK", "fg": 202, "rotates": false }, + { "id": "overlay_mutation_DEBUG_HS", "fg": 202, "rotates": false }, + { "id": "overlay_mutation_DEBUG_LS", "fg": 202, "rotates": false }, + { "id": "overlay_mutation_DEBUG_MIND_CONTROL", "fg": 202, "rotates": false }, + { "id": "overlay_mutation_DEBUG_NIGHTVISION", "fg": 202, "rotates": false }, + { "id": "overlay_mutation_DEBUG_NODMG", "fg": 202, "rotates": false }, + { "id": "overlay_mutation_DEBUG_NOSCENT", "fg": 202, "rotates": false }, + { "id": "overlay_mutation_DEBUG_NOTEMP", "fg": 202, "rotates": false }, + { "id": "overlay_mutation_DEBUG_SILENT", "fg": 202, "rotates": false }, + { "id": "overlay_mutation_ELFA_EARS", "fg": 203, "rotates": false }, + { "id": [ "overlay_mutation_EYEBULGE" ], "fg": 289, "rotates": false }, + { "id": [ "overlay_male_mutation_FANGS" ], "fg": 263, "rotates": false }, + { "id": [ "overlay_female_mutation_FANGS" ], "fg": 238, "rotates": false }, + { "id": "overlay_female_mutation_FELINE_EARS", "fg": 239, "rotates": false }, + { "id": "overlay_male_mutation_FELINE_EARS", "fg": 264, "rotates": false }, + { "id": "overlay_mutation_FLOWERS", "fg": 204, "rotates": false }, + { "id": [ "overlay_mutation_HOOVES", "overlay_mutation_DEMON_HOOVES" ], "fg": 291, "rotates": false }, + { "id": "overlay_mutation_HORNS", "fg": 205, "rotates": false }, + { "id": [ "overlay_mutation_HORNS_CURLED", "overlay_mutation_DEMON_HORNS" ], "fg": 206, "rotates": false }, + { "id": [ "overlay_male_mutation_INCISORS" ], "fg": 266, "rotates": false }, + { "id": [ "overlay_female_mutation_INCISORS" ], "fg": 241, "rotates": false }, + { "id": "overlay_mutation_INSECT_ARMS", "fg": 207, "rotates": false }, + { "id": "overlay_mutation_INSECT_ARMS_OK", "fg": 207, "rotates": false }, + { "id": "overlay_mutation_LEG_TENTACLES", "fg": 208, "rotates": false }, + { "id": [ "overlay_mutation_LIZ_EYE" ], "fg": 292, "rotates": false }, + { "id": "overlay_mutation_LUPINE_EARS", "fg": 200, "rotates": false }, + { "id": [ "overlay_mutation_MEMBRANE" ], "fg": 294, "rotates": false }, + { "id": "overlay_mutation_MOUSE_EARS", "fg": 295, "rotates": false }, + { "id": "overlay_mutation_MOUTH_FLAPS", "fg": 209, "rotates": false }, + { "id": "overlay_mutation_MOUTH_TENTACLES", "fg": 210, "rotates": false }, + { "id": "overlay_mutation_MUZZLE_LONG", "fg": 211, "rotates": false }, + { "id": "overlay_mutation_MUZZLE_RAT", "fg": 212, "rotates": false }, + { "id": "overlay_mutation_M_BLOOM", "fg": 213, "rotates": false }, + { "id": [ "overlay_male_mutation_M_SKIN2" ], "fg": 267, "rotates": false }, + { "id": [ "overlay_female_mutation_M_SKIN2" ], "fg": 242, "rotates": false }, + { "id": "overlay_mutation_PAWS_LARGE", "fg": 214, "rotates": false }, + { "id": "overlay_mutation_RAP_TALONS", "fg": 298, "rotates": false }, + { "id": "overlay_mutation_ROOTS2", "fg": 215, "rotates": false }, + { "id": "overlay_mutation_ROOTS3", "fg": 215, "rotates": false }, + { "id": [ "overlay_male_mutation_SABER_TEETH" ], "fg": 268, "rotates": false }, + { "id": [ "overlay_female_mutation_SABER_TEETH" ], "fg": 243, "rotates": false }, + { "id": "overlay_male_mutation_SCALES", "fg": 269, "rotates": false }, + { "id": "overlay_female_mutation_SCALES", "fg": 244, "rotates": false }, + { "id": "overlay_male_mutation_SLEEK_SCALES", "fg": 272, "rotates": false }, + { "id": "overlay_female_mutation_SLEEK_SCALES", "fg": 247, "rotates": false }, + { "id": "overlay_male_mutation_THICK_SCALES", "fg": 275, "rotates": false }, + { "id": "overlay_female_mutation_THICK_SCALES", "fg": 250, "rotates": false }, + { "id": "overlay_mutation_SORES", "fg": 216, "rotates": false }, + { "id": "overlay_mutation_SPOTS", "fg": 216, "rotates": false }, + { "id": "overlay_mutation_TAIL_CATTLE", "fg": 217, "rotates": false }, + { "id": "overlay_mutation_TAIL_CLUB", "fg": 218, "rotates": false }, + { "id": "overlay_mutation_TAIL_FLUFFY", "fg": 218, "rotates": false }, + { "id": "overlay_mutation_TAIL_RAPTOR", "fg": 219, "rotates": false }, + { "id": "overlay_mutation_TAIL_RAT", "fg": 220, "rotates": false }, + { "id": "overlay_mutation_TAIL_STING", "fg": 221, "rotates": false }, + { "id": "overlay_mutation_TAIL_STUB", "fg": 222, "rotates": false }, + { "id": "overlay_mutation_VINES1", "fg": 223, "rotates": false }, + { "id": "overlay_mutation_VINES2", "fg": 224, "rotates": false }, + { "id": "overlay_mutation_VINES3", "fg": 224, "rotates": false }, + { "id": "overlay_mutation_WHISKERS_RAT", "fg": 225, "rotates": false }, + { "id": "overlay_mutation_WINGS_BAT", "fg": 226, "rotates": false }, + { "id": "overlay_mutation_WINGS_BIRD", "fg": 227, "rotates": false }, + { "id": "overlay_mutation_WINGS_BUTTERFLY", "fg": 228, "rotates": false }, + { "id": "overlay_mutation_WINGS_INSECT", "fg": 229, "rotates": false }, + { "id": "overlay_mutation_WINGS_STUB", "fg": 230, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_ZAPPA", "fg": 329, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_WALRUS", "fg": 328, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_VANDYKE", "fg": 327, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_SOUL_PATCH", "fg": 326, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_SHENANDOAH", "fg": 324, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_NECKBEARD", "fg": 322, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_HANDLEBAR", "fg": 318, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_BEARD", "fg": 310, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_CHIN_STRAP", "fg": 313, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_CHIN_CURTAIN", "fg": 312, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_CHIN_STRIP", "fg": 314, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_GUNSLINGER", "fg": 317, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_MUTTONCHOPS", "fg": 321, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_MUSTACHE", "fg": 320, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_HORSESHOE", "fg": 319, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_3DAYSTUBBLE", "fg": 308, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_CHEVRON", "fg": 311, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_SHORTBOXED", "fg": 325, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_ANCHOR", "fg": 309, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_ROYALE", "fg": 323, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_CIRCLE", "fg": 315, "rotates": false }, + { "id": "overlay_female_mutation_FACIAL_HAIR_GOATEE", "fg": 316, "rotates": false }, + { "id": "overlay_female_mutation_hair_black_crewcut", "fg": 330, "rotates": false }, + { "id": "overlay_female_mutation_hair_gray_crewcut", "fg": 342, "rotates": false }, + { "id": "overlay_female_mutation_hair_blond_crewcut", "fg": 334, "rotates": false }, + { "id": "overlay_female_mutation_hair_brown_crewcut", "fg": 338, "rotates": false }, + { "id": "overlay_female_mutation_hair_white_crewcut", "fg": 350, "rotates": false }, + { "id": "overlay_female_mutation_hair_red_crewcut", "fg": 346, "rotates": false }, + { "id": "overlay_female_mutation_hair_black_long", "fg": 331, "rotates": false }, + { "id": "overlay_female_mutation_hair_gray_long", "fg": 343, "rotates": false }, + { "id": "overlay_female_mutation_hair_blond_long", "fg": 335, "rotates": false }, + { "id": "overlay_female_mutation_hair_brown_long", "fg": 339, "rotates": false }, + { "id": "overlay_female_mutation_hair_white_long", "fg": 351, "rotates": false }, + { "id": "overlay_female_mutation_hair_red_long", "fg": 347, "rotates": false }, + { "id": "overlay_female_mutation_hair_black_medium", "fg": 332, "rotates": false }, + { "id": "overlay_female_mutation_hair_gray_medium", "fg": 344, "rotates": false }, + { "id": "overlay_female_mutation_hair_blond_medium", "fg": 336, "rotates": false }, + { "id": "overlay_female_mutation_hair_brown_medium", "fg": 340, "rotates": false }, + { "id": "overlay_female_mutation_hair_white_medium", "fg": 352, "rotates": false }, + { "id": "overlay_female_mutation_hair_red_medium", "fg": 348, "rotates": false }, + { "id": "overlay_female_mutation_hair_black_short", "fg": 333, "rotates": false }, + { "id": "overlay_female_mutation_hair_gray_short", "fg": 345, "rotates": false }, + { "id": "overlay_female_mutation_hair_blond_short", "fg": 337, "rotates": false }, + { "id": "overlay_female_mutation_hair_brown_short", "fg": 341, "rotates": false }, + { "id": "overlay_female_mutation_hair_white_short", "fg": 353, "rotates": false }, + { "id": "overlay_female_mutation_hair_red_short", "fg": 349, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_ZAPPA", "fg": 375, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_WALRUS", "fg": 374, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_VANDYKE", "fg": 373, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_SOUL_PATCH", "fg": 372, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_SHENANDOAH", "fg": 370, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_NECKBEARD", "fg": 368, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_HANDLEBAR", "fg": 364, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_BEARD", "fg": 356, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_CHIN_STRAP", "fg": 359, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_CHIN_CURTAIN", "fg": 358, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_CHIN_STRIP", "fg": 360, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_GUNSLINGER", "fg": 363, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_MUTTONCHOPS", "fg": 367, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_MUSTACHE", "fg": 366, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_HORSESHOE", "fg": 365, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_3DAYSTUBBLE", "fg": 354, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_CHEVRON", "fg": 357, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_SHORTBOXED", "fg": 371, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_ANCHOR", "fg": 355, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_ROYALE", "fg": 369, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_CIRCLE", "fg": 361, "rotates": false }, + { "id": "overlay_male_mutation_FACIAL_HAIR_GOATEE", "fg": 362, "rotates": false }, + { "id": "overlay_male_mutation_hair_black_crewcut", "fg": 376, "rotates": false }, + { "id": "overlay_male_mutation_hair_gray_crewcut", "fg": 388, "rotates": false }, + { "id": "overlay_male_mutation_hair_blond_crewcut", "fg": 380, "rotates": false }, + { "id": "overlay_male_mutation_hair_brown_crewcut", "fg": 384, "rotates": false }, + { "id": "overlay_male_mutation_hair_white_crewcut", "fg": 396, "rotates": false }, + { "id": "overlay_male_mutation_hair_red_crewcut", "fg": 392, "rotates": false }, + { "id": "overlay_male_mutation_hair_black_long", "fg": 377, "rotates": false }, + { "id": "overlay_male_mutation_hair_gray_long", "fg": 389, "rotates": false }, + { "id": "overlay_male_mutation_hair_blond_long", "fg": 381, "rotates": false }, + { "id": "overlay_male_mutation_hair_brown_long", "fg": 385, "rotates": false }, + { "id": "overlay_male_mutation_hair_white_long", "fg": 397, "rotates": false }, + { "id": "overlay_male_mutation_hair_red_long", "fg": 393, "rotates": false }, + { "id": "overlay_male_mutation_hair_black_medium", "fg": 378, "rotates": false }, + { "id": "overlay_male_mutation_hair_gray_medium", "fg": 390, "rotates": false }, + { "id": "overlay_male_mutation_hair_blond_medium", "fg": 382, "rotates": false }, + { "id": "overlay_male_mutation_hair_brown_medium", "fg": 386, "rotates": false }, + { "id": "overlay_male_mutation_hair_white_medium", "fg": 398, "rotates": false }, + { "id": "overlay_male_mutation_hair_red_medium", "fg": 394, "rotates": false }, + { "id": "overlay_male_mutation_hair_black_short", "fg": 379, "rotates": false }, + { "id": "overlay_male_mutation_hair_gray_short", "fg": 391, "rotates": false }, + { "id": "overlay_male_mutation_hair_blond_short", "fg": 383, "rotates": false }, + { "id": "overlay_male_mutation_hair_brown_short", "fg": 387, "rotates": false }, + { "id": "overlay_male_mutation_hair_white_short", "fg": 399, "rotates": false }, + { "id": "overlay_male_mutation_hair_red_short", "fg": 395, "rotates": false }, + { "id": "overlay_wielded_2_shot_special", "fg": 461, "rotates": false }, + { "id": "overlay_wielded_2x4", "fg": 433, "rotates": false }, + { "id": "overlay_wielded_30gal_barrel", "fg": 411, "rotates": false }, + { "id": "overlay_wielded_30gal_drum", "fg": 411, "rotates": false }, + { "id": "overlay_wielded_50pistol", "fg": 466, "rotates": false }, + { "id": "overlay_wielded_55gal_drum", "fg": 411, "rotates": false }, + { "id": "overlay_wielded_BFG", "fg": 468, "rotates": false }, + { "id": "overlay_wielded_LAW", "fg": 498, "rotates": false }, + { "id": "overlay_wielded_LAW_Packed", "fg": 498, "rotates": false }, + { "id": "overlay_wielded_PR24-extended", "fg": 417, "rotates": false }, + { "id": "overlay_wielded_PR24-retracted", "fg": 419, "rotates": false }, + { "id": "overlay_wielded_RPG", "fg": 524, "rotates": false }, + { "id": "overlay_wielded_TDI", "fg": 537, "rotates": false }, + { "id": "overlay_wielded_abzats", "fg": 523, "rotates": false }, + { "id": "overlay_wielded_acoustic_guitar", "fg": 596, "rotates": false }, + { "id": "overlay_wielded_acr", "fg": 462, "rotates": false }, + { "id": "overlay_wielded_airspeargun", "fg": 533, "rotates": false }, + { "id": "overlay_wielded_ak47", "fg": 463, "rotates": false }, + { "id": "overlay_wielded_ak74", "fg": 463, "rotates": false }, + { "id": "overlay_wielded_american_180", "fg": 521, "rotates": false }, + { "id": "overlay_wielded_an94", "fg": 463, "rotates": false }, + { "id": "overlay_wielded_ar15", "fg": 464, "rotates": false }, + { "id": "overlay_wielded_arccan", "fg": 538, "rotates": false }, + { "id": "overlay_wielded_arming_sword", "fg": 549, "rotates": false }, + { "id": "overlay_wielded_arming_sword_fake", "fg": 549, "rotates": false }, + { "id": "overlay_wielded_arming_sword_inferior", "fg": 549, "rotates": false }, + { "id": "overlay_wielded_arx160", "fg": 465, "rotates": false }, + { "id": "overlay_wielded_ashot", "fg": 466, "rotates": false }, + { "id": "overlay_wielded_ax", "fg": 544, "rotates": false }, + { "id": "overlay_wielded_bag_canvas", "fg": 935, "rotates": false }, + { "id": "overlay_wielded_bag_canvas_small", "fg": 935, "rotates": false }, + { "id": "overlay_wielded_bagh_nakha", "fg": 415, "rotates": false }, + { "id": "overlay_wielded_bagpipes", "fg": 597, "rotates": false }, + { "id": "overlay_wielded_banjo", "fg": 545, "rotates": false }, + { "id": "overlay_wielded_bat", "fg": 416, "rotates": false }, + { "id": "overlay_wielded_bat_metal", "fg": 418, "rotates": false }, + { "id": "overlay_wielded_baton-extended", "fg": 417, "rotates": false }, + { "id": "overlay_wielded_baton", "fg": 419, "rotates": false }, + { "id": "overlay_wielded_battleaxe", "fg": 544, "rotates": false }, + { "id": "overlay_wielded_battleaxe_fake", "fg": 544, "rotates": false }, + { "id": "overlay_wielded_battleaxe_inferior", "fg": 544, "rotates": false }, + { "id": "overlay_wielded_battletorch", "fg": 546, "rotates": false }, + { "id": "overlay_wielded_battletorch_done", "fg": 546, "rotates": false }, + { "id": "overlay_wielded_battletorch_lit", "fg": 547, "rotates": false }, + { "id": "overlay_wielded_bbgun", "fg": 467, "rotates": false }, + { "id": "overlay_wielded_bee_sting", "fg": 419, "rotates": false }, + { "id": "overlay_wielded_bh_m89", "fg": 475, "rotates": false }, + { "id": "overlay_wielded_bigun", "fg": 469, "rotates": false }, + { "id": "overlay_wielded_bio_blade_weapon", "fg": 420, "rotates": false }, + { "id": "overlay_wielded_bio_claws_weapon", "fg": 421, "rotates": false }, + { "id": "overlay_wielded_bio_sword_weapon", "fg": 420, "rotates": false }, + { "id": "overlay_wielded_blade", "fg": 562, "rotates": false }, + { "id": "overlay_wielded_blowgun", "fg": 553, "rotates": false }, + { "id": "overlay_wielded_blunderbuss", "fg": 473, "rotates": false }, + { "id": "overlay_wielded_bokken", "fg": 422, "rotates": false }, + { "id": "overlay_wielded_bomblet_launcher_double", "fg": 470, "rotates": false }, + { "id": "overlay_wielded_bomblet_launcher_dualshot", "fg": 471, "rotates": false }, + { "id": "overlay_wielded_bomblet_launcher_rotary", "fg": 472, "rotates": false }, + { "id": "overlay_wielded_bomblet_launcher_single", "fg": 473, "rotates": false }, + { "id": "overlay_wielded_bowling_axe", "fg": 423, "rotates": false }, + { "id": [ "overlay_wielded_brazier", "brazier" ], "fg": 5288, "rotates": false }, + { "id": "overlay_wielded_briefcase_smg", "fg": 474, "rotates": false }, + { "id": "overlay_wielded_broadfire_off", "fg": 549, "rotates": false }, + { "id": "overlay_wielded_broadfire_on", "fg": 550, "rotates": false }, + { "id": "overlay_wielded_broadsword", "fg": 549, "rotates": false }, + { "id": "overlay_wielded_broadsword_fake", "fg": 549, "rotates": false }, + { "id": "overlay_wielded_broadsword_inferior", "fg": 549, "rotates": false }, + { "id": "overlay_wielded_broom", "fg": 424, "rotates": false }, + { "id": "overlay_wielded_browning_blr", "fg": 475, "rotates": false }, + { "id": "overlay_wielded_bullet_crossbow", "fg": 476, "rotates": false }, + { "id": "overlay_wielded_bullwhip", "fg": 425, "rotates": false }, + { "id": "overlay_wielded_bwirebat", "fg": 426, "rotates": false }, + { "id": "overlay_wielded_calico", "fg": 477, "rotates": false }, + { "id": "overlay_wielded_candlestick", "fg": 427, "rotates": false }, + { "id": "overlay_wielded_cane", "fg": 428, "rotates": false }, + { "id": "overlay_wielded_carbine_flintlock", "fg": 475, "rotates": false }, + { "id": "overlay_wielded_carbine_flintlock_double", "fg": 475, "rotates": false }, + { "id": "overlay_wielded_carver_off", "fg": 551, "rotates": false }, + { "id": "overlay_wielded_carver_on", "fg": 551, "rotates": false }, + { "id": "overlay_wielded_chain", "fg": 429, "rotates": false }, + { "id": "overlay_wielded_chainsaw_off", "fg": 552, "rotates": false }, + { "id": "overlay_wielded_chainsaw_on", "fg": 552, "rotates": false }, + { "id": "overlay_wielded_chemical_thrower", "fg": 478, "rotates": false }, + { "id": "overlay_wielded_clarinet", "fg": 553, "rotates": false }, + { "id": "overlay_wielded_clay_hydria", "fg": 408, "rotates": false }, + { "id": "overlay_wielded_clay_watercont", "fg": 409, "rotates": false }, + { "id": "overlay_wielded_coilgun", "fg": 461, "rotates": false }, + { "id": "overlay_wielded_colt_army", "fg": 513, "rotates": false }, + { "id": "overlay_wielded_colt_navy", "fg": 513, "rotates": false }, + { "id": "overlay_wielded_combatsaw_off", "fg": 552, "rotates": false }, + { "id": "overlay_wielded_combatsaw_on", "fg": 552, "rotates": false }, + { "id": "overlay_wielded_combination_gun", "fg": 467, "rotates": false }, + { "id": "overlay_wielded_compbow", "fg": 480, "rotates": false }, + { "id": "overlay_wielded_compositebow", "fg": 481, "rotates": false }, + { "id": "overlay_wielded_cop_38", "fg": 466, "rotates": false }, + { "id": "overlay_wielded_copper_ax", "fg": 548, "rotates": false }, + { "id": "overlay_wielded_copper_knife", "fg": 556, "rotates": false }, + { "id": "overlay_wielded_corpse", "fg": 430, "rotates": false }, + { "id": [ "overlay_wielded_crossbow", "overlay_wielded_crossbow_makeshift" ], "fg": 482, "rotates": false }, + { "id": "overlay_wielded_crowbar", "fg": 577, "rotates": false }, + { "id": "overlay_wielded_crucible", "fg": 411, "rotates": false }, + { "id": "overlay_wielded_cs_lajatang_off", "fg": 554, "rotates": false }, + { "id": "overlay_wielded_cs_lajatang_on", "fg": 554, "rotates": false }, + { "id": "overlay_wielded_cu_pipe", "fg": 432, "rotates": false }, + { "id": "overlay_wielded_cudgel", "fg": 431, "rotates": false }, + { "id": "overlay_wielded_cutlass", "fg": 555, "rotates": false }, + { "id": "overlay_wielded_cutlass_fake", "fg": 555, "rotates": false }, + { "id": "overlay_wielded_cutlass_inferior", "fg": 555, "rotates": false }, + { "id": "overlay_wielded_cw-24", "fg": 463, "rotates": false }, + { "id": "overlay_wielded_cw-24hack", "fg": 463, "rotates": false }, + { "id": "overlay_wielded_cw-24k", "fg": 463, "rotates": false }, + { "id": "overlay_wielded_cw-24m", "fg": 463, "rotates": false }, + { "id": "overlay_wielded_cw-24m_hack", "fg": 463, "rotates": false }, + { "id": "overlay_wielded_cwd-63", "fg": 501, "rotates": false }, + { "id": "overlay_wielded_cx4", "fg": 483, "rotates": false }, + { "id": "overlay_wielded_dao", "fg": 561, "rotates": false }, + { "id": "overlay_wielded_deagle_44", "fg": 466, "rotates": false }, + { "id": "overlay_wielded_digging_stick", "fg": 433, "rotates": false }, + { "id": "overlay_wielded_diveknife", "fg": 556, "rotates": false }, + { "id": "overlay_wielded_doublespeargun", "fg": 533, "rotates": false }, + { "id": "overlay_wielded_dusksword", "fg": 457, "rotates": false }, + { "id": "overlay_wielded_e_handcuffs", "fg": 559, "rotates": false }, + { "id": "overlay_wielded_e_tool", "fg": 560, "rotates": false }, + { "id": "overlay_wielded_elc_bld", "fg": 557, "rotates": false }, + { "id": "overlay_wielded_elc_blds", "fg": 558, "rotates": false }, + { "id": "overlay_wielded_elec_chainsaw_off", "fg": 552, "rotates": false }, + { "id": "overlay_wielded_elec_chainsaw_on", "fg": 552, "rotates": false }, + { "id": "overlay_wielded_emp_gun", "fg": 484, "rotates": false }, + { "id": "overlay_wielded_estoc", "fg": 434, "rotates": false }, + { "id": "overlay_wielded_estoc_fake", "fg": 434, "rotates": false }, + { "id": "overlay_wielded_ethereal_crossbow", "fg": 482, "rotates": false }, + { "id": "overlay_wielded_fencing_epee", "fg": 434, "rotates": false }, + { "id": "overlay_wielded_fencing_foil", "fg": 434, "rotates": false }, + { "id": "overlay_wielded_fencing_sabre", "fg": 434, "rotates": false }, + { "id": "overlay_wielded_ficrico", "fg": 466, "rotates": false }, + { "id": "overlay_wielded_fighter_sting", "fg": 419, "rotates": false }, + { "id": "overlay_wielded_fire_ax", "fg": 564, "rotates": false }, + { "id": "overlay_wielded_fire_lance", "fg": 455, "rotates": false }, + { "id": "overlay_wielded_fishing_rod_basic", "fg": 565, "rotates": false }, + { "id": "overlay_wielded_fishing_rod_professional", "fg": 565, "rotates": false }, + { "id": "overlay_wielded_flamethrower", "fg": 485, "rotates": false }, + { "id": "overlay_wielded_flamethrower_crude", "fg": 485, "rotates": false }, + { "id": "overlay_wielded_flamethrower_simple", "fg": 485, "rotates": false }, + { "id": "overlay_wielded_flaregun", "fg": 461, "rotates": false }, + { "id": "overlay_wielded_flute", "fg": 553, "rotates": false }, + { "id": "overlay_wielded_fn57", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_fn_fal", "fg": 465, "rotates": false }, + { "id": "overlay_wielded_fn_p90", "fg": 486, "rotates": false }, + { "id": "overlay_wielded_ftk93", "fg": 487, "rotates": false }, + { "id": "overlay_wielded_garand", "fg": 488, "rotates": false }, + { "id": "overlay_wielded_gattler", "fg": 602, "rotates": false }, + { "id": "overlay_wielded_glaive", "fg": 456, "rotates": false }, + { "id": "overlay_wielded_glass_macuahuitl", "fg": 435, "rotates": false }, + { "id": "overlay_wielded_glass_shiv", "fg": 436, "rotates": false }, + { "id": "overlay_wielded_glock_17", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_glock_19", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_glock_22", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_glowstick", "fg": 568, "rotates": false }, + { "id": "overlay_wielded_glowstick_dead", "fg": 568, "rotates": false }, + { "id": "overlay_wielded_glowstick_lit", "fg": 569, "rotates": false }, + { "id": "overlay_wielded_golf_club", "fg": 437, "rotates": false }, + { "id": "overlay_wielded_grapnel", "fg": 438, "rotates": false }, + { "id": "overlay_wielded_gungnir_replica", "fg": 585, "rotates": false }, + { "id": "overlay_wielded_gunknife", "fg": 466, "rotates": false }, + { "id": "overlay_wielded_gunsword", "fg": 511, "rotates": false }, + { "id": "overlay_wielded_h&k416a5", "fg": 601, "rotates": false }, + { "id": "overlay_wielded_halberd", "fg": 446, "rotates": false }, + { "id": "overlay_wielded_halberd_fake", "fg": 446, "rotates": false }, + { "id": "overlay_wielded_halligan", "fg": 566, "rotates": false }, + { "id": "overlay_wielded_hammer", "fg": 567, "rotates": false }, + { "id": "overlay_wielded_hammer_sledge", "fg": 439, "rotates": false }, + { "id": "overlay_wielded_hand_crossbow", "fg": 489, "rotates": false }, + { "id": "overlay_wielded_handflare", "fg": 568, "rotates": false }, + { "id": "overlay_wielded_handflare_dead", "fg": 568, "rotates": false }, + { "id": "overlay_wielded_handflare_lit", "fg": 569, "rotates": false }, + { "id": "overlay_wielded_hatchet", "fg": 548, "rotates": false }, + { "id": "overlay_wielded_heavy_flashlight", "fg": 568, "rotates": false }, + { "id": "overlay_wielded_heavy_flashlight_on", "fg": 569, "rotates": false }, + { "id": "overlay_wielded_heavy_rail_rifle", "fg": 493, "rotates": false }, + { "id": "overlay_wielded_helsing", "fg": 490, "rotates": false }, + { "id": "overlay_wielded_henry_big_boy", "fg": 467, "rotates": false }, + { "id": "overlay_wielded_hexenhammer", "fg": 439, "rotates": false }, + { "id": "overlay_wielded_hexenhammer_active", "fg": 439, "rotates": false }, + { "id": "overlay_wielded_hk_g36", "fg": 492, "rotates": false }, + { "id": "overlay_wielded_hk_g3", "fg": 491, "rotates": false }, + { "id": "overlay_wielded_hk_g80", "fg": 493, "rotates": false }, + { "id": "overlay_wielded_hk_mp5", "fg": 494, "rotates": false }, + { "id": "overlay_wielded_hk_mp5eod", "fg": 530, "rotates": false }, + { "id": "overlay_wielded_hk_mp7", "fg": 507, "rotates": false }, + { "id": "overlay_wielded_hk_ucp", "fg": 461, "rotates": false }, + { "id": "overlay_wielded_hk_ump45", "fg": 494, "rotates": false }, + { "id": "overlay_wielded_hockey_stick", "fg": 437, "rotates": false }, + { "id": "overlay_wielded_hoe", "fg": 570, "rotates": false }, + { "id": "overlay_wielded_homewrecker", "fg": 426, "rotates": false }, + { "id": "overlay_wielded_honey_scraper", "fg": 551, "rotates": false }, + { "id": "overlay_wielded_huge_crossbow", "fg": 476, "rotates": false }, + { "id": "overlay_wielded_i_staff", "fg": 440, "rotates": false }, + { "id": "overlay_wielded_iceaxe", "fg": 571, "rotates": false }, + { "id": "overlay_wielded_ichaival_replica", "fg": 481, "rotates": false }, + { "id": "overlay_wielded_javelin", "fg": 431, "rotates": false }, + { "id": "overlay_wielded_javelin_copper", "fg": 431, "rotates": false }, + { "id": "overlay_wielded_javelin_iron", "fg": 441, "rotates": false }, + { "id": "overlay_wielded_javelin_stone", "fg": 441, "rotates": false }, + { "id": "overlay_wielded_jerrycan", "fg": 410, "rotates": false }, + { "id": "overlay_wielded_jerrycan_big", "fg": 410, "rotates": false }, + { "id": "overlay_wielded_ji", "fg": 456, "rotates": false }, + { "id": "overlay_wielded_jian", "fg": 457, "rotates": false }, + { "id": "overlay_wielded_jian_fake", "fg": 457, "rotates": false }, + { "id": "overlay_wielded_jian_inferior", "fg": 457, "rotates": false }, + { "id": "overlay_wielded_katana", "fg": 561, "rotates": false }, + { "id": "overlay_wielded_katana_fake", "fg": 561, "rotates": false }, + { "id": "overlay_wielded_katana_inferior", "fg": 561, "rotates": false }, + { "id": [ "overlay_wielded_keg", "overlay_wielded_keg_steel" ], "fg": 411, "rotates": false }, + { "id": "overlay_wielded_khopesh", "fg": 584, "rotates": false }, + { "id": "overlay_wielded_knife_butcher", "fg": 572, "rotates": false }, + { "id": "overlay_wielded_knife_combat", "fg": 573, "rotates": false }, + { "id": "overlay_wielded_knife_hunting", "fg": 573, "rotates": false }, + { "id": "overlay_wielded_knife_rambo", "fg": 573, "rotates": false }, + { "id": "overlay_wielded_knife_rm42", "fg": 573, "rotates": false }, + { "id": "overlay_wielded_knife_steak", "fg": 551, "rotates": false }, + { "id": "overlay_wielded_knife_swissarmy", "fg": 436, "rotates": false }, + { "id": "overlay_wielded_knife_trench", "fg": 573, "rotates": false }, + { "id": "overlay_wielded_knuckle_brass", "fg": 442, "rotates": false }, + { "id": "overlay_wielded_knuckle_katar", "fg": 443, "rotates": false }, + { "id": "overlay_wielded_knuckle_nail", "fg": 443, "rotates": false }, + { "id": "overlay_wielded_knuckle_steel", "fg": 442, "rotates": false }, + { "id": "overlay_wielded_kris", "fg": 574, "rotates": false }, + { "id": "overlay_wielded_kris_fake", "fg": 574, "rotates": false }, + { "id": "overlay_wielded_ksg", "fg": 492, "rotates": false }, + { "id": "overlay_wielded_ksub2000", "fg": 465, "rotates": false }, + { "id": "overlay_wielded_kukri", "fg": 575, "rotates": false }, + { "id": "overlay_wielded_l-stick", "fg": 568, "rotates": false }, + { "id": "overlay_wielded_l-stick_on", "fg": 569, "rotates": false }, + { "id": "overlay_wielded_l_bak_223", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_l_base_223", "fg": 500, "rotates": false }, + { "id": "overlay_wielded_l_car_223", "fg": 500, "rotates": false }, + { "id": "overlay_wielded_l_def_12", "fg": 469, "rotates": false }, + { "id": "overlay_wielded_l_dsr_223", "fg": 500, "rotates": false }, + { "id": "overlay_wielded_l_enforcer_45", "fg": 461, "rotates": false }, + { "id": "overlay_wielded_l_lmg_223", "fg": 500, "rotates": false }, + { "id": "overlay_wielded_l_long_45", "fg": 488, "rotates": false }, + { "id": "overlay_wielded_l_lookout_9mm", "fg": 461, "rotates": false }, + { "id": "overlay_wielded_l_mbr_223", "fg": 500, "rotates": false }, + { "id": "overlay_wielded_l_mp_45", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_l_mp_9mm", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_l_sp_45", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_l_sp_9mm", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_laevateinn_replica", "fg": 549, "rotates": false }, + { "id": "overlay_wielded_lajatang", "fg": 444, "rotates": false }, + { "id": "overlay_wielded_laser_cannon", "fg": 495, "rotates": false }, + { "id": "overlay_wielded_laser_rifle", "fg": 496, "rotates": false }, + { "id": "overlay_wielded_launcher_simple", "fg": 497, "rotates": false }, + { "id": "overlay_wielded_lemat_revolver", "fg": 461, "rotates": false }, + { "id": "overlay_wielded_levergun_44", "fg": 475, "rotates": false }, + { "id": "overlay_wielded_lobotomizer", "fg": 576, "rotates": false }, + { "id": "overlay_wielded_longbow", "fg": 499, "rotates": false }, + { "id": "overlay_wielded_longsword", "fg": 594, "rotates": false }, + { "id": "overlay_wielded_longsword_fake", "fg": 594, "rotates": false }, + { "id": "overlay_wielded_longsword_inferior", "fg": 594, "rotates": false }, + { "id": "overlay_wielded_ltcarb", "fg": 538, "rotates": false }, + { "id": "overlay_wielded_m1014", "fg": 469, "rotates": false }, + { "id": "overlay_wielded_m107a1", "fg": 501, "rotates": false }, + { "id": "overlay_wielded_m134", "fg": 502, "rotates": false }, + { "id": "overlay_wielded_m14a", "fg": 462, "rotates": false }, + { "id": "overlay_wielded_m14ebr", "fg": 462, "rotates": false }, + { "id": "overlay_wielded_m1903", "fg": 475, "rotates": false }, + { "id": "overlay_wielded_m1911", "fg": 466, "rotates": false }, + { "id": "overlay_wielded_m1918", "fg": 503, "rotates": false }, + { "id": "overlay_wielded_m1a", "fg": 467, "rotates": false }, + { "id": "overlay_wielded_m2010", "fg": 488, "rotates": false }, + { "id": "overlay_wielded_m202_flash", "fg": 504, "rotates": false }, + { "id": "overlay_wielded_m240", "fg": 503, "rotates": false }, + { "id": "overlay_wielded_m249", "fg": 503, "rotates": false }, + { "id": "overlay_wielded_m27iar", "fg": 464, "rotates": false }, + { "id": "overlay_wielded_m2browning", "fg": 505, "rotates": false }, + { "id": "overlay_wielded_m2browning_sawn", "fg": 503, "rotates": false }, + { "id": "overlay_wielded_m320", "fg": 497, "rotates": false }, + { "id": "overlay_wielded_m3_carlgustav", "fg": 506, "rotates": false }, + { "id": "overlay_wielded_m4a1", "fg": 601, "rotates": false }, + { "id": "overlay_wielded_m60", "fg": 503, "rotates": false }, + { "id": "overlay_wielded_m79", "fg": 497, "rotates": false }, + { "id": "overlay_wielded_m9", "fg": 466, "rotates": false }, + { "id": "overlay_wielded_mac_10", "fg": 507, "rotates": false }, + { "id": "overlay_wielded_mace", "fg": 445, "rotates": false }, + { "id": "overlay_wielded_machete", "fg": 562, "rotates": false }, + { "id": "overlay_wielded_makarov", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_makeshift_axe", "fg": 580, "rotates": false }, + { "id": "overlay_wielded_makeshift_crowbar", "fg": 577, "rotates": false }, + { "id": "overlay_wielded_makeshift_halberd", "fg": 446, "rotates": false }, + { "id": "overlay_wielded_makeshift_hammer", "fg": 567, "rotates": false }, + { "id": "overlay_wielded_makeshift_knife", "fg": 556, "rotates": false }, + { "id": "overlay_wielded_makeshift_machete", "fg": 562, "rotates": false }, + { "id": "overlay_wielded_makeshift_shovel", "fg": 583, "rotates": false }, + { "id": "overlay_wielded_mark19", "fg": 508, "rotates": false }, + { "id": "overlay_wielded_marlin_9a", "fg": 475, "rotates": false }, + { "id": "overlay_wielded_metal_tank", "fg": 412, "rotates": false }, + { "id": "overlay_wielded_metal_tank_little", "fg": 413, "rotates": false }, + { "id": "overlay_wielded_metal_tank_small", "fg": 413, "rotates": false }, + { "id": "overlay_wielded_mgl", "fg": 508, "rotates": false }, + { "id": "overlay_wielded_mininuke_launcher", "fg": 509, "rotates": false }, + { "id": "overlay_wielded_minispeargun", "fg": 510, "rotates": false }, + { "id": "overlay_wielded_mjolnir", "fg": 447, "rotates": false }, + { "id": "overlay_wielded_mjolnir_replica", "fg": 447, "rotates": false }, + { "id": "overlay_wielded_mop", "fg": 578, "rotates": false }, + { "id": "overlay_wielded_morningstar", "fg": 448, "rotates": false }, + { "id": "overlay_wielded_mosin44", "fg": 475, "rotates": false }, + { "id": "overlay_wielded_mosin44_ebr", "fg": 475, "rotates": false }, + { "id": "overlay_wielded_mosin91_30", "fg": 475, "rotates": false }, + { "id": "overlay_wielded_mosin91_30_ebr", "fg": 475, "rotates": false }, + { "id": "overlay_wielded_moss_brownie", "fg": 466, "rotates": false }, + { "id": "overlay_wielded_mossberg_500", "fg": 469, "rotates": false }, + { "id": "overlay_wielded_naginata", "fg": 456, "rotates": false }, + { "id": "overlay_wielded_naginata_survivor", "fg": 456, "rotates": false }, + { "id": "overlay_wielded_nailbat", "fg": 426, "rotates": false }, + { "id": "overlay_wielded_nailboard", "fg": 449, "rotates": false }, + { "id": "overlay_wielded_nailgun", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_nailrifle", "fg": 475, "rotates": false }, + { "id": "overlay_wielded_needlegun", "fg": 520, "rotates": false }, + { "id": "overlay_wielded_needlepistol", "fg": 518, "rotates": false }, + { "id": "overlay_wielded_nodachi", "fg": 579, "rotates": false }, + { "id": "overlay_wielded_nodachi_fake", "fg": 579, "rotates": false }, + { "id": "overlay_wielded_nx17", "fg": 538, "rotates": false }, + { "id": "overlay_wielded_pan", "fg": 450, "rotates": false }, + { "id": "overlay_wielded_pickaxe", "fg": 571, "rotates": false }, + { "id": "overlay_wielded_pipe", "fg": 451, "rotates": false }, + { "id": "overlay_wielded_pipe__gun_44", "fg": 511, "rotates": false }, + { "id": "overlay_wielded_pipe_combination_gun", "fg": 511, "rotates": false }, + { "id": "overlay_wielded_pipe_double_shotgun", "fg": 512, "rotates": false }, + { "id": "overlay_wielded_pipe_shotgun", "fg": 467, "rotates": false }, + { "id": "overlay_wielded_pipe_shotgunsawn", "fg": 600, "rotates": false }, + { "id": "overlay_wielded_pistol_flintlock", "fg": 513, "rotates": false }, + { "id": "overlay_wielded_pistol_pepperbox", "fg": 511, "rotates": false }, + { "id": "overlay_wielded_pitchfork", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_plasma_rifle", "fg": 514, "rotates": false }, + { "id": "overlay_wielded_pockknife", "fg": 556, "rotates": false }, + { "id": "overlay_wielded_pointy_stick", "fg": 431, "rotates": false }, + { "id": "overlay_wielded_pool_cue", "fg": 431, "rotates": false }, + { "id": "overlay_wielded_pot", "fg": 450, "rotates": false }, + { "id": "overlay_wielded_pot_copper", "fg": 450, "rotates": false }, + { "id": "overlay_wielded_ppsh", "fg": 515, "rotates": false }, + { "id": "overlay_wielded_primitive_adze", "fg": 580, "rotates": false }, + { "id": "overlay_wielded_primitive_axe", "fg": 580, "rotates": false }, + { "id": "overlay_wielded_primitive_hammer", "fg": 580, "rotates": false }, + { "id": "overlay_wielded_primitive_knife", "fg": 551, "rotates": false }, + { "id": "overlay_wielded_primitive_shovel", "fg": 583, "rotates": false }, + { "id": "overlay_wielded_punch_dagger", "fg": 454, "rotates": false }, + { "id": "overlay_wielded_q_staff", "fg": 440, "rotates": false }, + { "id": "overlay_wielded_raging_bull", "fg": 466, "rotates": false }, + { "id": "overlay_wielded_rapier", "fg": 581, "rotates": false }, + { "id": "overlay_wielded_rapier_fake", "fg": 581, "rotates": false }, + { "id": "overlay_wielded_rebar_rifle", "fg": 493, "rotates": false }, + { "id": "overlay_wielded_recurbow", "fg": 481, "rotates": false }, + { "id": "overlay_wielded_reflexbow", "fg": 481, "rotates": false }, + { "id": "overlay_wielded_reflexrecurvebow", "fg": 516, "rotates": false }, + { "id": "overlay_wielded_remington_700", "fg": 475, "rotates": false }, + { "id": "overlay_wielded_remington_870", "fg": 467, "rotates": false }, + { "id": "overlay_wielded_rep_crossbow", "fg": 517, "rotates": false }, + { "id": "overlay_wielded_revolver_shotgun", "fg": 467, "rotates": false }, + { "id": "overlay_wielded_rifle_223", "fg": 512, "rotates": false }, + { "id": "overlay_wielded_rifle_22", "fg": 512, "rotates": false }, + { "id": "overlay_wielded_rifle_3006", "fg": 512, "rotates": false }, + { "id": "overlay_wielded_rifle_308", "fg": 512, "rotates": false }, + { "id": "overlay_wielded_rifle_38", "fg": 512, "rotates": false }, + { "id": "overlay_wielded_rifle_40", "fg": 512, "rotates": false }, + { "id": "overlay_wielded_rifle_44", "fg": 512, "rotates": false }, + { "id": "overlay_wielded_rifle_45", "fg": 512, "rotates": false }, + { "id": "overlay_wielded_rifle_9mm", "fg": 512, "rotates": false }, + { "id": "overlay_wielded_rifle_flintlock", "fg": 512, "rotates": false }, + { "id": "overlay_wielded_rm103a_pistol", "fg": 518, "rotates": false }, + { "id": "overlay_wielded_rm11b_sniper_rifle", "fg": 501, "rotates": false }, + { "id": "overlay_wielded_rm120c", "fg": 523, "rotates": false }, + { "id": "overlay_wielded_rm2000_smg", "fg": 520, "rotates": false }, + { "id": "overlay_wielded_rm20", "fg": 519, "rotates": false }, + { "id": "overlay_wielded_rm228", "fg": 494, "rotates": false }, + { "id": "overlay_wielded_rm298", "fg": 503, "rotates": false }, + { "id": "overlay_wielded_rm360_carbine", "fg": 521, "rotates": false }, + { "id": "overlay_wielded_rm451_flamethrower", "fg": 522, "rotates": false }, + { "id": "overlay_wielded_rm51_assault_rifle", "fg": 523, "rotates": false }, + { "id": "overlay_wielded_rm614_lmg", "fg": 519, "rotates": false }, + { "id": "overlay_wielded_rm802", "fg": 497, "rotates": false }, + { "id": "overlay_wielded_rm88_battle_rifle", "fg": 523, "rotates": false }, + { "id": "overlay_wielded_rm99_pistol", "fg": 518, "rotates": false }, + { "id": "overlay_wielded_rock", "fg": 454, "rotates": false }, + { "id": "overlay_wielded_rock_sock", "fg": 453, "rotates": false }, + { "id": "overlay_wielded_ruger_1022", "fg": 475, "rotates": false }, + { "id": "overlay_wielded_ruger_lcr_22", "fg": 466, "rotates": false }, + { "id": "overlay_wielded_ruger_lcr_38", "fg": 466, "rotates": false }, + { "id": "overlay_wielded_ruger_mini", "fg": 462, "rotates": false }, + { "id": "overlay_wielded_ruger_redhawk", "fg": 466, "rotates": false }, + { "id": "overlay_wielded_saiga_12", "fg": 491, "rotates": false }, + { "id": "overlay_wielded_saiga_sawn", "fg": 600, "rotates": false }, + { "id": "overlay_wielded_savage_111f", "fg": 475, "rotates": false }, + { "id": "overlay_wielded_saxophone", "fg": 598, "rotates": false }, + { "id": "overlay_wielded_scar_h", "fg": 525, "rotates": false }, + { "id": "overlay_wielded_scar_l", "fg": 525, "rotates": false }, + { "id": "overlay_wielded_scimitar_fake", "fg": 561, "rotates": false }, + { "id": "overlay_wielded_scimitar_inferior", "fg": 561, "rotates": false }, { "id": [ "overlay_wielded_scimitar", "overlay_wielded_cavalry_sabre", "overlay_wielded_cavalry_sabre_fake" ], - "fg": 545, + "fg": 561, "rotates": false }, - { "id": "overlay_wielded_scourge_staff", "fg": 510, "rotates": false }, - { "id": "overlay_wielded_scrap", "fg": 438, "rotates": false }, - { "id": "overlay_wielded_scrap_copper", "fg": 438, "rotates": false }, - { "id": "overlay_wielded_screwdriver", "fg": 403, "rotates": false }, - { "id": "overlay_wielded_screwdriver_set", "fg": 403, "rotates": false }, - { "id": "overlay_wielded_scythe", "fg": 566, "rotates": false }, - { "id": "overlay_wielded_scythe_war", "fg": 566, "rotates": false }, - { "id": "overlay_wielded_selfbow", "fg": 483, "rotates": false }, - { "id": "overlay_wielded_sharp_rock", "fg": 438, "rotates": false }, - { "id": "overlay_wielded_sharp_toothbrush", "fg": 403, "rotates": false }, - { "id": "overlay_wielded_shishkebab_off", "fg": 546, "rotates": false }, - { "id": "overlay_wielded_shishkebab_on", "fg": 547, "rotates": false }, - { "id": "overlay_wielded_shock_staff", "fg": 424, "rotates": false }, - { "id": "overlay_wielded_shockcannon", "fg": 511, "rotates": false }, - { "id": "overlay_wielded_shocktonfa_off", "fg": 442, "rotates": false }, - { "id": "overlay_wielded_shocktonfa_on", "fg": 442, "rotates": false }, - { "id": "overlay_wielded_shortbow", "fg": 512, "rotates": false }, - { "id": "overlay_wielded_shotgun_d", "fg": 496, "rotates": false }, - { "id": "overlay_wielded_shotgun_s", "fg": 451, "rotates": false }, - { "id": "overlay_wielded_shotgun_sawn", "fg": 584, "rotates": false }, - { "id": "overlay_wielded_shovel", "fg": 567, "rotates": false }, - { "id": "overlay_wielded_sickle", "fg": 568, "rotates": false }, - { "id": "overlay_wielded_sig552", "fg": 513, "rotates": false }, - { "id": "overlay_wielded_sig_40", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_sig_mosquito", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_sig_p230", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_skorpion_61", "fg": 514, "rotates": false }, - { "id": "overlay_wielded_skorpion_82", "fg": 514, "rotates": false }, - { "id": "overlay_wielded_sks", "fg": 447, "rotates": false }, - { "id": "overlay_wielded_sling", "fg": 515, "rotates": false }, - { "id": "overlay_wielded_slingshot", "fg": 516, "rotates": false }, - { "id": "overlay_wielded_smg_22", "fg": 491, "rotates": false }, - { "id": "overlay_wielded_smg_38", "fg": 491, "rotates": false }, - { "id": "overlay_wielded_smg_40", "fg": 491, "rotates": false }, - { "id": "overlay_wielded_smg_45", "fg": 491, "rotates": false }, - { "id": "overlay_wielded_smg_9mm", "fg": 491, "rotates": false }, - { "id": "overlay_wielded_spear_copper", "fg": 439, "rotates": false }, - { "id": "overlay_wielded_spear_dory", "fg": 439, "rotates": false }, - { "id": "overlay_wielded_spear_forked", "fg": 436, "rotates": false }, - { "id": "overlay_wielded_spear_knife", "fg": 439, "rotates": false }, - { "id": "overlay_wielded_spear_pestilence", "fg": 569, "rotates": false }, - { "id": "overlay_wielded_spear_rebar", "fg": 439, "rotates": false }, - { "id": [ "overlay_wielded_spear_steel", "overlay_wielded_spear_pipe" ], "fg": 439, "rotates": false }, - { "id": "overlay_wielded_spear_survivor", "fg": 440, "rotates": false }, - { "id": "overlay_wielded_spear_wood", "fg": 425, "rotates": false }, - { "id": "overlay_wielded_speargun", "fg": 517, "rotates": false }, - { "id": "overlay_wielded_spike", "fg": 403, "rotates": false }, - { "id": "overlay_wielded_spiked_plate", "fg": 433, "rotates": false }, - { "id": "overlay_wielded_steel_chunk", "fg": 438, "rotates": false }, - { "id": "overlay_wielded_steel_lump", "fg": 438, "rotates": false }, - { "id": "overlay_wielded_sten", "fg": 518, "rotates": false }, - { "id": "overlay_wielded_steyr_aug", "fg": 519, "rotates": false }, - { "id": "overlay_wielded_stick", "fg": 416, "rotates": false }, - { "id": "overlay_wielded_stormbringer", "fg": 533, "rotates": false }, - { "id": "overlay_wielded_stormbringer_on", "fg": 570, "rotates": false }, - { "id": "overlay_wielded_surv_carbine_223", "fg": 461, "rotates": false }, - { "id": "overlay_wielded_surv_hand_cannon", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_surv_levershotgun", "fg": 451, "rotates": false }, - { "id": "overlay_wielded_surv_rocket_launcher", "fg": 490, "rotates": false }, - { "id": "overlay_wielded_surv_six_shooter", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_survbow", "fg": 520, "rotates": false }, - { "id": "overlay_wielded_survivor_machete", "fg": 546, "rotates": false }, - { "id": "overlay_wielded_survivor_special_700", "fg": 472, "rotates": false }, - { "id": "overlay_wielded_svs-24", "fg": 447, "rotates": false }, - { "id": "overlay_wielded_svs-24c", "fg": 447, "rotates": false }, - { "id": "overlay_wielded_sw629", "fg": 450, "rotates": false }, - { "id": "overlay_wielded_sw_22", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_sw_500", "fg": 450, "rotates": false }, - { "id": "overlay_wielded_sw_610", "fg": 450, "rotates": false }, - { "id": "overlay_wielded_sw_619", "fg": 450, "rotates": false }, - { "id": "overlay_wielded_switchblade", "fg": 420, "rotates": false }, - { "id": "overlay_wielded_sword_crude", "fg": 441, "rotates": false }, - { "id": "overlay_wielded_sword_forged", "fg": 441, "rotates": false }, - { "id": "overlay_wielded_sword_nail", "fg": 410, "rotates": false }, - { "id": "overlay_wielded_sword_wood", "fg": 406, "rotates": false }, - { "id": "overlay_wielded_sword_xiphos", "fg": 547, "rotates": false }, - { "id": "overlay_wielded_tanto", "fg": 571, "rotates": false }, - { "id": "overlay_wielded_taurus_38", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_tazer", "fg": 572, "rotates": false }, - { "id": "overlay_wielded_tec9", "fg": 491, "rotates": false }, - { "id": "overlay_wielded_teleumbrella", "fg": 443, "rotates": false }, - { "id": "overlay_wielded_tihar", "fg": 505, "rotates": false }, - { "id": "overlay_wielded_tokarev", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_tommygun", "fg": 514, "rotates": false }, - { "id": "overlay_wielded_tonfa", "fg": 442, "rotates": false }, - { "id": "overlay_wielded_tonfa_wood", "fg": 442, "rotates": false }, - { "id": "overlay_wielded_tool_anfo_charge", "fg": 395, "rotates": false }, - { "id": "overlay_wielded_tool_anfo_charge_act", "fg": 395, "rotates": false }, - { "id": "overlay_wielded_tool_rdx_charge", "fg": 395, "rotates": false }, - { "id": "overlay_wielded_tool_rdx_charge_act", "fg": 395, "rotates": false }, - { "id": "overlay_wielded_torch", "fg": 530, "rotates": false }, - { "id": "overlay_wielded_torch_done", "fg": 530, "rotates": false }, - { "id": "overlay_wielded_torch_lit", "fg": 531, "rotates": false }, - { "id": "overlay_wielded_trex_gun", "fg": 459, "rotates": false }, - { "id": "overlay_wielded_trimmer_off", "fg": 536, "rotates": false }, - { "id": "overlay_wielded_trimmer_on", "fg": 536, "rotates": false }, - { "id": "overlay_wielded_triple_launcher_simple", "fg": 449, "rotates": false }, - { "id": "overlay_wielded_trumpet", "fg": 573, "rotates": false }, - { "id": "overlay_wielded_tuba", "fg": 583, "rotates": false }, - { "id": "overlay_wielded_ukulele", "fg": 574, "rotates": false }, - { "id": "overlay_wielded_umbrella", "fg": 443, "rotates": false }, - { "id": "overlay_wielded_ups_rifle", "fg": 523, "rotates": false }, - { "id": "overlay_wielded_ups_rifle_crank", "fg": 524, "rotates": false }, - { "id": "overlay_wielded_usp_45", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_usp_9mm", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_uzi", "fg": 525, "rotates": false }, - { "id": "overlay_wielded_v29", "fg": 526, "rotates": false }, - { "id": "overlay_wielded_v29_cheap", "fg": 527, "rotates": false }, - { "id": "overlay_wielded_vibrator", "fg": 575, "rotates": false }, - { "id": "overlay_wielded_violin", "fg": 576, "rotates": false }, - { "id": "overlay_wielded_violin_golden", "fg": 576, "rotates": false }, - { "id": "overlay_wielded_wakizashi", "fg": 545, "rotates": false }, - { "id": "overlay_wielded_wakizashi_fake", "fg": 545, "rotates": false }, - { "id": "overlay_wielded_wakizashi_inferior", "fg": 545, "rotates": false }, - { "id": "overlay_wielded_walther_ppk", "fg": 463, "rotates": false }, - { "id": "overlay_wielded_warhammer", "fg": 444, "rotates": false }, - { "id": "overlay_wielded_wasp_sting", "fg": 403, "rotates": false }, - { "id": "overlay_wielded_weatherby_5", "fg": 453, "rotates": false }, - { "id": "overlay_wielded_win70", "fg": 505, "rotates": false }, - { "id": "overlay_wielded_wooden_barrel", "fg": 398, "rotates": false }, - { "id": "overlay_wielded_wrench", "fg": 577, "rotates": false }, - { "id": "overlay_wielded_wristrocket", "fg": 516, "rotates": false }, - { "id": "overlay_wielded_xacto", "fg": 420, "rotates": false }, - { "id": "overlay_wielded_zweifire_off", "fg": 578, "rotates": false }, - { "id": "overlay_wielded_zweifire_on", "fg": 579, "rotates": false }, - { "id": "overlay_wielded_zweihander", "fg": 578, "rotates": false }, - { "id": "overlay_wielded_zweihander_fake", "fg": 578, "rotates": false }, - { "id": "overlay_wielded_zweihander_inferior", "fg": 578, "rotates": false }, - { "id": "overlay_female_worn_dress_shirt", "fg": 628, "rotates": false }, - { "id": "overlay_female_worn_jumpsuit", "fg": 629, "rotates": false }, - { "id": "overlay_female_worn_jumpsuit_xl", "fg": 629, "rotates": false }, - { "id": "overlay_female_worn_linuxtshirt", "fg": 633, "rotates": false }, - { "id": "overlay_female_worn_long_underpants", "fg": 630, "rotates": false }, - { "id": "overlay_female_worn_long_undertop", "fg": 631, "rotates": false }, - { "id": "overlay_female_worn_longshirt", "fg": 632, "rotates": false }, - { "id": "overlay_female_worn_polo_shirt", "fg": 633, "rotates": false }, - { "id": "overlay_female_worn_postman_shirt", "fg": 628, "rotates": false }, - { "id": "overlay_female_worn_sheriffshirt", "fg": 632, "rotates": false }, - { "id": "overlay_female_worn_thermal_outfit", "fg": 588, "rotates": false }, - { "id": "overlay_female_worn_thermal_outfit_on", "fg": 588, "rotates": false }, - { "id": "overlay_female_worn_thermal_suit", "fg": 589, "rotates": false }, - { "id": "overlay_female_worn_thermal_suit_on", "fg": 589, "rotates": false }, - { "id": "overlay_female_worn_towel", "fg": 590, "rotates": false }, - { "id": "overlay_female_worn_towel_soiled", "fg": 643, "rotates": false }, - { "id": "overlay_female_worn_towel_wet", "fg": 590, "rotates": false }, - { "id": "overlay_female_worn_tshirt", "fg": 633, "rotates": false }, - { "id": "overlay_female_worn_tshirt_text", "fg": 633, "rotates": false }, - { "id": "overlay_female_worn_under_armor", "fg": 634, "rotates": false }, - { "id": "overlay_female_worn_union_suit", "fg": 635, "rotates": false }, - { "id": "overlay_male_worn_dress_shirt", "fg": 636, "rotates": false }, - { "id": "overlay_male_worn_jumpsuit", "fg": 637, "rotates": false }, - { "id": "overlay_male_worn_jumpsuit_xl", "fg": 637, "rotates": false }, - { "id": "overlay_male_worn_linuxtshirt", "fg": 642, "rotates": false }, - { "id": "overlay_male_worn_long_underpants", "fg": 638, "rotates": false }, - { "id": "overlay_male_worn_long_undertop", "fg": 639, "rotates": false }, - { "id": "overlay_male_worn_longshirt", "fg": 640, "rotates": false }, - { "id": "overlay_male_worn_polo_shirt", "fg": 642, "rotates": false }, - { "id": "overlay_male_worn_postman_shirt", "fg": 636, "rotates": false }, - { "id": "overlay_male_worn_sheriffshirt", "fg": 640, "rotates": false }, - { "id": "overlay_male_worn_thermal_outfit", "fg": 591, "rotates": false }, - { "id": "overlay_male_worn_thermal_outfit_on", "fg": 591, "rotates": false }, - { "id": "overlay_male_worn_thermal_suit", "fg": 592, "rotates": false }, - { "id": "overlay_male_worn_thermal_suit_on", "fg": 592, "rotates": false }, - { "id": "overlay_male_worn_towel", "fg": 593, "rotates": false }, - { "id": "overlay_male_worn_towel_soiled", "fg": 644, "rotates": false }, - { "id": "overlay_male_worn_towel_wet", "fg": 593, "rotates": false }, - { "id": "overlay_male_worn_tshirt", "fg": 642, "rotates": false }, - { "id": "overlay_male_worn_tshirt_text", "fg": 642, "rotates": false }, - { "id": "overlay_male_worn_under_armor", "fg": 646, "rotates": false }, - { "id": "overlay_male_worn_union_suit", "fg": 648, "rotates": false }, - { "id": "overlay_worn_2byarm_guard", "fg": 659, "rotates": false }, - { "id": "overlay_worn_2byshin_guard", "fg": 816, "rotates": false }, - { "id": "overlay_worn_XL_holster", "fg": 883, "rotates": false }, - { "id": "overlay_worn_aep_suit", "fg": 651, "rotates": false }, - { "id": "overlay_worn_american_flag", "fg": 655, "rotates": false }, - { "id": [ "overlay_worn_ammo_satchel", "overlay_worn_flintlock_pouch" ], "fg": 782, "rotates": false }, - { "id": "overlay_worn_anbc_suit", "fg": 657, "rotates": false }, - { "id": "overlay_worn_apron_leather", "fg": 936, "rotates": false }, - { "id": "overlay_worn_arm_splint", "fg": 668, "rotates": false }, - { "id": "overlay_worn_arm_warmers", "fg": 669, "rotates": false }, - { "id": "overlay_worn_armguard_acidchitin", "fg": 656, "rotates": false }, - { "id": "overlay_worn_armguard_chitin", "fg": 658, "rotates": false }, - { "id": "overlay_worn_armguard_hard", "fg": 659, "rotates": false }, - { "id": "overlay_worn_armguard_larmor", "fg": 658, "rotates": false }, - { "id": [ "overlay_worn_armguard_metal", "overlay_worn_armguard_lightplate" ], "fg": 986, "rotates": false }, - { "id": "overlay_worn_armguard_paper", "fg": 660, "rotates": false }, - { "id": "overlay_worn_armguard_soft", "fg": 659, "rotates": false }, - { "id": "overlay_worn_armor_acidchitin", "fg": 654, "rotates": false }, - { "id": "overlay_worn_armor_blarmor", "fg": 662, "rotates": false }, - { "id": "overlay_worn_armor_chitin", "fg": 661, "rotates": false }, - { "id": "overlay_worn_armor_cuirass", "fg": 712, "rotates": false }, - { "id": "overlay_worn_armor_farmor", "fg": 662, "rotates": false }, - { "id": "overlay_worn_armor_lamellar", "fg": 662, "rotates": false }, - { "id": "overlay_worn_armor_larmor", "fg": 662, "rotates": false }, - { "id": "overlay_worn_armor_lightplate", "fg": 664, "rotates": false }, - { "id": [ "overlay_worn_armor_lorica", "overlay_worn_cuirass_lightplate" ], "fg": 712, "rotates": false }, - { "id": "overlay_worn_armor_nomad", "fg": 953, "rotates": false }, - { "id": "overlay_worn_armor_plarmor", "fg": 663, "rotates": false }, - { "id": "overlay_worn_armor_plate", "fg": 664, "rotates": false }, - { "id": "overlay_worn_armor_samurai", "fg": 665, "rotates": false }, - { "id": "overlay_worn_armor_scavenger", "fg": 954, "rotates": false }, - { "id": "overlay_worn_armor_scrapsuit", "fg": 666, "rotates": false }, - { "id": "overlay_worn_armor_wyrm", "fg": 594, "rotates": false }, - { "id": "overlay_worn_army_top", "fg": 667, "rotates": false }, - { "id": "overlay_worn_b_shorts", "fg": 705, "rotates": false }, - { "id": "overlay_worn_back_holster", "fg": 671, "rotates": false }, - { "id": "overlay_worn_backpack", "fg": 670, "rotates": false }, - { "id": "overlay_worn_backpack_leather", "fg": 670, "rotates": false }, - { "id": "overlay_worn_badge_doctor", "fg": 955, "rotates": false }, - { "id": "overlay_worn_badge_foodkid", "fg": 956, "rotates": false }, - { "id": "overlay_worn_balclava", "fg": 672, "rotates": false }, - { "id": "overlay_worn_baldric", "fg": 883, "rotates": false }, - { "id": "overlay_worn_bandana", "fg": 673, "rotates": false }, - { "id": "overlay_worn_bastsandals", "fg": 674, "rotates": false }, - { "id": "overlay_worn_bead_bracelet", "fg": 957, "rotates": false }, - { "id": "overlay_worn_bead_ear", "fg": 958, "rotates": false }, - { "id": "overlay_worn_beekeeping_gloves", "fg": 748, "rotates": false }, - { "id": "overlay_worn_beekeeping_hood", "fg": 959, "rotates": false }, - { "id": "overlay_worn_beekeeping_suit", "fg": 675, "rotates": false }, - { "id": "overlay_worn_beret", "fg": 676, "rotates": false }, - { "id": "overlay_worn_beret_wool", "fg": 676, "rotates": false }, - { "id": "overlay_worn_bikini_bottom", "fg": 677, "rotates": false }, - { "id": "overlay_worn_bikini_top", "fg": 678, "rotates": false }, - { "id": "overlay_worn_bikini_top_fur", "fg": 714, "rotates": false }, - { "id": "overlay_worn_bikini_top_leather", "fg": 714, "rotates": false }, - { "id": "overlay_worn_bindle", "fg": 679, "rotates": false }, - { "id": "overlay_worn_blanket", "fg": 680, "rotates": false }, - { "id": "overlay_worn_blazer", "fg": 681, "rotates": false }, - { "id": "overlay_worn_blindfold", "fg": 682, "rotates": false }, - { "id": "overlay_worn_bondage_mask", "fg": 683, "rotates": false }, - { "id": "overlay_worn_bondage_suit", "fg": 684, "rotates": false }, - { "id": "overlay_worn_boots", "fg": 685, "rotates": false }, - { "id": "overlay_worn_boots_acidchitin", "fg": 649, "rotates": false }, - { "id": "overlay_worn_boots_bunker", "fg": 692, "rotates": false }, - { "id": "overlay_worn_boots_chitin", "fg": 688, "rotates": false }, - { "id": "overlay_worn_boots_combat", "fg": 689, "rotates": false }, - { "id": "overlay_worn_boots_fsurvivor", "fg": 692, "rotates": false }, - { "id": "overlay_worn_boots_fur", "fg": 691, "rotates": false }, - { "id": "overlay_worn_boots_h20survivor", "fg": 944, "rotates": false }, - { "id": "overlay_worn_boots_hiking", "fg": 685, "rotates": false }, - { "id": "overlay_worn_boots_hsurvivor", "fg": 690, "rotates": false }, - { "id": "overlay_worn_boots_larmor", "fg": 691, "rotates": false }, - { "id": "overlay_worn_boots_lsurvivor", "fg": 691, "rotates": false }, - { "id": "overlay_worn_boots_plate", "fg": 691, "rotates": false }, - { "id": "overlay_worn_boots_steel", "fg": 693, "rotates": false }, - { "id": "overlay_worn_boots_survivor", "fg": 691, "rotates": false }, - { "id": "overlay_worn_boots_western", "fg": 694, "rotates": false }, - { "id": "overlay_worn_boots_winter", "fg": 695, "rotates": false }, - { "id": "overlay_worn_boots_wsurvivor", "fg": 695, "rotates": false }, - { "id": "overlay_worn_boots_xlsurvivor", "fg": 695, "rotates": false }, - { "id": "overlay_worn_bootsheath", "fg": 686, "rotates": false }, - { "id": "overlay_worn_bootstrap", "fg": 687, "rotates": false }, - { "id": "overlay_worn_boxer_briefs", "fg": 696, "rotates": false }, - { "id": "overlay_worn_boxer_shorts", "fg": 696, "rotates": false }, - { "id": "overlay_worn_boxing_gloves", "fg": 697, "rotates": false }, - { "id": "overlay_worn_boy_shorts", "fg": 698, "rotates": false }, - { "id": "overlay_worn_bra", "fg": 699, "rotates": false }, - { "id": "overlay_worn_breeches", "fg": 861, "rotates": false }, - { "id": "overlay_worn_briefcase", "fg": 700, "rotates": false }, - { "id": "overlay_worn_briefs", "fg": 701, "rotates": false }, - { "id": "overlay_worn_bronze_medal", "fg": 962, "rotates": false }, - { "id": "overlay_worn_bscabbard", "fg": 702, "rotates": false }, - { "id": "overlay_worn_bunker_coat", "fg": 703, "rotates": false }, - { "id": "overlay_worn_bunker_pants", "fg": 704, "rotates": false }, - { "id": "overlay_worn_camisole", "fg": 706, "rotates": false }, - { "id": "overlay_worn_case_violin", "fg": 653, "rotates": false }, - { "id": "overlay_worn_cassock", "fg": 707, "rotates": false }, - { "id": [ "overlay_worn_fur_cat_ears", "overlay_worn_faux_fur_cat_ears" ], "fg": 980, "rotates": false }, - { "id": "overlay_worn_chainmail_arms", "fg": 708, "rotates": false }, - { "id": "overlay_worn_chainmail_hauberk", "fg": 712, "rotates": false }, - { "id": "overlay_worn_chainmail_hood", "fg": 709, "rotates": false }, - { "id": "overlay_worn_chainmail_legs", "fg": 710, "rotates": false }, - { "id": "overlay_worn_chainmail_suit", "fg": 711, "rotates": false }, - { "id": "overlay_worn_chainmail_vest", "fg": 712, "rotates": false }, - { "id": "overlay_worn_chaps_leather", "fg": 713, "rotates": false }, - { "id": "overlay_worn_chestrig", "fg": 940, "rotates": false }, - { "id": "overlay_worn_chestwrap", "fg": 714, "rotates": false }, - { "id": "overlay_worn_chestwrap_fur", "fg": 714, "rotates": false }, - { "id": "overlay_worn_chestwrap_leather", "fg": 714, "rotates": false }, - { "id": "overlay_worn_chestwrap_wool", "fg": 714, "rotates": false }, - { "id": "overlay_worn_cleansuit", "fg": 715, "rotates": false }, - { "id": "overlay_worn_cleats", "fg": 899, "rotates": false }, - { "id": "overlay_worn_cloak", "fg": 716, "rotates": false }, - { "id": "overlay_worn_cloak_bless", "fg": 721, "rotates": false }, - { "id": "overlay_worn_cloak_fur", "fg": 879, "rotates": false }, - { "id": "overlay_worn_cloak_leather", "fg": 879, "rotates": false }, - { "id": "overlay_worn_cloak_wool", "fg": 855, "rotates": false }, - { "id": "overlay_worn_clogs", "fg": 717, "rotates": false }, - { "id": "overlay_worn_clown_suit", "fg": 719, "rotates": false }, - { "id": "overlay_worn_clownshoes", "fg": 718, "rotates": false }, - { "id": "overlay_worn_coat_fur", "fg": 720, "rotates": false }, - { "id": "overlay_worn_coat_fur_sf", "fg": 720, "rotates": false }, - { "id": "overlay_worn_coat_lab", "fg": 721, "rotates": false }, - { "id": "overlay_worn_coat_rain", "fg": 722, "rotates": false }, - { "id": "overlay_worn_coat_winter", "fg": 723, "rotates": false }, - { "id": "overlay_worn_copper_locket", "fg": 963, "rotates": false }, - { "id": "overlay_worn_copper_necklace", "fg": 964, "rotates": false }, - { "id": [ "overlay_worn_copper_ring", "overlay_worn_mring_copper" ], "fg": 965, "rotates": false }, - { "id": "overlay_worn_corset", "fg": 724, "rotates": false }, - { "id": "overlay_worn_cowboy_hat", "fg": 725, "rotates": false }, - { "id": "overlay_worn_cowl_wool", "fg": 787, "rotates": false }, - { "id": [ "overlay_worn_crown_golden", "overlay_worn_crown_golden_survivor" ], "fg": 652, "rotates": false }, - { "id": "overlay_worn_dance_shoes", "fg": 763, "rotates": false }, - { "id": "overlay_worn_depowered_armor", "fg": 870, "rotates": false }, - { "id": "overlay_worn_depowered_helmet", "fg": 726, "rotates": false }, - { "id": "overlay_worn_dinosuit", "fg": 727, "rotates": false }, - { "id": "overlay_worn_dive_bag", "fg": 728, "rotates": false }, - { "id": "overlay_worn_diving_watch", "fg": 970, "rotates": false }, - { "id": "overlay_worn_down_blanket", "fg": 680, "rotates": false }, - { "id": "overlay_worn_dragonskin", "fg": 971, "rotates": false }, - { "id": "overlay_worn_dress", "fg": 729, "rotates": false }, - { "id": "overlay_worn_dress_bless", "fg": 730, "rotates": false }, - { "id": "overlay_worn_dress_shoes", "fg": 886, "rotates": false }, - { "id": "overlay_worn_dress_shoes_air", "fg": 763, "rotates": false }, - { "id": "overlay_worn_dress_skirt", "fg": 892, "rotates": false }, - { "id": "overlay_worn_dress_wedding", "fg": 730, "rotates": false }, - { "id": "overlay_worn_duffelbag", "fg": 913, "rotates": false }, - { "id": "overlay_worn_duster", "fg": 731, "rotates": false }, - { "id": "overlay_worn_duster_fur", "fg": 731, "rotates": false }, - { "id": "overlay_worn_duster_leather", "fg": 731, "rotates": false }, - { "id": "overlay_worn_duster_survivor", "fg": 732, "rotates": false }, - { "id": "overlay_worn_e_handcuffs", "fg": 543, "rotates": false }, + { "id": "overlay_wielded_scourge_staff", "fg": 526, "rotates": false }, + { "id": "overlay_wielded_scrap", "fg": 454, "rotates": false }, + { "id": "overlay_wielded_scrap_copper", "fg": 454, "rotates": false }, + { "id": "overlay_wielded_screwdriver", "fg": 419, "rotates": false }, + { "id": "overlay_wielded_screwdriver_set", "fg": 419, "rotates": false }, + { "id": "overlay_wielded_scythe", "fg": 582, "rotates": false }, + { "id": "overlay_wielded_scythe_war", "fg": 582, "rotates": false }, + { "id": "overlay_wielded_selfbow", "fg": 499, "rotates": false }, + { "id": "overlay_wielded_sharp_rock", "fg": 454, "rotates": false }, + { "id": "overlay_wielded_sharp_toothbrush", "fg": 419, "rotates": false }, + { "id": "overlay_wielded_shishkebab_off", "fg": 562, "rotates": false }, + { "id": "overlay_wielded_shishkebab_on", "fg": 563, "rotates": false }, + { "id": "overlay_wielded_shock_staff", "fg": 440, "rotates": false }, + { "id": "overlay_wielded_shockcannon", "fg": 527, "rotates": false }, + { "id": "overlay_wielded_shocktonfa_off", "fg": 458, "rotates": false }, + { "id": "overlay_wielded_shocktonfa_on", "fg": 458, "rotates": false }, + { "id": "overlay_wielded_shortbow", "fg": 528, "rotates": false }, + { "id": "overlay_wielded_shotgun_d", "fg": 512, "rotates": false }, + { "id": "overlay_wielded_shotgun_s", "fg": 467, "rotates": false }, + { "id": "overlay_wielded_shotgun_sawn", "fg": 600, "rotates": false }, + { "id": "overlay_wielded_shovel", "fg": 583, "rotates": false }, + { "id": "overlay_wielded_sickle", "fg": 584, "rotates": false }, + { "id": "overlay_wielded_sig552", "fg": 529, "rotates": false }, + { "id": "overlay_wielded_sig_40", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_sig_mosquito", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_sig_p230", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_skorpion_61", "fg": 530, "rotates": false }, + { "id": "overlay_wielded_skorpion_82", "fg": 530, "rotates": false }, + { "id": "overlay_wielded_sks", "fg": 463, "rotates": false }, + { "id": "overlay_wielded_sling", "fg": 531, "rotates": false }, + { "id": "overlay_wielded_slingshot", "fg": 532, "rotates": false }, + { "id": "overlay_wielded_smg_22", "fg": 507, "rotates": false }, + { "id": "overlay_wielded_smg_38", "fg": 507, "rotates": false }, + { "id": "overlay_wielded_smg_40", "fg": 507, "rotates": false }, + { "id": "overlay_wielded_smg_45", "fg": 507, "rotates": false }, + { "id": "overlay_wielded_smg_9mm", "fg": 507, "rotates": false }, + { "id": "overlay_wielded_spear_copper", "fg": 455, "rotates": false }, + { "id": "overlay_wielded_spear_dory", "fg": 455, "rotates": false }, + { "id": "overlay_wielded_spear_forked", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spear_knife", "fg": 455, "rotates": false }, + { "id": "overlay_wielded_spear_pestilence", "fg": 585, "rotates": false }, + { "id": "overlay_wielded_spear_rebar", "fg": 455, "rotates": false }, + { "id": [ "overlay_wielded_spear_steel", "overlay_wielded_spear_pipe" ], "fg": 455, "rotates": false }, + { "id": "overlay_wielded_spear_survivor", "fg": 456, "rotates": false }, + { "id": "overlay_wielded_spear_wood", "fg": 441, "rotates": false }, + { "id": "overlay_wielded_speargun", "fg": 533, "rotates": false }, + { "id": "overlay_wielded_spike", "fg": 419, "rotates": false }, + { "id": "overlay_wielded_spiked_plate", "fg": 449, "rotates": false }, + { "id": "overlay_wielded_steel_chunk", "fg": 454, "rotates": false }, + { "id": "overlay_wielded_steel_lump", "fg": 454, "rotates": false }, + { "id": "overlay_wielded_sten", "fg": 534, "rotates": false }, + { "id": "overlay_wielded_steyr_aug", "fg": 535, "rotates": false }, + { "id": "overlay_wielded_stick", "fg": 432, "rotates": false }, + { "id": "overlay_wielded_stormbringer", "fg": 549, "rotates": false }, + { "id": "overlay_wielded_stormbringer_on", "fg": 586, "rotates": false }, + { "id": "overlay_wielded_surv_carbine_223", "fg": 477, "rotates": false }, + { "id": "overlay_wielded_surv_hand_cannon", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_surv_levershotgun", "fg": 467, "rotates": false }, + { "id": "overlay_wielded_surv_rocket_launcher", "fg": 506, "rotates": false }, + { "id": "overlay_wielded_surv_six_shooter", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_survbow", "fg": 536, "rotates": false }, + { "id": "overlay_wielded_survivor_machete", "fg": 562, "rotates": false }, + { "id": "overlay_wielded_survivor_special_700", "fg": 488, "rotates": false }, + { "id": "overlay_wielded_svs-24", "fg": 463, "rotates": false }, + { "id": "overlay_wielded_svs-24c", "fg": 463, "rotates": false }, + { "id": "overlay_wielded_sw629", "fg": 466, "rotates": false }, + { "id": "overlay_wielded_sw_22", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_sw_500", "fg": 466, "rotates": false }, + { "id": "overlay_wielded_sw_610", "fg": 466, "rotates": false }, + { "id": "overlay_wielded_sw_619", "fg": 466, "rotates": false }, + { "id": "overlay_wielded_switchblade", "fg": 436, "rotates": false }, + { "id": "overlay_wielded_sword_crude", "fg": 457, "rotates": false }, + { "id": "overlay_wielded_sword_forged", "fg": 457, "rotates": false }, + { "id": "overlay_wielded_sword_nail", "fg": 426, "rotates": false }, + { "id": "overlay_wielded_sword_wood", "fg": 422, "rotates": false }, + { "id": "overlay_wielded_sword_xiphos", "fg": 563, "rotates": false }, + { "id": "overlay_wielded_tanto", "fg": 587, "rotates": false }, + { "id": "overlay_wielded_taurus_38", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_tazer", "fg": 588, "rotates": false }, + { "id": "overlay_wielded_tec9", "fg": 507, "rotates": false }, + { "id": "overlay_wielded_teleumbrella", "fg": 459, "rotates": false }, + { "id": "overlay_wielded_tihar", "fg": 521, "rotates": false }, + { "id": "overlay_wielded_tokarev", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_tommygun", "fg": 530, "rotates": false }, + { "id": "overlay_wielded_tonfa", "fg": 458, "rotates": false }, + { "id": "overlay_wielded_tonfa_wood", "fg": 458, "rotates": false }, + { "id": "overlay_wielded_tool_anfo_charge", "fg": 411, "rotates": false }, + { "id": "overlay_wielded_tool_anfo_charge_act", "fg": 411, "rotates": false }, + { "id": "overlay_wielded_tool_rdx_charge", "fg": 411, "rotates": false }, + { "id": "overlay_wielded_tool_rdx_charge_act", "fg": 411, "rotates": false }, + { "id": "overlay_wielded_torch", "fg": 546, "rotates": false }, + { "id": "overlay_wielded_torch_done", "fg": 546, "rotates": false }, + { "id": "overlay_wielded_torch_lit", "fg": 547, "rotates": false }, + { "id": "overlay_wielded_trex_gun", "fg": 475, "rotates": false }, + { "id": "overlay_wielded_trimmer_off", "fg": 552, "rotates": false }, + { "id": "overlay_wielded_trimmer_on", "fg": 552, "rotates": false }, + { "id": "overlay_wielded_triple_launcher_simple", "fg": 465, "rotates": false }, + { "id": "overlay_wielded_trumpet", "fg": 589, "rotates": false }, + { "id": "overlay_wielded_tuba", "fg": 599, "rotates": false }, + { "id": "overlay_wielded_ukulele", "fg": 590, "rotates": false }, + { "id": "overlay_wielded_umbrella", "fg": 459, "rotates": false }, + { "id": "overlay_wielded_ups_rifle", "fg": 539, "rotates": false }, + { "id": "overlay_wielded_ups_rifle_crank", "fg": 540, "rotates": false }, + { "id": "overlay_wielded_usp_45", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_usp_9mm", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_uzi", "fg": 541, "rotates": false }, + { "id": "overlay_wielded_v29", "fg": 542, "rotates": false }, + { "id": "overlay_wielded_v29_cheap", "fg": 543, "rotates": false }, + { "id": "overlay_wielded_vibrator", "fg": 591, "rotates": false }, + { "id": "overlay_wielded_violin", "fg": 592, "rotates": false }, + { "id": "overlay_wielded_violin_golden", "fg": 592, "rotates": false }, + { "id": "overlay_wielded_wakizashi", "fg": 561, "rotates": false }, + { "id": "overlay_wielded_wakizashi_fake", "fg": 561, "rotates": false }, + { "id": "overlay_wielded_wakizashi_inferior", "fg": 561, "rotates": false }, + { "id": "overlay_wielded_walther_ppk", "fg": 479, "rotates": false }, + { "id": "overlay_wielded_warhammer", "fg": 460, "rotates": false }, + { "id": "overlay_wielded_wasp_sting", "fg": 419, "rotates": false }, + { "id": "overlay_wielded_weatherby_5", "fg": 469, "rotates": false }, + { "id": "overlay_wielded_win70", "fg": 521, "rotates": false }, + { "id": "overlay_wielded_wooden_barrel", "fg": 414, "rotates": false }, + { "id": "overlay_wielded_wrench", "fg": 593, "rotates": false }, + { "id": "overlay_wielded_wristrocket", "fg": 532, "rotates": false }, + { "id": "overlay_wielded_xacto", "fg": 436, "rotates": false }, + { "id": "overlay_wielded_zweifire_off", "fg": 594, "rotates": false }, + { "id": "overlay_wielded_zweifire_on", "fg": 595, "rotates": false }, + { "id": "overlay_wielded_zweihander", "fg": 594, "rotates": false }, + { "id": "overlay_wielded_zweihander_fake", "fg": 594, "rotates": false }, + { "id": "overlay_wielded_zweihander_inferior", "fg": 594, "rotates": false }, + { "id": "overlay_female_worn_dress_shirt", "fg": 644, "rotates": false }, + { "id": "overlay_female_worn_jumpsuit", "fg": 645, "rotates": false }, + { "id": "overlay_female_worn_jumpsuit_xl", "fg": 645, "rotates": false }, + { "id": "overlay_female_worn_linuxtshirt", "fg": 649, "rotates": false }, + { "id": "overlay_female_worn_long_underpants", "fg": 646, "rotates": false }, + { "id": "overlay_female_worn_long_undertop", "fg": 647, "rotates": false }, + { "id": "overlay_female_worn_longshirt", "fg": 648, "rotates": false }, + { "id": "overlay_female_worn_polo_shirt", "fg": 649, "rotates": false }, + { "id": "overlay_female_worn_postman_shirt", "fg": 644, "rotates": false }, + { "id": "overlay_female_worn_sheriffshirt", "fg": 648, "rotates": false }, + { "id": "overlay_female_worn_thermal_outfit", "fg": 604, "rotates": false }, + { "id": "overlay_female_worn_thermal_outfit_on", "fg": 604, "rotates": false }, + { "id": "overlay_female_worn_thermal_suit", "fg": 605, "rotates": false }, + { "id": "overlay_female_worn_thermal_suit_on", "fg": 605, "rotates": false }, + { "id": "overlay_female_worn_towel", "fg": 606, "rotates": false }, + { "id": "overlay_female_worn_towel_soiled", "fg": 659, "rotates": false }, + { "id": "overlay_female_worn_towel_wet", "fg": 606, "rotates": false }, + { "id": "overlay_female_worn_tshirt", "fg": 649, "rotates": false }, + { "id": "overlay_female_worn_tshirt_text", "fg": 649, "rotates": false }, + { "id": "overlay_female_worn_under_armor", "fg": 650, "rotates": false }, + { "id": "overlay_female_worn_union_suit", "fg": 651, "rotates": false }, + { "id": "overlay_male_worn_dress_shirt", "fg": 652, "rotates": false }, + { "id": "overlay_male_worn_jumpsuit", "fg": 653, "rotates": false }, + { "id": "overlay_male_worn_jumpsuit_xl", "fg": 653, "rotates": false }, + { "id": "overlay_male_worn_linuxtshirt", "fg": 658, "rotates": false }, + { "id": "overlay_male_worn_long_underpants", "fg": 654, "rotates": false }, + { "id": "overlay_male_worn_long_undertop", "fg": 655, "rotates": false }, + { "id": "overlay_male_worn_longshirt", "fg": 656, "rotates": false }, + { "id": "overlay_male_worn_polo_shirt", "fg": 658, "rotates": false }, + { "id": "overlay_male_worn_postman_shirt", "fg": 652, "rotates": false }, + { "id": "overlay_male_worn_sheriffshirt", "fg": 656, "rotates": false }, + { "id": "overlay_male_worn_thermal_outfit", "fg": 607, "rotates": false }, + { "id": "overlay_male_worn_thermal_outfit_on", "fg": 607, "rotates": false }, + { "id": "overlay_male_worn_thermal_suit", "fg": 608, "rotates": false }, + { "id": "overlay_male_worn_thermal_suit_on", "fg": 608, "rotates": false }, + { "id": "overlay_male_worn_towel", "fg": 609, "rotates": false }, + { "id": "overlay_male_worn_towel_soiled", "fg": 660, "rotates": false }, + { "id": "overlay_male_worn_towel_wet", "fg": 609, "rotates": false }, + { "id": "overlay_male_worn_tshirt", "fg": 658, "rotates": false }, + { "id": "overlay_male_worn_tshirt_text", "fg": 658, "rotates": false }, + { "id": "overlay_male_worn_under_armor", "fg": 662, "rotates": false }, + { "id": "overlay_male_worn_union_suit", "fg": 664, "rotates": false }, + { "id": "overlay_worn_2byarm_guard", "fg": 675, "rotates": false }, + { "id": "overlay_worn_2byshin_guard", "fg": 832, "rotates": false }, + { "id": "overlay_worn_XL_holster", "fg": 899, "rotates": false }, + { "id": "overlay_worn_aep_suit", "fg": 667, "rotates": false }, + { "id": "overlay_worn_american_flag", "fg": 671, "rotates": false }, + { "id": [ "overlay_worn_ammo_satchel", "overlay_worn_flintlock_pouch" ], "fg": 798, "rotates": false }, + { "id": "overlay_worn_anbc_suit", "fg": 673, "rotates": false }, + { "id": "overlay_worn_apron_leather", "fg": 952, "rotates": false }, + { "id": "overlay_worn_arm_splint", "fg": 684, "rotates": false }, + { "id": "overlay_worn_arm_warmers", "fg": 685, "rotates": false }, + { "id": "overlay_worn_armguard_acidchitin", "fg": 672, "rotates": false }, + { "id": "overlay_worn_armguard_chitin", "fg": 674, "rotates": false }, + { "id": "overlay_worn_armguard_hard", "fg": 675, "rotates": false }, + { "id": "overlay_worn_armguard_larmor", "fg": 674, "rotates": false }, + { "id": [ "overlay_worn_armguard_metal", "overlay_worn_armguard_lightplate" ], "fg": 1002, "rotates": false }, + { "id": "overlay_worn_armguard_paper", "fg": 676, "rotates": false }, + { "id": "overlay_worn_armguard_soft", "fg": 675, "rotates": false }, + { "id": "overlay_worn_armor_acidchitin", "fg": 670, "rotates": false }, + { "id": "overlay_worn_armor_blarmor", "fg": 678, "rotates": false }, + { "id": "overlay_worn_armor_chitin", "fg": 677, "rotates": false }, + { "id": "overlay_worn_armor_cuirass", "fg": 728, "rotates": false }, + { "id": "overlay_worn_armor_farmor", "fg": 678, "rotates": false }, + { "id": "overlay_worn_armor_lamellar", "fg": 678, "rotates": false }, + { "id": "overlay_worn_armor_larmor", "fg": 678, "rotates": false }, + { "id": "overlay_worn_armor_lightplate", "fg": 680, "rotates": false }, + { "id": [ "overlay_worn_armor_lorica", "overlay_worn_cuirass_lightplate" ], "fg": 728, "rotates": false }, + { "id": "overlay_worn_armor_nomad", "fg": 969, "rotates": false }, + { "id": "overlay_worn_armor_plarmor", "fg": 679, "rotates": false }, + { "id": "overlay_worn_armor_plate", "fg": 680, "rotates": false }, + { "id": "overlay_worn_armor_samurai", "fg": 681, "rotates": false }, + { "id": "overlay_worn_armor_scavenger", "fg": 970, "rotates": false }, + { "id": "overlay_worn_armor_scrapsuit", "fg": 682, "rotates": false }, + { "id": "overlay_worn_armor_wyrm", "fg": 610, "rotates": false }, + { "id": "overlay_worn_army_top", "fg": 683, "rotates": false }, + { "id": "overlay_worn_b_shorts", "fg": 721, "rotates": false }, + { "id": "overlay_worn_back_holster", "fg": 687, "rotates": false }, + { "id": "overlay_worn_backpack", "fg": 686, "rotates": false }, + { "id": "overlay_worn_backpack_leather", "fg": 686, "rotates": false }, + { "id": "overlay_worn_badge_doctor", "fg": 971, "rotates": false }, + { "id": "overlay_worn_badge_foodkid", "fg": 972, "rotates": false }, + { "id": "overlay_worn_balclava", "fg": 688, "rotates": false }, + { "id": "overlay_worn_baldric", "fg": 899, "rotates": false }, + { "id": "overlay_worn_bandana", "fg": 689, "rotates": false }, + { "id": "overlay_worn_bastsandals", "fg": 690, "rotates": false }, + { "id": "overlay_worn_bead_bracelet", "fg": 973, "rotates": false }, + { "id": "overlay_worn_bead_ear", "fg": 974, "rotates": false }, + { "id": "overlay_worn_beekeeping_gloves", "fg": 764, "rotates": false }, + { "id": "overlay_worn_beekeeping_hood", "fg": 975, "rotates": false }, + { "id": "overlay_worn_beekeeping_suit", "fg": 691, "rotates": false }, + { "id": "overlay_worn_beret", "fg": 692, "rotates": false }, + { "id": "overlay_worn_beret_wool", "fg": 692, "rotates": false }, + { "id": "overlay_worn_bikini_bottom", "fg": 693, "rotates": false }, + { "id": "overlay_worn_bikini_top", "fg": 694, "rotates": false }, + { "id": "overlay_worn_bikini_top_fur", "fg": 730, "rotates": false }, + { "id": "overlay_worn_bikini_top_leather", "fg": 730, "rotates": false }, + { "id": "overlay_worn_bindle", "fg": 695, "rotates": false }, + { "id": "overlay_worn_blanket", "fg": 696, "rotates": false }, + { "id": "overlay_worn_blazer", "fg": 697, "rotates": false }, + { "id": "overlay_worn_blindfold", "fg": 698, "rotates": false }, + { "id": "overlay_worn_bondage_mask", "fg": 699, "rotates": false }, + { "id": "overlay_worn_bondage_suit", "fg": 700, "rotates": false }, + { "id": "overlay_worn_boots", "fg": 701, "rotates": false }, + { "id": "overlay_worn_boots_acidchitin", "fg": 665, "rotates": false }, + { "id": "overlay_worn_boots_bunker", "fg": 708, "rotates": false }, + { "id": "overlay_worn_boots_chitin", "fg": 704, "rotates": false }, + { "id": "overlay_worn_boots_combat", "fg": 705, "rotates": false }, + { "id": "overlay_worn_boots_fsurvivor", "fg": 708, "rotates": false }, + { "id": "overlay_worn_boots_fur", "fg": 707, "rotates": false }, + { "id": "overlay_worn_boots_h20survivor", "fg": 960, "rotates": false }, + { "id": "overlay_worn_boots_hiking", "fg": 701, "rotates": false }, + { "id": "overlay_worn_boots_hsurvivor", "fg": 706, "rotates": false }, + { "id": "overlay_worn_boots_larmor", "fg": 707, "rotates": false }, + { "id": "overlay_worn_boots_lsurvivor", "fg": 707, "rotates": false }, + { "id": "overlay_worn_boots_plate", "fg": 707, "rotates": false }, + { "id": "overlay_worn_boots_steel", "fg": 709, "rotates": false }, + { "id": "overlay_worn_boots_survivor", "fg": 707, "rotates": false }, + { "id": "overlay_worn_boots_western", "fg": 710, "rotates": false }, + { "id": "overlay_worn_boots_winter", "fg": 711, "rotates": false }, + { "id": "overlay_worn_boots_wsurvivor", "fg": 711, "rotates": false }, + { "id": "overlay_worn_boots_xlsurvivor", "fg": 711, "rotates": false }, + { "id": "overlay_worn_bootsheath", "fg": 702, "rotates": false }, + { "id": "overlay_worn_bootstrap", "fg": 703, "rotates": false }, + { "id": "overlay_worn_boxer_briefs", "fg": 712, "rotates": false }, + { "id": "overlay_worn_boxer_shorts", "fg": 712, "rotates": false }, + { "id": "overlay_worn_boxing_gloves", "fg": 713, "rotates": false }, + { "id": "overlay_worn_boy_shorts", "fg": 714, "rotates": false }, + { "id": "overlay_worn_bra", "fg": 715, "rotates": false }, + { "id": "overlay_worn_breeches", "fg": 877, "rotates": false }, + { "id": "overlay_worn_briefcase", "fg": 716, "rotates": false }, + { "id": "overlay_worn_briefs", "fg": 717, "rotates": false }, + { "id": "overlay_worn_bronze_medal", "fg": 978, "rotates": false }, + { "id": "overlay_worn_bscabbard", "fg": 718, "rotates": false }, + { "id": "overlay_worn_bunker_coat", "fg": 719, "rotates": false }, + { "id": "overlay_worn_bunker_pants", "fg": 720, "rotates": false }, + { "id": "overlay_worn_camisole", "fg": 722, "rotates": false }, + { "id": "overlay_worn_case_violin", "fg": 669, "rotates": false }, + { "id": "overlay_worn_cassock", "fg": 723, "rotates": false }, + { "id": [ "overlay_worn_fur_cat_ears", "overlay_worn_faux_fur_cat_ears" ], "fg": 996, "rotates": false }, + { "id": "overlay_worn_chainmail_arms", "fg": 724, "rotates": false }, + { "id": "overlay_worn_chainmail_hauberk", "fg": 728, "rotates": false }, + { "id": "overlay_worn_chainmail_hood", "fg": 725, "rotates": false }, + { "id": "overlay_worn_chainmail_legs", "fg": 726, "rotates": false }, + { "id": "overlay_worn_chainmail_suit", "fg": 727, "rotates": false }, + { "id": "overlay_worn_chainmail_vest", "fg": 728, "rotates": false }, + { "id": "overlay_worn_chaps_leather", "fg": 729, "rotates": false }, + { "id": "overlay_worn_chestrig", "fg": 956, "rotates": false }, + { "id": "overlay_worn_chestwrap", "fg": 730, "rotates": false }, + { "id": "overlay_worn_chestwrap_fur", "fg": 730, "rotates": false }, + { "id": "overlay_worn_chestwrap_leather", "fg": 730, "rotates": false }, + { "id": "overlay_worn_chestwrap_wool", "fg": 730, "rotates": false }, + { "id": "overlay_worn_cleansuit", "fg": 731, "rotates": false }, + { "id": "overlay_worn_cleats", "fg": 915, "rotates": false }, + { "id": "overlay_worn_cloak", "fg": 732, "rotates": false }, + { "id": "overlay_worn_cloak_bless", "fg": 737, "rotates": false }, + { "id": "overlay_worn_cloak_fur", "fg": 895, "rotates": false }, + { "id": "overlay_worn_cloak_leather", "fg": 895, "rotates": false }, + { "id": "overlay_worn_cloak_wool", "fg": 871, "rotates": false }, + { "id": "overlay_worn_clogs", "fg": 733, "rotates": false }, + { "id": "overlay_worn_clown_suit", "fg": 735, "rotates": false }, + { "id": "overlay_worn_clownshoes", "fg": 734, "rotates": false }, + { "id": "overlay_worn_coat_fur", "fg": 736, "rotates": false }, + { "id": "overlay_worn_coat_fur_sf", "fg": 736, "rotates": false }, + { "id": "overlay_worn_coat_lab", "fg": 737, "rotates": false }, + { "id": "overlay_worn_coat_rain", "fg": 738, "rotates": false }, + { "id": "overlay_worn_coat_winter", "fg": 739, "rotates": false }, + { "id": "overlay_worn_copper_locket", "fg": 979, "rotates": false }, + { "id": "overlay_worn_copper_necklace", "fg": 980, "rotates": false }, + { "id": [ "overlay_worn_copper_ring", "overlay_worn_mring_copper" ], "fg": 981, "rotates": false }, + { "id": "overlay_worn_corset", "fg": 740, "rotates": false }, + { "id": "overlay_worn_cowboy_hat", "fg": 741, "rotates": false }, + { "id": "overlay_worn_cowl_wool", "fg": 803, "rotates": false }, + { "id": [ "overlay_worn_crown_golden", "overlay_worn_crown_golden_survivor" ], "fg": 668, "rotates": false }, + { "id": "overlay_worn_dance_shoes", "fg": 779, "rotates": false }, + { "id": "overlay_worn_depowered_armor", "fg": 886, "rotates": false }, + { "id": "overlay_worn_depowered_helmet", "fg": 742, "rotates": false }, + { "id": "overlay_worn_dinosuit", "fg": 743, "rotates": false }, + { "id": "overlay_worn_dive_bag", "fg": 744, "rotates": false }, + { "id": "overlay_worn_diving_watch", "fg": 986, "rotates": false }, + { "id": "overlay_worn_down_blanket", "fg": 696, "rotates": false }, + { "id": "overlay_worn_dragonskin", "fg": 987, "rotates": false }, + { "id": "overlay_worn_dress", "fg": 745, "rotates": false }, + { "id": "overlay_worn_dress_bless", "fg": 746, "rotates": false }, + { "id": "overlay_worn_dress_shoes", "fg": 902, "rotates": false }, + { "id": "overlay_worn_dress_shoes_air", "fg": 779, "rotates": false }, + { "id": "overlay_worn_dress_skirt", "fg": 908, "rotates": false }, + { "id": "overlay_worn_dress_wedding", "fg": 746, "rotates": false }, + { "id": "overlay_worn_duffelbag", "fg": 929, "rotates": false }, + { "id": "overlay_worn_duster", "fg": 747, "rotates": false }, + { "id": "overlay_worn_duster_fur", "fg": 747, "rotates": false }, + { "id": "overlay_worn_duster_leather", "fg": 747, "rotates": false }, + { "id": "overlay_worn_duster_survivor", "fg": 748, "rotates": false }, + { "id": "overlay_worn_e_handcuffs", "fg": 559, "rotates": false }, { "id": [ "overlay_worn_silver_ear", "overlay_worn_platinum_ear", "overlay_worn_pearl_ear" ], - "fg": 996, + "fg": 1012, "rotates": false }, - { "id": "overlay_worn_elbow_pads", "fg": 733, "rotates": false }, - { "id": "overlay_worn_emer_blanket", "fg": 680, "rotates": false }, - { "id": "overlay_worn_emer_blanket_on", "fg": 680, "rotates": false }, - { "id": "overlay_worn_entry_suit", "fg": 973, "rotates": false }, - { "id": "overlay_worn_fancy_bra", "fg": 699, "rotates": false }, - { "id": "overlay_worn_fancy_sunglasses", "fg": 910, "rotates": false }, - { "id": "overlay_worn_fencing_jacket", "fg": 978, "rotates": false }, - { "id": "overlay_worn_fencing_mask", "fg": 979, "rotates": false }, - { "id": "overlay_worn_fencing_pants", "fg": 734, "rotates": false }, - { "id": "overlay_worn_fire_gauntlets", "fg": 745, "rotates": false }, - { "id": "overlay_worn_fireman_belt", "fg": 912, "rotates": false }, - { "id": "overlay_worn_fishing_waders", "fg": 735, "rotates": false }, - { "id": "overlay_worn_fitover_sunglasses", "fg": 910, "rotates": false }, - { "id": "overlay_worn_flag_shirt", "fg": 736, "rotates": false }, - { "id": "overlay_worn_flip_flops", "fg": 737, "rotates": false }, - { "id": [ "overlay_worn_flotation_vest", "overlay_worn_flotation_vest_ms" ], "fg": 798, "rotates": false }, - { "id": "overlay_worn_folding_poncho_on", "fg": 595, "rotates": false }, - { "id": "overlay_worn_football_armor", "fg": 738, "rotates": false }, - { "id": "overlay_worn_footrags", "fg": 739, "rotates": false }, - { "id": "overlay_worn_footrags_fur", "fg": 900, "rotates": false }, - { "id": "overlay_worn_footrags_leather", "fg": 853, "rotates": false }, - { "id": "overlay_worn_footrags_wool", "fg": 900, "rotates": false }, - { "id": "overlay_worn_fsurvivor_suit", "fg": 854, "rotates": false }, - { "id": "overlay_worn_fur_blanket", "fg": 680, "rotates": false }, - { "id": "overlay_female_worn_fur_cat_ears", "fg": 223, "rotates": false }, - { "id": "overlay_male_worn_fur_cat_ears", "fg": 248, "rotates": false }, - { "id": "overlay_worn_gambeson", "fg": 936, "rotates": false }, - { "id": "overlay_worn_gauntlets_acidchitin", "fg": 650, "rotates": false }, - { "id": "overlay_worn_gauntlets_chitin", "fg": 746, "rotates": false }, - { "id": "overlay_worn_gauntlets_larmor", "fg": 746, "rotates": false }, - { "id": "overlay_worn_geta", "fg": 898, "rotates": false }, - { "id": "overlay_worn_glasses_bal", "fg": 750, "rotates": false }, - { "id": "overlay_worn_glasses_monocle", "fg": 741, "rotates": false }, - { "id": [ "overlay_worn_glasses_safety" ], "fg": 742, "rotates": false }, - { "id": "overlay_worn_glove_jackson", "fg": 748, "rotates": false }, - { "id": "overlay_worn_gloves_bag", "fg": 743, "rotates": false }, - { "id": "overlay_worn_gloves_fingerless", "fg": 744, "rotates": false }, - { "id": "overlay_worn_gloves_fingerless_mod", "fg": 744, "rotates": false }, - { "id": "overlay_worn_gloves_fsurvivor", "fg": 745, "rotates": false }, - { "id": "overlay_worn_gloves_fur", "fg": 746, "rotates": false }, - { "id": "overlay_worn_gloves_h20survivor", "fg": 747, "rotates": false }, - { "id": "overlay_worn_gloves_hsurvivor", "fg": 747, "rotates": false }, - { "id": "overlay_worn_gloves_leather", "fg": 746, "rotates": false }, - { "id": "overlay_worn_gloves_light", "fg": 748, "rotates": false }, - { "id": "overlay_worn_gloves_liner", "fg": 748, "rotates": false }, - { "id": "overlay_worn_gloves_lsurvivor", "fg": 747, "rotates": false }, - { "id": "overlay_worn_gloves_medical", "fg": 748, "rotates": false }, - { "id": "overlay_worn_gloves_plate", "fg": 748, "rotates": false }, - { "id": "overlay_worn_gloves_survivor", "fg": 747, "rotates": false }, - { "id": "overlay_worn_gloves_tactical", "fg": 747, "rotates": false }, - { "id": "overlay_worn_gloves_winter", "fg": 747, "rotates": false }, - { "id": "overlay_worn_gloves_wool", "fg": 748, "rotates": false }, - { "id": "overlay_worn_gloves_work", "fg": 749, "rotates": false }, - { "id": "overlay_worn_gloves_wraps", "fg": 748, "rotates": false }, - { "id": "overlay_worn_gloves_wraps_fur", "fg": 746, "rotates": false }, - { "id": "overlay_worn_gloves_wraps_leather", "fg": 746, "rotates": false }, - { "id": "overlay_worn_gloves_wraps_wool", "fg": 748, "rotates": false }, - { "id": "overlay_worn_gloves_wsurvivor", "fg": 747, "rotates": false }, - { "id": "overlay_worn_gloves_xlsurvivor", "fg": 747, "rotates": false }, - { "id": "overlay_worn_gobag", "fg": 913, "rotates": false }, - { "id": "overlay_worn_goggles_ir", "fg": 596, "rotates": false }, - { "id": "overlay_worn_goggles_ir_on", "fg": 597, "rotates": false }, - { "id": "overlay_worn_goggles_nv", "fg": 598, "rotates": false }, - { "id": "overlay_worn_goggles_nv_clairvoyance", "fg": 599, "rotates": false }, - { "id": "overlay_worn_goggles_nv_on", "fg": 600, "rotates": false }, - { "id": "overlay_worn_goggles_ski", "fg": 750, "rotates": false }, - { "id": "overlay_worn_goggles_swim", "fg": 750, "rotates": false }, - { "id": "overlay_worn_goggles_welding", "fg": 751, "rotates": false }, - { "id": "overlay_worn_gold_dental_grill", "fg": 647, "rotates": false }, - { "id": "overlay_worn_gold_locket", "fg": 989, "rotates": false }, - { "id": "overlay_worn_gold_medal", "fg": 990, "rotates": false }, - { "id": "overlay_worn_gold_necklace", "fg": 991, "rotates": false }, - { "id": [ "overlay_worn_gold_ring", "overlay_worn_mring_gold" ], "fg": 992, "rotates": false }, - { "id": "overlay_worn_gown", "fg": 729, "rotates": false }, - { "id": "overlay_worn_greatcoat", "fg": 752, "rotates": false }, - { "id": "overlay_worn_h20survivor_suit", "fg": 791, "rotates": false }, - { "id": "overlay_worn_hakama_gi", "fg": 753, "rotates": false }, - { "id": "overlay_worn_halter_top", "fg": 754, "rotates": false }, - { "id": "overlay_worn_harmonica_holder", "fg": 601, "rotates": false }, - { "id": "overlay_worn_hat_ball", "fg": 755, "rotates": false }, - { "id": "overlay_worn_hat_boonie", "fg": 756, "rotates": false }, - { "id": "overlay_worn_hat_cotton", "fg": 759, "rotates": false }, - { "id": "overlay_worn_hat_fur", "fg": 757, "rotates": false }, - { "id": "overlay_worn_hat_hunting", "fg": 758, "rotates": false }, - { "id": "overlay_worn_hat_knit", "fg": 759, "rotates": false }, - { "id": "overlay_worn_hat_newsboy", "fg": 760, "rotates": false }, - { "id": "overlay_worn_hat_noise_cancelling", "fg": 761, "rotates": false }, - { "id": "overlay_worn_hazmat_suit", "fg": 657, "rotates": false }, - { "id": "overlay_worn_headgear", "fg": 762, "rotates": false }, - { "id": "overlay_worn_heels", "fg": 763, "rotates": false }, - { "id": "overlay_worn_helmet_acidchitin", "fg": 645, "rotates": false }, - { "id": "overlay_worn_helmet_army", "fg": 764, "rotates": false }, - { "id": "overlay_worn_helmet_ball", "fg": 765, "rotates": false }, - { "id": "overlay_worn_helmet_barbute", "fg": 766, "rotates": false }, - { "id": "overlay_worn_helmet_bike", "fg": 767, "rotates": false }, - { "id": "overlay_worn_helmet_chitin", "fg": 768, "rotates": false }, - { "id": "overlay_worn_helmet_conical", "fg": 766, "rotates": false }, - { "id": "overlay_worn_helmet_corinthian", "fg": 766, "rotates": false }, - { "id": "overlay_worn_helmet_football", "fg": 769, "rotates": false }, - { "id": "overlay_worn_helmet_galea", "fg": 709, "rotates": false }, - { "id": "overlay_worn_helmet_hsurvivor", "fg": 770, "rotates": false }, - { "id": "overlay_worn_helmet_larmor", "fg": 771, "rotates": false }, - { "id": "overlay_worn_helmet_liner", "fg": 785, "rotates": false }, - { "id": "overlay_worn_helmet_lobster", "fg": 772, "rotates": false }, - { "id": "overlay_worn_helmet_motor", "fg": 773, "rotates": false }, - { "id": "overlay_worn_helmet_nasal", "fg": 709, "rotates": false }, - { "id": "overlay_worn_helmet_nomad", "fg": 774, "rotates": false }, - { "id": "overlay_worn_helmet_plate", "fg": 775, "rotates": false }, - { "id": "overlay_worn_helmet_riot", "fg": 776, "rotates": false }, - { "id": "overlay_worn_helmet_scavenger", "fg": 777, "rotates": false }, - { "id": "overlay_worn_helmet_skid", "fg": 778, "rotates": false }, - { "id": "overlay_worn_helmet_survivor", "fg": 779, "rotates": false }, - { "id": "overlay_worn_helmet_xlsurvivor", "fg": 780, "rotates": false }, - { "id": "overlay_worn_hmil_armor", "fg": 781, "rotates": false }, - { "id": "overlay_worn_holo_cloak", "fg": 627, "rotates": false }, - { "id": "overlay_worn_holster", "fg": 782, "rotates": false }, - { "id": "overlay_worn_hood_fsurvivor", "fg": 784, "rotates": false }, - { "id": "overlay_worn_hood_h20survivor", "fg": 785, "rotates": false }, - { "id": "overlay_worn_hood_lsurvivor", "fg": 786, "rotates": false }, - { "id": "overlay_worn_hood_rain", "fg": 785, "rotates": false }, - { "id": "overlay_worn_hood_survivor", "fg": 786, "rotates": false }, - { "id": "overlay_worn_hood_wsurvivor", "fg": 787, "rotates": false }, - { "id": "overlay_worn_hood_xlsurvivor", "fg": 786, "rotates": false }, - { "id": "overlay_worn_hoodie", "fg": 783, "rotates": false }, - { "id": "overlay_worn_hot_pants", "fg": 788, "rotates": false }, - { "id": "overlay_worn_hot_pants_fur", "fg": 788, "rotates": false }, - { "id": "overlay_worn_hot_pants_leather", "fg": 789, "rotates": false }, - { "id": "overlay_worn_house_coat", "fg": 790, "rotates": false }, - { "id": "overlay_worn_hsurvivor_suit", "fg": 791, "rotates": false }, - { "id": "overlay_worn_iggaak", "fg": 910, "rotates": false }, - { "id": "overlay_worn_jacket_army", "fg": 792, "rotates": false }, - { "id": "overlay_worn_jacket_chef", "fg": 793, "rotates": false }, - { "id": "overlay_worn_jacket_evac", "fg": 794, "rotates": false }, - { "id": "overlay_worn_jacket_flannel", "fg": 795, "rotates": false }, - { "id": "overlay_worn_jacket_jean", "fg": 796, "rotates": false }, - { "id": "overlay_worn_jacket_leather", "fg": 797, "rotates": false }, - { "id": "overlay_worn_jacket_leather_mod", "fg": 797, "rotates": false }, - { "id": "overlay_worn_jacket_leather_red", "fg": 798, "rotates": false }, - { "id": "overlay_worn_jacket_light", "fg": 799, "rotates": false }, - { "id": "overlay_worn_jacket_windbreaker", "fg": 800, "rotates": false }, - { "id": "overlay_worn_jade_brooch", "fg": 994, "rotates": false }, - { "id": "overlay_worn_jeans", "fg": 801, "rotates": false }, - { "id": "overlay_worn_jeans_red", "fg": 802, "rotates": false }, - { "id": "overlay_worn_jedi_cloak", "fg": 803, "rotates": false }, - { "id": "overlay_worn_jerrypack", "fg": 804, "rotates": false }, - { "id": "overlay_worn_jersey", "fg": 805, "rotates": false }, - { "id": "overlay_worn_judo_belt_black", "fg": 815, "rotates": false }, - { "id": "overlay_worn_judo_belt_blue", "fg": 815, "rotates": false }, - { "id": "overlay_worn_judo_belt_brown", "fg": 815, "rotates": false }, - { "id": "overlay_worn_judo_belt_green", "fg": 815, "rotates": false }, - { "id": "overlay_worn_judo_belt_orange", "fg": 815, "rotates": false }, - { "id": "overlay_worn_judo_belt_white", "fg": 815, "rotates": false }, - { "id": "overlay_worn_judo_belt_yellow", "fg": 815, "rotates": false }, - { "id": "overlay_worn_judo_gi", "fg": 806, "rotates": false }, - { "id": "overlay_worn_karate_gi", "fg": 806, "rotates": false }, - { "id": "overlay_worn_kariginu", "fg": 807, "rotates": false }, - { "id": "overlay_worn_keffiyeh", "fg": 839, "rotates": false }, - { "id": "overlay_worn_keikogi", "fg": 808, "rotates": false }, - { "id": "overlay_worn_kevlar", "fg": 971, "rotates": false }, - { "id": "overlay_worn_kilt", "fg": 891, "rotates": false }, - { "id": "overlay_worn_kimono", "fg": 809, "rotates": false }, - { "id": "overlay_worn_kippah", "fg": 810, "rotates": false }, - { "id": "overlay_worn_kittel", "fg": 811, "rotates": false }, - { "id": "overlay_worn_knee_high_boots", "fg": 812, "rotates": false }, - { "id": "overlay_worn_knee_pads", "fg": 813, "rotates": false }, - { "id": "overlay_worn_knit_scarf", "fg": 602, "rotates": false }, - { "id": "overlay_worn_knit_scarf_loose", "fg": 602, "rotates": false }, - { "id": "overlay_worn_kufi", "fg": 814, "rotates": false }, - { "id": "overlay_worn_leather_belt", "fg": 815, "rotates": false }, - { "id": "overlay_female_worn_leather_cat_ears", "fg": 223, "rotates": false }, - { "id": "overlay_male_worn_leather_cat_ears", "fg": 248, "rotates": false }, - { "id": "overlay_worn_leather_cat_tail", "fg": 740, "rotates": false }, - { "id": "overlay_worn_leather_pouch", "fg": 587, "rotates": false }, - { "id": "overlay_worn_leathersandals", "fg": 737, "rotates": false }, - { "id": "overlay_worn_leg_splint", "fg": 819, "rotates": false }, - { "id": "overlay_worn_leg_warmers", "fg": 820, "rotates": false }, - { "id": "overlay_worn_leg_warmers_f", "fg": 820, "rotates": false }, - { "id": "overlay_worn_leg_warmers_xl", "fg": 820, "rotates": false }, - { "id": "overlay_worn_leg_warmers_xlf", "fg": 820, "rotates": false }, - { "id": "overlay_worn_leggings", "fg": 932, "rotates": false }, - { "id": "overlay_worn_legguard_bronze", "fg": 817, "rotates": false }, - { "id": "overlay_worn_legguard_hard", "fg": 816, "rotates": false }, - { "id": [ "overlay_worn_legguard_metal", "overlay_worn_legguard_lightplate" ], "fg": 817, "rotates": false }, - { "id": "overlay_worn_legguard_paper", "fg": 818, "rotates": false }, - { "id": "overlay_worn_legrig", "fg": 912, "rotates": false }, - { "id": "overlay_worn_lmil_armor", "fg": 821, "rotates": false }, - { "id": "overlay_worn_loincloth", "fg": 822, "rotates": false }, - { "id": "overlay_worn_loincloth_fur", "fg": 822, "rotates": false }, - { "id": "overlay_worn_loincloth_leather", "fg": 822, "rotates": false }, - { "id": "overlay_worn_loincloth_wool", "fg": 822, "rotates": false }, - { "id": "overlay_worn_long_glove_white", "fg": 823, "rotates": false }, - { "id": "overlay_worn_long_knit_scarf", "fg": 603, "rotates": false }, - { "id": "overlay_worn_long_knit_scarf_loose", "fg": 603, "rotates": false }, - { "id": "overlay_worn_long_patchwork_scarf", "fg": 604, "rotates": false }, - { "id": "overlay_worn_long_patchwork_scarf_loose", "fg": 604, "rotates": false }, - { "id": "overlay_worn_lowtops", "fg": 824, "rotates": false }, - { "id": "overlay_worn_lsurvivor_armor", "fg": 825, "rotates": false }, - { "id": "overlay_worn_lsurvivor_pants", "fg": 863, "rotates": false }, - { "id": "overlay_worn_lsurvivor_suit", "fg": 915, "rotates": false }, - { "id": "overlay_worn_magbandolier", "fg": 626, "rotates": false }, - { "id": "overlay_worn_maid_dress", "fg": 826, "rotates": false }, - { "id": "overlay_worn_maid_hat", "fg": 827, "rotates": false }, - { "id": "overlay_worn_maid_stockings", "fg": 902, "rotates": false }, - { "id": "overlay_worn_makeshift_knapsack", "fg": 828, "rotates": false }, - { "id": "overlay_worn_makeshift_sling", "fg": 829, "rotates": false }, - { "id": "overlay_worn_mask_bal", "fg": 830, "rotates": false }, - { "id": "overlay_worn_mask_bunker", "fg": 605, "rotates": false }, - { "id": "overlay_worn_mask_bunker_on", "fg": 606, "rotates": false }, - { "id": "overlay_worn_mask_dust", "fg": 831, "rotates": false }, - { "id": "overlay_worn_mask_filter", "fg": 832, "rotates": false }, - { "id": "overlay_worn_mask_fsurvivor", "fg": 833, "rotates": false }, - { "id": "overlay_worn_mask_fsurvivorxl", "fg": 833, "rotates": false }, - { "id": "overlay_worn_mask_gas", "fg": 834, "rotates": false }, - { "id": "overlay_worn_mask_gas_xl", "fg": 834, "rotates": false }, - { "id": "overlay_worn_mask_guy_fawkes", "fg": 835, "rotates": false }, - { "id": "overlay_worn_mask_h20survivor", "fg": 607, "rotates": false }, - { "id": "overlay_worn_mask_h20survivor_on", "fg": 607, "rotates": false }, - { "id": "overlay_worn_mask_h20survivorxl", "fg": 607, "rotates": false }, - { "id": "overlay_worn_mask_h20survivorxl_on", "fg": 607, "rotates": false }, - { "id": "overlay_worn_mask_hockey", "fg": 836, "rotates": false }, - { "id": "overlay_worn_mask_hsurvivor", "fg": 837, "rotates": false }, - { "id": "overlay_worn_mask_lsurvivor", "fg": 838, "rotates": false }, - { "id": "overlay_worn_mask_rioter", "fg": 839, "rotates": false }, - { "id": [ "overlay_worn_mask_ski_loose", "mask_ski_loose" ], "fg": 609, "rotates": false }, - { "id": [ "overlay_worn_mask_ski", "mask_ski" ], "fg": 608, "rotates": false }, - { "id": "overlay_worn_mask_survivor", "fg": 838, "rotates": false }, - { "id": "overlay_worn_mask_survivorxl", "fg": 838, "rotates": false }, - { "id": "overlay_worn_mask_wsurvivor", "fg": 840, "rotates": false }, - { "id": "overlay_worn_mask_wsurvivorxl", "fg": 840, "rotates": false }, - { "id": "overlay_worn_mbag", "fg": 841, "rotates": false }, - { "id": "overlay_worn_megaarmor_armguards_1", "fg": 842, "rotates": false }, - { "id": "overlay_worn_megaarmor_boots_1", "fg": 843, "rotates": false }, - { "id": "overlay_worn_megaarmor_gloves_1", "fg": 844, "rotates": false }, - { "id": "overlay_worn_megaarmor_head_1", "fg": 845, "rotates": false }, - { "id": "overlay_worn_megaarmor_leggings_1", "fg": 846, "rotates": false }, - { "id": "overlay_worn_megaarmor_torso_1", "fg": 847, "rotates": false }, - { "id": "overlay_worn_megaarmor_torso_2", "fg": 848, "rotates": false }, - { "id": "overlay_worn_megaarmor_torso_3", "fg": 610, "rotates": false }, - { "id": "overlay_worn_megaarmor_torso_3_act", "fg": 611, "rotates": false }, - { "id": "overlay_worn_microskirt", "fg": 852, "rotates": false }, - { "id": "overlay_worn_mil_armor", "fg": 849, "rotates": false }, - { "id": "overlay_worn_mittens", "fg": 745, "rotates": false }, - { "id": "overlay_worn_mocassins", "fg": 717, "rotates": false }, - { "id": "overlay_worn_modularvest", "fg": 940, "rotates": false }, - { "id": "overlay_worn_modularvestceramic", "fg": 940, "rotates": false }, - { "id": "overlay_worn_modularvesthard", "fg": 940, "rotates": false }, - { "id": "overlay_worn_modularvestkevlar", "fg": 940, "rotates": false }, - { "id": "overlay_worn_modularveststeel", "fg": 940, "rotates": false }, - { "id": "overlay_worn_modularvestsuper", "fg": 940, "rotates": false }, - { "id": "overlay_worn_molle_pack", "fg": 850, "rotates": false }, - { "id": "overlay_worn_motorbike_armor", "fg": 851, "rotates": false }, - { "id": "overlay_worn_motorbike_boots", "fg": 691, "rotates": false }, - { "id": "overlay_worn_motorbike_pants", "fg": 926, "rotates": false }, - { "id": "overlay_worn_nanoskirt", "fg": 852, "rotates": false }, - { "id": "overlay_worn_nomex_gloves", "fg": 745, "rotates": false }, - { "id": "overlay_worn_nomex_hood", "fg": 785, "rotates": false }, - { "id": "overlay_worn_nomex_socks", "fg": 853, "rotates": false }, - { "id": "overlay_worn_nomex_suit", "fg": 854, "rotates": false }, - { "id": "overlay_worn_obi_gi", "fg": 815, "rotates": false }, - { "id": "overlay_worn_optical_cloak", "fg": 855, "rotates": false }, - { "id": "overlay_worn_panties", "fg": 856, "rotates": false }, - { "id": "overlay_worn_pants", "fg": 857, "rotates": false }, - { "id": "overlay_worn_pants_army", "fg": 858, "rotates": false }, - { "id": "overlay_worn_pants_cargo", "fg": 859, "rotates": false }, - { "id": "overlay_worn_pants_checkered", "fg": 860, "rotates": false }, - { "id": "overlay_worn_pants_fur", "fg": 861, "rotates": false }, - { "id": "overlay_worn_pants_leather", "fg": 861, "rotates": false }, - { "id": "overlay_worn_pants_ski", "fg": 862, "rotates": false }, - { "id": "overlay_worn_pants_survivor", "fg": 863, "rotates": false }, - { "id": "overlay_worn_patchwork_scarf", "fg": 619, "rotates": false }, - { "id": "overlay_worn_patchwork_scarf_loose", "fg": 619, "rotates": false }, - { "id": "overlay_worn_peacoat", "fg": 864, "rotates": false }, - { "id": "overlay_worn_plastic_shopping_bag", "fg": 865, "rotates": false }, - { "id": "overlay_worn_platinum_locket", "fg": 997, "rotates": false }, - { "id": "overlay_worn_platinum_necklace", "fg": 998, "rotates": false }, - { "id": [ "overlay_worn_platinum_ring", "overlay_worn_mring_platinum" ], "fg": 999, "rotates": false }, - { "id": "overlay_worn_poncho", "fg": 866, "rotates": false }, - { "id": "overlay_worn_postman_hat", "fg": 867, "rotates": false }, - { "id": "overlay_worn_postman_shorts", "fg": 868, "rotates": false }, - { "id": "overlay_worn_pot_helmet", "fg": 869, "rotates": false }, - { "id": "overlay_worn_power_armor_basic", "fg": 870, "rotates": false }, - { "id": "overlay_worn_power_armor_heavy", "fg": 871, "rotates": false }, - { "id": "overlay_worn_power_armor_helmet_basic", "fg": 872, "rotates": false }, - { "id": "overlay_worn_power_armor_helmet_heavy", "fg": 873, "rotates": false }, - { "id": "overlay_worn_power_armor_helmet_light", "fg": 874, "rotates": false }, - { "id": "overlay_worn_power_armor_light", "fg": 875, "rotates": false }, - { "id": [ "overlay_worn_powered_earmuffs", "overlay_worn_powered_earmuffs_on" ], "fg": 641 }, - { "id": "overlay_worn_purse", "fg": 876, "rotates": false }, - { "id": "overlay_worn_quiver", "fg": 877, "rotates": false }, - { "id": "overlay_worn_quiver_birchbark", "fg": 877, "rotates": false }, - { "id": "overlay_worn_quiver_large", "fg": 878, "rotates": false }, - { "id": "overlay_worn_quiver_large_birchbark", "fg": 878, "rotates": false }, - { "id": "overlay_worn_rebreather", "fg": 1000, "rotates": false }, - { "id": "overlay_worn_rebreather_xl", "fg": 1000, "rotates": false }, - { "id": "overlay_worn_revenant_crown", "fg": 612, "rotates": false }, - { "id": [ "overlay_worn_diamond_ring", "overlay_worn_ring_wedding" ], "fg": 967, "rotates": false }, - { "id": [ "overlay_worn_ring_engagement" ], "fg": 1001, "rotates": false }, - { "id": "overlay_worn_ring_purity", "fg": 1002, "rotates": false }, - { "id": "overlay_worn_ring_signet", "fg": 1003, "rotates": false }, - { "id": "overlay_worn_rm13_armor", "fg": 625, "rotates": false }, - { "id": "overlay_worn_rm13_armor_on", "fg": 613, "rotates": false }, - { "id": "overlay_worn_robe", "fg": 879, "rotates": false }, - { "id": "overlay_worn_roller_blades", "fg": 880, "rotates": false }, - { "id": "overlay_worn_rollerskates", "fg": 880, "rotates": false }, - { "id": "overlay_worn_rucksack", "fg": 881, "rotates": false }, - { "id": "overlay_worn_runner_bag", "fg": 882, "rotates": false }, - { "id": "overlay_worn_sac_purse", "fg": 614, "rotates": false }, - { "id": "overlay_worn_sac_purse_arm", "fg": 615, "rotates": false }, - { "id": "overlay_worn_sac_purse_leg", "fg": 616, "rotates": false }, - { "id": "overlay_worn_scabbard", "fg": 883, "rotates": false }, - { "id": "overlay_worn_scarf", "fg": 617, "rotates": false }, - { "id": "overlay_worn_scarf_fur", "fg": 618, "rotates": false }, - { "id": "overlay_worn_scarf_fur_long", "fg": 603, "rotates": false }, - { "id": "overlay_worn_scarf_fur_long_loose", "fg": 603, "rotates": false }, - { "id": "overlay_worn_scarf_fur_loose", "fg": 618, "rotates": false }, - { "id": "overlay_worn_scarf_long", "fg": 604, "rotates": false }, - { "id": "overlay_worn_scarf_long_loose", "fg": 604, "rotates": false }, - { "id": "overlay_worn_scarf_loose", "fg": 619, "rotates": false }, - { "id": "overlay_worn_shark_suit", "fg": 884, "rotates": false }, - { "id": "overlay_worn_shark_suit_faraday", "fg": 884, "rotates": false }, - { "id": "overlay_worn_sheath", "fg": 885, "rotates": false }, - { "id": "overlay_worn_sheet", "fg": 680, "rotates": false }, - { "id": "overlay_worn_shoes_birchbark", "fg": 886, "rotates": false }, - { "id": "overlay_worn_shoes_bowling", "fg": 887, "rotates": false }, - { "id": "overlay_worn_sholster", "fg": 782, "rotates": false }, - { "id": "overlay_worn_shorts", "fg": 888, "rotates": false }, - { "id": "overlay_worn_shorts_cargo", "fg": 889, "rotates": false }, - { "id": "overlay_worn_shorts_denim", "fg": 868, "rotates": false }, - { "id": "overlay_worn_silver_medal", "fg": 1005, "rotates": false }, - { "id": "overlay_worn_silver_necklace", "fg": 1006, "rotates": false }, - { "id": [ "overlay_worn_silver_ring", "overlay_worn_mring_silver" ], "fg": 1007, "rotates": false }, - { "id": "overlay_worn_skinny_tie", "fg": 890, "rotates": false }, - { "id": "overlay_worn_skirt", "fg": 891, "rotates": false }, - { "id": "overlay_worn_skirt_leather", "fg": 892, "rotates": false }, - { "id": "overlay_worn_sleeping_bag", "fg": 893, "rotates": false }, - { "id": "overlay_worn_sleeping_bag_fur", "fg": 893, "rotates": false }, - { "id": "overlay_worn_sleeveless_duster", "fg": 894, "rotates": false }, - { "id": "overlay_worn_sleeveless_duster_fur", "fg": 894, "rotates": false }, - { "id": "overlay_worn_sleeveless_duster_leather", "fg": 894, "rotates": false }, - { "id": "overlay_worn_sleeveless_duster_survivor", "fg": 895, "rotates": false }, - { "id": "overlay_worn_sleeveless_trenchcoat", "fg": 896, "rotates": false }, - { "id": "overlay_worn_sleeveless_trenchcoat_fur", "fg": 896, "rotates": false }, - { "id": "overlay_worn_sleeveless_trenchcoat_leather", "fg": 896, "rotates": false }, - { "id": "overlay_worn_sleeveless_trenchcoat_survivor", "fg": 897, "rotates": false }, - { "id": "overlay_worn_sleeveless_tunic", "fg": 936, "rotates": false }, - { "id": "overlay_worn_slingpack", "fg": 882, "rotates": false }, - { "id": "overlay_worn_slippers", "fg": 898, "rotates": false }, - { "id": "overlay_worn_sneakers", "fg": 899, "rotates": false }, - { "id": "overlay_worn_snuggie", "fg": 1009, "rotates": false }, - { "id": "overlay_worn_sockmitts", "fg": 823, "rotates": false }, - { "id": "overlay_worn_socks", "fg": 900, "rotates": false }, - { "id": "overlay_worn_socks_bag", "fg": 900, "rotates": false }, - { "id": "overlay_worn_socks_bowling", "fg": 900, "rotates": false }, - { "id": "overlay_worn_socks_wool", "fg": 900, "rotates": false }, - { "id": "overlay_worn_sports_bra", "fg": 901, "rotates": false }, - { "id": "overlay_worn_stealth_cloak", "fg": 620, "rotates": false }, - { "id": "overlay_worn_stillsuit", "fg": 791, "rotates": false }, - { "id": "overlay_worn_stockings", "fg": 902, "rotates": false }, - { "id": "overlay_worn_stockings_oath", "fg": 902, "rotates": false }, - { "id": "overlay_worn_stockings_tent_arms", "fg": 903, "rotates": false }, - { "id": "overlay_worn_stockings_tent_legs", "fg": 904, "rotates": false }, - { "id": "overlay_worn_stomach_sealed", "fg": 587, "rotates": false }, - { "id": "overlay_worn_straw_basket", "fg": 905, "rotates": false }, - { "id": "overlay_worn_straw_sandals", "fg": 737, "rotates": false }, - { "id": "overlay_worn_striped_pants", "fg": 1010, "rotates": false }, - { "id": "overlay_worn_striped_shirt", "fg": 906, "rotates": false }, - { "id": "overlay_worn_subsuit_xl", "fg": 930, "rotates": false }, - { "id": "overlay_worn_suit", "fg": 907, "rotates": false }, - { "id": "overlay_worn_suitcase_l", "fg": 908, "rotates": false }, - { "id": "overlay_worn_suitcase_m", "fg": 908, "rotates": false }, - { "id": "overlay_worn_sundress", "fg": 909, "rotates": false }, - { "id": "overlay_worn_sunglasses", "fg": 910, "rotates": false }, - { "id": "overlay_worn_surv_armor_suit", "fg": 917, "rotates": false }, - { "id": "overlay_worn_surv_suit", "fg": 918, "rotates": false }, - { "id": "overlay_worn_survbowpack", "fg": 911, "rotates": false }, - { "id": "overlay_worn_survivor_belt", "fg": 912, "rotates": false }, - { "id": "overlay_worn_survivor_belt_notools", "fg": 912, "rotates": false }, - { "id": "overlay_worn_survivor_duffel_bag", "fg": 913, "rotates": false }, - { "id": "overlay_worn_survivor_goggles", "fg": 750, "rotates": false }, - { "id": "overlay_worn_survivor_light", "fg": 621, "rotates": false }, - { "id": "overlay_worn_survivor_light_on", "fg": 622, "rotates": false }, - { "id": "overlay_worn_survivor_pack", "fg": 670, "rotates": false }, - { "id": "overlay_worn_survivor_rucksack", "fg": 914, "rotates": false }, - { "id": "overlay_worn_survivor_runner_pack", "fg": 882, "rotates": false }, - { "id": "overlay_worn_survivor_suit", "fg": 915, "rotates": false }, - { "id": "overlay_worn_survivor_vest", "fg": 916, "rotates": false }, - { "id": "overlay_worn_swag_bag", "fg": 919, "rotates": false }, - { "id": "overlay_worn_swat_armor", "fg": 920, "rotates": false }, - { "id": "overlay_worn_swat_badge_swat", "fg": 1014, "rotates": false }, - { "id": "overlay_worn_sweater", "fg": 921, "rotates": false }, - { "id": "overlay_worn_sweatshirt", "fg": 922, "rotates": false }, - { "id": "overlay_worn_swim_fins", "fg": 923, "rotates": false }, - { "id": "overlay_worn_tabi_dress", "fg": 900, "rotates": false }, - { "id": "overlay_worn_tabi_gi", "fg": 739, "rotates": false }, - { "id": "overlay_worn_tac_fullhelmet", "fg": 924, "rotates": false }, - { "id": "overlay_worn_tac_helmet", "fg": 778, "rotates": false }, - { "id": "overlay_worn_tank_top", "fg": 925, "rotates": false }, - { "id": "overlay_worn_tarp", "fg": 680, "rotates": false }, - { "id": "overlay_worn_technician_pants_gray", "fg": 926, "rotates": false }, - { "id": "overlay_worn_technician_shirt_blue", "fg": 927, "rotates": false }, - { "id": "overlay_worn_technician_shirt_gray", "fg": 928, "rotates": false }, - { "id": "overlay_worn_technician_shirt_ltblue", "fg": 929, "rotates": false }, - { "id": "overlay_worn_thawb", "fg": 930, "rotates": false }, - { "id": "overlay_worn_thermal_gloves", "fg": 748, "rotates": false }, - { "id": "overlay_worn_thermal_gloves_on", "fg": 748, "rotates": false }, - { "id": "overlay_worn_thermal_mask", "fg": 839, "rotates": false }, - { "id": "overlay_worn_thermal_mask_on", "fg": 839, "rotates": false }, - { "id": "overlay_worn_thermal_socks", "fg": 739, "rotates": false }, - { "id": "overlay_worn_thermal_socks_on", "fg": 739, "rotates": false }, - { "id": "overlay_worn_thigh_high_boots", "fg": 931, "rotates": false }, - { "id": "overlay_worn_thong", "fg": 856, "rotates": false }, - { "id": "overlay_worn_tights", "fg": 932, "rotates": false }, - { "id": "overlay_worn_tool_belt", "fg": 912, "rotates": false }, - { "id": "overlay_worn_touring_suit", "fg": 915, "rotates": false }, - { "id": "overlay_worn_trenchcoat", "fg": 933, "rotates": false }, - { "id": "overlay_worn_trenchcoat_fur", "fg": 933, "rotates": false }, - { "id": "overlay_worn_trenchcoat_leather", "fg": 933, "rotates": false }, - { "id": "overlay_worn_trenchcoat_survivor", "fg": 934, "rotates": false }, - { "id": "overlay_worn_tricorne", "fg": 935, "rotates": false }, - { "id": "overlay_worn_trunks", "fg": 868, "rotates": false }, - { "id": "overlay_worn_tunic", "fg": 936, "rotates": false }, - { "id": "overlay_worn_tunic_rag", "fg": 936, "rotates": false }, - { "id": "overlay_worn_turban", "fg": 937, "rotates": false }, - { "id": "overlay_worn_tux", "fg": 907, "rotates": false }, - { "id": "overlay_worn_under_armor_shorts", "fg": 939, "rotates": false }, - { "id": "overlay_worn_undershirt", "fg": 938, "rotates": false }, - { "id": "overlay_worn_vambrace_larmor", "fg": 744, "rotates": false }, - { "id": "overlay_worn_vest", "fg": 940, "rotates": false }, - { "id": "overlay_worn_vest_leather", "fg": 941, "rotates": false }, - { "id": "overlay_worn_vest_leather_mod", "fg": 941, "rotates": false }, - { "id": "overlay_worn_waistcoat", "fg": 942, "rotates": false }, - { "id": [ "overlay_worn_sf_watch", "overlay_worn_platinum_watch" ], "fg": 1004, "rotates": false }, - { "id": "overlay_worn_gold_watch", "fg": 993, "rotates": false }, - { "id": "overlay_worn_waterskin2", "fg": 587, "rotates": false }, - { "id": "overlay_worn_waterskin3", "fg": 587, "rotates": false }, - { "id": "overlay_worn_waterskin", "fg": 587, "rotates": false }, - { "id": "overlay_worn_wearable_light", "fg": 623, "rotates": false }, - { "id": "overlay_worn_wearable_light_on", "fg": 624, "rotates": false }, - { "id": "overlay_worn_welding_mask", "fg": 1015, "rotates": false }, - { "id": "overlay_worn_welding_mask_crude", "fg": 1016, "rotates": false }, - { "id": "overlay_worn_wetsuit", "fg": 943, "rotates": false }, - { "id": "overlay_worn_wetsuit_booties", "fg": 944, "rotates": false }, - { "id": "overlay_worn_wetsuit_gloves", "fg": 749, "rotates": false }, - { "id": "overlay_worn_wetsuit_hood", "fg": 945, "rotates": false }, - { "id": "overlay_worn_wetsuit_spring", "fg": 946, "rotates": false }, - { "id": "overlay_worn_winter_gloves_army", "fg": 746, "rotates": false }, - { "id": "overlay_worn_winter_jacket_army", "fg": 947, "rotates": false }, - { "id": "overlay_worn_winter_pants_army", "fg": 948, "rotates": false }, - { "id": "overlay_worn_wolfsuit", "fg": 949, "rotates": false }, - { "id": "overlay_worn_wool_hoodie", "fg": 800, "rotates": false }, - { "id": "overlay_worn_wool_suit", "fg": 907, "rotates": false }, - { "id": "overlay_worn_wristwatch", "fg": 1017, "rotates": false }, - { "id": "overlay_worn_wsurvivor_suit", "fg": 950, "rotates": false }, - { "id": "overlay_worn_xlsurvivor_suit", "fg": 915, "rotates": false }, - { "id": "overlay_worn_zubon_gi", "fg": 862, "rotates": false }, - { "id": "overlay_female_mutation_BARK", "fg": 216 }, - { "id": "overlay_female_mutation_BEAK", "fg": 217 }, - { "id": "overlay_female_mutation_SPINES", "fg": 233 }, - { "id": "overlay_female_mutation_THORNS", "fg": 235 }, - { "id": "overlay_female_mutation_URSINE_EARS", "fg": 239 }, - { "id": "overlay_male_mutation_BARK", "fg": 241 }, - { "id": "overlay_male_mutation_BEAK", "fg": 242 }, - { "id": "overlay_male_mutation_SPINES", "fg": 258 }, - { "id": "overlay_male_mutation_THORNS", "fg": 260 }, - { "id": "overlay_male_mutation_URSINE_EARS", "fg": 264 }, - { "id": "overlay_mutation_BEAK_HUM", "fg": 265 }, - { "id": "overlay_mutation_BEAK_PECK", "fg": 266 }, - { "id": "overlay_mutation_BEAUTIFUL3", "fg": 267 }, - { "id": "overlay_mutation_ELFAEYES", "fg": 272 }, - { "id": "overlay_mutation_FEL_EYE", "fg": 274 }, - { "id": "overlay_mutation_MANDIBLES", "fg": 277 }, - { "id": "overlay_mutation_MUZZLE", "fg": 280 }, - { "id": "overlay_mutation_MUZZLE_BEAR", "fg": 281 }, - { "id": "overlay_mutation_TAIL_FIN", "fg": 283 }, - { "id": "overlay_mutation_TAIL_LONG", "fg": 284 }, - { "id": "overlay_mutation_TAIL_THICK", "fg": 285 }, - { "id": "overlay_mutation_WHISKERS", "fg": 286 }, - { "id": "overlay_mutation_eye_amber", "fg": 287 }, - { "id": "overlay_mutation_eye_brown", "fg": 288 }, - { "id": "overlay_mutation_eye_gray", "fg": 289 }, - { "id": "overlay_mutation_eye_green", "fg": 290 }, - { "id": "overlay_mutation_eye_hazel", "fg": 291 }, - { "id": "overlay_female_mutation_SKIN_DARK", "fg": 384 }, - { "id": "overlay_female_mutation_SKIN_MEDIUM", "fg": 385 }, - { "id": "overlay_female_mutation_SKIN_PINK", "fg": 386 }, - { "id": "overlay_female_mutation_SKIN_TAN", "fg": 387 }, - { "id": "overlay_male_mutation_SKIN_DARK", "fg": 388 }, - { "id": "overlay_male_mutation_SKIN_LIGHT", "fg": 389 }, - { "id": "overlay_male_mutation_SKIN_MEDIUM", "fg": 390 }, - { "id": "overlay_male_mutation_SKIN_PINK", "fg": 391 }, - { "id": "overlay_female_worn_boots_rubber", "fg": 951 }, - { "id": "overlay_male_worn_boots_rubber", "fg": 952 }, - { "id": "overlay_worn_bookplate", "fg": 960 }, - { "id": "overlay_worn_broken_dimensional_anchor", "fg": 961 }, - { "id": "overlay_worn_diamond_dental_grill", "fg": 966 }, - { "id": "overlay_worn_dimensional_anchor", "fg": 968 }, - { "id": "overlay_worn_dimensional_anchor_on", "fg": 969 }, - { "id": "overlay_worn_eclipse_glasses", "fg": 972 }, - { "id": "overlay_worn_fancy_glasses_bifocal", "fg": 974 }, - { "id": "overlay_worn_fancy_glasses_eye", "fg": 975 }, - { "id": "overlay_worn_fancy_glasses_reading", "fg": 976 }, - { "id": "overlay_worn_fanny", "fg": 977 }, - { "id": "overlay_worn_fur_cat_tail", "fg": 981 }, - { "id": "overlay_worn_fur_collar", "fg": 982 }, - { "id": "overlay_worn_glasses_bifocal", "fg": 983 }, - { "id": "overlay_worn_glasses_eye", "fg": 984 }, - { "id": "overlay_worn_glasses_reading", "fg": 985 }, - { "id": "overlay_worn_gloves_rubber", "fg": 987 }, - { "id": "overlay_worn_gold_ear", "fg": 988 }, - { "id": "overlay_worn_leather_collar", "fg": 995 }, - { "id": "overlay_worn_silver_watch", "fg": 1008 }, - { "id": "overlay_worn_sunglasses_bifocal", "fg": 1011 }, - { "id": "overlay_worn_sunglasses_eye", "fg": 1012 }, - { "id": "overlay_worn_sunglasses_reading", "fg": 1013 }, - { "id": "overlay_worn_chestguard_hard", "fg": 1018 } + { "id": "overlay_worn_elbow_pads", "fg": 749, "rotates": false }, + { "id": "overlay_worn_emer_blanket", "fg": 696, "rotates": false }, + { "id": "overlay_worn_emer_blanket_on", "fg": 696, "rotates": false }, + { "id": "overlay_worn_entry_suit", "fg": 989, "rotates": false }, + { "id": "overlay_worn_fancy_bra", "fg": 715, "rotates": false }, + { "id": "overlay_worn_fancy_sunglasses", "fg": 926, "rotates": false }, + { "id": "overlay_worn_fencing_jacket", "fg": 994, "rotates": false }, + { "id": "overlay_worn_fencing_mask", "fg": 995, "rotates": false }, + { "id": "overlay_worn_fencing_pants", "fg": 750, "rotates": false }, + { "id": "overlay_worn_fire_gauntlets", "fg": 761, "rotates": false }, + { "id": "overlay_worn_fireman_belt", "fg": 928, "rotates": false }, + { "id": "overlay_worn_fishing_waders", "fg": 751, "rotates": false }, + { "id": "overlay_worn_fitover_sunglasses", "fg": 926, "rotates": false }, + { "id": "overlay_worn_flag_shirt", "fg": 752, "rotates": false }, + { "id": "overlay_worn_flip_flops", "fg": 753, "rotates": false }, + { "id": [ "overlay_worn_flotation_vest", "overlay_worn_flotation_vest_ms" ], "fg": 814, "rotates": false }, + { "id": "overlay_worn_folding_poncho_on", "fg": 611, "rotates": false }, + { "id": "overlay_worn_football_armor", "fg": 754, "rotates": false }, + { "id": "overlay_worn_footrags", "fg": 755, "rotates": false }, + { "id": "overlay_worn_footrags_fur", "fg": 916, "rotates": false }, + { "id": "overlay_worn_footrags_leather", "fg": 869, "rotates": false }, + { "id": "overlay_worn_footrags_wool", "fg": 916, "rotates": false }, + { "id": "overlay_worn_fsurvivor_suit", "fg": 870, "rotates": false }, + { "id": "overlay_worn_fur_blanket", "fg": 696, "rotates": false }, + { "id": "overlay_female_worn_fur_cat_ears", "fg": 239, "rotates": false }, + { "id": "overlay_male_worn_fur_cat_ears", "fg": 264, "rotates": false }, + { "id": "overlay_worn_gambeson", "fg": 952, "rotates": false }, + { "id": "overlay_worn_gauntlets_acidchitin", "fg": 666, "rotates": false }, + { "id": "overlay_worn_gauntlets_chitin", "fg": 762, "rotates": false }, + { "id": "overlay_worn_gauntlets_larmor", "fg": 762, "rotates": false }, + { "id": "overlay_worn_geta", "fg": 914, "rotates": false }, + { "id": "overlay_worn_glasses_bal", "fg": 766, "rotates": false }, + { "id": "overlay_worn_glasses_monocle", "fg": 757, "rotates": false }, + { "id": [ "overlay_worn_glasses_safety" ], "fg": 758, "rotates": false }, + { "id": "overlay_worn_glove_jackson", "fg": 764, "rotates": false }, + { "id": "overlay_worn_gloves_bag", "fg": 759, "rotates": false }, + { "id": "overlay_worn_gloves_fingerless", "fg": 760, "rotates": false }, + { "id": "overlay_worn_gloves_fingerless_mod", "fg": 760, "rotates": false }, + { "id": "overlay_worn_gloves_fsurvivor", "fg": 761, "rotates": false }, + { "id": "overlay_worn_gloves_fur", "fg": 762, "rotates": false }, + { "id": "overlay_worn_gloves_h20survivor", "fg": 763, "rotates": false }, + { "id": "overlay_worn_gloves_hsurvivor", "fg": 763, "rotates": false }, + { "id": "overlay_worn_gloves_leather", "fg": 762, "rotates": false }, + { "id": "overlay_worn_gloves_light", "fg": 764, "rotates": false }, + { "id": "overlay_worn_gloves_liner", "fg": 764, "rotates": false }, + { "id": "overlay_worn_gloves_lsurvivor", "fg": 763, "rotates": false }, + { "id": "overlay_worn_gloves_medical", "fg": 764, "rotates": false }, + { "id": "overlay_worn_gloves_plate", "fg": 764, "rotates": false }, + { "id": "overlay_worn_gloves_survivor", "fg": 763, "rotates": false }, + { "id": "overlay_worn_gloves_tactical", "fg": 763, "rotates": false }, + { "id": "overlay_worn_gloves_winter", "fg": 763, "rotates": false }, + { "id": "overlay_worn_gloves_wool", "fg": 764, "rotates": false }, + { "id": "overlay_worn_gloves_work", "fg": 765, "rotates": false }, + { "id": "overlay_worn_gloves_wraps", "fg": 764, "rotates": false }, + { "id": "overlay_worn_gloves_wraps_fur", "fg": 762, "rotates": false }, + { "id": "overlay_worn_gloves_wraps_leather", "fg": 762, "rotates": false }, + { "id": "overlay_worn_gloves_wraps_wool", "fg": 764, "rotates": false }, + { "id": "overlay_worn_gloves_wsurvivor", "fg": 763, "rotates": false }, + { "id": "overlay_worn_gloves_xlsurvivor", "fg": 763, "rotates": false }, + { "id": "overlay_worn_gobag", "fg": 929, "rotates": false }, + { "id": "overlay_worn_goggles_ir", "fg": 612, "rotates": false }, + { "id": "overlay_worn_goggles_ir_on", "fg": 613, "rotates": false }, + { "id": "overlay_worn_goggles_nv", "fg": 614, "rotates": false }, + { "id": "overlay_worn_goggles_nv_clairvoyance", "fg": 615, "rotates": false }, + { "id": "overlay_worn_goggles_nv_on", "fg": 616, "rotates": false }, + { "id": "overlay_worn_goggles_ski", "fg": 766, "rotates": false }, + { "id": "overlay_worn_goggles_swim", "fg": 766, "rotates": false }, + { "id": "overlay_worn_goggles_welding", "fg": 767, "rotates": false }, + { "id": "overlay_worn_gold_dental_grill", "fg": 663, "rotates": false }, + { "id": "overlay_worn_gold_locket", "fg": 1005, "rotates": false }, + { "id": "overlay_worn_gold_medal", "fg": 1006, "rotates": false }, + { "id": "overlay_worn_gold_necklace", "fg": 1007, "rotates": false }, + { "id": [ "overlay_worn_gold_ring", "overlay_worn_mring_gold" ], "fg": 1008, "rotates": false }, + { "id": "overlay_worn_gown", "fg": 745, "rotates": false }, + { "id": "overlay_worn_greatcoat", "fg": 768, "rotates": false }, + { "id": "overlay_worn_h20survivor_suit", "fg": 807, "rotates": false }, + { "id": "overlay_worn_hakama_gi", "fg": 769, "rotates": false }, + { "id": "overlay_worn_halter_top", "fg": 770, "rotates": false }, + { "id": "overlay_worn_harmonica_holder", "fg": 617, "rotates": false }, + { "id": "overlay_worn_hat_ball", "fg": 771, "rotates": false }, + { "id": "overlay_worn_hat_boonie", "fg": 772, "rotates": false }, + { "id": "overlay_worn_hat_cotton", "fg": 775, "rotates": false }, + { "id": "overlay_worn_hat_fur", "fg": 773, "rotates": false }, + { "id": "overlay_worn_hat_hunting", "fg": 774, "rotates": false }, + { "id": "overlay_worn_hat_knit", "fg": 775, "rotates": false }, + { "id": "overlay_worn_hat_newsboy", "fg": 776, "rotates": false }, + { "id": "overlay_worn_hat_noise_cancelling", "fg": 777, "rotates": false }, + { "id": "overlay_worn_hazmat_suit", "fg": 673, "rotates": false }, + { "id": "overlay_worn_headgear", "fg": 778, "rotates": false }, + { "id": "overlay_worn_heels", "fg": 779, "rotates": false }, + { "id": "overlay_worn_helmet_acidchitin", "fg": 661, "rotates": false }, + { "id": "overlay_worn_helmet_army", "fg": 780, "rotates": false }, + { "id": "overlay_worn_helmet_ball", "fg": 781, "rotates": false }, + { "id": "overlay_worn_helmet_barbute", "fg": 782, "rotates": false }, + { "id": "overlay_worn_helmet_bike", "fg": 783, "rotates": false }, + { "id": "overlay_worn_helmet_chitin", "fg": 784, "rotates": false }, + { "id": "overlay_worn_helmet_conical", "fg": 782, "rotates": false }, + { "id": "overlay_worn_helmet_corinthian", "fg": 782, "rotates": false }, + { "id": "overlay_worn_helmet_football", "fg": 785, "rotates": false }, + { "id": "overlay_worn_helmet_galea", "fg": 725, "rotates": false }, + { "id": "overlay_worn_helmet_hsurvivor", "fg": 786, "rotates": false }, + { "id": "overlay_worn_helmet_larmor", "fg": 787, "rotates": false }, + { "id": "overlay_worn_helmet_liner", "fg": 801, "rotates": false }, + { "id": "overlay_worn_helmet_lobster", "fg": 788, "rotates": false }, + { "id": "overlay_worn_helmet_motor", "fg": 789, "rotates": false }, + { "id": "overlay_worn_helmet_nasal", "fg": 725, "rotates": false }, + { "id": "overlay_worn_helmet_nomad", "fg": 790, "rotates": false }, + { "id": "overlay_worn_helmet_plate", "fg": 791, "rotates": false }, + { "id": "overlay_worn_helmet_riot", "fg": 792, "rotates": false }, + { "id": "overlay_worn_helmet_scavenger", "fg": 793, "rotates": false }, + { "id": "overlay_worn_helmet_skid", "fg": 794, "rotates": false }, + { "id": "overlay_worn_helmet_survivor", "fg": 795, "rotates": false }, + { "id": "overlay_worn_helmet_xlsurvivor", "fg": 796, "rotates": false }, + { "id": "overlay_worn_hmil_armor", "fg": 797, "rotates": false }, + { "id": "overlay_worn_holo_cloak", "fg": 643, "rotates": false }, + { "id": "overlay_worn_holster", "fg": 798, "rotates": false }, + { "id": "overlay_worn_hood_fsurvivor", "fg": 800, "rotates": false }, + { "id": "overlay_worn_hood_h20survivor", "fg": 801, "rotates": false }, + { "id": "overlay_worn_hood_lsurvivor", "fg": 802, "rotates": false }, + { "id": "overlay_worn_hood_rain", "fg": 801, "rotates": false }, + { "id": "overlay_worn_hood_survivor", "fg": 802, "rotates": false }, + { "id": "overlay_worn_hood_wsurvivor", "fg": 803, "rotates": false }, + { "id": "overlay_worn_hood_xlsurvivor", "fg": 802, "rotates": false }, + { "id": "overlay_worn_hoodie", "fg": 799, "rotates": false }, + { "id": "overlay_worn_hot_pants", "fg": 804, "rotates": false }, + { "id": "overlay_worn_hot_pants_fur", "fg": 804, "rotates": false }, + { "id": "overlay_worn_hot_pants_leather", "fg": 805, "rotates": false }, + { "id": "overlay_worn_house_coat", "fg": 806, "rotates": false }, + { "id": "overlay_worn_hsurvivor_suit", "fg": 807, "rotates": false }, + { "id": "overlay_worn_iggaak", "fg": 926, "rotates": false }, + { "id": "overlay_worn_jacket_army", "fg": 808, "rotates": false }, + { "id": "overlay_worn_jacket_chef", "fg": 809, "rotates": false }, + { "id": "overlay_worn_jacket_evac", "fg": 810, "rotates": false }, + { "id": "overlay_worn_jacket_flannel", "fg": 811, "rotates": false }, + { "id": "overlay_worn_jacket_jean", "fg": 812, "rotates": false }, + { "id": "overlay_worn_jacket_leather", "fg": 813, "rotates": false }, + { "id": "overlay_worn_jacket_leather_mod", "fg": 813, "rotates": false }, + { "id": "overlay_worn_jacket_leather_red", "fg": 814, "rotates": false }, + { "id": "overlay_worn_jacket_light", "fg": 815, "rotates": false }, + { "id": "overlay_worn_jacket_windbreaker", "fg": 816, "rotates": false }, + { "id": "overlay_worn_jade_brooch", "fg": 1010, "rotates": false }, + { "id": "overlay_worn_jeans", "fg": 817, "rotates": false }, + { "id": "overlay_worn_jeans_red", "fg": 818, "rotates": false }, + { "id": "overlay_worn_jedi_cloak", "fg": 819, "rotates": false }, + { "id": "overlay_worn_jerrypack", "fg": 820, "rotates": false }, + { "id": "overlay_worn_jersey", "fg": 821, "rotates": false }, + { "id": "overlay_worn_judo_belt_black", "fg": 831, "rotates": false }, + { "id": "overlay_worn_judo_belt_blue", "fg": 831, "rotates": false }, + { "id": "overlay_worn_judo_belt_brown", "fg": 831, "rotates": false }, + { "id": "overlay_worn_judo_belt_green", "fg": 831, "rotates": false }, + { "id": "overlay_worn_judo_belt_orange", "fg": 831, "rotates": false }, + { "id": "overlay_worn_judo_belt_white", "fg": 831, "rotates": false }, + { "id": "overlay_worn_judo_belt_yellow", "fg": 831, "rotates": false }, + { "id": "overlay_worn_judo_gi", "fg": 822, "rotates": false }, + { "id": "overlay_worn_karate_gi", "fg": 822, "rotates": false }, + { "id": "overlay_worn_kariginu", "fg": 823, "rotates": false }, + { "id": "overlay_worn_keffiyeh", "fg": 855, "rotates": false }, + { "id": "overlay_worn_keikogi", "fg": 824, "rotates": false }, + { "id": "overlay_worn_kevlar", "fg": 987, "rotates": false }, + { "id": "overlay_worn_kilt", "fg": 907, "rotates": false }, + { "id": "overlay_worn_kimono", "fg": 825, "rotates": false }, + { "id": "overlay_worn_kippah", "fg": 826, "rotates": false }, + { "id": "overlay_worn_kittel", "fg": 827, "rotates": false }, + { "id": "overlay_worn_knee_high_boots", "fg": 828, "rotates": false }, + { "id": "overlay_worn_knee_pads", "fg": 829, "rotates": false }, + { "id": "overlay_worn_knit_scarf", "fg": 618, "rotates": false }, + { "id": "overlay_worn_knit_scarf_loose", "fg": 618, "rotates": false }, + { "id": "overlay_worn_kufi", "fg": 830, "rotates": false }, + { "id": "overlay_worn_leather_belt", "fg": 831, "rotates": false }, + { "id": "overlay_female_worn_leather_cat_ears", "fg": 239, "rotates": false }, + { "id": "overlay_male_worn_leather_cat_ears", "fg": 264, "rotates": false }, + { "id": "overlay_worn_leather_cat_tail", "fg": 756, "rotates": false }, + { "id": "overlay_worn_leather_pouch", "fg": 603, "rotates": false }, + { "id": "overlay_worn_leathersandals", "fg": 753, "rotates": false }, + { "id": "overlay_worn_leg_splint", "fg": 835, "rotates": false }, + { "id": "overlay_worn_leg_warmers", "fg": 836, "rotates": false }, + { "id": "overlay_worn_leg_warmers_f", "fg": 836, "rotates": false }, + { "id": "overlay_worn_leg_warmers_xl", "fg": 836, "rotates": false }, + { "id": "overlay_worn_leg_warmers_xlf", "fg": 836, "rotates": false }, + { "id": "overlay_worn_leggings", "fg": 948, "rotates": false }, + { "id": "overlay_worn_legguard_bronze", "fg": 833, "rotates": false }, + { "id": "overlay_worn_legguard_hard", "fg": 832, "rotates": false }, + { "id": [ "overlay_worn_legguard_metal", "overlay_worn_legguard_lightplate" ], "fg": 833, "rotates": false }, + { "id": "overlay_worn_legguard_paper", "fg": 834, "rotates": false }, + { "id": "overlay_worn_legrig", "fg": 928, "rotates": false }, + { "id": "overlay_worn_lmil_armor", "fg": 837, "rotates": false }, + { "id": "overlay_worn_loincloth", "fg": 838, "rotates": false }, + { "id": "overlay_worn_loincloth_fur", "fg": 838, "rotates": false }, + { "id": "overlay_worn_loincloth_leather", "fg": 838, "rotates": false }, + { "id": "overlay_worn_loincloth_wool", "fg": 838, "rotates": false }, + { "id": "overlay_worn_long_glove_white", "fg": 839, "rotates": false }, + { "id": "overlay_worn_long_knit_scarf", "fg": 619, "rotates": false }, + { "id": "overlay_worn_long_knit_scarf_loose", "fg": 619, "rotates": false }, + { "id": "overlay_worn_long_patchwork_scarf", "fg": 620, "rotates": false }, + { "id": "overlay_worn_long_patchwork_scarf_loose", "fg": 620, "rotates": false }, + { "id": "overlay_worn_lowtops", "fg": 840, "rotates": false }, + { "id": "overlay_worn_lsurvivor_armor", "fg": 841, "rotates": false }, + { "id": "overlay_worn_lsurvivor_pants", "fg": 879, "rotates": false }, + { "id": "overlay_worn_lsurvivor_suit", "fg": 931, "rotates": false }, + { "id": "overlay_worn_magbandolier", "fg": 642, "rotates": false }, + { "id": "overlay_worn_maid_dress", "fg": 842, "rotates": false }, + { "id": "overlay_worn_maid_hat", "fg": 843, "rotates": false }, + { "id": "overlay_worn_maid_stockings", "fg": 918, "rotates": false }, + { "id": "overlay_worn_makeshift_knapsack", "fg": 844, "rotates": false }, + { "id": "overlay_worn_makeshift_sling", "fg": 845, "rotates": false }, + { "id": "overlay_worn_mask_bal", "fg": 846, "rotates": false }, + { "id": "overlay_worn_mask_bunker", "fg": 621, "rotates": false }, + { "id": "overlay_worn_mask_bunker_on", "fg": 622, "rotates": false }, + { "id": "overlay_worn_mask_dust", "fg": 847, "rotates": false }, + { "id": "overlay_worn_mask_filter", "fg": 848, "rotates": false }, + { "id": "overlay_worn_mask_fsurvivor", "fg": 849, "rotates": false }, + { "id": "overlay_worn_mask_fsurvivorxl", "fg": 849, "rotates": false }, + { "id": "overlay_worn_mask_gas", "fg": 850, "rotates": false }, + { "id": "overlay_worn_mask_gas_xl", "fg": 850, "rotates": false }, + { "id": "overlay_worn_mask_guy_fawkes", "fg": 851, "rotates": false }, + { "id": "overlay_worn_mask_h20survivor", "fg": 623, "rotates": false }, + { "id": "overlay_worn_mask_h20survivor_on", "fg": 623, "rotates": false }, + { "id": "overlay_worn_mask_h20survivorxl", "fg": 623, "rotates": false }, + { "id": "overlay_worn_mask_h20survivorxl_on", "fg": 623, "rotates": false }, + { "id": "overlay_worn_mask_hockey", "fg": 852, "rotates": false }, + { "id": "overlay_worn_mask_hsurvivor", "fg": 853, "rotates": false }, + { "id": "overlay_worn_mask_lsurvivor", "fg": 854, "rotates": false }, + { "id": "overlay_worn_mask_rioter", "fg": 855, "rotates": false }, + { "id": [ "overlay_worn_mask_ski_loose", "mask_ski_loose" ], "fg": 625, "rotates": false }, + { "id": [ "overlay_worn_mask_ski", "mask_ski" ], "fg": 624, "rotates": false }, + { "id": "overlay_worn_mask_survivor", "fg": 854, "rotates": false }, + { "id": "overlay_worn_mask_survivorxl", "fg": 854, "rotates": false }, + { "id": "overlay_worn_mask_wsurvivor", "fg": 856, "rotates": false }, + { "id": "overlay_worn_mask_wsurvivorxl", "fg": 856, "rotates": false }, + { "id": "overlay_worn_mbag", "fg": 857, "rotates": false }, + { "id": "overlay_worn_megaarmor_armguards_1", "fg": 858, "rotates": false }, + { "id": "overlay_worn_megaarmor_boots_1", "fg": 859, "rotates": false }, + { "id": "overlay_worn_megaarmor_gloves_1", "fg": 860, "rotates": false }, + { "id": "overlay_worn_megaarmor_head_1", "fg": 861, "rotates": false }, + { "id": "overlay_worn_megaarmor_leggings_1", "fg": 862, "rotates": false }, + { "id": "overlay_worn_megaarmor_torso_1", "fg": 863, "rotates": false }, + { "id": "overlay_worn_megaarmor_torso_2", "fg": 864, "rotates": false }, + { "id": "overlay_worn_megaarmor_torso_3", "fg": 626, "rotates": false }, + { "id": "overlay_worn_megaarmor_torso_3_act", "fg": 627, "rotates": false }, + { "id": "overlay_worn_microskirt", "fg": 868, "rotates": false }, + { "id": "overlay_worn_mil_armor", "fg": 865, "rotates": false }, + { "id": "overlay_worn_mittens", "fg": 761, "rotates": false }, + { "id": "overlay_worn_mocassins", "fg": 733, "rotates": false }, + { "id": "overlay_worn_modularvest", "fg": 956, "rotates": false }, + { "id": "overlay_worn_modularvestceramic", "fg": 956, "rotates": false }, + { "id": "overlay_worn_modularvesthard", "fg": 956, "rotates": false }, + { "id": "overlay_worn_modularvestkevlar", "fg": 956, "rotates": false }, + { "id": "overlay_worn_modularveststeel", "fg": 956, "rotates": false }, + { "id": "overlay_worn_modularvestsuper", "fg": 956, "rotates": false }, + { "id": "overlay_worn_molle_pack", "fg": 866, "rotates": false }, + { "id": "overlay_worn_motorbike_armor", "fg": 867, "rotates": false }, + { "id": "overlay_worn_motorbike_boots", "fg": 707, "rotates": false }, + { "id": "overlay_worn_motorbike_pants", "fg": 942, "rotates": false }, + { "id": "overlay_worn_nanoskirt", "fg": 868, "rotates": false }, + { "id": "overlay_worn_nomex_gloves", "fg": 761, "rotates": false }, + { "id": "overlay_worn_nomex_hood", "fg": 801, "rotates": false }, + { "id": "overlay_worn_nomex_socks", "fg": 869, "rotates": false }, + { "id": "overlay_worn_nomex_suit", "fg": 870, "rotates": false }, + { "id": "overlay_worn_obi_gi", "fg": 831, "rotates": false }, + { "id": "overlay_worn_optical_cloak", "fg": 871, "rotates": false }, + { "id": "overlay_worn_panties", "fg": 872, "rotates": false }, + { "id": "overlay_worn_pants", "fg": 873, "rotates": false }, + { "id": "overlay_worn_pants_army", "fg": 874, "rotates": false }, + { "id": "overlay_worn_pants_cargo", "fg": 875, "rotates": false }, + { "id": "overlay_worn_pants_checkered", "fg": 876, "rotates": false }, + { "id": "overlay_worn_pants_fur", "fg": 877, "rotates": false }, + { "id": "overlay_worn_pants_leather", "fg": 877, "rotates": false }, + { "id": "overlay_worn_pants_ski", "fg": 878, "rotates": false }, + { "id": "overlay_worn_pants_survivor", "fg": 879, "rotates": false }, + { "id": "overlay_worn_patchwork_scarf", "fg": 635, "rotates": false }, + { "id": "overlay_worn_patchwork_scarf_loose", "fg": 635, "rotates": false }, + { "id": "overlay_worn_peacoat", "fg": 880, "rotates": false }, + { "id": "overlay_worn_plastic_shopping_bag", "fg": 881, "rotates": false }, + { "id": "overlay_worn_platinum_locket", "fg": 1013, "rotates": false }, + { "id": "overlay_worn_platinum_necklace", "fg": 1014, "rotates": false }, + { "id": [ "overlay_worn_platinum_ring", "overlay_worn_mring_platinum" ], "fg": 1015, "rotates": false }, + { "id": "overlay_worn_poncho", "fg": 882, "rotates": false }, + { "id": "overlay_worn_postman_hat", "fg": 883, "rotates": false }, + { "id": "overlay_worn_postman_shorts", "fg": 884, "rotates": false }, + { "id": "overlay_worn_pot_helmet", "fg": 885, "rotates": false }, + { "id": "overlay_worn_power_armor_basic", "fg": 886, "rotates": false }, + { "id": "overlay_worn_power_armor_heavy", "fg": 887, "rotates": false }, + { "id": "overlay_worn_power_armor_helmet_basic", "fg": 888, "rotates": false }, + { "id": "overlay_worn_power_armor_helmet_heavy", "fg": 889, "rotates": false }, + { "id": "overlay_worn_power_armor_helmet_light", "fg": 890, "rotates": false }, + { "id": "overlay_worn_power_armor_light", "fg": 891, "rotates": false }, + { "id": [ "overlay_worn_powered_earmuffs", "overlay_worn_powered_earmuffs_on" ], "fg": 657 }, + { "id": "overlay_worn_purse", "fg": 892, "rotates": false }, + { "id": "overlay_worn_quiver", "fg": 893, "rotates": false }, + { "id": "overlay_worn_quiver_birchbark", "fg": 893, "rotates": false }, + { "id": "overlay_worn_quiver_large", "fg": 894, "rotates": false }, + { "id": "overlay_worn_quiver_large_birchbark", "fg": 894, "rotates": false }, + { "id": "overlay_worn_rebreather", "fg": 1016, "rotates": false }, + { "id": "overlay_worn_rebreather_xl", "fg": 1016, "rotates": false }, + { "id": "overlay_worn_revenant_crown", "fg": 628, "rotates": false }, + { "id": [ "overlay_worn_diamond_ring", "overlay_worn_ring_wedding" ], "fg": 983, "rotates": false }, + { "id": [ "overlay_worn_ring_engagement" ], "fg": 1017, "rotates": false }, + { "id": "overlay_worn_ring_purity", "fg": 1018, "rotates": false }, + { "id": "overlay_worn_ring_signet", "fg": 1019, "rotates": false }, + { "id": "overlay_worn_rm13_armor", "fg": 641, "rotates": false }, + { "id": "overlay_worn_rm13_armor_on", "fg": 629, "rotates": false }, + { "id": "overlay_worn_robe", "fg": 895, "rotates": false }, + { "id": "overlay_worn_roller_blades", "fg": 896, "rotates": false }, + { "id": "overlay_worn_rollerskates", "fg": 896, "rotates": false }, + { "id": "overlay_worn_rucksack", "fg": 897, "rotates": false }, + { "id": "overlay_worn_runner_bag", "fg": 898, "rotates": false }, + { "id": "overlay_worn_sac_purse", "fg": 630, "rotates": false }, + { "id": "overlay_worn_sac_purse_arm", "fg": 631, "rotates": false }, + { "id": "overlay_worn_sac_purse_leg", "fg": 632, "rotates": false }, + { "id": "overlay_worn_scabbard", "fg": 899, "rotates": false }, + { "id": "overlay_worn_scarf", "fg": 633, "rotates": false }, + { "id": "overlay_worn_scarf_fur", "fg": 634, "rotates": false }, + { "id": "overlay_worn_scarf_fur_long", "fg": 619, "rotates": false }, + { "id": "overlay_worn_scarf_fur_long_loose", "fg": 619, "rotates": false }, + { "id": "overlay_worn_scarf_fur_loose", "fg": 634, "rotates": false }, + { "id": "overlay_worn_scarf_long", "fg": 620, "rotates": false }, + { "id": "overlay_worn_scarf_long_loose", "fg": 620, "rotates": false }, + { "id": "overlay_worn_scarf_loose", "fg": 635, "rotates": false }, + { "id": "overlay_worn_shark_suit", "fg": 900, "rotates": false }, + { "id": "overlay_worn_shark_suit_faraday", "fg": 900, "rotates": false }, + { "id": "overlay_worn_sheath", "fg": 901, "rotates": false }, + { "id": "overlay_worn_sheet", "fg": 696, "rotates": false }, + { "id": "overlay_worn_shoes_birchbark", "fg": 902, "rotates": false }, + { "id": "overlay_worn_shoes_bowling", "fg": 903, "rotates": false }, + { "id": "overlay_worn_sholster", "fg": 798, "rotates": false }, + { "id": "overlay_worn_shorts", "fg": 904, "rotates": false }, + { "id": "overlay_worn_shorts_cargo", "fg": 905, "rotates": false }, + { "id": "overlay_worn_shorts_denim", "fg": 884, "rotates": false }, + { "id": "overlay_worn_silver_medal", "fg": 1021, "rotates": false }, + { "id": "overlay_worn_silver_necklace", "fg": 1022, "rotates": false }, + { "id": [ "overlay_worn_silver_ring", "overlay_worn_mring_silver" ], "fg": 1023, "rotates": false }, + { "id": "overlay_worn_skinny_tie", "fg": 906, "rotates": false }, + { "id": "overlay_worn_skirt", "fg": 907, "rotates": false }, + { "id": "overlay_worn_skirt_leather", "fg": 908, "rotates": false }, + { "id": "overlay_worn_sleeping_bag", "fg": 909, "rotates": false }, + { "id": "overlay_worn_sleeping_bag_fur", "fg": 909, "rotates": false }, + { "id": "overlay_worn_sleeveless_duster", "fg": 910, "rotates": false }, + { "id": "overlay_worn_sleeveless_duster_fur", "fg": 910, "rotates": false }, + { "id": "overlay_worn_sleeveless_duster_leather", "fg": 910, "rotates": false }, + { "id": "overlay_worn_sleeveless_duster_survivor", "fg": 911, "rotates": false }, + { "id": "overlay_worn_sleeveless_trenchcoat", "fg": 912, "rotates": false }, + { "id": "overlay_worn_sleeveless_trenchcoat_fur", "fg": 912, "rotates": false }, + { "id": "overlay_worn_sleeveless_trenchcoat_leather", "fg": 912, "rotates": false }, + { "id": "overlay_worn_sleeveless_trenchcoat_survivor", "fg": 913, "rotates": false }, + { "id": "overlay_worn_sleeveless_tunic", "fg": 952, "rotates": false }, + { "id": "overlay_worn_slingpack", "fg": 898, "rotates": false }, + { "id": "overlay_worn_slippers", "fg": 914, "rotates": false }, + { "id": "overlay_worn_sneakers", "fg": 915, "rotates": false }, + { "id": "overlay_worn_snuggie", "fg": 1025, "rotates": false }, + { "id": "overlay_worn_sockmitts", "fg": 839, "rotates": false }, + { "id": "overlay_worn_socks", "fg": 916, "rotates": false }, + { "id": "overlay_worn_socks_bag", "fg": 916, "rotates": false }, + { "id": "overlay_worn_socks_bowling", "fg": 916, "rotates": false }, + { "id": "overlay_worn_socks_wool", "fg": 916, "rotates": false }, + { "id": "overlay_worn_sports_bra", "fg": 917, "rotates": false }, + { "id": "overlay_worn_stealth_cloak", "fg": 636, "rotates": false }, + { "id": "overlay_worn_stillsuit", "fg": 807, "rotates": false }, + { "id": "overlay_worn_stockings", "fg": 918, "rotates": false }, + { "id": "overlay_worn_stockings_oath", "fg": 918, "rotates": false }, + { "id": "overlay_worn_stockings_tent_arms", "fg": 919, "rotates": false }, + { "id": "overlay_worn_stockings_tent_legs", "fg": 920, "rotates": false }, + { "id": "overlay_worn_stomach_sealed", "fg": 603, "rotates": false }, + { "id": "overlay_worn_straw_basket", "fg": 921, "rotates": false }, + { "id": "overlay_worn_straw_sandals", "fg": 753, "rotates": false }, + { "id": "overlay_worn_striped_pants", "fg": 1026, "rotates": false }, + { "id": "overlay_worn_striped_shirt", "fg": 922, "rotates": false }, + { "id": "overlay_worn_subsuit_xl", "fg": 946, "rotates": false }, + { "id": "overlay_worn_suit", "fg": 923, "rotates": false }, + { "id": "overlay_worn_suitcase_l", "fg": 924, "rotates": false }, + { "id": "overlay_worn_suitcase_m", "fg": 924, "rotates": false }, + { "id": "overlay_worn_sundress", "fg": 925, "rotates": false }, + { "id": "overlay_worn_sunglasses", "fg": 926, "rotates": false }, + { "id": "overlay_worn_surv_armor_suit", "fg": 933, "rotates": false }, + { "id": "overlay_worn_surv_suit", "fg": 934, "rotates": false }, + { "id": "overlay_worn_survbowpack", "fg": 927, "rotates": false }, + { "id": "overlay_worn_survivor_belt", "fg": 928, "rotates": false }, + { "id": "overlay_worn_survivor_belt_notools", "fg": 928, "rotates": false }, + { "id": "overlay_worn_survivor_duffel_bag", "fg": 929, "rotates": false }, + { "id": "overlay_worn_survivor_goggles", "fg": 766, "rotates": false }, + { "id": "overlay_worn_survivor_light", "fg": 637, "rotates": false }, + { "id": "overlay_worn_survivor_light_on", "fg": 638, "rotates": false }, + { "id": "overlay_worn_survivor_pack", "fg": 686, "rotates": false }, + { "id": "overlay_worn_survivor_rucksack", "fg": 930, "rotates": false }, + { "id": "overlay_worn_survivor_runner_pack", "fg": 898, "rotates": false }, + { "id": "overlay_worn_survivor_suit", "fg": 931, "rotates": false }, + { "id": "overlay_worn_survivor_vest", "fg": 932, "rotates": false }, + { "id": "overlay_worn_swag_bag", "fg": 935, "rotates": false }, + { "id": "overlay_worn_swat_armor", "fg": 936, "rotates": false }, + { "id": "overlay_worn_swat_badge_swat", "fg": 1030, "rotates": false }, + { "id": "overlay_worn_sweater", "fg": 937, "rotates": false }, + { "id": "overlay_worn_sweatshirt", "fg": 938, "rotates": false }, + { "id": "overlay_worn_swim_fins", "fg": 939, "rotates": false }, + { "id": "overlay_worn_tabi_dress", "fg": 916, "rotates": false }, + { "id": "overlay_worn_tabi_gi", "fg": 755, "rotates": false }, + { "id": "overlay_worn_tac_fullhelmet", "fg": 940, "rotates": false }, + { "id": "overlay_worn_tac_helmet", "fg": 794, "rotates": false }, + { "id": "overlay_worn_tank_top", "fg": 941, "rotates": false }, + { "id": "overlay_worn_tarp", "fg": 696, "rotates": false }, + { "id": "overlay_worn_technician_pants_gray", "fg": 942, "rotates": false }, + { "id": "overlay_worn_technician_shirt_blue", "fg": 943, "rotates": false }, + { "id": "overlay_worn_technician_shirt_gray", "fg": 944, "rotates": false }, + { "id": "overlay_worn_technician_shirt_ltblue", "fg": 945, "rotates": false }, + { "id": "overlay_worn_thawb", "fg": 946, "rotates": false }, + { "id": "overlay_worn_thermal_gloves", "fg": 764, "rotates": false }, + { "id": "overlay_worn_thermal_gloves_on", "fg": 764, "rotates": false }, + { "id": "overlay_worn_thermal_mask", "fg": 855, "rotates": false }, + { "id": "overlay_worn_thermal_mask_on", "fg": 855, "rotates": false }, + { "id": "overlay_worn_thermal_socks", "fg": 755, "rotates": false }, + { "id": "overlay_worn_thermal_socks_on", "fg": 755, "rotates": false }, + { "id": "overlay_worn_thigh_high_boots", "fg": 947, "rotates": false }, + { "id": "overlay_worn_thong", "fg": 872, "rotates": false }, + { "id": "overlay_worn_tights", "fg": 948, "rotates": false }, + { "id": "overlay_worn_tool_belt", "fg": 928, "rotates": false }, + { "id": "overlay_worn_touring_suit", "fg": 931, "rotates": false }, + { "id": "overlay_worn_trenchcoat", "fg": 949, "rotates": false }, + { "id": "overlay_worn_trenchcoat_fur", "fg": 949, "rotates": false }, + { "id": "overlay_worn_trenchcoat_leather", "fg": 949, "rotates": false }, + { "id": "overlay_worn_trenchcoat_survivor", "fg": 950, "rotates": false }, + { "id": "overlay_worn_tricorne", "fg": 951, "rotates": false }, + { "id": "overlay_worn_trunks", "fg": 884, "rotates": false }, + { "id": "overlay_worn_tunic", "fg": 952, "rotates": false }, + { "id": "overlay_worn_tunic_rag", "fg": 952, "rotates": false }, + { "id": "overlay_worn_turban", "fg": 953, "rotates": false }, + { "id": "overlay_worn_tux", "fg": 923, "rotates": false }, + { "id": "overlay_worn_under_armor_shorts", "fg": 955, "rotates": false }, + { "id": "overlay_worn_undershirt", "fg": 954, "rotates": false }, + { "id": "overlay_worn_vambrace_larmor", "fg": 760, "rotates": false }, + { "id": "overlay_worn_vest", "fg": 956, "rotates": false }, + { "id": "overlay_worn_vest_leather", "fg": 957, "rotates": false }, + { "id": "overlay_worn_vest_leather_mod", "fg": 957, "rotates": false }, + { "id": "overlay_worn_waistcoat", "fg": 958, "rotates": false }, + { "id": [ "overlay_worn_sf_watch", "overlay_worn_platinum_watch" ], "fg": 1020, "rotates": false }, + { "id": "overlay_worn_gold_watch", "fg": 1009, "rotates": false }, + { "id": "overlay_worn_waterskin2", "fg": 603, "rotates": false }, + { "id": "overlay_worn_waterskin3", "fg": 603, "rotates": false }, + { "id": "overlay_worn_waterskin", "fg": 603, "rotates": false }, + { "id": "overlay_worn_wearable_light", "fg": 639, "rotates": false }, + { "id": "overlay_worn_wearable_light_on", "fg": 640, "rotates": false }, + { "id": "overlay_worn_welding_mask", "fg": 1031, "rotates": false }, + { "id": "overlay_worn_welding_mask_crude", "fg": 1032, "rotates": false }, + { "id": "overlay_worn_wetsuit", "fg": 959, "rotates": false }, + { "id": "overlay_worn_wetsuit_booties", "fg": 960, "rotates": false }, + { "id": "overlay_worn_wetsuit_gloves", "fg": 765, "rotates": false }, + { "id": "overlay_worn_wetsuit_hood", "fg": 961, "rotates": false }, + { "id": "overlay_worn_wetsuit_spring", "fg": 962, "rotates": false }, + { "id": "overlay_worn_winter_gloves_army", "fg": 762, "rotates": false }, + { "id": "overlay_worn_winter_jacket_army", "fg": 963, "rotates": false }, + { "id": "overlay_worn_winter_pants_army", "fg": 964, "rotates": false }, + { "id": "overlay_worn_wolfsuit", "fg": 965, "rotates": false }, + { "id": "overlay_worn_wool_hoodie", "fg": 816, "rotates": false }, + { "id": "overlay_worn_wool_suit", "fg": 923, "rotates": false }, + { "id": "overlay_worn_wristwatch", "fg": 1033, "rotates": false }, + { "id": "overlay_worn_wsurvivor_suit", "fg": 966, "rotates": false }, + { "id": "overlay_worn_xlsurvivor_suit", "fg": 931, "rotates": false }, + { "id": "overlay_worn_zubon_gi", "fg": 878, "rotates": false }, + { "id": "overlay_female_mutation_BARK", "fg": 232 }, + { "id": "overlay_female_mutation_BEAK", "fg": 233 }, + { "id": "overlay_female_mutation_SPINES", "fg": 249 }, + { "id": "overlay_female_mutation_THORNS", "fg": 251 }, + { "id": "overlay_female_mutation_URSINE_EARS", "fg": 255 }, + { "id": "overlay_male_mutation_BARK", "fg": 257 }, + { "id": "overlay_male_mutation_BEAK", "fg": 258 }, + { "id": "overlay_male_mutation_SPINES", "fg": 274 }, + { "id": "overlay_male_mutation_THORNS", "fg": 276 }, + { "id": "overlay_male_mutation_URSINE_EARS", "fg": 280 }, + { "id": "overlay_mutation_BEAK_HUM", "fg": 281 }, + { "id": "overlay_mutation_BEAK_PECK", "fg": 282 }, + { "id": "overlay_mutation_BEAUTIFUL3", "fg": 283 }, + { "id": "overlay_mutation_ELFAEYES", "fg": 288 }, + { "id": "overlay_mutation_FEL_EYE", "fg": 290 }, + { "id": "overlay_mutation_MANDIBLES", "fg": 293 }, + { "id": "overlay_mutation_MUZZLE", "fg": 296 }, + { "id": "overlay_mutation_MUZZLE_BEAR", "fg": 297 }, + { "id": "overlay_mutation_TAIL_FIN", "fg": 299 }, + { "id": "overlay_mutation_TAIL_LONG", "fg": 300 }, + { "id": "overlay_mutation_TAIL_THICK", "fg": 301 }, + { "id": "overlay_mutation_WHISKERS", "fg": 302 }, + { "id": "overlay_mutation_eye_amber", "fg": 303 }, + { "id": "overlay_mutation_eye_brown", "fg": 304 }, + { "id": "overlay_mutation_eye_gray", "fg": 305 }, + { "id": "overlay_mutation_eye_green", "fg": 306 }, + { "id": "overlay_mutation_eye_hazel", "fg": 307 }, + { "id": "overlay_female_mutation_SKIN_DARK", "fg": 400 }, + { "id": "overlay_female_mutation_SKIN_MEDIUM", "fg": 401 }, + { "id": "overlay_female_mutation_SKIN_PINK", "fg": 402 }, + { "id": "overlay_female_mutation_SKIN_TAN", "fg": 403 }, + { "id": "overlay_male_mutation_SKIN_DARK", "fg": 404 }, + { "id": "overlay_male_mutation_SKIN_LIGHT", "fg": 405 }, + { "id": "overlay_male_mutation_SKIN_MEDIUM", "fg": 406 }, + { "id": "overlay_male_mutation_SKIN_PINK", "fg": 407 }, + { "id": "overlay_female_worn_boots_rubber", "fg": 967 }, + { "id": "overlay_male_worn_boots_rubber", "fg": 968 }, + { "id": "overlay_worn_bookplate", "fg": 976 }, + { "id": "overlay_worn_broken_dimensional_anchor", "fg": 977 }, + { "id": "overlay_worn_diamond_dental_grill", "fg": 982 }, + { "id": "overlay_worn_dimensional_anchor", "fg": 984 }, + { "id": "overlay_worn_dimensional_anchor_on", "fg": 985 }, + { "id": "overlay_worn_eclipse_glasses", "fg": 988 }, + { "id": "overlay_worn_fancy_glasses_bifocal", "fg": 990 }, + { "id": "overlay_worn_fancy_glasses_eye", "fg": 991 }, + { "id": "overlay_worn_fancy_glasses_reading", "fg": 992 }, + { "id": "overlay_worn_fanny", "fg": 993 }, + { "id": "overlay_worn_fur_cat_tail", "fg": 997 }, + { "id": "overlay_worn_fur_collar", "fg": 998 }, + { "id": "overlay_worn_glasses_bifocal", "fg": 999 }, + { "id": "overlay_worn_glasses_eye", "fg": 1000 }, + { "id": "overlay_worn_glasses_reading", "fg": 1001 }, + { "id": "overlay_worn_gloves_rubber", "fg": 1003 }, + { "id": "overlay_worn_gold_ear", "fg": 1004 }, + { "id": "overlay_worn_leather_collar", "fg": 1011 }, + { "id": "overlay_worn_silver_watch", "fg": 1024 }, + { "id": "overlay_worn_sunglasses_bifocal", "fg": 1027 }, + { "id": "overlay_worn_sunglasses_eye", "fg": 1028 }, + { "id": "overlay_worn_sunglasses_reading", "fg": 1029 }, + { "id": "overlay_worn_chestguard_hard", "fg": 1034 } ] }, { "file": "ChibiNormalMonster.png", - "//": "range 1024 to 1487", + "//": "range 1040 to 1503", "tiles": [ - { "id": "debug_mon", "fg": 1024 }, - { "id": "mon_EMP_hack", "fg": 1099 }, - { "id": "mon_albino_penguin", "fg": 1025, "bg": 1295, "rotates": false }, - { "id": "mon_alpha_razorclaw", "fg": 1026, "bg": 1295 }, - { "id": "mon_ant", "fg": 1027, "bg": 1295, "rotates": false }, - { "id": "mon_ant_acid", "fg": 1250, "bg": 1295, "rotates": false }, - { "id": "mon_ant_acid_larva", "fg": 1249, "bg": 1295, "rotates": false }, - { "id": "mon_ant_acid_queen", "fg": 1251, "bg": 1295, "rotates": false }, - { "id": "mon_ant_acid_soldier", "fg": 1248, "rotates": false }, - { "id": "mon_ant_fungus", "fg": 1028, "bg": 1295, "rotates": false }, - { "id": "mon_ant_larva", "fg": 1029, "bg": 1295, "rotates": false }, - { "id": "mon_ant_queen", "fg": 1030, "bg": 1295, "rotates": false }, - { "id": "mon_ant_soldier", "fg": 1031, "bg": 1295, "rotates": false }, - { "id": "mon_bat", "fg": 1032, "bg": 1295, "rotates": false }, - { "id": "mon_bear", "fg": 1033, "bg": 1295, "rotates": false }, - { "id": "mon_bear_cub", "fg": 1034, "bg": 1295, "rotates": false }, - { "id": "mon_bear_smoky", "fg": 1035, "bg": 1295, "rotates": false }, - { "id": "mon_bee", "fg": 1036, "bg": 1295, "rotates": false }, - { "id": "mon_bee_mega", "fg": 1038, "rotates": false }, - { "id": "mon_bee_small", "fg": 1039, "rotates": false }, - { "id": "mon_beekeeper", "fg": 1037, "bg": 1295, "rotates": false }, - { "id": "mon_biollante", "fg": 1040, "bg": 1295, "rotates": false }, - { "id": "mon_black_rat", "fg": 1155, "rotates": false }, - { "id": "mon_blank", "fg": 1041, "bg": 1295, "rotates": false }, - { "id": "mon_blob", "fg": 1042, "bg": 1295, "rotates": false }, - { "id": "mon_blob_large", "fg": 1043, "rotates": false }, - { "id": "mon_blob_small", "fg": 1044, "rotates": false }, - { "id": "mon_bobcat", "fg": 1045, "bg": 1295, "rotates": false }, - { "id": "mon_boomer", "fg": 1046, "bg": 1295, "rotates": false }, - { "id": "mon_boomer_fungus", "fg": 1047, "bg": 1295, "rotates": false }, - { "id": "mon_breather", "fg": 1048, "rotates": false }, - { "id": "mon_breather_hub", "fg": 1049, "bg": 1295, "rotates": false }, - { "id": "mon_c4_hack", "fg": 1050, "bg": 1295, "rotates": false }, - { "id": "mon_cat", "fg": 1045, "bg": 1295, "rotates": false }, - { "id": "mon_centipede", "fg": 1051, "rotates": false }, - { "id": "mon_centipede_giant", "fg": 1052, "bg": 1295, "rotates": false }, - { "id": "mon_charred_nightmare", "fg": 1053, "rotates": false }, - { "id": "mon_chicken", "fg": 1054, "bg": 1295, "rotates": false }, - { "id": "mon_chipmunk", "fg": 1055, "bg": 1295, "rotates": false }, - { "id": "mon_chud", "fg": 1056, "bg": 1295, "rotates": false }, - { "id": "mon_compsognathus", "fg": 1057, "bg": 1295, "rotates": false }, - { "id": "mon_cougar", "fg": 1058, "bg": 1295, "rotates": false }, - { "id": "mon_coyote", "fg": 1059, "bg": 1295, "rotates": false }, - { "id": "mon_coyote_wolf", "fg": 1060, "bg": 1295, "rotates": false }, - { "id": "mon_crawler", "fg": 1061, "bg": 1295, "rotates": false }, - { "id": "mon_creeper_hub", "fg": 1062, "bg": 1295, "rotates": false }, - { "id": "mon_creeper_vine", "fg": 1063, "bg": 1295, "rotates": false }, - { "id": "mon_crow", "fg": 1064, "bg": 1295, "rotates": false }, - { "id": "mon_darkman", "fg": 1065, "bg": 1295, "rotates": false }, - { "id": "mon_deer", "fg": 1066, "bg": 1295, "rotates": false }, - { "id": "mon_deer_mouse", "fg": 1155, "rotates": false }, - { "id": "mon_deinonychus", "fg": 1067, "bg": 1295, "rotates": false }, - { "id": "mon_dementia", "fg": 1068, "bg": 1295, "rotates": false }, - { "id": "mon_dermatik", "fg": 1069, "bg": 1295, "rotates": false }, - { "id": "mon_dermatik_larva", "fg": 1070, "rotates": false }, - { "id": "mon_dilophosaurus", "fg": 1067, "bg": 1295, "rotates": false }, - { "id": "mon_dimorphodon", "fg": 1071, "bg": 1295, "rotates": false }, - { "id": "mon_dog", "fg": 1072, "bg": 1295, "rotates": false }, - { "id": "mon_dog_skeleton", "fg": 1073, "bg": 1295, "rotates": false }, - { "id": "mon_dog_thing", "fg": 1074, "bg": 1295, "rotates": false }, - { "id": "mon_dog_zombie_cop", "fg": 1075, "bg": 1295, "rotates": false }, - { "id": "mon_dog_zombie_rot", "fg": 1076, "bg": [ ], "rotates": false }, - { "id": "mon_dragonfly_giant", "fg": 1078, "bg": 1295, "rotates": false }, - { "id": "mon_dragonfly_small", "fg": 1077, "rotates": false }, - { "id": "mon_duck", "fg": 1079, "bg": 1295, "rotates": false }, - { "id": "mon_eoraptor", "fg": 1057, "bg": 1295, "rotates": false }, - { "id": "mon_fant", "fg": 1080, "rotates": false }, - { "id": "mon_fish_blinky", "fg": 1081, "rotates": false }, - { "id": "mon_fish_bluegill", "fg": 1082, "rotates": false }, - { "id": "mon_fish_bowfin", "fg": 1083, "rotates": false }, - { "id": "mon_fish_bullhead", "fg": 1084, "rotates": false }, - { "id": "mon_fish_carp", "fg": 1085, "rotates": false }, - { "id": "mon_fish_crayfish", "fg": 1086, "rotates": false }, - { "id": "mon_fish_lbass", "fg": 1087, "rotates": false }, - { "id": "mon_fish_lobster", "fg": 1088, "rotates": false }, - { "id": "mon_fish_pbass", "fg": 1089, "rotates": false }, - { "id": "mon_fish_perch", "fg": 1090, "rotates": false }, - { "id": "mon_fish_pickerel", "fg": 1091, "rotates": false }, - { "id": "mon_fish_pike", "fg": 1092, "rotates": false }, - { "id": "mon_fish_salmon", "fg": 1093, "rotates": false }, - { "id": "mon_fish_sbass", "fg": 1094, "rotates": false }, - { "id": "mon_fish_sunfish", "fg": 1095, "rotates": false }, - { "id": "mon_fish_trout", "fg": 1096, "rotates": false }, - { "id": "mon_fish_whitefish", "fg": 1097, "rotates": false }, - { "id": "mon_flaming_eye", "fg": 1098, "bg": 1295, "rotates": false }, - { "id": "mon_flashbang_hack", "fg": 1099, "bg": 1295, "rotates": false }, - { "id": "mon_fly", "fg": 1100, "bg": 1295, "rotates": false }, - { "id": "mon_fox_gray", "fg": 1101, "bg": 1295, "rotates": false }, - { "id": "mon_fox_red", "fg": 1101, "bg": 1295, "rotates": false }, - { "id": "mon_frog_giant", "fg": 1103, "bg": 1295, "rotates": false }, - { "id": "mon_frog_small", "fg": 1102, "rotates": false }, - { "id": "mon_fungal_blossom", "fg": 1106, "bg": 1295, "rotates": false }, - { "id": "mon_fungal_fighter", "fg": 1107, "bg": 1295, "rotates": false }, - { "id": "mon_fungal_hedgerow", "fg": 1108, "bg": 1295, "rotates": false }, - { "id": "mon_fungal_tendril", "fg": 1109, "bg": 1295, "rotates": false }, - { "id": "mon_fungal_wall", "fg": 1110, "bg": 1295, "rotates": false }, - { "id": "mon_fungaloid", "fg": 1104, "bg": 1295, "rotates": false }, - { "id": "mon_fungaloid_dormant", "fg": 1239, "bg": 1295, "rotates": false }, - { "id": "mon_fungaloid_young", "fg": 1105, "bg": 1295, "rotates": false }, - { "id": "mon_gallimimus", "fg": 1111, "bg": 1295, "rotates": false }, - { "id": "mon_gasbomb_hack", "fg": 1112, "bg": 1295, "rotates": false }, - { "id": "mon_gator", "fg": 1113, "rotates": false }, - { "id": "mon_gelatin", "fg": 1114, "bg": 1295, "rotates": false }, - { "id": "mon_generator", "fg": 1115, "bg": 1295, "rotates": false }, - { "id": "mon_giant_cockroach", "fg": 1116, "rotates": false }, - { "id": "mon_giant_cockroach_nymph", "fg": 1117, "rotates": false }, - { "id": "mon_goat", "fg": 1118, "rotates": false }, - { "id": "mon_gozu", "fg": 1119, "bg": 1295, "rotates": false }, - { "id": "mon_graboid", "fg": 1120, "bg": 1295, "rotates": false }, - { "id": "mon_grenade_hack", "fg": 1121, "bg": 1295, "rotates": false }, - { "id": "mon_groundhog", "fg": 1055, "bg": 1295, "rotates": false }, - { "id": "mon_halfworm", "fg": 1122, "bg": 1295, "rotates": false }, - { "id": "mon_hallu_mom", "fg": 1123, "bg": 1295, "rotates": false }, - { "id": "mon_hare", "fg": 1124, "bg": 1295, "rotates": false }, - { "id": "mon_hare_season_winter", "fg": 1125, "bg": 1295, "rotates": false }, - { "id": "mon_headless_dog_thing", "fg": 1126, "bg": 1295, "rotates": false }, - { "id": "mon_hologram", "fg": 1240, "rotates": false }, - { "id": "mon_human_snail", "fg": 1127, "bg": 1295, "rotates": false }, - { "id": "mon_irradiated_wanderer_1", "fg": 1128, "bg": 1295 }, - { "id": "mon_irradiated_wanderer_2", "fg": 1129, "bg": 1295, "rotates": false }, - { "id": "mon_irradiated_wanderer_3", "fg": 1130, "bg": 1295 }, - { "id": "mon_irradiated_wanderer_4", "fg": 1131, "bg": 1295 }, - { "id": "mon_kreck", "fg": 1132, "bg": 1295, "rotates": false }, - { "id": "mon_laserturret", "fg": 1133, "bg": 1295, "rotates": false }, - { "id": "mon_lemming", "fg": 1055, "bg": 1295, "rotates": false }, - { "id": "mon_manhack", "fg": 1134, "bg": 1295, "rotates": false }, - { "id": "mon_manhack_acid", "fg": 1135, "rotates": false }, - { "id": "mon_mi_go", "fg": 1137, "bg": 1295, "rotates": false }, - { "id": "mon_mininuke_hack", "fg": 1136, "bg": 1295, "rotates": false }, - { "id": "mon_mink", "fg": 1055, "bg": 1295, "rotates": false }, - { "id": "mon_moose", "fg": 1138, "bg": 1295, "rotates": false }, - { "id": "mon_mosquito", "fg": 1139, "rotates": false }, - { "id": "mon_mosquito_giant", "fg": 1140, "bg": 1295, "rotates": false }, - { "id": "mon_muskrat", "fg": 1155, "rotates": false }, - { "id": "mon_mutant_carp", "fg": 1141, "rotates": false }, - { "id": "mon_mutant_salmon", "fg": 1142, "rotates": false }, - { "id": "mon_one_eye", "fg": 1143, "bg": 1295, "rotates": false }, - { "id": "mon_otter", "fg": 1055, "bg": 1295, "rotates": false }, - { "id": "mon_player_blob", "fg": 1144, "bg": 1295, "rotates": false }, - { "id": "mon_pregnant_giant_cockroach", "fg": 1145, "rotates": false }, - { "id": "mon_prototype_cyborg", "fg": 1270, "bg": 1295, "rotates": false }, - { "id": "mon_rabbit", "fg": 1146, "bg": 1295, "rotates": false }, - { "id": "mon_raccoon", "fg": 1147, "bg": 1295, "rotates": false }, - { "id": "mon_rat_king", "fg": 1150, "bg": 1295, "rotates": false }, - { "id": "mon_rattlesnake", "fg": 1148, "bg": 1295, "rotates": false }, - { "id": "mon_rattlesnake_giant", "fg": 1149, "bg": 1295, "rotates": false }, - { "id": "mon_razorclaw", "fg": 1151, "bg": 1295 }, - { "id": "mon_riotbot", "fg": 1152, "bg": 1295, "rotates": false }, - { "id": "mon_secubot", "fg": 1153, "bg": 1295, "rotates": false }, - { "id": "mon_sewer_fish", "fg": 1154, "bg": 1295, "rotates": false }, - { "id": "mon_sewer_rat", "fg": 1155, "bg": 1295, "rotates": false }, - { "id": "mon_sewer_snake", "fg": 1156, "bg": 1295, "rotates": false }, - { "id": "mon_shadow", "fg": 1157, "rotates": false }, - { "id": "mon_shadow_snake", "fg": 1158, "rotates": false }, - { "id": "mon_skeleton", "fg": 1159, "bg": 1295, "rotates": false }, - { "id": "mon_skeleton_electric", "fg": 1273, "bg": 1295, "rotates": false }, - { "id": "mon_skitterbot", "fg": 1160, "bg": 1295, "rotates": false }, - { "id": "mon_sludge_crawler", "fg": 1161, "bg": 1295, "rotates": false }, - { "id": "mon_spider_cellar_giant", "fg": 1162, "bg": 1295, "rotates": false }, - { "id": "mon_spider_cellar_giant_s", "fg": 1163, "bg": 1295, "rotates": false }, - { "id": "mon_spider_jumping_giant", "fg": 1165, "bg": 1295, "rotates": false }, - { "id": "mon_spider_jumping_giant_mega", "fg": 1166, "rotates": false }, - { "id": "mon_spider_jumping_small", "fg": 1164, "bg": 1295, "rotates": false }, - { "id": "mon_spider_trapdoor", "fg": 1167, "bg": 1295, "rotates": false }, - { "id": "mon_spider_trapdoor_giant", "fg": 1168, "bg": 1295, "rotates": false }, - { "id": "mon_spider_trapdoor_giant_mega", "fg": 1169, "rotates": false }, - { "id": "mon_spider_trapdoor_giant_small", "fg": 1170, "rotates": false }, - { "id": "mon_spider_web", "fg": 1171, "bg": 1295, "rotates": false }, - { "id": "mon_spider_web_giant", "fg": 1171, "bg": 1295, "rotates": false }, - { "id": "mon_spider_web_mega", "fg": 1172, "rotates": false }, - { "id": "mon_spider_web_s", "fg": 1173, "bg": 1295, "rotates": false }, - { "id": "mon_spider_widow_giant", "fg": 1175, "bg": 1295, "rotates": false }, - { "id": "mon_spider_widow_giant_s", "fg": 1176, "bg": 1295, "rotates": false }, - { "id": "mon_spider_widow_small", "fg": 1174, "bg": 1295, "rotates": false }, - { "id": "mon_spider_wolf_giant", "fg": 1178, "bg": 1295, "rotates": false }, - { "id": "mon_spider_wolf_small", "fg": 1177, "bg": 1295, "rotates": false }, - { "id": "mon_spore", "fg": 1179, "bg": 1295, "rotates": false }, - { "id": "mon_squirrel", "fg": 1180, "bg": 1295, "rotates": false }, - { "id": "mon_squirrel_red", "fg": 1180, "bg": 1295, "rotates": false }, - { "id": "mon_titanis", "fg": 1181, "bg": 1295, "rotates": false }, - { "id": "mon_turkey", "fg": 1182, "bg": 1295, "rotates": false }, - { "id": "mon_velociraptor", "fg": 1183, "bg": 1295, "rotates": false }, - { "id": "mon_vinebeast", "fg": 1184, "bg": 1295, "rotates": false }, - { "id": "mon_vortex", "fg": 1185, "bg": 1295, "rotates": false }, - { "id": "mon_w11b10", "fg": 1242, "rotates": false }, - { "id": "mon_w11b20b4", "fg": 1243, "rotates": false }, - { "id": "mon_w11h10", "fg": 1245, "rotates": false }, - { "id": "mon_w12b10", "fg": 1244, "rotates": false }, - { "id": "mon_w12n10", "fg": 1246, "rotates": false }, - { "id": "mon_wasp", "fg": 1186, "bg": 1295, "rotates": false }, - { "id": "mon_wasp_larvae", "fg": 1070 }, - { "id": "mon_wasp_mega", "fg": 1187 }, - { "id": "mon_wasp_small", "fg": 1188, "rotates": false }, - { "id": "mon_weasel", "fg": 1055, "bg": 1295, "rotates": false }, - { "id": "mon_wolf", "fg": 1189, "bg": 1295, "rotates": false }, - { "id": "mon_worm", "fg": 1190, "bg": 1295, "rotates": false }, - { "id": "mon_zhark", "fg": 1191 }, - { "id": "mon_zolf", "fg": 1192, "bg": 1295, "rotates": false }, - { "id": "mon_zolf_shady", "fg": 1193, "rotates": false }, - { "id": "mon_zombear", "fg": 1194, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_acidic", "fg": 1195, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_anklebiter", "fg": 1196, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_armored", "fg": 1197, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_bio_op", "fg": 1198, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_biter", "fg": 1199, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_blind", "fg": 1200, "rotates": false }, - { "id": "mon_zombie_brainless", "fg": 1277, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_brute", "fg": 1201, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_brute_grappler", "fg": 1202, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_brute_ninja", "fg": 1203, "bg": 1295 }, - { "id": "mon_zombie_brute_shocker", "fg": 1204, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_child_fungus", "fg": 1247, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_child_scorched", "fg": 1205, "bg": 1295 }, - { "id": "mon_zombie_child_scorched_2", "fg": 1206, "rotates": false }, - { "id": "mon_zombie_cop", "fg": 1207, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_crawler", "fg": 1208, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_creepy", "fg": 1209, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_dancer", "fg": 1210, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_dog", "fg": 1211, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_ears", "fg": 1278, "bg": 1295 }, - { "id": "mon_zombie_electric", "fg": 1212, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_fiend", "fg": 1279, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_fireman", "fg": 1213, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_fungus", "fg": [ 1214, 1280 ], "bg": 1295, "rotates": false }, - { "id": "mon_zombie_gasbag", "fg": 1215, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_grappler", "fg": 1216, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_hazmat", "fg": 1217, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_hollow", "fg": 1218, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_hunter", "fg": 1219, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_jackson", "fg": 1220, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_kevlar_1", "fg": 1284, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_mancroc", "fg": 1221, "bg": 1295 }, - { "id": "mon_zombie_master", "fg": 1222, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_military_pilot", "fg": 1241, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_necro", "fg": 1223, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_predator", "fg": 1224, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_rot", "fg": 1225, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_scorched", "fg": 1226, "bg": 1295 }, - { "id": "mon_zombie_shady", "fg": 1227, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_shady_ghost", "fg": 1228, "rotates": false }, - { "id": "mon_zombie_shriekling", "fg": 1229, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_skull", "fg": 1286, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_smoker", "fg": 1230, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_snotgobbler", "fg": 1231, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_soldier", "fg": 1232, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_soldier_acid_1", "fg": 1287, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_soldier_acid_2", "fg": 1288, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_soldier_blackops_1", "fg": 1289, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_soldier_blackops_2", "fg": 1290, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_spitter", "fg": 1233, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_sproglodyte", "fg": 1234, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_static", "fg": 1291, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_swimmer", "fg": 1235, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_thorny", "fg": 1292, "rotates": false, "bg": 1295 }, - { "id": "mon_zombie_waif", "fg": 1236, "bg": 1295, "rotates": false }, - { "id": "mon_zombie_wretched", "fg": 1293, "bg": 1295, "rotates": false }, - { "id": "mon_zoose", "fg": 1237, "bg": 1295, "rotates": false }, - { "id": "mon_zougar", "fg": 1238, "bg": 1295, "rotates": false }, - { "id": "mon_triffid", "fg": 1274, "bg": 1295 }, - { "id": "mon_triffid_sprig", "fg": 1275, "bg": 1295 }, - { "id": "mon_triffid_young", "fg": 1276, "bg": 1295 }, + { "id": "debug_mon", "fg": 1040 }, + { "id": "mon_EMP_hack", "fg": 1115 }, + { "id": "mon_albino_penguin", "fg": 1041, "bg": 1311, "rotates": false }, + { "id": "mon_alpha_razorclaw", "fg": 1042, "bg": 1311 }, + { "id": "mon_ant", "fg": 1043, "bg": 1311, "rotates": false }, + { "id": "mon_ant_acid", "fg": 1264, "bg": 1311, "rotates": false }, + { "id": "mon_ant_acid_larva", "fg": 1263, "bg": 1311, "rotates": false }, + { "id": "mon_ant_acid_queen", "fg": 1265, "bg": 1311, "rotates": false }, + { "id": "mon_ant_acid_soldier", "fg": 1262, "rotates": false }, + { "id": "mon_ant_fungus", "fg": 1044, "bg": 1311, "rotates": false }, + { "id": "mon_ant_larva", "fg": 1045, "bg": 1311, "rotates": false }, + { "id": "mon_ant_queen", "fg": 1046, "bg": 1311, "rotates": false }, + { "id": "mon_ant_soldier", "fg": 1047, "bg": 1311, "rotates": false }, + { "id": "mon_bat", "fg": 1048, "bg": 1311, "rotates": false }, + { "id": "mon_bear", "fg": 1049, "bg": 1311, "rotates": false }, + { "id": "mon_bear_cub", "fg": 1050, "bg": 1311, "rotates": false }, + { "id": "mon_bear_smoky", "fg": 1051, "bg": 1311, "rotates": false }, + { "id": "mon_bee", "fg": 1052, "bg": 1311, "rotates": false }, + { "id": "mon_bee_mega", "fg": 1054, "rotates": false }, + { "id": "mon_bee_small", "fg": 1055, "rotates": false }, + { "id": "mon_beekeeper", "fg": 1053, "bg": 1311, "rotates": false }, + { "id": "mon_biollante", "fg": 1056, "bg": 1311, "rotates": false }, + { "id": "mon_black_rat", "fg": 1169, "rotates": false }, + { "id": "mon_blank", "fg": 1057, "bg": 1311, "rotates": false }, + { "id": "mon_blob", "fg": 1058, "bg": 1311, "rotates": false }, + { "id": "mon_blob_large", "fg": 1059, "rotates": false }, + { "id": "mon_blob_small", "fg": 1060, "rotates": false }, + { "id": "mon_bobcat", "fg": 1061, "bg": 1311, "rotates": false }, + { "id": "mon_boomer", "fg": 1062, "bg": 1311, "rotates": false }, + { "id": "mon_boomer_fungus", "fg": 1063, "bg": 1311, "rotates": false }, + { "id": "mon_breather", "fg": 1064, "rotates": false }, + { "id": "mon_breather_hub", "fg": 1065, "bg": 1311, "rotates": false }, + { "id": "mon_c4_hack", "fg": 1066, "bg": 1311, "rotates": false }, + { "id": "mon_cat", "fg": 1061, "bg": 1311, "rotates": false }, + { "id": "mon_centipede", "fg": 1067, "rotates": false }, + { "id": "mon_centipede_giant", "fg": 1068, "bg": 1311, "rotates": false }, + { "id": "mon_charred_nightmare", "fg": 1069, "rotates": false }, + { "id": "mon_chicken", "fg": 1070, "bg": 1311, "rotates": false }, + { "id": "mon_chipmunk", "fg": 1071, "bg": 1311, "rotates": false }, + { "id": "mon_chud", "fg": 1072, "bg": 1311, "rotates": false }, + { "id": "mon_compsognathus", "fg": 1073, "bg": 1311, "rotates": false }, + { "id": "mon_cougar", "fg": 1074, "bg": 1311, "rotates": false }, + { "id": "mon_coyote", "fg": 1075, "bg": 1311, "rotates": false }, + { "id": "mon_coyote_wolf", "fg": 1076, "bg": 1311, "rotates": false }, + { "id": "mon_crawler", "fg": 1077, "bg": 1311, "rotates": false }, + { "id": "mon_creeper_hub", "fg": 1078, "bg": 1311, "rotates": false }, + { "id": "mon_creeper_vine", "fg": 1079, "bg": 1311, "rotates": false }, + { "id": "mon_crow", "fg": 1080, "bg": 1311, "rotates": false }, + { "id": "mon_darkman", "fg": 1081, "bg": 1311, "rotates": false }, + { "id": "mon_deer", "fg": 1082, "bg": 1311, "rotates": false }, + { "id": "mon_deer_mouse", "fg": 1169, "rotates": false }, + { "id": "mon_deinonychus", "fg": 1083, "bg": 1311, "rotates": false }, + { "id": "mon_dementia", "fg": 1084, "bg": 1311, "rotates": false }, + { "id": "mon_dermatik", "fg": 1085, "bg": 1311, "rotates": false }, + { "id": "mon_dermatik_larva", "fg": 1086, "rotates": false }, + { "id": "mon_dilophosaurus", "fg": 1083, "bg": 1311, "rotates": false }, + { "id": "mon_dimorphodon", "fg": 1087, "bg": 1311, "rotates": false }, + { "id": "mon_dog", "fg": 1088, "bg": 1311, "rotates": false }, + { "id": "mon_dog_skeleton", "fg": 1089, "bg": 1311, "rotates": false }, + { "id": "mon_dog_thing", "fg": 1090, "bg": 1311, "rotates": false }, + { "id": "mon_dog_zombie_cop", "fg": 1091, "bg": 1311, "rotates": false }, + { "id": "mon_dog_zombie_rot", "fg": 1092, "bg": [ ], "rotates": false }, + { "id": "mon_dragonfly_giant", "fg": 1094, "bg": 1311, "rotates": false }, + { "id": "mon_dragonfly_small", "fg": 1093, "rotates": false }, + { "id": "mon_duck", "fg": 1095, "bg": 1311, "rotates": false }, + { "id": "mon_eoraptor", "fg": 1073, "bg": 1311, "rotates": false }, + { "id": "mon_fant", "fg": 1096, "rotates": false }, + { "id": "mon_fish_blinky", "fg": 1097, "rotates": false }, + { "id": "mon_fish_bluegill", "fg": 1098, "rotates": false }, + { "id": "mon_fish_bowfin", "fg": 1099, "rotates": false }, + { "id": "mon_fish_bullhead", "fg": 1100, "rotates": false }, + { "id": "mon_fish_carp", "fg": 1101, "rotates": false }, + { "id": "mon_fish_crayfish", "fg": 1102, "rotates": false }, + { "id": "mon_fish_lbass", "fg": 1103, "rotates": false }, + { "id": "mon_fish_lobster", "fg": 1104, "rotates": false }, + { "id": "mon_fish_pbass", "fg": 1105, "rotates": false }, + { "id": "mon_fish_perch", "fg": 1106, "rotates": false }, + { "id": "mon_fish_pickerel", "fg": 1107, "rotates": false }, + { "id": "mon_fish_pike", "fg": 1108, "rotates": false }, + { "id": "mon_fish_salmon", "fg": 1109, "rotates": false }, + { "id": "mon_fish_sbass", "fg": 1110, "rotates": false }, + { "id": "mon_fish_sunfish", "fg": 1111, "rotates": false }, + { "id": "mon_fish_trout", "fg": 1112, "rotates": false }, + { "id": "mon_fish_whitefish", "fg": 1113, "rotates": false }, + { "id": "mon_flaming_eye", "fg": 1114, "bg": 1311, "rotates": false }, + { "id": "mon_flashbang_hack", "fg": 1115, "bg": 1311, "rotates": false }, + { "id": "mon_fly", "fg": 1116, "bg": 1311, "rotates": false }, + { "id": "mon_fox_gray", "fg": 1117, "bg": 1311, "rotates": false }, + { "id": "mon_fox_red", "fg": 1117, "bg": 1311, "rotates": false }, + { "id": "mon_fungal_blossom", "fg": 1120, "bg": 1311, "rotates": false }, + { "id": "mon_fungal_fighter", "fg": 1121, "bg": 1311, "rotates": false }, + { "id": "mon_fungal_hedgerow", "fg": 1122, "bg": 1311, "rotates": false }, + { "id": "mon_fungal_tendril", "fg": 1123, "bg": 1311, "rotates": false }, + { "id": "mon_fungal_wall", "fg": 1124, "bg": 1311, "rotates": false }, + { "id": "mon_fungaloid", "fg": 1118, "bg": 1311, "rotates": false }, + { "id": "mon_fungaloid_dormant", "fg": 1253, "bg": 1311, "rotates": false }, + { "id": "mon_fungaloid_young", "fg": 1119, "bg": 1311, "rotates": false }, + { "id": "mon_gallimimus", "fg": 1125, "bg": 1311, "rotates": false }, + { "id": "mon_gasbomb_hack", "fg": 1126, "bg": 1311, "rotates": false }, + { "id": "mon_gator", "fg": 1127, "rotates": false }, + { "id": "mon_gelatin", "fg": 1128, "bg": 1311, "rotates": false }, + { "id": "mon_generator", "fg": 1129, "bg": 1311, "rotates": false }, + { "id": "mon_giant_cockroach", "fg": 1130, "rotates": false }, + { "id": "mon_giant_cockroach_nymph", "fg": 1131, "rotates": false }, + { "id": "mon_goat", "fg": 1132, "rotates": false }, + { "id": "mon_gozu", "fg": 1133, "bg": 1311, "rotates": false }, + { "id": "mon_graboid", "fg": 1134, "bg": 1311, "rotates": false }, + { "id": "mon_grenade_hack", "fg": 1135, "bg": 1311, "rotates": false }, + { "id": "mon_groundhog", "fg": 1071, "bg": 1311, "rotates": false }, + { "id": "mon_halfworm", "fg": 1136, "bg": 1311, "rotates": false }, + { "id": "mon_hallu_mom", "fg": 1137, "bg": 1311, "rotates": false }, + { "id": "mon_hare", "fg": 1138, "bg": 1311, "rotates": false }, + { "id": "mon_hare_season_winter", "fg": 1139, "bg": 1311, "rotates": false }, + { "id": "mon_headless_dog_thing", "fg": 1140, "bg": 1311, "rotates": false }, + { "id": "mon_hologram", "fg": 1254, "rotates": false }, + { "id": "mon_human_snail", "fg": 1141, "bg": 1311, "rotates": false }, + { "id": "mon_irradiated_wanderer_1", "fg": 1142, "bg": 1311 }, + { "id": "mon_irradiated_wanderer_2", "fg": 1143, "bg": 1311, "rotates": false }, + { "id": "mon_irradiated_wanderer_3", "fg": 1144, "bg": 1311 }, + { "id": "mon_irradiated_wanderer_4", "fg": 1145, "bg": 1311 }, + { "id": "mon_kreck", "fg": 1146, "bg": 1311, "rotates": false }, + { "id": "mon_laserturret", "fg": 1147, "bg": 1311, "rotates": false }, + { "id": "mon_lemming", "fg": 1071, "bg": 1311, "rotates": false }, + { "id": "mon_manhack", "fg": 1148, "bg": 1311, "rotates": false }, + { "id": "mon_manhack_acid", "fg": 1149, "rotates": false }, + { "id": "mon_mi_go", "fg": 1151, "bg": 1311, "rotates": false }, + { "id": "mon_mininuke_hack", "fg": 1150, "bg": 1311, "rotates": false }, + { "id": "mon_mink", "fg": 1071, "bg": 1311, "rotates": false }, + { "id": "mon_moose", "fg": 1152, "bg": 1311, "rotates": false }, + { "id": "mon_mosquito", "fg": 1153, "rotates": false }, + { "id": "mon_mosquito_giant", "fg": 1154, "bg": 1311, "rotates": false }, + { "id": "mon_muskrat", "fg": 1169, "rotates": false }, + { "id": "mon_mutant_carp", "fg": 1155, "rotates": false }, + { "id": "mon_mutant_salmon", "fg": 1156, "rotates": false }, + { "id": "mon_one_eye", "fg": 1157, "bg": 1311, "rotates": false }, + { "id": "mon_otter", "fg": 1071, "bg": 1311, "rotates": false }, + { "id": "mon_player_blob", "fg": 1158, "bg": 1311, "rotates": false }, + { "id": "mon_pregnant_giant_cockroach", "fg": 1159, "rotates": false }, + { "id": "mon_prototype_cyborg", "fg": 1286, "bg": 1311, "rotates": false }, + { "id": "mon_rabbit", "fg": 1160, "bg": 1311, "rotates": false }, + { "id": "mon_raccoon", "fg": 1161, "bg": 1311, "rotates": false }, + { "id": "mon_rat_king", "fg": 1164, "bg": 1311, "rotates": false }, + { "id": "mon_rattlesnake", "fg": 1162, "bg": 1311, "rotates": false }, + { "id": "mon_rattlesnake_giant", "fg": 1163, "bg": 1311, "rotates": false }, + { "id": "mon_razorclaw", "fg": 1165, "bg": 1311 }, + { "id": "mon_riotbot", "fg": 1166, "bg": 1311, "rotates": false }, + { "id": "mon_secubot", "fg": 1167, "bg": 1311, "rotates": false }, + { "id": "mon_sewer_fish", "fg": 1168, "bg": 1311, "rotates": false }, + { "id": "mon_sewer_rat", "fg": 1169, "bg": 1311, "rotates": false }, + { "id": "mon_sewer_snake", "fg": 1170, "bg": 1311, "rotates": false }, + { "id": "mon_shadow", "fg": 1171, "rotates": false }, + { "id": "mon_shadow_snake", "fg": 1172, "rotates": false }, + { "id": "mon_skeleton", "fg": 1173, "bg": 1311, "rotates": false }, + { "id": "mon_skeleton_electric", "fg": 1289, "bg": 1311, "rotates": false }, + { "id": "mon_skitterbot", "fg": 1174, "bg": 1311, "rotates": false }, + { "id": "mon_sludge_crawler", "fg": 1175, "bg": 1311, "rotates": false }, + { "id": "mon_spider_cellar_giant", "fg": 1176, "bg": 1311, "rotates": false }, + { "id": "mon_spider_cellar_giant_s", "fg": 1177, "bg": 1311, "rotates": false }, + { "id": "mon_spider_jumping_giant", "fg": 1179, "bg": 1311, "rotates": false }, + { "id": "mon_spider_jumping_giant_mega", "fg": 1180, "rotates": false }, + { "id": "mon_spider_jumping_small", "fg": 1178, "bg": 1311, "rotates": false }, + { "id": "mon_spider_trapdoor", "fg": 1181, "bg": 1311, "rotates": false }, + { "id": "mon_spider_trapdoor_giant", "fg": 1182, "bg": 1311, "rotates": false }, + { "id": "mon_spider_trapdoor_giant_mega", "fg": 1183, "rotates": false }, + { "id": "mon_spider_trapdoor_giant_small", "fg": 1184, "rotates": false }, + { "id": "mon_spider_web", "fg": 1185, "bg": 1311, "rotates": false }, + { "id": "mon_spider_web_giant", "fg": 1185, "bg": 1311, "rotates": false }, + { "id": "mon_spider_web_mega", "fg": 1186, "rotates": false }, + { "id": "mon_spider_web_s", "fg": 1187, "bg": 1311, "rotates": false }, + { "id": "mon_spider_widow_giant", "fg": 1189, "bg": 1311, "rotates": false }, + { "id": "mon_spider_widow_giant_s", "fg": 1190, "bg": 1311, "rotates": false }, + { "id": "mon_spider_widow_small", "fg": 1188, "bg": 1311, "rotates": false }, + { "id": "mon_spider_wolf_giant", "fg": 1192, "bg": 1311, "rotates": false }, + { "id": "mon_spider_wolf_small", "fg": 1191, "bg": 1311, "rotates": false }, + { "id": "mon_spore", "fg": 1193, "bg": 1311, "rotates": false }, + { "id": "mon_squirrel", "fg": 1194, "bg": 1311, "rotates": false }, + { "id": "mon_squirrel_red", "fg": 1194, "bg": 1311, "rotates": false }, + { "id": "mon_titanis", "fg": 1195, "bg": 1311, "rotates": false }, + { "id": "mon_turkey", "fg": 1196, "bg": 1311, "rotates": false }, + { "id": "mon_velociraptor", "fg": 1197, "bg": 1311, "rotates": false }, + { "id": "mon_vinebeast", "fg": 1198, "bg": 1311, "rotates": false }, + { "id": "mon_vortex", "fg": 1199, "bg": 1311, "rotates": false }, + { "id": "mon_w11b10", "fg": 1256, "rotates": false }, + { "id": "mon_w11b20b4", "fg": 1257, "rotates": false }, + { "id": "mon_w11h10", "fg": 1259, "rotates": false }, + { "id": "mon_w12b10", "fg": 1258, "rotates": false }, + { "id": "mon_w12n10", "fg": 1260, "rotates": false }, + { "id": "mon_wasp", "fg": 1200, "bg": 1311, "rotates": false }, + { "id": "mon_wasp_larvae", "fg": 1086 }, + { "id": "mon_wasp_mega", "fg": 1201 }, + { "id": "mon_wasp_small", "fg": 1202, "rotates": false }, + { "id": "mon_weasel", "fg": 1071, "bg": 1311, "rotates": false }, + { "id": "mon_wolf", "fg": 1203, "bg": 1311, "rotates": false }, + { "id": "mon_worm", "fg": 1204, "bg": 1311, "rotates": false }, + { "id": "mon_zhark", "fg": 1205 }, + { "id": "mon_zolf", "fg": 1206, "bg": 1311, "rotates": false }, + { "id": "mon_zolf_shady", "fg": 1207, "rotates": false }, + { "id": "mon_zombear", "fg": 1208, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_acidic", "fg": 1209, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_anklebiter", "fg": 1210, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_armored", "fg": 1211, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_bio_op", "fg": 1212, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_biter", "fg": 1213, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_blind", "fg": 1214, "rotates": false }, + { "id": "mon_zombie_brainless", "fg": 1293, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_brute", "fg": 1215, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_brute_grappler", "fg": 1216, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_brute_ninja", "fg": 1217, "bg": 1311 }, + { "id": "mon_zombie_brute_shocker", "fg": 1218, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_child_fungus", "fg": 1261, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_child_scorched", "fg": 1219, "bg": 1311 }, + { "id": "mon_zombie_child_scorched_2", "fg": 1220, "rotates": false }, + { "id": "mon_zombie_cop", "fg": 1221, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_crawler", "fg": 1222, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_creepy", "fg": 1223, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_dancer", "fg": 1224, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_dog", "fg": 1225, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_ears", "fg": 1294, "bg": 1311 }, + { "id": "mon_zombie_electric", "fg": 1226, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_fiend", "fg": 1295, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_fireman", "fg": 1227, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_fungus", "fg": [ 1228, 1296 ], "bg": 1311, "rotates": false }, + { "id": "mon_zombie_gasbag", "fg": 1229, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_grappler", "fg": 1230, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_hazmat", "fg": 1231, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_hollow", "fg": 1232, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_hunter", "fg": 1233, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_jackson", "fg": 1234, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_kevlar_1", "fg": 1300, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_mancroc", "fg": 1235, "bg": 1311 }, + { "id": "mon_zombie_master", "fg": 1236, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_military_pilot", "fg": 1255, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_necro", "fg": 1237, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_predator", "fg": 1238, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_rot", "fg": 1239, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_scorched", "fg": 1240, "bg": 1311 }, + { "id": "mon_zombie_shady", "fg": 1241, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_shady_ghost", "fg": 1242, "rotates": false }, + { "id": "mon_zombie_shriekling", "fg": 1243, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_skull", "fg": 1302, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_smoker", "fg": 1244, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_snotgobbler", "fg": 1245, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_soldier", "fg": 1246, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_soldier_acid_1", "fg": 1303, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_soldier_acid_2", "fg": 1304, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_soldier_blackops_1", "fg": 1305, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_soldier_blackops_2", "fg": 1306, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_spitter", "fg": 1247, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_sproglodyte", "fg": 1248, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_static", "fg": 1307, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_swimmer", "fg": 1249, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_thorny", "fg": 1308, "rotates": false, "bg": 1311 }, + { "id": "mon_zombie_waif", "fg": 1250, "bg": 1311, "rotates": false }, + { "id": "mon_zombie_wretched", "fg": 1309, "bg": 1311, "rotates": false }, + { "id": "mon_zoose", "fg": 1251, "bg": 1311, "rotates": false }, + { "id": "mon_zougar", "fg": 1252, "bg": 1311, "rotates": false }, + { "id": "mon_triffid", "fg": 1290, "bg": 1311 }, + { "id": "mon_triffid_sprig", "fg": 1291, "bg": 1311 }, + { "id": "mon_triffid_young", "fg": 1292, "bg": 1311 }, { "id": "mon_broken_cyborg", "fg": [ - { "weight": 1, "sprite": 1297 }, - { "weight": 1, "sprite": 1298 }, - { "weight": 1, "sprite": 1299 }, - { "weight": 1, "sprite": 1300 }, - { "weight": 1, "sprite": 1301 }, - { "weight": 1, "sprite": 1302 } - ], - "bg": 1295, - "rotates": false - }, - { - "id": "mon_feral_human_crowbar", - "fg": [ - { "weight": 1, "sprite": 1311 }, - { "weight": 1, "sprite": 1312 }, { "weight": 1, "sprite": 1313 }, { "weight": 1, "sprite": 1314 }, { "weight": 1, "sprite": 1315 }, @@ -1969,10 +1953,39 @@ { "weight": 1, "sprite": 1317 }, { "weight": 1, "sprite": 1318 } ], - "bg": 1295 + "bg": 1311, + "rotates": false + }, + { + "id": "mon_feral_human_crowbar", + "fg": [ + { "weight": 1, "sprite": 1327 }, + { "weight": 1, "sprite": 1328 }, + { "weight": 1, "sprite": 1329 }, + { "weight": 1, "sprite": 1330 }, + { "weight": 1, "sprite": 1331 }, + { "weight": 1, "sprite": 1332 }, + { "weight": 1, "sprite": 1333 }, + { "weight": 1, "sprite": 1334 } + ], + "bg": 1311 }, { "id": "mon_feral_human_pipe", + "fg": [ + { "weight": 1, "sprite": 1335 }, + { "weight": 1, "sprite": 1336 }, + { "weight": 1, "sprite": 1337 }, + { "weight": 1, "sprite": 1338 }, + { "weight": 1, "sprite": 1339 }, + { "weight": 1, "sprite": 1340 }, + { "weight": 1, "sprite": 1341 }, + { "weight": 1, "sprite": 1342 } + ], + "bg": 1311 + }, + { + "id": "mon_feral_human_axe", "fg": [ { "weight": 1, "sprite": 1319 }, { "weight": 1, "sprite": 1320 }, @@ -1983,118 +1996,81 @@ { "weight": 1, "sprite": 1325 }, { "weight": 1, "sprite": 1326 } ], - "bg": 1295 - }, - { - "id": "mon_feral_human_axe", - "fg": [ - { "weight": 1, "sprite": 1303 }, - { "weight": 1, "sprite": 1304 }, - { "weight": 1, "sprite": 1305 }, - { "weight": 1, "sprite": 1306 }, - { "weight": 1, "sprite": 1307 }, - { "weight": 1, "sprite": 1308 }, - { "weight": 1, "sprite": 1309 }, - { "weight": 1, "sprite": 1310 } - ], - "bg": 1295 + "bg": 1311 }, { "id": "mon_zombie_giant_heart", "animated": true, "fg": [ - { "weight": 15, "sprite": 1333 }, - { "weight": 15, "sprite": 1334 }, - { "weight": 15, "sprite": 1333 }, - { "weight": 15, "sprite": 1335 } + { "weight": 15, "sprite": 1349 }, + { "weight": 15, "sprite": 1350 }, + { "weight": 15, "sprite": 1349 }, + { "weight": 15, "sprite": 1351 } ], "rotates": false, - "bg": 1295 + "bg": 1311 }, { "id": "mon_twisted_body", - "fg": [ { "weight": 1, "sprite": 1336 }, { "weight": 1, "sprite": 1337 }, { "weight": 1, "sprite": 1338 } ], - "bg": 1295, + "fg": [ { "weight": 1, "sprite": 1352 }, { "weight": 1, "sprite": 1353 }, { "weight": 1, "sprite": 1354 } ], + "bg": 1311, "rotates": false }, { "id": "mon_zombie", "fg": [ - { "weight": 1, "sprite": 1349 }, - { "weight": 1, "sprite": 1360 }, - { "weight": 1, "sprite": 1367 }, - { "weight": 1, "sprite": 1368 }, - { "weight": 1, "sprite": 1369 }, - { "weight": 1, "sprite": 1370 }, - { "weight": 1, "sprite": 1371 }, - { "weight": 1, "sprite": 1372 }, - { "weight": 1, "sprite": 1373 }, - { "weight": 1, "sprite": 1339 }, - { "weight": 1, "sprite": 1340 }, - { "weight": 1, "sprite": 1341 }, - { "weight": 1, "sprite": 1342 }, - { "weight": 1, "sprite": 1343 }, - { "weight": 1, "sprite": 1344 }, - { "weight": 1, "sprite": 1345 }, - { "weight": 1, "sprite": 1346 }, - { "weight": 1, "sprite": 1347 }, - { "weight": 1, "sprite": 1348 }, - { "weight": 1, "sprite": 1350 }, - { "weight": 1, "sprite": 1351 }, - { "weight": 1, "sprite": 1352 }, - { "weight": 1, "sprite": 1353 }, - { "weight": 1, "sprite": 1354 }, + { "weight": 1, "sprite": 1365 }, + { "weight": 1, "sprite": 1376 }, + { "weight": 1, "sprite": 1383 }, + { "weight": 1, "sprite": 1384 }, + { "weight": 1, "sprite": 1385 }, + { "weight": 1, "sprite": 1386 }, + { "weight": 1, "sprite": 1387 }, + { "weight": 1, "sprite": 1388 }, + { "weight": 1, "sprite": 1389 }, { "weight": 1, "sprite": 1355 }, { "weight": 1, "sprite": 1356 }, { "weight": 1, "sprite": 1357 }, { "weight": 1, "sprite": 1358 }, { "weight": 1, "sprite": 1359 }, + { "weight": 1, "sprite": 1360 }, { "weight": 1, "sprite": 1361 }, { "weight": 1, "sprite": 1362 }, { "weight": 1, "sprite": 1363 }, { "weight": 1, "sprite": 1364 }, - { "weight": 1, "sprite": 1365 }, - { "weight": 1, "sprite": 1366 } - ], - "bg": 1295, - "rotates": false - }, - { - "id": "mon_zombie_child", - "fg": [ + { "weight": 1, "sprite": 1366 }, + { "weight": 1, "sprite": 1367 }, + { "weight": 1, "sprite": 1368 }, + { "weight": 1, "sprite": 1369 }, + { "weight": 1, "sprite": 1370 }, + { "weight": 1, "sprite": 1371 }, + { "weight": 1, "sprite": 1372 }, + { "weight": 1, "sprite": 1373 }, { "weight": 1, "sprite": 1374 }, { "weight": 1, "sprite": 1375 }, - { "weight": 1, "sprite": 1376 }, - { "weight": 1, "sprite": 1385 }, - { "weight": 1, "sprite": 1386 }, - { "weight": 1, "sprite": 1387 }, - { "weight": 1, "sprite": 1388 }, - { "weight": 1, "sprite": 1389 }, - { "weight": 1, "sprite": 1390 }, { "weight": 1, "sprite": 1377 }, { "weight": 1, "sprite": 1378 }, { "weight": 1, "sprite": 1379 }, { "weight": 1, "sprite": 1380 }, { "weight": 1, "sprite": 1381 }, - { "weight": 1, "sprite": 1382 }, - { "weight": 1, "sprite": 1383 }, - { "weight": 1, "sprite": 1384 } + { "weight": 1, "sprite": 1382 } ], - "bg": 1295, + "bg": 1311, "rotates": false }, { - "id": "mon_zombie_fat", + "id": "mon_zombie_child", "fg": [ + { "weight": 1, "sprite": 1390 }, { "weight": 1, "sprite": 1391 }, { "weight": 1, "sprite": 1392 }, - { "weight": 1, "sprite": 1393 }, { "weight": 1, "sprite": 1401 }, { "weight": 1, "sprite": 1402 }, { "weight": 1, "sprite": 1403 }, { "weight": 1, "sprite": 1404 }, { "weight": 1, "sprite": 1405 }, { "weight": 1, "sprite": 1406 }, + { "weight": 1, "sprite": 1393 }, { "weight": 1, "sprite": 1394 }, { "weight": 1, "sprite": 1395 }, { "weight": 1, "sprite": 1396 }, @@ -2103,309 +2079,334 @@ { "weight": 1, "sprite": 1399 }, { "weight": 1, "sprite": 1400 } ], - "bg": 1295, + "bg": 1311, "rotates": false }, { - "id": "mon_zombie_grabber", + "id": "mon_zombie_fat", "fg": [ { "weight": 1, "sprite": 1407 }, { "weight": 1, "sprite": 1408 }, { "weight": 1, "sprite": 1409 }, + { "weight": 1, "sprite": 1417 }, + { "weight": 1, "sprite": 1418 }, + { "weight": 1, "sprite": 1419 }, + { "weight": 1, "sprite": 1420 }, + { "weight": 1, "sprite": 1421 }, + { "weight": 1, "sprite": 1422 }, { "weight": 1, "sprite": 1410 }, { "weight": 1, "sprite": 1411 }, { "weight": 1, "sprite": 1412 }, { "weight": 1, "sprite": 1413 }, { "weight": 1, "sprite": 1414 }, - { "weight": 1, "sprite": 1415 } - ], - "bg": 1295, - "rotates": false - }, - { - "id": "mon_zombie_labsecurity", - "fg": [ - { "weight": 1, "sprite": 1416 }, - { "weight": 1, "sprite": 1417 }, - { "weight": 1, "sprite": 1418 }, - { "weight": 1, "sprite": 1419 }, - { "weight": 1, "sprite": 1420 }, - { "weight": 1, "sprite": 1421 } + { "weight": 1, "sprite": 1415 }, + { "weight": 1, "sprite": 1416 } ], - "bg": 1295, + "bg": 1311, "rotates": false }, { - "id": "mon_zombie_prisoner", + "id": "mon_zombie_grabber", "fg": [ - { "weight": 1, "sprite": 1422 }, { "weight": 1, "sprite": 1423 }, { "weight": 1, "sprite": 1424 }, { "weight": 1, "sprite": 1425 }, { "weight": 1, "sprite": 1426 }, - { "weight": 1, "sprite": 1427 } - ], - "bg": 1295, - "rotates": false - }, - { - "id": "mon_zombie_runner", - "fg": [ + { "weight": 1, "sprite": 1427 }, { "weight": 1, "sprite": 1428 }, { "weight": 1, "sprite": 1429 }, { "weight": 1, "sprite": 1430 }, - { "weight": 1, "sprite": 1431 }, - { "weight": 1, "sprite": 1432 } + { "weight": 1, "sprite": 1431 } ], - "bg": 1295, + "bg": 1311, "rotates": false }, { - "id": "mon_zombie_scientist", + "id": "mon_zombie_labsecurity", "fg": [ + { "weight": 1, "sprite": 1432 }, { "weight": 1, "sprite": 1433 }, + { "weight": 1, "sprite": 1434 }, + { "weight": 1, "sprite": 1435 }, { "weight": 1, "sprite": 1436 }, - { "weight": 1, "sprite": 1437 }, + { "weight": 1, "sprite": 1437 } + ], + "bg": 1311, + "rotates": false + }, + { + "id": "mon_zombie_prisoner", + "fg": [ { "weight": 1, "sprite": 1438 }, { "weight": 1, "sprite": 1439 }, { "weight": 1, "sprite": 1440 }, { "weight": 1, "sprite": 1441 }, { "weight": 1, "sprite": 1442 }, - { "weight": 1, "sprite": 1443 }, - { "weight": 1, "sprite": 1434 }, - { "weight": 1, "sprite": 1435 } + { "weight": 1, "sprite": 1443 } ], - "bg": 1295, + "bg": 1311, "rotates": false }, { - "id": "mon_zombie_screecher", + "id": "mon_zombie_runner", "fg": [ { "weight": 1, "sprite": 1444 }, { "weight": 1, "sprite": 1445 }, { "weight": 1, "sprite": 1446 }, - { "weight": 1, "sprite": 1447 } + { "weight": 1, "sprite": 1447 }, + { "weight": 1, "sprite": 1448 } ], - "bg": 1295, + "bg": 1311, "rotates": false }, { - "id": "mon_zombie_shrieker", + "id": "mon_zombie_scientist", "fg": [ - { "weight": 1, "sprite": 1448 }, { "weight": 1, "sprite": 1449 }, + { "weight": 1, "sprite": 1452 }, + { "weight": 1, "sprite": 1453 }, + { "weight": 1, "sprite": 1454 }, + { "weight": 1, "sprite": 1455 }, + { "weight": 1, "sprite": 1456 }, + { "weight": 1, "sprite": 1457 }, + { "weight": 1, "sprite": 1458 }, + { "weight": 1, "sprite": 1459 }, { "weight": 1, "sprite": 1450 }, { "weight": 1, "sprite": 1451 } ], - "bg": 1295, + "bg": 1311, + "rotates": false + }, + { + "id": "mon_zombie_screecher", + "fg": [ + { "weight": 1, "sprite": 1460 }, + { "weight": 1, "sprite": 1461 }, + { "weight": 1, "sprite": 1462 }, + { "weight": 1, "sprite": 1463 } + ], + "bg": 1311, + "rotates": false + }, + { + "id": "mon_zombie_shrieker", + "fg": [ + { "weight": 1, "sprite": 1464 }, + { "weight": 1, "sprite": 1465 }, + { "weight": 1, "sprite": 1466 }, + { "weight": 1, "sprite": 1467 } + ], + "bg": 1311, "rotates": false }, { "id": "mon_zombie_survivor", - "fg": [ { "weight": 1, "sprite": 1452 }, { "weight": 1, "sprite": 1453 } ], - "bg": 1295, + "fg": [ { "weight": 1, "sprite": 1468 }, { "weight": 1, "sprite": 1469 } ], + "bg": 1311, "rotates": false }, { "id": "mon_zombie_survivor_elite", - "fg": [ { "weight": 1, "sprite": 1454 }, { "weight": 1, "sprite": 1455 }, { "weight": 1, "sprite": 1456 } ], - "bg": 1295, + "fg": [ { "weight": 1, "sprite": 1470 }, { "weight": 1, "sprite": 1471 }, { "weight": 1, "sprite": 1472 } ], + "bg": 1311, "rotates": false }, { "id": "mon_zombie_technician", "fg": [ - { "weight": 1, "sprite": 1457 }, - { "weight": 1, "sprite": 1458 }, - { "weight": 1, "sprite": 1459 }, - { "weight": 1, "sprite": 1460 } + { "weight": 1, "sprite": 1473 }, + { "weight": 1, "sprite": 1474 }, + { "weight": 1, "sprite": 1475 }, + { "weight": 1, "sprite": 1476 } ], - "bg": 1295, + "bg": 1311, "rotates": false }, { "id": "mon_zombie_tough", "fg": [ - { "weight": 1, "sprite": 1461 }, - { "weight": 1, "sprite": 1462 }, - { "weight": 1, "sprite": 1463 }, - { "weight": 1, "sprite": 1470 }, - { "weight": 1, "sprite": 1471 }, - { "weight": 1, "sprite": 1472 }, - { "weight": 1, "sprite": 1473 }, - { "weight": 1, "sprite": 1474 }, - { "weight": 1, "sprite": 1475 }, - { "weight": 1, "sprite": 1464 }, - { "weight": 1, "sprite": 1465 }, - { "weight": 1, "sprite": 1466 }, - { "weight": 1, "sprite": 1467 }, - { "weight": 1, "sprite": 1468 }, - { "weight": 1, "sprite": 1469 } + { "weight": 1, "sprite": 1477 }, + { "weight": 1, "sprite": 1478 }, + { "weight": 1, "sprite": 1479 }, + { "weight": 1, "sprite": 1486 }, + { "weight": 1, "sprite": 1487 }, + { "weight": 1, "sprite": 1488 }, + { "weight": 1, "sprite": 1489 }, + { "weight": 1, "sprite": 1490 }, + { "weight": 1, "sprite": 1491 }, + { "weight": 1, "sprite": 1480 }, + { "weight": 1, "sprite": 1481 }, + { "weight": 1, "sprite": 1482 }, + { "weight": 1, "sprite": 1483 }, + { "weight": 1, "sprite": 1484 }, + { "weight": 1, "sprite": 1485 } ], - "bg": 1295, + "bg": 1311, "rotates": false }, - { "id": "corpse_mon_fish_lbass", "fg": 1252 }, - { "id": "corpse_mon_fish_pbass", "fg": 1253 }, - { "id": "corpse_mon_fish_salmon", "fg": 1254 }, - { "id": "corpse_mon_fish_sunfish", "fg": 1255 }, - { "id": "lemming_shadow", "fg": 1256 }, - { "id": "mon_boar_wild", "fg": 1257 }, - { "id": "mon_boar_wild_piglet", "fg": 1258 }, - { "id": "mon_copbot", "fg": 1259 }, - { "id": "mon_cow", "fg": 1260 }, - { "id": "mon_cow_calf", "fg": 1261 }, - { "id": "mon_fish_eel", "fg": 1262 }, - { "id": "mon_gracke", "fg": 1263 }, - { "id": "mon_grocerybot", "fg": 1264 }, - { "id": "mon_grocerybot_busted", "fg": 1265 }, - { "id": "mon_hallu_mannequin", "fg": 1266 }, - { "id": "mon_pig", "fg": 1267 }, - { "id": "mon_pig_piglet", "fg": 1268 }, - { "id": "mon_pigeon", "fg": 1269 }, - { "id": "mon_sheep", "fg": 1271 }, - { "id": "mon_skeleton_brute", "fg": 1272 }, - { "id": "mon_zombie_gasbag_crawler", "fg": 1281 }, - { "id": "mon_zombie_gasbag_immobile", "fg": 1282 }, - { "id": "mon_zombie_hanging_innards", "fg": 1283 }, - { "id": "mon_zombie_pig", "fg": 1285 }, - { "id": "mon_zow", "fg": 1294 }, - { "id": "shadow_32x32_small", "fg": 1296 }, - { "id": "bot_eyebot", "fg": 1327 }, - { "id": "broken_eyebot", "fg": 1328 }, - { "id": "mon_eyebot", "fg": 1329 }, - { "id": "mon_goose_canadian", "fg": 1330 }, - { "id": "mon_grouse", "fg": 1331 }, - { "id": "mon_pheasant", "fg": 1332 } + { "id": "corpse_mon_fish_lbass", "fg": 1266 }, + { "id": "corpse_mon_fish_pbass", "fg": 1267 }, + { "id": "corpse_mon_fish_salmon", "fg": 1268 }, + { "id": "corpse_mon_fish_sunfish", "fg": 1269 }, + { "id": "lemming_shadow", "fg": 1270 }, + { "id": "mon_boar_wild", "fg": 1271 }, + { "id": "mon_boar_wild_piglet", "fg": 1272 }, + { "id": "mon_copbot", "fg": 1273 }, + { "id": "mon_cow", "fg": 1274 }, + { "id": "mon_cow_calf", "fg": 1275 }, + { "id": "mon_fish_eel", "fg": 1276 }, + { "id": "mon_frog", "fg": 1277 }, + { "id": "mon_frog_small", "fg": 1278 }, + { "id": "mon_gracke", "fg": 1279 }, + { "id": "mon_grocerybot", "fg": 1280 }, + { "id": "mon_grocerybot_busted", "fg": 1281 }, + { "id": "mon_hallu_mannequin", "fg": 1282 }, + { "id": "mon_pig", "fg": 1283 }, + { "id": "mon_pig_piglet", "fg": 1284 }, + { "id": "mon_pigeon", "fg": 1285 }, + { "id": "mon_sheep", "fg": 1287 }, + { "id": "mon_skeleton_brute", "fg": 1288 }, + { "id": "mon_zombie_gasbag_crawler", "fg": 1297 }, + { "id": "mon_zombie_gasbag_immobile", "fg": 1298 }, + { "id": "mon_zombie_hanging_innards", "fg": 1299 }, + { "id": "mon_zombie_pig", "fg": 1301 }, + { "id": "mon_zow", "fg": 1310 }, + { "id": "shadow_32x32_small", "fg": 1312 }, + { "id": "bot_eyebot", "fg": 1343 }, + { "id": "broken_eyebot", "fg": 1344 }, + { "id": "mon_eyebot", "fg": 1345 }, + { "id": "mon_goose_canadian", "fg": 1346 }, + { "id": "mon_grouse", "fg": 1347 }, + { "id": "mon_pheasant", "fg": 1348 } ] }, { "file": "ChibiNormalCharacterMagiclysm.png", - "//": "range 1488 to 1535", + "//": "range 1504 to 1551", "tiles": [ - { "id": [ "overlay_male_mutation_WILDSHAPE:FISH" ], "fg": 1522, "rotates": false }, - { "id": [ "overlay_female_mutation_WILDSHAPE:FISH" ], "fg": 1505, "rotates": false }, - { "id": [ "overlay_male_mutation_WILDSHAPE:BEAR" ], "fg": 1520, "rotates": false }, - { "id": [ "overlay_female_mutation_WILDSHAPE:BEAR" ], "fg": 1503, "rotates": false }, - { "id": [ "overlay_male_mutation_WILDSHAPE:DEER" ], "fg": 1521, "rotates": false }, - { "id": [ "overlay_female_mutation_WILDSHAPE:DEER" ], "fg": 1504, "rotates": false }, - { "id": "overlay_mutation_bio_sneeze_beam", "fg": 1488 }, - { "id": "overlay_female_mutation_DEMON_SKIN", "fg": 1489 }, - { "id": "overlay_female_mutation_DEMON_TAIL", "fg": 1490 }, - { "id": "overlay_female_mutation_DRAGON_BREATH_BLACK", "fg": 1491 }, - { "id": "overlay_female_mutation_DRAGON_FEET", "fg": 1492 }, - { "id": "overlay_female_mutation_DRAGON_SCALES_BLACK", "fg": 1493 }, - { "id": "overlay_female_mutation_DRAGON_TAIL", "fg": 1494 }, - { "id": "overlay_female_mutation_DRAGON_TAIL_SCALED", "fg": 1495 }, - { "id": "overlay_female_mutation_DRAGON_TAIL_STUB", "fg": 1496 }, - { "id": "overlay_female_mutation_DRAGON_TALONS_BLACK", "fg": 1497 }, - { "id": "overlay_female_mutation_MANA_LUM", "fg": 1498 }, - { "id": "overlay_female_mutation_MANA_SILENT_SPELL", "fg": 1499 }, - { "id": "overlay_female_mutation_MANA_SUBTLE_SPELL", "fg": 1500 }, - { "id": "overlay_female_mutation_SCALED_HANDS", "fg": 1501 }, - { "id": "overlay_female_mutation_TOE_CLAWS", "fg": 1502 }, - { "id": "overlay_male_mutation_DEMON_SKIN", "fg": 1506 }, - { "id": "overlay_male_mutation_DEMON_TAIL", "fg": 1507 }, - { "id": "overlay_male_mutation_DRAGON_BREATH_BLACK", "fg": 1508 }, - { "id": "overlay_male_mutation_DRAGON_FEET", "fg": 1509 }, - { "id": "overlay_male_mutation_DRAGON_SCALES_BLACK", "fg": 1510 }, - { "id": "overlay_male_mutation_DRAGON_TAIL", "fg": 1511 }, - { "id": "overlay_male_mutation_DRAGON_TAIL_SCALED", "fg": 1512 }, - { "id": "overlay_male_mutation_DRAGON_TAIL_STUB", "fg": 1513 }, - { "id": "overlay_male_mutation_DRAGON_TALONS_BLACK", "fg": 1514 }, - { "id": "overlay_male_mutation_MANA_LUM", "fg": 1515 }, - { "id": "overlay_male_mutation_MANA_SILENT_SPELL", "fg": 1516 }, - { "id": "overlay_male_mutation_MANA_SUBTLE_SPELL", "fg": 1517 }, - { "id": "overlay_male_mutation_SCALED_HANDS", "fg": 1518 }, - { "id": "overlay_male_mutation_TOE_CLAWS", "fg": 1519 }, - { "id": "overlay_mutation_DEMON_CLAWS", "fg": 1523 }, - { "id": "overlay_mutation_DEMON_POSSES", "fg": 1524 }, - { "id": "overlay_mutation_DRAGON_MAGIC", "fg": 1525 }, - { "id": "overlay_mutation_DRAGON_MAW_BLACK", "fg": 1526 }, - { "id": "overlay_mutation_DRAGON_SPELLS", "fg": 1527 }, - { "id": "overlay_mutation_DRAGON_WINGS_BLACK", "fg": 1528 }, - { "id": "overlay_mutation_MANA_SEEKER_BOLTS", "fg": 1529 }, - { "id": "overlay_mutation_MANA_SIPHON_1", "fg": 1530 }, - { "id": "overlay_mutation_MANA_SIPHON_2", "fg": 1531 }, - { "id": "overlay_mutation_MANA_SIPHON_3", "fg": 1532 }, - { "id": "overlay_mutation_MUZZLE_DRAGON", "fg": 1533 } + { "id": [ "overlay_male_mutation_WILDSHAPE:FISH" ], "fg": 1538, "rotates": false }, + { "id": [ "overlay_female_mutation_WILDSHAPE:FISH" ], "fg": 1521, "rotates": false }, + { "id": [ "overlay_male_mutation_WILDSHAPE:BEAR" ], "fg": 1536, "rotates": false }, + { "id": [ "overlay_female_mutation_WILDSHAPE:BEAR" ], "fg": 1519, "rotates": false }, + { "id": [ "overlay_male_mutation_WILDSHAPE:DEER" ], "fg": 1537, "rotates": false }, + { "id": [ "overlay_female_mutation_WILDSHAPE:DEER" ], "fg": 1520, "rotates": false }, + { "id": "overlay_mutation_bio_sneeze_beam", "fg": 1504 }, + { "id": "overlay_female_mutation_DEMON_SKIN", "fg": 1505 }, + { "id": "overlay_female_mutation_DEMON_TAIL", "fg": 1506 }, + { "id": "overlay_female_mutation_DRAGON_BREATH_BLACK", "fg": 1507 }, + { "id": "overlay_female_mutation_DRAGON_FEET", "fg": 1508 }, + { "id": "overlay_female_mutation_DRAGON_SCALES_BLACK", "fg": 1509 }, + { "id": "overlay_female_mutation_DRAGON_TAIL", "fg": 1510 }, + { "id": "overlay_female_mutation_DRAGON_TAIL_SCALED", "fg": 1511 }, + { "id": "overlay_female_mutation_DRAGON_TAIL_STUB", "fg": 1512 }, + { "id": "overlay_female_mutation_DRAGON_TALONS_BLACK", "fg": 1513 }, + { "id": "overlay_female_mutation_MANA_LUM", "fg": 1514 }, + { "id": "overlay_female_mutation_MANA_SILENT_SPELL", "fg": 1515 }, + { "id": "overlay_female_mutation_MANA_SUBTLE_SPELL", "fg": 1516 }, + { "id": "overlay_female_mutation_SCALED_HANDS", "fg": 1517 }, + { "id": "overlay_female_mutation_TOE_CLAWS", "fg": 1518 }, + { "id": "overlay_male_mutation_DEMON_SKIN", "fg": 1522 }, + { "id": "overlay_male_mutation_DEMON_TAIL", "fg": 1523 }, + { "id": "overlay_male_mutation_DRAGON_BREATH_BLACK", "fg": 1524 }, + { "id": "overlay_male_mutation_DRAGON_FEET", "fg": 1525 }, + { "id": "overlay_male_mutation_DRAGON_SCALES_BLACK", "fg": 1526 }, + { "id": "overlay_male_mutation_DRAGON_TAIL", "fg": 1527 }, + { "id": "overlay_male_mutation_DRAGON_TAIL_SCALED", "fg": 1528 }, + { "id": "overlay_male_mutation_DRAGON_TAIL_STUB", "fg": 1529 }, + { "id": "overlay_male_mutation_DRAGON_TALONS_BLACK", "fg": 1530 }, + { "id": "overlay_male_mutation_MANA_LUM", "fg": 1531 }, + { "id": "overlay_male_mutation_MANA_SILENT_SPELL", "fg": 1532 }, + { "id": "overlay_male_mutation_MANA_SUBTLE_SPELL", "fg": 1533 }, + { "id": "overlay_male_mutation_SCALED_HANDS", "fg": 1534 }, + { "id": "overlay_male_mutation_TOE_CLAWS", "fg": 1535 }, + { "id": "overlay_mutation_DEMON_CLAWS", "fg": 1539 }, + { "id": "overlay_mutation_DEMON_POSSES", "fg": 1540 }, + { "id": "overlay_mutation_DRAGON_MAGIC", "fg": 1541 }, + { "id": "overlay_mutation_DRAGON_MAW_BLACK", "fg": 1542 }, + { "id": "overlay_mutation_DRAGON_SPELLS", "fg": 1543 }, + { "id": "overlay_mutation_DRAGON_WINGS_BLACK", "fg": 1544 }, + { "id": "overlay_mutation_MANA_SEEKER_BOLTS", "fg": 1545 }, + { "id": "overlay_mutation_MANA_SIPHON_1", "fg": 1546 }, + { "id": "overlay_mutation_MANA_SIPHON_2", "fg": 1547 }, + { "id": "overlay_mutation_MANA_SIPHON_3", "fg": 1548 }, + { "id": "overlay_mutation_MUZZLE_DRAGON", "fg": 1549 } ] }, { "file": "ChibiNormalMonsterMagiclysm.png", - "//": "range 1536 to 1551", + "//": "range 1552 to 1567", "tiles": [ { "id": "mon_demon_spiderling", "animated": true, "fg": [ - { "weight": 15, "sprite": 1539 }, - { "weight": 15, "sprite": 1540 }, - { "weight": 15, "sprite": 1541 }, - { "weight": 15, "sprite": 1540 } + { "weight": 15, "sprite": 1555 }, + { "weight": 15, "sprite": 1556 }, + { "weight": 15, "sprite": 1557 }, + { "weight": 15, "sprite": 1556 } ], "rotates": false }, - { "id": "mon_goblin_chieftain", "fg": 1536 }, - { "id": "mon_goblin_slinger", "fg": 1537 }, - { "id": "mon_goblin_warrior", "fg": 1538 } + { "id": "mon_goblin_chieftain", "fg": 1552 }, + { "id": "mon_goblin_slinger", "fg": 1553 }, + { "id": "mon_goblin_warrior", "fg": 1554 } ] }, { "file": "ChibiNormalMonsterMSC.png", - "//": "range 1552 to 1567", + "//": "range 1568 to 1583", "tiles": [ { "id": "mon_marshmallow_kid", - "fg": [ { "weight": 1, "sprite": 1555 }, { "weight": 1, "sprite": 1556 } ], + "fg": [ { "weight": 1, "sprite": 1571 }, { "weight": 1, "sprite": 1572 } ], "bg": [ ], "rotates": false }, { "id": "mon_necco", "fg": [ - { "weight": 1, "sprite": 1558 }, - { "weight": 1, "sprite": 1559 }, - { "weight": 1, "sprite": 1560 }, - { "weight": 1, "sprite": 1561 }, - { "weight": 1, "sprite": 1562 }, - { "weight": 1, "sprite": 1563 }, - { "weight": 1, "sprite": 1557 } + { "weight": 1, "sprite": 1574 }, + { "weight": 1, "sprite": 1575 }, + { "weight": 1, "sprite": 1576 }, + { "weight": 1, "sprite": 1577 }, + { "weight": 1, "sprite": 1578 }, + { "weight": 1, "sprite": 1579 }, + { "weight": 1, "sprite": 1573 } ], "bg": [ ], "rotates": false }, - { "id": "mon_cookie", "fg": 1552 }, - { "id": "mon_cow_calf_choc", "fg": 1553 }, - { "id": "mon_cow_choc", "fg": 1554 } + { "id": "mon_cookie", "fg": 1568 }, + { "id": "mon_cow_calf_choc", "fg": 1569 }, + { "id": "mon_cow_choc", "fg": 1570 } ] }, { "file": "ChibiTallMonster.png", - "//": "range 1568 to 1583", + "//": "range 1584 to 1599", "sprite_width": 32, "sprite_height": 48, "sprite_offset_x": 0, "sprite_offset_y": -16, "tiles": [ - { "id": "mon_nursebot", "fg": [ 1568, 1569, 1570 ], "rotates": false }, + { "id": "mon_nursebot", "fg": [ 1584, 1585, 1586 ], "rotates": false }, { "id": "mon_firefly", "animated": true, "fg": [ - { "weight": 15, "sprite": 1572 }, - { "weight": 15, "sprite": 1573 }, - { "weight": 15, "sprite": 1574 }, - { "weight": 15, "sprite": 1573 } + { "weight": 15, "sprite": 1588 }, + { "weight": 15, "sprite": 1589 }, + { "weight": 15, "sprite": 1590 }, + { "weight": 15, "sprite": 1589 } ] }, - { "id": "mon_zombie_scissorlimbs", "fg": 1571 }, - { "id": "mon_robofac_prototype", "fg": 1575 } + { "id": "mon_zombie_scissorlimbs", "fg": 1587 }, + { "id": "mon_robofac_prototype", "fg": 1591 } ] }, { "file": "ChibiTallMonsterMagiclysm.png", - "//": "range 1584 to 1599", + "//": "range 1600 to 1615", "sprite_width": 32, "sprite_height": 48, "sprite_offset_x": 0, @@ -2415,10 +2416,10 @@ "id": "mon_demon_spider", "animated": true, "fg": [ - { "weight": 15, "sprite": 1584 }, - { "weight": 15, "sprite": 1585 }, - { "weight": 15, "sprite": 1586 }, - { "weight": 15, "sprite": 1585 } + { "weight": 15, "sprite": 1600 }, + { "weight": 15, "sprite": 1601 }, + { "weight": 15, "sprite": 1602 }, + { "weight": 15, "sprite": 1601 } ], "rotates": false } @@ -2426,7 +2427,7 @@ }, { "file": "ChibiTallMonsterMSC.png", - "//": "range 1600 to 1615", + "//": "range 1616 to 1631", "sprite_width": 32, "sprite_height": 48, "sprite_offset_x": 0, @@ -2434,7 +2435,7 @@ "tiles": [ { "id": "mon_marshmallow_buff", - "fg": [ { "weight": 1, "sprite": 1600 }, { "weight": 1, "sprite": 1601 } ], + "fg": [ { "weight": 1, "sprite": 1616 }, { "weight": 1, "sprite": 1617 } ], "bg": [ ], "rotates": false } @@ -2442,76 +2443,76 @@ }, { "file": "ChibiTallOverlay.png", - "//": "range 1616 to 1695", + "//": "range 1632 to 1711", "sprite_width": 32, "sprite_height": 48, "sprite_offset_x": 0, "sprite_offset_y": -16, "tiles": [ - { "id": "overlay_worn_10gal_hat", "fg": 1616, "rotates": false }, - { "id": "overlay_worn_bowhat", "fg": 1617, "rotates": false }, - { "id": "overlay_worn_eboshi", "fg": 1618, "rotates": false }, - { "id": [ "overlay_worn_fedora", "fedora" ], "fg": 1619, "rotates": false }, - { "id": "overlay_worn_firehelmet", "fg": 1620, "rotates": false }, - { "id": "overlay_worn_hat_chef", "fg": 1621, "rotates": false }, - { "id": "overlay_worn_hat_hard", "fg": 1622, "rotates": false }, - { "id": "overlay_worn_hat_hard_hooded", "fg": 1623, "rotates": false }, - { "id": "overlay_worn_hat_sombrero", "fg": 1624, "rotates": false }, - { "id": "overlay_worn_helmet_kabuto", "fg": 1625, "rotates": false }, - { "id": "overlay_worn_miner_hat", "fg": 1626, "rotates": false }, - { "id": "overlay_worn_miner_hat_on", "fg": 1627, "rotates": false }, - { "id": "overlay_worn_pickelhaube", "fg": 1628, "rotates": false }, - { "id": "overlay_worn_porkpie", "fg": 1629, "rotates": false }, - { "id": "overlay_worn_straw_fedora", "fg": 1630, "rotates": false }, - { "id": "overlay_worn_straw_hat", "fg": 1631, "rotates": false }, - { "id": "overlay_worn_tinfoil_hat", "fg": 1632, "rotates": false }, - { "id": "overlay_worn_tophat", "fg": 1633, "rotates": false }, - { "id": "overlay_worn_veil_wedding", "fg": 1634, "rotates": false }, - { "id": "overlay_worn_welding_mask_crude_raised", "fg": 1635, "rotates": false }, - { "id": "overlay_worn_welding_mask_raised", "fg": 1636, "rotates": false }, - { "id": "overlay_effect_badpoison", "fg": 1638 }, - { "id": "overlay_effect_bleed", "fg": 1639 }, - { "id": "overlay_effect_bouldering", "fg": 1640 }, - { "id": "overlay_effect_common_cold", "fg": 1641 }, - { "id": "overlay_effect_dazed", "fg": 1642 }, - { "id": [ "overlay_effect_deaf", "overlay_effect_earphones" ], "fg": 1643 }, - { "id": "overlay_effect_downed", "fg": 1644 }, - { "id": "overlay_effect_drunk", "fg": 1645 }, - { "id": [ "overlay_effect_flu", "overlay_effect_Influenza" ], "fg": 1646 }, - { "id": [ "overlay_effect_foodpoison", "overlay_effect_nausea" ], "fg": 1647 }, - { "id": "overlay_effect_fungus", "fg": 1648 }, - { "id": "overlay_effect_grabbed", "fg": 1649 }, - { "id": "overlay_female_effect_haslight", "fg": 1658 }, - { "id": "overlay_male_effect_haslight", "fg": 1659 }, - { "id": "overlay_effect_high", "fg": 1650 }, - { "id": "overlay_effect_paralyzepoison", "fg": 1651 }, - { "id": "overlay_effect_poison", "fg": 1652 }, - { "id": "overlay_effect_sleep", "fg": 1653 }, - { "id": "overlay_effect_spores", "fg": 1654 }, - { "id": "overlay_effect_stunned", "fg": 1655 }, - { "id": "overlay_effect_visuals", "fg": 1656 }, - { "id": [ "overlay_effect_winded", "overlay_effect_asthma" ], "fg": 1657 }, - { "id": "overlay_female_mutation_hair_black_fro", "fg": 1661, "rotates": false }, - { "id": "overlay_female_mutation_hair_gray_fro", "fg": 1664, "rotates": false }, - { "id": "overlay_female_mutation_hair_blond_fro", "fg": 1662, "rotates": false }, - { "id": "overlay_female_mutation_hair_brown_fro", "fg": 1663, "rotates": false }, - { "id": "overlay_female_mutation_hair_white_fro", "fg": 1666, "rotates": false }, - { "id": "overlay_female_mutation_hair_red_fro", "fg": 1665, "rotates": false }, - { "id": "overlay_male_mutation_hair_black_fro", "fg": 1667, "rotates": false }, - { "id": "overlay_male_mutation_hair_gray_fro", "fg": 1670, "rotates": false }, - { "id": "overlay_male_mutation_hair_blond_fro", "fg": 1668, "rotates": false }, - { "id": "overlay_male_mutation_hair_brown_fro", "fg": 1669, "rotates": false }, - { "id": "overlay_male_mutation_hair_white_fro", "fg": 1672, "rotates": false }, - { "id": "overlay_male_mutation_hair_red_fro", "fg": 1671, "rotates": false }, - { "id": "overlay_mutation_hair_black_mohawk", "fg": 1673, "rotates": false }, - { "id": "overlay_mutation_hair_gray_mohawk", "fg": 1676, "rotates": false }, - { "id": "overlay_mutation_hair_blond_mohawk", "fg": 1674, "rotates": false }, - { "id": "overlay_mutation_hair_brown_mohawk", "fg": 1675, "rotates": false }, - { "id": "overlay_mutation_hair_white_mohawk", "fg": 1678, "rotates": false }, - { "id": "overlay_mutation_hair_red_mohawk", "fg": 1677, "rotates": false }, + { "id": "overlay_worn_10gal_hat", "fg": 1632, "rotates": false }, + { "id": "overlay_worn_bowhat", "fg": 1633, "rotates": false }, + { "id": "overlay_worn_eboshi", "fg": 1634, "rotates": false }, + { "id": [ "overlay_worn_fedora", "fedora" ], "fg": 1635, "rotates": false }, + { "id": "overlay_worn_firehelmet", "fg": 1636, "rotates": false }, + { "id": "overlay_worn_hat_chef", "fg": 1637, "rotates": false }, + { "id": "overlay_worn_hat_hard", "fg": 1638, "rotates": false }, + { "id": "overlay_worn_hat_hard_hooded", "fg": 1639, "rotates": false }, + { "id": "overlay_worn_hat_sombrero", "fg": 1640, "rotates": false }, + { "id": "overlay_worn_helmet_kabuto", "fg": 1641, "rotates": false }, + { "id": "overlay_worn_miner_hat", "fg": 1642, "rotates": false }, + { "id": "overlay_worn_miner_hat_on", "fg": 1643, "rotates": false }, + { "id": "overlay_worn_pickelhaube", "fg": 1644, "rotates": false }, + { "id": "overlay_worn_porkpie", "fg": 1645, "rotates": false }, + { "id": "overlay_worn_straw_fedora", "fg": 1646, "rotates": false }, + { "id": "overlay_worn_straw_hat", "fg": 1647, "rotates": false }, + { "id": "overlay_worn_tinfoil_hat", "fg": 1648, "rotates": false }, + { "id": "overlay_worn_tophat", "fg": 1649, "rotates": false }, + { "id": "overlay_worn_veil_wedding", "fg": 1650, "rotates": false }, + { "id": "overlay_worn_welding_mask_crude_raised", "fg": 1651, "rotates": false }, + { "id": "overlay_worn_welding_mask_raised", "fg": 1652, "rotates": false }, + { "id": "overlay_effect_badpoison", "fg": 1654 }, + { "id": "overlay_effect_bleed", "fg": 1655 }, + { "id": "overlay_effect_bouldering", "fg": 1656 }, + { "id": "overlay_effect_common_cold", "fg": 1657 }, + { "id": "overlay_effect_dazed", "fg": 1658 }, + { "id": [ "overlay_effect_deaf", "overlay_effect_earphones" ], "fg": 1659 }, + { "id": "overlay_effect_downed", "fg": 1660 }, + { "id": "overlay_effect_drunk", "fg": 1661 }, + { "id": [ "overlay_effect_flu", "overlay_effect_Influenza" ], "fg": 1662 }, + { "id": [ "overlay_effect_foodpoison", "overlay_effect_nausea" ], "fg": 1663 }, + { "id": "overlay_effect_fungus", "fg": 1664 }, + { "id": "overlay_effect_grabbed", "fg": 1665 }, + { "id": "overlay_female_effect_haslight", "fg": 1674 }, + { "id": "overlay_male_effect_haslight", "fg": 1675 }, + { "id": "overlay_effect_high", "fg": 1666 }, + { "id": "overlay_effect_paralyzepoison", "fg": 1667 }, + { "id": "overlay_effect_poison", "fg": 1668 }, + { "id": "overlay_effect_sleep", "fg": 1669 }, + { "id": "overlay_effect_spores", "fg": 1670 }, + { "id": "overlay_effect_stunned", "fg": 1671 }, + { "id": "overlay_effect_visuals", "fg": 1672 }, + { "id": [ "overlay_effect_winded", "overlay_effect_asthma" ], "fg": 1673 }, + { "id": "overlay_female_mutation_hair_black_fro", "fg": 1677, "rotates": false }, + { "id": "overlay_female_mutation_hair_gray_fro", "fg": 1680, "rotates": false }, + { "id": "overlay_female_mutation_hair_blond_fro", "fg": 1678, "rotates": false }, + { "id": "overlay_female_mutation_hair_brown_fro", "fg": 1679, "rotates": false }, + { "id": "overlay_female_mutation_hair_white_fro", "fg": 1682, "rotates": false }, + { "id": "overlay_female_mutation_hair_red_fro", "fg": 1681, "rotates": false }, + { "id": "overlay_male_mutation_hair_black_fro", "fg": 1683, "rotates": false }, + { "id": "overlay_male_mutation_hair_gray_fro", "fg": 1686, "rotates": false }, + { "id": "overlay_male_mutation_hair_blond_fro", "fg": 1684, "rotates": false }, + { "id": "overlay_male_mutation_hair_brown_fro", "fg": 1685, "rotates": false }, + { "id": "overlay_male_mutation_hair_white_fro", "fg": 1688, "rotates": false }, + { "id": "overlay_male_mutation_hair_red_fro", "fg": 1687, "rotates": false }, + { "id": "overlay_mutation_hair_black_mohawk", "fg": 1689, "rotates": false }, + { "id": "overlay_mutation_hair_gray_mohawk", "fg": 1692, "rotates": false }, + { "id": "overlay_mutation_hair_blond_mohawk", "fg": 1690, "rotates": false }, + { "id": "overlay_mutation_hair_brown_mohawk", "fg": 1691, "rotates": false }, + { "id": "overlay_mutation_hair_white_mohawk", "fg": 1694, "rotates": false }, + { "id": "overlay_mutation_hair_red_mohawk", "fg": 1693, "rotates": false }, { "id": [ "overlay_female_mutation_BIOLUM0", "overlay_female_mutation_BIOLUM1", "overlay_female_mutation_BIOLUM2" ], - "fg": 1679, + "fg": 1695, "rotates": false }, { @@ -2520,12 +2521,12 @@ "overlay_female_mutation_BIOLUM1_active", "overlay_female_mutation_BIOLUM2_active" ], - "fg": 1680, + "fg": 1696, "rotates": false }, { "id": [ "overlay_male_mutation_BIOLUM0", "overlay_male_mutation_BIOLUM1", "overlay_male_mutation_BIOLUM2" ], - "fg": 1681, + "fg": 1697, "rotates": false }, { @@ -2534,18 +2535,18 @@ "overlay_male_mutation_BIOLUM1_active", "overlay_male_mutation_BIOLUM2_active" ], - "fg": 1682, + "fg": 1698, "rotates": false }, - { "id": "overlay_mutation_HORNS_POINTED", "fg": 1683, "rotates": false }, - { "id": "overlay_crouch", "fg": 1637 }, - { "id": "overlay_run", "fg": 1660 }, - { "id": "overlay_wielded_mattress", "fg": 1684 } + { "id": "overlay_mutation_HORNS_POINTED", "fg": 1699, "rotates": false }, + { "id": "overlay_crouch", "fg": 1653 }, + { "id": "overlay_run", "fg": 1676 }, + { "id": "overlay_wielded_mattress", "fg": 1700 } ] }, { "file": "ChibiHugeAftershockMonster.png", - "//": "range 1696 to 1711", + "//": "range 1712 to 1727", "sprite_width": 128, "sprite_height": 128, "sprite_offset_x": -64, @@ -2553,49 +2554,50 @@ "tiles": [ { "id": "mon_tankbot", - "fg": [ { "weight": 10, "sprite": 1698 }, { "weight": 1, "sprite": 1699 }, { "weight": 3, "sprite": 1700 } ], + "fg": [ { "weight": 10, "sprite": 1714 }, { "weight": 1, "sprite": 1715 }, { "weight": 3, "sprite": 1716 } ], "rotates": false }, - { "id": "bot_tankbot", "fg": 1696 }, - { "id": "broken_tankbot", "fg": 1697 } + { "id": "bot_tankbot", "fg": 1712 }, + { "id": "broken_tankbot", "fg": 1713 } ] }, { "file": "small.png", - "//": "range 1712 to 2127", + "//": "range 1728 to 2207", "sprite_width": 20, "sprite_height": 20, "sprite_offset_x": 0, "sprite_offset_y": 0, "tiles": [ - { "id": [ "plastic_plate", "glass_bowl", "plastic_bowl_kids", "soap_holder" ], "fg": 1759 }, - { "id": "RAM", "fg": 1713 }, - { "id": "helmet_motor", "fg": 1811 }, - { "id": "katana", "fg": 1812 }, - { "id": "katana_fake", "fg": 1812 }, - { "id": "katana_inferior", "fg": 1812 }, - { "id": "223_casing", "fg": 1813 }, - { "id": "40mm_casing", "fg": 1814 }, - { "id": "40x46mm_m118_casing", "fg": 1814 }, - { "id": "50_casing", "fg": 1815 }, - { "id": "9mm_casing", "fg": 1816 }, - { "id": "arrow_cf", "fg": 1817 }, - { "id": "arrow_exploding", "fg": 1818 }, - { "id": "arrow_field_point_fletched", "fg": 1819 }, - { "id": "arrow_fire_hardened_fletched", "fg": 1820 }, - { "id": "flamable_arrow", "fg": 1834 }, - { "id": "arrow_flamming", "fg": 1821 }, - { "id": "arrow_heavy_fire_hardened_fletched", "fg": 1822 }, - { "id": "arrow_metal", "fg": 1823 }, - { "id": "arrow_metal_sharpened_fletched", "fg": 1824 }, - { "id": "arrow_plastic", "fg": 1825 }, - { "id": "arrow_small_game_fletched", "fg": 1826 }, - { "id": "arrow_wood", "fg": 1827 }, - { "id": "arrow_wood_heavy", "fg": 1828 }, - { "id": "bolt_cf", "fg": 1829 }, - { "id": "bolt_explosive", "fg": 1830 }, - { "id": "bolt_metal", "fg": 1831 }, - { "id": [ "bolt_steel", "bolt_steel_bodkin", "bolt_steel_target" ], "fg": 1832 }, + { "id": [ "plastic_plate", "glass_bowl", "plastic_bowl_kids", "soap_holder" ], "fg": 1781 }, + { "id": "RAM", "fg": 1729 }, + { "id": "ceramic_plate", "fg": 1781 }, + { "id": "helmet_motor", "fg": 1865 }, + { "id": "katana", "fg": 1866 }, + { "id": "katana_fake", "fg": 1866 }, + { "id": "katana_inferior", "fg": 1866 }, + { "id": "223_casing", "fg": 1867 }, + { "id": "40mm_casing", "fg": 1868 }, + { "id": "40x46mm_m118_casing", "fg": 1868 }, + { "id": "50_casing", "fg": 1869 }, + { "id": "9mm_casing", "fg": 1870 }, + { "id": "arrow_cf", "fg": 1871 }, + { "id": "arrow_exploding", "fg": 1872 }, + { "id": "arrow_field_point_fletched", "fg": 1873 }, + { "id": "arrow_fire_hardened_fletched", "fg": 1874 }, + { "id": "flamable_arrow", "fg": 1888 }, + { "id": "arrow_flamming", "fg": 1875 }, + { "id": "arrow_heavy_fire_hardened_fletched", "fg": 1876 }, + { "id": "arrow_metal", "fg": 1877 }, + { "id": "arrow_metal_sharpened_fletched", "fg": 1878 }, + { "id": "arrow_plastic", "fg": 1879 }, + { "id": "arrow_small_game_fletched", "fg": 1880 }, + { "id": "arrow_wood", "fg": 1881 }, + { "id": "arrow_wood_heavy", "fg": 1882 }, + { "id": "bolt_cf", "fg": 1883 }, + { "id": "bolt_explosive", "fg": 1884 }, + { "id": "bolt_metal", "fg": 1885 }, + { "id": [ "bolt_steel", "bolt_steel_bodkin", "bolt_steel_target" ], "fg": 1886 }, { "id": [ "bolt_wood", @@ -2606,57 +2608,57 @@ "bolt_wood_bodkin", "bolt_wood_small_game" ], - "fg": 1833 - }, - { "id": "shot_hull", "fg": 1835 }, - { "id": "basket_laundry", "fg": 1847 }, - { "id": "heavy_battery_cell", "fg": 1849 }, - { "id": "heavy_plus_battery_cell", "fg": 1849 }, - { "id": "heavy_disposable_cell", "fg": 1849 }, - { "id": "heavy_atomic_battery_cell", "fg": 1848 }, - { "id": "light_battery_cell", "fg": 1851 }, - { "id": "light_minus_battery_cell", "fg": 1853 }, - { "id": "light_plus_battery_cell", "fg": 1851 }, - { "id": "light_disposable_cell", "fg": 1851 }, - { "id": "light_atomic_battery_cell", "fg": 1850 }, - { "id": "light_minus_atomic_battery_cell", "fg": 1852 }, - { "id": "medium_battery_cell", "fg": 1855 }, - { "id": "medium_plus_battery_cell", "fg": 1855 }, - { "id": "medium_disposable_cell", "fg": 1855 }, - { "id": "medium_atomic_battery_cell", "fg": 1854 }, - { "id": "bead_bracelet", "fg": 1856 }, - { "id": "bone", "fg": 1857 }, - { "id": "bone_human", "fg": 1858 }, - { "id": "bone_tainted", "fg": 1859 }, - { "id": "SICP", "fg": 1860 }, - { "id": [ "flyer", "necropolis_leaflet", "abstractmap" ], "fg": 1861 }, - { "id": "book_fict_soft_tpl", "fg": 1871 }, - { "id": "novel_adventure", "fg": 1871 }, - { "id": "novel_buddy", "fg": 1872 }, - { "id": "novel_coa", "fg": 1873 }, - { "id": "novel_coa2", "fg": 1874 }, - { "id": "novel_crime", "fg": 1875 }, - { "id": "novel_crime2", "fg": 1876 }, - { "id": "novel_drama", "fg": 1877 }, - { "id": "novel_erotic", "fg": 1878 }, - { "id": "novel_experimental", "fg": 1879 }, - { "id": "novel_fantasy", "fg": 1880 }, - { "id": "novel_horror", "fg": 1881 }, - { "id": "novel_mystery", "fg": 1882 }, - { "id": "novel_pulp", "fg": 1883 }, - { "id": "novel_road", "fg": 1884 }, - { "id": "novel_romance", "fg": 1885 }, - { "id": "novel_samurai", "fg": 1886 }, - { "id": "novel_satire", "fg": 1887 }, - { "id": "novel_scifi", "fg": 1888 }, - { "id": "novel_sports", "fg": 1889 }, - { "id": "novel_spy", "fg": 1890 }, - { "id": "novel_swash", "fg": 1891 }, - { "id": "novel_thriller", "fg": 1892 }, - { "id": "novel_tragedy", "fg": 1893 }, - { "id": "novel_war", "fg": 1894 }, - { "id": "novel_war2", "fg": 1895 }, - { "id": "novel_western", "fg": 1896 }, + "fg": 1887 + }, + { "id": "shot_hull", "fg": 1889 }, + { "id": "basket_laundry", "fg": 1901 }, + { "id": "heavy_battery_cell", "fg": 1903 }, + { "id": "heavy_plus_battery_cell", "fg": 1903 }, + { "id": "heavy_disposable_cell", "fg": 1903 }, + { "id": "heavy_atomic_battery_cell", "fg": 1902 }, + { "id": "light_battery_cell", "fg": 1905 }, + { "id": "light_minus_battery_cell", "fg": 1907 }, + { "id": "light_plus_battery_cell", "fg": 1905 }, + { "id": "light_disposable_cell", "fg": 1905 }, + { "id": "light_atomic_battery_cell", "fg": 1904 }, + { "id": "light_minus_atomic_battery_cell", "fg": 1906 }, + { "id": "medium_battery_cell", "fg": 1909 }, + { "id": "medium_plus_battery_cell", "fg": 1909 }, + { "id": "medium_disposable_cell", "fg": 1909 }, + { "id": "medium_atomic_battery_cell", "fg": 1908 }, + { "id": "bead_bracelet", "fg": 1910 }, + { "id": "bone", "fg": 1911 }, + { "id": "bone_human", "fg": 1912 }, + { "id": "bone_tainted", "fg": 1913 }, + { "id": "SICP", "fg": 1914 }, + { "id": [ "flyer", "necropolis_leaflet", "abstractmap" ], "fg": 1915 }, + { "id": "book_fict_soft_tpl", "fg": 1925 }, + { "id": "novel_adventure", "fg": 1925 }, + { "id": "novel_buddy", "fg": 1926 }, + { "id": "novel_coa", "fg": 1927 }, + { "id": "novel_coa2", "fg": 1928 }, + { "id": "novel_crime", "fg": 1929 }, + { "id": "novel_crime2", "fg": 1930 }, + { "id": "novel_drama", "fg": 1931 }, + { "id": "novel_erotic", "fg": 1932 }, + { "id": "novel_experimental", "fg": 1933 }, + { "id": "novel_fantasy", "fg": 1934 }, + { "id": "novel_horror", "fg": 1935 }, + { "id": "novel_mystery", "fg": 1936 }, + { "id": "novel_pulp", "fg": 1937 }, + { "id": "novel_road", "fg": 1938 }, + { "id": "novel_romance", "fg": 1939 }, + { "id": "novel_samurai", "fg": 1940 }, + { "id": "novel_satire", "fg": 1941 }, + { "id": "novel_scifi", "fg": 1942 }, + { "id": "novel_sports", "fg": 1943 }, + { "id": "novel_spy", "fg": 1944 }, + { "id": "novel_swash", "fg": 1945 }, + { "id": "novel_thriller", "fg": 1946 }, + { "id": "novel_tragedy", "fg": 1947 }, + { "id": "novel_war", "fg": 1948 }, + { "id": "novel_war2", "fg": 1949 }, + { "id": "novel_western", "fg": 1950 }, { "id": [ "adv_chemistry", @@ -2676,7 +2678,7 @@ "modern_tanner", "repeater_mod_guide" ], - "fg": 1863 + "fg": 1917 }, { "id": [ @@ -2697,7 +2699,7 @@ "textbook_robots", "textbook_armschina" ], - "fg": 1870 + "fg": 1924 }, { "id": [ @@ -2712,7 +2714,7 @@ "cookbook_daintydishes", "cookbook_liverforkids" ], - "fg": 1864 + "fg": 1918 }, { "id": [ @@ -2725,7 +2727,7 @@ "recipe_melee", "recipe_labchem" ], - "fg": 1868 + "fg": 1922 }, { "id": [ @@ -2742,9 +2744,9 @@ "recipe_creepy", "recipe_maiar" ], - "fg": 1868 + "fg": 1922 }, - { "id": [ "pocket_firstaid", "pocket_firearms", "pocket_survival" ], "fg": 1867 }, + { "id": [ "pocket_firstaid", "pocket_firearms", "pocket_survival" ], "fg": 1921 }, { "id": [ "mag_rifle", @@ -2768,7 +2770,7 @@ "mag_swimming", "mag_news" ], - "fg": 1865 + "fg": 1919 }, { "id": [ @@ -2785,7 +2787,7 @@ "schematics_searchlight", "schematics_secubot" ], - "fg": 1869 + "fg": 1923 }, { "id": [ @@ -2806,82 +2808,81 @@ "manual_shotgun", "manual_fabrication" ], - "fg": 1866 - }, - { "id": [ "record_patient", "tailor_portfolio", "isherwood_herbal_remedies" ], "fg": 1862 }, - { "id": "bottle_twoliter", "fg": 1897 }, - { "id": "bowl_pewter", "fg": 1898 }, - { "id": "ceramic_cup", "fg": 1919 }, - { "id": "ceramic_mug", "fg": 1920 }, - { "id": "ceramic_shard", "fg": 1921 }, - { "id": "chain", "fg": 1922 }, - { "id": "clay_lump", "fg": 1923 }, - { "id": "bag_plastic", "fg": 1924 }, - { "id": "bag_zipper", "fg": 1925 }, - { "id": "bottle_glass", "fg": 1926 }, - { "id": "bottle_plastic", "fg": 1927 }, - { "id": "bottle_plastic_small", "fg": 1928 }, - { "id": "box_cigarette", "fg": 1929 }, - { "id": "box_small", "fg": 1930 }, - { "id": "can_drink", "fg": 1931 }, - { "id": "can_drink_unsealed", "fg": 1932 }, - { "id": "can_food", "fg": 1933 }, - { "id": [ "glass", "base_glass_dish", "wine_glass" ], "fg": 1934 }, - { "id": "jar_3l_glass", "fg": 1935 }, - { "id": "jar_3l_glass_sealed", "fg": 1936 }, - { "id": "jar_glass", "fg": 1937 }, - { "id": "jar_glass_sealed", "fg": 1938 }, - { "id": "jug_plastic", "fg": 1939 }, - { "id": "wrapper", "fg": 1940 }, - { "id": "cudgel", "fg": 1941 }, - { "id": "hinge", "fg": 1948 }, - { "id": "inhaler", "fg": 1949 }, - { "id": [ "kasaya", "samghati", "antarvasa", "uttarasanga" ], "fg": 1950 }, - { "id": "kettle", "fg": 1951 }, - { "id": "cig_butt", "fg": 1978 }, - { "id": "joint", "fg": 1982 }, - { "id": "joint_lit", "fg": 1983 }, - { "id": "joint_roach", "fg": 1984 }, - { "id": "aspirin", "fg": 1975 }, - { "id": "bandages", "fg": 1976 }, - { "id": "syringe", "fg": 1988 }, - { "id": "antibiotics", "fg": 1972 }, - { "id": "weak_antibiotic", "fg": 1991 }, - { "id": "strong_antibiotic", "fg": 1987 }, - { "id": "vitamins", "fg": 1990 }, - { "id": "gummy_vitamins", "fg": 1980 }, - { "id": "calcium_tablet", "fg": 1977 }, - { "id": "oxycodone", "fg": 1985 }, - { "id": "tramadol", "fg": 1989 }, - { "id": "codeine", "fg": 2004 }, - { "id": "prussian_blue", "fg": 1986 }, - { "id": "iodine", "fg": 1981 }, - { "id": "antiparasitic", "fg": 1974 }, - { "id": "antifungal", "fg": 1973 }, - { "id": "money_bundle", "fg": 1992 }, - { "id": "mp3", "fg": 1993 }, - { "id": "permanent_marker", "fg": 2026 }, - { "id": "pipe", "fg": 2028 }, - { "id": "cu_pipe", "fg": 2027 }, - { "id": "acorns", "fg": 2029 }, - { "id": "chips", "fg": 2033 }, - { "id": "apple", "fg": 2030 }, - { "id": "banana", "fg": 2031 }, - { "id": "broccoli", "fg": 2032 }, - { "id": "corn", "fg": 2034 }, - { "id": "cucumber", "fg": 2035 }, - { "id": "egg_bird", "fg": 2036 }, - { "id": "grapes", "fg": 2037 }, - { "id": "lemon", "fg": 2041 }, - { "id": "onion", "fg": 2042 }, - { "id": "orange", "fg": 2043 }, - { "id": "pear", "fg": 2044 }, - { "id": "potato", "fg": 2045 }, - { "id": "pumpkin", "fg": 2046 }, - { "id": "tomato", "fg": 2049 }, - { "id": "hickory_nut", "fg": 2038 }, - { "id": "hickory_root", "fg": 2039 }, - { "id": "juniper", "fg": 2040 }, + "fg": 1920 + }, + { "id": [ "record_patient", "tailor_portfolio", "isherwood_herbal_remedies" ], "fg": 1916 }, + { "id": "bottle_twoliter", "fg": 1951 }, + { "id": "bowl_pewter", "fg": 1952 }, + { "id": "ceramic_cup", "fg": 1990 }, + { "id": "ceramic_mug", "fg": 1991 }, + { "id": "ceramic_shard", "fg": 1992 }, + { "id": "chain", "fg": 1993 }, + { "id": "clay_lump", "fg": 1994 }, + { "id": "bag_plastic", "fg": 1995 }, + { "id": "bag_zipper", "fg": 1996 }, + { "id": "bottle_glass", "fg": 1997 }, + { "id": "bottle_plastic", "fg": 1998 }, + { "id": "bottle_plastic_small", "fg": 1999 }, + { "id": "box_cigarette", "fg": 2000 }, + { "id": "box_small", "fg": 2001 }, + { "id": "can_drink", "fg": 2002 }, + { "id": "can_drink_unsealed", "fg": 2003 }, + { "id": "can_food", "fg": 2004 }, + { "id": [ "glass", "base_glass_dish" ], "fg": 2005 }, + { "id": "jar_3l_glass", "fg": 2006 }, + { "id": "jar_3l_glass_sealed", "fg": 2007 }, + { "id": "jar_glass", "fg": 2008 }, + { "id": "jar_glass_sealed", "fg": 2009 }, + { "id": "jug_plastic", "fg": 2010 }, + { "id": "wrapper", "fg": 2011 }, + { "id": "cudgel", "fg": 2012 }, + { "id": "hinge", "fg": 2019 }, + { "id": "inhaler", "fg": 2020 }, + { "id": [ "kasaya", "samghati", "antarvasa", "uttarasanga" ], "fg": 2021 }, + { "id": "cig_butt", "fg": 2048 }, + { "id": "joint", "fg": 2052 }, + { "id": "joint_lit", "fg": 2053 }, + { "id": "joint_roach", "fg": 2054 }, + { "id": "aspirin", "fg": 2045 }, + { "id": "bandages", "fg": 2046 }, + { "id": "syringe", "fg": 2058 }, + { "id": "antibiotics", "fg": 2042 }, + { "id": "weak_antibiotic", "fg": 2061 }, + { "id": "strong_antibiotic", "fg": 2057 }, + { "id": "vitamins", "fg": 2060 }, + { "id": "gummy_vitamins", "fg": 2050 }, + { "id": "calcium_tablet", "fg": 2047 }, + { "id": "oxycodone", "fg": 2055 }, + { "id": "tramadol", "fg": 2059 }, + { "id": "codeine", "fg": 2074 }, + { "id": "prussian_blue", "fg": 2056 }, + { "id": "iodine", "fg": 2051 }, + { "id": "antiparasitic", "fg": 2044 }, + { "id": "antifungal", "fg": 2043 }, + { "id": "money_bundle", "fg": 2062 }, + { "id": "mp3", "fg": 2063 }, + { "id": "permanent_marker", "fg": 2096 }, + { "id": "pipe", "fg": 2098 }, + { "id": "cu_pipe", "fg": 2097 }, + { "id": "acorns", "fg": 2099 }, + { "id": "chips", "fg": 2103 }, + { "id": "apple", "fg": 2100 }, + { "id": "banana", "fg": 2101 }, + { "id": "broccoli", "fg": 2102 }, + { "id": "corn", "fg": 2104 }, + { "id": "cucumber", "fg": 2105 }, + { "id": "egg_bird", "fg": 2106 }, + { "id": "grapes", "fg": 2107 }, + { "id": "lemon", "fg": 2111 }, + { "id": "onion", "fg": 2112 }, + { "id": "orange", "fg": 2113 }, + { "id": "pear", "fg": 2114 }, + { "id": "potato", "fg": 2115 }, + { "id": "pumpkin", "fg": 2116 }, + { "id": "tomato", "fg": 2119 }, + { "id": "hickory_nut", "fg": 2108 }, + { "id": "hickory_root", "fg": 2109 }, + { "id": "juniper", "fg": 2110 }, { "id": [ "seed_hops", @@ -2949,906 +2950,954 @@ "seed_mulberries", "seed_elderberries" ], - "fg": 2047 - }, - { "id": "straw_pile", "fg": 2048 }, - { "id": "wheat", "fg": 2050 }, - { "id": "withered", "fg": 2051 }, - { "id": "bee_balm", "fg": 2052 }, - { "id": "carrot_wild", "fg": 2053 }, - { "id": "dogbane", "fg": 2054 }, - { "id": "egg_reptile", "fg": 2055 }, - { "id": "mugwort", "fg": 2056 }, - { "id": "thyme", "fg": 2057 }, - { "id": "veggy_wild", "fg": 2058 }, - { "id": "wild_herbs", "fg": 2059 }, - { "id": "feces_manure", "fg": 2063 }, - { "id": "feces_bird", "fg": 2060 }, - { "id": "feces_cow", "fg": 2061 }, - { "id": "feces_dog", "fg": 2062 }, - { "id": "feces_roach", "fg": 2064 }, - { "id": "fetid_goop", "fg": 2065 }, - { "id": "rag_bloody", "fg": 2066 }, - { "id": "ash", "fg": 2072 }, - { "id": "brick", "fg": 2073 }, - { "id": "scrap", "fg": 2076 }, - { "id": "e_scrap", "fg": 2075 }, - { "id": "steel_chunk", "fg": 2077 }, - { "id": "steel_lump", "fg": 2078 }, - { "id": "wire", "fg": 2079 }, - { "id": "cable", "fg": 2074 }, - { "id": "spring", "fg": 2080 }, - { "id": "survnote", "fg": 2081 }, - { "id": "creepy_doll", "fg": 2082 }, - { "id": "talking_doll", "fg": 2082 }, - { "id": "teapot", "fg": 2084 }, - { "id": "thermometer", "fg": 2085 }, - { "id": "crucible_clay", "fg": 2086 }, - { "id": "flashlight", "fg": 2088 }, - { "id": "heavy_flashlight", "fg": 2091 }, - { "id": "saw", "fg": 2100 }, - { "id": "screwdriver_set", "fg": 2097 }, - { "id": "wrench", "fg": 2101 }, - { "id": "hammer", "fg": 2090 }, - { "id": "hacksaw", "fg": 2089 }, - { "id": "knife_meat_cleaver", "fg": 2096 }, - { "id": "knife_vegetable_cleaver", "fg": 2099 }, + "fg": 2117 + }, + { "id": "straw_pile", "fg": 2118 }, + { "id": "wheat", "fg": 2120 }, + { "id": "withered", "fg": 2121 }, + { "id": "bee_balm", "fg": 2122 }, + { "id": "carrot_wild", "fg": 2123 }, + { "id": "dogbane", "fg": 2124 }, + { "id": "egg_reptile", "fg": 2125 }, + { "id": "mugwort", "fg": 2126 }, + { "id": "thyme", "fg": 2127 }, + { "id": "veggy_wild", "fg": 2128 }, + { "id": "wild_herbs", "fg": 2129 }, + { "id": "feces_manure", "fg": 2133 }, + { "id": "feces_bird", "fg": 2130 }, + { "id": "feces_cow", "fg": 2131 }, + { "id": "feces_dog", "fg": 2132 }, + { "id": "feces_roach", "fg": 2134 }, + { "id": "fetid_goop", "fg": 2135 }, + { "id": "rag_bloody", "fg": 2136 }, + { "id": "ash", "fg": 2142 }, + { "id": "brick", "fg": 2143 }, + { "id": "scrap", "fg": 2146 }, + { "id": "e_scrap", "fg": 2145 }, + { "id": "steel_chunk", "fg": 2147 }, + { "id": "steel_lump", "fg": 2148 }, + { "id": "wire", "fg": 2149 }, + { "id": "cable", "fg": 2144 }, + { "id": "spring", "fg": 2150 }, + { "id": "survnote", "fg": 2151 }, + { "id": "creepy_doll", "fg": 2152 }, + { "id": "talking_doll", "fg": 2152 }, + { "id": "teapot", "fg": 2154 }, + { "id": "thermometer", "fg": 2155 }, + { "id": "crucible_clay", "fg": 2156 }, + { "id": "flashlight", "fg": 2158 }, + { "id": "heavy_flashlight", "fg": 2161 }, + { "id": "saw", "fg": 2170 }, + { "id": "screwdriver_set", "fg": 2167 }, + { "id": "wrench", "fg": 2171 }, + { "id": "hammer", "fg": 2160 }, + { "id": "hacksaw", "fg": 2159 }, + { "id": "knife_meat_cleaver", "fg": 2166 }, + { "id": "knife_vegetable_cleaver", "fg": 2169 }, { "id": "lighter", - "fg": [ { "weight": 1, "sprite": 2093 }, { "weight": 1, "sprite": 2092 }, { "weight": 1, "sprite": 2094 } ] - }, - { "id": "makeshift_crowbar", "fg": 2095 }, - { "id": "esbit_stove", "fg": 2087 }, - { "id": "usb_drive", "fg": 2098 }, - { "id": "cash_card", "fg": 2102 }, - { "id": "file", "fg": 2103 }, - { "id": "fp_loyalty_card", "fg": 2104 }, - { "id": "id_industrial", "fg": 2105 }, - { "id": "id_military", "fg": 2106 }, - { "id": "id_science", "fg": 2107 }, - { "id": "bowl_plastic", "fg": 2108 }, - { "id": "cup_plastic", "fg": 2109 }, - { "id": "fork", "fg": 2110 }, - { "id": "glass_plate", "fg": 2111 }, - { "id": "knife_butter", "fg": 2112 }, - { "id": "washboard", "fg": 2119 }, - { "id": "wash_kit", "fg": 2118 }, - { "id": "helmet_army", "fg": 2123 }, - { "id": "foodperson_mask", "fg": 2121 }, - { "id": "foodperson_mask_on", "fg": 2122 }, - { "id": "ballistic_vest_esapi", "fg": 2120 }, - { "id": "saddle", "fg": 1712 }, - { "id": "beans_cooked", "fg": 1714 }, - { "id": "cheese_fries", "fg": 1715 }, - { "id": "cooked_dinner", "fg": 1716 }, - { "id": "fish_cooked", "fg": 1717 }, - { "id": "fresh_fries", "fg": 1718 }, - { "id": "hotdogs_campfire", "fg": 1719 }, - { "id": "lentils_cooked", "fg": 1720 }, - { "id": "nachos", "fg": 1721 }, - { "id": "nachosc", "fg": 1722 }, - { "id": "nachosm", "fg": 1723 }, - { "id": "nachosmc", "fg": 1724 }, - { "id": "nachosv", "fg": 1725 }, - { "id": "nachosvc", "fg": 1726 }, - { "id": "oatmeal_cooked", "fg": 1727 }, - { "id": "oatmeal_deluxe", "fg": 1728 }, - { "id": "popcorn", "fg": 1729 }, - { "id": "popcorn2", "fg": 1730 }, - { "id": "quesadilla_cheese", "fg": 1731 }, - { "id": "rice_cooked", "fg": 1732 }, - { "id": "sandwich_cheese", "fg": 1733 }, - { "id": "sandwich_cheese_grilled", "fg": 1734 }, - { "id": "sandwich_cucumber", "fg": 1735 }, - { "id": "sandwich_fairy", "fg": 1736 }, - { "id": "sandwich_honey", "fg": 1737 }, - { "id": "sandwich_jam", "fg": 1738 }, - { "id": "sandwich_jam_butter", "fg": 1739 }, - { "id": "sandwich_pb", "fg": 1740 }, - { "id": "sandwich_pbh", "fg": 1741 }, - { "id": "sandwich_pbj", "fg": 1742 }, - { "id": "sandwich_pbm", "fg": 1743 }, - { "id": "sandwich_sauce", "fg": 1744 }, - { "id": "sandwich_t", "fg": 1745 }, - { "id": "sandwich_veggy", "fg": 1746 }, - { "id": "sausage_cooked", "fg": 1747 }, - { "id": "spaghetti_cooked", "fg": 1748 }, - { "id": "toasterpastry", "fg": 1749 }, - { "id": "veggy_cooked", "fg": 1750 }, - { "id": "2byarm_guard", "fg": 1751 }, - { "id": "2byshin_guard", "fg": 1752 }, - { "id": "adhesive_bandages", "fg": 1753 }, - { "id": "atomic_light", "fg": 1754 }, - { "id": "atomic_light_off", "fg": 1755 }, - { "id": "bandana", "fg": 1756 }, - { "id": "boltcutters", "fg": 1757 }, - { "id": "briefcase", "fg": 1758 }, - { "id": "chain_link", "fg": 1760 }, - { "id": "chainmail_suit_faraday", "fg": 1761 }, - { "id": "charcoal", "fg": 1762 }, - { "id": "chisel", "fg": 1763 }, - { "id": "cordless_drill", "fg": 1764 }, - { "id": "data_card", "fg": 1765 }, - { "id": "food_processor", "fg": 1766 }, - { "id": "frisbee", "fg": 1767 }, - { "id": "gloves_light", "fg": 1768 }, - { "id": "hammer_sledge", "fg": 1769 }, - { "id": "hammer_sledge_engineer", "fg": 1770 }, - { "id": "hammer_sledge_heavy", "fg": 1771 }, - { "id": "hammer_sledge_short", "fg": 1772 }, - { "id": "harmonica_holder", "fg": 1773 }, - { "id": "jack", "fg": 1774 }, - { "id": "jack_makeshift", "fg": 1775 }, - { "id": "jack_small", "fg": 1776 }, - { "id": "jackhammer", "fg": 1777 }, - { "id": "laptop", "fg": 1778 }, - { "id": "link_sheet", "fg": 1779 }, - { "id": "machete", "fg": 1780 }, - { "id": "makeshift_bayonet", "fg": 1781 }, - { "id": "makeshift_hammer", "fg": 1782 }, - { "id": "makeshift_machete", "fg": 1783 }, - { "id": "makeshift_stethoscope", "fg": 1784 }, - { "id": "mbag", "fg": 1785 }, - { "id": "paper", "fg": 1786 }, - { "id": "pliers", "fg": 1787 }, - { "id": "pot_helmet", "fg": 1788 }, - { "id": "pot_makeshift", "fg": 1789 }, - { "id": "pot_makeshift_copper", "fg": 1790 }, - { "id": "reading_light", "fg": 1791 }, - { "id": "reading_light_on", "fg": 1792 }, - { "id": "receiver", "fg": 1793 }, - { "id": "scarf", "fg": 1794 }, - { "id": "shocktonfa_off", "fg": 1795 }, - { "id": "shocktonfa_on", "fg": 1796 }, - { "id": "slingpack", "fg": 1797 }, - { "id": "smart_phone", "fg": 1798 }, - { "id": "soap", "fg": 1799 }, - { "id": "solder_wire", "fg": 1800 }, - { "id": "spike", "fg": 1801 }, - { "id": "stethoscope", "fg": 1802 }, - { "id": "swage", "fg": 1803 }, - { "id": "teleumbrella", "fg": 1804 }, - { "id": "tonfa", "fg": 1805 }, - { "id": "tonfa_wood", "fg": 1806 }, - { "id": "tongs", "fg": 1807 }, - { "id": "water_purifier", "fg": 1808 }, - { "id": "wire_barbed", "fg": 1809 }, - { "id": "halligan", "fg": 1810 }, - { "id": "cig", "fg": 1836 }, - { "id": "cig_lit", "fg": 1837 }, - { "id": "copper_ring", "fg": 1838 }, - { "id": "g_shovel", "fg": 1839 }, - { "id": "gold_ring", "fg": 1840 }, - { "id": "lsd", "fg": 1841 }, - { "id": "silver_ring", "fg": 1842 }, - { "id": "thermal_mask", "fg": 1843 }, - { "id": "thermal_socks", "fg": 1844 }, - { "id": "tie_clipon", "fg": 1845 }, - { "id": "whistle", "fg": 1846 }, - { "id": "ceramic_bowl", "fg": 1899 }, - { "id": "radio_car", "fg": 1900 }, - { "id": "radio_car_box", "fg": 1901 }, - { "id": "radio_car_on", "fg": 1902 }, - { "id": "radio_car_wheel", "fg": 1903 }, - { "id": "radiocontrol", "fg": 1904 }, - { "id": "rc_car_box", "fg": 1905 }, - { "id": "toaster", "fg": 1906 }, - { "id": "handflare", "fg": 1907 }, - { "id": "heatpack", "fg": 1908 }, - { "id": "heatpack_used", "fg": 1909 }, - { "id": "analytical_set_basic", "fg": 1910 }, - { "id": "balance_small", "fg": 1911 }, - { "id": "beaker", "fg": 1912 }, - { "id": "flask_glass", "fg": 1913 }, - { "id": "gradcylinder", "fg": 1914 }, - { "id": "ph_meter", "fg": 1915 }, - { "id": "spectrophotometer", "fg": 1916 }, - { "id": "test_tube", "fg": 1917 }, - { "id": "voltmeter", "fg": 1918 }, - { "id": "grenade", "fg": 1942 }, - { "id": "grenade_act", "fg": 1943 }, - { "id": "grenade_emp", "fg": 1944 }, - { "id": "grenade_emp_act", "fg": 1945 }, - { "id": "grenade_inc", "fg": 1946 }, - { "id": "grenade_inc_act", "fg": 1947 }, - { "id": "boxcutter", "fg": 1952 }, - { "id": "copper_knife", "fg": 1953 }, - { "id": "diveknife", "fg": 1954 }, - { "id": "knife_bread", "fg": 1955 }, - { "id": "knife_butcher", "fg": 1956 }, - { "id": "knife_carving", "fg": 1957 }, - { "id": "knife_chef", "fg": 1958 }, - { "id": "knife_combat", "fg": 1959 }, - { "id": "knife_folding", "fg": 1960 }, - { "id": "knife_hunting", "fg": 1961 }, - { "id": "knife_paring", "fg": 1962 }, - { "id": "knife_rambo", "fg": 1963 }, - { "id": "knife_rm42", "fg": 1964 }, - { "id": "knife_steak", "fg": 1965 }, - { "id": "knife_swissarmy", "fg": 1966 }, - { "id": "knife_trench", "fg": 1967 }, - { "id": "makeshift_knife", "fg": 1968 }, - { "id": "pockknife", "fg": 1969 }, - { "id": "primitive_knife", "fg": 1970 }, - { "id": "throwing_knife", "fg": 1971 }, - { "id": "eyedrops", "fg": 1979 }, - { "id": "baseball", "fg": 1994 }, - { "id": "basketball", "fg": 1995 }, - { "id": "battery_car", "fg": 1996 }, - { "id": "beach_volleyball", "fg": 1997 }, - { "id": "bowling_ball", "fg": 1998 }, - { "id": "cell_phone", "fg": 1999 }, - { "id": "cell_phone_flashlight", "fg": 2000 }, - { "id": "cigar", "fg": 2001 }, - { "id": "cigar_butt", "fg": 2002 }, - { "id": "cigar_lit", "fg": 2003 }, - { "id": "ear_plugs", "fg": 2005 }, - { "id": "fiddlehead_boiled", "fg": 2006 }, - { "id": "fiddlehead_raw", "fg": 2007 }, - { "id": "fiddlehead_sauteed", "fg": 2008 }, - { "id": "flask_hip", "fg": 2009 }, - { "id": "football", "fg": 2010 }, - { "id": "golf_ball", "fg": 2011 }, - { "id": "holo_sight", "fg": 2012 }, - { "id": "indoor_volleyball", "fg": 2013 }, - { "id": "misc_repairkit", "fg": 2014 }, - { "id": "mre_beef_box", "fg": 2015 }, - { "id": "peephole", "fg": 2016 }, - { "id": "portable_game", "fg": 2017 }, - { "id": "puck", "fg": 2018 }, - { "id": "purse", "fg": 2019 }, - { "id": "smokebomb", "fg": 2020 }, - { "id": "smokebomb_act", "fg": 2021 }, - { "id": "suppressor", "fg": 2022 }, - { "id": "tourniquet_upper", "fg": 2023 }, - { "id": "two_way_radio", "fg": 2024 }, - { "id": "wristwatch", "fg": 2025 }, - { "id": "pebble", "fg": 2067 }, - { "id": "pebble_clay", "fg": 2068 }, - { "id": "rock", "fg": 2069 }, - { "id": "rock_flaking", "fg": 2070 }, - { "id": "rock_large", "fg": 2071 }, - { "id": "clay_teapot", "fg": 2083 }, - { "id": "towel", "fg": 2113 }, - { "id": "towel_soiled", "fg": 2114 }, - { "id": "towel_wet", "fg": 2115 }, - { "id": "battery_charger", "fg": 2116 }, - { "id": "recharge_station", "fg": 2117 } + "fg": [ { "weight": 1, "sprite": 2163 }, { "weight": 1, "sprite": 2162 }, { "weight": 1, "sprite": 2164 } ] + }, + { "id": "makeshift_crowbar", "fg": 2165 }, + { "id": "esbit_stove", "fg": 2157 }, + { "id": "usb_drive", "fg": 2168 }, + { "id": "cash_card", "fg": 2172 }, + { "id": "file", "fg": 2173 }, + { "id": "fp_loyalty_card", "fg": 2174 }, + { "id": "id_industrial", "fg": 2175 }, + { "id": "id_military", "fg": 2176 }, + { "id": "id_science", "fg": 2177 }, + { "id": "bowl_plastic", "fg": 2178 }, + { "id": "cup_plastic", "fg": 2179 }, + { "id": "fork", "fg": 2180 }, + { "id": "knife_butter", "fg": 2181 }, + { "id": "washboard", "fg": 2188 }, + { "id": "wash_kit", "fg": 2187 }, + { "id": "helmet_army", "fg": 2192 }, + { "id": "foodperson_mask", "fg": 2190 }, + { "id": "foodperson_mask_on", "fg": 2191 }, + { "id": "ballistic_vest_esapi", "fg": 2189 }, + { "id": "saddle", "fg": 1728 }, + { "id": "beans_cooked", "fg": 1730 }, + { "id": "cheese_fries", "fg": 1731 }, + { "id": "cooked_dinner", "fg": 1732 }, + { "id": "fish_cooked", "fg": 1733 }, + { "id": "fresh_fries", "fg": 1734 }, + { "id": "hotdogs_campfire", "fg": 1735 }, + { "id": "lentils_cooked", "fg": 1736 }, + { "id": "nachos", "fg": 1737 }, + { "id": "nachosc", "fg": 1738 }, + { "id": "nachosm", "fg": 1739 }, + { "id": "nachosmc", "fg": 1740 }, + { "id": "nachosv", "fg": 1741 }, + { "id": "nachosvc", "fg": 1742 }, + { "id": "oatmeal_cooked", "fg": 1743 }, + { "id": "oatmeal_deluxe", "fg": 1744 }, + { "id": "popcorn", "fg": 1745 }, + { "id": "popcorn2", "fg": 1746 }, + { "id": "quesadilla_cheese", "fg": 1747 }, + { "id": "rice_cooked", "fg": 1748 }, + { "id": "sandwich_cheese", "fg": 1749 }, + { "id": "sandwich_cheese_grilled", "fg": 1750 }, + { "id": "sandwich_cucumber", "fg": 1751 }, + { "id": "sandwich_fairy", "fg": 1752 }, + { "id": "sandwich_honey", "fg": 1753 }, + { "id": "sandwich_jam", "fg": 1754 }, + { "id": "sandwich_jam_butter", "fg": 1755 }, + { "id": "sandwich_pb", "fg": 1756 }, + { "id": "sandwich_pbh", "fg": 1757 }, + { "id": "sandwich_pbj", "fg": 1758 }, + { "id": "sandwich_pbm", "fg": 1759 }, + { "id": "sandwich_sauce", "fg": 1760 }, + { "id": "sandwich_t", "fg": 1761 }, + { "id": "sandwich_veggy", "fg": 1762 }, + { "id": "sausage_cooked", "fg": 1763 }, + { "id": "spaghetti_cooked", "fg": 1764 }, + { "id": "toasterpastry", "fg": 1765 }, + { "id": "veggy_cooked", "fg": 1766 }, + { "id": "2byarm_guard", "fg": 1767 }, + { "id": "2byshin_guard", "fg": 1768 }, + { "id": "adhesive_bandages", "fg": 1769 }, + { "id": "atomic_light", "fg": 1770 }, + { "id": "atomic_light_off", "fg": 1771 }, + { "id": "b_paint", "fg": 1772 }, + { "id": "bandana", "fg": 1773 }, + { "id": "boltcutters", "fg": 1774 }, + { "id": "bottle_opener", "fg": 1775 }, + { "id": "briefcase", "fg": 1776 }, + { "id": "can_opener", "fg": 1777 }, + { "id": "candle", "fg": 1778 }, + { "id": "candlestick", "fg": 1779 }, + { "id": "carving_fork", "fg": 1780 }, + { "id": "chain_link", "fg": 1782 }, + { "id": "chainmail_suit_faraday", "fg": 1783 }, + { "id": "charcoal", "fg": 1784 }, + { "id": "chipper", "fg": 1785 }, + { "id": "chisel", "fg": 1786 }, + { "id": "clay_pot_flower", "fg": 1787 }, + { "id": "colander_steel", "fg": 1788 }, + { "id": "copper_pan", "fg": 1789 }, + { "id": "cordless_drill", "fg": 1790 }, + { "id": "corkscrew", "fg": 1791 }, + { "id": "data_card", "fg": 1792 }, + { "id": "dish_towel", "fg": 1793 }, + { "id": "food_processor", "fg": 1794 }, + { "id": "frisbee", "fg": 1795 }, + { "id": "g_paint", "fg": 1796 }, + { "id": "garlic_press", "fg": 1797 }, + { "id": "glass_plate", "fg": 1798 }, + { "id": "gloves_light", "fg": 1799 }, + { "id": "hammer_sledge", "fg": 1800 }, + { "id": "hammer_sledge_engineer", "fg": 1801 }, + { "id": "hammer_sledge_heavy", "fg": 1802 }, + { "id": "hammer_sledge_short", "fg": 1803 }, + { "id": "hand_drill", "fg": 1804 }, + { "id": "harmonica_holder", "fg": 1805 }, + { "id": "iron_pot", "fg": 1806 }, + { "id": "jack", "fg": 1807 }, + { "id": "jack_makeshift", "fg": 1808 }, + { "id": "jack_small", "fg": 1809 }, + { "id": "jackhammer", "fg": 1810 }, + { "id": "kettle", "fg": 1811 }, + { "id": "ladle", "fg": 1812 }, + { "id": "laptop", "fg": 1813 }, + { "id": "link_sheet", "fg": 1814 }, + { "id": "machete", "fg": 1815 }, + { "id": "makeshift_bayonet", "fg": 1816 }, + { "id": "makeshift_hammer", "fg": 1817 }, + { "id": "makeshift_machete", "fg": 1818 }, + { "id": "makeshift_stethoscope", "fg": 1819 }, + { "id": "matches", "fg": 1820 }, + { "id": "mbag", "fg": 1821 }, + { "id": "p_paint", "fg": 1822 }, + { "id": "paint_brush", "fg": 1823 }, + { "id": "pan", "fg": 1824 }, + { "id": "paper", "fg": 1825 }, + { "id": "peeler", "fg": 1826 }, + { "id": "plastic_pot_flower", "fg": 1827 }, + { "id": "pliers", "fg": 1828 }, + { "id": "pot", "fg": 1829 }, + { "id": "pot_canning", "fg": 1830 }, + { "id": "pot_copper", "fg": 1831 }, + { "id": "pot_helmet", "fg": 1832 }, + { "id": "pot_makeshift", "fg": 1833 }, + { "id": "pot_makeshift_copper", "fg": 1834 }, + { "id": "potato_masher", "fg": 1835 }, + { "id": "r_paint", "fg": 1836 }, + { "id": "reading_light", "fg": 1837 }, + { "id": "reading_light_on", "fg": 1838 }, + { "id": "receiver", "fg": 1839 }, + { "id": "rolling_pin", "fg": 1840 }, + { "id": "scarf", "fg": 1841 }, + { "id": "shocktonfa_off", "fg": 1842 }, + { "id": "shocktonfa_on", "fg": 1843 }, + { "id": "slingpack", "fg": 1844 }, + { "id": "smart_phone", "fg": 1845 }, + { "id": "soap", "fg": 1846 }, + { "id": "solder_wire", "fg": 1847 }, + { "id": "spatula", "fg": 1848 }, + { "id": "spike", "fg": 1849 }, + { "id": "steel_pan", "fg": 1850 }, + { "id": "stethoscope", "fg": 1851 }, + { "id": "stock_pot", "fg": 1852 }, + { "id": "swage", "fg": 1853 }, + { "id": "teleumbrella", "fg": 1854 }, + { "id": "tonfa", "fg": 1855 }, + { "id": "tonfa_wood", "fg": 1856 }, + { "id": "tongs", "fg": 1857 }, + { "id": "w_paint", "fg": 1858 }, + { "id": "water_purifier", "fg": 1859 }, + { "id": "whisk", "fg": 1860 }, + { "id": "wine_glass", "fg": 1861 }, + { "id": "wire_barbed", "fg": 1862 }, + { "id": "y_paint", "fg": 1863 }, + { "id": "halligan", "fg": 1864 }, + { "id": "cig", "fg": 1890 }, + { "id": "cig_lit", "fg": 1891 }, + { "id": "copper_ring", "fg": 1892 }, + { "id": "g_shovel", "fg": 1893 }, + { "id": "gold_ring", "fg": 1894 }, + { "id": "lsd", "fg": 1895 }, + { "id": "silver_ring", "fg": 1896 }, + { "id": "thermal_mask", "fg": 1897 }, + { "id": "thermal_socks", "fg": 1898 }, + { "id": "tie_clipon", "fg": 1899 }, + { "id": "whistle", "fg": 1900 }, + { "id": "ceramic_bowl", "fg": 1953 }, + { "id": "chestrig", "fg": 1954 }, + { "id": "radio_car", "fg": 1955 }, + { "id": "radio_car_box", "fg": 1956 }, + { "id": "radio_car_on", "fg": 1957 }, + { "id": "radio_car_wheel", "fg": 1958 }, + { "id": "radiocontrol", "fg": 1959 }, + { "id": "rc_car_box", "fg": 1960 }, + { "id": "toaster", "fg": 1961 }, + { "id": "xl_chestrig", "fg": 1962 }, + { "id": "ammolink", "fg": 1963 }, + { "id": "angle_grinder", "fg": 1964 }, + { "id": "atomic_lamp", "fg": 1965 }, + { "id": "atomic_lamp_off", "fg": 1966 }, + { "id": "birdfood", "fg": 1967 }, + { "id": "drivebelt", "fg": 1968 }, + { "id": "eink_tablet_pc", "fg": 1969 }, + { "id": "handflare", "fg": 1970 }, + { "id": "heatpack", "fg": 1971 }, + { "id": "heatpack_used", "fg": 1972 }, + { "id": "hoe", "fg": 1973 }, + { "id": "horn_bicycle", "fg": 1974 }, + { "id": "pencil", "fg": 1975 }, + { "id": "pipe_glass", "fg": 1976 }, + { "id": "sickle", "fg": 1977 }, + { "id": "beartrap", "fg": 1978 }, + { "id": "tr_beartrap", "fg": 1979 }, + { "id": "wire_mesh", "fg": 1980 }, + { "id": "analytical_set_basic", "fg": 1981 }, + { "id": "balance_small", "fg": 1982 }, + { "id": "beaker", "fg": 1983 }, + { "id": "flask_glass", "fg": 1984 }, + { "id": "gradcylinder", "fg": 1985 }, + { "id": "ph_meter", "fg": 1986 }, + { "id": "spectrophotometer", "fg": 1987 }, + { "id": "test_tube", "fg": 1988 }, + { "id": "voltmeter", "fg": 1989 }, + { "id": "grenade", "fg": 2013 }, + { "id": "grenade_act", "fg": 2014 }, + { "id": "grenade_emp", "fg": 2015 }, + { "id": "grenade_emp_act", "fg": 2016 }, + { "id": "grenade_inc", "fg": 2017 }, + { "id": "grenade_inc_act", "fg": 2018 }, + { "id": "boxcutter", "fg": 2022 }, + { "id": "copper_knife", "fg": 2023 }, + { "id": "diveknife", "fg": 2024 }, + { "id": "knife_bread", "fg": 2025 }, + { "id": "knife_butcher", "fg": 2026 }, + { "id": "knife_carving", "fg": 2027 }, + { "id": "knife_chef", "fg": 2028 }, + { "id": "knife_combat", "fg": 2029 }, + { "id": "knife_folding", "fg": 2030 }, + { "id": "knife_hunting", "fg": 2031 }, + { "id": "knife_paring", "fg": 2032 }, + { "id": "knife_rambo", "fg": 2033 }, + { "id": "knife_rm42", "fg": 2034 }, + { "id": "knife_steak", "fg": 2035 }, + { "id": "knife_swissarmy", "fg": 2036 }, + { "id": "knife_trench", "fg": 2037 }, + { "id": "makeshift_knife", "fg": 2038 }, + { "id": "pockknife", "fg": 2039 }, + { "id": "primitive_knife", "fg": 2040 }, + { "id": "throwing_knife", "fg": 2041 }, + { "id": "eyedrops", "fg": 2049 }, + { "id": "baseball", "fg": 2064 }, + { "id": "basketball", "fg": 2065 }, + { "id": "battery_car", "fg": 2066 }, + { "id": "beach_volleyball", "fg": 2067 }, + { "id": "bowling_ball", "fg": 2068 }, + { "id": "cell_phone", "fg": 2069 }, + { "id": "cell_phone_flashlight", "fg": 2070 }, + { "id": "cigar", "fg": 2071 }, + { "id": "cigar_butt", "fg": 2072 }, + { "id": "cigar_lit", "fg": 2073 }, + { "id": "ear_plugs", "fg": 2075 }, + { "id": "fiddlehead_boiled", "fg": 2076 }, + { "id": "fiddlehead_raw", "fg": 2077 }, + { "id": "fiddlehead_sauteed", "fg": 2078 }, + { "id": "flask_hip", "fg": 2079 }, + { "id": "football", "fg": 2080 }, + { "id": "golf_ball", "fg": 2081 }, + { "id": "holo_sight", "fg": 2082 }, + { "id": "indoor_volleyball", "fg": 2083 }, + { "id": "misc_repairkit", "fg": 2084 }, + { "id": "mre_beef_box", "fg": 2085 }, + { "id": "peephole", "fg": 2086 }, + { "id": "portable_game", "fg": 2087 }, + { "id": "puck", "fg": 2088 }, + { "id": "purse", "fg": 2089 }, + { "id": "smokebomb", "fg": 2090 }, + { "id": "smokebomb_act", "fg": 2091 }, + { "id": "suppressor", "fg": 2092 }, + { "id": "tourniquet_upper", "fg": 2093 }, + { "id": "two_way_radio", "fg": 2094 }, + { "id": "wristwatch", "fg": 2095 }, + { "id": "pebble", "fg": 2137 }, + { "id": "pebble_clay", "fg": 2138 }, + { "id": "rock", "fg": 2139 }, + { "id": "rock_flaking", "fg": 2140 }, + { "id": "rock_large", "fg": 2141 }, + { "id": "clay_teapot", "fg": 2153 }, + { "id": "towel", "fg": 2182 }, + { "id": "towel_soiled", "fg": 2183 }, + { "id": "towel_wet", "fg": 2184 }, + { "id": "battery_charger", "fg": 2185 }, + { "id": "recharge_station", "fg": 2186 } ] }, { "file": "normal.png", - "//": "range 2128 to 4559", + "//": "range 2208 to 4719", "tiles": [ - { "id": "fd_fire", "fg": 2129 }, - { "id": "f_plant_seed", "fg": 2135, "rotates": false }, - { "id": "f_plant_seedling", "fg": 2136, "rotates": false }, - { "id": "f_plant_mature", "fg": 2134, "rotates": false }, - { "id": "f_plant_harvest", "fg": 2133, "rotates": false }, - { "id": "tr_rollmat", "fg": 2138 }, - { "id": "tr_fur_rollmat", "fg": 2137 }, - { "id": "f_air_conditioner", "fg": 2139 }, - { "id": "f_armchair", "rotates": true, "fg": [ 2142, 2143, 2141, 2140 ] }, - { "id": "f_ash", "fg": 2144 }, - { "id": "f_barricade_road", "fg": 2145 }, + { "id": "fd_fire", "fg": 2209 }, + { "id": "f_plant_seed", "fg": 2215, "rotates": false }, + { "id": "f_plant_seedling", "fg": 2216, "rotates": false }, + { "id": "f_plant_mature", "fg": 2214, "rotates": false }, + { "id": "f_plant_harvest", "fg": 2213, "rotates": false }, + { "id": "tr_rollmat", "fg": 2218 }, + { "id": "tr_fur_rollmat", "fg": 2217 }, + { "id": "f_air_conditioner", "fg": 2219 }, + { "id": "f_armchair", "rotates": true, "fg": [ 2222, 2223, 2221, 2220 ] }, + { "id": "f_ash", "fg": 2224 }, + { "id": "f_barricade_road", "fg": 2225 }, { "id": "f_bathtub", "multitile": true, - "fg": 2161, + "fg": 2241, "additional_tiles": [ - { "id": "center", "fg": 2146 }, - { "id": "corner", "fg": [ 2148, 2150, 2149, 2147 ] }, - { "id": "t_connection", "fg": [ 2158, 2160, 2159, 2157 ] }, - { "id": "edge", "fg": [ 2152, 2151 ] }, - { "id": "end_piece", "fg": [ 2154, 2156, 2155, 2153 ] }, - { "id": "unconnected", "fg": [ 2161, 2161 ] } + { "id": "center", "fg": 2226 }, + { "id": "corner", "fg": [ 2228, 2230, 2229, 2227 ] }, + { "id": "t_connection", "fg": [ 2238, 2240, 2239, 2237 ] }, + { "id": "edge", "fg": [ 2232, 2231 ] }, + { "id": "end_piece", "fg": [ 2234, 2236, 2235, 2233 ] }, + { "id": "unconnected", "fg": [ 2241, 2241 ] } ] }, { "id": "f_bed", "multitile": true, - "fg": 2177, + "fg": 2257, "additional_tiles": [ - { "id": "center", "fg": 2162 }, - { "id": "corner", "fg": [ 2164, 2166, 2165, 2163 ] }, - { "id": "t_connection", "fg": [ 2174, 2176, 2175, 2173 ] }, - { "id": "edge", "fg": [ 2168, 2167 ] }, - { "id": "end_piece", "fg": [ 2170, 2172, 2171, 2169 ] }, - { "id": "unconnected", "fg": [ 2177, 2177 ] } + { "id": "center", "fg": 2242 }, + { "id": "corner", "fg": [ 2244, 2246, 2245, 2243 ] }, + { "id": "t_connection", "fg": [ 2254, 2256, 2255, 2253 ] }, + { "id": "edge", "fg": [ 2248, 2247 ] }, + { "id": "end_piece", "fg": [ 2250, 2252, 2251, 2249 ] }, + { "id": "unconnected", "fg": [ 2257, 2257 ] } ] }, { "id": "f_bench", "multitile": true, - "fg": 2193, + "fg": 2273, "additional_tiles": [ - { "id": "center", "fg": 2178 }, - { "id": "corner", "fg": [ 2180, 2182, 2181, 2179 ] }, - { "id": "t_connection", "fg": [ 2190, 2192, 2191, 2189 ] }, - { "id": "edge", "fg": [ 2184, 2183 ] }, - { "id": "end_piece", "fg": [ 2186, 2188, 2187, 2185 ] }, - { "id": "unconnected", "fg": [ 2193, 2193 ] } + { "id": "center", "fg": 2258 }, + { "id": "corner", "fg": [ 2260, 2262, 2261, 2259 ] }, + { "id": "t_connection", "fg": [ 2270, 2272, 2271, 2269 ] }, + { "id": "edge", "fg": [ 2264, 2263 ] }, + { "id": "end_piece", "fg": [ 2266, 2268, 2267, 2265 ] }, + { "id": "unconnected", "fg": [ 2273, 2273 ] } ] }, - { "id": "f_bluebell", "fg": [ { "weight": 1, "sprite": 2195 }, { "weight": 2, "sprite": 2196 } ] }, - { "id": "f_boulder_medium", "fg": 2197 }, - { "id": "f_boulder_small", "fg": 2198 }, - { "id": "f_generator_broken", "fg": 2199 }, - { "id": "t_generator_broken", "fg": 2199, "bg": 3235 }, - { "id": "f_bulletin", "fg": 2200 }, - { "id": [ "f_canvas_door", "f_large_canvas_door" ], "fg": 2201 }, - { "id": [ "f_canvas_door_o", "f_large_canvas_door_o" ], "fg": 2202 }, + { "id": "f_bluebell", "fg": [ { "weight": 1, "sprite": 2275 }, { "weight": 2, "sprite": 2276 } ] }, + { "id": "f_boulder_medium", "fg": 2277 }, + { "id": "f_boulder_small", "fg": 2278 }, + { "id": "f_generator_broken", "fg": 2279 }, + { "id": "t_generator_broken", "fg": 2279, "bg": 3394 }, + { "id": "f_bulletin", "fg": 2280 }, + { "id": [ "f_canvas_door", "f_large_canvas_door" ], "fg": 2281 }, + { "id": [ "f_canvas_door_o", "f_large_canvas_door_o" ], "fg": 2282 }, { "id": [ "f_canvas_wall", "f_large_canvas_wall" ], "multitile": true, - "fg": 2218, + "fg": 2298, "additional_tiles": [ - { "id": "center", "fg": 2203 }, - { "id": "corner", "fg": [ 2205, 2207, 2206, 2204 ] }, - { "id": "t_connection", "fg": [ 2215, 2217, 2216, 2214 ] }, - { "id": "edge", "fg": [ 2209, 2208 ] }, - { "id": "end_piece", "fg": [ 2211, 2213, 2212, 2210 ] }, - { "id": "unconnected", "fg": 2218 } + { "id": "center", "fg": 2283 }, + { "id": "corner", "fg": [ 2285, 2287, 2286, 2284 ] }, + { "id": "t_connection", "fg": [ 2295, 2297, 2296, 2294 ] }, + { "id": "edge", "fg": [ 2289, 2288 ] }, + { "id": "end_piece", "fg": [ 2291, 2293, 2292, 2290 ] }, + { "id": "unconnected", "fg": 2298 } ] }, - { "id": "f_cardboard_box", "fg": 2219 }, - { "id": "f_centrifuge", "fg": 2220 }, - { "id": "t_centrifuge", "fg": 2220, "bg": 3464 }, - { "id": "f_chair", "rotates": true, "fg": [ 2223, 2224, 2222, 2221 ] }, - { "id": "f_chamomile", "fg": 2225 }, - { "id": "f_compact_ASRG_containment", "fg": 2227 }, + { "id": "f_cardboard_box", "fg": 2299 }, + { "id": "f_centrifuge", "fg": 2300 }, + { "id": "t_centrifuge", "fg": 2300, "bg": 3623 }, + { "id": "f_chair", "rotates": true, "fg": [ 2303, 2304, 2302, 2301 ] }, + { "id": "f_chamomile", "fg": 2305 }, + { "id": "f_compact_ASRG_containment", "fg": 2307 }, { "id": "f_counter", "multitile": true, - "fg": 2243, + "fg": 2323, "additional_tiles": [ - { "id": "center", "fg": 2228 }, - { "id": "corner", "fg": [ 2230, 2232, 2231, 2229 ] }, - { "id": "t_connection", "fg": [ 2240, 2242, 2241, 2239 ] }, - { "id": "edge", "fg": [ 2234, 2233 ] }, - { "id": "end_piece", "fg": [ 2236, 2238, 2237, 2235 ] }, - { "id": "unconnected", "fg": [ 2243, 2243 ] } + { "id": "center", "fg": 2308 }, + { "id": "corner", "fg": [ 2310, 2312, 2311, 2309 ] }, + { "id": "t_connection", "fg": [ 2320, 2322, 2321, 2319 ] }, + { "id": "edge", "fg": [ 2314, 2313 ] }, + { "id": "end_piece", "fg": [ 2316, 2318, 2317, 2315 ] }, + { "id": "unconnected", "fg": [ 2323, 2323 ] } ] }, { "id": "f_cupboard", "multitile": true, - "fg": 2259, + "fg": 2339, "additional_tiles": [ - { "id": "center", "fg": 2244 }, - { "id": "corner", "fg": [ 2246, 2248, 2247, 2245 ] }, - { "id": "t_connection", "fg": [ 2256, 2258, 2257, 2255 ] }, - { "id": "edge", "fg": [ 2250, 2249 ] }, - { "id": "end_piece", "fg": [ 2252, 2254, 2253, 2251 ] }, - { "id": "unconnected", "fg": [ 2259, 2259 ] } + { "id": "center", "fg": 2324 }, + { "id": "corner", "fg": [ 2326, 2328, 2327, 2325 ] }, + { "id": "t_connection", "fg": [ 2336, 2338, 2337, 2335 ] }, + { "id": "edge", "fg": [ 2330, 2329 ] }, + { "id": "end_piece", "fg": [ 2332, 2334, 2333, 2331 ] }, + { "id": "unconnected", "fg": [ 2339, 2339 ] } ] }, - { "id": "f_dahlia", "fg": [ { "weight": 1, "sprite": 2260 }, { "weight": 2, "sprite": 2261 } ] }, - { "id": "f_dandelion_season_spring", "fg": 2262 }, - { "id": "f_dandelion_season_summer", "fg": 2264 }, - { "id": "f_dandelion_season_autumn", "fg": 2263 }, - { "id": "f_dandelion_season_winter", "fg": 2265 }, - { "id": "f_datura", "fg": 2266 }, + { "id": "f_dahlia", "fg": [ { "weight": 1, "sprite": 2340 }, { "weight": 2, "sprite": 2341 } ] }, + { "id": "f_dandelion_season_spring", "fg": 2342 }, + { "id": "f_dandelion_season_summer", "fg": 2344 }, + { "id": "f_dandelion_season_autumn", "fg": 2343 }, + { "id": "f_dandelion_season_winter", "fg": 2345 }, + { "id": "f_datura", "fg": 2346 }, { "id": "f_desk", "multitile": true, - "fg": 2282, - "additional_tiles": [ - { "id": "center", "fg": 2267 }, - { "id": "corner", "fg": [ 2269, 2271, 2270, 2268 ] }, - { "id": "t_connection", "fg": [ 2279, 2281, 2280, 2278 ] }, - { "id": "edge", "fg": [ 2273, 2272 ] }, - { "id": "end_piece", "fg": [ 2275, 2277, 2276, 2274 ] }, - { "id": "unconnected", "fg": [ 2282, 2282 ] } - ] - }, - { "id": "f_displaycase", "fg": 2283 }, - { "id": "f_entertainment_center", "fg": 2284 }, - { "id": "f_filing_cabinet", "fg": 2285 }, - { "id": "f_firering", "fg": 2286 }, - { "id": "f_flower_spurge", "fg": 2287 }, - { "id": "f_flower_tulip", "fg": [ { "weight": 1, "sprite": 2288 }, { "weight": 2, "sprite": 2289 } ] }, - { "id": "f_grave_stone", "fg": [ { "weight": 1, "sprite": 2290 }, { "weight": 1, "sprite": 2291 } ] }, - { "id": "f_grave_stone_old", "fg": [ { "weight": 1, "sprite": 2292 }, { "weight": 1, "sprite": 2293 } ] }, - { "id": [ "f_groundsheet", "f_large_groundsheet", "f_center_groundsheet", "f_fema_groundsheet" ], "fg": 2294 }, - { "id": "f_gunsafe_ml", "fg": 2297 }, - { "id": "f_gunsafe_mj", "fg": 2296 }, - { "id": "f_gun_safe_el", "fg": 2295 }, - { "id": "f_hay", "fg": 2298 }, - { "id": "f_indoor_plant", "fg": 2299 }, - { "id": "f_indoor_plant_y", "fg": 2300 }, - { "id": [ "f_indoor_plant_y_season_autumn", "f_indoor_plant_y_season_winter" ], "fg": 2301 }, - { "id": "f_leather_tarp", "fg": 2302 }, - { "id": "f_mailbox", "fg": 2303 }, - { "id": "f_metal_crate_r", "fg": 2306 }, - { "id": "f_metal_crate_c", "fg": 2304 }, - { "id": "f_metal_crate_o", "fg": 2305 }, + "fg": 2362, + "additional_tiles": [ + { "id": "center", "fg": 2347 }, + { "id": "corner", "fg": [ 2349, 2351, 2350, 2348 ] }, + { "id": "t_connection", "fg": [ 2359, 2361, 2360, 2358 ] }, + { "id": "edge", "fg": [ 2353, 2352 ] }, + { "id": "end_piece", "fg": [ 2355, 2357, 2356, 2354 ] }, + { "id": "unconnected", "fg": [ 2362, 2362 ] } + ] + }, + { "id": "f_displaycase", "fg": 2363 }, + { "id": "f_entertainment_center", "fg": 2364 }, + { "id": "f_filing_cabinet", "fg": 2365 }, + { "id": "f_firering", "fg": 2366 }, + { "id": "f_flower_spurge", "fg": 2367 }, + { "id": "f_flower_tulip", "fg": [ { "weight": 1, "sprite": 2368 }, { "weight": 2, "sprite": 2369 } ] }, + { "id": "f_grave_stone", "fg": [ { "weight": 1, "sprite": 2370 }, { "weight": 1, "sprite": 2371 } ] }, + { "id": "f_grave_stone_old", "fg": [ { "weight": 1, "sprite": 2372 }, { "weight": 1, "sprite": 2373 } ] }, + { "id": [ "f_groundsheet", "f_large_groundsheet", "f_center_groundsheet", "f_fema_groundsheet" ], "fg": 2374 }, + { "id": "f_gunsafe_ml", "fg": 2377 }, + { "id": "f_gunsafe_mj", "fg": 2376 }, + { "id": "f_gun_safe_el", "fg": 2375 }, + { "id": "f_hay", "fg": 2378 }, + { "id": "f_indoor_plant", "fg": 2379 }, + { "id": "f_indoor_plant_y", "fg": 2380 }, + { "id": [ "f_indoor_plant_y_season_autumn", "f_indoor_plant_y_season_winter" ], "fg": 2381 }, + { "id": "f_leather_tarp", "fg": 2382 }, + { "id": "f_mailbox", "fg": 2383 }, + { "id": "f_metal_crate_r", "fg": 2386 }, + { "id": "f_metal_crate_c", "fg": 2384 }, + { "id": "f_metal_crate_o", "fg": 2385 }, { "id": "f_metal_table", "multitile": true, - "fg": 2322, + "fg": 2402, "additional_tiles": [ - { "id": "center", "fg": 2307 }, - { "id": "corner", "fg": [ 2309, 2311, 2310, 2308 ] }, - { "id": "t_connection", "fg": [ 2319, 2321, 2320, 2318 ] }, - { "id": "edge", "fg": [ 2313, 2312 ] }, - { "id": "end_piece", "fg": [ 2315, 2317, 2316, 2314 ] }, - { "id": "unconnected", "fg": [ 2322, 2322 ] } + { "id": "center", "fg": 2387 }, + { "id": "corner", "fg": [ 2389, 2391, 2390, 2388 ] }, + { "id": "t_connection", "fg": [ 2399, 2401, 2400, 2398 ] }, + { "id": "edge", "fg": [ 2393, 2392 ] }, + { "id": "end_piece", "fg": [ 2395, 2397, 2396, 2394 ] }, + { "id": "unconnected", "fg": [ 2402, 2402 ] } ] }, - { "id": "f_alien_anemone", "fg": 2323 }, - { "id": "f_alien_table", "fg": 2324 }, - { "id": "f_mustard_season_spring", "fg": 2326, "rotates": false }, - { "id": "f_mustard_season_summer", "fg": 2327, "rotates": false }, - { "id": "f_mustard_season_autumn", "fg": 2325, "rotates": false }, - { "id": "f_mustard_season_winter", "fg": 2328, "rotates": false }, - { "id": "f_mutpoppy", "fg": 2329 }, + { "id": "f_alien_anemone", "fg": 2403 }, + { "id": "f_alien_table", "fg": 2404 }, + { "id": "f_mustard_season_spring", "fg": 2406, "rotates": false }, + { "id": "f_mustard_season_summer", "fg": 2407, "rotates": false }, + { "id": "f_mustard_season_autumn", "fg": 2405, "rotates": false }, + { "id": "f_mustard_season_winter", "fg": 2408, "rotates": false }, + { "id": "f_mutpoppy", "fg": 2409 }, { "id": "f_planter", "multitile": true, - "fg": 2345, + "fg": 2425, "additional_tiles": [ - { "id": "center", "fg": 2330 }, - { "id": "corner", "fg": [ 2332, 2334, 2333, 2331 ] }, - { "id": "t_connection", "fg": [ 2342, 2344, 2343, 2341 ] }, - { "id": "edge", "fg": [ 2336, 2335 ] }, - { "id": "end_piece", "fg": [ 2338, 2340, 2339, 2337 ] }, - { "id": "unconnected", "fg": [ 2345, 2345 ] } + { "id": "center", "fg": 2410 }, + { "id": "corner", "fg": [ 2412, 2414, 2413, 2411 ] }, + { "id": "t_connection", "fg": [ 2422, 2424, 2423, 2421 ] }, + { "id": "edge", "fg": [ 2416, 2415 ] }, + { "id": "end_piece", "fg": [ 2418, 2420, 2419, 2417 ] }, + { "id": "unconnected", "fg": [ 2425, 2425 ] } ] }, { "id": "f_planter_harvest", "multitile": true, - "fg": 2361, + "fg": 2441, "additional_tiles": [ - { "id": "center", "fg": 2346 }, - { "id": "corner", "fg": [ 2348, 2350, 2349, 2347 ] }, - { "id": "t_connection", "fg": [ 2358, 2360, 2359, 2357 ] }, - { "id": "edge", "fg": [ 2352, 2351 ] }, - { "id": "end_piece", "fg": [ 2354, 2356, 2355, 2353 ] }, - { "id": "unconnected", "fg": [ 2361, 2361 ] } + { "id": "center", "fg": 2426 }, + { "id": "corner", "fg": [ 2428, 2430, 2429, 2427 ] }, + { "id": "t_connection", "fg": [ 2438, 2440, 2439, 2437 ] }, + { "id": "edge", "fg": [ 2432, 2431 ] }, + { "id": "end_piece", "fg": [ 2434, 2436, 2435, 2433 ] }, + { "id": "unconnected", "fg": [ 2441, 2441 ] } ] }, { "id": "f_planter_mature", "multitile": true, - "fg": 2377, + "fg": 2457, "additional_tiles": [ - { "id": "center", "fg": 2362 }, - { "id": "corner", "fg": [ 2364, 2366, 2365, 2363 ] }, - { "id": "t_connection", "fg": [ 2374, 2376, 2375, 2373 ] }, - { "id": "edge", "fg": [ 2368, 2367 ] }, - { "id": "end_piece", "fg": [ 2370, 2372, 2371, 2369 ] }, - { "id": "unconnected", "fg": [ 2377, 2377 ] } + { "id": "center", "fg": 2442 }, + { "id": "corner", "fg": [ 2444, 2446, 2445, 2443 ] }, + { "id": "t_connection", "fg": [ 2454, 2456, 2455, 2453 ] }, + { "id": "edge", "fg": [ 2448, 2447 ] }, + { "id": "end_piece", "fg": [ 2450, 2452, 2451, 2449 ] }, + { "id": "unconnected", "fg": [ 2457, 2457 ] } ] }, { "id": "f_planter_seedling", "multitile": true, - "fg": 2393, + "fg": 2473, "additional_tiles": [ - { "id": "center", "fg": 2378 }, - { "id": "corner", "fg": [ 2380, 2382, 2381, 2379 ] }, - { "id": "t_connection", "fg": [ 2390, 2392, 2391, 2389 ] }, - { "id": "edge", "fg": [ 2384, 2383 ] }, - { "id": "end_piece", "fg": [ 2386, 2388, 2387, 2385 ] }, - { "id": "unconnected", "fg": [ 2393, 2393 ] } + { "id": "center", "fg": 2458 }, + { "id": "corner", "fg": [ 2460, 2462, 2461, 2459 ] }, + { "id": "t_connection", "fg": [ 2470, 2472, 2471, 2469 ] }, + { "id": "edge", "fg": [ 2464, 2463 ] }, + { "id": "end_piece", "fg": [ 2466, 2468, 2467, 2465 ] }, + { "id": "unconnected", "fg": [ 2473, 2473 ] } ] }, - { "id": "f_plastic_groundsheet", "fg": 2394 }, + { "id": "f_plastic_groundsheet", "fg": 2474 }, { "id": "f_pool_table", "multitile": true, - "fg": 2410, + "fg": 2490, "additional_tiles": [ - { "id": "center", "fg": 2395 }, - { "id": "corner", "fg": [ 2397, 2399, 2398, 2396 ] }, - { "id": "t_connection", "fg": [ 2407, 2409, 2408, 2406 ] }, - { "id": "edge", "fg": [ 2401, 2400 ] }, - { "id": "end_piece", "fg": [ 2403, 2405, 2404, 2402 ] }, - { "id": "unconnected", "fg": 2410 } + { "id": "center", "fg": 2475 }, + { "id": "corner", "fg": [ 2477, 2479, 2478, 2476 ] }, + { "id": "t_connection", "fg": [ 2487, 2489, 2488, 2486 ] }, + { "id": "edge", "fg": [ 2481, 2480 ] }, + { "id": "end_piece", "fg": [ 2483, 2485, 2484, 2482 ] }, + { "id": "unconnected", "fg": 2490 } ] }, - { "id": "f_rack", "fg": 2411 }, - { "id": "f_rack_wood", "fg": 2412 }, - { "id": "f_recycle_bin", "fg": 2413 }, - { "id": "f_rubble", "fg": 2414 }, - { "id": "f_rubble_rock", "fg": 2415 }, - { "id": "f_sign", "fg": 2416 }, + { "id": "f_rack", "fg": 2491 }, + { "id": "f_rack_wood", "fg": 2492 }, + { "id": "f_recycle_bin", "fg": 2493 }, + { "id": "f_rubble", "fg": 2494 }, + { "id": "f_rubble_rock", "fg": 2495 }, + { "id": "f_sign", "fg": 2496 }, { "id": "f_sofa", "multitile": true, - "fg": 2432, + "fg": 2512, "additional_tiles": [ - { "id": "center", "fg": 2417 }, - { "id": "corner", "fg": [ 2419, 2421, 2420, 2418 ] }, - { "id": "t_connection", "fg": [ 2429, 2431, 2430, 2428 ] }, - { "id": "edge", "fg": [ 2423, 2422 ] }, - { "id": "end_piece", "fg": [ 2425, 2427, 2426, 2424 ] }, - { "id": "unconnected", "fg": [ 2432, 2432 ] } + { "id": "center", "fg": 2497 }, + { "id": "corner", "fg": [ 2499, 2501, 2500, 2498 ] }, + { "id": "t_connection", "fg": [ 2509, 2511, 2510, 2508 ] }, + { "id": "edge", "fg": [ 2503, 2502 ] }, + { "id": "end_piece", "fg": [ 2505, 2507, 2506, 2504 ] }, + { "id": "unconnected", "fg": [ 2512, 2512 ] } ] }, - { "id": "f_stool", "fg": 2433 }, - { "id": "f_sunflower_season_spring", "fg": 2434 }, - { "id": "f_sunflower_season_winter", "fg": 2435 }, + { "id": "f_stool", "fg": 2513 }, + { "id": "f_sunflower_season_spring", "fg": 2514 }, + { "id": "f_sunflower_season_winter", "fg": 2515 }, { "id": "f_table", "multitile": true, - "fg": 2451, + "fg": 2531, "additional_tiles": [ - { "id": "center", "fg": 2436 }, - { "id": "corner", "fg": [ 2438, 2440, 2439, 2437 ] }, - { "id": "t_connection", "fg": [ 2448, 2450, 2449, 2447 ] }, - { "id": "edge", "fg": [ 2442, 2441 ] }, - { "id": "end_piece", "fg": [ 2444, 2446, 2445, 2443 ] }, - { "id": "unconnected", "fg": [ 2451, 2451 ] } + { "id": "center", "fg": 2516 }, + { "id": "corner", "fg": [ 2518, 2520, 2519, 2517 ] }, + { "id": "t_connection", "fg": [ 2528, 2530, 2529, 2527 ] }, + { "id": "edge", "fg": [ 2522, 2521 ] }, + { "id": "end_piece", "fg": [ 2524, 2526, 2525, 2523 ] }, + { "id": "unconnected", "fg": [ 2531, 2531 ] } ] }, - { "id": "f_toilet", "fg": 2452 }, - { "id": "f_trashcan", "fg": 2453 }, - { "id": "f_wreckage", "fg": 2454 }, - { "id": "f_lilypad", "fg": 2455 }, - { "id": "f_small_satelitte_dish", "fg": 2459 }, - { "id": "f_TV_antenna", "fg": 2456 }, - { "id": "f_cellphone_booster", "fg": 2457 }, - { "id": "f_vent_pipe", "fg": 2460 }, - { "id": "f_roof_turbine_vent", "fg": 2458 }, + { "id": "f_toilet", "fg": 2532 }, + { "id": "f_trashcan", "fg": 2533 }, + { "id": "f_wreckage", "fg": 2534 }, + { "id": "f_lilypad", "fg": 2535 }, + { "id": "f_small_satelitte_dish", "fg": 2539 }, + { "id": "f_TV_antenna", "fg": 2536 }, + { "id": "f_cellphone_booster", "fg": 2537 }, + { "id": "f_vent_pipe", "fg": 2540 }, + { "id": "f_roof_turbine_vent", "fg": 2538 }, { "id": "f_sandbag_half", "multitile": true, - "fg": 2476, - "additional_tiles": [ - { "id": "center", "fg": 2461 }, - { "id": "corner", "fg": [ 2463, 2465, 2464, 2462 ] }, - { "id": "t_connection", "fg": [ 2473, 2475, 2474, 2472 ] }, - { "id": "edge", "fg": [ 2467, 2466 ] }, - { "id": "end_piece", "fg": [ 2469, 2471, 2470, 2468 ] }, - { "id": "unconnected", "fg": [ 2476, 2476 ] } - ] - }, - { "id": "1st_aid", "fg": 2477 }, - { "id": "2x4", "fg": 2478 }, - { "id": "halberd", "fg": 2493 }, - { "id": "halberd_fake", "fg": 2493 }, - { "id": "nodachi", "fg": 2495 }, - { "id": "nodachi_fake", "fg": 2495 }, - { "id": "nodachi_inferior", "fg": 2495 }, - { "id": "ak74", "fg": 2498 }, - { "id": "ar15", "fg": 2622 }, - { "id": "arming_sword", "fg": 2623 }, - { "id": "art_sphere", "fg": 2638 }, - { "id": "art_rod", "fg": 2636 }, - { "id": "art_teardrop", "fg": 2640 }, - { "id": "art_lamp", "fg": 2632 }, - { "id": "art_snake", "fg": 2637 }, - { "id": "art_disc", "fg": 2629 }, - { "id": "art_beads", "fg": 2626 }, - { "id": "art_napkin", "fg": 2633 }, - { "id": "art_urchin", "fg": 2642 }, - { "id": "art_jelly", "fg": 2630 }, - { "id": "art_spiral", "fg": 2639 }, - { "id": "art_pin", "fg": 2634 }, - { "id": "art_tube", "fg": 2641 }, - { "id": "art_pyramid", "fg": 2635 }, - { "id": "art_crystal", "fg": 2628 }, - { "id": "art_knot", "fg": 2631 }, - { "id": "art_crescent", "fg": 2627 }, - { "id": "altered_teapot", "fg": 2624 }, - { "id": "architect_cube", "fg": 2625 }, - { "id": "fire_ax", "fg": 2643 }, - { "id": "ax", "fg": 2646 }, - { "id": "hatchet", "fg": 2644 }, - { "id": "backpack", "fg": 2647 }, - { "id": "duffelbag", "fg": 2648 }, - { "id": "molle_pack", "fg": 2649 }, - { "id": [ "rifle_case_soft_leather", "rifle_case_xl_soft_leather" ], "fg": 2652 }, - { "id": "bag_canvas", "fg": 2655 }, - { "id": "bat", "fg": 2656 }, - { "id": "bat_metal", "fg": 2657 }, - { "id": "blanket", "fg": 2658 }, - { "id": "down_blanket", "fg": 2659 }, - { "id": "electric_blanket", "fg": 2660 }, - { "id": "board_trap", "fg": 2661 }, - { "id": "box_large", "fg": 2662 }, - { "id": "box_medium", "fg": 2663 }, - { "id": "broom", "fg": 2664 }, - { "id": "bwirebat", "fg": 2665 }, - { "id": "cattlefodder", "fg": 2667 }, - { "id": "chainsaw_off", "fg": 2668 }, - { "id": "axe_ring", "fg": 2675 }, - { "id": "balclava", "fg": 2676 }, - { "id": "beret", "fg": 2677 }, - { "id": "boots", "fg": 2678 }, - { "id": "boxer_briefs", "fg": 2679 }, - { "id": "boxer_shorts", "fg": 2680 }, - { "id": "boy_shorts", "fg": 2681 }, - { "id": "bra", "fg": 2682 }, - { "id": "briefs", "fg": 2683 }, - { "id": "bscabbard", "fg": 2684 }, - { "id": "corset", "fg": 2687 }, - { "id": "cowboy_hat", "fg": 2688 }, - { "id": "dress_shoes", "fg": 2689 }, - { "id": "hat_ball", "fg": 2690 }, - { "id": "hat_cotton", "fg": 2691 }, - { "id": "hat_fur", "fg": 2692 }, - { "id": "hat_knit", "fg": 2694 }, - { "id": "hat_noise_cancelling", "fg": 2695 }, - { "id": "helmet_barbute", "fg": 2696 }, - { "id": "helmet_chitin", "fg": 2697 }, - { "id": "helmet_kabuto", "fg": 2698 }, - { "id": "holster", "fg": 2699 }, - { "id": "hoodie", "fg": 2700 }, - { "id": "jeans", "fg": 2703 }, - { "id": "leather_belt", "fg": 2704 }, - { "id": "longshirt", "fg": 2705 }, - { "id": "maid_dress", "fg": 2706 }, - { "id": "maid_hat", "fg": 2707 }, - { "id": "mask_dust", "fg": 2708 }, - { "id": "panties", "fg": 2709 }, - { "id": "pants", "fg": 2710 }, - { "id": "pants_cargo", "fg": 2711 }, - { "id": "polo_shirt", "fg": 2712 }, - { "id": "ragpouch", "fg": 2713 }, - { "id": "scabbard", "fg": 2714 }, - { "id": "sneakers", "fg": 2716 }, - { "id": "socks", "fg": 2717 }, - { "id": "spearsling", "fg": 2718 }, - { "id": "stockings", "fg": 2720 }, - { "id": "sweater", "fg": 2723 }, - { "id": "sweatshirt", "fg": 2724 }, - { "id": "tank_top", "fg": 2725 }, - { "id": "tool_belt", "fg": 2726 }, - { "id": "tshirt", "fg": 2727 }, - { "id": "turban", "fg": 2728 }, - { "id": "undershirt", "fg": 2729 }, - { "id": "coat_lab", "fg": 2685 }, - { "id": "coat_rain", "fg": 2686 }, - { "id": "sports_bra", "fg": 2719 }, - { "id": "skirt", "fg": 2715 }, - { "id": "jacket_light", "fg": 2702 }, - { "id": "jacket_army", "fg": 2701 }, - { "id": "hat_hard", "fg": 2693 }, - { "id": "striped_pants", "fg": 2721 }, - { "id": "striped_shirt", "fg": 2722 }, - { "id": "cloak", "fg": 2730 }, - { "id": "cloak_wool", "fg": 2733 }, - { "id": "cloak_leather", "fg": 2732 }, - { "id": "cloak_fur", "fg": 2731 }, - { "id": "coffeemaker", "fg": 2734 }, - { "id": "contacts", "fg": 2735 }, - { "id": "corpse", "fg": 2736 }, - { "id": "corpse_generic_human", "fg": 2737 }, - { "id": "crossbow", "fg": 2738 }, - { "id": "crowbar", "fg": 2739 }, - { "id": "filter_air", "fg": 2740 }, - { "id": "fish_bait", "fg": 2741 }, - { "id": "corpse_mon_fish_tiny", "fg": 2745 }, - { "id": "corpse_mon_fish_small", "fg": 2744 }, - { "id": "corpse_mon_fish_medium", "fg": 2743 }, - { "id": "corpse_mon_fish_large", "fg": 2742 }, - { "id": "fish_trap", "fg": 2746 }, - { "id": "fishing_rod_basic", "fg": 2747 }, - { "id": "fishing_rod_professional", "fg": 2748 }, - { "id": "forge", "fg": 2750 }, - { "id": "char_forge", "fg": 2749 }, - { "id": "glass_shard", "fg": 2751 }, - { "id": [ "glock_17", "glock_19", "glock_18c", "glock_22", "glock_31" ], "fg": 2752 }, - { "id": "hoboreel", "fg": 2753 }, - { "id": "hydrogen_tank", "fg": 2754 }, - { "id": "leather_tarp", "fg": 2755 }, - { "id": "water", "fg": 2766 }, - { "id": "water_clean", "fg": 2767 }, - { "id": "gasoline", "fg": 2761 }, - { "id": "diesel", "fg": 2759 }, - { "id": "biodiesel", "fg": 2757 }, - { "id": "flamethrower_fuel", "fg": 2760 }, - { "id": "avgas", "fg": 2756 }, - { "id": "lamp_oil", "fg": 2763 }, - { "id": "motor_oil", "fg": 2764 }, - { "id": "napalm", "fg": 2765 }, - { "id": "gelled_gasoline", "fg": 2762 }, - { "id": "blood", "fg": 2758 }, - { "id": "log", "fg": 2768 }, - { "id": "longbow", "fg": 2769 }, - { "id": "lucern_hammer", "fg": 2770 }, - { "id": "m79", "fg": 2771 }, - { "id": "marble", "fg": 2772 }, - { "id": "matches", "fg": 2773 }, - { "id": "meat", "fg": 2774 }, - { "id": "microwave", "fg": 2775 }, - { "id": "mjolnir", "fg": 2776 }, - { "id": "mop", "fg": 2777 }, - { "id": "mp5mag", "fg": 2778 }, - { "id": "nail", "fg": 2783 }, - { "id": "nailbat", "fg": 2784 }, - { "id": "nailboard", "fg": 2785 }, - { "id": "needle_bone", "fg": 2786 }, - { "id": "needle_curved", "fg": 2787 }, - { "id": "needle_wood", "fg": 2788 }, - { "id": "many_years_old_newspaper", "fg": 2789 }, - { "id": "years_old_newspaper", "fg": 2794 }, - { "id": "months_old_newspaper", "fg": 2790 }, - { "id": "newest_newspaper", "fg": 2791 }, - { "id": "one_year_old_newspaper", "fg": 2792 }, - { "id": "weeks_old_newspaper", "fg": 2793 }, - { "id": "pan", "fg": 2795 }, - { "id": "2h_flail_wood", "fg": 2796 }, - { "id": "pillow", "fg": 2798 }, - { "id": "down_pillow", "fg": 2797 }, - { "id": "pine_bough", "fg": 2799 }, - { "id": "pinecone", "fg": 2800 }, + "fg": 2556, + "additional_tiles": [ + { "id": "center", "fg": 2541 }, + { "id": "corner", "fg": [ 2543, 2545, 2544, 2542 ] }, + { "id": "t_connection", "fg": [ 2553, 2555, 2554, 2552 ] }, + { "id": "edge", "fg": [ 2547, 2546 ] }, + { "id": "end_piece", "fg": [ 2549, 2551, 2550, 2548 ] }, + { "id": "unconnected", "fg": [ 2556, 2556 ] } + ] + }, + { "id": "1st_aid", "fg": 2557 }, + { "id": "2x4", "fg": 2558 }, + { "id": "halberd", "fg": 2573 }, + { "id": "halberd_fake", "fg": 2573 }, + { "id": "nodachi", "fg": 2576 }, + { "id": "nodachi_fake", "fg": 2576 }, + { "id": "nodachi_inferior", "fg": 2576 }, + { "id": "ak74", "fg": 2579 }, + { "id": "ar15", "fg": 2703 }, + { "id": "arming_sword", "fg": 2704 }, + { "id": "art_sphere", "fg": 2719 }, + { "id": "art_rod", "fg": 2717 }, + { "id": "art_teardrop", "fg": 2721 }, + { "id": "art_lamp", "fg": 2713 }, + { "id": "art_snake", "fg": 2718 }, + { "id": "art_disc", "fg": 2710 }, + { "id": "art_beads", "fg": 2707 }, + { "id": "art_napkin", "fg": 2714 }, + { "id": "art_urchin", "fg": 2723 }, + { "id": "art_jelly", "fg": 2711 }, + { "id": "art_spiral", "fg": 2720 }, + { "id": "art_pin", "fg": 2715 }, + { "id": "art_tube", "fg": 2722 }, + { "id": "art_pyramid", "fg": 2716 }, + { "id": "art_crystal", "fg": 2709 }, + { "id": "art_knot", "fg": 2712 }, + { "id": "art_crescent", "fg": 2708 }, + { "id": "altered_teapot", "fg": 2705 }, + { "id": "architect_cube", "fg": 2706 }, + { "id": "fire_ax", "fg": 2724 }, + { "id": "ax", "fg": 2727 }, + { "id": "hatchet", "fg": 2725 }, + { "id": "backpack", "fg": 2728 }, + { "id": "duffelbag", "fg": 2729 }, + { "id": "molle_pack", "fg": 2730 }, + { "id": [ "rifle_case_soft_leather", "rifle_case_xl_soft_leather" ], "fg": 2733 }, + { "id": "bag_canvas", "fg": 2736 }, + { "id": "bat", "fg": 2737 }, + { "id": "bat_metal", "fg": 2738 }, + { "id": "blanket", "fg": 2739 }, + { "id": "down_blanket", "fg": 2740 }, + { "id": "electric_blanket", "fg": 2741 }, + { "id": "board_trap", "fg": 2742 }, + { "id": "box_large", "fg": 2743 }, + { "id": "box_medium", "fg": 2744 }, + { "id": "broom", "fg": 2745 }, + { "id": "bwirebat", "fg": 2746 }, + { "id": "cattlefodder", "fg": 2749 }, + { "id": "chainsaw_off", "fg": 2750 }, + { "id": "axe_ring", "fg": 2757 }, + { "id": "balclava", "fg": 2758 }, + { "id": "beret", "fg": 2759 }, + { "id": "boots", "fg": 2760 }, + { "id": "boxer_briefs", "fg": 2761 }, + { "id": "boxer_shorts", "fg": 2762 }, + { "id": "boy_shorts", "fg": 2763 }, + { "id": "bra", "fg": 2764 }, + { "id": "briefs", "fg": 2765 }, + { "id": "bscabbard", "fg": 2766 }, + { "id": "corset", "fg": 2769 }, + { "id": "cowboy_hat", "fg": 2770 }, + { "id": "dress_shoes", "fg": 2771 }, + { "id": "hat_ball", "fg": 2772 }, + { "id": "hat_cotton", "fg": 2773 }, + { "id": "hat_fur", "fg": 2774 }, + { "id": "hat_knit", "fg": 2776 }, + { "id": "hat_noise_cancelling", "fg": 2777 }, + { "id": "helmet_barbute", "fg": 2778 }, + { "id": "helmet_chitin", "fg": 2779 }, + { "id": "helmet_kabuto", "fg": 2780 }, + { "id": "holster", "fg": 2781 }, + { "id": "hoodie", "fg": 2782 }, + { "id": "jeans", "fg": 2785 }, + { "id": "leather_belt", "fg": 2786 }, + { "id": "longshirt", "fg": 2787 }, + { "id": "maid_dress", "fg": 2788 }, + { "id": "maid_hat", "fg": 2789 }, + { "id": "mask_dust", "fg": 2790 }, + { "id": "panties", "fg": 2791 }, + { "id": "pants", "fg": 2792 }, + { "id": "pants_cargo", "fg": 2793 }, + { "id": "polo_shirt", "fg": 2794 }, + { "id": "ragpouch", "fg": 2795 }, + { "id": "scabbard", "fg": 2796 }, + { "id": "sneakers", "fg": 2798 }, + { "id": "socks", "fg": 2799 }, + { "id": "spearsling", "fg": 2800 }, + { "id": "stockings", "fg": 2802 }, + { "id": "sweater", "fg": 2805 }, + { "id": "sweatshirt", "fg": 2806 }, + { "id": "tank_top", "fg": 2807 }, + { "id": "tool_belt", "fg": 2808 }, + { "id": "tshirt", "fg": 2809 }, + { "id": "turban", "fg": 2810 }, + { "id": "undershirt", "fg": 2811 }, + { "id": "coat_lab", "fg": 2767 }, + { "id": "coat_rain", "fg": 2768 }, + { "id": "sports_bra", "fg": 2801 }, + { "id": "skirt", "fg": 2797 }, + { "id": "jacket_light", "fg": 2784 }, + { "id": "jacket_army", "fg": 2783 }, + { "id": "hat_hard", "fg": 2775 }, + { "id": "striped_pants", "fg": 2803 }, + { "id": "striped_shirt", "fg": 2804 }, + { "id": "cloak", "fg": 2812 }, + { "id": "cloak_wool", "fg": 2815 }, + { "id": "cloak_leather", "fg": 2814 }, + { "id": "cloak_fur", "fg": 2813 }, + { "id": "coffeemaker", "fg": 2816 }, + { "id": "contacts", "fg": 2817 }, + { "id": "corpse", "fg": 2818 }, + { "id": "corpse_generic_human", "fg": 2819 }, + { "id": "crossbow", "fg": 2820 }, + { "id": "crowbar", "fg": 2821 }, + { "id": "filter_air", "fg": 2822 }, + { "id": "fish_bait", "fg": 2823 }, + { "id": "corpse_mon_fish_tiny", "fg": 2827 }, + { "id": "corpse_mon_fish_small", "fg": 2826 }, + { "id": "corpse_mon_fish_medium", "fg": 2825 }, + { "id": "corpse_mon_fish_large", "fg": 2824 }, + { "id": "fish_trap", "fg": 2828 }, + { "id": "fishing_rod_basic", "fg": 2829 }, + { "id": "fishing_rod_professional", "fg": 2830 }, + { "id": "forge", "fg": 2832 }, + { "id": "char_forge", "fg": 2831 }, + { "id": "glass_shard", "fg": 2833 }, + { "id": [ "glock_17", "glock_19", "glock_18c", "glock_22", "glock_31" ], "fg": 2834 }, + { "id": "hoboreel", "fg": 2835 }, + { "id": "hydrogen_tank", "fg": 2836 }, + { "id": "leather_tarp", "fg": 2837 }, + { "id": "water", "fg": 2848 }, + { "id": "water_clean", "fg": 2849 }, + { "id": "gasoline", "fg": 2843 }, + { "id": "diesel", "fg": 2841 }, + { "id": "biodiesel", "fg": 2839 }, + { "id": "flamethrower_fuel", "fg": 2842 }, + { "id": "avgas", "fg": 2838 }, + { "id": "lamp_oil", "fg": 2845 }, + { "id": "motor_oil", "fg": 2846 }, + { "id": "napalm", "fg": 2847 }, + { "id": "gelled_gasoline", "fg": 2844 }, + { "id": "blood", "fg": 2840 }, + { "id": "log", "fg": 2850 }, + { "id": "longbow", "fg": 2851 }, + { "id": "lucern_hammer", "fg": 2852 }, + { "id": "m79", "fg": 2853 }, + { "id": "marble", "fg": 2854 }, + { "id": "meat", "fg": 2855 }, + { "id": "microwave", "fg": 2856 }, + { "id": "mjolnir", "fg": 2857 }, + { "id": "mop", "fg": 2858 }, + { "id": "mp5mag", "fg": 2859 }, + { "id": "nail", "fg": 2864 }, + { "id": "nailbat", "fg": 2865 }, + { "id": "nailboard", "fg": 2866 }, + { "id": "needle_bone", "fg": 2867 }, + { "id": "needle_curved", "fg": 2868 }, + { "id": "needle_wood", "fg": 2869 }, + { "id": "many_years_old_newspaper", "fg": 2870 }, + { "id": "years_old_newspaper", "fg": 2875 }, + { "id": "months_old_newspaper", "fg": 2871 }, + { "id": "newest_newspaper", "fg": 2872 }, + { "id": "one_year_old_newspaper", "fg": 2873 }, + { "id": "weeks_old_newspaper", "fg": 2874 }, + { "id": "2h_flail_wood", "fg": 2876 }, + { "id": "pillow", "fg": 2878 }, + { "id": "down_pillow", "fg": 2877 }, + { "id": "pine_bough", "fg": 2879 }, + { "id": "pinecone", "fg": 2880 }, { "id": [ "rifle_9mm", "rifle_3006", "rifle_45", "rifle_22", "rifle_40", "rifle_44", "rifle_38", "rifle_223" ], - "fg": 2801 - }, - { "id": "pipe_shotgun", "fg": 2802 }, - { "id": "plastic_sheet", "fg": 2803 }, - { "id": "plastic_shopping_bag", "fg": 2804 }, - { "id": "pneumatic_shotgun", "fg": 2805 }, - { "id": "pool_ball", "fg": 2806 }, - { "id": "pot", "fg": 2807 }, - { "id": "pot_canning", "fg": 2808 }, - { "id": "pot_copper", "fg": 2809 }, - { "id": "powder_candy", "fg": 2810 }, - { "id": "rag", "fg": 2811 }, - { "id": "rebar", "fg": 2812 }, - { "id": "rifle_flintlock", "fg": 2813 }, - { "id": "rolling_pin", "fg": 2814 }, - { "id": "fur_rollmat", "fg": 2815 }, - { "id": "rollmat", "fg": 2816 }, - { "id": "scissors", "fg": 2817 }, - { "id": "screwdriver", "fg": 2818 }, - { "id": "sewing_kit", "fg": 2819 }, - { "id": "sharp_rock", "fg": 2820 }, - { "id": "sheet_metal", "fg": 2821 }, - { "id": "sheet_metal_small", "fg": 2822 }, - { "id": "shovel", "fg": 2823 }, - { "id": "slingshot", "fg": 2824 }, - { "id": "solar_panel", "fg": 2826 }, - { "id": "solar_cell", "fg": 2825 }, - { "id": "pointy_stick", "fg": 2827 }, - { "id": "spear_wood", "fg": 2835 }, - { "id": "spear_spike", "fg": 2833 }, - { "id": "spear_knife", "fg": 2829 }, - { "id": "spear_knife_superior", "fg": 2830 }, - { "id": "spear_pipe", "fg": 2831 }, - { "id": "spear_rebar", "fg": 2832 }, - { "id": "spear_steel", "fg": 2834 }, - { "id": "spear_copper", "fg": 2828 }, - { "id": "splinter", "fg": 2836 }, - { "id": "sponge", "fg": 2837 }, - { "id": "spoon", "fg": 2838 }, - { "id": "stick", "fg": 2839 }, - { "id": "stick_long", "fg": 2840 }, - { "id": "primitive_hammer", "fg": 2841 }, - { "id": "string_36", "fg": 2842 }, - { "id": "string_6", "fg": 2843 }, - { "id": "tailors_kit", "fg": 2845 }, - { "id": "tarp", "fg": 2846 }, - { "id": "television", "fg": 2847 }, - { "id": "thermos", "fg": 2848 }, - { "id": "thread", "fg": 2849 }, - { "id": "2h_flail_steel", "fg": 2854 }, - { "id": "welder", "fg": 2855 }, - { "id": "welder_crude", "fg": 2856 }, - { "id": "wood_panel", "fg": 2857 }, - { "id": "wood_sheet", "fg": 2858 }, - { "id": "corpse_mon_troll", "fg": 2859 }, + "fg": 2881 + }, + { "id": "pipe_shotgun", "fg": 2882 }, + { "id": "plastic_sheet", "fg": 2883 }, + { "id": "plastic_shopping_bag", "fg": 2884 }, + { "id": "pneumatic_shotgun", "fg": 2885 }, + { "id": "pool_ball", "fg": 2886 }, + { "id": "powder_candy", "fg": 2887 }, + { "id": "rag", "fg": 2888 }, + { "id": "rebar", "fg": 2889 }, + { "id": "rifle_flintlock", "fg": 2890 }, + { "id": "fur_rollmat", "fg": 2891 }, + { "id": "rollmat", "fg": 2892 }, + { "id": "scissors", "fg": 2893 }, + { "id": "screwdriver", "fg": 2894 }, + { "id": "sewing_kit", "fg": 2895 }, + { "id": "sharp_rock", "fg": 2896 }, + { "id": "sheet_metal", "fg": 2897 }, + { "id": "sheet_metal_small", "fg": 2898 }, + { "id": "shovel", "fg": 2899 }, + { "id": "slingshot", "fg": 2900 }, + { "id": "solar_panel", "fg": 2902 }, + { "id": "solar_cell", "fg": 2901 }, + { "id": "pointy_stick", "fg": 2903 }, + { "id": "spear_wood", "fg": 2911 }, + { "id": "spear_spike", "fg": 2909 }, + { "id": "spear_knife", "fg": 2905 }, + { "id": "spear_knife_superior", "fg": 2906 }, + { "id": "spear_pipe", "fg": 2907 }, + { "id": "spear_rebar", "fg": 2908 }, + { "id": "spear_steel", "fg": 2910 }, + { "id": "spear_copper", "fg": 2904 }, + { "id": "splinter", "fg": 2912 }, + { "id": "sponge", "fg": 2913 }, + { "id": "spoon", "fg": 2914 }, + { "id": "stick", "fg": 2915 }, + { "id": "stick_long", "fg": 2916 }, + { "id": "primitive_hammer", "fg": 2917 }, + { "id": "string_36", "fg": 2918 }, + { "id": "string_6", "fg": 2919 }, + { "id": "tailors_kit", "fg": 2921 }, + { "id": "tarp", "fg": 2922 }, + { "id": "television", "fg": 2923 }, + { "id": "thermos", "fg": 2924 }, + { "id": "thread", "fg": 2925 }, + { "id": "2h_flail_steel", "fg": 2930 }, + { "id": "welder", "fg": 2931 }, + { "id": "welder_crude", "fg": 2932 }, + { "id": "wood_panel", "fg": 2933 }, + { "id": "wood_sheet", "fg": 2934 }, + { "id": "corpse_mon_troll", "fg": 2935 }, { "id": "mon_cat_bengal", - "fg": [ { "weight": 1, "sprite": 2869 }, { "weight": 1, "sprite": 2868 } ], - "bg": 1296 + "fg": [ { "weight": 1, "sprite": 2947 }, { "weight": 1, "sprite": 2946 } ], + "bg": 1312 }, { "id": "mon_cat_calico", - "fg": [ { "weight": 1, "sprite": 2872 }, { "weight": 1, "sprite": 2871 } ], - "bg": 1296 + "fg": [ { "weight": 1, "sprite": 2950 }, { "weight": 1, "sprite": 2949 } ], + "bg": 1312 }, { "id": "mon_cat_chonker", - "fg": [ { "weight": 1, "sprite": 2875 }, { "weight": 1, "sprite": 2874 } ], - "bg": 1296 + "fg": [ { "weight": 1, "sprite": 2953 }, { "weight": 1, "sprite": 2952 } ], + "bg": 1312 }, { "id": "mon_cat_devon_rex", - "fg": [ { "weight": 1, "sprite": 2878 }, { "weight": 1, "sprite": 2877 } ], - "bg": 1296 + "fg": [ { "weight": 1, "sprite": 2956 }, { "weight": 1, "sprite": 2955 } ], + "bg": 1312 }, { "id": "mon_cat_longhair", - "fg": [ { "weight": 1, "sprite": 2881 }, { "weight": 1, "sprite": 2880 } ], - "bg": 1296 + "fg": [ { "weight": 1, "sprite": 2959 }, { "weight": 1, "sprite": 2958 } ], + "bg": 1312 }, { "id": "mon_cat_maine_coon", - "fg": [ { "weight": 1, "sprite": 2884 }, { "weight": 1, "sprite": 2883 } ], - "bg": 1296 + "fg": [ { "weight": 1, "sprite": 2962 }, { "weight": 1, "sprite": 2961 } ], + "bg": 1312 }, { "id": "mon_cat_persian", - "fg": [ { "weight": 1, "sprite": 2887 }, { "weight": 1, "sprite": 2886 } ], - "bg": 1296 + "fg": [ { "weight": 1, "sprite": 2965 }, { "weight": 1, "sprite": 2964 } ], + "bg": 1312 }, { "id": "mon_cat_siamese", - "fg": [ { "weight": 1, "sprite": 2893 }, { "weight": 1, "sprite": 2892 } ], - "bg": 1296 + "fg": [ { "weight": 1, "sprite": 2971 }, { "weight": 1, "sprite": 2970 } ], + "bg": 1312 }, { "id": "mon_cat_sphynx", - "fg": [ { "weight": 1, "sprite": 2896 }, { "weight": 1, "sprite": 2895 } ], - "bg": 1296 + "fg": [ { "weight": 1, "sprite": 2974 }, { "weight": 1, "sprite": 2973 } ], + "bg": 1312 }, { "id": "mon_cat_tabby", - "fg": [ { "weight": 1, "sprite": 2899 }, { "weight": 1, "sprite": 2898 } ], - "bg": 1296 - }, - { "id": "mon_cat_kitten", "fg": 2888, "bg": 1296 }, - { "id": "mon_cat_bengal_kitten", "fg": 2867, "bg": 1296 }, - { "id": "mon_cat_calico_kitten", "fg": 2870, "bg": 1296 }, - { "id": "mon_cat_chonker_kitten", "fg": 2873, "bg": 1296 }, - { "id": "mon_cat_devon_rex_kitten", "fg": 2876, "bg": 1296 }, - { "id": "mon_cat_longhair_kitten", "fg": 2879, "bg": 1296 }, - { "id": "mon_cat_maine_coon_kitten", "fg": 2882, "bg": 1296 }, - { "id": "mon_cat_persian_kitten", "fg": 2885, "bg": 1296 }, - { "id": "mon_cat_siamese_kitten", "fg": 2891, "bg": 1296 }, - { "id": "mon_cat_sphynx_kitten", "fg": 2894, "bg": 1296 }, - { "id": "mon_cat_tabby_kitten", "fg": 2897, "bg": 1296 }, - { "id": "mon_dog_beagle", "fg": 2903, "bg": 1296 }, - { "id": "mon_dog_gshepherd", "fg": 2906, "bg": 1295 }, - { "id": "mon_dog_boxer", "fg": 2904, "bg": 1295 }, - { "id": "mon_dog_dachshund", "fg": 2905, "bg": 1295 }, - { "id": "mon_fish_tiny", "fg": 2913 }, - { "id": "mon_fish_small", "fg": 2912 }, - { "id": "mon_fish_medium", "fg": 2911 }, - { "id": [ "mon_fish_large", "mon_fish_huge" ], "fg": 2910 }, - { "id": "mon_duck_chick", "fg": 2919, "bg": 1296 }, - { "id": "mon_goose_canadian_chick", "fg": 2920, "bg": 1296 }, - { "id": "mon_cockatrice_chick", "fg": 2922, "bg": 1296 }, - { "id": "mon_cockatrice", "fg": 2921, "bg": 1296 }, - { "id": "mon_beaver", "fg": 2931, "bg": 1296 }, - { "id": "mon_opossum", "fg": 2937, "bg": 1296 }, - { "id": "mon_dragonfly", "fg": 2943, "bg": 1296 }, - { "id": "mon_locust", "fg": 2944, "bg": 1295 }, - { "id": "mon_locust_nymph", "fg": 2945, "bg": 1296 }, - { "id": "corpse_mon_ant", "fg": 2947 }, - { "id": "corpse_mon_ant_acid", "fg": 2948 }, - { "id": "corpse_mon_ant_larva", "fg": 2950 }, - { "id": "corpse_mon_ant_acid_larva", "fg": 2949 }, - { "id": "mon_plague_nymph", "fg": 2959, "bg": 1296 }, - { "id": "mon_plague_vector", "fg": 2960, "bg": 1295 }, - { "id": "mon_skittering_plague", "fg": 2962, "bg": 1295 }, - { "id": "mon_spawn_raptor", "fg": 2969, "bg": 1295 }, - { "id": "mon_zombeaver", "fg": 2971, "bg": 1296 }, - { "id": "mon_crow_mutant_small", "fg": 2972, "bg": 1295 }, - { "id": "mon_dog_rottweiler", "fg": 2973, "bg": 1295 }, - { "id": "lighting_lowlight_dark", "fg": 2992 }, - { "id": "lighting_boomered_dark", "fg": 2987 }, + "fg": [ { "weight": 1, "sprite": 2977 }, { "weight": 1, "sprite": 2976 } ], + "bg": 1312 + }, + { "id": "mon_cat_kitten", "fg": 2966, "bg": 1312 }, + { "id": "mon_cat_bengal_kitten", "fg": 2945, "bg": 1312 }, + { "id": "mon_cat_calico_kitten", "fg": 2948, "bg": 1312 }, + { "id": "mon_cat_chonker_kitten", "fg": 2951, "bg": 1312 }, + { "id": "mon_cat_devon_rex_kitten", "fg": 2954, "bg": 1312 }, + { "id": "mon_cat_longhair_kitten", "fg": 2957, "bg": 1312 }, + { "id": "mon_cat_maine_coon_kitten", "fg": 2960, "bg": 1312 }, + { "id": "mon_cat_persian_kitten", "fg": 2963, "bg": 1312 }, + { "id": "mon_cat_siamese_kitten", "fg": 2969, "bg": 1312 }, + { "id": "mon_cat_sphynx_kitten", "fg": 2972, "bg": 1312 }, + { "id": "mon_cat_tabby_kitten", "fg": 2975, "bg": 1312 }, + { "id": "mon_dog_beagle", "fg": 2981, "bg": 1312 }, + { "id": "mon_dog_gshepherd", "fg": 2984, "bg": 1311 }, + { "id": "mon_dog_boxer", "fg": 2982, "bg": 1311 }, + { "id": "mon_dog_dachshund", "fg": 2983, "bg": 1311 }, + { "id": "mon_fish_tiny", "fg": 2991 }, + { "id": "mon_fish_small", "fg": 2990 }, + { "id": "mon_fish_medium", "fg": 2989 }, + { "id": [ "mon_fish_large", "mon_fish_huge" ], "fg": 2988 }, + { "id": "mon_duck_chick", "fg": 2997, "bg": 1312 }, + { "id": "mon_goose_canadian_chick", "fg": 2998, "bg": 1312 }, + { "id": "mon_cockatrice_chick", "fg": 3000, "bg": 1312 }, + { "id": "mon_cockatrice", "fg": 2999, "bg": 1312 }, + { "id": "mon_beaver", "fg": 3009, "bg": 1312 }, + { "id": "mon_opossum", "fg": 3015, "bg": 1312 }, + { "id": "mon_dragonfly", "fg": 3021, "bg": 1312 }, + { "id": "mon_locust", "fg": 3022, "bg": 1311 }, + { "id": "mon_locust_nymph", "fg": 3023, "bg": 1312 }, + { "id": "corpse_mon_ant", "fg": 3025 }, + { "id": "corpse_mon_ant_acid", "fg": 3026 }, + { "id": "corpse_mon_ant_larva", "fg": 3028 }, + { "id": "corpse_mon_ant_acid_larva", "fg": 3027 }, + { "id": "mon_plague_nymph", "fg": 3037, "bg": 1312 }, + { "id": "mon_plague_vector", "fg": 3038, "bg": 1311 }, + { "id": "mon_skittering_plague", "fg": 3040, "bg": 1311 }, + { "id": "mon_spawn_raptor", "fg": 3047, "bg": 1311 }, + { "id": "mon_zombeaver", "fg": 3049, "bg": 1312 }, + { "id": "mon_crow_mutant_small", "fg": 3050, "bg": 1311 }, + { "id": "mon_dog_rottweiler", "fg": 3051, "bg": 1311 }, + { "id": "lighting_lowlight_dark", "fg": 3070 }, + { "id": "lighting_boomered_dark", "fg": 3065 }, { "id": "lighting_hidden", "fg": [ - { "weight": 100, "sprite": 2988 }, - { "weight": 100, "sprite": 2989 }, - { "weight": 100, "sprite": 2990 }, - { "weight": 100, "sprite": 2991 } - ] - }, - { "id": "animation_hit", "fg": 3010 }, - { "id": "cursor", "fg": 3012 }, - { "id": "highlight", "fg": 3014 }, - { "id": "highlight_item", "fg": 3015 }, - { "id": "line_target", "fg": 3013 }, - { "id": "line_trail", "fg": 3016 }, - { "id": "animation_line", "fg": 3011 }, - { "id": [ "overlay_male_crouch", "overlay_female_crouch" ], "fg": 3026 }, - { "id": [ "overlay_male_run", "overlay_female_run" ], "fg": 3027 }, - { "id": "overlay_hostile_sees_player", "fg": 3025 }, - { "id": "overlay_neutral_sees_player", "fg": 3028 }, - { "id": "overlay_friendly_sees_player", "fg": 3024 }, - { "id": "overlay_other_sees_player", "fg": 3029 }, - { "id": "zombie_revival_indicator", "fg": 3030 }, - { "id": "generic_city_building", "fg": 3031, "bg": 3568 }, + { "weight": 100, "sprite": 3066 }, + { "weight": 100, "sprite": 3067 }, + { "weight": 100, "sprite": 3068 }, + { "weight": 100, "sprite": 3069 } + ] + }, + { "id": "animation_hit", "fg": 3088 }, + { "id": "cursor", "fg": 3090 }, + { "id": "highlight", "fg": 3092 }, + { "id": "highlight_item", "fg": 3093 }, + { "id": "line_target", "fg": 3091 }, + { "id": "line_trail", "fg": 3094 }, + { "id": "animation_line", "fg": 3089 }, + { "id": [ "overlay_male_crouch", "overlay_female_crouch" ], "fg": 3104 }, + { "id": [ "overlay_male_run", "overlay_female_run" ], "fg": 3105 }, + { "id": "overlay_hostile_sees_player", "fg": 3103 }, + { "id": "overlay_neutral_sees_player", "fg": 3106 }, + { "id": "overlay_friendly_sees_player", "fg": 3102 }, + { "id": "overlay_other_sees_player", "fg": 3107 }, + { "id": "zombie_revival_indicator", "fg": 3108 }, + { "id": "generic_city_building", "fg": 3112, "bg": 3727 }, { "id": [ "abstorefront_1", @@ -3877,57 +3926,17 @@ "s_sports", "veterinarian" ], - "fg": 3031, - "bg": 3568 - }, - { "id": "forest_water", "fg": 4231, "bg": 4497 }, - { "id": "forest", "fg": 4231, "bg": 3567 }, - { "id": "forest_thick", "fg": 4138, "bg": 3814 }, - { - "id": [ - "road_ne", - "road_ns", - "road_es", - "road_nes", - "road_wn", - "road_ew", - "road_new", - "road_sw", - "road_nsw", - "road_esw", - "road_nesw", - "road_end", - "road_end_north", - "road_end_south", - "road_end_west", - "road_end_east" - ], - "fg": 3884 - }, - { - "id": [ - "river", - "river_sw", - "river_nw", - "river_se", - "river_ne", - "river_north", - "river_south", - "river_west", - "river_east", - "river_c_not_sw", - "river_c_not_nw", - "river_c_not_se", - "river_c_not_ne" - ], - "fg": 4463 + "fg": 3112, + "bg": 3727 }, - { "id": "river_center", "fg": 4446 }, - { "id": "field", "fg": 3582, "bg": 3567 }, + { "id": "forest_water", "fg": 3121 }, + { "id": "forest", "fg": 3110, "bg": 3109 }, + { "id": "field", "fg": 3109 }, + { "id": "open_air", "fg": 3111 }, { "id": [ "shelter", "shelter_1", "shelter_2", "shelter_vandal", "shelter_1_vandal", "shelter_2_vandal" ], - "fg": [ 3033, 3032, 3034, 3035 ], - "bg": 3568, + "fg": [ 3114, 3113, 3115, 3116 ], + "bg": 3727, "rotates": true }, { @@ -4150,612 +4159,775 @@ "urban_13_11", "urban_13_12" ], - "fg": [ 3037, 3036, 3038, 3039 ], - "bg": 3568, + "fg": [ 3118, 3117, 3119, 3120 ], + "bg": 3727, + "rotates": true + }, + { + "id": [ "2farm_3", "farm_3", "farm_isherwood_3", "farm_dairy_twd_6", "farm_dairy_twd_12", "ranch_camp_66", "dairy_farm_SE" ], + "fg": [ 3123, 3122, 3123, 3122 ], + "bg": 3109, + "rotates": true + }, + { "id": [ "desolatebarn", "barn_aban1" ], "fg": 3124, "bg": 3109 }, + { + "id": [ + "cabin", + "cabin_1", + "cabin_2", + "cabin_3", + "cabin_4", + "cabin_5", + "cabin_6", + "cabin_7", + "cabin_lapin", + "bandit_cabin", + "cabin_isherwood", + "cabin_lake", + "lake_cabin_boathouse", + "cabin_strange", + "cabin_strange_b", + "riverside_dwelling" + ], + "fg": [ 3126, 3125, 3127, 3128 ], + "bg": 3109, + "rotates": true + }, + { "id": "cave", "fg": 3129, "bg": 3109 }, + { + "id": [ + "2farm_1", + "2farm_10", + "2farm_12", + "2farm_13", + "2farm_14", + "2farm_15", + "2farm_16", + "2farm_2", + "2farm_5", + "2farm_6", + "2farm_9", + "farm_1", + "farm_4", + "farm_5", + "farm_6", + "farm_7", + "farm_8", + "farm_9", + "farm_isherwood_1", + "farm_isherwood_4", + "farm_isherwood_5", + "farm_isherwood_6", + "farm_isherwood_7", + "farm_isherwood_8", + "farm_isherwood_9", + "farm_lot_M", + "farm_lot_M1", + "farm_lot_wire_straight_h", + "farm_lot_wire_straight_h_open", + "farm_lot_wire_straight_v", + "farm_lot_wire_straight_v_open", + "farm_lot_wire_turn_h", + "farm_lot_wire_turn_h_open", + "farm_lot_wire_turn_v", + "farm_lot_wire_turn_v_open", + "farm_lot_wire_turn_uni", + "farm_stills_1", + "farm_stills_10", + "farm_stills_2", + "farm_stills_5", + "farm_stills_6", + "farm_stills_9", + "horse_farm_1", + "horse_farm_11", + "horse_farm_12", + "horse_farm_14", + "horse_farm_15", + "horse_farm_16", + "horse_farm_3", + "horse_farm_5", + "horse_farm_6", + "horse_farm_8", + "horse_farm_2", + "horse_farm_isherwood_1", + "horse_farm_isherwood_11", + "horse_farm_isherwood_12", + "horse_farm_isherwood_14", + "horse_farm_isherwood_15", + "horse_farm_isherwood_16", + "horse_farm_isherwood_3", + "horse_farm_isherwood_5", + "horse_farm_isherwood_6", + "horse_farm_isherwood_8", + "horse_farm_isherwood_2", + "yard" + ], + "fg": 3130 + }, + { "id": "forest_trail_isolated", "fg": 3146 }, + { "id": "forest_trail_nesw", "fg": 3131 }, + { "id": "forest_trail_es", "fg": 3133 }, + { "id": "forest_trail_ne", "fg": 3135 }, + { "id": "forest_trail_wn", "fg": 3134 }, + { "id": "forest_trail_sw", "fg": 3132 }, + { "id": "forest_trail_esw", "fg": 3143 }, + { "id": "forest_trail_nes", "fg": 3145 }, + { "id": "forest_trail_new", "fg": 3144 }, + { "id": "forest_trail_nsw", "fg": 3142 }, + { "id": "forest_trail_ns", "fg": 3137 }, + { "id": "forest_trail_ew", "fg": 3136 }, + { "id": "forest_trail_end_north", "fg": 3139 }, + { "id": "forest_trail_end_west", "fg": 3141 }, + { "id": "forest_trail_end_south", "fg": 3140 }, + { "id": "forest_trail_end_east", "fg": 3138 }, + { "id": "2farm_7", "fg": 3131 }, + { "id": "crater", "fg": 4044, "bg": 3109 }, + { "id": [ "slimepit_down", "slimepit" ], "fg": 4354 }, + { "id": "2farm_4", "fg": [ 3155, 3154, 3156, 3157 ], "rotates": true }, + { "id": "2farm_8", "fg": [ 3156, 3157, 3155, 3154 ], "rotates": true }, + { "id": "dairy_farm_NW", "fg": [ 3157, 3155, 3154, 3156 ], "rotates": true }, + { "id": "dairy_farm_NE", "fg": [ 3154, 3156, 3157, 3155 ], "rotates": true }, + { "id": "publicgarden", "fg": 3163 }, + { "id": "river_nw", "fg": 3172, "bg": 3109, "rotates": false }, + { "id": "river_sw", "fg": 3175, "bg": 3109, "rotates": false }, + { "id": "river_se", "fg": 3173, "bg": 3109, "rotates": false }, + { "id": "river_ne", "fg": 3170, "bg": 3109, "rotates": false }, + { "id": "river_north", "fg": 3171, "bg": 3109, "rotates": false }, + { "id": "river_west", "fg": 3176, "bg": 3109, "rotates": false }, + { "id": "river_east", "fg": 3169, "bg": 3109, "rotates": false }, + { "id": "river_south", "fg": 3174, "bg": 3109, "rotates": false }, + { "id": "river_center", "fg": 3168, "bg": 3109, "rotates": false }, + { "id": "river", "fg": [ 3171, 3169, 3174, 3176 ], "bg": 3109, "rotates": true }, + { "id": "river_c_not_nw", "fg": 3165, "bg": 3109, "rotates": false }, + { "id": "river_c_not_ne", "fg": 3164, "bg": 3109, "rotates": false }, + { "id": "river_c_not_sw", "fg": 3167, "bg": 3109, "rotates": false }, + { "id": "river_c_not_se", "fg": 3166, "bg": 3109, "rotates": false }, + { "id": "road_isolated", "fg": 3192 }, + { "id": "road_nesw", "fg": 3177 }, + { "id": "road_es", "fg": 3179 }, + { "id": "road_ne", "fg": 3181 }, + { "id": "road_wn", "fg": 3180 }, + { "id": "road_sw", "fg": 3178 }, + { "id": "road_esw", "fg": 3189 }, + { "id": "road_nes", "fg": 3191 }, + { "id": "road_new", "fg": 3190 }, + { "id": "road_nsw", "fg": 3188 }, + { "id": "road_ns", "fg": 3183 }, + { "id": "road_ew", "fg": 3182 }, + { "id": "road_end_north", "fg": 3185 }, + { "id": "road_end_west", "fg": 3187 }, + { "id": "road_end_south", "fg": 3186 }, + { "id": "road_end_east", "fg": 3184 }, + { + "id": [ "house_farm", "farm_2", "farm_isherwood_2", "2farm_11" ], + "fg": [ 3194, 3193, 3195, 3196 ], + "bg": 3109, "rotates": true }, + { "id": [ "dairy_farm_SW" ], "fg": [ 3195, 3196, 3194, 3193 ], "bg": 3109, "rotates": true }, + { "id": "2silos", "fg": [ 3198, 3197, 3198, 3197 ], "bg": 3109, "rotates": true }, { "id": "f_earthbag_half", "multitile": true, - "fg": 3055, - "bg": 3567, + "fg": 3214, + "bg": 3726, "additional_tiles": [ - { "id": "center", "fg": 3040 }, - { "id": "corner", "fg": [ 3042, 3044, 3043, 3041 ] }, - { "id": "t_connection", "fg": [ 3052, 3054, 3053, 3051 ] }, - { "id": "edge", "fg": [ 3046, 3045 ] }, - { "id": "end_piece", "fg": [ 3048, 3050, 3049, 3047 ] }, - { "id": "unconnected", "fg": [ 3055, 3055 ] } + { "id": "center", "fg": 3199 }, + { "id": "corner", "fg": [ 3201, 3203, 3202, 3200 ] }, + { "id": "t_connection", "fg": [ 3211, 3213, 3212, 3210 ] }, + { "id": "edge", "fg": [ 3205, 3204 ] }, + { "id": "end_piece", "fg": [ 3207, 3209, 3208, 3206 ] }, + { "id": "unconnected", "fg": [ 3214, 3214 ] } ] }, - { "id": [ "t_ramp_up_low", "t_ramp_down_low" ], "fg": 3865 }, - { "id": [ "t_sidewalk_ramp_up_low", "t_sidewalk_ramp_down_low" ], "fg": 4179 }, + { "id": [ "t_ramp_up_low", "t_ramp_down_low" ], "fg": 4024 }, + { "id": [ "t_sidewalk_ramp_up_low", "t_sidewalk_ramp_down_low" ], "fg": 4338 }, { "id": "t_splitrail_fence", "multitile": true, - "fg": 3097, - "bg": 3567, + "fg": 3256, + "bg": 3726, "additional_tiles": [ - { "id": "center", "bg": 3567, "fg": 3082 }, - { "id": "corner", "bg": 3567, "fg": [ 3084, 3086, 3085, 3083 ] }, - { "id": "t_connection", "bg": 3567, "fg": [ 3094, 3096, 3095, 3093 ] }, - { "id": "edge", "bg": 3567, "fg": [ 3088, 3087 ] }, - { "id": "end_piece", "bg": 3567, "fg": [ 3090, 3092, 3091, 3089 ] }, - { "bg": 3567, "id": "unconnected", "fg": [ 3097, 3097 ] } + { "id": "center", "bg": 3726, "fg": 3241 }, + { "id": "corner", "bg": 3726, "fg": [ 3243, 3245, 3244, 3242 ] }, + { "id": "t_connection", "bg": 3726, "fg": [ 3253, 3255, 3254, 3252 ] }, + { "id": "edge", "bg": 3726, "fg": [ 3247, 3246 ] }, + { "id": "end_piece", "bg": 3726, "fg": [ 3249, 3251, 3250, 3248 ] }, + { "bg": 3726, "id": "unconnected", "fg": [ 3256, 3256 ] } ] }, { "id": "t_splitrail_fence_season_summer", "multitile": true, - "fg": 3097, - "bg": 3577, + "fg": 3256, + "bg": 3736, "additional_tiles": [ - { "id": "center", "bg": 3577, "fg": 3082 }, - { "id": "corner", "bg": 3577, "fg": [ 3084, 3086, 3085, 3083 ] }, - { "id": "t_connection", "bg": 3577, "fg": [ 3094, 3096, 3095, 3093 ] }, - { "id": "edge", "bg": 3577, "fg": [ 3088, 3087 ] }, - { "id": "end_piece", "bg": 3577, "fg": [ 3090, 3092, 3091, 3089 ] }, - { "bg": 3577, "id": "unconnected", "fg": [ 3097, 3097 ] } + { "id": "center", "bg": 3736, "fg": 3241 }, + { "id": "corner", "bg": 3736, "fg": [ 3243, 3245, 3244, 3242 ] }, + { "id": "t_connection", "bg": 3736, "fg": [ 3253, 3255, 3254, 3252 ] }, + { "id": "edge", "bg": 3736, "fg": [ 3247, 3246 ] }, + { "id": "end_piece", "bg": 3736, "fg": [ 3249, 3251, 3250, 3248 ] }, + { "bg": 3736, "id": "unconnected", "fg": [ 3256, 3256 ] } ] }, { "id": "t_splitrail_fence_season_autumn", "multitile": true, - "fg": 3097, - "bg": 3572, + "fg": 3256, + "bg": 3731, "additional_tiles": [ - { "id": "center", "bg": 3572, "fg": 3082 }, - { "id": "corner", "bg": 3572, "fg": [ 3084, 3086, 3085, 3083 ] }, - { "id": "t_connection", "bg": 3572, "fg": [ 3094, 3096, 3095, 3093 ] }, - { "id": "edge", "bg": 3572, "fg": [ 3088, 3087 ] }, - { "id": "end_piece", "bg": 3572, "fg": [ 3090, 3092, 3091, 3089 ] }, - { "bg": 3572, "id": "unconnected", "fg": [ 3097, 3097 ] } + { "id": "center", "bg": 3731, "fg": 3241 }, + { "id": "corner", "bg": 3731, "fg": [ 3243, 3245, 3244, 3242 ] }, + { "id": "t_connection", "bg": 3731, "fg": [ 3253, 3255, 3254, 3252 ] }, + { "id": "edge", "bg": 3731, "fg": [ 3247, 3246 ] }, + { "id": "end_piece", "bg": 3731, "fg": [ 3249, 3251, 3250, 3248 ] }, + { "bg": 3731, "id": "unconnected", "fg": [ 3256, 3256 ] } ] }, { "id": "t_splitrail_fence_season_winter", "multitile": true, - "fg": 3097, - "bg": 3063, + "fg": 3256, + "bg": 3222, "additional_tiles": [ - { "id": "center", "bg": 3063, "fg": 3082 }, - { "id": "corner", "bg": 3063, "fg": [ 3084, 3086, 3085, 3083 ] }, - { "id": "t_connection", "bg": 3063, "fg": [ 3094, 3096, 3095, 3093 ] }, - { "id": "edge", "bg": 3063, "fg": [ 3088, 3087 ] }, - { "id": "end_piece", "bg": 3063, "fg": [ 3090, 3092, 3091, 3089 ] }, - { "bg": 3063, "id": "unconnected", "fg": [ 3097, 3097 ] } + { "id": "center", "bg": 3222, "fg": 3241 }, + { "id": "corner", "bg": 3222, "fg": [ 3243, 3245, 3244, 3242 ] }, + { "id": "t_connection", "bg": 3222, "fg": [ 3253, 3255, 3254, 3252 ] }, + { "id": "edge", "bg": 3222, "fg": [ 3247, 3246 ] }, + { "id": "end_piece", "bg": 3222, "fg": [ 3249, 3251, 3250, 3248 ] }, + { "bg": 3222, "id": "unconnected", "fg": [ 3256, 3256 ] } ] }, - { "id": "t_stairs_down", "fg": 3098 }, - { "id": "t_wood_stairs_down", "fg": 3099 }, + { "id": "t_stairs_down", "fg": 3257 }, + { "id": "t_wood_stairs_down", "fg": 3258 }, { "id": "t_adobe_brick_wall", "multitile": true, - "fg": 3115, + "fg": 3274, "additional_tiles": [ - { "id": "center", "fg": 3100 }, - { "id": "corner", "fg": [ 3102, 3104, 3103, 3101 ] }, - { "id": "t_connection", "fg": [ 3112, 3114, 3113, 3111 ] }, - { "id": "edge", "fg": [ 3106, 3105 ] }, - { "id": "end_piece", "fg": [ 3108, 3110, 3109, 3107 ] }, - { "id": "unconnected", "fg": [ 3115, 3115 ] } + { "id": "center", "fg": 3259 }, + { "id": "corner", "fg": [ 3261, 3263, 3262, 3260 ] }, + { "id": "t_connection", "fg": [ 3271, 3273, 3272, 3270 ] }, + { "id": "edge", "fg": [ 3265, 3264 ] }, + { "id": "end_piece", "fg": [ 3267, 3269, 3268, 3266 ] }, + { "id": "unconnected", "fg": [ 3274, 3274 ] } ] }, - { "id": "t_bars", "fg": 3116 }, + { "id": "t_bars", "fg": 3275 }, { "id": "t_brick_wall", "multitile": true, - "fg": 3132, + "fg": 3291, "additional_tiles": [ - { "id": "center", "fg": 3117 }, - { "id": "corner", "fg": [ 3119, 3121, 3120, 3118 ] }, - { "id": "t_connection", "fg": [ 3129, 3131, 3130, 3128 ] }, - { "id": "edge", "fg": [ 3123, 3122 ] }, - { "id": "end_piece", "fg": [ 3125, 3127, 3126, 3124 ] }, - { "id": "unconnected", "fg": 3132 } + { "id": "center", "fg": 3276 }, + { "id": "corner", "fg": [ 3278, 3280, 3279, 3277 ] }, + { "id": "t_connection", "fg": [ 3288, 3290, 3289, 3287 ] }, + { "id": "edge", "fg": [ 3282, 3281 ] }, + { "id": "end_piece", "fg": [ 3284, 3286, 3285, 3283 ] }, + { "id": "unconnected", "fg": 3291 } ] }, { "id": "t_bridge", "multitile": true, - "fg": 3148, + "fg": 3307, "additional_tiles": [ - { "id": "center", "fg": 3133 }, - { "id": "corner", "fg": [ 3135, 3137, 3136, 3134 ] }, - { "id": "t_connection", "fg": [ 3145, 3147, 3146, 3144 ] }, - { "id": "edge", "fg": [ 3139, 3138 ] }, - { "id": "end_piece", "fg": [ 3141, 3143, 3142, 3140 ] }, - { "id": "unconnected", "fg": [ 3148, 3148 ] } + { "id": "center", "fg": 3292 }, + { "id": "corner", "fg": [ 3294, 3296, 3295, 3293 ] }, + { "id": "t_connection", "fg": [ 3304, 3306, 3305, 3303 ] }, + { "id": "edge", "fg": [ 3298, 3297 ] }, + { "id": "end_piece", "fg": [ 3300, 3302, 3301, 3299 ] }, + { "id": "unconnected", "fg": [ 3307, 3307 ] } ] }, { "id": "t_carpet_green", "multitile": true, - "fg": 3167, + "fg": 3326, "additional_tiles": [ { "id": "center", "fg": [ - { "weight": 1, "sprite": 3149 }, - { "weight": 1, "sprite": 3150 }, - { "weight": 1, "sprite": 3151 }, - { "weight": 1, "sprite": 3152 } + { "weight": 1, "sprite": 3308 }, + { "weight": 1, "sprite": 3309 }, + { "weight": 1, "sprite": 3310 }, + { "weight": 1, "sprite": 3311 } ] }, - { "id": "corner", "fg": [ 3154, 3156, 3155, 3153 ] }, - { "id": "t_connection", "fg": [ 3164, 3166, 3165, 3163 ] }, - { "id": "edge", "fg": [ 3158, 3157 ] }, - { "id": "end_piece", "fg": [ 3160, 3162, 3161, 3159 ] }, - { "id": "unconnected", "fg": 3167 } + { "id": "corner", "fg": [ 3313, 3315, 3314, 3312 ] }, + { "id": "t_connection", "fg": [ 3323, 3325, 3324, 3322 ] }, + { "id": "edge", "fg": [ 3317, 3316 ] }, + { "id": "end_piece", "fg": [ 3319, 3321, 3320, 3318 ] }, + { "id": "unconnected", "fg": 3326 } ] }, { "id": "t_carpet_purple", "multitile": true, - "fg": 3186, + "fg": 3345, "additional_tiles": [ { "id": "center", "fg": [ - { "weight": 1, "sprite": 3168 }, - { "weight": 1, "sprite": 3169 }, - { "weight": 1, "sprite": 3170 }, - { "weight": 1, "sprite": 3171 } + { "weight": 1, "sprite": 3327 }, + { "weight": 1, "sprite": 3328 }, + { "weight": 1, "sprite": 3329 }, + { "weight": 1, "sprite": 3330 } ] }, - { "id": "corner", "fg": [ 3173, 3175, 3174, 3172 ] }, - { "id": "t_connection", "fg": [ 3183, 3185, 3184, 3182 ] }, - { "id": "edge", "fg": [ 3177, 3176 ] }, - { "id": "end_piece", "fg": [ 3179, 3181, 3180, 3178 ] }, - { "id": "unconnected", "fg": 3186 } + { "id": "corner", "fg": [ 3332, 3334, 3333, 3331 ] }, + { "id": "t_connection", "fg": [ 3342, 3344, 3343, 3341 ] }, + { "id": "edge", "fg": [ 3336, 3335 ] }, + { "id": "end_piece", "fg": [ 3338, 3340, 3339, 3337 ] }, + { "id": "unconnected", "fg": 3345 } ] }, { "id": "t_carpet_red", "multitile": true, - "fg": 3202, + "fg": 3361, "additional_tiles": [ - { "id": "center", "fg": 3187 }, - { "id": "corner", "fg": [ 3189, 3191, 3190, 3188 ] }, - { "id": "t_connection", "fg": [ 3199, 3201, 3200, 3198 ] }, - { "id": "edge", "fg": [ 3193, 3192 ] }, - { "id": "end_piece", "fg": [ 3195, 3197, 3196, 3194 ] }, - { "id": "unconnected", "fg": 3202 } + { "id": "center", "fg": 3346 }, + { "id": "corner", "fg": [ 3348, 3350, 3349, 3347 ] }, + { "id": "t_connection", "fg": [ 3358, 3360, 3359, 3357 ] }, + { "id": "edge", "fg": [ 3352, 3351 ] }, + { "id": "end_piece", "fg": [ 3354, 3356, 3355, 3353 ] }, + { "id": "unconnected", "fg": 3361 } ] }, { "id": "t_carpet_yellow", "multitile": true, - "fg": 3218, + "fg": 3377, "additional_tiles": [ - { "id": "center", "fg": 3203 }, - { "id": "corner", "fg": [ 3205, 3207, 3206, 3204 ] }, - { "id": "t_connection", "fg": [ 3215, 3217, 3216, 3214 ] }, - { "id": "edge", "fg": [ 3209, 3208 ] }, - { "id": "end_piece", "fg": [ 3211, 3213, 3212, 3210 ] }, - { "id": "unconnected", "fg": 3218 } + { "id": "center", "fg": 3362 }, + { "id": "corner", "fg": [ 3364, 3366, 3365, 3363 ] }, + { "id": "t_connection", "fg": [ 3374, 3376, 3375, 3373 ] }, + { "id": "edge", "fg": [ 3368, 3367 ] }, + { "id": "end_piece", "fg": [ 3370, 3372, 3371, 3369 ] }, + { "id": "unconnected", "fg": 3377 } ] }, { "id": "t_clay", "multitile": true, - "fg": 3234, - "bg": 3567, + "fg": 3393, + "bg": 3726, "additional_tiles": [ - { "id": "center", "bg": 3567, "fg": 3219 }, - { "id": "corner", "bg": 3567, "fg": [ 3221, 3223, 3222, 3220 ] }, - { "id": "t_connection", "bg": 3567, "fg": [ 3231, 3233, 3232, 3230 ] }, - { "id": "edge", "bg": 3567, "fg": [ 3225, 3224 ] }, - { "id": "end_piece", "bg": 3567, "fg": [ 3227, 3229, 3228, 3226 ] }, - { "bg": 3567, "id": "unconnected", "fg": 3234 } + { "id": "center", "bg": 3726, "fg": 3378 }, + { "id": "corner", "bg": 3726, "fg": [ 3380, 3382, 3381, 3379 ] }, + { "id": "t_connection", "bg": 3726, "fg": [ 3390, 3392, 3391, 3389 ] }, + { "id": "edge", "bg": 3726, "fg": [ 3384, 3383 ] }, + { "id": "end_piece", "bg": 3726, "fg": [ 3386, 3388, 3387, 3385 ] }, + { "bg": 3726, "id": "unconnected", "fg": 3393 } ] }, { "id": "t_clay_season_summer", "multitile": true, - "fg": 3234, - "bg": 3577, + "fg": 3393, + "bg": 3736, "additional_tiles": [ - { "id": "center", "bg": 3577, "fg": 3219 }, - { "id": "corner", "bg": 3577, "fg": [ 3221, 3223, 3222, 3220 ] }, - { "id": "t_connection", "bg": 3577, "fg": [ 3231, 3233, 3232, 3230 ] }, - { "id": "edge", "bg": 3577, "fg": [ 3225, 3224 ] }, - { "id": "end_piece", "bg": 3577, "fg": [ 3227, 3229, 3228, 3226 ] }, - { "bg": 3577, "id": "unconnected", "fg": 3234 } + { "id": "center", "bg": 3736, "fg": 3378 }, + { "id": "corner", "bg": 3736, "fg": [ 3380, 3382, 3381, 3379 ] }, + { "id": "t_connection", "bg": 3736, "fg": [ 3390, 3392, 3391, 3389 ] }, + { "id": "edge", "bg": 3736, "fg": [ 3384, 3383 ] }, + { "id": "end_piece", "bg": 3736, "fg": [ 3386, 3388, 3387, 3385 ] }, + { "bg": 3736, "id": "unconnected", "fg": 3393 } ] }, { "id": "t_clay_season_autumn", "multitile": true, - "fg": 3234, - "bg": 3572, + "fg": 3393, + "bg": 3731, "additional_tiles": [ - { "id": "center", "bg": 3572, "fg": 3219 }, - { "id": "corner", "bg": 3572, "fg": [ 3221, 3223, 3222, 3220 ] }, - { "id": "t_connection", "bg": 3572, "fg": [ 3231, 3233, 3232, 3230 ] }, - { "id": "edge", "bg": 3572, "fg": [ 3225, 3224 ] }, - { "id": "end_piece", "bg": 3572, "fg": [ 3227, 3229, 3228, 3226 ] }, - { "bg": 3572, "id": "unconnected", "fg": 3234 } + { "id": "center", "bg": 3731, "fg": 3378 }, + { "id": "corner", "bg": 3731, "fg": [ 3380, 3382, 3381, 3379 ] }, + { "id": "t_connection", "bg": 3731, "fg": [ 3390, 3392, 3391, 3389 ] }, + { "id": "edge", "bg": 3731, "fg": [ 3384, 3383 ] }, + { "id": "end_piece", "bg": 3731, "fg": [ 3386, 3388, 3387, 3385 ] }, + { "bg": 3731, "id": "unconnected", "fg": 3393 } ] }, { "id": "t_clay_season_winter", "multitile": true, - "fg": 3234, - "bg": 3063, + "fg": 3393, + "bg": 3222, "additional_tiles": [ - { "id": "center", "bg": 3063, "fg": 3219 }, - { "id": "corner", "bg": 3063, "fg": [ 3221, 3223, 3222, 3220 ] }, - { "id": "t_connection", "bg": 3063, "fg": [ 3231, 3233, 3232, 3230 ] }, - { "id": "edge", "bg": 3063, "fg": [ 3225, 3224 ] }, - { "id": "end_piece", "bg": 3063, "fg": [ 3227, 3229, 3228, 3226 ] }, - { "bg": 3063, "id": "unconnected", "fg": 3234 } + { "id": "center", "bg": 3222, "fg": 3378 }, + { "id": "corner", "bg": 3222, "fg": [ 3380, 3382, 3381, 3379 ] }, + { "id": "t_connection", "bg": 3222, "fg": [ 3390, 3392, 3391, 3389 ] }, + { "id": "edge", "bg": 3222, "fg": [ 3384, 3383 ] }, + { "id": "end_piece", "bg": 3222, "fg": [ 3386, 3388, 3387, 3385 ] }, + { "bg": 3222, "id": "unconnected", "fg": 3393 } ] }, { "id": "t_concrete", "multitile": true, - "fg": 3250, + "fg": 3409, "additional_tiles": [ - { "id": "center", "fg": 3235 }, - { "id": "corner", "fg": [ 3237, 3239, 3238, 3236 ] }, - { "id": "t_connection", "fg": [ 3247, 3249, 3248, 3246 ] }, - { "id": "edge", "fg": [ 3241, 3240 ] }, - { "id": "end_piece", "fg": [ 3243, 3245, 3244, 3242 ] }, - { "id": "unconnected", "fg": 3250 } + { "id": "center", "fg": 3394 }, + { "id": "corner", "fg": [ 3396, 3398, 3397, 3395 ] }, + { "id": "t_connection", "fg": [ 3406, 3408, 3407, 3405 ] }, + { "id": "edge", "fg": [ 3400, 3399 ] }, + { "id": "end_piece", "fg": [ 3402, 3404, 3403, 3401 ] }, + { "id": "unconnected", "fg": 3409 } ] }, - { "id": "t_concrete_season_winter", "fg": 3063 }, + { "id": "t_concrete_season_winter", "fg": 3222 }, { "id": "t_concrete_wall", "multitile": true, - "fg": 3266, + "fg": 3425, "additional_tiles": [ - { "id": "center", "fg": 3251 }, - { "id": "corner", "fg": [ 3253, 3255, 3254, 3252 ] }, - { "id": "t_connection", "fg": [ 3263, 3265, 3264, 3262 ] }, - { "id": "edge", "fg": [ 3257, 3256 ] }, - { "id": "end_piece", "fg": [ 3259, 3261, 3260, 3258 ] }, - { "id": "unconnected", "fg": 3266 } + { "id": "center", "fg": 3410 }, + { "id": "corner", "fg": [ 3412, 3414, 3413, 3411 ] }, + { "id": "t_connection", "fg": [ 3422, 3424, 3423, 3421 ] }, + { "id": "edge", "fg": [ 3416, 3415 ] }, + { "id": "end_piece", "fg": [ 3418, 3420, 3419, 3417 ] }, + { "id": "unconnected", "fg": 3425 } ] }, { "id": "t_concrete_y", "multitile": true, - "fg": 3282, + "fg": 3441, "additional_tiles": [ - { "id": "center", "fg": 3267 }, - { "id": "corner", "fg": [ 3269, 3271, 3270, 3268 ] }, - { "id": "t_connection", "fg": [ 3279, 3281, 3280, 3278 ] }, - { "id": "edge", "fg": [ 3273, 3272 ] }, - { "id": "end_piece", "fg": [ 3275, 3277, 3276, 3274 ] }, - { "id": "unconnected", "fg": 3282 } + { "id": "center", "fg": 3426 }, + { "id": "corner", "fg": [ 3428, 3430, 3429, 3427 ] }, + { "id": "t_connection", "fg": [ 3438, 3440, 3439, 3437 ] }, + { "id": "edge", "fg": [ 3432, 3431 ] }, + { "id": "end_piece", "fg": [ 3434, 3436, 3435, 3433 ] }, + { "id": "unconnected", "fg": 3441 } ] }, - { "id": "t_concrete_y_season_winter", "fg": 3063 }, + { "id": "t_concrete_y_season_winter", "fg": 3222 }, { "id": "t_conveyor", "multitile": true, - "fg": 3298, - "bg": 4215, + "fg": 3457, + "bg": 4374, "additional_tiles": [ - { "id": "center", "bg": 4215, "fg": 3283 }, - { "id": "corner", "bg": 4215, "fg": [ 3285, 3287, 3286, 3284 ] }, - { "id": "t_connection", "bg": 4215, "fg": [ 3295, 3297, 3296, 3294 ] }, - { "id": "edge", "bg": 4215, "fg": [ 3289, 3288 ] }, - { "id": "end_piece", "bg": 4215, "fg": [ 3291, 3293, 3292, 3290 ] }, - { "bg": 4215, "id": "unconnected", "fg": [ 3298, 3298 ] } + { "id": "center", "bg": 4374, "fg": 3442 }, + { "id": "corner", "bg": 4374, "fg": [ 3444, 3446, 3445, 3443 ] }, + { "id": "t_connection", "bg": 4374, "fg": [ 3454, 3456, 3455, 3453 ] }, + { "id": "edge", "bg": 4374, "fg": [ 3448, 3447 ] }, + { "id": "end_piece", "bg": 4374, "fg": [ 3450, 3452, 3451, 3449 ] }, + { "bg": 4374, "id": "unconnected", "fg": [ 3457, 3457 ] } ] }, - { "id": "t_curtains", "fg": 3299 }, + { "id": "t_curtains", "fg": 3458 }, { "id": "t_dirt", - "fg": 3318, + "fg": 3477, "multitile": true, "additional_tiles": [ { "id": "center", "fg": [ - { "weight": 100, "sprite": 3300 }, - { "weight": 100, "sprite": 3301 }, - { "weight": 100, "sprite": 3302 }, - { "weight": 100, "sprite": 3303 } + { "weight": 100, "sprite": 3459 }, + { "weight": 100, "sprite": 3460 }, + { "weight": 100, "sprite": 3461 }, + { "weight": 100, "sprite": 3462 } ] }, - { "id": "corner", "fg": [ 3305, 3307, 3306, 3304 ] }, - { "id": "t_connection", "fg": [ 3315, 3317, 3316, 3314 ] }, - { "id": "edge", "fg": [ 3309, 3308 ] }, - { "id": "end_piece", "fg": [ 3311, 3313, 3312, 3310 ] }, - { "id": "unconnected", "fg": [ 3318, 3318 ] } + { "id": "corner", "fg": [ 3464, 3466, 3465, 3463 ] }, + { "id": "t_connection", "fg": [ 3474, 3476, 3475, 3473 ] }, + { "id": "edge", "fg": [ 3468, 3467 ] }, + { "id": "end_piece", "fg": [ 3470, 3472, 3471, 3469 ] }, + { "id": "unconnected", "fg": [ 3477, 3477 ] } ] }, { "id": "t_dirt_season_autumn", - "fg": 3337, + "fg": 3496, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": [ 3319, 3320, 3321, 3322 ] }, - { "id": "corner", "fg": [ 3324, 3326, 3325, 3323 ] }, - { "id": "t_connection", "fg": [ 3334, 3336, 3335, 3333 ] }, - { "id": "edge", "fg": [ 3328, 3327 ] }, - { "id": "end_piece", "fg": [ 3330, 3332, 3331, 3329 ] }, - { "id": "unconnected", "fg": [ 3337, 3337 ] } + { "id": "center", "fg": [ 3478, 3479, 3480, 3481 ] }, + { "id": "corner", "fg": [ 3483, 3485, 3484, 3482 ] }, + { "id": "t_connection", "fg": [ 3493, 3495, 3494, 3492 ] }, + { "id": "edge", "fg": [ 3487, 3486 ] }, + { "id": "end_piece", "fg": [ 3489, 3491, 3490, 3488 ] }, + { "id": "unconnected", "fg": [ 3496, 3496 ] } ] }, { "id": "t_dirt_season_summer", - "fg": 3356, + "fg": 3515, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": [ 3338, 3339, 3340, 3341 ] }, - { "id": "corner", "fg": [ 3343, 3345, 3344, 3342 ] }, - { "id": "t_connection", "fg": [ 3353, 3355, 3354, 3352 ] }, - { "id": "edge", "fg": [ 3347, 3346 ] }, - { "id": "end_piece", "fg": [ 3349, 3351, 3350, 3348 ] }, - { "id": "unconnected", "fg": [ 3356, 3356 ] } + { "id": "center", "fg": [ 3497, 3498, 3499, 3500 ] }, + { "id": "corner", "fg": [ 3502, 3504, 3503, 3501 ] }, + { "id": "t_connection", "fg": [ 3512, 3514, 3513, 3511 ] }, + { "id": "edge", "fg": [ 3506, 3505 ] }, + { "id": "end_piece", "fg": [ 3508, 3510, 3509, 3507 ] }, + { "id": "unconnected", "fg": [ 3515, 3515 ] } ] }, { "id": "t_dirt_season_winter", "fg": [ - { "weight": 100, "sprite": 3357 }, - { "weight": 100, "sprite": 3358 }, - { "weight": 100, "sprite": 3359 }, - { "weight": 100, "sprite": 3360 } + { "weight": 100, "sprite": 3516 }, + { "weight": 100, "sprite": 3517 }, + { "weight": 100, "sprite": 3518 }, + { "weight": 100, "sprite": 3519 } ] }, { "id": "t_dirtfloor", "multitile": true, - "fg": 3376, - "additional_tiles": [ - { "id": "center", "fg": 3361 }, - { "id": "corner", "fg": [ 3363, 3365, 3364, 3362 ] }, - { "id": "t_connection", "fg": [ 3373, 3375, 3374, 3372 ] }, - { "id": "edge", "fg": [ 3367, 3366 ] }, - { "id": "end_piece", "fg": [ 3369, 3371, 3370, 3368 ] }, - { "id": "unconnected", "fg": 3376 } - ] - }, - { "id": "t_door_c", "fg": 3378 }, - { "id": "t_door_locked", "fg": 3379 }, - { "id": "t_door_o", "fg": 3380 }, - { "id": "t_door_b", "fg": 3377 }, - { "id": "t_door_boarded", "fg": 3381 }, - { "id": "t_door_boarded_damaged", "fg": 3382 }, - { "id": "t_door_glass_c", "fg": 3383 }, - { "id": "t_door_glass_o", "fg": 3384 }, - { "id": "t_door_lab_c", "fg": 3385 }, - { "id": "t_door_lab_o", "fg": 3386 }, - { "id": "t_door_metal_c_peep", "fg": 3387 }, - { "id": [ "t_door_metal_locked", "t_door_metal_pickable" ], "fg": 3388 }, - { "id": "t_elevator", "fg": [ { "weight": 100, "sprite": 3395 }, { "weight": 100, "sprite": 3396 } ] }, + "fg": 3535, + "additional_tiles": [ + { "id": "center", "fg": 3520 }, + { "id": "corner", "fg": [ 3522, 3524, 3523, 3521 ] }, + { "id": "t_connection", "fg": [ 3532, 3534, 3533, 3531 ] }, + { "id": "edge", "fg": [ 3526, 3525 ] }, + { "id": "end_piece", "fg": [ 3528, 3530, 3529, 3527 ] }, + { "id": "unconnected", "fg": 3535 } + ] + }, + { "id": "t_door_c", "fg": 3537 }, + { "id": "t_door_locked", "fg": 3538 }, + { "id": "t_door_o", "fg": 3539 }, + { "id": "t_door_b", "fg": 3536 }, + { "id": "t_door_boarded", "fg": 3540 }, + { "id": "t_door_boarded_damaged", "fg": 3541 }, + { "id": "t_door_glass_c", "fg": 3542 }, + { "id": "t_door_glass_o", "fg": 3543 }, + { "id": "t_door_lab_c", "fg": 3544 }, + { "id": "t_door_lab_o", "fg": 3545 }, + { "id": "t_door_metal_c_peep", "fg": 3546 }, + { "id": [ "t_door_metal_locked", "t_door_metal_pickable" ], "fg": 3547 }, + { "id": "t_elevator", "fg": [ { "weight": 100, "sprite": 3554 }, { "weight": 100, "sprite": 3555 } ] }, { "id": "t_fence_season_spring", "multitile": true, - "fg": 3412, - "bg": 3567, + "fg": 3571, + "bg": 3726, "additional_tiles": [ - { "id": "center", "bg": 3567, "fg": 3397 }, - { "id": "corner", "bg": 3567, "fg": [ 3399, 3401, 3400, 3398 ] }, - { "id": "t_connection", "bg": 3567, "fg": [ 3409, 3411, 3410, 3408 ] }, - { "id": "edge", "bg": 3567, "fg": [ 3403, 3402 ] }, - { "id": "end_piece", "bg": 3567, "fg": [ 3405, 3407, 3406, 3404 ] }, - { "bg": 3567, "id": "unconnected", "fg": 3412 } + { "id": "center", "bg": 3726, "fg": 3556 }, + { "id": "corner", "bg": 3726, "fg": [ 3558, 3560, 3559, 3557 ] }, + { "id": "t_connection", "bg": 3726, "fg": [ 3568, 3570, 3569, 3567 ] }, + { "id": "edge", "bg": 3726, "fg": [ 3562, 3561 ] }, + { "id": "end_piece", "bg": 3726, "fg": [ 3564, 3566, 3565, 3563 ] }, + { "bg": 3726, "id": "unconnected", "fg": 3571 } ] }, { "id": "t_fence_season_summer", "multitile": true, - "fg": 3412, - "bg": 3577, + "fg": 3571, + "bg": 3736, "additional_tiles": [ - { "id": "center", "bg": 3577, "fg": 3397 }, - { "id": "corner", "bg": 3577, "fg": [ 3399, 3401, 3400, 3398 ] }, - { "id": "t_connection", "bg": 3577, "fg": [ 3409, 3411, 3410, 3408 ] }, - { "id": "edge", "bg": 3577, "fg": [ 3403, 3402 ] }, - { "id": "end_piece", "bg": 3577, "fg": [ 3405, 3407, 3406, 3404 ] }, - { "bg": 3577, "id": "unconnected", "fg": 3412 } + { "id": "center", "bg": 3736, "fg": 3556 }, + { "id": "corner", "bg": 3736, "fg": [ 3558, 3560, 3559, 3557 ] }, + { "id": "t_connection", "bg": 3736, "fg": [ 3568, 3570, 3569, 3567 ] }, + { "id": "edge", "bg": 3736, "fg": [ 3562, 3561 ] }, + { "id": "end_piece", "bg": 3736, "fg": [ 3564, 3566, 3565, 3563 ] }, + { "bg": 3736, "id": "unconnected", "fg": 3571 } ] }, { "id": "t_fence_season_autumn", "multitile": true, - "fg": 3412, - "bg": 3572, + "fg": 3571, + "bg": 3731, "additional_tiles": [ - { "id": "center", "bg": 3572, "fg": 3397 }, - { "id": "corner", "bg": 3572, "fg": [ 3399, 3401, 3400, 3398 ] }, - { "id": "t_connection", "bg": 3572, "fg": [ 3409, 3411, 3410, 3408 ] }, - { "id": "edge", "bg": 3572, "fg": [ 3403, 3402 ] }, - { "id": "end_piece", "bg": 3572, "fg": [ 3405, 3407, 3406, 3404 ] }, - { "bg": 3572, "id": "unconnected", "fg": 3412 } + { "id": "center", "bg": 3731, "fg": 3556 }, + { "id": "corner", "bg": 3731, "fg": [ 3558, 3560, 3559, 3557 ] }, + { "id": "t_connection", "bg": 3731, "fg": [ 3568, 3570, 3569, 3567 ] }, + { "id": "edge", "bg": 3731, "fg": [ 3562, 3561 ] }, + { "id": "end_piece", "bg": 3731, "fg": [ 3564, 3566, 3565, 3563 ] }, + { "bg": 3731, "id": "unconnected", "fg": 3571 } ] }, { "id": "t_fence_season_winter", "multitile": true, - "fg": 3412, - "bg": 3063, - "additional_tiles": [ - { "id": "center", "bg": 3063, "fg": 3397 }, - { "id": "corner", "bg": 3063, "fg": [ 3399, 3401, 3400, 3398 ] }, - { "id": "t_connection", "bg": 3063, "fg": [ 3409, 3411, 3410, 3408 ] }, - { "id": "edge", "bg": 3063, "fg": [ 3403, 3402 ] }, - { "id": "end_piece", "bg": 3063, "fg": [ 3405, 3407, 3406, 3404 ] }, - { "bg": 3063, "id": "unconnected", "fg": 3412 } - ] - }, - { "id": "t_fencegate_c_season_spring", "fg": 3413, "bg": 3567 }, - { "id": "t_fencegate_c_season_summer", "fg": 3413, "bg": 3577 }, - { "id": "t_fencegate_c_season_autumn", "fg": 3413, "bg": 3572 }, - { "id": "t_fencegate_c_season_winter", "fg": 3413, "bg": 3063 }, - { "id": "t_fencegate_o_season_spring", "fg": 3414, "bg": 3567 }, - { "id": "t_fencegate_o_season_summer", "fg": 3414, "bg": 3577 }, - { "id": "t_fencegate_o_season_autumn", "fg": 3414, "bg": 3572 }, - { "id": "t_fencegate_o_season_winter", "fg": 3414, "bg": 3063 }, - { "id": "t_fence_post_season_spring", "fg": 3412, "bg": 3567 }, - { "id": "t_fence_post_season_summer", "fg": 3412, "bg": 3577 }, - { "id": "t_fence_post_season_autumn", "fg": 3412, "bg": 3572 }, - { "id": "t_fence_post_season_winter", "fg": 3412, "bg": 3063 }, + "fg": 3571, + "bg": 3222, + "additional_tiles": [ + { "id": "center", "bg": 3222, "fg": 3556 }, + { "id": "corner", "bg": 3222, "fg": [ 3558, 3560, 3559, 3557 ] }, + { "id": "t_connection", "bg": 3222, "fg": [ 3568, 3570, 3569, 3567 ] }, + { "id": "edge", "bg": 3222, "fg": [ 3562, 3561 ] }, + { "id": "end_piece", "bg": 3222, "fg": [ 3564, 3566, 3565, 3563 ] }, + { "bg": 3222, "id": "unconnected", "fg": 3571 } + ] + }, + { "id": "t_fencegate_c_season_spring", "fg": 3572, "bg": 3726 }, + { "id": "t_fencegate_c_season_summer", "fg": 3572, "bg": 3736 }, + { "id": "t_fencegate_c_season_autumn", "fg": 3572, "bg": 3731 }, + { "id": "t_fencegate_c_season_winter", "fg": 3572, "bg": 3222 }, + { "id": "t_fencegate_o_season_spring", "fg": 3573, "bg": 3726 }, + { "id": "t_fencegate_o_season_summer", "fg": 3573, "bg": 3736 }, + { "id": "t_fencegate_o_season_autumn", "fg": 3573, "bg": 3731 }, + { "id": "t_fencegate_o_season_winter", "fg": 3573, "bg": 3222 }, + { "id": "t_fence_post_season_spring", "fg": 3571, "bg": 3726 }, + { "id": "t_fence_post_season_summer", "fg": 3571, "bg": 3736 }, + { "id": "t_fence_post_season_autumn", "fg": 3571, "bg": 3731 }, + { "id": "t_fence_post_season_winter", "fg": 3571, "bg": 3222 }, { "id": "t_fence_barbed_season_spring", "multitile": true, - "fg": 3430, - "bg": 3567, + "fg": 3589, + "bg": 3726, "additional_tiles": [ - { "id": "center", "bg": 3567, "fg": 3415 }, - { "id": "corner", "bg": 3567, "fg": [ 3417, 3419, 3418, 3416 ] }, - { "id": "t_connection", "bg": 3567, "fg": [ 3427, 3429, 3428, 3426 ] }, - { "id": "edge", "bg": 3567, "fg": [ 3421, 3420 ] }, - { "id": "end_piece", "bg": 3567, "fg": [ 3423, 3425, 3424, 3422 ] }, - { "bg": 3567, "id": "unconnected", "fg": 3430 } + { "id": "center", "bg": 3726, "fg": 3574 }, + { "id": "corner", "bg": 3726, "fg": [ 3576, 3578, 3577, 3575 ] }, + { "id": "t_connection", "bg": 3726, "fg": [ 3586, 3588, 3587, 3585 ] }, + { "id": "edge", "bg": 3726, "fg": [ 3580, 3579 ] }, + { "id": "end_piece", "bg": 3726, "fg": [ 3582, 3584, 3583, 3581 ] }, + { "bg": 3726, "id": "unconnected", "fg": 3589 } ] }, { "id": "t_fence_barbed_season_summer", "multitile": true, - "fg": 3430, - "bg": 3577, + "fg": 3589, + "bg": 3736, "additional_tiles": [ - { "id": "center", "bg": 3577, "fg": 3415 }, - { "id": "corner", "bg": 3577, "fg": [ 3417, 3419, 3418, 3416 ] }, - { "id": "t_connection", "bg": 3577, "fg": [ 3427, 3429, 3428, 3426 ] }, - { "id": "edge", "bg": 3577, "fg": [ 3421, 3420 ] }, - { "id": "end_piece", "bg": 3577, "fg": [ 3423, 3425, 3424, 3422 ] }, - { "bg": 3577, "id": "unconnected", "fg": 3430 } + { "id": "center", "bg": 3736, "fg": 3574 }, + { "id": "corner", "bg": 3736, "fg": [ 3576, 3578, 3577, 3575 ] }, + { "id": "t_connection", "bg": 3736, "fg": [ 3586, 3588, 3587, 3585 ] }, + { "id": "edge", "bg": 3736, "fg": [ 3580, 3579 ] }, + { "id": "end_piece", "bg": 3736, "fg": [ 3582, 3584, 3583, 3581 ] }, + { "bg": 3736, "id": "unconnected", "fg": 3589 } ] }, { "id": "t_fence_barbed_season_autumn", "multitile": true, - "fg": 3430, - "bg": 3572, + "fg": 3589, + "bg": 3731, "additional_tiles": [ - { "id": "center", "bg": 3572, "fg": 3415 }, - { "id": "corner", "bg": 3572, "fg": [ 3417, 3419, 3418, 3416 ] }, - { "id": "t_connection", "bg": 3572, "fg": [ 3427, 3429, 3428, 3426 ] }, - { "id": "edge", "bg": 3572, "fg": [ 3421, 3420 ] }, - { "id": "end_piece", "bg": 3572, "fg": [ 3423, 3425, 3424, 3422 ] }, - { "bg": 3572, "id": "unconnected", "fg": 3430 } + { "id": "center", "bg": 3731, "fg": 3574 }, + { "id": "corner", "bg": 3731, "fg": [ 3576, 3578, 3577, 3575 ] }, + { "id": "t_connection", "bg": 3731, "fg": [ 3586, 3588, 3587, 3585 ] }, + { "id": "edge", "bg": 3731, "fg": [ 3580, 3579 ] }, + { "id": "end_piece", "bg": 3731, "fg": [ 3582, 3584, 3583, 3581 ] }, + { "bg": 3731, "id": "unconnected", "fg": 3589 } ] }, { "id": "t_fence_barbed_season_winter", "multitile": true, - "fg": 3430, - "bg": 3063, + "fg": 3589, + "bg": 3222, "additional_tiles": [ - { "id": "center", "bg": 3063, "fg": 3415 }, - { "id": "corner", "bg": 3063, "fg": [ 3417, 3419, 3418, 3416 ] }, - { "id": "t_connection", "bg": 3063, "fg": [ 3427, 3429, 3428, 3426 ] }, - { "id": "edge", "bg": 3063, "fg": [ 3421, 3420 ] }, - { "id": "end_piece", "bg": 3063, "fg": [ 3423, 3425, 3424, 3422 ] }, - { "bg": 3063, "id": "unconnected", "fg": 3430 } + { "id": "center", "bg": 3222, "fg": 3574 }, + { "id": "corner", "bg": 3222, "fg": [ 3576, 3578, 3577, 3575 ] }, + { "id": "t_connection", "bg": 3222, "fg": [ 3586, 3588, 3587, 3585 ] }, + { "id": "edge", "bg": 3222, "fg": [ 3580, 3579 ] }, + { "id": "end_piece", "bg": 3222, "fg": [ 3582, 3584, 3583, 3581 ] }, + { "bg": 3222, "id": "unconnected", "fg": 3589 } ] }, { "id": "t_fence_rope_season_spring", - "fg": 3447, + "fg": 3606, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 3432, "bg": 3300 }, - { "id": "corner", "fg": [ 3434, 3436, 3435, 3433 ], "bg": [ 3305, 3307, 3306, 3304 ] }, - { "id": "t_connection", "fg": [ 3444, 3446, 3445, 3443 ], "bg": [ 3315, 3317, 3316, 3314 ] }, - { "id": "edge", "fg": [ 3438, 3437 ], "bg": [ 3309, 3308 ] }, - { "id": "end_piece", "fg": [ 3440, 3442, 3441, 3439 ], "bg": [ 3311, 3313, 3312, 3310 ] }, - { "id": "unconnected", "fg": [ 3447, 3447 ], "bg": [ 3318, 3318 ] } + { "id": "center", "fg": 3591, "bg": 3459 }, + { "id": "corner", "fg": [ 3593, 3595, 3594, 3592 ], "bg": [ 3464, 3466, 3465, 3463 ] }, + { "id": "t_connection", "fg": [ 3603, 3605, 3604, 3602 ], "bg": [ 3474, 3476, 3475, 3473 ] }, + { "id": "edge", "fg": [ 3597, 3596 ], "bg": [ 3468, 3467 ] }, + { "id": "end_piece", "fg": [ 3599, 3601, 3600, 3598 ], "bg": [ 3470, 3472, 3471, 3469 ] }, + { "id": "unconnected", "fg": [ 3606, 3606 ], "bg": [ 3477, 3477 ] } ] }, { "id": "t_fence_rope_season_summer", - "fg": 3447, + "fg": 3606, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 3432, "bg": 3338 }, - { "id": "corner", "fg": [ 3434, 3436, 3435, 3433 ], "bg": [ 3343, 3345, 3344, 3342 ] }, - { "id": "t_connection", "fg": [ 3444, 3446, 3445, 3443 ], "bg": [ 3353, 3355, 3354, 3352 ] }, - { "id": "edge", "fg": [ 3438, 3437 ], "bg": [ 3347, 3346 ] }, - { "id": "end_piece", "fg": [ 3440, 3442, 3441, 3439 ], "bg": [ 3349, 3351, 3350, 3348 ] }, - { "id": "unconnected", "fg": [ 3447, 3447 ], "bg": [ 3356, 3356 ] } + { "id": "center", "fg": 3591, "bg": 3497 }, + { "id": "corner", "fg": [ 3593, 3595, 3594, 3592 ], "bg": [ 3502, 3504, 3503, 3501 ] }, + { "id": "t_connection", "fg": [ 3603, 3605, 3604, 3602 ], "bg": [ 3512, 3514, 3513, 3511 ] }, + { "id": "edge", "fg": [ 3597, 3596 ], "bg": [ 3506, 3505 ] }, + { "id": "end_piece", "fg": [ 3599, 3601, 3600, 3598 ], "bg": [ 3508, 3510, 3509, 3507 ] }, + { "id": "unconnected", "fg": [ 3606, 3606 ], "bg": [ 3515, 3515 ] } ] }, { "id": "t_fence_rope_season_autumn", - "fg": 3447, + "fg": 3606, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 3432, "bg": 3319 }, - { "id": "corner", "fg": [ 3434, 3436, 3435, 3433 ], "bg": [ 3324, 3326, 3325, 3323 ] }, - { "id": "t_connection", "fg": [ 3444, 3446, 3445, 3443 ], "bg": [ 3334, 3336, 3335, 3333 ] }, - { "id": "edge", "fg": [ 3438, 3437 ], "bg": [ 3328, 3327 ] }, - { "id": "end_piece", "fg": [ 3440, 3442, 3441, 3439 ], "bg": [ 3330, 3332, 3331, 3329 ] }, - { "id": "unconnected", "fg": [ 3447, 3447 ], "bg": [ 3337, 3337 ] } + { "id": "center", "fg": 3591, "bg": 3478 }, + { "id": "corner", "fg": [ 3593, 3595, 3594, 3592 ], "bg": [ 3483, 3485, 3484, 3482 ] }, + { "id": "t_connection", "fg": [ 3603, 3605, 3604, 3602 ], "bg": [ 3493, 3495, 3494, 3492 ] }, + { "id": "edge", "fg": [ 3597, 3596 ], "bg": [ 3487, 3486 ] }, + { "id": "end_piece", "fg": [ 3599, 3601, 3600, 3598 ], "bg": [ 3489, 3491, 3490, 3488 ] }, + { "id": "unconnected", "fg": [ 3606, 3606 ], "bg": [ 3496, 3496 ] } ] }, { "id": "t_fence_rope_season_winter", - "fg": 3447, + "fg": 3606, "multitile": true, "additional_tiles": [ { "id": "center", - "fg": 3432, + "fg": 3591, "bg": [ - { "weight": 100, "sprite": 3357 }, - { "weight": 100, "sprite": 3358 }, - { "weight": 100, "sprite": 3359 }, - { "weight": 100, "sprite": 3360 } + { "weight": 100, "sprite": 3516 }, + { "weight": 100, "sprite": 3517 }, + { "weight": 100, "sprite": 3518 }, + { "weight": 100, "sprite": 3519 } ] }, { "id": "corner", - "fg": [ 3434, 3436, 3435, 3433 ], + "fg": [ 3593, 3595, 3594, 3592 ], "bg": [ - { "weight": 100, "sprite": 3357 }, - { "weight": 100, "sprite": 3358 }, - { "weight": 100, "sprite": 3359 }, - { "weight": 100, "sprite": 3360 } + { "weight": 100, "sprite": 3516 }, + { "weight": 100, "sprite": 3517 }, + { "weight": 100, "sprite": 3518 }, + { "weight": 100, "sprite": 3519 } ] }, { "id": "t_connection", - "fg": [ 3444, 3446, 3445, 3443 ], + "fg": [ 3603, 3605, 3604, 3602 ], "bg": [ - { "weight": 100, "sprite": 3357 }, - { "weight": 100, "sprite": 3358 }, - { "weight": 100, "sprite": 3359 }, - { "weight": 100, "sprite": 3360 } + { "weight": 100, "sprite": 3516 }, + { "weight": 100, "sprite": 3517 }, + { "weight": 100, "sprite": 3518 }, + { "weight": 100, "sprite": 3519 } ] }, { "id": "edge", - "fg": [ 3438, 3437 ], + "fg": [ 3597, 3596 ], "bg": [ - { "weight": 100, "sprite": 3357 }, - { "weight": 100, "sprite": 3358 }, - { "weight": 100, "sprite": 3359 }, - { "weight": 100, "sprite": 3360 } + { "weight": 100, "sprite": 3516 }, + { "weight": 100, "sprite": 3517 }, + { "weight": 100, "sprite": 3518 }, + { "weight": 100, "sprite": 3519 } ] }, { "id": "end_piece", - "fg": [ 3440, 3442, 3441, 3439 ], + "fg": [ 3599, 3601, 3600, 3598 ], "bg": [ - { "weight": 100, "sprite": 3357 }, - { "weight": 100, "sprite": 3358 }, - { "weight": 100, "sprite": 3359 }, - { "weight": 100, "sprite": 3360 } + { "weight": 100, "sprite": 3516 }, + { "weight": 100, "sprite": 3517 }, + { "weight": 100, "sprite": 3518 }, + { "weight": 100, "sprite": 3519 } ] }, { "id": "unconnected", - "fg": [ 3447, 3447 ], + "fg": [ 3606, 3606 ], "bg": [ - { "weight": 100, "sprite": 3357 }, - { "weight": 100, "sprite": 3358 }, - { "weight": 100, "sprite": 3359 }, - { "weight": 100, "sprite": 3360 } + { "weight": 100, "sprite": 3516 }, + { "weight": 100, "sprite": 3517 }, + { "weight": 100, "sprite": 3518 }, + { "weight": 100, "sprite": 3519 } ] } ] @@ -4763,2046 +4935,2066 @@ { "id": "t_fence_wire_season_spring", "multitile": true, - "fg": 3463, - "bg": 3567, + "fg": 3622, + "bg": 3726, "additional_tiles": [ - { "id": "center", "bg": 3567, "fg": 3448 }, - { "id": "corner", "bg": 3567, "fg": [ 3450, 3452, 3451, 3449 ] }, - { "id": "t_connection", "bg": 3567, "fg": [ 3460, 3462, 3461, 3459 ] }, - { "id": "edge", "bg": 3567, "fg": [ 3454, 3453 ] }, - { "id": "end_piece", "bg": 3567, "fg": [ 3456, 3458, 3457, 3455 ] }, - { "bg": 3567, "id": "unconnected", "fg": 3463 } + { "id": "center", "bg": 3726, "fg": 3607 }, + { "id": "corner", "bg": 3726, "fg": [ 3609, 3611, 3610, 3608 ] }, + { "id": "t_connection", "bg": 3726, "fg": [ 3619, 3621, 3620, 3618 ] }, + { "id": "edge", "bg": 3726, "fg": [ 3613, 3612 ] }, + { "id": "end_piece", "bg": 3726, "fg": [ 3615, 3617, 3616, 3614 ] }, + { "bg": 3726, "id": "unconnected", "fg": 3622 } ] }, { "id": "t_fence_wire_season_summer", "multitile": true, - "fg": 3463, - "bg": 3577, + "fg": 3622, + "bg": 3736, "additional_tiles": [ - { "id": "center", "bg": 3577, "fg": 3448 }, - { "id": "corner", "bg": 3577, "fg": [ 3450, 3452, 3451, 3449 ] }, - { "id": "t_connection", "bg": 3577, "fg": [ 3460, 3462, 3461, 3459 ] }, - { "id": "edge", "bg": 3577, "fg": [ 3454, 3453 ] }, - { "id": "end_piece", "bg": 3577, "fg": [ 3456, 3458, 3457, 3455 ] }, - { "bg": 3577, "id": "unconnected", "fg": 3463 } + { "id": "center", "bg": 3736, "fg": 3607 }, + { "id": "corner", "bg": 3736, "fg": [ 3609, 3611, 3610, 3608 ] }, + { "id": "t_connection", "bg": 3736, "fg": [ 3619, 3621, 3620, 3618 ] }, + { "id": "edge", "bg": 3736, "fg": [ 3613, 3612 ] }, + { "id": "end_piece", "bg": 3736, "fg": [ 3615, 3617, 3616, 3614 ] }, + { "bg": 3736, "id": "unconnected", "fg": 3622 } ] }, { "id": "t_fence_wire_season_autumn", "multitile": true, - "fg": 3463, - "bg": 3572, + "fg": 3622, + "bg": 3731, "additional_tiles": [ - { "id": "center", "bg": 3572, "fg": 3448 }, - { "id": "corner", "bg": 3572, "fg": [ 3450, 3452, 3451, 3449 ] }, - { "id": "t_connection", "bg": 3572, "fg": [ 3460, 3462, 3461, 3459 ] }, - { "id": "edge", "bg": 3572, "fg": [ 3454, 3453 ] }, - { "id": "end_piece", "bg": 3572, "fg": [ 3456, 3458, 3457, 3455 ] }, - { "bg": 3572, "id": "unconnected", "fg": 3463 } + { "id": "center", "bg": 3731, "fg": 3607 }, + { "id": "corner", "bg": 3731, "fg": [ 3609, 3611, 3610, 3608 ] }, + { "id": "t_connection", "bg": 3731, "fg": [ 3619, 3621, 3620, 3618 ] }, + { "id": "edge", "bg": 3731, "fg": [ 3613, 3612 ] }, + { "id": "end_piece", "bg": 3731, "fg": [ 3615, 3617, 3616, 3614 ] }, + { "bg": 3731, "id": "unconnected", "fg": 3622 } ] }, { "id": "t_fence_wire_season_winter", "multitile": true, - "fg": 3463, - "bg": 3063, + "fg": 3622, + "bg": 3222, "additional_tiles": [ - { "id": "center", "bg": 3063, "fg": 3448 }, - { "id": "corner", "bg": 3063, "fg": [ 3450, 3452, 3451, 3449 ] }, - { "id": "t_connection", "bg": 3063, "fg": [ 3460, 3462, 3461, 3459 ] }, - { "id": "edge", "bg": 3063, "fg": [ 3454, 3453 ] }, - { "id": "end_piece", "bg": 3063, "fg": [ 3456, 3458, 3457, 3455 ] }, - { "bg": 3063, "id": "unconnected", "fg": 3463 } + { "id": "center", "bg": 3222, "fg": 3607 }, + { "id": "corner", "bg": 3222, "fg": [ 3609, 3611, 3610, 3608 ] }, + { "id": "t_connection", "bg": 3222, "fg": [ 3619, 3621, 3620, 3618 ] }, + { "id": "edge", "bg": 3222, "fg": [ 3613, 3612 ] }, + { "id": "end_piece", "bg": 3222, "fg": [ 3615, 3617, 3616, 3614 ] }, + { "bg": 3222, "id": "unconnected", "fg": 3622 } ] }, { "id": "t_floor", "multitile": true, - "fg": 3481, + "fg": 3640, "additional_tiles": [ { "id": "center", - "fg": [ { "weight": 1, "sprite": 3464 }, { "weight": 1, "sprite": 3465 }, { "weight": 1, "sprite": 3466 } ] + "fg": [ { "weight": 1, "sprite": 3623 }, { "weight": 1, "sprite": 3624 }, { "weight": 1, "sprite": 3625 } ] }, - { "id": "corner", "fg": [ 3468, 3470, 3469, 3467 ] }, - { "id": "t_connection", "fg": [ 3478, 3480, 3479, 3477 ] }, - { "id": "edge", "fg": [ 3472, 3471 ] }, - { "id": "end_piece", "fg": [ 3474, 3476, 3475, 3473 ] }, - { "id": "unconnected", "fg": 3481 } + { "id": "corner", "fg": [ 3627, 3629, 3628, 3626 ] }, + { "id": "t_connection", "fg": [ 3637, 3639, 3638, 3636 ] }, + { "id": "edge", "fg": [ 3631, 3630 ] }, + { "id": "end_piece", "fg": [ 3633, 3635, 3634, 3632 ] }, + { "id": "unconnected", "fg": 3640 } ] }, { "id": "t_floor_resin", "multitile": true, - "fg": 3497, + "fg": 3656, "additional_tiles": [ - { "id": "center", "fg": 3482 }, - { "id": "corner", "fg": [ 3484, 3486, 3485, 3483 ] }, - { "id": "t_connection", "fg": [ 3494, 3496, 3495, 3493 ] }, - { "id": "edge", "fg": [ 3488, 3487 ] }, - { "id": "end_piece", "fg": [ 3490, 3492, 3491, 3489 ] }, - { "id": "unconnected", "fg": 3497 } + { "id": "center", "fg": 3641 }, + { "id": "corner", "fg": [ 3643, 3645, 3644, 3642 ] }, + { "id": "t_connection", "fg": [ 3653, 3655, 3654, 3652 ] }, + { "id": "edge", "fg": [ 3647, 3646 ] }, + { "id": "end_piece", "fg": [ 3649, 3651, 3650, 3648 ] }, + { "id": "unconnected", "fg": 3656 } ] }, { "id": "t_floor_wax", "multitile": true, - "fg": 3513, + "fg": 3672, "additional_tiles": [ - { "id": "center", "fg": 3498 }, - { "id": "corner", "fg": [ 3500, 3502, 3501, 3499 ] }, - { "id": "t_connection", "fg": [ 3510, 3512, 3511, 3509 ] }, - { "id": "edge", "fg": [ 3504, 3503 ] }, - { "id": "end_piece", "fg": [ 3506, 3508, 3507, 3505 ] }, - { "id": "unconnected", "fg": 3513 } + { "id": "center", "fg": 3657 }, + { "id": "corner", "fg": [ 3659, 3661, 3660, 3658 ] }, + { "id": "t_connection", "fg": [ 3669, 3671, 3670, 3668 ] }, + { "id": "edge", "fg": [ 3663, 3662 ] }, + { "id": "end_piece", "fg": [ 3665, 3667, 3666, 3664 ] }, + { "id": "unconnected", "fg": 3672 } ] }, { "id": "t_floor_waxed", "multitile": true, - "fg": 3529, + "fg": 3688, "additional_tiles": [ - { "id": "center", "fg": 3514 }, - { "id": "corner", "fg": [ 3516, 3518, 3517, 3515 ] }, - { "id": "t_connection", "fg": [ 3526, 3528, 3527, 3525 ] }, - { "id": "edge", "fg": [ 3520, 3519 ] }, - { "id": "end_piece", "fg": [ 3522, 3524, 3523, 3521 ] }, - { "id": "unconnected", "fg": 3529 } + { "id": "center", "fg": 3673 }, + { "id": "corner", "fg": [ 3675, 3677, 3676, 3674 ] }, + { "id": "t_connection", "fg": [ 3685, 3687, 3686, 3684 ] }, + { "id": "edge", "fg": [ 3679, 3678 ] }, + { "id": "end_piece", "fg": [ 3681, 3683, 3682, 3680 ] }, + { "id": "unconnected", "fg": 3688 } ] }, { "id": "t_floor_waxed_y", "multitile": true, - "fg": 3545, + "fg": 3704, "additional_tiles": [ - { "id": "center", "fg": 3530 }, - { "id": "corner", "fg": [ 3532, 3534, 3533, 3531 ] }, - { "id": "t_connection", "fg": [ 3542, 3544, 3543, 3541 ] }, - { "id": "edge", "fg": [ 3536, 3535 ] }, - { "id": "end_piece", "fg": [ 3538, 3540, 3539, 3537 ] }, - { "id": "unconnected", "fg": 3545 } + { "id": "center", "fg": 3689 }, + { "id": "corner", "fg": [ 3691, 3693, 3692, 3690 ] }, + { "id": "t_connection", "fg": [ 3701, 3703, 3702, 3700 ] }, + { "id": "edge", "fg": [ 3695, 3694 ] }, + { "id": "end_piece", "fg": [ 3697, 3699, 3698, 3696 ] }, + { "id": "unconnected", "fg": 3704 } ] }, { "id": [ "t_fungus", "t_fungus_floor_out" ], "multitile": true, - "fg": 3561, - "bg": 3567, + "fg": 3720, + "bg": 3726, "additional_tiles": [ - { "id": "center", "bg": 3567, "fg": 3546 }, - { "id": "corner", "bg": 3567, "fg": [ 3548, 3550, 3549, 3547 ] }, - { "id": "t_connection", "bg": 3567, "fg": [ 3558, 3560, 3559, 3557 ] }, - { "id": "edge", "bg": 3567, "fg": [ 3552, 3551 ] }, - { "id": "end_piece", "bg": 3567, "fg": [ 3554, 3556, 3555, 3553 ] }, - { "bg": 3567, "id": "unconnected", "fg": 3561 } + { "id": "center", "bg": 3726, "fg": 3705 }, + { "id": "corner", "bg": 3726, "fg": [ 3707, 3709, 3708, 3706 ] }, + { "id": "t_connection", "bg": 3726, "fg": [ 3717, 3719, 3718, 3716 ] }, + { "id": "edge", "bg": 3726, "fg": [ 3711, 3710 ] }, + { "id": "end_piece", "bg": 3726, "fg": [ 3713, 3715, 3714, 3712 ] }, + { "bg": 3726, "id": "unconnected", "fg": 3720 } ] }, { "id": "t_fungus_season_summer", "multitile": true, - "fg": 3561, - "bg": 3577, + "fg": 3720, + "bg": 3736, "additional_tiles": [ - { "id": "center", "bg": 3577, "fg": 3546 }, - { "id": "corner", "bg": 3577, "fg": [ 3548, 3550, 3549, 3547 ] }, - { "id": "t_connection", "bg": 3577, "fg": [ 3558, 3560, 3559, 3557 ] }, - { "id": "edge", "bg": 3577, "fg": [ 3552, 3551 ] }, - { "id": "end_piece", "bg": 3577, "fg": [ 3554, 3556, 3555, 3553 ] }, - { "bg": 3577, "id": "unconnected", "fg": 3561 } + { "id": "center", "bg": 3736, "fg": 3705 }, + { "id": "corner", "bg": 3736, "fg": [ 3707, 3709, 3708, 3706 ] }, + { "id": "t_connection", "bg": 3736, "fg": [ 3717, 3719, 3718, 3716 ] }, + { "id": "edge", "bg": 3736, "fg": [ 3711, 3710 ] }, + { "id": "end_piece", "bg": 3736, "fg": [ 3713, 3715, 3714, 3712 ] }, + { "bg": 3736, "id": "unconnected", "fg": 3720 } ] }, { "id": "t_fungus_season_autumn", "multitile": true, - "fg": 3561, - "bg": 3572, + "fg": 3720, + "bg": 3731, "additional_tiles": [ - { "id": "center", "bg": 3572, "fg": 3546 }, - { "id": "corner", "bg": 3572, "fg": [ 3548, 3550, 3549, 3547 ] }, - { "id": "t_connection", "bg": 3572, "fg": [ 3558, 3560, 3559, 3557 ] }, - { "id": "edge", "bg": 3572, "fg": [ 3552, 3551 ] }, - { "id": "end_piece", "bg": 3572, "fg": [ 3554, 3556, 3555, 3553 ] }, - { "bg": 3572, "id": "unconnected", "fg": 3561 } + { "id": "center", "bg": 3731, "fg": 3705 }, + { "id": "corner", "bg": 3731, "fg": [ 3707, 3709, 3708, 3706 ] }, + { "id": "t_connection", "bg": 3731, "fg": [ 3717, 3719, 3718, 3716 ] }, + { "id": "edge", "bg": 3731, "fg": [ 3711, 3710 ] }, + { "id": "end_piece", "bg": 3731, "fg": [ 3713, 3715, 3714, 3712 ] }, + { "bg": 3731, "id": "unconnected", "fg": 3720 } ] }, { "id": "t_fungus_season_winter", "multitile": true, - "fg": 3561, - "bg": 3063, + "fg": 3720, + "bg": 3222, "additional_tiles": [ - { "id": "center", "bg": 3063, "fg": 3546 }, - { "id": "corner", "bg": 3063, "fg": [ 3548, 3550, 3549, 3547 ] }, - { "id": "t_connection", "bg": 3063, "fg": [ 3558, 3560, 3559, 3557 ] }, - { "id": "edge", "bg": 3063, "fg": [ 3552, 3551 ] }, - { "id": "end_piece", "bg": 3063, "fg": [ 3554, 3556, 3555, 3553 ] }, - { "bg": 3063, "id": "unconnected", "fg": 3561 } + { "id": "center", "bg": 3222, "fg": 3705 }, + { "id": "corner", "bg": 3222, "fg": [ 3707, 3709, 3708, 3706 ] }, + { "id": "t_connection", "bg": 3222, "fg": [ 3717, 3719, 3718, 3716 ] }, + { "id": "edge", "bg": 3222, "fg": [ 3711, 3710 ] }, + { "id": "end_piece", "bg": 3222, "fg": [ 3713, 3715, 3714, 3712 ] }, + { "bg": 3222, "id": "unconnected", "fg": 3720 } ] }, { "id": [ "t_fungus_floor_in", "t_fungus_floor_sup" ], "multitile": true, - "fg": 3561, - "bg": 4215, + "fg": 3720, + "bg": 4374, "additional_tiles": [ - { "id": "center", "bg": 4215, "fg": 3546 }, - { "id": "corner", "bg": 4215, "fg": [ 3548, 3550, 3549, 3547 ] }, - { "id": "t_connection", "bg": 4215, "fg": [ 3558, 3560, 3559, 3557 ] }, - { "id": "edge", "bg": 4215, "fg": [ 3552, 3551 ] }, - { "id": "end_piece", "bg": 4215, "fg": [ 3554, 3556, 3555, 3553 ] }, - { "bg": 4215, "id": "unconnected", "fg": [ 3561, 3561 ] } + { "id": "center", "bg": 4374, "fg": 3705 }, + { "id": "corner", "bg": 4374, "fg": [ 3707, 3709, 3708, 3706 ] }, + { "id": "t_connection", "bg": 4374, "fg": [ 3717, 3719, 3718, 3716 ] }, + { "id": "edge", "bg": 4374, "fg": [ 3711, 3710 ] }, + { "id": "end_piece", "bg": 4374, "fg": [ 3713, 3715, 3714, 3712 ] }, + { "bg": 4374, "id": "unconnected", "fg": [ 3720, 3720 ] } ] }, - { "id": "t_gates_mech_control", "fg": 3562, "bg": 4215 }, - { "id": "t_gates_mech_control_lab", "fg": 3563, "bg": 4215 }, - { "id": "t_gates_control_concrete", "fg": 3564, "bg": 3266 }, - { "id": "t_gates_control_concrete_lab", "fg": 3563, "bg": 5356 }, - { "id": "t_gates_control_brick", "fg": 3564, "bg": 3132 }, - { "id": "t_gates_control_brick_lab", "fg": 3563, "bg": 3132 }, - { "id": "t_gates_control_metal", "fg": 3564, "bg": 5360 }, - { "id": "t_gates_control_metal_lab", "fg": 3563, "bg": 5360 }, - { "id": "t_elevator_control", "fg": 3565, "bg": 4215 }, - { "id": "t_elevator_control_off", "fg": 3566, "bg": 4215 }, + { "id": "t_gates_mech_control", "fg": 3721, "bg": 4374 }, + { "id": "t_gates_mech_control_lab", "fg": 3722, "bg": 4374 }, + { "id": "t_gates_control_concrete", "fg": 3723, "bg": 3425 }, + { "id": "t_gates_control_concrete_lab", "fg": 3722, "bg": 5528 }, + { "id": "t_gates_control_brick", "fg": 3723, "bg": 3291 }, + { "id": "t_gates_control_brick_lab", "fg": 3722, "bg": 3291 }, + { "id": "t_gates_control_metal", "fg": 3723, "bg": 5532 }, + { "id": "t_gates_control_metal_lab", "fg": 3722, "bg": 5532 }, + { "id": "t_elevator_control", "fg": 3724, "bg": 4374 }, + { "id": "t_elevator_control_off", "fg": 3725, "bg": 4374 }, { "id": "t_grass", "fg": [ - { "weight": 1, "sprite": 3568 }, - { "weight": 1, "sprite": 3569 }, - { "weight": 1, "sprite": 3570 }, - { "weight": 1, "sprite": 3571 } + { "weight": 1, "sprite": 3727 }, + { "weight": 1, "sprite": 3728 }, + { "weight": 1, "sprite": 3729 }, + { "weight": 1, "sprite": 3730 } ] }, { "id": "t_grass_season_summer", "fg": [ - { "weight": 1, "sprite": 3578 }, - { "weight": 1, "sprite": 3579 }, - { "weight": 1, "sprite": 3580 }, - { "weight": 1, "sprite": 3581 } + { "weight": 1, "sprite": 3737 }, + { "weight": 1, "sprite": 3738 }, + { "weight": 1, "sprite": 3739 }, + { "weight": 1, "sprite": 3740 } ] }, { "id": "t_grass_season_autumn", "fg": [ - { "weight": 1, "sprite": 3573 }, - { "weight": 1, "sprite": 3574 }, - { "weight": 1, "sprite": 3575 }, - { "weight": 1, "sprite": 3576 } + { "weight": 1, "sprite": 3732 }, + { "weight": 1, "sprite": 3733 }, + { "weight": 1, "sprite": 3734 }, + { "weight": 1, "sprite": 3735 } ] }, { "id": "t_grass_season_winter", - "fg": 3081, - "bg": 3063, + "fg": 3240, + "bg": 3222, "multitile": true, "additional_tiles": [ { "id": "center", "fg": [ - { "weight": 1, "sprite": 3063 }, - { "weight": 1, "sprite": 3064 }, - { "weight": 1, "sprite": 3065 }, - { "weight": 1, "sprite": 3066 } + { "weight": 1, "sprite": 3222 }, + { "weight": 1, "sprite": 3223 }, + { "weight": 1, "sprite": 3224 }, + { "weight": 1, "sprite": 3225 } ] }, - { "id": "corner", "bg": 3063, "fg": [ 3068, 3070, 3069, 3067 ] }, - { "id": "t_connection", "bg": 3063, "fg": [ 3078, 3080, 3079, 3077 ] }, - { "id": "edge", "bg": 3063, "fg": [ 3072, 3071 ] }, - { "id": "end_piece", "bg": 3063, "fg": [ 3074, 3076, 3075, 3073 ] }, - { "bg": 3063, "id": "unconnected", "fg": 3081 } + { "id": "corner", "bg": 3222, "fg": [ 3227, 3229, 3228, 3226 ] }, + { "id": "t_connection", "bg": 3222, "fg": [ 3237, 3239, 3238, 3236 ] }, + { "id": "edge", "bg": 3222, "fg": [ 3231, 3230 ] }, + { "id": "end_piece", "bg": 3222, "fg": [ 3233, 3235, 3234, 3232 ] }, + { "bg": 3222, "id": "unconnected", "fg": 3240 } ] }, { "id": "t_grass_dead", "multitile": true, - "fg": 3597, - "bg": 3567, + "fg": 3756, + "bg": 3726, "additional_tiles": [ - { "id": "center", "bg": 3567, "fg": 3582 }, - { "id": "corner", "bg": 3567, "fg": [ 3584, 3586, 3585, 3583 ] }, - { "id": "t_connection", "bg": 3567, "fg": [ 3594, 3596, 3595, 3593 ] }, - { "id": "edge", "bg": 3567, "fg": [ 3588, 3587 ] }, - { "id": "end_piece", "bg": 3567, "fg": [ 3590, 3592, 3591, 3589 ] }, - { "bg": 3567, "id": "unconnected", "fg": 3597 } + { "id": "center", "bg": 3726, "fg": 3741 }, + { "id": "corner", "bg": 3726, "fg": [ 3743, 3745, 3744, 3742 ] }, + { "id": "t_connection", "bg": 3726, "fg": [ 3753, 3755, 3754, 3752 ] }, + { "id": "edge", "bg": 3726, "fg": [ 3747, 3746 ] }, + { "id": "end_piece", "bg": 3726, "fg": [ 3749, 3751, 3750, 3748 ] }, + { "bg": 3726, "id": "unconnected", "fg": 3756 } ] }, { "id": "t_grass_dead_season_summer", "multitile": true, - "fg": 3629, - "bg": 3577, + "fg": 3788, + "bg": 3736, "additional_tiles": [ - { "id": "center", "bg": 3577, "fg": 3614 }, - { "id": "corner", "bg": 3577, "fg": [ 3616, 3618, 3617, 3615 ] }, - { "id": "t_connection", "bg": 3577, "fg": [ 3626, 3628, 3627, 3625 ] }, - { "id": "edge", "bg": 3577, "fg": [ 3620, 3619 ] }, - { "id": "end_piece", "bg": 3577, "fg": [ 3622, 3624, 3623, 3621 ] }, - { "bg": 3577, "id": "unconnected", "fg": 3629 } + { "id": "center", "bg": 3736, "fg": 3773 }, + { "id": "corner", "bg": 3736, "fg": [ 3775, 3777, 3776, 3774 ] }, + { "id": "t_connection", "bg": 3736, "fg": [ 3785, 3787, 3786, 3784 ] }, + { "id": "edge", "bg": 3736, "fg": [ 3779, 3778 ] }, + { "id": "end_piece", "bg": 3736, "fg": [ 3781, 3783, 3782, 3780 ] }, + { "bg": 3736, "id": "unconnected", "fg": 3788 } ] }, { "id": "t_grass_dead_season_autumn", "multitile": true, - "fg": 3613, - "bg": 3572, + "fg": 3772, + "bg": 3731, "additional_tiles": [ - { "id": "center", "bg": 3572, "fg": 3598 }, - { "id": "corner", "bg": 3572, "fg": [ 3600, 3602, 3601, 3599 ] }, - { "id": "t_connection", "bg": 3572, "fg": [ 3610, 3612, 3611, 3609 ] }, - { "id": "edge", "bg": 3572, "fg": [ 3604, 3603 ] }, - { "id": "end_piece", "bg": 3572, "fg": [ 3606, 3608, 3607, 3605 ] }, - { "bg": 3572, "id": "unconnected", "fg": 3613 } + { "id": "center", "bg": 3731, "fg": 3757 }, + { "id": "corner", "bg": 3731, "fg": [ 3759, 3761, 3760, 3758 ] }, + { "id": "t_connection", "bg": 3731, "fg": [ 3769, 3771, 3770, 3768 ] }, + { "id": "edge", "bg": 3731, "fg": [ 3763, 3762 ] }, + { "id": "end_piece", "bg": 3731, "fg": [ 3765, 3767, 3766, 3764 ] }, + { "bg": 3731, "id": "unconnected", "fg": 3772 } ] }, { "id": "t_grass_dead_season_winter", "multitile": true, - "fg": 3081, - "bg": 3063, + "fg": 3240, + "bg": 3222, "additional_tiles": [ { "id": "center", - "bg": 3063, + "bg": 3222, "fg": [ - { "weight": 1, "sprite": 3063 }, - { "weight": 1, "sprite": 3064 }, - { "weight": 1, "sprite": 3065 }, - { "weight": 1, "sprite": 3066 } + { "weight": 1, "sprite": 3222 }, + { "weight": 1, "sprite": 3223 }, + { "weight": 1, "sprite": 3224 }, + { "weight": 1, "sprite": 3225 } ] }, - { "id": "corner", "bg": 3063, "fg": [ 3068, 3070, 3069, 3067 ] }, - { "id": "t_connection", "bg": 3063, "fg": [ 3078, 3080, 3079, 3077 ] }, - { "id": "edge", "bg": 3063, "fg": [ 3072, 3071 ] }, - { "id": "end_piece", "bg": 3063, "fg": [ 3074, 3076, 3075, 3073 ] }, - { "bg": 3063, "id": "unconnected", "fg": 3081 } + { "id": "corner", "bg": 3222, "fg": [ 3227, 3229, 3228, 3226 ] }, + { "id": "t_connection", "bg": 3222, "fg": [ 3237, 3239, 3238, 3236 ] }, + { "id": "edge", "bg": 3222, "fg": [ 3231, 3230 ] }, + { "id": "end_piece", "bg": 3222, "fg": [ 3233, 3235, 3234, 3232 ] }, + { "bg": 3222, "id": "unconnected", "fg": 3240 } ] }, { "id": "f_grass_long", "multitile": true, - "fg": 3645, + "fg": 3804, "additional_tiles": [ - { "id": "center", "fg": 3630 }, - { "id": "corner", "fg": [ 3632, 3634, 3633, 3631 ] }, - { "id": "t_connection", "fg": [ 3642, 3644, 3643, 3641 ] }, - { "id": "edge", "fg": [ 3636, 3635 ] }, - { "id": "end_piece", "fg": [ 3638, 3640, 3639, 3637 ] }, - { "id": "unconnected", "fg": 3645 } + { "id": "center", "fg": 3789 }, + { "id": "corner", "fg": [ 3791, 3793, 3792, 3790 ] }, + { "id": "t_connection", "fg": [ 3801, 3803, 3802, 3800 ] }, + { "id": "edge", "fg": [ 3795, 3794 ] }, + { "id": "end_piece", "fg": [ 3797, 3799, 3798, 3796 ] }, + { "id": "unconnected", "fg": 3804 } ] }, { "id": "f_grass_long_season_autumn", "multitile": true, - "fg": 3661, + "fg": 3820, "additional_tiles": [ - { "id": "center", "fg": 3646 }, - { "id": "corner", "fg": [ 3648, 3650, 3649, 3647 ] }, - { "id": "t_connection", "fg": [ 3658, 3660, 3659, 3657 ] }, - { "id": "edge", "fg": [ 3652, 3651 ] }, - { "id": "end_piece", "fg": [ 3654, 3656, 3655, 3653 ] }, - { "id": "unconnected", "fg": 3661 } + { "id": "center", "fg": 3805 }, + { "id": "corner", "fg": [ 3807, 3809, 3808, 3806 ] }, + { "id": "t_connection", "fg": [ 3817, 3819, 3818, 3816 ] }, + { "id": "edge", "fg": [ 3811, 3810 ] }, + { "id": "end_piece", "fg": [ 3813, 3815, 3814, 3812 ] }, + { "id": "unconnected", "fg": 3820 } ] }, { "id": "f_grass_long_season_summer", "multitile": true, - "fg": 3677, + "fg": 3836, "additional_tiles": [ - { "id": "center", "fg": 3662 }, - { "id": "corner", "fg": [ 3664, 3666, 3665, 3663 ] }, - { "id": "t_connection", "fg": [ 3674, 3676, 3675, 3673 ] }, - { "id": "edge", "fg": [ 3668, 3667 ] }, - { "id": "end_piece", "fg": [ 3670, 3672, 3671, 3669 ] }, - { "id": "unconnected", "fg": 3677 } + { "id": "center", "fg": 3821 }, + { "id": "corner", "fg": [ 3823, 3825, 3824, 3822 ] }, + { "id": "t_connection", "fg": [ 3833, 3835, 3834, 3832 ] }, + { "id": "edge", "fg": [ 3827, 3826 ] }, + { "id": "end_piece", "fg": [ 3829, 3831, 3830, 3828 ] }, + { "id": "unconnected", "fg": 3836 } ] }, { "id": "t_grass_long", "multitile": true, - "fg": 3645, - "bg": 3567, + "fg": 3804, + "bg": 3726, "additional_tiles": [ - { "id": "center", "bg": 3567, "fg": 3630 }, - { "id": "corner", "bg": 3567, "fg": [ 3632, 3634, 3633, 3631 ] }, - { "id": "t_connection", "bg": 3567, "fg": [ 3642, 3644, 3643, 3641 ] }, - { "id": "edge", "bg": 3567, "fg": [ 3636, 3635 ] }, - { "id": "end_piece", "bg": 3567, "fg": [ 3638, 3640, 3639, 3637 ] }, - { "bg": 3567, "id": "unconnected", "fg": 3645 } + { "id": "center", "bg": 3726, "fg": 3789 }, + { "id": "corner", "bg": 3726, "fg": [ 3791, 3793, 3792, 3790 ] }, + { "id": "t_connection", "bg": 3726, "fg": [ 3801, 3803, 3802, 3800 ] }, + { "id": "edge", "bg": 3726, "fg": [ 3795, 3794 ] }, + { "id": "end_piece", "bg": 3726, "fg": [ 3797, 3799, 3798, 3796 ] }, + { "bg": 3726, "id": "unconnected", "fg": 3804 } ] }, { "id": "t_grass_long_season_autumn", "multitile": true, - "fg": 3661, - "bg": 3572, + "fg": 3820, + "bg": 3731, "additional_tiles": [ - { "id": "center", "bg": 3572, "fg": 3646 }, - { "id": "corner", "bg": 3572, "fg": [ 3648, 3650, 3649, 3647 ] }, - { "id": "t_connection", "bg": 3572, "fg": [ 3658, 3660, 3659, 3657 ] }, - { "id": "edge", "bg": 3572, "fg": [ 3652, 3651 ] }, - { "id": "end_piece", "bg": 3572, "fg": [ 3654, 3656, 3655, 3653 ] }, - { "bg": 3572, "id": "unconnected", "fg": 3661 } + { "id": "center", "bg": 3731, "fg": 3805 }, + { "id": "corner", "bg": 3731, "fg": [ 3807, 3809, 3808, 3806 ] }, + { "id": "t_connection", "bg": 3731, "fg": [ 3817, 3819, 3818, 3816 ] }, + { "id": "edge", "bg": 3731, "fg": [ 3811, 3810 ] }, + { "id": "end_piece", "bg": 3731, "fg": [ 3813, 3815, 3814, 3812 ] }, + { "bg": 3731, "id": "unconnected", "fg": 3820 } ] }, { "id": "t_grass_long_season_summer", "multitile": true, - "fg": 3677, - "bg": 3577, + "fg": 3836, + "bg": 3736, "additional_tiles": [ - { "id": "center", "bg": 3577, "fg": 3662 }, - { "id": "corner", "bg": 3577, "fg": [ 3664, 3666, 3665, 3663 ] }, - { "id": "t_connection", "bg": 3577, "fg": [ 3674, 3676, 3675, 3673 ] }, - { "id": "edge", "bg": 3577, "fg": [ 3668, 3667 ] }, - { "id": "end_piece", "bg": 3577, "fg": [ 3670, 3672, 3671, 3669 ] }, - { "bg": 3577, "id": "unconnected", "fg": 3677 } + { "id": "center", "bg": 3736, "fg": 3821 }, + { "id": "corner", "bg": 3736, "fg": [ 3823, 3825, 3824, 3822 ] }, + { "id": "t_connection", "bg": 3736, "fg": [ 3833, 3835, 3834, 3832 ] }, + { "id": "edge", "bg": 3736, "fg": [ 3827, 3826 ] }, + { "id": "end_piece", "bg": 3736, "fg": [ 3829, 3831, 3830, 3828 ] }, + { "bg": 3736, "id": "unconnected", "fg": 3836 } ] }, - { "id": "t_grass_long_season_winter", "fg": 3062 }, + { "id": "t_grass_long_season_winter", "fg": 3221 }, { "id": "f_grass_tall", "multitile": true, - "fg": 3693, + "fg": 3852, "additional_tiles": [ - { "id": "center", "fg": 3678 }, - { "id": "corner", "fg": [ 3680, 3682, 3681, 3679 ] }, - { "id": "t_connection", "fg": [ 3690, 3692, 3691, 3689 ] }, - { "id": "edge", "fg": [ 3684, 3683 ] }, - { "id": "end_piece", "fg": [ 3686, 3688, 3687, 3685 ] }, - { "id": "unconnected", "fg": 3693 } + { "id": "center", "fg": 3837 }, + { "id": "corner", "fg": [ 3839, 3841, 3840, 3838 ] }, + { "id": "t_connection", "fg": [ 3849, 3851, 3850, 3848 ] }, + { "id": "edge", "fg": [ 3843, 3842 ] }, + { "id": "end_piece", "fg": [ 3845, 3847, 3846, 3844 ] }, + { "id": "unconnected", "fg": 3852 } ] }, { "id": "f_grass_tall_season_summer", "multitile": true, - "fg": 3725, + "fg": 3884, "additional_tiles": [ - { "id": "center", "fg": 3710 }, - { "id": "corner", "fg": [ 3712, 3714, 3713, 3711 ] }, - { "id": "t_connection", "fg": [ 3722, 3724, 3723, 3721 ] }, - { "id": "edge", "fg": [ 3716, 3715 ] }, - { "id": "end_piece", "fg": [ 3718, 3720, 3719, 3717 ] }, - { "id": "unconnected", "fg": 3725 } + { "id": "center", "fg": 3869 }, + { "id": "corner", "fg": [ 3871, 3873, 3872, 3870 ] }, + { "id": "t_connection", "fg": [ 3881, 3883, 3882, 3880 ] }, + { "id": "edge", "fg": [ 3875, 3874 ] }, + { "id": "end_piece", "fg": [ 3877, 3879, 3878, 3876 ] }, + { "id": "unconnected", "fg": 3884 } ] }, { "id": "f_grass_tall_season_autumn", "multitile": true, - "fg": 3709, + "fg": 3868, "additional_tiles": [ - { "id": "center", "fg": 3694 }, - { "id": "corner", "fg": [ 3696, 3698, 3697, 3695 ] }, - { "id": "t_connection", "fg": [ 3706, 3708, 3707, 3705 ] }, - { "id": "edge", "fg": [ 3700, 3699 ] }, - { "id": "end_piece", "fg": [ 3702, 3704, 3703, 3701 ] }, - { "id": "unconnected", "fg": 3709 } + { "id": "center", "fg": 3853 }, + { "id": "corner", "fg": [ 3855, 3857, 3856, 3854 ] }, + { "id": "t_connection", "fg": [ 3865, 3867, 3866, 3864 ] }, + { "id": "edge", "fg": [ 3859, 3858 ] }, + { "id": "end_piece", "fg": [ 3861, 3863, 3862, 3860 ] }, + { "id": "unconnected", "fg": 3868 } ] }, { "id": "t_grass_tall", "multitile": true, - "fg": 3693, - "bg": 3567, + "fg": 3852, + "bg": 3726, "additional_tiles": [ - { "id": "center", "bg": 3567, "fg": 3678 }, - { "id": "corner", "bg": 3567, "fg": [ 3680, 3682, 3681, 3679 ] }, - { "id": "t_connection", "bg": 3567, "fg": [ 3690, 3692, 3691, 3689 ] }, - { "id": "edge", "bg": 3567, "fg": [ 3684, 3683 ] }, - { "id": "end_piece", "bg": 3567, "fg": [ 3686, 3688, 3687, 3685 ] }, - { "bg": 3567, "id": "unconnected", "fg": 3693 } + { "id": "center", "bg": 3726, "fg": 3837 }, + { "id": "corner", "bg": 3726, "fg": [ 3839, 3841, 3840, 3838 ] }, + { "id": "t_connection", "bg": 3726, "fg": [ 3849, 3851, 3850, 3848 ] }, + { "id": "edge", "bg": 3726, "fg": [ 3843, 3842 ] }, + { "id": "end_piece", "bg": 3726, "fg": [ 3845, 3847, 3846, 3844 ] }, + { "bg": 3726, "id": "unconnected", "fg": 3852 } ] }, { "id": "t_grass_tall_season_summer", "multitile": true, - "fg": 3725, - "bg": 3577, + "fg": 3884, + "bg": 3736, "additional_tiles": [ - { "id": "center", "bg": 3577, "fg": 3710 }, - { "id": "corner", "bg": 3577, "fg": [ 3712, 3714, 3713, 3711 ] }, - { "id": "t_connection", "bg": 3577, "fg": [ 3722, 3724, 3723, 3721 ] }, - { "id": "edge", "bg": 3577, "fg": [ 3716, 3715 ] }, - { "id": "end_piece", "bg": 3577, "fg": [ 3718, 3720, 3719, 3717 ] }, - { "bg": 3577, "id": "unconnected", "fg": 3725 } + { "id": "center", "bg": 3736, "fg": 3869 }, + { "id": "corner", "bg": 3736, "fg": [ 3871, 3873, 3872, 3870 ] }, + { "id": "t_connection", "bg": 3736, "fg": [ 3881, 3883, 3882, 3880 ] }, + { "id": "edge", "bg": 3736, "fg": [ 3875, 3874 ] }, + { "id": "end_piece", "bg": 3736, "fg": [ 3877, 3879, 3878, 3876 ] }, + { "bg": 3736, "id": "unconnected", "fg": 3884 } ] }, { "id": "t_grass_tall_season_autumn", "multitile": true, - "fg": 3709, - "bg": 3572, + "fg": 3868, + "bg": 3731, "additional_tiles": [ - { "id": "center", "bg": 3572, "fg": 3694 }, - { "id": "corner", "bg": 3572, "fg": [ 3696, 3698, 3697, 3695 ] }, - { "id": "t_connection", "bg": 3572, "fg": [ 3706, 3708, 3707, 3705 ] }, - { "id": "edge", "bg": 3572, "fg": [ 3700, 3699 ] }, - { "id": "end_piece", "bg": 3572, "fg": [ 3702, 3704, 3703, 3701 ] }, - { "bg": 3572, "id": "unconnected", "fg": 3709 } + { "id": "center", "bg": 3731, "fg": 3853 }, + { "id": "corner", "bg": 3731, "fg": [ 3855, 3857, 3856, 3854 ] }, + { "id": "t_connection", "bg": 3731, "fg": [ 3865, 3867, 3866, 3864 ] }, + { "id": "edge", "bg": 3731, "fg": [ 3859, 3858 ] }, + { "id": "end_piece", "bg": 3731, "fg": [ 3861, 3863, 3862, 3860 ] }, + { "bg": 3731, "id": "unconnected", "fg": 3868 } ] }, - { "id": "t_grass_tall_season_winter", "fg": 3062 }, + { "id": "t_grass_tall_season_winter", "fg": 3221 }, { "id": "t_grate", "multitile": true, - "fg": 3741, + "fg": 3900, "additional_tiles": [ - { "id": "center", "fg": 3726 }, - { "id": "corner", "fg": [ 3728, 3730, 3729, 3727 ] }, - { "id": "t_connection", "fg": [ 3738, 3740, 3739, 3737 ] }, - { "id": "edge", "fg": [ 3732, 3731 ] }, - { "id": "end_piece", "fg": [ 3734, 3736, 3735, 3733 ] }, - { "id": "unconnected", "fg": [ 3741, 3741 ] } + { "id": "center", "fg": 3885 }, + { "id": "corner", "fg": [ 3887, 3889, 3888, 3886 ] }, + { "id": "t_connection", "fg": [ 3897, 3899, 3898, 3896 ] }, + { "id": "edge", "fg": [ 3891, 3890 ] }, + { "id": "end_piece", "fg": [ 3893, 3895, 3894, 3892 ] }, + { "id": "unconnected", "fg": [ 3900, 3900 ] } ] }, { "id": [ "t_guardrail", "t_guardrail_bg_dp", "t_guardrail_hw_air" ], "multitile": true, - "fg": 3748, - "bg": 4179, + "fg": 3907, + "bg": 4338, "additional_tiles": [ - { "id": "edge", "bg": 4179, "fg": [ 3743, 3742 ] }, - { "id": "end_piece", "bg": 4179, "fg": [ 3745, 3747, 3746, 3744 ] }, - { "bg": 4179, "id": "unconnected", "fg": 3748 } + { "id": "edge", "bg": 4338, "fg": [ 3902, 3901 ] }, + { "id": "end_piece", "bg": 4338, "fg": [ 3904, 3906, 3905, 3903 ] }, + { "bg": 4338, "id": "unconnected", "fg": 3907 } ] }, - { "id": "t_ladder_down", "fg": 3749 }, + { "id": "t_ladder_down", "fg": 3908 }, { "id": "t_lava", - "fg": 3765, - "bg": 3988, + "fg": 3924, + "bg": 4147, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 3750, "bg": 3988 }, - { "id": "corner", "fg": [ 3752, 3754, 3753, 3751 ], "bg": 3988 }, - { "id": "t_connection", "fg": [ 3762, 3764, 3763, 3761 ], "bg": 3988 }, - { "id": "edge", "fg": [ 3756, 3755 ], "bg": 3988 }, - { "id": "end_piece", "fg": [ 3758, 3760, 3759, 3757 ], "bg": 3988 }, - { "id": "unconnected", "fg": [ 3765, 3765 ], "bg": 3988 } + { "id": "center", "fg": 3909, "bg": 4147 }, + { "id": "corner", "fg": [ 3911, 3913, 3912, 3910 ], "bg": 4147 }, + { "id": "t_connection", "fg": [ 3921, 3923, 3922, 3920 ], "bg": 4147 }, + { "id": "edge", "fg": [ 3915, 3914 ], "bg": 4147 }, + { "id": "end_piece", "fg": [ 3917, 3919, 3918, 3916 ], "bg": 4147 }, + { "id": "unconnected", "fg": [ 3924, 3924 ], "bg": 4147 } ] }, { "id": [ "t_linoleum_gray", "t_linoleum_gray_no_roof" ], "multitile": true, - "fg": 3781, + "fg": 3940, "additional_tiles": [ - { "id": "center", "fg": 3766 }, - { "id": "corner", "fg": [ 3768, 3770, 3769, 3767 ] }, - { "id": "t_connection", "fg": [ 3778, 3780, 3779, 3777 ] }, - { "id": "edge", "fg": [ 3772, 3771 ] }, - { "id": "end_piece", "fg": [ 3774, 3776, 3775, 3773 ] }, - { "id": "unconnected", "fg": 3781 } + { "id": "center", "fg": 3925 }, + { "id": "corner", "fg": [ 3927, 3929, 3928, 3926 ] }, + { "id": "t_connection", "fg": [ 3937, 3939, 3938, 3936 ] }, + { "id": "edge", "fg": [ 3931, 3930 ] }, + { "id": "end_piece", "fg": [ 3933, 3935, 3934, 3932 ] }, + { "id": "unconnected", "fg": 3940 } ] }, { "id": [ "t_linoleum_white", "t_linoleum_white_no_roof" ], "multitile": true, - "fg": 3797, + "fg": 3956, "additional_tiles": [ - { "id": "center", "fg": 3782 }, - { "id": "corner", "fg": [ 3784, 3786, 3785, 3783 ] }, - { "id": "t_connection", "fg": [ 3794, 3796, 3795, 3793 ] }, - { "id": "edge", "fg": [ 3788, 3787 ] }, - { "id": "end_piece", "fg": [ 3790, 3792, 3791, 3789 ] }, - { "id": "unconnected", "fg": 3797 } + { "id": "center", "fg": 3941 }, + { "id": "corner", "fg": [ 3943, 3945, 3944, 3942 ] }, + { "id": "t_connection", "fg": [ 3953, 3955, 3954, 3952 ] }, + { "id": "edge", "fg": [ 3947, 3946 ] }, + { "id": "end_piece", "fg": [ 3949, 3951, 3950, 3948 ] }, + { "id": "unconnected", "fg": 3956 } ] }, { "id": "t_metal_floor", "multitile": true, - "fg": 3813, + "fg": 3972, "additional_tiles": [ - { "id": "center", "fg": 3798 }, - { "id": "corner", "fg": [ 3800, 3802, 3801, 3799 ] }, - { "id": "t_connection", "fg": [ 3810, 3812, 3811, 3809 ] }, - { "id": "edge", "fg": [ 3804, 3803 ] }, - { "id": "end_piece", "fg": [ 3806, 3808, 3807, 3805 ] }, - { "id": "unconnected", "fg": 3813 } + { "id": "center", "fg": 3957 }, + { "id": "corner", "fg": [ 3959, 3961, 3960, 3958 ] }, + { "id": "t_connection", "fg": [ 3969, 3971, 3970, 3968 ] }, + { "id": "edge", "fg": [ 3963, 3962 ] }, + { "id": "end_piece", "fg": [ 3965, 3967, 3966, 3964 ] }, + { "id": "unconnected", "fg": 3972 } ] }, { "id": "t_moss", "multitile": true, - "fg": 3830, - "bg": 3568, + "fg": 3989, + "bg": 3727, "additional_tiles": [ - { "id": "center", "bg": 3568, "fg": [ { "weight": 1, "sprite": 3814 }, { "weight": 1, "sprite": 3815 } ] }, - { "id": "corner", "bg": 3568, "fg": [ 3817, 3819, 3818, 3816 ] }, - { "id": "t_connection", "bg": 3568, "fg": [ 3827, 3829, 3828, 3826 ] }, - { "id": "edge", "bg": 3568, "fg": [ 3821, 3820 ] }, - { "id": "end_piece", "bg": 3568, "fg": [ 3823, 3825, 3824, 3822 ] }, - { "bg": 3568, "id": "unconnected", "fg": 3830 } + { "id": "center", "bg": 3727, "fg": [ { "weight": 1, "sprite": 3973 }, { "weight": 1, "sprite": 3974 } ] }, + { "id": "corner", "bg": 3727, "fg": [ 3976, 3978, 3977, 3975 ] }, + { "id": "t_connection", "bg": 3727, "fg": [ 3986, 3988, 3987, 3985 ] }, + { "id": "edge", "bg": 3727, "fg": [ 3980, 3979 ] }, + { "id": "end_piece", "bg": 3727, "fg": [ 3982, 3984, 3983, 3981 ] }, + { "bg": 3727, "id": "unconnected", "fg": 3989 } ] }, { "id": "t_moss_season_summer", "multitile": true, - "fg": 3864, - "bg": 3578, + "fg": 4023, + "bg": 3737, "additional_tiles": [ - { "id": "center", "bg": 3578, "fg": [ { "weight": 1, "sprite": 3848 }, { "weight": 1, "sprite": 3849 } ] }, - { "id": "corner", "bg": 3578, "fg": [ 3851, 3853, 3852, 3850 ] }, - { "id": "t_connection", "bg": 3578, "fg": [ 3861, 3863, 3862, 3860 ] }, - { "id": "edge", "bg": 3578, "fg": [ 3855, 3854 ] }, - { "id": "end_piece", "bg": 3578, "fg": [ 3857, 3859, 3858, 3856 ] }, - { "bg": 3578, "id": "unconnected", "fg": 3864 } + { "id": "center", "bg": 3737, "fg": [ { "weight": 1, "sprite": 4007 }, { "weight": 1, "sprite": 4008 } ] }, + { "id": "corner", "bg": 3737, "fg": [ 4010, 4012, 4011, 4009 ] }, + { "id": "t_connection", "bg": 3737, "fg": [ 4020, 4022, 4021, 4019 ] }, + { "id": "edge", "bg": 3737, "fg": [ 4014, 4013 ] }, + { "id": "end_piece", "bg": 3737, "fg": [ 4016, 4018, 4017, 4015 ] }, + { "bg": 3737, "id": "unconnected", "fg": 4023 } ] }, { "id": "t_moss_season_autumn", "multitile": true, - "fg": 3847, - "bg": 3573, + "fg": 4006, + "bg": 3732, "additional_tiles": [ - { "id": "center", "bg": 3573, "fg": [ { "weight": 1, "sprite": 3831 }, { "weight": 1, "sprite": 3832 } ] }, - { "id": "corner", "bg": 3573, "fg": [ 3834, 3836, 3835, 3833 ] }, - { "id": "t_connection", "bg": 3573, "fg": [ 3844, 3846, 3845, 3843 ] }, - { "id": "edge", "bg": 3573, "fg": [ 3838, 3837 ] }, - { "id": "end_piece", "bg": 3573, "fg": [ 3840, 3842, 3841, 3839 ] }, - { "bg": 3573, "id": "unconnected", "fg": 3847 } + { "id": "center", "bg": 3732, "fg": [ { "weight": 1, "sprite": 3990 }, { "weight": 1, "sprite": 3991 } ] }, + { "id": "corner", "bg": 3732, "fg": [ 3993, 3995, 3994, 3992 ] }, + { "id": "t_connection", "bg": 3732, "fg": [ 4003, 4005, 4004, 4002 ] }, + { "id": "edge", "bg": 3732, "fg": [ 3997, 3996 ] }, + { "id": "end_piece", "bg": 3732, "fg": [ 3999, 4001, 4000, 3998 ] }, + { "bg": 3732, "id": "unconnected", "fg": 4006 } ] }, { "id": "t_moss_season_winter", "multitile": true, - "fg": 3081, - "bg": 3063, + "fg": 3240, + "bg": 3222, "additional_tiles": [ - { "id": "center", "bg": 3063, "fg": [ { "weight": 1, "sprite": 3063 }, { "weight": 1, "sprite": 3064 } ] }, - { "id": "corner", "bg": 3063, "fg": [ 3068, 3070, 3069, 3067 ] }, - { "id": "t_connection", "bg": 3063, "fg": [ 3078, 3080, 3079, 3077 ] }, - { "id": "edge", "bg": 3063, "fg": [ 3072, 3071 ] }, - { "id": "end_piece", "bg": 3063, "fg": [ 3074, 3076, 3075, 3073 ] }, - { "bg": 3063, "id": "unconnected", "fg": 3081 } + { "id": "center", "bg": 3222, "fg": [ { "weight": 1, "sprite": 3222 }, { "weight": 1, "sprite": 3223 } ] }, + { "id": "corner", "bg": 3222, "fg": [ 3227, 3229, 3228, 3226 ] }, + { "id": "t_connection", "bg": 3222, "fg": [ 3237, 3239, 3238, 3236 ] }, + { "id": "edge", "bg": 3222, "fg": [ 3231, 3230 ] }, + { "id": "end_piece", "bg": 3222, "fg": [ 3233, 3235, 3234, 3232 ] }, + { "bg": 3222, "id": "unconnected", "fg": 3240 } ] }, { "id": "t_pavement", "multitile": true, - "fg": 3865, + "fg": 4024, "additional_tiles": [ { "id": "center", "fg": [ - { "weight": 1, "sprite": 3865 }, - { "weight": 1, "sprite": 3866 }, - { "weight": 1, "sprite": 3867 }, - { "weight": 1, "sprite": 3868 } + { "weight": 1, "sprite": 4024 }, + { "weight": 1, "sprite": 4025 }, + { "weight": 1, "sprite": 4026 }, + { "weight": 1, "sprite": 4027 } ] }, - { "id": "corner", "bg": 3567, "fg": [ 3877, 3880, 3879, 3876 ] }, - { "id": "t_connection", "fg": [ 3875, 3883, 3878, 3869 ] }, - { "id": "edge", "fg": [ 3882, 3874 ] }, - { "id": "end_piece", "fg": [ 3871, 3873, 3872, 3870 ] }, - { "id": "unconnected", "fg": 3881 } + { "id": "corner", "bg": 3726, "fg": [ 4036, 4039, 4038, 4035 ] }, + { "id": "t_connection", "fg": [ 4034, 4042, 4037, 4028 ] }, + { "id": "edge", "fg": [ 4041, 4033 ] }, + { "id": "end_piece", "fg": [ 4030, 4032, 4031, 4029 ] }, + { "id": "unconnected", "fg": 4040 } ] }, { "id": "t_pavement_season_summer", "multitile": true, - "fg": 3865, + "fg": 4024, "additional_tiles": [ { "id": "center", "fg": [ - { "weight": 1, "sprite": 3865 }, - { "weight": 1, "sprite": 3866 }, - { "weight": 1, "sprite": 3867 }, - { "weight": 1, "sprite": 3868 } + { "weight": 1, "sprite": 4024 }, + { "weight": 1, "sprite": 4025 }, + { "weight": 1, "sprite": 4026 }, + { "weight": 1, "sprite": 4027 } ] }, - { "id": "corner", "bg": 3577, "fg": [ 3877, 3880, 3879, 3876 ] }, - { "id": "t_connection", "fg": [ 3875, 3883, 3878, 3869 ] }, - { "id": "edge", "fg": [ 3882, 3874 ] }, - { "id": "end_piece", "fg": [ 3871, 3873, 3872, 3870 ] }, - { "id": "unconnected", "fg": 3881 } + { "id": "corner", "bg": 3736, "fg": [ 4036, 4039, 4038, 4035 ] }, + { "id": "t_connection", "fg": [ 4034, 4042, 4037, 4028 ] }, + { "id": "edge", "fg": [ 4041, 4033 ] }, + { "id": "end_piece", "fg": [ 4030, 4032, 4031, 4029 ] }, + { "id": "unconnected", "fg": 4040 } ] }, { "id": "t_pavement_season_autumn", "multitile": true, - "fg": 3865, + "fg": 4024, "additional_tiles": [ { "id": "center", "fg": [ - { "weight": 1, "sprite": 3865 }, - { "weight": 1, "sprite": 3866 }, - { "weight": 1, "sprite": 3867 }, - { "weight": 1, "sprite": 3868 } + { "weight": 1, "sprite": 4024 }, + { "weight": 1, "sprite": 4025 }, + { "weight": 1, "sprite": 4026 }, + { "weight": 1, "sprite": 4027 } ] }, - { "id": "corner", "bg": 3572, "fg": [ 3877, 3880, 3879, 3876 ] }, - { "id": "t_connection", "fg": [ 3875, 3883, 3878, 3869 ] }, - { "id": "edge", "fg": [ 3882, 3874 ] }, - { "id": "end_piece", "fg": [ 3871, 3873, 3872, 3870 ] }, - { "id": "unconnected", "fg": 3881 } + { "id": "corner", "bg": 3731, "fg": [ 4036, 4039, 4038, 4035 ] }, + { "id": "t_connection", "fg": [ 4034, 4042, 4037, 4028 ] }, + { "id": "edge", "fg": [ 4041, 4033 ] }, + { "id": "end_piece", "fg": [ 4030, 4032, 4031, 4029 ] }, + { "id": "unconnected", "fg": 4040 } ] }, - { "id": "t_pavement_season_winter", "fg": 3063 }, - { "id": "t_pavement_y", "fg": 3884 }, - { "id": "t_pavement_y_season_winter", "fg": 3063 }, - { "id": "t_pit", "fg": 3885, "bg": [ { "weight": 100, "sprite": 3567 }, { "weight": 100, "sprite": 3569 } ] }, + { "id": "t_pavement_season_winter", "fg": 3222 }, + { "id": "t_pavement_y", "fg": 4043 }, + { "id": "t_pavement_y_season_winter", "fg": 3222 }, + { "id": "t_pit", "fg": 4044, "bg": [ { "weight": 100, "sprite": 3726 }, { "weight": 100, "sprite": 3728 } ] }, { "id": "t_pit_season_summer", - "fg": 3885, - "bg": [ { "weight": 100, "sprite": 3577 }, { "weight": 100, "sprite": 3579 } ] + "fg": 4044, + "bg": [ { "weight": 100, "sprite": 3736 }, { "weight": 100, "sprite": 3738 } ] }, { "id": "t_pit_season_autumn", - "fg": 3885, - "bg": [ { "weight": 100, "sprite": 3572 }, { "weight": 100, "sprite": 3574 } ] + "fg": 4044, + "bg": [ { "weight": 100, "sprite": 3731 }, { "weight": 100, "sprite": 3733 } ] }, - { "id": "t_pit_season_winter", "fg": 3885, "bg": 3063 }, + { "id": "t_pit_season_winter", "fg": 4044, "bg": 3222 }, { "id": "t_pit_shallow", - "fg": 3901, - "bg": [ { "weight": 100, "sprite": 3567 }, { "weight": 100, "sprite": 3569 } ], + "fg": 4060, + "bg": [ { "weight": 100, "sprite": 3726 }, { "weight": 100, "sprite": 3728 } ], "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 3886, "bg": [ { "weight": 100, "sprite": 3567 }, { "weight": 100, "sprite": 3569 } ] }, + { "id": "center", "fg": 4045, "bg": [ { "weight": 100, "sprite": 3726 }, { "weight": 100, "sprite": 3728 } ] }, { "id": "corner", - "fg": [ 3888, 3890, 3889, 3887 ], - "bg": [ { "weight": 100, "sprite": 3567 }, { "weight": 100, "sprite": 3569 } ] + "fg": [ 4047, 4049, 4048, 4046 ], + "bg": [ { "weight": 100, "sprite": 3726 }, { "weight": 100, "sprite": 3728 } ] }, { "id": "t_connection", - "fg": [ 3898, 3900, 3899, 3897 ], - "bg": [ { "weight": 100, "sprite": 3567 }, { "weight": 100, "sprite": 3569 } ] + "fg": [ 4057, 4059, 4058, 4056 ], + "bg": [ { "weight": 100, "sprite": 3726 }, { "weight": 100, "sprite": 3728 } ] }, { "id": "edge", - "fg": [ 3892, 3891 ], - "bg": [ { "weight": 100, "sprite": 3567 }, { "weight": 100, "sprite": 3569 } ] + "fg": [ 4051, 4050 ], + "bg": [ { "weight": 100, "sprite": 3726 }, { "weight": 100, "sprite": 3728 } ] }, { "id": "end_piece", - "fg": [ 3894, 3896, 3895, 3893 ], - "bg": [ { "weight": 100, "sprite": 3567 }, { "weight": 100, "sprite": 3569 } ] + "fg": [ 4053, 4055, 4054, 4052 ], + "bg": [ { "weight": 100, "sprite": 3726 }, { "weight": 100, "sprite": 3728 } ] }, { "id": "unconnected", - "fg": [ 3901, 3901 ], - "bg": [ { "weight": 100, "sprite": 3567 }, { "weight": 100, "sprite": 3569 } ] + "fg": [ 4060, 4060 ], + "bg": [ { "weight": 100, "sprite": 3726 }, { "weight": 100, "sprite": 3728 } ] } ] }, { "id": "t_pit_shallow_season_summer", - "fg": 3901, - "bg": [ { "weight": 100, "sprite": 3577 }, { "weight": 100, "sprite": 3579 } ], + "fg": 4060, + "bg": [ { "weight": 100, "sprite": 3736 }, { "weight": 100, "sprite": 3738 } ], "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 3886, "bg": [ { "weight": 100, "sprite": 3577 }, { "weight": 100, "sprite": 3579 } ] }, + { "id": "center", "fg": 4045, "bg": [ { "weight": 100, "sprite": 3736 }, { "weight": 100, "sprite": 3738 } ] }, { "id": "corner", - "fg": [ 3888, 3890, 3889, 3887 ], - "bg": [ { "weight": 100, "sprite": 3577 }, { "weight": 100, "sprite": 3579 } ] + "fg": [ 4047, 4049, 4048, 4046 ], + "bg": [ { "weight": 100, "sprite": 3736 }, { "weight": 100, "sprite": 3738 } ] }, { "id": "t_connection", - "fg": [ 3898, 3900, 3899, 3897 ], - "bg": [ { "weight": 100, "sprite": 3577 }, { "weight": 100, "sprite": 3579 } ] + "fg": [ 4057, 4059, 4058, 4056 ], + "bg": [ { "weight": 100, "sprite": 3736 }, { "weight": 100, "sprite": 3738 } ] }, { "id": "edge", - "fg": [ 3892, 3891 ], - "bg": [ { "weight": 100, "sprite": 3577 }, { "weight": 100, "sprite": 3579 } ] + "fg": [ 4051, 4050 ], + "bg": [ { "weight": 100, "sprite": 3736 }, { "weight": 100, "sprite": 3738 } ] }, { "id": "end_piece", - "fg": [ 3894, 3896, 3895, 3893 ], - "bg": [ { "weight": 100, "sprite": 3577 }, { "weight": 100, "sprite": 3579 } ] + "fg": [ 4053, 4055, 4054, 4052 ], + "bg": [ { "weight": 100, "sprite": 3736 }, { "weight": 100, "sprite": 3738 } ] }, { "id": "unconnected", - "fg": [ 3901, 3901 ], - "bg": [ { "weight": 100, "sprite": 3577 }, { "weight": 100, "sprite": 3579 } ] + "fg": [ 4060, 4060 ], + "bg": [ { "weight": 100, "sprite": 3736 }, { "weight": 100, "sprite": 3738 } ] } ] }, { "id": "t_pit_shallow_season_autumn", - "fg": 3901, - "bg": [ { "weight": 100, "sprite": 3572 }, { "weight": 100, "sprite": 3574 } ], + "fg": 4060, + "bg": [ { "weight": 100, "sprite": 3731 }, { "weight": 100, "sprite": 3733 } ], "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 3886, "bg": [ { "weight": 100, "sprite": 3572 }, { "weight": 100, "sprite": 3574 } ] }, + { "id": "center", "fg": 4045, "bg": [ { "weight": 100, "sprite": 3731 }, { "weight": 100, "sprite": 3733 } ] }, { "id": "corner", - "fg": [ 3888, 3890, 3889, 3887 ], - "bg": [ { "weight": 100, "sprite": 3572 }, { "weight": 100, "sprite": 3574 } ] + "fg": [ 4047, 4049, 4048, 4046 ], + "bg": [ { "weight": 100, "sprite": 3731 }, { "weight": 100, "sprite": 3733 } ] }, { "id": "t_connection", - "fg": [ 3898, 3900, 3899, 3897 ], - "bg": [ { "weight": 100, "sprite": 3572 }, { "weight": 100, "sprite": 3574 } ] + "fg": [ 4057, 4059, 4058, 4056 ], + "bg": [ { "weight": 100, "sprite": 3731 }, { "weight": 100, "sprite": 3733 } ] }, { "id": "edge", - "fg": [ 3892, 3891 ], - "bg": [ { "weight": 100, "sprite": 3572 }, { "weight": 100, "sprite": 3574 } ] + "fg": [ 4051, 4050 ], + "bg": [ { "weight": 100, "sprite": 3731 }, { "weight": 100, "sprite": 3733 } ] }, { "id": "end_piece", - "fg": [ 3894, 3896, 3895, 3893 ], - "bg": [ { "weight": 100, "sprite": 3572 }, { "weight": 100, "sprite": 3574 } ] + "fg": [ 4053, 4055, 4054, 4052 ], + "bg": [ { "weight": 100, "sprite": 3731 }, { "weight": 100, "sprite": 3733 } ] }, { "id": "unconnected", - "fg": [ 3901, 3901 ], - "bg": [ { "weight": 100, "sprite": 3572 }, { "weight": 100, "sprite": 3574 } ] + "fg": [ 4060, 4060 ], + "bg": [ { "weight": 100, "sprite": 3731 }, { "weight": 100, "sprite": 3733 } ] } ] }, { "id": "t_pit_shallow_season_winter", - "fg": 3901, - "bg": [ { "weight": 100, "sprite": 3063 }, { "weight": 100, "sprite": 3064 } ], + "fg": 4060, + "bg": [ { "weight": 100, "sprite": 3222 }, { "weight": 100, "sprite": 3223 } ], "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 3886, "bg": [ { "weight": 100, "sprite": 3063 }, { "weight": 100, "sprite": 3064 } ] }, + { "id": "center", "fg": 4045, "bg": [ { "weight": 100, "sprite": 3222 }, { "weight": 100, "sprite": 3223 } ] }, { "id": "corner", - "fg": [ 3888, 3890, 3889, 3887 ], - "bg": [ { "weight": 100, "sprite": 3063 }, { "weight": 100, "sprite": 3064 } ] + "fg": [ 4047, 4049, 4048, 4046 ], + "bg": [ { "weight": 100, "sprite": 3222 }, { "weight": 100, "sprite": 3223 } ] }, { "id": "t_connection", - "fg": [ 3898, 3900, 3899, 3897 ], - "bg": [ { "weight": 100, "sprite": 3063 }, { "weight": 100, "sprite": 3064 } ] + "fg": [ 4057, 4059, 4058, 4056 ], + "bg": [ { "weight": 100, "sprite": 3222 }, { "weight": 100, "sprite": 3223 } ] }, { "id": "edge", - "fg": [ 3892, 3891 ], - "bg": [ { "weight": 100, "sprite": 3063 }, { "weight": 100, "sprite": 3064 } ] + "fg": [ 4051, 4050 ], + "bg": [ { "weight": 100, "sprite": 3222 }, { "weight": 100, "sprite": 3223 } ] }, { "id": "end_piece", - "fg": [ 3894, 3896, 3895, 3893 ], - "bg": [ { "weight": 100, "sprite": 3063 }, { "weight": 100, "sprite": 3064 } ] + "fg": [ 4053, 4055, 4054, 4052 ], + "bg": [ { "weight": 100, "sprite": 3222 }, { "weight": 100, "sprite": 3223 } ] }, { "id": "unconnected", - "fg": [ 3901, 3901 ], - "bg": [ { "weight": 100, "sprite": 3063 }, { "weight": 100, "sprite": 3064 } ] + "fg": [ 4060, 4060 ], + "bg": [ { "weight": 100, "sprite": 3222 }, { "weight": 100, "sprite": 3223 } ] } ] }, { "id": "t_privacy_fence", "multitile": true, - "fg": 3917, - "bg": 3567, + "fg": 4076, + "bg": 3726, "additional_tiles": [ - { "id": "center", "bg": 3567, "fg": 3902 }, - { "id": "corner", "bg": 3567, "fg": [ 3904, 3906, 3905, 3903 ] }, - { "id": "t_connection", "bg": 3567, "fg": [ 3914, 3916, 3915, 3913 ] }, - { "id": "edge", "bg": 3567, "fg": [ 3908, 3907 ] }, - { "id": "end_piece", "bg": 3567, "fg": [ 3910, 3912, 3911, 3909 ] }, - { "bg": 3567, "id": "unconnected", "fg": [ 3917, 3917 ] } + { "id": "center", "bg": 3726, "fg": 4061 }, + { "id": "corner", "bg": 3726, "fg": [ 4063, 4065, 4064, 4062 ] }, + { "id": "t_connection", "bg": 3726, "fg": [ 4073, 4075, 4074, 4072 ] }, + { "id": "edge", "bg": 3726, "fg": [ 4067, 4066 ] }, + { "id": "end_piece", "bg": 3726, "fg": [ 4069, 4071, 4070, 4068 ] }, + { "bg": 3726, "id": "unconnected", "fg": [ 4076, 4076 ] } ] }, { "id": "t_privacy_fence_season_winter", "multitile": true, - "fg": 3917, - "bg": 3063, + "fg": 4076, + "bg": 3222, "additional_tiles": [ - { "id": "center", "bg": 3063, "fg": 3902 }, - { "id": "corner", "bg": 3063, "fg": [ 3904, 3906, 3905, 3903 ] }, - { "id": "t_connection", "bg": 3063, "fg": [ 3914, 3916, 3915, 3913 ] }, - { "id": "edge", "bg": 3063, "fg": [ 3908, 3907 ] }, - { "id": "end_piece", "bg": 3063, "fg": [ 3910, 3912, 3911, 3909 ] }, - { "bg": 3063, "id": "unconnected", "fg": [ 3917, 3917 ] } + { "id": "center", "bg": 3222, "fg": 4061 }, + { "id": "corner", "bg": 3222, "fg": [ 4063, 4065, 4064, 4062 ] }, + { "id": "t_connection", "bg": 3222, "fg": [ 4073, 4075, 4074, 4072 ] }, + { "id": "edge", "bg": 3222, "fg": [ 4067, 4066 ] }, + { "id": "end_piece", "bg": 3222, "fg": [ 4069, 4071, 4070, 4068 ] }, + { "bg": 3222, "id": "unconnected", "fg": [ 4076, 4076 ] } ] }, { "id": "t_railing", "multitile": true, - "fg": 3933, - "bg": 3250, + "fg": 4092, + "bg": 3409, "additional_tiles": [ - { "id": "center", "bg": 3250, "fg": 3918 }, - { "id": "corner", "bg": 3250, "fg": [ 3920, 3922, 3921, 3919 ] }, - { "id": "t_connection", "bg": 3250, "fg": [ 3930, 3932, 3931, 3929 ] }, - { "id": "edge", "bg": 3250, "fg": [ 3924, 3923 ] }, - { "id": "end_piece", "bg": 3250, "fg": [ 3926, 3928, 3927, 3925 ] }, - { "bg": 3250, "id": "unconnected", "fg": [ 3933, 3933 ] } + { "id": "center", "bg": 3409, "fg": 4077 }, + { "id": "corner", "bg": 3409, "fg": [ 4079, 4081, 4080, 4078 ] }, + { "id": "t_connection", "bg": 3409, "fg": [ 4089, 4091, 4090, 4088 ] }, + { "id": "edge", "bg": 3409, "fg": [ 4083, 4082 ] }, + { "id": "end_piece", "bg": 3409, "fg": [ 4085, 4087, 4086, 4084 ] }, + { "bg": 3409, "id": "unconnected", "fg": [ 4092, 4092 ] } ] }, { "id": "t_railroad_rubble", "multitile": true, - "fg": 3950, - "bg": 3567, + "fg": 4109, + "bg": 3726, "additional_tiles": [ - { "id": "center", "bg": 3567, "fg": [ { "weight": 1, "sprite": 3934 }, { "weight": 1, "sprite": 3935 } ] }, - { "id": "corner", "bg": 3567, "fg": [ 3937, 3939, 3938, 3936 ] }, - { "id": "t_connection", "bg": 3567, "fg": [ 3947, 3949, 3948, 3946 ] }, - { "id": "edge", "bg": 3567, "fg": [ 3941, 3940 ] }, - { "id": "end_piece", "bg": 3567, "fg": [ 3943, 3945, 3944, 3942 ] }, - { "bg": 3567, "id": "unconnected", "fg": 3950 } + { "id": "center", "bg": 3726, "fg": [ { "weight": 1, "sprite": 4093 }, { "weight": 1, "sprite": 4094 } ] }, + { "id": "corner", "bg": 3726, "fg": [ 4096, 4098, 4097, 4095 ] }, + { "id": "t_connection", "bg": 3726, "fg": [ 4106, 4108, 4107, 4105 ] }, + { "id": "edge", "bg": 3726, "fg": [ 4100, 4099 ] }, + { "id": "end_piece", "bg": 3726, "fg": [ 4102, 4104, 4103, 4101 ] }, + { "bg": 3726, "id": "unconnected", "fg": 4109 } ] }, { "id": "t_railroad_rubble_season_summer", "multitile": true, - "fg": 3950, - "bg": 3577, + "fg": 4109, + "bg": 3736, "additional_tiles": [ - { "id": "center", "bg": 3577, "fg": [ { "weight": 1, "sprite": 3934 }, { "weight": 1, "sprite": 3935 } ] }, - { "id": "corner", "bg": 3577, "fg": [ 3937, 3939, 3938, 3936 ] }, - { "id": "t_connection", "bg": 3577, "fg": [ 3947, 3949, 3948, 3946 ] }, - { "id": "edge", "bg": 3577, "fg": [ 3941, 3940 ] }, - { "id": "end_piece", "bg": 3577, "fg": [ 3943, 3945, 3944, 3942 ] }, - { "bg": 3577, "id": "unconnected", "fg": 3950 } + { "id": "center", "bg": 3736, "fg": [ { "weight": 1, "sprite": 4093 }, { "weight": 1, "sprite": 4094 } ] }, + { "id": "corner", "bg": 3736, "fg": [ 4096, 4098, 4097, 4095 ] }, + { "id": "t_connection", "bg": 3736, "fg": [ 4106, 4108, 4107, 4105 ] }, + { "id": "edge", "bg": 3736, "fg": [ 4100, 4099 ] }, + { "id": "end_piece", "bg": 3736, "fg": [ 4102, 4104, 4103, 4101 ] }, + { "bg": 3736, "id": "unconnected", "fg": 4109 } ] }, { "id": "t_railroad_rubble_season_autumn", "multitile": true, - "fg": 3950, - "bg": 3572, + "fg": 4109, + "bg": 3731, "additional_tiles": [ - { "id": "center", "bg": 3572, "fg": [ { "weight": 1, "sprite": 3934 }, { "weight": 1, "sprite": 3935 } ] }, - { "id": "corner", "bg": 3572, "fg": [ 3937, 3939, 3938, 3936 ] }, - { "id": "t_connection", "bg": 3572, "fg": [ 3947, 3949, 3948, 3946 ] }, - { "id": "edge", "bg": 3572, "fg": [ 3941, 3940 ] }, - { "id": "end_piece", "bg": 3572, "fg": [ 3943, 3945, 3944, 3942 ] }, - { "bg": 3572, "id": "unconnected", "fg": 3950 } + { "id": "center", "bg": 3731, "fg": [ { "weight": 1, "sprite": 4093 }, { "weight": 1, "sprite": 4094 } ] }, + { "id": "corner", "bg": 3731, "fg": [ 4096, 4098, 4097, 4095 ] }, + { "id": "t_connection", "bg": 3731, "fg": [ 4106, 4108, 4107, 4105 ] }, + { "id": "edge", "bg": 3731, "fg": [ 4100, 4099 ] }, + { "id": "end_piece", "bg": 3731, "fg": [ 4102, 4104, 4103, 4101 ] }, + { "bg": 3731, "id": "unconnected", "fg": 4109 } ] }, { "id": "t_railroad_rubble_season_winter", "multitile": true, - "fg": 3950, - "bg": 3063, + "fg": 4109, + "bg": 3222, "additional_tiles": [ - { "id": "center", "bg": 3063, "fg": [ { "weight": 1, "sprite": 3934 }, { "weight": 1, "sprite": 3935 } ] }, - { "id": "corner", "bg": 3063, "fg": [ 3937, 3939, 3938, 3936 ] }, - { "id": "t_connection", "bg": 3063, "fg": [ 3947, 3949, 3948, 3946 ] }, - { "id": "edge", "bg": 3063, "fg": [ 3941, 3940 ] }, - { "id": "end_piece", "bg": 3063, "fg": [ 3943, 3945, 3944, 3942 ] }, - { "bg": 3063, "id": "unconnected", "fg": 3950 } + { "id": "center", "bg": 3222, "fg": [ { "weight": 1, "sprite": 4093 }, { "weight": 1, "sprite": 4094 } ] }, + { "id": "corner", "bg": 3222, "fg": [ 4096, 4098, 4097, 4095 ] }, + { "id": "t_connection", "bg": 3222, "fg": [ 4106, 4108, 4107, 4105 ] }, + { "id": "edge", "bg": 3222, "fg": [ 4100, 4099 ] }, + { "id": "end_piece", "bg": 3222, "fg": [ 4102, 4104, 4103, 4101 ] }, + { "bg": 3222, "id": "unconnected", "fg": 4109 } ] }, { "id": "t_railroad_small", "multitile": true, - "fg": 3951, - "bg": 3934, + "fg": 4110, + "bg": 4093, "additional_tiles": [ - { "id": "center", "bg": 3934, "fg": 3951 }, - { "id": "corner", "bg": 3934, "fg": [ 3951, 3952, 3951, 3952 ] }, - { "id": "t_connection", "bg": 3934, "fg": [ 3952, 3951, 3952, 3951 ] }, - { "id": "edge", "fg": [ 3952, 3951 ] }, - { "id": "end_piece", "bg": 3934, "fg": [ 3952, 3951, 3952, 3951 ] }, - { "bg": 3934, "id": "unconnected", "fg": 3952 } + { "id": "center", "bg": 4093, "fg": 4110 }, + { "id": "corner", "bg": 4093, "fg": [ 4110, 4111, 4110, 4111 ] }, + { "id": "t_connection", "bg": 4093, "fg": [ 4111, 4110, 4111, 4110 ] }, + { "id": "edge", "fg": [ 4111, 4110 ] }, + { "id": "end_piece", "bg": 4093, "fg": [ 4111, 4110, 4111, 4110 ] }, + { "bg": 4093, "id": "unconnected", "fg": 4111 } ] }, - { "id": "t_rdoor_c", "fg": 3954 }, - { "id": "t_rdoor_o", "fg": 3955 }, - { "id": "t_rdoor_b", "fg": 3953 }, + { "id": "t_rdoor_c", "fg": 4113 }, + { "id": "t_rdoor_o", "fg": 4114 }, + { "id": "t_rdoor_b", "fg": 4112 }, { "id": "t_reinforced_glass", "multitile": true, - "fg": 3971, + "fg": 4130, "additional_tiles": [ - { "id": "center", "fg": 3956 }, - { "id": "corner", "fg": [ 3958, 3960, 3959, 3957 ] }, - { "id": "t_connection", "fg": [ 3968, 3970, 3969, 3967 ] }, - { "id": "edge", "fg": [ 3962, 3961 ] }, - { "id": "end_piece", "fg": [ 3964, 3966, 3965, 3963 ] }, - { "id": "unconnected", "fg": 3971 } + { "id": "center", "fg": 4115 }, + { "id": "corner", "fg": [ 4117, 4119, 4118, 4116 ] }, + { "id": "t_connection", "fg": [ 4127, 4129, 4128, 4126 ] }, + { "id": "edge", "fg": [ 4121, 4120 ] }, + { "id": "end_piece", "fg": [ 4123, 4125, 4124, 4122 ] }, + { "id": "unconnected", "fg": 4130 } ] }, { "id": "t_rock", "multitile": true, - "fg": 3987, + "fg": 4146, "additional_tiles": [ - { "id": "center", "fg": 3972 }, - { "id": "corner", "fg": [ 3974, 3976, 3975, 3973 ] }, - { "id": "t_connection", "fg": [ 3984, 3986, 3985, 3983 ] }, - { "id": "edge", "fg": [ 3978, 3977 ] }, - { "id": "end_piece", "fg": [ 3980, 3982, 3981, 3979 ] }, - { "id": "unconnected", "fg": 3987 } + { "id": "center", "fg": 4131 }, + { "id": "corner", "fg": [ 4133, 4135, 4134, 4132 ] }, + { "id": "t_connection", "fg": [ 4143, 4145, 4144, 4142 ] }, + { "id": "edge", "fg": [ 4137, 4136 ] }, + { "id": "end_piece", "fg": [ 4139, 4141, 4140, 4138 ] }, + { "id": "unconnected", "fg": 4146 } ] }, { "id": "t_rock_floor", "multitile": true, - "fg": 4005, + "fg": 4164, "additional_tiles": [ { "id": "center", - "fg": [ { "weight": 1, "sprite": 3988 }, { "weight": 1, "sprite": 3989 }, { "weight": 1, "sprite": 3990 } ] + "fg": [ { "weight": 1, "sprite": 4147 }, { "weight": 1, "sprite": 4148 }, { "weight": 1, "sprite": 4149 } ] }, - { "id": "corner", "fg": [ 3992, 3994, 3993, 3991 ] }, - { "id": "t_connection", "fg": [ 4002, 4004, 4003, 4001 ] }, - { "id": "edge", "fg": [ 3996, 3995 ] }, - { "id": "end_piece", "fg": [ 3998, 4000, 3999, 3997 ] }, - { "id": "unconnected", "fg": 4005 } + { "id": "corner", "fg": [ 4151, 4153, 4152, 4150 ] }, + { "id": "t_connection", "fg": [ 4161, 4163, 4162, 4160 ] }, + { "id": "edge", "fg": [ 4155, 4154 ] }, + { "id": "end_piece", "fg": [ 4157, 4159, 4158, 4156 ] }, + { "id": "unconnected", "fg": 4164 } ] }, { "id": "t_rock_wall", "multitile": true, - "fg": 4021, + "fg": 4180, "additional_tiles": [ - { "id": "center", "fg": 4006 }, - { "id": "corner", "fg": [ 4008, 4010, 4009, 4007 ] }, - { "id": "t_connection", "fg": [ 4018, 4020, 4019, 4017 ] }, - { "id": "edge", "fg": [ 4012, 4011 ] }, - { "id": "end_piece", "fg": [ 4014, 4016, 4015, 4013 ] }, - { "id": "unconnected", "fg": 4021 } + { "id": "center", "fg": 4165 }, + { "id": "corner", "fg": [ 4167, 4169, 4168, 4166 ] }, + { "id": "t_connection", "fg": [ 4177, 4179, 4178, 4176 ] }, + { "id": "edge", "fg": [ 4171, 4170 ] }, + { "id": "end_piece", "fg": [ 4173, 4175, 4174, 4172 ] }, + { "id": "unconnected", "fg": 4180 } ] }, { "id": "t_sand", "multitile": true, - "fg": 4040, - "bg": 3567, + "fg": 4199, + "bg": 3726, "additional_tiles": [ { "id": "center", - "bg": 3567, + "bg": 3726, "fg": [ - { "weight": 1, "sprite": 4022 }, - { "weight": 1, "sprite": 4023 }, - { "weight": 1, "sprite": 4024 }, - { "weight": 1, "sprite": 4025 } + { "weight": 1, "sprite": 4181 }, + { "weight": 1, "sprite": 4182 }, + { "weight": 1, "sprite": 4183 }, + { "weight": 1, "sprite": 4184 } ] }, - { "id": "corner", "bg": 3567, "fg": [ 4027, 4029, 4028, 4026 ] }, - { "id": "t_connection", "bg": 3567, "fg": [ 4037, 4039, 4038, 4036 ] }, - { "id": "edge", "bg": 3567, "fg": [ 4031, 4030 ] }, - { "id": "end_piece", "bg": 3567, "fg": [ 4033, 4035, 4034, 4032 ] }, - { "bg": 3567, "id": "unconnected", "fg": 4040 } + { "id": "corner", "bg": 3726, "fg": [ 4186, 4188, 4187, 4185 ] }, + { "id": "t_connection", "bg": 3726, "fg": [ 4196, 4198, 4197, 4195 ] }, + { "id": "edge", "bg": 3726, "fg": [ 4190, 4189 ] }, + { "id": "end_piece", "bg": 3726, "fg": [ 4192, 4194, 4193, 4191 ] }, + { "bg": 3726, "id": "unconnected", "fg": 4199 } ] }, { "id": "t_sand_season_summer", "multitile": true, - "fg": 4040, - "bg": 3577, + "fg": 4199, + "bg": 3736, "additional_tiles": [ - { "id": "center", "bg": 3577, "fg": [ { "weight": 1, "sprite": 4022 }, { "weight": 1, "sprite": 4023 } ] }, - { "id": "corner", "bg": 3577, "fg": [ 4027, 4029, 4028, 4026 ] }, - { "id": "t_connection", "bg": 3577, "fg": [ 4037, 4039, 4038, 4036 ] }, - { "id": "edge", "bg": 3577, "fg": [ 4031, 4030 ] }, - { "id": "end_piece", "bg": 3577, "fg": [ 4033, 4035, 4034, 4032 ] }, - { "bg": 3577, "id": "unconnected", "fg": 4040 } + { "id": "center", "bg": 3736, "fg": [ { "weight": 1, "sprite": 4181 }, { "weight": 1, "sprite": 4182 } ] }, + { "id": "corner", "bg": 3736, "fg": [ 4186, 4188, 4187, 4185 ] }, + { "id": "t_connection", "bg": 3736, "fg": [ 4196, 4198, 4197, 4195 ] }, + { "id": "edge", "bg": 3736, "fg": [ 4190, 4189 ] }, + { "id": "end_piece", "bg": 3736, "fg": [ 4192, 4194, 4193, 4191 ] }, + { "bg": 3736, "id": "unconnected", "fg": 4199 } ] }, { "id": "t_sand_season_autumn", "multitile": true, - "fg": 4040, - "bg": 3572, + "fg": 4199, + "bg": 3731, "additional_tiles": [ - { "id": "center", "bg": 3572, "fg": [ { "weight": 1, "sprite": 4022 }, { "weight": 1, "sprite": 4023 } ] }, - { "id": "corner", "bg": 3572, "fg": [ 4027, 4029, 4028, 4026 ] }, - { "id": "t_connection", "bg": 3572, "fg": [ 4037, 4039, 4038, 4036 ] }, - { "id": "edge", "bg": 3572, "fg": [ 4031, 4030 ] }, - { "id": "end_piece", "bg": 3572, "fg": [ 4033, 4035, 4034, 4032 ] }, - { "bg": 3572, "id": "unconnected", "fg": 4040 } + { "id": "center", "bg": 3731, "fg": [ { "weight": 1, "sprite": 4181 }, { "weight": 1, "sprite": 4182 } ] }, + { "id": "corner", "bg": 3731, "fg": [ 4186, 4188, 4187, 4185 ] }, + { "id": "t_connection", "bg": 3731, "fg": [ 4196, 4198, 4197, 4195 ] }, + { "id": "edge", "bg": 3731, "fg": [ 4190, 4189 ] }, + { "id": "end_piece", "bg": 3731, "fg": [ 4192, 4194, 4193, 4191 ] }, + { "bg": 3731, "id": "unconnected", "fg": 4199 } ] }, { "id": "t_sand_season_winter", "multitile": true, - "fg": 4040, - "bg": 3063, + "fg": 4199, + "bg": 3222, "additional_tiles": [ - { "id": "center", "bg": 3063, "fg": [ { "weight": 1, "sprite": 4022 }, { "weight": 1, "sprite": 4023 } ] }, - { "id": "corner", "bg": 3063, "fg": [ 4027, 4029, 4028, 4026 ] }, - { "id": "t_connection", "bg": 3063, "fg": [ 4037, 4039, 4038, 4036 ] }, - { "id": "edge", "bg": 3063, "fg": [ 4031, 4030 ] }, - { "id": "end_piece", "bg": 3063, "fg": [ 4033, 4035, 4034, 4032 ] }, - { "bg": 3063, "id": "unconnected", "fg": 4040 } + { "id": "center", "bg": 3222, "fg": [ { "weight": 1, "sprite": 4181 }, { "weight": 1, "sprite": 4182 } ] }, + { "id": "corner", "bg": 3222, "fg": [ 4186, 4188, 4187, 4185 ] }, + { "id": "t_connection", "bg": 3222, "fg": [ 4196, 4198, 4197, 4195 ] }, + { "id": "edge", "bg": 3222, "fg": [ 4190, 4189 ] }, + { "id": "end_piece", "bg": 3222, "fg": [ 4192, 4194, 4193, 4191 ] }, + { "bg": 3222, "id": "unconnected", "fg": 4199 } ] }, { "id": [ "t_sandmound_season_spring", "t_sandmound_season_summer", "t_sandmound_season_autumn" ], - "fg": 4041 + "fg": 4200 }, - { "id": "t_sandmound_season_winter", "fg": 5311 }, + { "id": "t_sandmound_season_winter", "fg": 5483 }, { "id": "t_scrap_floor", "multitile": true, - "fg": 4057, + "fg": 4216, "additional_tiles": [ - { "id": "center", "fg": 4042 }, - { "id": "corner", "fg": [ 4044, 4046, 4045, 4043 ] }, - { "id": "t_connection", "fg": [ 4054, 4056, 4055, 4053 ] }, - { "id": "edge", "fg": [ 4048, 4047 ] }, - { "id": "end_piece", "fg": [ 4050, 4052, 4051, 4049 ] }, - { "id": "unconnected", "fg": 4057 } + { "id": "center", "fg": 4201 }, + { "id": "corner", "fg": [ 4203, 4205, 4204, 4202 ] }, + { "id": "t_connection", "fg": [ 4213, 4215, 4214, 4212 ] }, + { "id": "edge", "fg": [ 4207, 4206 ] }, + { "id": "end_piece", "fg": [ 4209, 4211, 4210, 4208 ] }, + { "id": "unconnected", "fg": 4216 } ] }, { "id": "t_scrap_wall", "multitile": true, - "fg": 4073, + "fg": 4232, "additional_tiles": [ - { "id": "center", "fg": 4058 }, - { "id": "corner", "fg": [ 4060, 4062, 4061, 4059 ] }, - { "id": "t_connection", "fg": [ 4070, 4072, 4071, 4069 ] }, - { "id": "edge", "fg": [ 4064, 4063 ] }, - { "id": "end_piece", "fg": [ 4066, 4068, 4067, 4065 ] }, - { "id": "unconnected", "fg": 4073 } + { "id": "center", "fg": 4217 }, + { "id": "corner", "fg": [ 4219, 4221, 4220, 4218 ] }, + { "id": "t_connection", "fg": [ 4229, 4231, 4230, 4228 ] }, + { "id": "edge", "fg": [ 4223, 4222 ] }, + { "id": "end_piece", "fg": [ 4225, 4227, 4226, 4224 ] }, + { "id": "unconnected", "fg": 4232 } ] }, { "id": "t_screened_porch_wall", "multitile": true, - "fg": 4089, - "bg": 3464, + "fg": 4248, + "bg": 3623, "additional_tiles": [ - { "id": "center", "bg": 3464, "fg": 4074 }, - { "id": "corner", "bg": 3464, "fg": [ 4076, 4078, 4077, 4075 ] }, - { "id": "t_connection", "bg": 3464, "fg": [ 4086, 4088, 4087, 4085 ] }, - { "id": "edge", "bg": 3464, "fg": [ 4080, 4079 ] }, - { "id": "end_piece", "bg": 3464, "fg": [ 4082, 4084, 4083, 4081 ] }, - { "bg": 3464, "id": "unconnected", "fg": [ 4089, 4089 ] } + { "id": "center", "bg": 3623, "fg": 4233 }, + { "id": "corner", "bg": 3623, "fg": [ 4235, 4237, 4236, 4234 ] }, + { "id": "t_connection", "bg": 3623, "fg": [ 4245, 4247, 4246, 4244 ] }, + { "id": "edge", "bg": 3623, "fg": [ 4239, 4238 ] }, + { "id": "end_piece", "bg": 3623, "fg": [ 4241, 4243, 4242, 4240 ] }, + { "bg": 3623, "id": "unconnected", "fg": [ 4248, 4248 ] } ] }, { "id": "t_sewage", "multitile": true, - "fg": 4105, + "fg": 4264, "additional_tiles": [ - { "id": "center", "fg": 4090 }, - { "id": "corner", "fg": [ 4092, 4094, 4093, 4091 ] }, - { "id": "t_connection", "fg": [ 4102, 4104, 4103, 4101 ] }, - { "id": "edge", "fg": [ 4096, 4095 ] }, - { "id": "end_piece", "fg": [ 4098, 4100, 4099, 4097 ] }, - { "id": "unconnected", "fg": [ 4105, 4105 ] } + { "id": "center", "fg": 4249 }, + { "id": "corner", "fg": [ 4251, 4253, 4252, 4250 ] }, + { "id": "t_connection", "fg": [ 4261, 4263, 4262, 4260 ] }, + { "id": "edge", "fg": [ 4255, 4254 ] }, + { "id": "end_piece", "fg": [ 4257, 4259, 4258, 4256 ] }, + { "id": "unconnected", "fg": [ 4264, 4264 ] } ] }, { "id": "t_sewage_pipe", "multitile": true, - "fg": 4121, + "fg": 4280, "additional_tiles": [ - { "id": "center", "fg": 4106 }, - { "id": "corner", "fg": [ 4108, 4110, 4109, 4107 ] }, - { "id": "t_connection", "fg": [ 4118, 4120, 4119, 4117 ] }, - { "id": "edge", "fg": [ 4112, 4111 ] }, - { "id": "end_piece", "fg": [ 4114, 4116, 4115, 4113 ] }, - { "id": "unconnected", "fg": [ 4121, 4121 ] } + { "id": "center", "fg": 4265 }, + { "id": "corner", "fg": [ 4267, 4269, 4268, 4266 ] }, + { "id": "t_connection", "fg": [ 4277, 4279, 4278, 4276 ] }, + { "id": "edge", "fg": [ 4271, 4270 ] }, + { "id": "end_piece", "fg": [ 4273, 4275, 4274, 4272 ] }, + { "id": "unconnected", "fg": [ 4280, 4280 ] } ] }, { "id": "t_shingle_flat_roof", "multitile": true, - "fg": 4137, - "additional_tiles": [ - { "id": "center", "fg": 4122 }, - { "id": "corner", "fg": [ 4124, 4126, 4125, 4123 ] }, - { "id": "t_connection", "fg": [ 4134, 4136, 4135, 4133 ] }, - { "id": "edge", "fg": [ 4128, 4127 ] }, - { "id": "end_piece", "fg": [ 4130, 4132, 4131, 4129 ] }, - { "id": "unconnected", "fg": 4137 } - ] - }, - { "id": "t_shrub", "fg": 4138, "bg": 3567 }, - { "id": "t_shrub_season_summer", "fg": 4138, "bg": 3577 }, - { "id": "t_shrub_season_autumn", "fg": 4138, "bg": 3572 }, - { "id": "t_shrub_season_winter", "fg": 4139, "bg": 3062 }, - { "id": "t_shrub_blackberry", "fg": 4140, "bg": 3567 }, - { "id": "t_shrub_blackberry_harvested", "fg": 4141, "bg": 3577 }, - { "id": "t_shrub_blackberry_season_summer", "fg": 4142, "bg": 3577 }, - { "id": "t_shrub_blackberry_season_autumn", "fg": 4140, "bg": 3572 }, - { "id": "t_shrub_blackberry_season_winter", "fg": 4143, "bg": 3062 }, - { "id": "t_shrub_blueberry", "fg": 4144, "bg": 3567 }, - { "id": "t_shrub_blueberry_harvested", "fg": 4145, "bg": 3577 }, - { "id": "t_shrub_blueberry_season_summer", "fg": 4146, "bg": 3577 }, - { "id": "t_shrub_blueberry_season_autumn", "fg": 4144, "bg": 3572 }, - { "id": "t_shrub_blueberry_season_winter", "fg": 4147, "bg": 3062 }, - { "id": "t_shrub_grape", "fg": 4148, "bg": 3567 }, - { "id": "t_shrub_grape_harvested", "fg": 4149, "bg": 3577 }, - { "id": "t_shrub_grape_season_summer", "fg": 4150, "bg": 3577 }, - { "id": "t_shrub_grape_season_autumn", "fg": 4148, "bg": 3572 }, - { "id": "t_shrub_grape_season_winter", "fg": 4151, "bg": 3062 }, - { "id": "t_shrub_huckleberry", "fg": 4152, "bg": 3567 }, - { "id": "t_shrub_huckleberry_harvested", "fg": 4153, "bg": 3577 }, - { "id": "t_shrub_huckleberry_season_summer", "fg": 4154, "bg": 3577 }, - { "id": "t_shrub_huckleberry_season_autumn", "fg": 4152, "bg": 3572 }, - { "id": "t_shrub_huckleberry_season_winter", "fg": 4155, "bg": 3062 }, - { "id": "t_shrub_hydrangea", "fg": 4157, "bg": 3567 }, - { "id": "t_shrub_hydrangea_harvested", "fg": 4156, "bg": 3567 }, - { "id": "t_shrub_hydrangea_season_summer", "fg": 4158, "bg": 3577 }, - { "id": "t_shrub_hydrangea_season_autumn", "fg": 4157, "bg": 3572 }, - { "id": "t_shrub_hydrangea_season_winter", "fg": 4159, "bg": 3062 }, - { "id": "t_shrub_lilac", "fg": 4161, "bg": 3567 }, - { "id": "t_shrub_lilac_harvested", "fg": 4160, "bg": 3567 }, - { "id": "t_shrub_lilac_season_summer", "fg": 4162, "bg": 3577 }, - { "id": "t_shrub_lilac_season_autumn", "fg": 4160, "bg": 3572 }, - { "id": "t_shrub_lilac_season_winter", "fg": 4163, "bg": 3062 }, - { "id": "t_shrub_peanut", "fg": 4164, "bg": 3567 }, - { "id": "t_shrub_peanut_harvested", "fg": 4166, "bg": 3572 }, - { "id": "t_shrub_peanut_season_summer", "fg": 4164, "bg": 3577 }, - { "id": "t_shrub_peanut_season_autumn", "fg": 4165, "bg": 3572 }, - { "id": "t_shrub_peanut_season_winter", "fg": 4167, "bg": 3062 }, - { "id": "t_shrub_raspberry", "fg": 4168, "bg": 3567 }, - { "id": "t_shrub_raspberry_harvested", "fg": 4169, "bg": 3577 }, - { "id": "t_shrub_raspberry_season_summer", "fg": 4170, "bg": 3577 }, - { "id": "t_shrub_raspberry_season_autumn", "fg": 4168, "bg": 3572 }, - { "id": "t_shrub_raspberry_season_winter", "fg": 4171, "bg": 3062 }, - { "id": "t_shrub_rose", "fg": 4173, "bg": 3567 }, - { "id": "t_shrub_rose_season_summer", "fg": 4173, "bg": 3577 }, - { "id": "t_shrub_rose_harvested", "fg": 4173, "bg": 3572 }, - { "id": "t_shrub_rose_season_autumn", "fg": 4172, "bg": 3572 }, - { "id": "t_shrub_rose_season_winter", "fg": 4174, "bg": 3062 }, - { "id": "t_shrub_strawberry", "fg": 4175, "bg": 3567 }, - { "id": "t_shrub_strawberry_harvested", "fg": 4176, "bg": 3577 }, - { "id": "t_shrub_strawberry_season_summer", "fg": 4177, "bg": 3577 }, - { "id": "t_shrub_strawberry_season_autumn", "fg": 4175, "bg": 3572 }, - { "id": "t_shrub_strawberry_season_winter", "fg": 4178, "bg": 3062 }, + "fg": 4296, + "additional_tiles": [ + { "id": "center", "fg": 4281 }, + { "id": "corner", "fg": [ 4283, 4285, 4284, 4282 ] }, + { "id": "t_connection", "fg": [ 4293, 4295, 4294, 4292 ] }, + { "id": "edge", "fg": [ 4287, 4286 ] }, + { "id": "end_piece", "fg": [ 4289, 4291, 4290, 4288 ] }, + { "id": "unconnected", "fg": 4296 } + ] + }, + { "id": "t_shrub", "fg": 4297, "bg": 3726 }, + { "id": "t_shrub_season_summer", "fg": 4297, "bg": 3736 }, + { "id": "t_shrub_season_autumn", "fg": 4297, "bg": 3731 }, + { "id": "t_shrub_season_winter", "fg": 4298, "bg": 3221 }, + { "id": "t_shrub_blackberry", "fg": 4299, "bg": 3726 }, + { "id": "t_shrub_blackberry_harvested", "fg": 4300, "bg": 3736 }, + { "id": "t_shrub_blackberry_season_summer", "fg": 4301, "bg": 3736 }, + { "id": "t_shrub_blackberry_season_autumn", "fg": 4299, "bg": 3731 }, + { "id": "t_shrub_blackberry_season_winter", "fg": 4302, "bg": 3221 }, + { "id": "t_shrub_blueberry", "fg": 4303, "bg": 3726 }, + { "id": "t_shrub_blueberry_harvested", "fg": 4304, "bg": 3736 }, + { "id": "t_shrub_blueberry_season_summer", "fg": 4305, "bg": 3736 }, + { "id": "t_shrub_blueberry_season_autumn", "fg": 4303, "bg": 3731 }, + { "id": "t_shrub_blueberry_season_winter", "fg": 4306, "bg": 3221 }, + { "id": "t_shrub_grape", "fg": 4307, "bg": 3726 }, + { "id": "t_shrub_grape_harvested", "fg": 4308, "bg": 3736 }, + { "id": "t_shrub_grape_season_summer", "fg": 4309, "bg": 3736 }, + { "id": "t_shrub_grape_season_autumn", "fg": 4307, "bg": 3731 }, + { "id": "t_shrub_grape_season_winter", "fg": 4310, "bg": 3221 }, + { "id": "t_shrub_huckleberry", "fg": 4311, "bg": 3726 }, + { "id": "t_shrub_huckleberry_harvested", "fg": 4312, "bg": 3736 }, + { "id": "t_shrub_huckleberry_season_summer", "fg": 4313, "bg": 3736 }, + { "id": "t_shrub_huckleberry_season_autumn", "fg": 4311, "bg": 3731 }, + { "id": "t_shrub_huckleberry_season_winter", "fg": 4314, "bg": 3221 }, + { "id": "t_shrub_hydrangea", "fg": 4316, "bg": 3726 }, + { "id": "t_shrub_hydrangea_harvested", "fg": 4315, "bg": 3726 }, + { "id": "t_shrub_hydrangea_season_summer", "fg": 4317, "bg": 3736 }, + { "id": "t_shrub_hydrangea_season_autumn", "fg": 4316, "bg": 3731 }, + { "id": "t_shrub_hydrangea_season_winter", "fg": 4318, "bg": 3221 }, + { "id": "t_shrub_lilac", "fg": 4320, "bg": 3726 }, + { "id": "t_shrub_lilac_harvested", "fg": 4319, "bg": 3726 }, + { "id": "t_shrub_lilac_season_summer", "fg": 4321, "bg": 3736 }, + { "id": "t_shrub_lilac_season_autumn", "fg": 4319, "bg": 3731 }, + { "id": "t_shrub_lilac_season_winter", "fg": 4322, "bg": 3221 }, + { "id": "t_shrub_peanut", "fg": 4323, "bg": 3726 }, + { "id": "t_shrub_peanut_harvested", "fg": 4325, "bg": 3731 }, + { "id": "t_shrub_peanut_season_summer", "fg": 4323, "bg": 3736 }, + { "id": "t_shrub_peanut_season_autumn", "fg": 4324, "bg": 3731 }, + { "id": "t_shrub_peanut_season_winter", "fg": 4326, "bg": 3221 }, + { "id": "t_shrub_raspberry", "fg": 4327, "bg": 3726 }, + { "id": "t_shrub_raspberry_harvested", "fg": 4328, "bg": 3736 }, + { "id": "t_shrub_raspberry_season_summer", "fg": 4329, "bg": 3736 }, + { "id": "t_shrub_raspberry_season_autumn", "fg": 4327, "bg": 3731 }, + { "id": "t_shrub_raspberry_season_winter", "fg": 4330, "bg": 3221 }, + { "id": "t_shrub_rose", "fg": 4332, "bg": 3726 }, + { "id": "t_shrub_rose_season_summer", "fg": 4332, "bg": 3736 }, + { "id": "t_shrub_rose_harvested", "fg": 4332, "bg": 3731 }, + { "id": "t_shrub_rose_season_autumn", "fg": 4331, "bg": 3731 }, + { "id": "t_shrub_rose_season_winter", "fg": 4333, "bg": 3221 }, + { "id": "t_shrub_strawberry", "fg": 4334, "bg": 3726 }, + { "id": "t_shrub_strawberry_harvested", "fg": 4335, "bg": 3736 }, + { "id": "t_shrub_strawberry_season_summer", "fg": 4336, "bg": 3736 }, + { "id": "t_shrub_strawberry_season_autumn", "fg": 4334, "bg": 3731 }, + { "id": "t_shrub_strawberry_season_winter", "fg": 4337, "bg": 3221 }, { "id": [ "t_sidewalk", "t_sidewalk_bg_dp" ], "multitile": true, - "fg": 4194, + "fg": 4353, "additional_tiles": [ - { "id": "center", "fg": 4179 }, - { "id": "corner", "fg": [ 4181, 4183, 4182, 4180 ] }, - { "id": "t_connection", "fg": [ 4191, 4193, 4192, 4190 ] }, - { "id": "edge", "fg": [ 4185, 4184 ] }, - { "id": "end_piece", "fg": [ 4187, 4189, 4188, 4186 ] }, - { "id": "unconnected", "fg": 4194 } + { "id": "center", "fg": 4338 }, + { "id": "corner", "fg": [ 4340, 4342, 4341, 4339 ] }, + { "id": "t_connection", "fg": [ 4350, 4352, 4351, 4349 ] }, + { "id": "edge", "fg": [ 4344, 4343 ] }, + { "id": "end_piece", "fg": [ 4346, 4348, 4347, 4345 ] }, + { "id": "unconnected", "fg": 4353 } ] }, - { "id": "t_sidewalk_season_winter", "fg": 3063 }, + { "id": "t_sidewalk_season_winter", "fg": 3222 }, { "id": "t_strconc_floor", "multitile": true, - "fg": 4211, + "fg": 4370, "additional_tiles": [ - { "id": "center", "fg": 4196 }, - { "id": "corner", "fg": [ 4198, 4200, 4199, 4197 ] }, - { "id": "t_connection", "fg": [ 4208, 4210, 4209, 4207 ] }, - { "id": "edge", "fg": [ 4202, 4201 ] }, - { "id": "end_piece", "fg": [ 4204, 4206, 4205, 4203 ] }, - { "id": "unconnected", "fg": 4211 } + { "id": "center", "fg": 4355 }, + { "id": "corner", "fg": [ 4357, 4359, 4358, 4356 ] }, + { "id": "t_connection", "fg": [ 4367, 4369, 4368, 4366 ] }, + { "id": "edge", "fg": [ 4361, 4360 ] }, + { "id": "end_piece", "fg": [ 4363, 4365, 4364, 4362 ] }, + { "id": "unconnected", "fg": 4370 } ] }, - { "id": "t_stump", "fg": 4212, "bg": 3567 }, - { "id": "t_stump_season_summer", "fg": 4212, "bg": 3577 }, - { "id": "t_stump_season_autumn", "fg": 4212, "bg": 3572 }, - { "id": "t_stump_season_winter", "fg": 4212, "bg": 3062 }, - { "id": "f_tatami", "fg": [ { "weight": 100, "sprite": 4213 }, { "weight": 100, "sprite": 4214 } ] }, + { "id": "t_stump", "fg": 4371, "bg": 3726 }, + { "id": "t_stump_season_summer", "fg": 4371, "bg": 3736 }, + { "id": "t_stump_season_autumn", "fg": 4371, "bg": 3731 }, + { "id": "t_stump_season_winter", "fg": 4371, "bg": 3221 }, + { "id": "f_tatami", "fg": [ { "weight": 100, "sprite": 4372 }, { "weight": 100, "sprite": 4373 } ] }, { "id": "t_thconc_floor", "multitile": true, - "fg": 4230, + "fg": 4389, "additional_tiles": [ - { "id": "center", "fg": 4215 }, - { "id": "corner", "fg": [ 4217, 4219, 4218, 4216 ] }, - { "id": "t_connection", "fg": [ 4227, 4229, 4228, 4226 ] }, - { "id": "edge", "fg": [ 4221, 4220 ] }, - { "id": "end_piece", "fg": [ 4223, 4225, 4224, 4222 ] }, - { "id": "unconnected", "fg": 4230 } + { "id": "center", "fg": 4374 }, + { "id": "corner", "fg": [ 4376, 4378, 4377, 4375 ] }, + { "id": "t_connection", "fg": [ 4386, 4388, 4387, 4385 ] }, + { "id": "edge", "fg": [ 4380, 4379 ] }, + { "id": "end_piece", "fg": [ 4382, 4384, 4383, 4381 ] }, + { "id": "unconnected", "fg": 4389 } ] }, - { "id": "t_underbrush", "fg": 4231, "bg": 3567 }, - { "id": "t_underbrush_harvested_spring", "fg": 4232, "bg": 3567 }, - { "id": "t_underbrush_season_summer", "fg": 4231, "bg": 3577 }, - { "id": "t_underbrush_harvested_summer", "fg": 4232, "bg": 3577 }, - { "id": "t_underbrush_season_autumn", "fg": 4231, "bg": 3572 }, - { "id": "t_underbrush_harvested_autumn", "fg": 4232, "bg": 3572 }, - { "id": "t_underbrush_harvested_winter", "fg": 4232, "bg": 3062 }, - { "id": "t_underbrush_season_winter", "fg": 4231, "bg": 3062 }, + { "id": "t_underbrush", "fg": 4390, "bg": 3726 }, + { "id": "t_underbrush_harvested_spring", "fg": 4391, "bg": 3726 }, + { "id": "t_underbrush_season_summer", "fg": 4390, "bg": 3736 }, + { "id": "t_underbrush_harvested_summer", "fg": 4391, "bg": 3736 }, + { "id": "t_underbrush_season_autumn", "fg": 4390, "bg": 3731 }, + { "id": "t_underbrush_harvested_autumn", "fg": 4391, "bg": 3731 }, + { "id": "t_underbrush_harvested_winter", "fg": 4391, "bg": 3221 }, + { "id": "t_underbrush_season_winter", "fg": 4390, "bg": 3221 }, { "id": "t_wall", "multitile": true, - "fg": 4248, + "fg": 4407, "additional_tiles": [ - { "id": "center", "fg": 4233 }, - { "id": "corner", "fg": [ 4235, 4237, 4236, 4234 ] }, - { "id": "t_connection", "fg": [ 4245, 4247, 4246, 4244 ] }, - { "id": "edge", "fg": [ 4239, 4238 ] }, - { "id": "end_piece", "fg": [ 4241, 4243, 4242, 4240 ] }, - { "id": "unconnected", "fg": 4248 } + { "id": "center", "fg": 4392 }, + { "id": "corner", "fg": [ 4394, 4396, 4395, 4393 ] }, + { "id": "t_connection", "fg": [ 4404, 4406, 4405, 4403 ] }, + { "id": "edge", "fg": [ 4398, 4397 ] }, + { "id": "end_piece", "fg": [ 4400, 4402, 4401, 4399 ] }, + { "id": "unconnected", "fg": 4407 } ] }, { "id": "t_wall_b", "multitile": true, - "fg": 4264, + "fg": 4423, "additional_tiles": [ - { "id": "center", "fg": 4249 }, - { "id": "corner", "fg": [ 4251, 4253, 4252, 4250 ] }, - { "id": "t_connection", "fg": [ 4261, 4263, 4262, 4260 ] }, - { "id": "edge", "fg": [ 4255, 4254 ] }, - { "id": "end_piece", "fg": [ 4257, 4259, 4258, 4256 ] }, - { "id": "unconnected", "fg": 4264 } + { "id": "center", "fg": 4408 }, + { "id": "corner", "fg": [ 4410, 4412, 4411, 4409 ] }, + { "id": "t_connection", "fg": [ 4420, 4422, 4421, 4419 ] }, + { "id": "edge", "fg": [ 4414, 4413 ] }, + { "id": "end_piece", "fg": [ 4416, 4418, 4417, 4415 ] }, + { "id": "unconnected", "fg": 4423 } ] }, { "id": "t_wall_g", "multitile": true, - "fg": 4280, + "fg": 4439, "additional_tiles": [ - { "id": "center", "fg": 4265 }, - { "id": "corner", "fg": [ 4267, 4269, 4268, 4266 ] }, - { "id": "t_connection", "fg": [ 4277, 4279, 4278, 4276 ] }, - { "id": "edge", "fg": [ 4271, 4270 ] }, - { "id": "end_piece", "fg": [ 4273, 4275, 4274, 4272 ] }, - { "id": "unconnected", "fg": 4280 } + { "id": "center", "fg": 4424 }, + { "id": "corner", "fg": [ 4426, 4428, 4427, 4425 ] }, + { "id": "t_connection", "fg": [ 4436, 4438, 4437, 4435 ] }, + { "id": "edge", "fg": [ 4430, 4429 ] }, + { "id": "end_piece", "fg": [ 4432, 4434, 4433, 4431 ] }, + { "id": "unconnected", "fg": 4439 } ] }, { "id": [ "t_wall_glass", "t_wall_glass_alarm" ], "multitile": true, - "fg": 4296, + "fg": 4455, "additional_tiles": [ - { "id": "center", "fg": 4281 }, - { "id": "corner", "fg": [ 4283, 4285, 4284, 4282 ] }, - { "id": "t_connection", "fg": [ 4293, 4295, 4294, 4292 ] }, - { "id": "edge", "fg": [ 4287, 4286 ] }, - { "id": "end_piece", "fg": [ 4289, 4291, 4290, 4288 ] }, - { "id": "unconnected", "fg": 4296 } + { "id": "center", "fg": 4440 }, + { "id": "corner", "fg": [ 4442, 4444, 4443, 4441 ] }, + { "id": "t_connection", "fg": [ 4452, 4454, 4453, 4451 ] }, + { "id": "edge", "fg": [ 4446, 4445 ] }, + { "id": "end_piece", "fg": [ 4448, 4450, 4449, 4447 ] }, + { "id": "unconnected", "fg": 4455 } ] }, { "id": "t_wall_log", "multitile": true, - "fg": 4312, - "bg": 3567, + "fg": 4471, + "bg": 3726, "additional_tiles": [ - { "id": "center", "fg": 4297 }, - { "id": "corner", "fg": [ 4299, 4301, 4300, 4298 ] }, - { "id": "t_connection", "fg": [ 4309, 4311, 4310, 4308 ] }, - { "id": "edge", "bg": 3567, "fg": [ 4303, 4302 ] }, - { "id": "end_piece", "bg": 3567, "fg": [ 4305, 4307, 4306, 4304 ] }, - { "bg": 3567, "id": "unconnected", "fg": 4312 } + { "id": "center", "fg": 4456 }, + { "id": "corner", "fg": [ 4458, 4460, 4459, 4457 ] }, + { "id": "t_connection", "fg": [ 4468, 4470, 4469, 4467 ] }, + { "id": "edge", "bg": 3726, "fg": [ 4462, 4461 ] }, + { "id": "end_piece", "bg": 3726, "fg": [ 4464, 4466, 4465, 4463 ] }, + { "bg": 3726, "id": "unconnected", "fg": 4471 } ] }, { "id": "t_wall_p", "multitile": true, - "fg": 4328, + "fg": 4487, "additional_tiles": [ - { "id": "center", "fg": 4313 }, - { "id": "corner", "fg": [ 4315, 4317, 4316, 4314 ] }, - { "id": "t_connection", "fg": [ 4325, 4327, 4326, 4324 ] }, - { "id": "edge", "fg": [ 4319, 4318 ] }, - { "id": "end_piece", "fg": [ 4321, 4323, 4322, 4320 ] }, - { "id": "unconnected", "fg": 4328 } + { "id": "center", "fg": 4472 }, + { "id": "corner", "fg": [ 4474, 4476, 4475, 4473 ] }, + { "id": "t_connection", "fg": [ 4484, 4486, 4485, 4483 ] }, + { "id": "edge", "fg": [ 4478, 4477 ] }, + { "id": "end_piece", "fg": [ 4480, 4482, 4481, 4479 ] }, + { "id": "unconnected", "fg": 4487 } ] }, { "id": "t_wall_r", "multitile": true, - "fg": 4344, + "fg": 4503, "additional_tiles": [ - { "id": "center", "fg": 4329 }, - { "id": "corner", "fg": [ 4331, 4333, 4332, 4330 ] }, - { "id": "t_connection", "fg": [ 4341, 4343, 4342, 4340 ] }, - { "id": "edge", "fg": [ 4335, 4334 ] }, - { "id": "end_piece", "fg": [ 4337, 4339, 4338, 4336 ] }, - { "id": "unconnected", "fg": 4344 } + { "id": "center", "fg": 4488 }, + { "id": "corner", "fg": [ 4490, 4492, 4491, 4489 ] }, + { "id": "t_connection", "fg": [ 4500, 4502, 4501, 4499 ] }, + { "id": "edge", "fg": [ 4494, 4493 ] }, + { "id": "end_piece", "fg": [ 4496, 4498, 4497, 4495 ] }, + { "id": "unconnected", "fg": 4503 } ] }, { "id": "t_wall_resin", "multitile": true, - "fg": 4362, + "fg": 4521, "additional_tiles": [ - { "id": "center", "fg": 4347 }, - { "id": "corner", "fg": [ 4349, 4351, 4350, 4348 ] }, - { "id": "t_connection", "fg": [ 4359, 4361, 4360, 4358 ] }, - { "id": "edge", "fg": [ 4353, 4352 ] }, - { "id": "end_piece", "fg": [ 4355, 4357, 4356, 4354 ] }, - { "id": "unconnected", "fg": 4362 } + { "id": "center", "fg": 4506 }, + { "id": "corner", "fg": [ 4508, 4510, 4509, 4507 ] }, + { "id": "t_connection", "fg": [ 4518, 4520, 4519, 4517 ] }, + { "id": "edge", "fg": [ 4512, 4511 ] }, + { "id": "end_piece", "fg": [ 4514, 4516, 4515, 4513 ] }, + { "id": "unconnected", "fg": 4521 } ] }, - { "id": "t_resin_hole_c", "fg": 4345 }, - { "id": "t_resin_hole_o", "fg": 4346 }, + { "id": "t_resin_hole_c", "fg": 4504 }, + { "id": "t_resin_hole_o", "fg": 4505 }, { "id": "t_wall_w", "multitile": true, - "fg": 4378, + "fg": 4537, "additional_tiles": [ - { "id": "center", "fg": 4363 }, - { "id": "corner", "fg": [ 4365, 4367, 4366, 4364 ] }, - { "id": "t_connection", "fg": [ 4375, 4377, 4376, 4374 ] }, - { "id": "edge", "fg": [ 4369, 4368 ] }, - { "id": "end_piece", "fg": [ 4371, 4373, 4372, 4370 ] }, - { "id": "unconnected", "fg": 4378 } + { "id": "center", "fg": 4522 }, + { "id": "corner", "fg": [ 4524, 4526, 4525, 4523 ] }, + { "id": "t_connection", "fg": [ 4534, 4536, 4535, 4533 ] }, + { "id": "edge", "fg": [ 4528, 4527 ] }, + { "id": "end_piece", "fg": [ 4530, 4532, 4531, 4529 ] }, + { "id": "unconnected", "fg": 4537 } ] }, { "id": [ "t_wall_wood", "t_wall_wood_chipped", "t_wall_wood_broken" ], "multitile": true, - "fg": 4394, + "fg": 4553, "additional_tiles": [ - { "id": "center", "fg": 4379 }, - { "id": "corner", "fg": [ 4381, 4383, 4382, 4380 ] }, - { "id": "t_connection", "fg": [ 4391, 4393, 4392, 4390 ] }, - { "id": "edge", "fg": [ 4385, 4384 ] }, - { "id": "end_piece", "fg": [ 4387, 4389, 4388, 4386 ] }, - { "id": "unconnected", "fg": 4394 } + { "id": "center", "fg": 4538 }, + { "id": "corner", "fg": [ 4540, 4542, 4541, 4539 ] }, + { "id": "t_connection", "fg": [ 4550, 4552, 4551, 4549 ] }, + { "id": "edge", "fg": [ 4544, 4543 ] }, + { "id": "end_piece", "fg": [ 4546, 4548, 4547, 4545 ] }, + { "id": "unconnected", "fg": 4553 } ] }, { "id": "t_wall_y", "multitile": true, - "fg": 4410, + "fg": 4569, "additional_tiles": [ - { "id": "center", "fg": 4395 }, - { "id": "corner", "fg": [ 4397, 4399, 4398, 4396 ] }, - { "id": "t_connection", "fg": [ 4407, 4409, 4408, 4406 ] }, - { "id": "edge", "fg": [ 4401, 4400 ] }, - { "id": "end_piece", "fg": [ 4403, 4405, 4404, 4402 ] }, - { "id": "unconnected", "fg": 4410 } + { "id": "center", "fg": 4554 }, + { "id": "corner", "fg": [ 4556, 4558, 4557, 4555 ] }, + { "id": "t_connection", "fg": [ 4566, 4568, 4567, 4565 ] }, + { "id": "edge", "fg": [ 4560, 4559 ] }, + { "id": "end_piece", "fg": [ 4562, 4564, 4563, 4561 ] }, + { "id": "unconnected", "fg": 4569 } ] }, { "id": [ "t_water_dp", "t_swater_dp" ], "multitile": true, - "fg": 4429, - "bg": 3567, + "fg": 4588, + "bg": 3726, "additional_tiles": [ { "id": "center", - "bg": 3567, + "bg": 3726, "fg": [ - { "weight": 1, "sprite": 4411 }, - { "weight": 1, "sprite": 4412 }, - { "weight": 1, "sprite": 4413 }, - { "weight": 1, "sprite": 4414 } + { "weight": 1, "sprite": 4570 }, + { "weight": 1, "sprite": 4571 }, + { "weight": 1, "sprite": 4572 }, + { "weight": 1, "sprite": 4573 } ] }, - { "id": "corner", "bg": 3567, "fg": [ 4416, 4418, 4417, 4415 ] }, - { "id": "t_connection", "bg": 3567, "fg": [ 4426, 4428, 4427, 4425 ] }, - { "id": "edge", "bg": 3567, "fg": [ 4420, 4419 ] }, - { "id": "end_piece", "bg": 3567, "fg": [ 4422, 4424, 4423, 4421 ] }, - { "bg": 3567, "id": "unconnected", "fg": 4429 } + { "id": "corner", "bg": 3726, "fg": [ 4575, 4577, 4576, 4574 ] }, + { "id": "t_connection", "bg": 3726, "fg": [ 4585, 4587, 4586, 4584 ] }, + { "id": "edge", "bg": 3726, "fg": [ 4579, 4578 ] }, + { "id": "end_piece", "bg": 3726, "fg": [ 4581, 4583, 4582, 4580 ] }, + { "bg": 3726, "id": "unconnected", "fg": 4588 } ] }, { "id": [ "t_water_dp_season_summer", "t_swater_dp_season_summer" ], "multitile": true, - "fg": 4429, - "bg": 3577, + "fg": 4588, + "bg": 3736, "additional_tiles": [ { "id": "center", - "bg": 3577, - "fg": [ { "weight": 1, "sprite": 4411 }, { "weight": 1, "sprite": 4412 }, { "weight": 1, "sprite": 4413 } ] + "bg": 3736, + "fg": [ { "weight": 1, "sprite": 4570 }, { "weight": 1, "sprite": 4571 }, { "weight": 1, "sprite": 4572 } ] }, - { "id": "corner", "bg": 3577, "fg": [ 4416, 4418, 4417, 4415 ] }, - { "id": "t_connection", "bg": 3577, "fg": [ 4426, 4428, 4427, 4425 ] }, - { "id": "edge", "bg": 3577, "fg": [ 4420, 4419 ] }, - { "id": "end_piece", "bg": 3577, "fg": [ 4422, 4424, 4423, 4421 ] }, - { "bg": 3577, "id": "unconnected", "fg": 4429 } + { "id": "corner", "bg": 3736, "fg": [ 4575, 4577, 4576, 4574 ] }, + { "id": "t_connection", "bg": 3736, "fg": [ 4585, 4587, 4586, 4584 ] }, + { "id": "edge", "bg": 3736, "fg": [ 4579, 4578 ] }, + { "id": "end_piece", "bg": 3736, "fg": [ 4581, 4583, 4582, 4580 ] }, + { "bg": 3736, "id": "unconnected", "fg": 4588 } ] }, { "id": [ "t_water_dp_season_autumn", "t_swater_dp_season_autumn" ], "multitile": true, - "fg": 4429, - "bg": 3572, + "fg": 4588, + "bg": 3731, "additional_tiles": [ { "id": "center", - "bg": 3572, - "fg": [ { "weight": 1, "sprite": 4411 }, { "weight": 1, "sprite": 4412 }, { "weight": 1, "sprite": 4413 } ] + "bg": 3731, + "fg": [ { "weight": 1, "sprite": 4570 }, { "weight": 1, "sprite": 4571 }, { "weight": 1, "sprite": 4572 } ] }, - { "id": "corner", "bg": 3572, "fg": [ 4416, 4418, 4417, 4415 ] }, - { "id": "t_connection", "bg": 3572, "fg": [ 4426, 4428, 4427, 4425 ] }, - { "id": "edge", "bg": 3572, "fg": [ 4420, 4419 ] }, - { "id": "end_piece", "bg": 3572, "fg": [ 4422, 4424, 4423, 4421 ] }, - { "bg": 3572, "id": "unconnected", "fg": 4429 } + { "id": "corner", "bg": 3731, "fg": [ 4575, 4577, 4576, 4574 ] }, + { "id": "t_connection", "bg": 3731, "fg": [ 4585, 4587, 4586, 4584 ] }, + { "id": "edge", "bg": 3731, "fg": [ 4579, 4578 ] }, + { "id": "end_piece", "bg": 3731, "fg": [ 4581, 4583, 4582, 4580 ] }, + { "bg": 3731, "id": "unconnected", "fg": 4588 } ] }, { "id": [ "t_water_dp_season_winter", "t_swater_dp_season_winter" ], "multitile": true, - "fg": 4429, - "bg": 3063, + "fg": 4588, + "bg": 3222, "additional_tiles": [ { "id": "center", - "bg": 3063, - "fg": [ { "weight": 1, "sprite": 4411 }, { "weight": 1, "sprite": 4412 }, { "weight": 1, "sprite": 4413 } ] + "bg": 3222, + "fg": [ { "weight": 1, "sprite": 4570 }, { "weight": 1, "sprite": 4571 }, { "weight": 1, "sprite": 4572 } ] }, - { "id": "corner", "bg": 3063, "fg": [ 4416, 4418, 4417, 4415 ] }, - { "id": "t_connection", "bg": 3063, "fg": [ 4426, 4428, 4427, 4425 ] }, - { "id": "edge", "bg": 3063, "fg": [ 4420, 4419 ] }, - { "id": "end_piece", "bg": 3063, "fg": [ 4422, 4424, 4423, 4421 ] }, - { "bg": 3063, "id": "unconnected", "fg": 4429 } + { "id": "corner", "bg": 3222, "fg": [ 4575, 4577, 4576, 4574 ] }, + { "id": "t_connection", "bg": 3222, "fg": [ 4585, 4587, 4586, 4584 ] }, + { "id": "edge", "bg": 3222, "fg": [ 4579, 4578 ] }, + { "id": "end_piece", "bg": 3222, "fg": [ 4581, 4583, 4582, 4580 ] }, + { "bg": 3222, "id": "unconnected", "fg": 4588 } ] }, { "id": "t_water_hot", - "fg": 4445, - "bg": 3567, + "fg": 4604, + "bg": 3726, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 4430, "bg": 3567 }, - { "id": "corner", "fg": [ 4432, 4434, 4433, 4431 ], "bg": 3567 }, - { "id": "t_connection", "fg": [ 4442, 4444, 4443, 4441 ], "bg": 3567 }, - { "id": "edge", "fg": [ 4436, 4435 ], "bg": 3567 }, - { "id": "end_piece", "fg": [ 4438, 4440, 4439, 4437 ], "bg": 3567 }, - { "id": "unconnected", "fg": [ 4445, 4445 ], "bg": 3567 } + { "id": "center", "fg": 4589, "bg": 3726 }, + { "id": "corner", "fg": [ 4591, 4593, 4592, 4590 ], "bg": 3726 }, + { "id": "t_connection", "fg": [ 4601, 4603, 4602, 4600 ], "bg": 3726 }, + { "id": "edge", "fg": [ 4595, 4594 ], "bg": 3726 }, + { "id": "end_piece", "fg": [ 4597, 4599, 4598, 4596 ], "bg": 3726 }, + { "id": "unconnected", "fg": [ 4604, 4604 ], "bg": 3726 } ] }, { "id": "t_water_hot_season_summer", - "fg": 4445, - "bg": 3577, + "fg": 4604, + "bg": 3736, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 4430, "bg": 3577 }, - { "id": "corner", "fg": [ 4432, 4434, 4433, 4431 ], "bg": 3577 }, - { "id": "t_connection", "fg": [ 4442, 4444, 4443, 4441 ], "bg": 3577 }, - { "id": "edge", "fg": [ 4436, 4435 ], "bg": 3577 }, - { "id": "end_piece", "fg": [ 4438, 4440, 4439, 4437 ], "bg": 3577 }, - { "id": "unconnected", "fg": [ 4445, 4445 ], "bg": 3577 } + { "id": "center", "fg": 4589, "bg": 3736 }, + { "id": "corner", "fg": [ 4591, 4593, 4592, 4590 ], "bg": 3736 }, + { "id": "t_connection", "fg": [ 4601, 4603, 4602, 4600 ], "bg": 3736 }, + { "id": "edge", "fg": [ 4595, 4594 ], "bg": 3736 }, + { "id": "end_piece", "fg": [ 4597, 4599, 4598, 4596 ], "bg": 3736 }, + { "id": "unconnected", "fg": [ 4604, 4604 ], "bg": 3736 } ] }, { "id": "t_water_hot_season_autumn", - "fg": 4445, - "bg": 3572, + "fg": 4604, + "bg": 3731, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 4430, "bg": 3572 }, - { "id": "corner", "fg": [ 4432, 4434, 4433, 4431 ], "bg": 3572 }, - { "id": "t_connection", "fg": [ 4442, 4444, 4443, 4441 ], "bg": 3572 }, - { "id": "edge", "fg": [ 4436, 4435 ], "bg": 3572 }, - { "id": "end_piece", "fg": [ 4438, 4440, 4439, 4437 ], "bg": 3572 }, - { "id": "unconnected", "fg": [ 4445, 4445 ], "bg": 3572 } + { "id": "center", "fg": 4589, "bg": 3731 }, + { "id": "corner", "fg": [ 4591, 4593, 4592, 4590 ], "bg": 3731 }, + { "id": "t_connection", "fg": [ 4601, 4603, 4602, 4600 ], "bg": 3731 }, + { "id": "edge", "fg": [ 4595, 4594 ], "bg": 3731 }, + { "id": "end_piece", "fg": [ 4597, 4599, 4598, 4596 ], "bg": 3731 }, + { "id": "unconnected", "fg": [ 4604, 4604 ], "bg": 3731 } ] }, { "id": "t_water_hot_season_winter", - "fg": 4445, - "bg": 3063, + "fg": 4604, + "bg": 3222, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 4430, "bg": 3063 }, - { "id": "corner", "fg": [ 4432, 4434, 4433, 4431 ], "bg": 3063 }, - { "id": "t_connection", "fg": [ 4442, 4444, 4443, 4441 ], "bg": 3063 }, - { "id": "edge", "fg": [ 4436, 4435 ], "bg": 3063 }, - { "id": "end_piece", "fg": [ 4438, 4440, 4439, 4437 ], "bg": 3063 }, - { "id": "unconnected", "fg": [ 4445, 4445 ], "bg": 3063 } + { "id": "center", "fg": 4589, "bg": 3222 }, + { "id": "corner", "fg": [ 4591, 4593, 4592, 4590 ], "bg": 3222 }, + { "id": "t_connection", "fg": [ 4601, 4603, 4602, 4600 ], "bg": 3222 }, + { "id": "edge", "fg": [ 4595, 4594 ], "bg": 3222 }, + { "id": "end_piece", "fg": [ 4597, 4599, 4598, 4596 ], "bg": 3222 }, + { "id": "unconnected", "fg": [ 4604, 4604 ], "bg": 3222 } ] }, { "id": [ "t_water_moving_dp", "t_swater_moving_dp" ], "multitile": true, - "fg": 4462, - "bg": 3567, + "fg": 4621, + "bg": 3726, "additional_tiles": [ - { "id": "center", "bg": 3567, "fg": [ { "weight": 1, "sprite": 4446 }, { "weight": 1, "sprite": 4447 } ] }, - { "id": "corner", "bg": 3567, "fg": [ 4449, 4451, 4450, 4448 ] }, - { "id": "t_connection", "bg": 3567, "fg": [ 4459, 4461, 4460, 4458 ] }, - { "id": "edge", "bg": 3567, "fg": [ 4453, 4452 ] }, - { "id": "end_piece", "bg": 3567, "fg": [ 4455, 4457, 4456, 4454 ] }, - { "bg": 3567, "id": "unconnected", "fg": 4462 } + { "id": "center", "bg": 3726, "fg": [ { "weight": 1, "sprite": 4605 }, { "weight": 1, "sprite": 4606 } ] }, + { "id": "corner", "bg": 3726, "fg": [ 4608, 4610, 4609, 4607 ] }, + { "id": "t_connection", "bg": 3726, "fg": [ 4618, 4620, 4619, 4617 ] }, + { "id": "edge", "bg": 3726, "fg": [ 4612, 4611 ] }, + { "id": "end_piece", "bg": 3726, "fg": [ 4614, 4616, 4615, 4613 ] }, + { "bg": 3726, "id": "unconnected", "fg": 4621 } ] }, { "id": [ "t_water_moving_dp_season_summer", "t_swater_moving_dp_season_summer" ], "multitile": true, - "fg": 4462, - "bg": 3577, + "fg": 4621, + "bg": 3736, "additional_tiles": [ - { "id": "center", "bg": 3577, "fg": [ { "weight": 1, "sprite": 4446 }, { "weight": 1, "sprite": 4447 } ] }, - { "id": "corner", "bg": 3577, "fg": [ 4449, 4451, 4450, 4448 ] }, - { "id": "t_connection", "bg": 3577, "fg": [ 4459, 4461, 4460, 4458 ] }, - { "id": "edge", "bg": 3577, "fg": [ 4453, 4452 ] }, - { "id": "end_piece", "bg": 3577, "fg": [ 4455, 4457, 4456, 4454 ] }, - { "bg": 3577, "id": "unconnected", "fg": 4462 } + { "id": "center", "bg": 3736, "fg": [ { "weight": 1, "sprite": 4605 }, { "weight": 1, "sprite": 4606 } ] }, + { "id": "corner", "bg": 3736, "fg": [ 4608, 4610, 4609, 4607 ] }, + { "id": "t_connection", "bg": 3736, "fg": [ 4618, 4620, 4619, 4617 ] }, + { "id": "edge", "bg": 3736, "fg": [ 4612, 4611 ] }, + { "id": "end_piece", "bg": 3736, "fg": [ 4614, 4616, 4615, 4613 ] }, + { "bg": 3736, "id": "unconnected", "fg": 4621 } ] }, { "id": [ "t_water_moving_dp_season_autumn", "t_swater_moving_dp_season_autumn" ], "multitile": true, - "fg": 4462, - "bg": 3572, + "fg": 4621, + "bg": 3731, "additional_tiles": [ - { "id": "center", "bg": 3572, "fg": [ { "weight": 1, "sprite": 4446 }, { "weight": 1, "sprite": 4447 } ] }, - { "id": "corner", "bg": 3572, "fg": [ 4449, 4451, 4450, 4448 ] }, - { "id": "t_connection", "bg": 3572, "fg": [ 4459, 4461, 4460, 4458 ] }, - { "id": "edge", "bg": 3572, "fg": [ 4453, 4452 ] }, - { "id": "end_piece", "bg": 3572, "fg": [ 4455, 4457, 4456, 4454 ] }, - { "bg": 3572, "id": "unconnected", "fg": 4462 } + { "id": "center", "bg": 3731, "fg": [ { "weight": 1, "sprite": 4605 }, { "weight": 1, "sprite": 4606 } ] }, + { "id": "corner", "bg": 3731, "fg": [ 4608, 4610, 4609, 4607 ] }, + { "id": "t_connection", "bg": 3731, "fg": [ 4618, 4620, 4619, 4617 ] }, + { "id": "edge", "bg": 3731, "fg": [ 4612, 4611 ] }, + { "id": "end_piece", "bg": 3731, "fg": [ 4614, 4616, 4615, 4613 ] }, + { "bg": 3731, "id": "unconnected", "fg": 4621 } ] }, { "id": [ "t_water_moving_dp_season_winter", "t_swater_moving_dp_season_winter" ], "multitile": true, - "fg": 4462, - "bg": 3063, + "fg": 4621, + "bg": 3222, "additional_tiles": [ - { "id": "center", "bg": 3063, "fg": [ { "weight": 1, "sprite": 4446 }, { "weight": 1, "sprite": 4447 } ] }, - { "id": "corner", "bg": 3063, "fg": [ 4449, 4451, 4450, 4448 ] }, - { "id": "t_connection", "bg": 3063, "fg": [ 4459, 4461, 4460, 4458 ] }, - { "id": "edge", "bg": 3063, "fg": [ 4453, 4452 ] }, - { "id": "end_piece", "bg": 3063, "fg": [ 4455, 4457, 4456, 4454 ] }, - { "bg": 3063, "id": "unconnected", "fg": 4462 } + { "id": "center", "bg": 3222, "fg": [ { "weight": 1, "sprite": 4605 }, { "weight": 1, "sprite": 4606 } ] }, + { "id": "corner", "bg": 3222, "fg": [ 4608, 4610, 4609, 4607 ] }, + { "id": "t_connection", "bg": 3222, "fg": [ 4618, 4620, 4619, 4617 ] }, + { "id": "edge", "bg": 3222, "fg": [ 4612, 4611 ] }, + { "id": "end_piece", "bg": 3222, "fg": [ 4614, 4616, 4615, 4613 ] }, + { "bg": 3222, "id": "unconnected", "fg": 4621 } ] }, { "id": [ "t_water_moving_sh", "t_swater_moving_sh" ], "multitile": true, - "fg": 4481, - "bg": 3567, + "fg": 4640, + "bg": 3726, "additional_tiles": [ { "id": "center", - "bg": 3567, + "bg": 3726, "fg": [ - { "weight": 1, "sprite": 4463 }, - { "weight": 1, "sprite": 4464 }, - { "weight": 1, "sprite": 4465 }, - { "weight": 1, "sprite": 4466 } + { "weight": 1, "sprite": 4622 }, + { "weight": 1, "sprite": 4623 }, + { "weight": 1, "sprite": 4624 }, + { "weight": 1, "sprite": 4625 } ] }, - { "id": "corner", "bg": 3567, "fg": [ 4468, 4470, 4469, 4467 ] }, - { "id": "t_connection", "bg": 3567, "fg": [ 4478, 4480, 4479, 4477 ] }, - { "id": "edge", "bg": 3567, "fg": [ 4472, 4471 ] }, - { "id": "end_piece", "bg": 3567, "fg": [ 4474, 4476, 4475, 4473 ] }, - { "bg": 3567, "id": "unconnected", "fg": 4481 } + { "id": "corner", "bg": 3726, "fg": [ 4627, 4629, 4628, 4626 ] }, + { "id": "t_connection", "bg": 3726, "fg": [ 4637, 4639, 4638, 4636 ] }, + { "id": "edge", "bg": 3726, "fg": [ 4631, 4630 ] }, + { "id": "end_piece", "bg": 3726, "fg": [ 4633, 4635, 4634, 4632 ] }, + { "bg": 3726, "id": "unconnected", "fg": 4640 } ] }, { "id": [ "t_water_moving_sh_season_summer", "t_swater_moving_sh_season_summer" ], "multitile": true, - "fg": 4481, - "bg": 3577, + "fg": 4640, + "bg": 3736, "additional_tiles": [ { "id": "center", - "bg": 3577, + "bg": 3736, "fg": [ - { "weight": 1, "sprite": 4463 }, - { "weight": 1, "sprite": 4464 }, - { "weight": 1, "sprite": 4465 }, - { "weight": 1, "sprite": 4466 } + { "weight": 1, "sprite": 4622 }, + { "weight": 1, "sprite": 4623 }, + { "weight": 1, "sprite": 4624 }, + { "weight": 1, "sprite": 4625 } ] }, - { "id": "corner", "bg": 3577, "fg": [ 4468, 4470, 4469, 4467 ] }, - { "id": "t_connection", "bg": 3577, "fg": [ 4478, 4480, 4479, 4477 ] }, - { "id": "edge", "bg": 3577, "fg": [ 4472, 4471 ] }, - { "id": "end_piece", "bg": 3577, "fg": [ 4474, 4476, 4475, 4473 ] }, - { "bg": 3577, "id": "unconnected", "fg": 4481 } + { "id": "corner", "bg": 3736, "fg": [ 4627, 4629, 4628, 4626 ] }, + { "id": "t_connection", "bg": 3736, "fg": [ 4637, 4639, 4638, 4636 ] }, + { "id": "edge", "bg": 3736, "fg": [ 4631, 4630 ] }, + { "id": "end_piece", "bg": 3736, "fg": [ 4633, 4635, 4634, 4632 ] }, + { "bg": 3736, "id": "unconnected", "fg": 4640 } ] }, { "id": [ "t_water_moving_sh_season_autumn", "t_swater_moving_sh_season_autumn" ], "multitile": true, - "fg": 4481, - "bg": 3572, + "fg": 4640, + "bg": 3731, "additional_tiles": [ { "id": "center", - "bg": 3572, + "bg": 3731, "fg": [ - { "weight": 1, "sprite": 4463 }, - { "weight": 1, "sprite": 4464 }, - { "weight": 1, "sprite": 4465 }, - { "weight": 1, "sprite": 4466 } + { "weight": 1, "sprite": 4622 }, + { "weight": 1, "sprite": 4623 }, + { "weight": 1, "sprite": 4624 }, + { "weight": 1, "sprite": 4625 } ] }, - { "id": "corner", "bg": 3572, "fg": [ 4468, 4470, 4469, 4467 ] }, - { "id": "t_connection", "bg": 3572, "fg": [ 4478, 4480, 4479, 4477 ] }, - { "id": "edge", "bg": 3572, "fg": [ 4472, 4471 ] }, - { "id": "end_piece", "bg": 3572, "fg": [ 4474, 4476, 4475, 4473 ] }, - { "bg": 3572, "id": "unconnected", "fg": 4481 } + { "id": "corner", "bg": 3731, "fg": [ 4627, 4629, 4628, 4626 ] }, + { "id": "t_connection", "bg": 3731, "fg": [ 4637, 4639, 4638, 4636 ] }, + { "id": "edge", "bg": 3731, "fg": [ 4631, 4630 ] }, + { "id": "end_piece", "bg": 3731, "fg": [ 4633, 4635, 4634, 4632 ] }, + { "bg": 3731, "id": "unconnected", "fg": 4640 } ] }, { "id": [ "t_water_moving_sh_season_winter", "t_swater_moving_sh_season_winter" ], "multitile": true, - "fg": 4481, - "bg": 3063, + "fg": 4640, + "bg": 3222, "additional_tiles": [ { "id": "center", - "bg": 3063, + "bg": 3222, "fg": [ - { "weight": 1, "sprite": 4463 }, - { "weight": 1, "sprite": 4464 }, - { "weight": 1, "sprite": 4465 }, - { "weight": 1, "sprite": 4466 } + { "weight": 1, "sprite": 4622 }, + { "weight": 1, "sprite": 4623 }, + { "weight": 1, "sprite": 4624 }, + { "weight": 1, "sprite": 4625 } ] }, - { "id": "corner", "bg": 3063, "fg": [ 4468, 4470, 4469, 4467 ] }, - { "id": "t_connection", "bg": 3063, "fg": [ 4478, 4480, 4479, 4477 ] }, - { "id": "edge", "bg": 3063, "fg": [ 4472, 4471 ] }, - { "id": "end_piece", "bg": 3063, "fg": [ 4474, 4476, 4475, 4473 ] }, - { "bg": 3063, "id": "unconnected", "fg": 4481 } + { "id": "corner", "bg": 3222, "fg": [ 4627, 4629, 4628, 4626 ] }, + { "id": "t_connection", "bg": 3222, "fg": [ 4637, 4639, 4638, 4636 ] }, + { "id": "edge", "bg": 3222, "fg": [ 4631, 4630 ] }, + { "id": "end_piece", "bg": 3222, "fg": [ 4633, 4635, 4634, 4632 ] }, + { "bg": 3222, "id": "unconnected", "fg": 4640 } ] }, { "id": [ "t_water_pool", "t_water_pool_shallow" ], "multitile": true, - "fg": 4496, + "fg": 4655, "additional_tiles": [ { "id": "center", - "fg": [ { "weight": 1, "sprite": 4497 }, { "weight": 1, "sprite": 4498 }, { "weight": 1, "sprite": 4499 } ] + "fg": [ { "weight": 1, "sprite": 4656 }, { "weight": 1, "sprite": 4657 }, { "weight": 1, "sprite": 4658 } ] }, - { "id": "corner", "fg": [ 4483, 4485, 4484, 4482 ] }, - { "id": "t_connection", "fg": [ 4493, 4495, 4494, 4492 ] }, - { "id": "edge", "fg": [ 4487, 4486 ] }, - { "id": "end_piece", "fg": [ 4489, 4491, 4490, 4488 ] }, - { "id": "unconnected", "fg": [ 4496, 4496 ] } + { "id": "corner", "fg": [ 4642, 4644, 4643, 4641 ] }, + { "id": "t_connection", "fg": [ 4652, 4654, 4653, 4651 ] }, + { "id": "edge", "fg": [ 4646, 4645 ] }, + { "id": "end_piece", "fg": [ 4648, 4650, 4649, 4647 ] }, + { "id": "unconnected", "fg": [ 4655, 4655 ] } ] }, { "id": [ "t_water_sh", "t_swater_sh" ], "multitile": true, - "fg": 4515, - "bg": 3567, + "fg": 4674, + "bg": 3726, "additional_tiles": [ { "id": "center", - "bg": 3567, + "bg": 3726, "fg": [ - { "weight": 1, "sprite": 4497 }, - { "weight": 1, "sprite": 4498 }, - { "weight": 1, "sprite": 4499 }, - { "weight": 1, "sprite": 4500 } + { "weight": 1, "sprite": 4656 }, + { "weight": 1, "sprite": 4657 }, + { "weight": 1, "sprite": 4658 }, + { "weight": 1, "sprite": 4659 } ] }, - { "id": "corner", "bg": 3567, "fg": [ 4502, 4504, 4503, 4501 ] }, - { "id": "t_connection", "bg": 3567, "fg": [ 4512, 4514, 4513, 4511 ] }, - { "id": "edge", "bg": 3567, "fg": [ 4506, 4505 ] }, - { "id": "end_piece", "bg": 3567, "fg": [ 4508, 4510, 4509, 4507 ] }, - { "bg": 3567, "id": "unconnected", "fg": 4515 } + { "id": "corner", "bg": 3726, "fg": [ 4661, 4663, 4662, 4660 ] }, + { "id": "t_connection", "bg": 3726, "fg": [ 4671, 4673, 4672, 4670 ] }, + { "id": "edge", "bg": 3726, "fg": [ 4665, 4664 ] }, + { "id": "end_piece", "bg": 3726, "fg": [ 4667, 4669, 4668, 4666 ] }, + { "bg": 3726, "id": "unconnected", "fg": 4674 } ] }, { "id": [ "t_water_sh_season_summer", "t_swater_sh_season_summer" ], "multitile": true, - "fg": 4515, - "bg": 3577, + "fg": 4674, + "bg": 3736, "additional_tiles": [ { "id": "center", - "bg": 3577, - "fg": [ { "weight": 1, "sprite": 4497 }, { "weight": 1, "sprite": 4498 }, { "weight": 1, "sprite": 4499 } ] + "bg": 3736, + "fg": [ { "weight": 1, "sprite": 4656 }, { "weight": 1, "sprite": 4657 }, { "weight": 1, "sprite": 4658 } ] }, - { "id": "corner", "bg": 3577, "fg": [ 4502, 4504, 4503, 4501 ] }, - { "id": "t_connection", "bg": 3577, "fg": [ 4512, 4514, 4513, 4511 ] }, - { "id": "edge", "bg": 3577, "fg": [ 4506, 4505 ] }, - { "id": "end_piece", "bg": 3577, "fg": [ 4508, 4510, 4509, 4507 ] }, - { "bg": 3577, "id": "unconnected", "fg": 4515 } + { "id": "corner", "bg": 3736, "fg": [ 4661, 4663, 4662, 4660 ] }, + { "id": "t_connection", "bg": 3736, "fg": [ 4671, 4673, 4672, 4670 ] }, + { "id": "edge", "bg": 3736, "fg": [ 4665, 4664 ] }, + { "id": "end_piece", "bg": 3736, "fg": [ 4667, 4669, 4668, 4666 ] }, + { "bg": 3736, "id": "unconnected", "fg": 4674 } ] }, { "id": [ "t_water_sh_season_autumn", "t_swater_sh_season_autumn" ], "multitile": true, - "fg": 4515, - "bg": 3572, + "fg": 4674, + "bg": 3731, "additional_tiles": [ { "id": "center", - "bg": 3572, - "fg": [ { "weight": 1, "sprite": 4497 }, { "weight": 1, "sprite": 4498 }, { "weight": 1, "sprite": 4499 } ] + "bg": 3731, + "fg": [ { "weight": 1, "sprite": 4656 }, { "weight": 1, "sprite": 4657 }, { "weight": 1, "sprite": 4658 } ] }, - { "id": "corner", "bg": 3572, "fg": [ 4502, 4504, 4503, 4501 ] }, - { "id": "t_connection", "bg": 3572, "fg": [ 4512, 4514, 4513, 4511 ] }, - { "id": "edge", "bg": 3572, "fg": [ 4506, 4505 ] }, - { "id": "end_piece", "bg": 3572, "fg": [ 4508, 4510, 4509, 4507 ] }, - { "bg": 3572, "id": "unconnected", "fg": 4515 } + { "id": "corner", "bg": 3731, "fg": [ 4661, 4663, 4662, 4660 ] }, + { "id": "t_connection", "bg": 3731, "fg": [ 4671, 4673, 4672, 4670 ] }, + { "id": "edge", "bg": 3731, "fg": [ 4665, 4664 ] }, + { "id": "end_piece", "bg": 3731, "fg": [ 4667, 4669, 4668, 4666 ] }, + { "bg": 3731, "id": "unconnected", "fg": 4674 } ] }, { "id": [ "t_water_sh_season_winter", "t_swater_sh_season_winter" ], "multitile": true, - "fg": 4515, - "bg": 3063, + "fg": 4674, + "bg": 3222, "additional_tiles": [ { "id": "center", - "bg": 3063, - "fg": [ { "weight": 1, "sprite": 4497 }, { "weight": 1, "sprite": 4498 }, { "weight": 1, "sprite": 4499 } ] + "bg": 3222, + "fg": [ { "weight": 1, "sprite": 4656 }, { "weight": 1, "sprite": 4657 }, { "weight": 1, "sprite": 4658 } ] }, - { "id": "corner", "bg": 3063, "fg": [ 4502, 4504, 4503, 4501 ] }, - { "id": "t_connection", "bg": 3063, "fg": [ 4512, 4514, 4513, 4511 ] }, - { "id": "edge", "bg": 3063, "fg": [ 4506, 4505 ] }, - { "id": "end_piece", "bg": 3063, "fg": [ 4508, 4510, 4509, 4507 ] }, - { "bg": 3063, "id": "unconnected", "fg": 4515 } - ] - }, - { "id": [ "t_window", "t_window_alarm" ], "fg": 4516 }, - { "id": "t_window_empty", "fg": 4519 }, - { "id": "t_window_domestic", "fg": 4517 }, - { "id": "t_window_open", "fg": 4523 }, - { "id": "t_window_no_curtains", "fg": 4520 }, - { "id": "t_window_no_curtains_open", "fg": 4521 }, - { "id": "t_woodchips", "fg": 4525 }, - { "id": "t_woodchips_season_winter", "fg": 3063 }, + { "id": "corner", "bg": 3222, "fg": [ 4661, 4663, 4662, 4660 ] }, + { "id": "t_connection", "bg": 3222, "fg": [ 4671, 4673, 4672, 4670 ] }, + { "id": "edge", "bg": 3222, "fg": [ 4665, 4664 ] }, + { "id": "end_piece", "bg": 3222, "fg": [ 4667, 4669, 4668, 4666 ] }, + { "bg": 3222, "id": "unconnected", "fg": 4674 } + ] + }, + { "id": [ "t_window", "t_window_alarm" ], "fg": 4675 }, + { "id": "t_window_empty", "fg": 4678 }, + { "id": "t_window_domestic", "fg": 4676 }, + { "id": "t_window_open", "fg": 4682 }, + { "id": "t_window_no_curtains", "fg": 4679 }, + { "id": "t_window_no_curtains_open", "fg": 4680 }, + { "id": "t_woodchips", "fg": 4684 }, + { "id": "t_woodchips_season_winter", "fg": 3222 }, { "id": [ "tr_downspout_funnel", "tr_pit", "tr_lava", "tr_ledge", "tr_glass_pit", "tr_spike_pit" ], - "fg": 2128 + "fg": 2208 }, - { "id": "tr_goo", "fg": [ { "weight": 2007, "sprite": 4527 }, { "weight": 1, "sprite": 4528 } ] }, - { "id": "tr_nailboard", "fg": 4526, "bg": 2661 }, - { "id": "tr_portal", "fg": 4530 }, - { "id": "tr_tripwire", "fg": 4531 }, + { "id": "tr_goo", "fg": [ { "weight": 2007, "sprite": 4686 }, { "weight": 1, "sprite": 4687 } ] }, + { "id": "tr_nailboard", "fg": 4685, "bg": 2742 }, + { "id": "tr_portal", "fg": 4690 }, + { "id": "tr_tripwire", "fg": 4691 }, { "id": [ "vp_forklift_fork" ], - "fg": [ 4533, 4535, 4534, 4532 ], + "fg": [ 4693, 4695, 4694, 4692 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 4533, 4535, 4534, 4532 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 4693, 4695, 4694, 4692 ] } ] }, { "id": "vp_saddle_motor", - "fg": [ 4537, 4539, 4538, 4536 ], + "fg": [ 4697, 4699, 4698, 4696 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 4537, 4539, 4538, 4536 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 4697, 4699, 4698, 4696 ] } ] }, { "id": [ "vp_wheel_motorbike", "vp_wheel_motorbike_steerable", "vp_wheel_motorbike_or", "vp_wheel_motorbike_or_steerable" ], - "fg": [ 4545, 4547, 4546, 4544 ], + "fg": [ 4705, 4707, 4706, 4704 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 4545, 4547, 4546, 4544 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 4705, 4707, 4706, 4704 ] } ] }, { "id": [ "vp_wheel_motorbike_rear", "vp_wheel_motorbike_or_rear" ], - "fg": [ 4541, 4543, 4542, 4540 ], + "fg": [ 4701, 4703, 4702, 4700 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 4541, 4543, 4542, 4540 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 4701, 4703, 4702, 4700 ] } ] }, { "id": [ "vp_wheel_small_scooter", "vp_wheel_small_scooter_steerable" ], - "fg": [ 4553, 4555, 4554, 4552 ], + "fg": [ 4713, 4715, 4714, 4712 ], "rotates": true }, - { "id": "vp_wheel_small_scooter_rear", "fg": [ 4549, 4551, 4550, 4548 ], "rotates": true }, + { "id": "vp_wheel_small_scooter_rear", "fg": [ 4709, 4711, 4710, 4708 ], "rotates": true }, { "id": "vp_battery_charger", - "fg": 4556, - "bg": 5616, + "fg": 4716, + "bg": 5788, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 4556 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 4716 } ] }, { "id": "vp_recharge_station", - "fg": 4557, - "bg": 5616, - "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 4557 } ] - }, - { "id": "f_chest", "fg": 2130 }, - { "id": "f_foot_locker", "fg": 2131 }, - { "id": "f_shredder", "fg": 2132 }, - { "id": "f_black_eyed_susan", "fg": 2194 }, - { "id": "f_chimney", "fg": 2226 }, - { "id": "mossberg_500", "fg": 2479 }, - { "id": "mossberg_500_security", "fg": 2480 }, - { "id": "mossberg_590", "fg": 2481 }, - { "id": "mossberg_930", "fg": 2482 }, - { "id": "remington_1100", "fg": 2483 }, - { "id": "remington_870", "fg": 2484 }, - { "id": "remington_870_breacher", "fg": 2485 }, - { "id": "remington_870_express", "fg": 2486 }, - { "id": "acoustic_guitar", "fg": 2487 }, - { "id": "banjo", "fg": 2488 }, - { "id": "bionic_general", "fg": 2489 }, - { "id": "char_smoker", "fg": 2490 }, - { "id": "dehydrator", "fg": 2491 }, - { "id": "guitar_electric", "fg": 2492 }, - { "id": "mattress", "fg": 2494 }, - { "id": "sheet", "fg": 2496 }, - { "id": "umbrella", "fg": 2497 }, - { "id": "10mm_fmj", "fg": 2499 }, - { "id": "120mm_HEAT", "fg": 2500 }, - { "id": "123ln", "fg": 2501 }, - { "id": "12mm", "fg": 2502 }, - { "id": "20x66_beanbag", "fg": 2503 }, - { "id": "20x66_flare", "fg": 2504 }, - { "id": "20x66_flechette", "fg": 2505 }, - { "id": "20x66_frag", "fg": 2506 }, - { "id": "20x66_inc", "fg": 2507 }, - { "id": "20x66_shot", "fg": 2508 }, - { "id": "20x66_slug", "fg": 2509 }, - { "id": "223", "fg": 2510 }, - { "id": "22_cb", "fg": 2511 }, - { "id": "22_fmj", "fg": 2512 }, - { "id": "22_lr", "fg": 2513 }, - { "id": "22_ratshot", "fg": 2514 }, - { "id": "270win_jsp", "fg": 2515 }, - { "id": "3006", "fg": 2516 }, - { "id": "3006_incendiary", "fg": 2517 }, - { "id": "3006fmj", "fg": 2518 }, - { "id": "300_winmag", "fg": 2519 }, - { "id": "300blk", "fg": 2520 }, - { "id": "300blk_ss", "fg": 2521 }, - { "id": "308", "fg": 2522 }, - { "id": "32_acp", "fg": 2523 }, - { "id": "357mag_fmj", "fg": 2524 }, - { "id": "357mag_jhp", "fg": 2525 }, - { "id": "357sig_fmj", "fg": 2526 }, - { "id": "357sig_jhp", "fg": 2527 }, - { "id": "380_FMJ", "fg": 2528 }, - { "id": "380_JHP", "fg": 2529 }, - { "id": "380_p", "fg": 2530 }, - { "id": "38_fmj", "fg": 2531 }, - { "id": "38_special", "fg": 2532 }, - { "id": "38_super", "fg": 2533 }, - { "id": "38super_fmj", "fg": 2534 }, - { "id": "40fmj", "fg": 2535 }, - { "id": "40mm_flashbang", "fg": 2536 }, - { "id": "40mm_incendiary", "fg": 2537 }, - { "id": "40mm_slug", "fg": 2538 }, - { "id": "40sw", "fg": 2539 }, - { "id": "40x46mm_grenade", "fg": 2540 }, - { "id": "40x46mm_m1006", "fg": 2541 }, - { "id": "40x46mm_m433", "fg": 2542 }, - { "id": "40x46mm_m576", "fg": 2543 }, - { "id": "40x46mm_m651", "fg": 2544 }, - { "id": "40x53mm_buckshot_m169", "fg": 2545 }, - { "id": "40x53mm_flechette_m169", "fg": 2546 }, - { "id": "40x53mm_grenade", "fg": 2547 }, - { "id": "40x53mm_m1001", "fg": 2548 }, - { "id": "40x53mm_m430a1", "fg": 2549 }, - { "id": "40x53mm_slug_m169", "fg": 2550 }, - { "id": "410shot_000", "fg": 2551 }, - { "id": "44fmj", "fg": 2552 }, - { "id": "44magnum", "fg": 2553 }, - { "id": "454_Casull", "fg": 2554 }, - { "id": "4570_low", "fg": 2555 }, - { "id": "4570_pen", "fg": 2556 }, - { "id": "4570_sp", "fg": 2557 }, - { "id": "45_acp", "fg": 2558 }, - { "id": "45_jhp", "fg": 2559 }, - { "id": "45_super", "fg": 2560 }, - { "id": "45colt_jhp", "fg": 2561 }, - { "id": "460_fmj", "fg": 2562 }, - { "id": "460_rowland", "fg": 2563 }, - { "id": "46mm", "fg": 2564 }, - { "id": "500_Magnum", "fg": 2565 }, - { "id": "50_incendiary", "fg": 2566 }, - { "id": "50_mk211", "fg": 2567 }, - { "id": "50bmg", "fg": 2568 }, - { "id": "50match", "fg": 2569 }, - { "id": "50ss", "fg": 2570 }, - { "id": "545", "fg": 2571 }, - { "id": "545_ap", "fg": 2572 }, - { "id": "556", "fg": 2573 }, - { "id": "556_incendiary", "fg": 2574 }, - { "id": "57mm", "fg": 2575 }, - { "id": "5x50dart", "fg": 2576 }, - { "id": "5x50heavy", "fg": 2577 }, - { "id": "66mm_HEAT", "fg": 2578 }, - { "id": "700nx", "fg": 2579 }, - { "id": "762_25", "fg": 2580 }, - { "id": "762_25hot", "fg": 2581 }, - { "id": "762_25typeP", "fg": 2582 }, - { "id": "762_51", "fg": 2583 }, - { "id": "762_51_incendiary", "fg": 2584 }, - { "id": "762_54R", "fg": 2585 }, - { "id": "762_m43", "fg": 2586 }, - { "id": "762_m87", "fg": 2587 }, - { "id": "84x246mm_he", "fg": 2588 }, - { "id": "84x246mm_hedp", "fg": 2589 }, - { "id": "84x246mm_smoke", "fg": 2590 }, - { "id": "8mm_bootleg", "fg": 2591 }, - { "id": "8mm_caseless", "fg": 2592 }, - { "id": "8mm_civilian", "fg": 2593 }, - { "id": "8mm_fmj", "fg": 2594 }, - { "id": "8mm_hvp", "fg": 2595 }, - { "id": "8mm_inc", "fg": 2596 }, - { "id": "8mm_jhp", "fg": 2597 }, - { "id": "9mm", "fg": 2598 }, - { "id": "9mmP", "fg": 2599 }, - { "id": "9mmfmj", "fg": 2600 }, - { "id": "9x18mm", "fg": 2601 }, - { "id": "9x18mmP2", "fg": 2602 }, - { "id": "9x18mmfmj", "fg": 2603 }, - { "id": "RPG-7_ammo", "fg": 2604 }, - { "id": "RPG-7_og7v", "fg": 2605 }, - { "id": "RPG-7_pg7vr", "fg": 2606 }, - { "id": "RPG-7_tbg7v", "fg": 2607 }, - { "id": "atgm_heat", "fg": 2608 }, - { "id": "m235tpa", "fg": 2609 }, - { "id": "shot_00", "fg": 2610 }, - { "id": "shot_beanbag", "fg": 2611 }, - { "id": "shot_bird", "fg": 2612 }, - { "id": "shot_dragon", "fg": 2613 }, - { "id": "shot_flechette", "fg": 2614 }, - { "id": "shot_he", "fg": 2615 }, - { "id": "shot_scrap", "fg": 2616 }, - { "id": "shot_slug", "fg": 2617 }, - { "id": "oxygen_cylinder", "fg": 2618 }, - { "id": "oxygen_tank", "fg": 2619 }, - { "id": "tinyweldtank", "fg": 2620 }, - { "id": "weldtank", "fg": 2621 }, - { "id": "iceaxe", "fg": 2645 }, - { "id": "rifle_case_soft", "fg": 2650 }, - { "id": "rifle_case_soft_2", "fg": 2651 }, - { "id": "rifle_case_soft_leather_2", "fg": 2653 }, - { "id": "rucksack", "fg": 2654 }, - { "id": "rack_test_tube", "fg": 2666 }, - { "id": "bowl_clay", "fg": 2669 }, - { "id": "clay_hydria", "fg": 2670 }, - { "id": "clay_pot", "fg": 2671 }, - { "id": "clay_quern", "fg": 2672 }, - { "id": "clay_watercont", "fg": 2673 }, - { "id": "jug_clay", "fg": 2674 }, - { "id": "PR24-extended", "fg": 2779 }, - { "id": "PR24-retracted", "fg": 2780 }, - { "id": "baton-extended", "fg": 2781 }, - { "id": "baton", "fg": 2782 }, - { "id": "bokken", "fg": 2844 }, - { "id": "UPS_off", "fg": 2850 }, - { "id": "hose", "fg": 2851 }, - { "id": "oxy_torch", "fg": 2852 }, - { "id": "picklocks", "fg": 2853 }, - { "id": "mon_dragonfly_naiad", "fg": 2964 }, - { "id": "footstep", "fg": 2993 }, - { "id": "footstep_above", "fg": 2994 }, - { "id": "footstep_below", "fg": 2995 }, - { "id": "unknown_field", "fg": 2996 }, - { "id": "unknown_furniture", "fg": 2997 }, - { "id": "unknown_item", "fg": 2998 }, - { "id": "unknown_item_AMMO", "fg": 2999 }, - { "id": "unknown_item_ARMOR", "fg": 3000 }, - { "id": "unknown_item_BIONIC", "fg": 3001 }, - { "id": "unknown_item_BOOK", "fg": 3002 }, - { "id": "unknown_item_FOOD", "fg": 3003 }, - { "id": "unknown_item_GUN", "fg": 3004 }, - { "id": "unknown_item_TOOL", "fg": 3005 }, - { "id": "unknown_item_misc", "fg": 3006 }, - { "id": "unknown_terrain", "fg": 3007 }, - { "id": "unknown_trap", "fg": 3008 }, - { "id": "unknown_vehicle_part", "fg": 3009 }, - { "id": "t_ramp_down_high", "fg": 3056 }, - { "id": "t_ramp_up_high", "fg": 3057 }, - { "id": "t_sidewalk_ramp_down_high", "fg": 3058 }, - { "id": "t_sidewalk_ramp_up_high", "fg": 3059 }, - { "id": "t_slope_down", "fg": 3060 }, - { "id": "t_slope_up", "fg": 3061 }, - { "id": "t_door_b_peep", "fg": 3389 }, - { "id": "t_door_boarded_damaged_peep", "fg": 3390 }, - { "id": "t_door_boarded_peep", "fg": 3391 }, - { "id": "t_door_c_peep", "fg": 3392 }, - { "id": "t_door_locked_peep", "fg": 3393 }, - { "id": "t_door_o_peep", "fg": 3394 }, - { "id": "t_fence_post", "fg": 3431 }, - { "id": "t_slime", "fg": 4195 }, - { "id": "t_window_domestic_taped", "fg": 4518 }, - { "id": "t_window_no_curtains_taped", "fg": 4522 }, - { "id": "t_window_taped", "fg": 4524 }, - { "id": "tr_landmine", "fg": 4529 } + "fg": 4717, + "bg": 5788, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 4717 } ] + }, + { + "id": "vp_spike_wood", + "fg": 4718, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 4718 } ] + }, + { "id": "f_chest", "fg": 2210 }, + { "id": "f_foot_locker", "fg": 2211 }, + { "id": "f_shredder", "fg": 2212 }, + { "id": "f_black_eyed_susan", "fg": 2274 }, + { "id": "f_chimney", "fg": 2306 }, + { "id": "mossberg_500", "fg": 2559 }, + { "id": "mossberg_500_security", "fg": 2560 }, + { "id": "mossberg_590", "fg": 2561 }, + { "id": "mossberg_930", "fg": 2562 }, + { "id": "remington_1100", "fg": 2563 }, + { "id": "remington_870", "fg": 2564 }, + { "id": "remington_870_breacher", "fg": 2565 }, + { "id": "remington_870_express", "fg": 2566 }, + { "id": "acoustic_guitar", "fg": 2567 }, + { "id": "banjo", "fg": 2568 }, + { "id": "bionic_general", "fg": 2569 }, + { "id": "char_smoker", "fg": 2570 }, + { "id": "dehydrator", "fg": 2571 }, + { "id": "guitar_electric", "fg": 2572 }, + { "id": "lawnmower", "fg": 2574 }, + { "id": "mattress", "fg": 2575 }, + { "id": "sheet", "fg": 2577 }, + { "id": "umbrella", "fg": 2578 }, + { "id": "10mm_fmj", "fg": 2580 }, + { "id": "120mm_HEAT", "fg": 2581 }, + { "id": "123ln", "fg": 2582 }, + { "id": "12mm", "fg": 2583 }, + { "id": "20x66_beanbag", "fg": 2584 }, + { "id": "20x66_flare", "fg": 2585 }, + { "id": "20x66_flechette", "fg": 2586 }, + { "id": "20x66_frag", "fg": 2587 }, + { "id": "20x66_inc", "fg": 2588 }, + { "id": "20x66_shot", "fg": 2589 }, + { "id": "20x66_slug", "fg": 2590 }, + { "id": "223", "fg": 2591 }, + { "id": "22_cb", "fg": 2592 }, + { "id": "22_fmj", "fg": 2593 }, + { "id": "22_lr", "fg": 2594 }, + { "id": "22_ratshot", "fg": 2595 }, + { "id": "270win_jsp", "fg": 2596 }, + { "id": "3006", "fg": 2597 }, + { "id": "3006_incendiary", "fg": 2598 }, + { "id": "3006fmj", "fg": 2599 }, + { "id": "300_winmag", "fg": 2600 }, + { "id": "300blk", "fg": 2601 }, + { "id": "300blk_ss", "fg": 2602 }, + { "id": "308", "fg": 2603 }, + { "id": "32_acp", "fg": 2604 }, + { "id": "357mag_fmj", "fg": 2605 }, + { "id": "357mag_jhp", "fg": 2606 }, + { "id": "357sig_fmj", "fg": 2607 }, + { "id": "357sig_jhp", "fg": 2608 }, + { "id": "380_FMJ", "fg": 2609 }, + { "id": "380_JHP", "fg": 2610 }, + { "id": "380_p", "fg": 2611 }, + { "id": "38_fmj", "fg": 2612 }, + { "id": "38_special", "fg": 2613 }, + { "id": "38_super", "fg": 2614 }, + { "id": "38super_fmj", "fg": 2615 }, + { "id": "40fmj", "fg": 2616 }, + { "id": "40mm_flashbang", "fg": 2617 }, + { "id": "40mm_incendiary", "fg": 2618 }, + { "id": "40mm_slug", "fg": 2619 }, + { "id": "40sw", "fg": 2620 }, + { "id": "40x46mm_grenade", "fg": 2621 }, + { "id": "40x46mm_m1006", "fg": 2622 }, + { "id": "40x46mm_m433", "fg": 2623 }, + { "id": "40x46mm_m576", "fg": 2624 }, + { "id": "40x46mm_m651", "fg": 2625 }, + { "id": "40x53mm_buckshot_m169", "fg": 2626 }, + { "id": "40x53mm_flechette_m169", "fg": 2627 }, + { "id": "40x53mm_grenade", "fg": 2628 }, + { "id": "40x53mm_m1001", "fg": 2629 }, + { "id": "40x53mm_m430a1", "fg": 2630 }, + { "id": "40x53mm_slug_m169", "fg": 2631 }, + { "id": "410shot_000", "fg": 2632 }, + { "id": "44fmj", "fg": 2633 }, + { "id": "44magnum", "fg": 2634 }, + { "id": "454_Casull", "fg": 2635 }, + { "id": "4570_low", "fg": 2636 }, + { "id": "4570_pen", "fg": 2637 }, + { "id": "4570_sp", "fg": 2638 }, + { "id": "45_acp", "fg": 2639 }, + { "id": "45_jhp", "fg": 2640 }, + { "id": "45_super", "fg": 2641 }, + { "id": "45colt_jhp", "fg": 2642 }, + { "id": "460_fmj", "fg": 2643 }, + { "id": "460_rowland", "fg": 2644 }, + { "id": "46mm", "fg": 2645 }, + { "id": "500_Magnum", "fg": 2646 }, + { "id": "50_incendiary", "fg": 2647 }, + { "id": "50_mk211", "fg": 2648 }, + { "id": "50bmg", "fg": 2649 }, + { "id": "50match", "fg": 2650 }, + { "id": "50ss", "fg": 2651 }, + { "id": "545", "fg": 2652 }, + { "id": "545_ap", "fg": 2653 }, + { "id": "556", "fg": 2654 }, + { "id": "556_incendiary", "fg": 2655 }, + { "id": "57mm", "fg": 2656 }, + { "id": "5x50dart", "fg": 2657 }, + { "id": "5x50heavy", "fg": 2658 }, + { "id": "66mm_HEAT", "fg": 2659 }, + { "id": "700nx", "fg": 2660 }, + { "id": "762_25", "fg": 2661 }, + { "id": "762_25hot", "fg": 2662 }, + { "id": "762_25typeP", "fg": 2663 }, + { "id": "762_51", "fg": 2664 }, + { "id": "762_51_incendiary", "fg": 2665 }, + { "id": "762_54R", "fg": 2666 }, + { "id": "762_m43", "fg": 2667 }, + { "id": "762_m87", "fg": 2668 }, + { "id": "84x246mm_he", "fg": 2669 }, + { "id": "84x246mm_hedp", "fg": 2670 }, + { "id": "84x246mm_smoke", "fg": 2671 }, + { "id": "8mm_bootleg", "fg": 2672 }, + { "id": "8mm_caseless", "fg": 2673 }, + { "id": "8mm_civilian", "fg": 2674 }, + { "id": "8mm_fmj", "fg": 2675 }, + { "id": "8mm_hvp", "fg": 2676 }, + { "id": "8mm_inc", "fg": 2677 }, + { "id": "8mm_jhp", "fg": 2678 }, + { "id": "9mm", "fg": 2679 }, + { "id": "9mmP", "fg": 2680 }, + { "id": "9mmfmj", "fg": 2681 }, + { "id": "9x18mm", "fg": 2682 }, + { "id": "9x18mmP2", "fg": 2683 }, + { "id": "9x18mmfmj", "fg": 2684 }, + { "id": "RPG-7_ammo", "fg": 2685 }, + { "id": "RPG-7_og7v", "fg": 2686 }, + { "id": "RPG-7_pg7vr", "fg": 2687 }, + { "id": "RPG-7_tbg7v", "fg": 2688 }, + { "id": "atgm_heat", "fg": 2689 }, + { "id": "m235tpa", "fg": 2690 }, + { "id": "shot_00", "fg": 2691 }, + { "id": "shot_beanbag", "fg": 2692 }, + { "id": "shot_bird", "fg": 2693 }, + { "id": "shot_dragon", "fg": 2694 }, + { "id": "shot_flechette", "fg": 2695 }, + { "id": "shot_he", "fg": 2696 }, + { "id": "shot_scrap", "fg": 2697 }, + { "id": "shot_slug", "fg": 2698 }, + { "id": "oxygen_cylinder", "fg": 2699 }, + { "id": "oxygen_tank", "fg": 2700 }, + { "id": "tinyweldtank", "fg": 2701 }, + { "id": "weldtank", "fg": 2702 }, + { "id": "iceaxe", "fg": 2726 }, + { "id": "rifle_case_soft", "fg": 2731 }, + { "id": "rifle_case_soft_2", "fg": 2732 }, + { "id": "rifle_case_soft_leather_2", "fg": 2734 }, + { "id": "rucksack", "fg": 2735 }, + { "id": "scythe", "fg": 2747 }, + { "id": "rack_test_tube", "fg": 2748 }, + { "id": "bowl_clay", "fg": 2751 }, + { "id": "clay_hydria", "fg": 2752 }, + { "id": "clay_pot", "fg": 2753 }, + { "id": "clay_quern", "fg": 2754 }, + { "id": "clay_watercont", "fg": 2755 }, + { "id": "jug_clay", "fg": 2756 }, + { "id": "PR24-extended", "fg": 2860 }, + { "id": "PR24-retracted", "fg": 2861 }, + { "id": "baton-extended", "fg": 2862 }, + { "id": "baton", "fg": 2863 }, + { "id": "bokken", "fg": 2920 }, + { "id": "UPS_off", "fg": 2926 }, + { "id": "hose", "fg": 2927 }, + { "id": "oxy_torch", "fg": 2928 }, + { "id": "picklocks", "fg": 2929 }, + { "id": "mon_dragonfly_naiad", "fg": 3042 }, + { "id": "footstep", "fg": 3071 }, + { "id": "footstep_above", "fg": 3072 }, + { "id": "footstep_below", "fg": 3073 }, + { "id": "unknown_field", "fg": 3074 }, + { "id": "unknown_furniture", "fg": 3075 }, + { "id": "unknown_item", "fg": 3076 }, + { "id": "unknown_item_AMMO", "fg": 3077 }, + { "id": "unknown_item_ARMOR", "fg": 3078 }, + { "id": "unknown_item_BIONIC", "fg": 3079 }, + { "id": "unknown_item_BOOK", "fg": 3080 }, + { "id": "unknown_item_FOOD", "fg": 3081 }, + { "id": "unknown_item_GUN", "fg": 3082 }, + { "id": "unknown_item_TOOL", "fg": 3083 }, + { "id": "unknown_item_misc", "fg": 3084 }, + { "id": "unknown_terrain", "fg": 3085 }, + { "id": "unknown_trap", "fg": 3086 }, + { "id": "unknown_vehicle_part", "fg": 3087 }, + { "id": "pasture_center", "fg": 3147 }, + { "id": "pasture_connection_ew", "fg": 3148 }, + { "id": "pasture_connection_ns", "fg": 3149 }, + { "id": "pasture_corner_ne", "fg": 3150 }, + { "id": "pasture_corner_nw", "fg": 3151 }, + { "id": "pasture_corner_se", "fg": 3152 }, + { "id": "pasture_corner_sw", "fg": 3153 }, + { "id": "pasture_not_e", "fg": 3158 }, + { "id": "pasture_not_n", "fg": 3159 }, + { "id": "pasture_not_s", "fg": 3160 }, + { "id": "pasture_not_w", "fg": 3161 }, + { "id": "pasture_unconnected", "fg": 3162 }, + { "id": "t_ramp_down_high", "fg": 3215 }, + { "id": "t_ramp_up_high", "fg": 3216 }, + { "id": "t_sidewalk_ramp_down_high", "fg": 3217 }, + { "id": "t_sidewalk_ramp_up_high", "fg": 3218 }, + { "id": "t_slope_down", "fg": 3219 }, + { "id": "t_slope_up", "fg": 3220 }, + { "id": "t_door_b_peep", "fg": 3548 }, + { "id": "t_door_boarded_damaged_peep", "fg": 3549 }, + { "id": "t_door_boarded_peep", "fg": 3550 }, + { "id": "t_door_c_peep", "fg": 3551 }, + { "id": "t_door_locked_peep", "fg": 3552 }, + { "id": "t_door_o_peep", "fg": 3553 }, + { "id": "t_fence_post", "fg": 3590 }, + { "id": "t_window_domestic_taped", "fg": 4677 }, + { "id": "t_window_no_curtains_taped", "fg": 4681 }, + { "id": "t_window_taped", "fg": 4683 }, + { "id": "tr_landmine", "fg": 4688 }, + { "id": "tr_landmine_buried", "fg": 4689 } ] }, { "file": "tallfurniture.png", - "//": "range 4560 to 4687", + "//": "range 4720 to 4847", "sprite_width": 32, "sprite_height": 64, "sprite_offset_x": 0, @@ -6810,183 +7002,183 @@ "tiles": [ { "id": "f_deckchair", - "fg": [ { "weight": 1, "sprite": 4560 }, { "weight": 1, "sprite": 4561 }, { "weight": 1, "sprite": 4562 } ] + "fg": [ { "weight": 1, "sprite": 4720 }, { "weight": 1, "sprite": 4721 }, { "weight": 1, "sprite": 4722 } ] }, - { "id": "f_punching_bag", "fg": 4567 }, - { "id": "f_exercise", "fg": 4566 }, - { "id": "f_ergometer", "fg": 4565 }, - { "id": "f_IV_pole", "fg": 4569 }, - { "id": "f_arcade_machine", "fg": 4570 }, - { "id": "f_autodoc_couch", "fg": 4571 }, - { "id": "f_bigmirror", "fg": 4572 }, - { "id": "f_birdbath", "fg": 4573 }, + { "id": "f_punching_bag", "fg": 4727 }, + { "id": "f_exercise", "fg": 4726 }, + { "id": "f_ergometer", "fg": 4725 }, + { "id": "f_IV_pole", "fg": 4729 }, + { "id": "f_arcade_machine", "fg": 4730 }, + { "id": "f_autodoc_couch", "fg": 4731 }, + { "id": "f_bigmirror", "fg": 4732 }, + { "id": "f_birdbath", "fg": 4733 }, { "id": "f_bookcase", "multitile": true, "rotates": false, - "fg": 4574, + "fg": 4734, "additional_tiles": [ - { "id": "center", "fg": 4574 }, - { "id": "corner", "fg": [ 4576, 4577, 4577, 4576 ] }, - { "id": "t_connection", "fg": [ 4574, 4575, 4574, 4575 ] }, - { "id": "edge", "fg": [ 4575, 4574 ] }, - { "id": "end_piece", "fg": [ 4576, 4574, 4577, 4574 ] }, - { "id": "unconnected", "fg": [ 4574, 4574 ] } + { "id": "center", "fg": 4734 }, + { "id": "corner", "fg": [ 4736, 4737, 4737, 4736 ] }, + { "id": "t_connection", "fg": [ 4734, 4735, 4734, 4735 ] }, + { "id": "edge", "fg": [ 4735, 4734 ] }, + { "id": "end_piece", "fg": [ 4736, 4734, 4737, 4734 ] }, + { "id": "unconnected", "fg": [ 4734, 4734 ] } ] }, - { "id": "f_boulder_large", "fg": 4578 }, - { "id": "f_cattails_season_spring", "fg": 4580, "rotates": false }, - { "id": "f_cattails_season_summer", "fg": 4581, "rotates": false }, - { "id": "f_cattails_season_autumn", "fg": 4579, "rotates": false }, - { "id": "f_cattails_season_winter", "fg": 4582, "rotates": false }, + { "id": "f_boulder_large", "fg": 4738 }, + { "id": "f_cattails_season_spring", "fg": 4740, "rotates": false }, + { "id": "f_cattails_season_summer", "fg": 4741, "rotates": false }, + { "id": "f_cattails_season_autumn", "fg": 4739, "rotates": false }, + { "id": "f_cattails_season_winter", "fg": 4742, "rotates": false }, { "id": "f_console", "multitile": true, - "fg": 4616, + "fg": 4776, "additional_tiles": [ - { "id": "center", "fg": 4601 }, - { "id": "corner", "fg": [ 4603, 4605, 4604, 4602 ] }, - { "id": "t_connection", "fg": [ 4613, 4615, 4614, 4612 ] }, - { "id": "edge", "fg": [ 4607, 4606 ] }, - { "id": "end_piece", "fg": [ 4609, 4611, 4610, 4608 ] }, - { "id": "unconnected", "fg": [ 4616, 4618, 4616, 4617 ] } + { "id": "center", "fg": 4761 }, + { "id": "corner", "fg": [ 4763, 4765, 4764, 4762 ] }, + { "id": "t_connection", "fg": [ 4773, 4775, 4774, 4772 ] }, + { "id": "edge", "fg": [ 4767, 4766 ] }, + { "id": "end_piece", "fg": [ 4769, 4771, 4770, 4768 ] }, + { "id": "unconnected", "fg": [ 4776, 4778, 4776, 4777 ] } ] }, { "id": "f_console_broken", "multitile": true, - "fg": 4599, + "fg": 4759, "additional_tiles": [ - { "id": "center", "fg": 4583 }, - { "id": "corner", "fg": [ 4585, 4587, 4586, 4584 ] }, - { "id": "t_connection", "fg": [ 4595, 4597, 4596, 4594 ] }, - { "id": "edge", "fg": [ 4589, 4588 ] }, - { "id": "end_piece", "fg": [ 4591, 4593, 4592, 4590 ] }, - { "id": "unconnected", "fg": [ 4599, 4600, 4599, 4598 ] } + { "id": "center", "fg": 4743 }, + { "id": "corner", "fg": [ 4745, 4747, 4746, 4744 ] }, + { "id": "t_connection", "fg": [ 4755, 4757, 4756, 4754 ] }, + { "id": "edge", "fg": [ 4749, 4748 ] }, + { "id": "end_piece", "fg": [ 4751, 4753, 4752, 4750 ] }, + { "id": "unconnected", "fg": [ 4759, 4760, 4759, 4758 ] } ] }, - { "id": "f_crate_c", "fg": 4619 }, - { "id": "f_crate_o", "fg": 4620 }, - { "id": "f_dialysis", "fg": 4621 }, - { "id": "f_dresser", "rotates": true, "fg": [ 4624, 4625, 4623, 4622 ] }, - { "id": "f_dryer", "fg": 4626 }, + { "id": "f_crate_c", "fg": 4779 }, + { "id": "f_crate_o", "fg": 4780 }, + { "id": "f_dialysis", "fg": 4781 }, + { "id": "f_dresser", "rotates": true, "fg": [ 4784, 4785, 4783, 4782 ] }, + { "id": "f_dryer", "fg": 4786 }, { "id": "f_dumpster", - "fg": 4633, - "multitile": true, - "additional_tiles": [ - { "id": "center", "fg": 4627 }, - { "id": "corner", "fg": [ 4632, 4632, 4629, 4629 ] }, - { "id": "t_connection", "fg": [ 4627, 4632, 4627, 4629 ] }, - { "id": "edge", "fg": [ 4628, 4627 ] }, - { "id": "end_piece", "fg": [ 4630, 4632, 4631, 4629 ] }, - { "id": "unconnected", "fg": [ 4633, 4633 ] } - ] - }, - { "id": "f_fireplace", "fg": 4634 }, - { "id": "f_floor_lamp", "fg": 4635 }, - { "id": "f_fridge", "rotates": true, "fg": [ 4638, 4639, 4637, 4636 ] }, - { "id": "t_gas_pump", "fg": 4640, "bg": 4805 }, - { "id": "f_gas_pump", "fg": 4640 }, - { "id": "f_glass_cabinet", "fg": 4641 }, - { "id": "f_glass_fridge", "fg": 4642 }, - { "id": "f_home_furnace", "fg": 4643 }, - { "id": "f_locker", "fg": 4645 }, - { "id": "f_machinery_old", "fg": 4652 }, - { "id": "t_machinery_old", "fg": 4652, "bg": 4801 }, - { "id": "f_machinery_electronic", "fg": 4646 }, - { "id": "t_machinery_electronic", "fg": 4646, "bg": 4801 }, + "fg": 4793, + "multitile": true, + "additional_tiles": [ + { "id": "center", "fg": 4787 }, + { "id": "corner", "fg": [ 4792, 4792, 4789, 4789 ] }, + { "id": "t_connection", "fg": [ 4787, 4792, 4787, 4789 ] }, + { "id": "edge", "fg": [ 4788, 4787 ] }, + { "id": "end_piece", "fg": [ 4790, 4792, 4791, 4789 ] }, + { "id": "unconnected", "fg": [ 4793, 4793 ] } + ] + }, + { "id": "f_fireplace", "fg": 4794 }, + { "id": "f_floor_lamp", "fg": 4795 }, + { "id": "f_fridge", "rotates": true, "fg": [ 4798, 4799, 4797, 4796 ] }, + { "id": "t_gas_pump", "fg": 4800, "bg": 4965 }, + { "id": "f_gas_pump", "fg": 4800 }, + { "id": "f_glass_cabinet", "fg": 4801 }, + { "id": "f_glass_fridge", "fg": 4802 }, + { "id": "f_home_furnace", "fg": 4803 }, + { "id": "f_locker", "fg": 4805 }, + { "id": "f_machinery_old", "fg": 4812 }, + { "id": "t_machinery_old", "fg": 4812, "bg": 4961 }, + { "id": "f_machinery_electronic", "fg": 4806 }, + { "id": "t_machinery_electronic", "fg": 4806, "bg": 4961 }, { "id": "f_machinery_heavy", - "fg": [ { "weight": 20, "sprite": 4647 }, { "weight": 150, "sprite": 4648 }, { "weight": 100, "sprite": 4649 } ] + "fg": [ { "weight": 20, "sprite": 4807 }, { "weight": 150, "sprite": 4808 }, { "weight": 100, "sprite": 4809 } ] }, { "id": "t_machinery_heavy", - "fg": [ { "weight": 20, "sprite": 4647 }, { "weight": 150, "sprite": 4648 }, { "weight": 100, "sprite": 4649 } ], - "bg": 4801 + "fg": [ { "weight": 20, "sprite": 4807 }, { "weight": 150, "sprite": 4808 }, { "weight": 100, "sprite": 4809 } ], + "bg": 4961 }, - { "id": "f_machinery_light", "fg": [ { "weight": 100, "sprite": 4651 }, { "weight": 100, "sprite": 4650 } ] }, + { "id": "f_machinery_light", "fg": [ { "weight": 100, "sprite": 4811 }, { "weight": 100, "sprite": 4810 } ] }, { "id": "t_machinery_light", - "fg": [ { "weight": 100, "sprite": 4651 }, { "weight": 100, "sprite": 4650 } ], - "bg": 4801 - }, - { "id": "f_mannequin", "fg": 4653 }, - { "id": "f_alien_tendril", "fg": 4656 }, - { "id": "f_alien_zapper", "fg": 4657 }, - { "id": [ "f_alien_pod", "f_alien_pod_organ" ], "fg": 4654 }, - { "id": "f_alien_pod_resin", "fg": 4655 }, - { "id": "f_oven", "rotates": true, "fg": [ 4660, 4661, 4659, 4658 ] }, - { "id": "f_rack_coat", "fg": 4662 }, - { "id": "f_scan_bed", "fg": 4663 }, + "fg": [ { "weight": 100, "sprite": 4811 }, { "weight": 100, "sprite": 4810 } ], + "bg": 4961 + }, + { "id": "f_mannequin", "fg": 4813 }, + { "id": "f_alien_tendril", "fg": 4816 }, + { "id": "f_alien_zapper", "fg": 4817 }, + { "id": [ "f_alien_pod", "f_alien_pod_organ" ], "fg": 4814 }, + { "id": "f_alien_pod_resin", "fg": 4815 }, + { "id": "f_oven", "rotates": true, "fg": [ 4820, 4821, 4819, 4818 ] }, + { "id": "f_rack_coat", "fg": 4822 }, + { "id": "f_scan_bed", "fg": 4823 }, { "id": "f_scrap_antenna", "animated": true, "fg": [ - { "weight": 15, "sprite": 4664 }, - { "weight": 15, "sprite": 4665 }, - { "weight": 15, "sprite": 4666 }, - { "weight": 15, "sprite": 4667 }, - { "weight": 15, "sprite": 4668 }, - { "weight": 15, "sprite": 4669 } + { "weight": 15, "sprite": 4824 }, + { "weight": 15, "sprite": 4825 }, + { "weight": 15, "sprite": 4826 }, + { "weight": 15, "sprite": 4827 }, + { "weight": 15, "sprite": 4828 }, + { "weight": 15, "sprite": 4829 } ], "rotates": false }, - { "id": "f_shower", "fg": 4670 }, - { "id": "f_standing_tank", "fg": 4671 }, - { "id": "f_statue", "fg": 4672 }, - { "id": "f_sunflower_season_summer", "fg": 4674 }, - { "id": "f_sunflower_season_autumn", "fg": 4673 }, - { "id": "f_vending_c", "fg": 4675 }, - { "id": "f_vending_reinforced", "fg": 4677 }, - { "id": "f_vending_o", "fg": 4676 }, - { "id": "f_ventilator", "fg": 4678 }, - { "id": "f_washer", "fg": 4679 }, - { "id": "f_water_heater", "fg": 4680 }, - { "id": "f_water_pump", "fg": 4681 }, - { "id": "t_water_pump", "fg": 4681, "bg": 4801 }, - { "id": "f_wind_mill", "fg": 4682 }, - { "id": "f_woodstove", "fg": 4683 }, - { "id": "f_workbench", "fg": 4684 }, - { "id": "f_dishwasher", "fg": 4563 }, - { "id": "f_wardrobe", "fg": 4564 }, - { "id": "f_treadmill", "fg": 4568 }, - { "id": "f_ladder", "fg": 4644 } + { "id": "f_shower", "fg": 4830 }, + { "id": "f_standing_tank", "fg": 4831 }, + { "id": "f_statue", "fg": 4832 }, + { "id": "f_sunflower_season_summer", "fg": 4834 }, + { "id": "f_sunflower_season_autumn", "fg": 4833 }, + { "id": "f_vending_c", "fg": 4835 }, + { "id": "f_vending_reinforced", "fg": 4837 }, + { "id": "f_vending_o", "fg": 4836 }, + { "id": "f_ventilator", "fg": 4838 }, + { "id": "f_washer", "fg": 4839 }, + { "id": "f_water_heater", "fg": 4840 }, + { "id": "f_water_pump", "fg": 4841 }, + { "id": "t_water_pump", "fg": 4841, "bg": 4961 }, + { "id": "f_wind_mill", "fg": 4842 }, + { "id": "f_woodstove", "fg": 4843 }, + { "id": "f_workbench", "fg": 4844 }, + { "id": "f_dishwasher", "fg": 4723 }, + { "id": "f_wardrobe", "fg": 4724 }, + { "id": "f_treadmill", "fg": 4728 }, + { "id": "f_ladder", "fg": 4804 } ] }, { "file": "tallmonsters.png", - "//": "range 4688 to 4783", + "//": "range 4848 to 4943", "sprite_width": 32, "sprite_height": 64, "sprite_offset_x": 0, "sprite_offset_y": -32, "tiles": [ - { "id": "mon_zombie_phase_skulker", "fg": 4689, "bg": 4784 }, - { "id": "mon_zombie_phase_shrike", "fg": 4688, "bg": 4784 }, + { "id": "mon_zombie_phase_skulker", "fg": 4849, "bg": 4944 }, + { "id": "mon_zombie_phase_shrike", "fg": 4848, "bg": 4944 }, { "id": "mon_exodii_worker", "fg": [ - { "weight": 15, "sprite": 4693 }, - { "weight": 15, "sprite": 4694 }, - { "weight": 10, "sprite": 4695 }, - { "weight": 10, "sprite": 4696 } + { "weight": 15, "sprite": 4853 }, + { "weight": 15, "sprite": 4854 }, + { "weight": 10, "sprite": 4855 }, + { "weight": 10, "sprite": 4856 } ], - "bg": 4784 + "bg": 4944 }, { "id": "mon_hunting_horror", - "fg": [ { "weight": 1, "sprite": 4713 }, { "weight": 1, "sprite": 4714 }, { "weight": 1, "sprite": 4715 } ], - "bg": 4784 - }, - { "id": [ "corpse_mon_skeleton", "corpse_mon_skeleton_brute" ], "fg": 4739 }, - { "id": "mon_turret_riot", "fg": 4719, "bg": 4784 }, - { "id": [ "corpse_mon_zombie_necro", "corpse_mon_zombie_master" ], "fg": 4733 }, - { "id": [ "mon_zombie_crawler_pupa", "mon_zombie_crawler_pupa_decoy" ], "fg": 4736, "bg": 4784 }, - { "id": [ "mon_zombie_pupa", "mon_zombie_pupa_decoy" ], "fg": 4737, "bg": 4784 }, - { "id": [ "mon_zombie_pupa_shady", "mon_zombie_pupa_decoy_shady" ], "fg": 4738, "bg": 4784 }, - { "id": "corpse_mon_zombie_rot", "fg": 4739 }, - { "id": [ "corpse_mon_zombie_soldier", "corpse_mon_zombie_military_pilot" ], "fg": 4741 }, + "fg": [ { "weight": 1, "sprite": 4873 }, { "weight": 1, "sprite": 4874 }, { "weight": 1, "sprite": 4875 } ], + "bg": 4944 + }, + { "id": [ "corpse_mon_skeleton", "corpse_mon_skeleton_brute" ], "fg": 4899 }, + { "id": "mon_turret_riot", "fg": 4879, "bg": 4944 }, + { "id": [ "corpse_mon_zombie_necro", "corpse_mon_zombie_master" ], "fg": 4893 }, + { "id": [ "mon_zombie_crawler_pupa", "mon_zombie_crawler_pupa_decoy" ], "fg": 4896, "bg": 4944 }, + { "id": [ "mon_zombie_pupa", "mon_zombie_pupa_decoy" ], "fg": 4897, "bg": 4944 }, + { "id": [ "mon_zombie_pupa_shady", "mon_zombie_pupa_decoy_shady" ], "fg": 4898, "bg": 4944 }, + { "id": "corpse_mon_zombie_rot", "fg": 4899 }, + { "id": [ "corpse_mon_zombie_soldier", "corpse_mon_zombie_military_pilot" ], "fg": 4901 }, { "id": [ "corpse_mon_zombie", @@ -7023,11 +7215,11 @@ "corpse_mon_zombie_prisoner", "corpse_mon_zombie_winged" ], - "fg": 4747 + "fg": 4907 }, - { "id": "corpse_mon_zombie_scientist", "fg": 4749 }, - { "id": [ "corpse_mon_zombie_technician", "corpse_mon_zombie_hazmat" ], "fg": 4750 }, - { "id": [ "corpse_mon_zombie_cop", "corpse_mon_zombie_labsecurity" ], "fg": 4748 }, + { "id": "corpse_mon_zombie_scientist", "fg": 4909 }, + { "id": [ "corpse_mon_zombie_technician", "corpse_mon_zombie_hazmat" ], "fg": 4910 }, + { "id": [ "corpse_mon_zombie_cop", "corpse_mon_zombie_labsecurity" ], "fg": 4908 }, { "id": [ "corpse_mon_zombie_tough", @@ -7043,17 +7235,17 @@ "corpse_mon_zombie_soldier_blackops_2", "corpse_mon_zombie_soldier_blackops_1" ], - "fg": 4751 + "fg": 4911 }, - { "id": "mon_zombie_winged", "fg": 4765, "bg": 4784 }, - { "id": "mon_zombie_swat", "fg": 4770, "bg": 4784 }, - { "id": "mon_zombie_flamer", "fg": 4775, "bg": 4784 }, - { "id": "corpse_mon_zombie_brainless", "fg": 4725 } + { "id": "mon_zombie_winged", "fg": 4925, "bg": 4944 }, + { "id": "mon_zombie_swat", "fg": 4930, "bg": 4944 }, + { "id": "mon_zombie_flamer", "fg": 4935, "bg": 4944 }, + { "id": "corpse_mon_zombie_brainless", "fg": 4885 } ] }, { "file": "tallshadows.png", - "//": "range 4784 to 4799", + "//": "range 4944 to 4959", "sprite_width": 32, "sprite_height": 64, "sprite_offset_x": 0, @@ -7062,31 +7254,31 @@ }, { "file": "tallterrain.png", - "//": "range 4800 to 4831", + "//": "range 4960 to 4991", "sprite_width": 32, "sprite_height": 64, "sprite_offset_x": 0, "sprite_offset_y": -32, "tiles": [ - { "id": "t_atm", "fg": 4806, "bg": 4801 }, - { "id": "t_column", "fg": 4807, "bg": 4801 }, - { "id": "t_gutter_downspout", "fg": 4808, "bg": 4804 }, - { "id": "t_gutter_downspout_season_autumn", "fg": 4808, "bg": 4802 }, - { "id": "t_gutter_downspout_season_summer", "fg": 4808, "bg": 4803 }, - { "id": "t_gutter_downspout_season_winter", "fg": 4808, "bg": 4800 }, - { "id": "t_ladder_up", "fg": 4809 }, - { "id": "t_little_column", "fg": 4810, "bg": 4801 }, - { "id": "t_stairs_up", "fg": 4811 }, - { "id": "t_wood_stairs_up", "fg": 4812 }, - { "id": "t_utility_light", "fg": 4813 }, - { "id": "t_window_stained_blue", "fg": 4814 }, - { "id": "t_window_stained_green", "fg": 4815 }, - { "id": "t_window_stained_red", "fg": 4816 } + { "id": "t_atm", "fg": 4966, "bg": 4961 }, + { "id": "t_column", "fg": 4967, "bg": 4961 }, + { "id": "t_gutter_downspout", "fg": 4968, "bg": 4964 }, + { "id": "t_gutter_downspout_season_autumn", "fg": 4968, "bg": 4962 }, + { "id": "t_gutter_downspout_season_summer", "fg": 4968, "bg": 4963 }, + { "id": "t_gutter_downspout_season_winter", "fg": 4968, "bg": 4960 }, + { "id": "t_ladder_up", "fg": 4969 }, + { "id": "t_little_column", "fg": 4970, "bg": 4961 }, + { "id": "t_stairs_up", "fg": 4971 }, + { "id": "t_wood_stairs_up", "fg": 4972 }, + { "id": "t_utility_light", "fg": 4973 }, + { "id": "t_window_stained_blue", "fg": 4974 }, + { "id": "t_window_stained_green", "fg": 4975 }, + { "id": "t_window_stained_red", "fg": 4976 } ] }, { "file": "tallvehicle.png", - "//": "range 4832 to 4847", + "//": "range 4992 to 5007", "sprite_width": 32, "sprite_height": 64, "sprite_offset_x": 0, @@ -7094,16 +7286,16 @@ "tiles": [ { "id": "vp_frame_handle", - "fg": [ 4833, 4835, 4834, 4832 ], + "fg": [ 4993, 4995, 4994, 4992 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 4833, 4835, 4834, 4832 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 4993, 4995, 4994, 4992 ] } ] }, - { "id": "vp_saddle_scooter", "fg": [ 4837, 4839, 4838, 4836 ], "rotates": true } + { "id": "vp_saddle_scooter", "fg": [ 4997, 4999, 4998, 4996 ], "rotates": true } ] }, { "file": "huge.png", - "//": "range 4848 to 4863", + "//": "range 5008 to 5023", "sprite_width": 64, "sprite_height": 96, "sprite_offset_x": -16, @@ -7112,290 +7304,292 @@ }, { "file": "centered.png", - "//": "range 4864 to 4879", + "//": "range 5024 to 5039", "sprite_width": 64, "sprite_height": 64, "sprite_offset_x": -16, "sprite_offset_y": -16, "tiles": [ - { "id": "vp_wing_mirror", "fg": [ 4873, 4875, 4874, 4872 ], "rotates": true }, - { "id": "vp_wing_mirror_left", "fg": [ 4865, 4867, 4866, 4864 ], "rotates": true }, - { "id": "vp_wing_mirror_right", "fg": [ 4869, 4871, 4870, 4868 ], "rotates": true } + { "id": "vp_wing_mirror", "fg": [ 5033, 5035, 5034, 5032 ], "rotates": true }, + { "id": "vp_wing_mirror_left", "fg": [ 5025, 5027, 5026, 5024 ], "rotates": true }, + { "id": "vp_wing_mirror_right", "fg": [ 5029, 5031, 5030, 5028 ], "rotates": true } ] }, { "file": "large.png", - "//": "range 4880 to 4975", + "//": "range 5040 to 5151", "sprite_width": 64, "sprite_height": 64, "sprite_offset_x": -16, "sprite_offset_y": -32, "tiles": [ - { "id": "f_CTscan", "fg": 4881 }, - { "id": "f_MRI", "fg": 4882 }, - { "id": "f_rotary_clothesline", "fg": 4883 }, - { "id": "mon_troll", "fg": 4884, "bg": 4959 }, - { "id": "mon_smoker_brute", "fg": 4887, "bg": 4960 }, + { "id": "f_CTscan", "fg": 5041 }, + { "id": "f_MRI", "fg": 5042 }, + { "id": "f_rotary_clothesline", "fg": 5043 }, + { "id": "mon_troll", "fg": 5044, "bg": 5133 }, + { "id": "mon_smoker_brute", "fg": 5047, "bg": 5134 }, { "id": "mon_exodii_quad", "fg": [ - { "weight": 15, "sprite": 4888 }, - { "weight": 10, "sprite": 4889 }, - { "weight": 15, "sprite": 4890 }, - { "weight": 15, "sprite": 4891 } + { "weight": 15, "sprite": 5048 }, + { "weight": 10, "sprite": 5049 }, + { "weight": 15, "sprite": 5050 }, + { "weight": 15, "sprite": 5051 } ], - "bg": 4959 + "bg": 5133 }, { "id": "mon_exodii_turret", "fg": [ - { "weight": 15, "sprite": 4892 }, - { "weight": 5, "sprite": 4893 }, - { "weight": 15, "sprite": 4894 }, - { "weight": 15, "sprite": 4895 } + { "weight": 15, "sprite": 5052 }, + { "weight": 5, "sprite": 5053 }, + { "weight": 15, "sprite": 5054 }, + { "weight": 15, "sprite": 5055 } ], - "bg": 4960 + "bg": 5134 }, - { "id": "mon_giant_crayfish", "fg": 4897, "bg": 4961 }, - { "id": "mon_slug_giant", "fg": 4898, "bg": 4959 }, - { "id": "corpse_mon_spider_web", "fg": 4899 }, - { "id": "mon_dog_zombie_hulk", "fg": 4901, "bg": 4960 }, - { "id": "corpse_mon_ant_soldier", "fg": 4906 }, - { "id": "corpse_mon_ant_acid_soldier", "fg": 4904 }, - { "id": "corpse_mon_ant_queen", "fg": 4905 }, - { "id": "corpse_mon_ant_acid_queen", "fg": 4903 }, + { "id": "mon_giant_crayfish", "fg": 5057, "bg": 5135 }, + { "id": "mon_slug_giant", "fg": 5058, "bg": 5133 }, + { "id": "corpse_mon_spider_web", "fg": 5059 }, + { "id": "mon_dog_zombie_hulk", "fg": 5061, "bg": 5134 }, + { "id": "corpse_mon_ant_soldier", "fg": 5066 }, + { "id": "corpse_mon_ant_acid_soldier", "fg": 5064 }, + { "id": "corpse_mon_ant_queen", "fg": 5065 }, + { "id": "corpse_mon_ant_acid_queen", "fg": 5063 }, { "id": "mon_flying_polyp", - "fg": [ { "weight": 1, "sprite": 4914 }, { "weight": 1, "sprite": 4915 }, { "weight": 1, "sprite": 4916 } ] - }, - { "id": "mon_mi_go_scout", "fg": 4921, "bg": 4960 }, - { "id": "mon_zombie_brute_winged", "fg": 4932, "bg": 4959 }, - { "id": "mon_nursebot_defective", "fg": 4945, "bg": 4961 }, - { "id": "corpse_mon_spider_jumping_giant", "fg": 4948 }, - { "id": "corpse_mon_spider_wolf_giant", "fg": 4949 }, - { "id": "mon_thing", "fg": 4954, "bg": 4959 }, - { "id": "t_tree_young", "fg": 4967, "bg": 4964 }, - { "id": "t_tree_young_season_summer", "fg": 4966, "bg": 4965, "rotates": false }, + "fg": [ { "weight": 1, "sprite": 5074 }, { "weight": 1, "sprite": 5075 }, { "weight": 1, "sprite": 5076 } ] + }, + { "id": "mon_mi_go_scout", "fg": 5081, "bg": 5134 }, + { "id": "mon_zombie_brute_winged", "fg": 5092, "bg": 5133 }, + { "id": "mon_nursebot_defective", "fg": 5105, "bg": 5135 }, + { "id": "corpse_mon_spider_jumping_giant", "fg": 5108 }, + { "id": "corpse_mon_spider_wolf_giant", "fg": 5109 }, + { "id": "mon_thing", "fg": 5114, "bg": 5133 }, + { "id": "forest_thick", "fg": 5120, "bg": 5119 }, + { "id": "bridgehead_ground", "fg": [ 5124, 5123, 5125, 5126 ], "bg": 5132, "rotates": true }, + { "id": "bridge", "fg": [ 5122, 5121, 5122, 5121 ], "bg": 5131, "rotates": true }, + { "id": "bridgehead_ramp", "fg": [ 5128, 5127, 5129, 5130 ], "rotates": true }, + { "id": "bridge_road", "fg": [ 5122, 5121, 5122, 5121 ], "rotates": true }, + { "id": "t_tree_young", "fg": 5141, "bg": 5138 }, + { "id": "t_tree_young_season_summer", "fg": 5140, "bg": 5139, "rotates": false }, { "id": "t_tree_young_season_autumn", - "fg": [ { "weight": 100, "sprite": 4968 }, { "weight": 100, "sprite": 4969 } ], - "bg": 4963, + "fg": [ { "weight": 100, "sprite": 5142 }, { "weight": 100, "sprite": 5143 } ], + "bg": 5137, "rotates": false }, - { "id": "t_tree_young_season_winter", "fg": 4970, "bg": 4962, "rotates": false }, - { "id": "corpse_mon_zombie_spitter", "fg": 4880 } + { "id": "t_tree_young_season_winter", "fg": 5144, "bg": 5136, "rotates": false }, + { "id": "corpse_mon_zombie_spitter", "fg": 5040 } ] }, { "file": "giant.png", - "//": "range 4976 to 5023", + "//": "range 5152 to 5199", "sprite_width": 96, "sprite_height": 96, "sprite_offset_x": -32, "sprite_offset_y": -64, "tiles": [ - { "id": "t_tree", "fg": 4985, "bg": 4978 }, - { "id": "t_tree_season_summer", "fg": 4980, "bg": 4979 }, + { "id": "t_tree", "fg": 5161, "bg": 5154 }, + { "id": "t_tree_season_summer", "fg": 5156, "bg": 5155 }, { "id": "t_tree_season_autumn", "fg": [ - { "weight": 100, "sprite": 4981 }, - { "weight": 100, "sprite": 4982 }, - { "weight": 100, "sprite": 4983 }, - { "weight": 100, "sprite": 4984 } + { "weight": 100, "sprite": 5157 }, + { "weight": 100, "sprite": 5158 }, + { "weight": 100, "sprite": 5159 }, + { "weight": 100, "sprite": 5160 } ], - "bg": 4977 + "bg": 5153 }, - { "id": "t_tree_season_winter", "fg": 5005, "bg": 4976 }, - { "id": "t_tree_apple", "fg": 4986, "bg": 4978 }, - { "id": "t_tree_apple_season_summer", "fg": 4986, "bg": 4979 }, - { "id": "t_tree_apple_season_winter", "fg": 4991, "bg": 4976 }, + { "id": "t_tree_season_winter", "fg": 5181, "bg": 5152 }, + { "id": "t_tree_apple", "fg": 5162, "bg": 5154 }, + { "id": "t_tree_apple_season_summer", "fg": 5162, "bg": 5155 }, + { "id": "t_tree_apple_season_winter", "fg": 5167, "bg": 5152 }, { "id": "t_tree_apple_season_autumn", - "fg": [ { "weight": 1, "sprite": 4987 }, { "weight": 1, "sprite": 4988 } ], - "bg": 4977 + "fg": [ { "weight": 1, "sprite": 5163 }, { "weight": 1, "sprite": 5164 } ], + "bg": 5153 }, { "id": "t_tree_apple_harvested", - "fg": [ { "weight": 1, "sprite": 4989 }, { "weight": 1, "sprite": 4990 } ], - "bg": 4977 + "fg": [ { "weight": 1, "sprite": 5165 }, { "weight": 1, "sprite": 5166 } ], + "bg": 5153 }, - { "id": "t_tree_birch", "fg": 4992, "bg": 4978 }, - { "id": "t_tree_birch_season_summer", "fg": 4992, "bg": 4979 }, - { "id": "t_tree_birch_season_winter", "fg": 4995, "bg": 4976 }, + { "id": "t_tree_birch", "fg": 5168, "bg": 5154 }, + { "id": "t_tree_birch_season_summer", "fg": 5168, "bg": 5155 }, + { "id": "t_tree_birch_season_winter", "fg": 5171, "bg": 5152 }, { "id": "t_tree_birch_season_autumn", - "fg": [ { "weight": 1, "sprite": 4993 }, { "weight": 1, "sprite": 4994 } ], - "bg": 4977 + "fg": [ { "weight": 1, "sprite": 5169 }, { "weight": 1, "sprite": 5170 } ], + "bg": 5153 }, - { "id": "t_tree_cherry", "fg": 4996, "bg": 4978 }, - { "id": "t_tree_cherry_season_summer", "fg": 5000, "bg": 4979 }, - { "id": "t_tree_cherry_harvested", "fg": 4999, "bg": 4979 }, - { "id": "t_tree_cherry_season_winter", "fg": 5001, "bg": 4976 }, + { "id": "t_tree_cherry", "fg": 5172, "bg": 5154 }, + { "id": "t_tree_cherry_season_summer", "fg": 5176, "bg": 5155 }, + { "id": "t_tree_cherry_harvested", "fg": 5175, "bg": 5155 }, + { "id": "t_tree_cherry_season_winter", "fg": 5177, "bg": 5152 }, { "id": "t_tree_cherry_season_autumn", - "fg": [ { "weight": 1, "sprite": 4997 }, { "weight": 1, "sprite": 4998 } ], - "bg": 4977 + "fg": [ { "weight": 1, "sprite": 5173 }, { "weight": 1, "sprite": 5174 } ], + "bg": 5153 }, - { "id": "t_tree_cottonwood_season_spring", "fg": 5003, "bg": 4978 }, - { "id": "t_tree_cottonwood_season_summer", "fg": 5004, "bg": 4979 }, - { "id": "t_tree_cottonwood_season_autumn", "fg": 5004, "bg": 4977 }, - { "id": "t_tree_cottonwood_season_winter", "fg": 5005, "bg": 4976 }, + { "id": "t_tree_cottonwood_season_spring", "fg": 5179, "bg": 5154 }, + { "id": "t_tree_cottonwood_season_summer", "fg": 5180, "bg": 5155 }, + { "id": "t_tree_cottonwood_season_autumn", "fg": 5178, "bg": 5153 }, + { "id": "t_tree_cottonwood_season_winter", "fg": 5181, "bg": 5152 }, { "id": "t_tree_dead", - "fg": [ { "weight": 100, "sprite": 5005 }, { "weight": 100, "sprite": 6148 } ], - "bg": 4978 + "fg": [ { "weight": 100, "sprite": 5181 }, { "weight": 100, "sprite": 6324 } ], + "bg": 5154 }, { "id": "t_tree_dead_season_summer", - "fg": [ { "weight": 100, "sprite": 5005 }, { "weight": 100, "sprite": 6148 } ], - "bg": 4979 + "fg": [ { "weight": 100, "sprite": 5181 }, { "weight": 100, "sprite": 6324 } ], + "bg": 5155 }, { "id": "t_tree_dead_season_autumn", - "fg": [ { "weight": 100, "sprite": 5005 }, { "weight": 100, "sprite": 6148 } ], - "bg": 4977 + "fg": [ { "weight": 100, "sprite": 5181 }, { "weight": 100, "sprite": 6324 } ], + "bg": 5153 }, { "id": "t_tree_dead_season_winter", - "fg": [ { "weight": 100, "sprite": 5005 }, { "weight": 100, "sprite": 6148 } ], - "bg": 4976 - }, - { "id": "t_tree_elm_season_spring", "fg": 5007, "bg": 4978 }, - { "id": "t_tree_elm_season_summer", "fg": 5008, "bg": 4979 }, - { "id": "t_tree_elm_season_autumn", "fg": 5006, "bg": 4977 }, - { "id": "t_tree_elm_season_winter", "fg": 5009, "bg": 4976 }, - { "id": "t_tree_maple", "fg": 5011, "bg": 4978 }, - { "id": "t_tree_maple_season_summer", "fg": 5012, "bg": 4979 }, - { "id": "t_tree_maple_season_autumn", "fg": 5010, "bg": 4977 }, - { "id": "t_tree_maple_season_winter", "fg": 5013, "bg": 4976 }, - { "id": "t_tree_peach_season_spring", "fg": 5014, "bg": 4978 }, - { "id": "t_tree_peach_season_summer", "fg": 5017, "bg": 4979 }, - { "id": "t_tree_peach_harvested", "fg": 5014, "bg": 4979 }, - { "id": "t_tree_peach_season_winter", "fg": 5018, "bg": 4976 }, + "fg": [ { "weight": 100, "sprite": 5181 }, { "weight": 100, "sprite": 6324 } ], + "bg": 5152 + }, + { "id": "t_tree_elm_season_spring", "fg": 5183, "bg": 5154 }, + { "id": "t_tree_elm_season_summer", "fg": 5184, "bg": 5155 }, + { "id": "t_tree_elm_season_autumn", "fg": 5182, "bg": 5153 }, + { "id": "t_tree_elm_season_winter", "fg": 5185, "bg": 5152 }, + { "id": "t_tree_maple", "fg": 5187, "bg": 5154 }, + { "id": "t_tree_maple_season_summer", "fg": 5188, "bg": 5155 }, + { "id": "t_tree_maple_season_autumn", "fg": 5186, "bg": 5153 }, + { "id": "t_tree_maple_season_winter", "fg": 5189, "bg": 5152 }, + { "id": "t_tree_peach_season_spring", "fg": 5190, "bg": 5154 }, + { "id": "t_tree_peach_season_summer", "fg": 5193, "bg": 5155 }, + { "id": "t_tree_peach_harvested", "fg": 5190, "bg": 5155 }, + { "id": "t_tree_peach_season_winter", "fg": 5194, "bg": 5152 }, { "id": "t_tree_peach_season_autumn", - "fg": [ { "weight": 1, "sprite": 5015 }, { "weight": 1, "sprite": 5016 } ], - "bg": 4977 - }, - { "id": "t_tree_cottonwood_autumn", "fg": 5002 } + "fg": [ { "weight": 1, "sprite": 5191 }, { "weight": 1, "sprite": 5192 } ], + "bg": 5153 + } ] }, { "file": "incomplete.png", - "//": "range 5024 to 6015", + "//": "range 5200 to 6191", "tiles": [ - { "id": "unknown", "fg": 5024 }, - { "id": "fd_acid", "fg": 5025 }, + { "id": "unknown", "fg": 5200 }, + { "id": "fd_acid", "fg": 5201 }, { "id": "fd_blood", - "fg": 5057, + "fg": 5233, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 5026 }, - { "id": "corner", "fg": [ 5028, 5030, 5029, 5027 ] }, - { "id": "t_connection", "fg": [ 5054, 5056, 5055, 5053 ] }, - { "id": "edge", "fg": [ 5032, 5031 ] }, - { "id": "end_piece", "fg": [ 5034, 5036, 5035, 5033 ] }, - { "id": "unconnected", "fg": [ 5057, 5057 ] } + { "id": "center", "fg": 5202 }, + { "id": "corner", "fg": [ 5204, 5206, 5205, 5203 ] }, + { "id": "t_connection", "fg": [ 5230, 5232, 5231, 5229 ] }, + { "id": "edge", "fg": [ 5208, 5207 ] }, + { "id": "end_piece", "fg": [ 5210, 5212, 5211, 5209 ] }, + { "id": "unconnected", "fg": [ 5233, 5233 ] } ] }, { "id": [ "fd_blood_insect", "fd_blood_invertebrate" ], - "fg": 5052, + "fg": 5228, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 5037 }, - { "id": "corner", "fg": [ 5039, 5041, 5040, 5038 ] }, - { "id": "t_connection", "fg": [ 5049, 5051, 5050, 5048 ] }, - { "id": "edge", "fg": [ 5043, 5042 ] }, - { "id": "end_piece", "fg": [ 5045, 5047, 5046, 5044 ] }, - { "id": "unconnected", "fg": [ 5052, 5052 ] } + { "id": "center", "fg": 5213 }, + { "id": "corner", "fg": [ 5215, 5217, 5216, 5214 ] }, + { "id": "t_connection", "fg": [ 5225, 5227, 5226, 5224 ] }, + { "id": "edge", "fg": [ 5219, 5218 ] }, + { "id": "end_piece", "fg": [ 5221, 5223, 5222, 5220 ] }, + { "id": "unconnected", "fg": [ 5228, 5228 ] } ] }, - { "id": "fd_electricity", "fg": [ { "weight": 100, "sprite": 5059 }, { "weight": 100, "sprite": 5060 } ] }, + { "id": "fd_electricity", "fg": [ { "weight": 100, "sprite": 5235 }, { "weight": 100, "sprite": 5236 } ] }, { "id": "fd_web", "fg": [ - { "weight": 100, "sprite": 5061 }, - { "weight": 100, "sprite": 5062 }, - { "weight": 25, "sprite": 5063 }, - { "weight": 25, "sprite": 5064 } - ] - }, - { "id": "fd_sludge", "fg": 5065 }, - { "id": "fd_smoke", "fg": 5068 }, - { "id": "fd_fungal_haze", "fg": 5067 }, - { "id": "fd_nuke_gas", "fg": 5066 }, - { "id": "fd_spotlight", "fg": 5069 }, - { "id": "f_makeshift_bed", "fg": 5072 }, - { "id": "f_straw_bed", "fg": 5073 }, - { "id": "f_bed_frame", "fg": 5070 }, - { "id": "f_camp_chair", "fg": 5075 }, - { "id": "f_lane", "fg": 5076 }, - { "id": "f_piano", "fg": 5077 }, - { "id": "f_pinball_machine", "fg": 5078 }, - { "id": "f_seat_airplane", "fg": 5079 }, + { "weight": 100, "sprite": 5237 }, + { "weight": 100, "sprite": 5238 }, + { "weight": 25, "sprite": 5239 }, + { "weight": 25, "sprite": 5240 } + ] + }, + { "id": "fd_sludge", "fg": 5241 }, + { "id": "fd_smoke", "fg": 5244 }, + { "id": "fd_fungal_haze", "fg": 5243 }, + { "id": "fd_nuke_gas", "fg": 5242 }, + { "id": "fd_spotlight", "fg": 5245 }, + { "id": "f_makeshift_bed", "fg": 5248 }, + { "id": "f_straw_bed", "fg": 5249 }, + { "id": "f_bed_frame", "fg": 5246 }, + { "id": "f_camp_chair", "fg": 5251 }, + { "id": "f_lane", "fg": 5252 }, + { "id": "f_piano", "fg": 5253 }, + { "id": "f_pinball_machine", "fg": 5254 }, + { "id": "f_seat_airplane", "fg": 5255 }, { "id": "f_sink", "multitile": true, - "fg": 5095, - "additional_tiles": [ - { "id": "center", "fg": 5080 }, - { "id": "corner", "fg": [ 5082, 5084, 5083, 5081 ] }, - { "id": "t_connection", "fg": [ 5092, 5094, 5093, 5091 ] }, - { "id": "edge", "fg": [ 5086, 5085 ] }, - { "id": "end_piece", "fg": [ 5088, 5090, 5089, 5087 ] }, - { "id": "unconnected", "fg": 5095 } - ] - }, - { "id": "f_solar_unit", "fg": 5096 }, - { "id": "f_speaker_cabinet", "fg": 5097 }, - { "id": "f_water_mill", "fg": 5098 }, - { "id": "water_mill", "fg": 5099 }, - { "id": "f_water_purifier", "fg": 5100 }, - { "id": "f_wood_keg", "fg": 5255 }, - { "id": "30gal_barrel", "fg": 5101 }, - { "id": "30gal_drum", "fg": 5102 }, - { "id": "alarmclock", "fg": 5103 }, - { "id": "clock", "fg": 5103 }, - { "id": "anvil", "fg": 5107 }, - { "id": [ "autoclave", "vh_autoclave" ], "fg": 5108 }, - { "id": "bag_canvas_small", "fg": 5109 }, - { "id": "bathroom_scale", "fg": 5110 }, - { "id": "bead_necklace", "fg": 5111 }, - { "id": "bubblewrap", "fg": 5113 }, - { "id": "bucket", "fg": 5114 }, - { "id": "camera_pro", "fg": 5116 }, - { "id": "candle", "fg": 5117 }, - { "id": "colt_army", "fg": 5118 }, - { "id": "colt_lightning", "fg": 5119 }, - { "id": "colt_navy", "fg": 5120 }, - { "id": "condom", "fg": 5121 }, - { "id": "corkscrew", "fg": 5122 }, - { "id": "craft", "fg": 5123 }, - { "id": "pomegranate", "fg": 5135 }, - { "id": "peach", "fg": 5133 }, - { "id": "strawberries", "fg": 5136 }, - { "id": "cabbage", "fg": 5124 }, - { "id": "mango", "fg": 5131 }, - { "id": "kiwi", "fg": 5130 }, - { "id": "papaya", "fg": 5132 }, - { "id": "grapefruit", "fg": 5129 }, - { "id": "garlic", "fg": 5128 }, - { "id": "pineapple", "fg": 5134 }, - { "id": "celery", "fg": 5126 }, - { "id": "chili_pepper", "fg": 5127 }, - { "id": "carrot", "fg": 5125 }, - { "id": "zucchini", "fg": 5137 }, - { "id": "akmag30", "fg": 5138 }, - { "id": "duct_tape", "fg": 5139 }, - { "id": "electric_lantern", "fg": 5140 }, - { "id": "extinguisher", "fg": 5141 }, - { "id": "sm_extinguisher", "fg": 5142 }, - { "id": "fan", "fg": 5143 }, - { "id": "flaregun", "fg": 5144 }, - { "id": "signal_flare", "fg": 5145 }, + "fg": 5271, + "additional_tiles": [ + { "id": "center", "fg": 5256 }, + { "id": "corner", "fg": [ 5258, 5260, 5259, 5257 ] }, + { "id": "t_connection", "fg": [ 5268, 5270, 5269, 5267 ] }, + { "id": "edge", "fg": [ 5262, 5261 ] }, + { "id": "end_piece", "fg": [ 5264, 5266, 5265, 5263 ] }, + { "id": "unconnected", "fg": 5271 } + ] + }, + { "id": "f_solar_unit", "fg": 5272 }, + { "id": "f_speaker_cabinet", "fg": 5273 }, + { "id": "f_water_mill", "fg": 5274 }, + { "id": "water_mill", "fg": 5275 }, + { "id": "f_water_purifier", "fg": 5276 }, + { "id": "f_wood_keg", "fg": 5428 }, + { "id": "30gal_barrel", "fg": 5277 }, + { "id": "30gal_drum", "fg": 5278 }, + { "id": "alarmclock", "fg": 5279 }, + { "id": "clock", "fg": 5279 }, + { "id": "anvil", "fg": 5283 }, + { "id": [ "autoclave", "vh_autoclave" ], "fg": 5284 }, + { "id": "bag_canvas_small", "fg": 5285 }, + { "id": "bathroom_scale", "fg": 5286 }, + { "id": "bead_necklace", "fg": 5287 }, + { "id": "bubblewrap", "fg": 5289 }, + { "id": "bucket", "fg": 5290 }, + { "id": "camera_pro", "fg": 5292 }, + { "id": "colt_army", "fg": 5293 }, + { "id": "colt_lightning", "fg": 5294 }, + { "id": "colt_navy", "fg": 5295 }, + { "id": "condom", "fg": 5296 }, + { "id": "craft", "fg": 5297 }, + { "id": "pomegranate", "fg": 5309 }, + { "id": "peach", "fg": 5307 }, + { "id": "strawberries", "fg": 5310 }, + { "id": "cabbage", "fg": 5298 }, + { "id": "mango", "fg": 5305 }, + { "id": "kiwi", "fg": 5304 }, + { "id": "papaya", "fg": 5306 }, + { "id": "grapefruit", "fg": 5303 }, + { "id": "garlic", "fg": 5302 }, + { "id": "pineapple", "fg": 5308 }, + { "id": "celery", "fg": 5300 }, + { "id": "chili_pepper", "fg": 5301 }, + { "id": "carrot", "fg": 5299 }, + { "id": "zucchini", "fg": 5311 }, + { "id": "akmag30", "fg": 5312 }, + { "id": "duct_tape", "fg": 5313 }, + { "id": "electric_lantern", "fg": 5314 }, + { "id": "extinguisher", "fg": 5315 }, + { "id": "sm_extinguisher", "fg": 5316 }, + { "id": "fan", "fg": 5317 }, + { "id": "flaregun", "fg": 5318 }, + { "id": "signal_flare", "fg": 5319 }, { "id": [ "deck_of_cards", @@ -7413,42 +7607,42 @@ "battleship", "clue" ], - "fg": 5146 - }, - { "id": "fn_fal", "fg": 5147 }, - { "id": [ "birchbark_funnel", "funnel", "leather_funnel", "makeshift_funnel", "metal_funnel" ], "fg": 5148 }, - { "id": [ "tr_funnel", "tr_makeshift_funnel", "tr_raincatcher" ], "fg": 5149 }, - { "id": "garand", "fg": 5150 }, - { "id": "glock17_17", "fg": 5151 }, - { "id": "hk_mp5", "fg": 5152 }, - { "id": "holy_symbol", "fg": 5153 }, - { "id": "holy_symbol_wood", "fg": 5154 }, - { "id": "hotplate", "fg": 5155 }, - { "id": "jerrycan", "fg": 5156 }, - { "id": "jerrycan_big", "fg": 5157 }, - { "id": "keg", "fg": 5158 }, - { "id": "chopsticks", "fg": 5161 }, - { "id": "cutting_board", "fg": 5164 }, - { "id": "plastic_straw", "fg": 5171 }, - { "id": "xacto", "fg": 5178 }, - { "id": "brush", "fg": 5159 }, - { "id": "comb_pocket", "fg": 5162 }, - { "id": "curling_iron", "fg": 5163 }, - { "id": "elec_hairtrimmer", "fg": 5165 }, - { "id": "hair_dryer", "fg": 5166 }, - { "id": "hairbrush", "fg": 5167 }, - { "id": "metal_file", "fg": 5169 }, - { "id": "mobile_memory_card", "fg": 5170 }, - { "id": "razor_blade", "fg": 5172 }, - { "id": "razor_shaving", "fg": 5173 }, - { "id": "sandpaper", "fg": 5174 }, - { "id": "string_floss", "fg": 5175 }, - { "id": [ "toothbrush_plain", "toothbrush_dirty" ], "fg": 5176 }, - { "id": "tumbler_plastic", "fg": 5177 }, - { "id": "casserole", "fg": 5160 }, + "fg": 5320 + }, + { "id": "fn_fal", "fg": 5321 }, + { "id": [ "birchbark_funnel", "funnel", "leather_funnel", "makeshift_funnel", "metal_funnel" ], "fg": 5322 }, + { "id": [ "tr_funnel", "tr_makeshift_funnel", "tr_raincatcher" ], "fg": 5323 }, + { "id": "garand", "fg": 5324 }, + { "id": "glock17_17", "fg": 5325 }, + { "id": "hk_mp5", "fg": 5326 }, + { "id": "holy_symbol", "fg": 5327 }, + { "id": "holy_symbol_wood", "fg": 5328 }, + { "id": "hotplate", "fg": 5329 }, + { "id": "jerrycan", "fg": 5330 }, + { "id": "jerrycan_big", "fg": 5331 }, + { "id": "keg", "fg": 5332 }, + { "id": "chopsticks", "fg": 5335 }, + { "id": "cutting_board", "fg": 5338 }, + { "id": "plastic_straw", "fg": 5345 }, + { "id": "xacto", "fg": 5352 }, + { "id": "brush", "fg": 5333 }, + { "id": "comb_pocket", "fg": 5336 }, + { "id": "curling_iron", "fg": 5337 }, + { "id": "elec_hairtrimmer", "fg": 5339 }, + { "id": "hair_dryer", "fg": 5340 }, + { "id": "hairbrush", "fg": 5341 }, + { "id": "metal_file", "fg": 5343 }, + { "id": "mobile_memory_card", "fg": 5344 }, + { "id": "razor_blade", "fg": 5346 }, + { "id": "razor_shaving", "fg": 5347 }, + { "id": "sandpaper", "fg": 5348 }, + { "id": "string_floss", "fg": 5349 }, + { "id": [ "toothbrush_plain", "toothbrush_dirty" ], "fg": 5350 }, + { "id": "tumbler_plastic", "fg": 5351 }, + { "id": "casserole", "fg": 5334 }, { "id": [ "hairpin", "fc_hairpin", "gold_hairpin", "platinum_hairpin", "silver_hairpin", "copper_hairpin", "tieclip" ], - "fg": 5168 + "fg": 5342 }, { "id": [ @@ -7601,7 +7795,7 @@ "wine_chardonnay", "drink_martini" ], - "fg": 5179 + "fg": 5353 }, { "id": [ @@ -7642,7 +7836,7 @@ "soup_tomato", "young_yeast" ], - "fg": 5181 + "fg": 5355 }, { "id": [ @@ -7664,62 +7858,62 @@ "hi_q_distillate_tails", "hi_q_distillate" ], - "fg": 5180 - }, - { "id": "longsword", "fg": 5182 }, - { "id": "longsword_inferior", "fg": 5184 }, - { "id": "longsword_fake", "fg": 5183 }, - { "id": "m107a1", "fg": 5185 }, - { "id": "m16a4", "fg": 5186 }, - { "id": "m249", "fg": 5187 }, - { "id": "m60", "fg": 5188 }, - { "id": "mask_gas", "fg": 5189 }, - { "id": "plastic_chunk", "fg": 5190 }, - { "id": "scrap_copper", "fg": 5191 }, - { "id": "mosin91_30", "fg": 5192 }, - { "id": "oil_lamp", "fg": 5193 }, - { "id": "pickaxe", "fg": 5194 }, - { "id": "pitchfork", "fg": 5195 }, - { "id": "plunger_futuristic", "fg": 5196 }, - { "id": "plunger_toilet", "fg": 5197 }, - { "id": "pocketwatch", "fg": 5198 }, - { "id": "bacon", "fg": 5199 }, - { "id": "porkbelly", "fg": 5200 }, - { "id": "raw_cured_fatty_meat", "fg": 5201 }, - { "id": "raw_curing_fatty_meat", "fg": 5202 }, - { "id": "material_sand", "fg": 5229 }, - { "id": "material_soil", "fg": 5231 }, - { "id": "chem_aluminium_powder", "fg": 5203 }, - { "id": "chem_aluminium_sulphate", "fg": 5204 }, - { "id": "chem_ammonium_nitrate", "fg": 5205 }, - { "id": "chem_black_powder", "fg": 5206 }, - { "id": "cac2powder", "fg": 5207 }, - { "id": "chilly-p", "fg": 5208 }, - { "id": "meal_chitin_piece", "fg": 5209 }, - { "id": "chem_chromium_oxide", "fg": 5210 }, - { "id": "coffee_raw", "fg": 5211 }, - { "id": "curry_powder", "fg": 5212 }, - { "id": "powder_eggs", "fg": 5213 }, - { "id": "fungicide", "fg": 5214 }, - { "id": "insecticide", "fg": 5216 }, - { "id": "chem_hmtd", "fg": 5215 }, - { "id": "lemonade_powder", "fg": 5217 }, - { "id": "lye_powder", "fg": 5218 }, - { "id": "magnesium", "fg": 5219 }, - { "id": "chem_manganese_dioxide", "fg": 5220 }, - { "id": "chem_match_head_powder", "fg": 5221 }, - { "id": "mustard_powder", "fg": 5222 }, - { "id": "oxy_powder", "fg": 5223 }, - { "id": "chem_peptone_broth", "fg": 5224 }, - { "id": "protein_powder", "fg": 5225 }, - { "id": "material_quicklime", "fg": 5226 }, - { "id": "chem_rocket_fuel", "fg": 5227 }, - { "id": "chem_saltpetre", "fg": 5228 }, - { "id": "gunpowder", "fg": 5230 }, - { "id": "chem_thermite", "fg": 5232 }, - { "id": "tin", "fg": 5233 }, - { "id": "yeast", "fg": 5235 }, - { "id": "chem_zinc_powder", "fg": 5236 }, + "fg": 5354 + }, + { "id": "longsword", "fg": 5356 }, + { "id": "longsword_inferior", "fg": 5358 }, + { "id": "longsword_fake", "fg": 5357 }, + { "id": "m107a1", "fg": 5359 }, + { "id": "m16a4", "fg": 5360 }, + { "id": "m249", "fg": 5361 }, + { "id": "m60", "fg": 5362 }, + { "id": "mask_gas", "fg": 5363 }, + { "id": "plastic_chunk", "fg": 5364 }, + { "id": "scrap_copper", "fg": 5365 }, + { "id": "mosin91_30", "fg": 5366 }, + { "id": "oil_lamp", "fg": 5367 }, + { "id": "pickaxe", "fg": 5368 }, + { "id": "pitchfork", "fg": 5369 }, + { "id": "plunger_futuristic", "fg": 5370 }, + { "id": "plunger_toilet", "fg": 5371 }, + { "id": "pocketwatch", "fg": 5372 }, + { "id": "bacon", "fg": 5373 }, + { "id": "porkbelly", "fg": 5374 }, + { "id": "raw_cured_fatty_meat", "fg": 5375 }, + { "id": "raw_curing_fatty_meat", "fg": 5376 }, + { "id": "material_sand", "fg": 5403 }, + { "id": "material_soil", "fg": 5405 }, + { "id": "chem_aluminium_powder", "fg": 5377 }, + { "id": "chem_aluminium_sulphate", "fg": 5378 }, + { "id": "chem_ammonium_nitrate", "fg": 5379 }, + { "id": "chem_black_powder", "fg": 5380 }, + { "id": "cac2powder", "fg": 5381 }, + { "id": "chilly-p", "fg": 5382 }, + { "id": "meal_chitin_piece", "fg": 5383 }, + { "id": "chem_chromium_oxide", "fg": 5384 }, + { "id": "coffee_raw", "fg": 5385 }, + { "id": "curry_powder", "fg": 5386 }, + { "id": "powder_eggs", "fg": 5387 }, + { "id": "fungicide", "fg": 5388 }, + { "id": "insecticide", "fg": 5390 }, + { "id": "chem_hmtd", "fg": 5389 }, + { "id": "lemonade_powder", "fg": 5391 }, + { "id": "lye_powder", "fg": 5392 }, + { "id": "magnesium", "fg": 5393 }, + { "id": "chem_manganese_dioxide", "fg": 5394 }, + { "id": "chem_match_head_powder", "fg": 5395 }, + { "id": "mustard_powder", "fg": 5396 }, + { "id": "oxy_powder", "fg": 5397 }, + { "id": "chem_peptone_broth", "fg": 5398 }, + { "id": "protein_powder", "fg": 5399 }, + { "id": "material_quicklime", "fg": 5400 }, + { "id": "chem_rocket_fuel", "fg": 5401 }, + { "id": "chem_saltpetre", "fg": 5402 }, + { "id": "gunpowder", "fg": 5404 }, + { "id": "chem_thermite", "fg": 5406 }, + { "id": "tin", "fg": 5407 }, + { "id": "yeast", "fg": 5409 }, + { "id": "chem_zinc_powder", "fg": 5410 }, { "id": [ "sugar", @@ -7732,814 +7926,813 @@ "quikclot", "chem_acrylamide" ], - "fg": 5234 - }, - { "id": "radio", "fg": 5237 }, - { "id": "ref_lighter", "fg": 5238 }, - { "id": "rhubarb", "fg": 5239 }, - { "id": "rope_6", "fg": 5240 }, - { "id": "soldering_iron", "fg": 5241 }, - { "id": "spray_can", "fg": 5242 }, - { "id": "stanag30", "fg": 5243 }, - { "id": "steel_pan", "fg": 5244 }, - { "id": "stepladder", "fg": 5245 }, - { "id": "stereo", "fg": 5246 }, - { "id": "sunglasses", "fg": 5247 }, - { "id": "sw_610", "fg": 5248 }, - { "id": "toolbox", "fg": 5249 }, - { "id": "waffleiron", "fg": 5250 }, - { "id": "warhammer", "fg": 5251 }, - { "id": "welding_mask", "fg": 5252 }, - { "id": "wind_mill", "fg": 5253 }, - { "id": "wood_beam", "fg": 5254 }, - { "id": "wooden_barrel", "fg": 5255 }, - { "id": "zweihander", "fg": 5256 }, - { "id": "zweihander_inferior", "fg": 5258 }, - { "id": "zweihander_fake", "fg": 5257 }, - { "id": "bot_grenade_hack", "fg": 5259 }, - { "id": "bot_mininuke_hack", "fg": 5260 }, - { "id": "infrared_creature", "fg": 5272 }, + "fg": 5408 + }, + { "id": "radio", "fg": 5411 }, + { "id": "ref_lighter", "fg": 5412 }, + { "id": "rhubarb", "fg": 5413 }, + { "id": "rope_6", "fg": 5414 }, + { "id": "soldering_iron", "fg": 5415 }, + { "id": "spray_can", "fg": 5416 }, + { "id": "stanag30", "fg": 5417 }, + { "id": "stepladder", "fg": 5418 }, + { "id": "stereo", "fg": 5419 }, + { "id": "sunglasses", "fg": 5420 }, + { "id": "sw_610", "fg": 5421 }, + { "id": "toolbox", "fg": 5422 }, + { "id": "waffleiron", "fg": 5423 }, + { "id": "warhammer", "fg": 5424 }, + { "id": "welding_mask", "fg": 5425 }, + { "id": "wind_mill", "fg": 5426 }, + { "id": "wood_beam", "fg": 5427 }, + { "id": "wooden_barrel", "fg": 5428 }, + { "id": "zweihander", "fg": 5429 }, + { "id": "zweihander_inferior", "fg": 5431 }, + { "id": "zweihander_fake", "fg": 5430 }, + { "id": "bot_grenade_hack", "fg": 5432 }, + { "id": "bot_mininuke_hack", "fg": 5433 }, + { "id": "infrared_creature", "fg": 5444 }, { "id": "weather_rain_drop", "fg": [ - { "weight": 100, "sprite": 5274 }, - { "weight": 100, "sprite": 5276 }, - { "weight": 100, "sprite": 5277 }, - { "weight": 100, "sprite": 5278 }, - { "weight": 100, "sprite": 5279 }, - { "weight": 100, "sprite": 5280 }, - { "weight": 100, "sprite": 5281 }, - { "weight": 100, "sprite": 5282 }, - { "weight": 100, "sprite": 5283 }, - { "weight": 100, "sprite": 5275 } - ] - }, - { "id": "weather_snowflake", "fg": 5284 }, - { "id": "weather_acid_drop", "fg": 5273 }, - { "id": [ "t_card_science", "t_card_robofac" ], "fg": 5289 }, - { "id": "t_card_reader_broken", "fg": 5288 }, - { "id": "t_card_military", "fg": 5287 }, - { "id": "t_card_industrial", "fg": 5286 }, - { "id": "t_card_fp", "fg": 5285 }, - { "id": "t_floor_red", "fg": 5292 }, - { "id": "t_floor_green", "fg": 5291 }, - { "id": "t_floor_blue", "fg": 5290 }, - { "id": [ "t_searth_test", "t_searth" ], "fg": 5293 }, - { "id": "t_current_trans", "fg": 5294, "bg": 4179 }, - { "id": "t_potential_trans", "fg": 5295, "bg": 4179 }, - { "id": "graffiti", "fg": 5296 }, - { "id": "t_floor_olight", "fg": 5297, "bg": 3464 }, - { "id": "t_thconc_floor_olight", "fg": 5297, "bg": 4215 }, - { "id": "t_metal_floor_olight", "fg": 5297, "bg": 3798 }, - { "id": "t_pedestal_wyrm", "fg": 5299, "bg": 3988 }, + { "weight": 100, "sprite": 5446 }, + { "weight": 100, "sprite": 5448 }, + { "weight": 100, "sprite": 5449 }, + { "weight": 100, "sprite": 5450 }, + { "weight": 100, "sprite": 5451 }, + { "weight": 100, "sprite": 5452 }, + { "weight": 100, "sprite": 5453 }, + { "weight": 100, "sprite": 5454 }, + { "weight": 100, "sprite": 5455 }, + { "weight": 100, "sprite": 5447 } + ] + }, + { "id": "weather_snowflake", "fg": 5456 }, + { "id": "weather_acid_drop", "fg": 5445 }, + { "id": [ "t_card_science", "t_card_robofac" ], "fg": 5461 }, + { "id": "t_card_reader_broken", "fg": 5460 }, + { "id": "t_card_military", "fg": 5459 }, + { "id": "t_card_industrial", "fg": 5458 }, + { "id": "t_card_fp", "fg": 5457 }, + { "id": "t_floor_red", "fg": 5464 }, + { "id": "t_floor_green", "fg": 5463 }, + { "id": "t_floor_blue", "fg": 5462 }, + { "id": [ "t_searth_test", "t_searth" ], "fg": 5465 }, + { "id": "t_current_trans", "fg": 5466, "bg": 4338 }, + { "id": "t_potential_trans", "fg": 5467, "bg": 4338 }, + { "id": "graffiti", "fg": 5468 }, + { "id": "t_floor_olight", "fg": 5469, "bg": 3623 }, + { "id": "t_thconc_floor_olight", "fg": 5469, "bg": 4374 }, + { "id": "t_metal_floor_olight", "fg": 5469, "bg": 3957 }, + { "id": "t_pedestal_wyrm", "fg": 5471, "bg": 4147 }, { "id": "t_pedestal_temple", - "fg": [ { "weight": 100, "sprite": 5300 }, { "weight": 100, "sprite": 5298 } ], - "bg": 3376 + "fg": [ { "weight": 100, "sprite": 5472 }, { "weight": 100, "sprite": 5470 } ], + "bg": 3535 }, { "id": "t_pedestal_temple_season_winter", - "fg": [ { "weight": 100, "sprite": 5300 }, { "weight": 100, "sprite": 5298 } ], - "bg": 3063 + "fg": [ { "weight": 100, "sprite": 5472 }, { "weight": 100, "sprite": 5470 } ], + "bg": 3222 }, - { "id": "t_zebra", "fg": 5301 }, - { "id": "t_zebra_season_winter", "fg": 3063 }, + { "id": "t_zebra", "fg": 5473 }, + { "id": "t_zebra_season_winter", "fg": 3222 }, { "id": [ "t_metal_railing", "t_concrete_railing", "t_glass_railing" ], "multitile": true, - "fg": 3933, - "bg": 3250, + "fg": 4092, + "bg": 3409, "additional_tiles": [ - { "id": "center", "bg": 3250, "fg": 3918 }, - { "id": "corner", "bg": 3250, "fg": [ 3920, 3922, 3921, 3919 ] }, - { "id": "t_connection", "bg": 3250, "fg": [ 3930, 3932, 3931, 3929 ] }, - { "id": "edge", "bg": 3250, "fg": [ 3924, 3923 ] }, - { "id": "end_piece", "bg": 3250, "fg": [ 3926, 3928, 3927, 3925 ] }, - { "bg": 3250, "id": "unconnected", "fg": [ 3933, 3933 ] } + { "id": "center", "bg": 3409, "fg": 4077 }, + { "id": "corner", "bg": 3409, "fg": [ 4079, 4081, 4080, 4078 ] }, + { "id": "t_connection", "bg": 3409, "fg": [ 4089, 4091, 4090, 4088 ] }, + { "id": "edge", "bg": 3409, "fg": [ 4083, 4082 ] }, + { "id": "end_piece", "bg": 3409, "fg": [ 4085, 4087, 4086, 4084 ] }, + { "bg": 3409, "id": "unconnected", "fg": [ 4092, 4092 ] } ] }, { "id": "t_chainfence", "multitile": true, "rotates": false, - "fg": 5302, - "bg": 3865, + "fg": 5474, + "bg": 4024, "additional_tiles": [ - { "id": "edge", "bg": 3865, "fg": [ 5303, 5302 ] }, - { "id": "end_piece", "bg": 3865, "fg": [ 5303, 5302, 5303, 5302 ] }, - { "bg": 3865, "id": "unconnected", "fg": 5302 } + { "id": "edge", "bg": 4024, "fg": [ 5475, 5474 ] }, + { "id": "end_piece", "bg": 4024, "fg": [ 5475, 5474, 5475, 5474 ] }, + { "bg": 4024, "id": "unconnected", "fg": 5474 } ] }, { "id": "t_chainfence_season_winter", "multitile": true, "rotates": false, - "fg": 5302, - "bg": 3063, - "additional_tiles": [ - { "id": "edge", "bg": 3063, "fg": [ 5303, 5302 ] }, - { "id": "end_piece", "bg": 3063, "fg": [ 5303, 5302, 5303, 5302 ] }, - { "bg": 3063, "id": "unconnected", "fg": 5302 } - ] - }, - { "id": "t_chaingate_c", "fg": 5305, "bg": 3865 }, - { "id": "t_chaingate_l", "fg": 5306, "bg": 3865 }, - { "id": "t_chaingate_o", "fg": 5307, "bg": 3865 }, - { "id": "t_chainfence_posts", "fg": 5304, "bg": 3865 }, - { "id": "t_chaingate_c_season_winter", "fg": 5305, "bg": 3063 }, - { "id": "t_chaingate_l_season_winter", "fg": 5306, "bg": 3063 }, - { "id": "t_chaingate_o_season_winter", "fg": 5307, "bg": 3063 }, - { "id": "t_chainfence_posts_season_winter", "fg": 5304, "bg": 3063 }, - { "id": "t_console", "fg": 5308 }, - { "id": "t_console_broken", "fg": 5309 }, - { "id": "t_dirtmound", "fg": 5310, "bg": 3567 }, - { "id": "t_dirtmound_season_summer", "fg": 5310, "bg": 3577 }, - { "id": "t_dirtmound_season_autumn", "fg": 5310, "bg": 3572 }, - { "id": "t_dirtmound_season_winter", "fg": 5311 }, - { "id": "t_door_metal_c", "fg": 5312 }, - { "id": "t_door_metal_o", "fg": 5313 }, - { "id": "t_fern", "fg": 5314, "bg": 3567 }, - { "id": "t_fern_harvested", "fg": 5315, "bg": 3567 }, - { "id": "t_fern_season_summer", "fg": 5314, "bg": 3577 }, - { "id": "t_fern_harvested_season_summer", "fg": 5315, "bg": 3577 }, - { "id": "t_fern_season_autumn", "fg": 5314, "bg": 3572 }, - { "id": "t_fern_harvested_season_autumn", "fg": 5315, "bg": 3572 }, - { "id": "t_fern_season_winter", "fg": 5314, "bg": 3062 }, - { "id": "t_fern_harvested_season_winter", "fg": 5315, "bg": 3062 }, + "fg": 5474, + "bg": 3222, + "additional_tiles": [ + { "id": "edge", "bg": 3222, "fg": [ 5475, 5474 ] }, + { "id": "end_piece", "bg": 3222, "fg": [ 5475, 5474, 5475, 5474 ] }, + { "bg": 3222, "id": "unconnected", "fg": 5474 } + ] + }, + { "id": "t_chaingate_c", "fg": 5477, "bg": 4024 }, + { "id": "t_chaingate_l", "fg": 5478, "bg": 4024 }, + { "id": "t_chaingate_o", "fg": 5479, "bg": 4024 }, + { "id": "t_chainfence_posts", "fg": 5476, "bg": 4024 }, + { "id": "t_chaingate_c_season_winter", "fg": 5477, "bg": 3222 }, + { "id": "t_chaingate_l_season_winter", "fg": 5478, "bg": 3222 }, + { "id": "t_chaingate_o_season_winter", "fg": 5479, "bg": 3222 }, + { "id": "t_chainfence_posts_season_winter", "fg": 5476, "bg": 3222 }, + { "id": "t_console", "fg": 5480 }, + { "id": "t_console_broken", "fg": 5481 }, + { "id": "t_dirtmound", "fg": 5482, "bg": 3726 }, + { "id": "t_dirtmound_season_summer", "fg": 5482, "bg": 3736 }, + { "id": "t_dirtmound_season_autumn", "fg": 5482, "bg": 3731 }, + { "id": "t_dirtmound_season_winter", "fg": 5483 }, + { "id": "t_door_metal_c", "fg": 5484 }, + { "id": "t_door_metal_o", "fg": 5485 }, + { "id": "t_fern", "fg": 5486, "bg": 3726 }, + { "id": "t_fern_harvested", "fg": 5487, "bg": 3726 }, + { "id": "t_fern_season_summer", "fg": 5486, "bg": 3736 }, + { "id": "t_fern_harvested_season_summer", "fg": 5487, "bg": 3736 }, + { "id": "t_fern_season_autumn", "fg": 5486, "bg": 3731 }, + { "id": "t_fern_harvested_season_autumn", "fg": 5487, "bg": 3731 }, + { "id": "t_fern_season_winter", "fg": 5486, "bg": 3221 }, + { "id": "t_fern_harvested_season_winter", "fg": 5487, "bg": 3221 }, { "id": [ "t_junk_palisade", "t_junk_wall" ], "fg": [ - { "weight": 100, "sprite": 5316 }, - { "weight": 100, "sprite": 5317 }, - { "weight": 100, "sprite": 5318 }, - { "weight": 100, "sprite": 5319 } + { "weight": 100, "sprite": 5488 }, + { "weight": 100, "sprite": 5489 }, + { "weight": 100, "sprite": 5490 }, + { "weight": 100, "sprite": 5491 } ] }, { "id": "t_paper", - "fg": 5335, + "fg": 5507, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 5320 }, - { "id": "corner", "fg": [ 5322, 5324, 5323, 5321 ] }, - { "id": "t_connection", "fg": [ 5332, 5334, 5333, 5331 ] }, - { "id": "edge", "fg": [ 5326, 5325 ] }, - { "id": "end_piece", "fg": [ 5328, 5330, 5329, 5327 ] }, - { "id": "unconnected", "fg": [ 5335, 5335 ] } + { "id": "center", "fg": 5492 }, + { "id": "corner", "fg": [ 5494, 5496, 5495, 5493 ] }, + { "id": "t_connection", "fg": [ 5504, 5506, 5505, 5503 ] }, + { "id": "edge", "fg": [ 5498, 5497 ] }, + { "id": "end_piece", "fg": [ 5500, 5502, 5501, 5499 ] }, + { "id": "unconnected", "fg": [ 5507, 5507 ] } ] }, - { "id": "t_reinforced_glass_shutter", "fg": 5337 }, - { "id": "t_reinforced_glass_shutter_open", "fg": 5338 }, + { "id": "t_reinforced_glass_shutter", "fg": 5509 }, + { "id": "t_reinforced_glass_shutter_open", "fg": 5510 }, { "id": "t_sandbox", - "fg": 5354, + "fg": 5526, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 5339 }, - { "id": "corner", "fg": [ 5341, 5343, 5342, 5340 ] }, - { "id": "t_connection", "fg": [ 5351, 5353, 5352, 5350 ] }, - { "id": "edge", "fg": [ 5345, 5344 ] }, - { "id": "end_piece", "fg": [ 5347, 5349, 5348, 5346 ] }, - { "id": "unconnected", "fg": [ 5354, 5354 ] } + { "id": "center", "fg": 5511 }, + { "id": "corner", "fg": [ 5513, 5515, 5514, 5512 ] }, + { "id": "t_connection", "fg": [ 5523, 5525, 5524, 5522 ] }, + { "id": "edge", "fg": [ 5517, 5516 ] }, + { "id": "end_piece", "fg": [ 5519, 5521, 5520, 5518 ] }, + { "id": "unconnected", "fg": [ 5526, 5526 ] } ] }, - { "id": "t_slot_machine", "fg": 5355, "bg": 3464 }, - { "id": "t_strconc_wall", "fg": 5356 }, + { "id": "t_slot_machine", "fg": 5527, "bg": 3623 }, + { "id": "t_strconc_wall", "fg": 5528 }, { "id": "t_trunk", "multitile": true, - "fg": [ 5358, 5357 ], - "bg": [ { "weight": 100, "sprite": 3567 }, { "weight": 100, "sprite": 3569 } ] + "fg": [ 5530, 5529 ], + "bg": [ { "weight": 100, "sprite": 3726 }, { "weight": 100, "sprite": 3728 } ] }, { "id": "t_trunk_season_summer", "multitile": true, - "fg": [ 5358, 5357 ], - "bg": [ { "weight": 100, "sprite": 3577 }, { "weight": 100, "sprite": 3579 } ] + "fg": [ 5530, 5529 ], + "bg": [ { "weight": 100, "sprite": 3736 }, { "weight": 100, "sprite": 3738 } ] }, { "id": "t_trunk_season_autumn", "multitile": true, - "fg": [ 5358, 5357 ], - "bg": [ { "weight": 100, "sprite": 3572 }, { "weight": 100, "sprite": 3574 } ] + "fg": [ 5530, 5529 ], + "bg": [ { "weight": 100, "sprite": 3731 }, { "weight": 100, "sprite": 3733 } ] }, - { "id": "t_trunk_season_winter", "multitile": true, "fg": [ 5358, 5357 ], "bg": 3063 }, - { "id": "t_wall_half", "fg": 5359, "bg": 3464 }, - { "id": "t_wall_metal", "fg": 5360 }, + { "id": "t_trunk_season_winter", "multitile": true, "fg": [ 5530, 5529 ], "bg": 3222 }, + { "id": "t_wall_half", "fg": 5531, "bg": 3623 }, + { "id": "t_wall_metal", "fg": 5532 }, { "id": "t_wax", - "fg": 5376, + "fg": 5548, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 5361 }, - { "id": "corner", "fg": [ 5363, 5365, 5364, 5362 ] }, - { "id": "t_connection", "fg": [ 5373, 5375, 5374, 5372 ] }, - { "id": "edge", "fg": [ 5367, 5366 ] }, - { "id": "end_piece", "fg": [ 5369, 5371, 5370, 5368 ] }, - { "id": "unconnected", "fg": [ 5376, 5376 ] } + { "id": "center", "fg": 5533 }, + { "id": "corner", "fg": [ 5535, 5537, 5536, 5534 ] }, + { "id": "t_connection", "fg": [ 5545, 5547, 5546, 5544 ] }, + { "id": "edge", "fg": [ 5539, 5538 ] }, + { "id": "end_piece", "fg": [ 5541, 5543, 5542, 5540 ] }, + { "id": "unconnected", "fg": [ 5548, 5548 ] } ] }, - { "id": [ "t_window_boarded", "t_window_boarded_noglass" ], "fg": 5377, "bg": 4516 }, - { "id": "t_window_frame", "fg": 5378 }, - { "id": [ "t_window_reinforced", "t_window_reinforced_noglass" ], "fg": 5379, "bg": 4516 }, - { "id": "t_pit_glass", "fg": 2751, "bg": 3885 }, - { "id": "t_pit_spiked", "fg": 2827, "bg": 3885 }, - { "id": "tr_firewood_source", "fg": 5380 }, - { "id": "tr_unfinished_construction", "fg": 5381 }, + { "id": [ "t_window_boarded", "t_window_boarded_noglass" ], "fg": 5549, "bg": 4675 }, + { "id": "t_window_frame", "fg": 5550 }, + { "id": [ "t_window_reinforced", "t_window_reinforced_noglass" ], "fg": 5551, "bg": 4675 }, + { "id": "t_pit_glass", "fg": 2833, "bg": 4044 }, + { "id": "t_pit_spiked", "fg": 2903, "bg": 4044 }, + { "id": "tr_firewood_source", "fg": 5552 }, + { "id": "tr_unfinished_construction", "fg": 5553 }, { "id": "vp_board_ne", - "fg": [ 5386, 5389, 5388, 5387 ], + "fg": [ 5558, 5561, 5560, 5559 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5386, 5389, 5388, 5387 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5558, 5561, 5560, 5559 ] } ] }, { "id": "vp_board_nw", - "fg": [ 5390, 5393, 5392, 5391 ], + "fg": [ 5562, 5565, 5564, 5563 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5390, 5393, 5392, 5391 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5562, 5565, 5564, 5563 ] } ] }, { "id": "vp_board_se", - "fg": [ 5394, 5396, 5390, 5395 ], + "fg": [ 5566, 5568, 5562, 5567 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5394, 5396, 5390, 5395 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5566, 5568, 5562, 5567 ] } ] }, { "id": "vp_board_sw", - "fg": [ 5397, 5399, 5386, 5398 ], + "fg": [ 5569, 5571, 5558, 5570 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5397, 5399, 5386, 5398 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5569, 5571, 5558, 5570 ] } ] }, { "id": "vp_board_vertical_left", - "fg": [ 5400, 5402, 5403, 5401 ], + "fg": [ 5572, 5574, 5575, 5573 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5400, 5402, 5403, 5401 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5572, 5574, 5575, 5573 ] } ] }, { "id": "vp_board_vertical_right", - "fg": [ 5403, 5401, 5400, 5402 ], + "fg": [ 5575, 5573, 5572, 5574 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5403, 5401, 5400, 5402 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5575, 5573, 5572, 5574 ] } ] }, { "id": [ "vp_board_horizontal", "vp_board_horizontal_2" ], - "fg": 5382, + "fg": 5554, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5382 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5554 } ] }, { "id": "vp_board_horizontal_front", - "fg": [ 5382, 5384, 5382, 5383 ], + "fg": [ 5554, 5556, 5554, 5555 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5382, 5384, 5382, 5383 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5554, 5556, 5554, 5555 ] } ] }, { "id": "vp_board_horizontal_rear", - "fg": [ 5385, 5383, 5382, 5384 ], + "fg": [ 5557, 5555, 5554, 5556 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5385, 5383, 5382, 5384 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5557, 5555, 5554, 5556 ] } ] }, { "id": [ "vp_board_vertical", "vp_board_vertical_2" ], - "fg": 5400, + "fg": 5572, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5400 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5572 } ] }, { "id": "vp_hdboard_ne", - "fg": [ 5464, 5467, 5466, 5465 ], + "fg": [ 5636, 5639, 5638, 5637 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5464, 5467, 5466, 5465 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5636, 5639, 5638, 5637 ] } ] }, { "id": "vp_hdboard_nw", - "fg": [ 5468, 5471, 5470, 5469 ], + "fg": [ 5640, 5643, 5642, 5641 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5468, 5471, 5470, 5469 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5640, 5643, 5642, 5641 ] } ] }, { "id": "vp_hdboard_se", - "fg": [ 5472, 5474, 5468, 5473 ], + "fg": [ 5644, 5646, 5640, 5645 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5472, 5474, 5468, 5473 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5644, 5646, 5640, 5645 ] } ] }, { "id": "vp_hdboard_sw", - "fg": [ 5475, 5477, 5464, 5476 ], + "fg": [ 5647, 5649, 5636, 5648 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5475, 5477, 5464, 5476 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5647, 5649, 5636, 5648 ] } ] }, { "id": "vp_hdboard_vertical_left", - "fg": [ 5478, 5480, 5479, 5480 ], + "fg": [ 5650, 5652, 5651, 5652 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5478, 5480, 5479, 5480 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5650, 5652, 5651, 5652 ] } ] }, { "id": "vp_hdboard_vertical_right", - "fg": [ 5479, 5480, 5478, 5480 ], + "fg": [ 5651, 5652, 5650, 5652 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5479, 5480, 5478, 5480 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5651, 5652, 5650, 5652 ] } ] }, { "id": [ "vp_hdboard_horizontal", "vp_hdboard_horizontal_2" ], - "fg": 5460, + "fg": 5632, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5460 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5632 } ] }, { "id": "vp_hdboard_horizontal_front", - "fg": [ 5460, 5462, 5460, 5461 ], + "fg": [ 5632, 5634, 5632, 5633 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5460, 5462, 5460, 5461 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5632, 5634, 5632, 5633 ] } ] }, { "id": "vp_hdboard_horizontal_rear", - "fg": [ 5463, 5461, 5460, 5462 ], + "fg": [ 5635, 5633, 5632, 5634 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5463, 5461, 5460, 5462 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5635, 5633, 5632, 5634 ] } ] }, { "id": [ "vp_hdboard_vertical", "vp_hdboard_vertical_2" ], - "fg": 5478, + "fg": 5650, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5478 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5650 } ] }, { "id": "vp_halfboard_ne", - "fg": [ 5425, 5428, 5427, 5426 ], + "fg": [ 5597, 5600, 5599, 5598 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5425, 5428, 5427, 5426 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5597, 5600, 5599, 5598 ] } ] }, { "id": "vp_halfboard_nw", - "fg": [ 5429, 5432, 5431, 5430 ], + "fg": [ 5601, 5604, 5603, 5602 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5429, 5432, 5431, 5430 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5601, 5604, 5603, 5602 ] } ] }, { "id": "vp_halfboard_se", - "fg": [ 5433, 5436, 5435, 5434 ], + "fg": [ 5605, 5608, 5607, 5606 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5433, 5436, 5435, 5434 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5605, 5608, 5607, 5606 ] } ] }, { "id": "vp_halfboard_sw", - "fg": [ 5437, 5440, 5439, 5438 ], + "fg": [ 5609, 5612, 5611, 5610 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5437, 5440, 5439, 5438 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5609, 5612, 5611, 5610 ] } ] }, { "id": "vp_halfboard_vertical_left", - "fg": [ 5448, 5450, 5451, 5449 ], + "fg": [ 5620, 5622, 5623, 5621 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5448, 5450, 5451, 5449 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5620, 5622, 5623, 5621 ] } ] }, { "id": "vp_halfboard_vertical_2_left", - "fg": [ 5442, 5444, 5445, 5443 ], + "fg": [ 5614, 5616, 5617, 5615 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5442, 5444, 5445, 5443 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5614, 5616, 5617, 5615 ] } ] }, { "id": "vp_halfboard_vertical_right", - "fg": [ 5451, 5449, 5448, 5450 ], + "fg": [ 5623, 5621, 5620, 5622 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5451, 5449, 5448, 5450 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5623, 5621, 5620, 5622 ] } ] }, { "id": "vp_halfboard_vertical_2_right", - "fg": [ 5445, 5447, 5442, 5446 ], + "fg": [ 5617, 5619, 5614, 5618 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5445, 5447, 5442, 5446 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5617, 5619, 5614, 5618 ] } ] }, { "id": "vp_halfboard_vertical_t_left", - "fg": [ 5453, 5455, 5454, 5452 ], + "fg": [ 5625, 5627, 5626, 5624 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5453, 5455, 5454, 5452 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5625, 5627, 5626, 5624 ] } ] }, { "id": "vp_halfboard_vertical_t_right", - "fg": [ 5457, 5459, 5458, 5456 ], + "fg": [ 5629, 5631, 5630, 5628 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5457, 5459, 5458, 5456 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5629, 5631, 5630, 5628 ] } ] }, { "id": [ "vp_halfboard_horizontal", "vp_halfboard_horizontal_2" ], - "fg": 5408, + "fg": 5580, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5408 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5580 } ] }, { "id": "vp_halfboard_horizontal_front", - "fg": [ 5417, 5420, 5419, 5418 ], + "fg": [ 5589, 5592, 5591, 5590 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5417, 5420, 5419, 5418 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5589, 5592, 5591, 5590 ] } ] }, { "id": "vp_halfboard_horizontal_2_front", - "fg": [ 5409, 5412, 5411, 5410 ], + "fg": [ 5581, 5584, 5583, 5582 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5409, 5412, 5411, 5410 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5581, 5584, 5583, 5582 ] } ] }, { "id": "vp_halfboard_horizontal_rear", - "fg": [ 5421, 5424, 5423, 5422 ], + "fg": [ 5593, 5596, 5595, 5594 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5421, 5424, 5423, 5422 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5593, 5596, 5595, 5594 ] } ] }, { "id": "vp_halfboard_horizontal_2_rear", - "fg": [ 5413, 5416, 5415, 5414 ], + "fg": [ 5585, 5588, 5587, 5586 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5413, 5416, 5415, 5414 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5585, 5588, 5587, 5586 ] } ] }, { "id": [ "vp_halfboard_vertical", "vp_halfboard_vertical_2" ], - "fg": 5441, + "fg": 5613, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5441 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5613 } ] }, { "id": "vp_halfboard_cover", - "fg": [ 5404, 5407, 5406, 5405 ], + "fg": [ 5576, 5579, 5578, 5577 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5404, 5407, 5406, 5405 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5576, 5579, 5578, 5577 ] } ] }, { "id": "vp_hdhalfboard_ne", - "fg": 5495, + "fg": 5667, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5495 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5667 } ] }, { "id": "vp_hdhalfboard_nw", - "fg": 5496, + "fg": 5668, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5496 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5668 } ] }, { "id": "vp_hdhalfboard_se", - "fg": 5497, + "fg": 5669, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5497 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5669 } ] }, { "id": "vp_hdhalfboard_sw", - "fg": 5498, + "fg": 5670, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5498 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5670 } ] }, { "id": "vp_hdhalfboard_vertical_left", - "fg": 5503, + "fg": 5675, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5503 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5675 } ] }, { "id": "vp_hdhalfboard_vertical_right", - "fg": 5504, + "fg": 5676, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5504 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5676 } ] }, { "id": "vp_hdhalfboard_horizontal", - "fg": 5490, + "fg": 5662, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5490 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5662 } ] }, { "id": "vp_hdhalfboard_horizontal_2", - "fg": 5485, + "fg": 5657, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5485 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5657 } ] }, { "id": "vp_hdhalfboard_horizontal_front", - "fg": [ 5490, 5493, 5492, 5491 ], + "fg": [ 5662, 5665, 5664, 5663 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5490, 5493, 5492, 5491 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5662, 5665, 5664, 5663 ] } ] }, { "id": "vp_hdhalfboard_horizontal_2_front", - "fg": [ 5485, 5488, 5487, 5486 ], + "fg": [ 5657, 5660, 5659, 5658 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5485, 5488, 5487, 5486 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5657, 5660, 5659, 5658 ] } ] }, { "id": "vp_hdhalfboard_horizontal_rear", - "fg": [ 5494, 5491, 5490, 5493 ], + "fg": [ 5666, 5663, 5662, 5665 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5494, 5491, 5490, 5493 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5666, 5663, 5662, 5665 ] } ] }, { "id": "vp_hdhalfboard_horizontal_2_rear", - "fg": [ 5489, 5486, 5485, 5488 ], + "fg": [ 5661, 5658, 5657, 5660 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5489, 5486, 5485, 5488 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5661, 5658, 5657, 5660 ] } ] }, { "id": "vp_hdhalfboard_vertical", - "fg": 5499, + "fg": 5671, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5499 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5671 } ] }, { "id": "vp_hdhalfboard_vertical_2", - "fg": 5500, + "fg": 5672, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5500 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5672 } ] }, { "id": "vp_hdhalfboard_vertical_2_left", - "fg": 5501, + "fg": 5673, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5501 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5673 } ] }, { "id": "vp_hdhalfboard_vertical_2_right", - "fg": 5502, + "fg": 5674, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5502 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5674 } ] }, { "id": "vp_hdhalfboard_cover", - "fg": [ 5481, 5484, 5483, 5482 ], + "fg": [ 5653, 5656, 5655, 5654 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5481, 5484, 5483, 5482 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5653, 5656, 5655, 5654 ] } ] }, { "id": "vp_xlhalfboard_ne", - "fg": [ 5514, 5517, 5516, 5515 ], + "fg": [ 5686, 5689, 5688, 5687 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5514, 5517, 5516, 5515 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5686, 5689, 5688, 5687 ] } ] }, { "id": "vp_xlhalfboard_nw", - "fg": [ 5518, 5521, 5520, 5519 ], + "fg": [ 5690, 5693, 5692, 5691 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5518, 5521, 5520, 5519 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5690, 5693, 5692, 5691 ] } ] }, { "id": "vp_xlhalfboard_se", - "fg": 5522, + "fg": 5694, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5522 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5694 } ] }, { "id": "vp_xlhalfboard_sw", - "fg": 5523, + "fg": 5695, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5523 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5695 } ] }, { "id": "vp_xlhalfboard_vertical_left", - "fg": 5525, + "fg": 5697, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5525 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5697 } ] }, { "id": "vp_xlhalfboard_vertical_right", - "fg": 5526, + "fg": 5698, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5526 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5698 } ] }, { "id": [ "vp_xlhalfboard_horizontal", "vp_xlhalfboard_horizontal_2" ], - "fg": 5509, + "fg": 5681, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5509 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5681 } ] }, { "id": "vp_xlhalfboard_horizontal_front", - "fg": [ 5509, 5512, 5511, 5510 ], + "fg": [ 5681, 5684, 5683, 5682 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5509, 5512, 5511, 5510 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5681, 5684, 5683, 5682 ] } ] }, { "id": "vp_xlhalfboard_horizontal_rear", - "fg": 5513, + "fg": 5685, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5513 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5685 } ] }, { "id": [ "vp_xlhalfboard_vertical", "vp_xlhalfboard_vertical_2" ], - "fg": 5524, + "fg": 5696, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5524 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5696 } ] }, { "id": "vp_xlhalfboard_cover", - "fg": [ 5505, 5508, 5507, 5506 ], + "fg": [ 5677, 5680, 5679, 5678 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5505, 5508, 5507, 5506 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5677, 5680, 5679, 5678 ] } ] }, { "id": "vp_stowboard_ne", - "fg": [ 5555, 5558, 5557, 5556 ], + "fg": [ 5727, 5730, 5729, 5728 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5555, 5558, 5557, 5556 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5727, 5730, 5729, 5728 ] } ] }, { "id": "vp_stowboard_nw", - "fg": [ 5559, 5562, 5561, 5560 ], + "fg": [ 5731, 5734, 5733, 5732 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5559, 5562, 5561, 5560 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5731, 5734, 5733, 5732 ] } ] }, { "id": "vp_stowboard_se", - "fg": [ 5563, 5565, 5559, 5564 ], + "fg": [ 5735, 5737, 5731, 5736 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5563, 5565, 5559, 5564 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5735, 5737, 5731, 5736 ] } ] }, { "id": "vp_stowboard_sw", - "fg": [ 5566, 5568, 5555, 5567 ], + "fg": [ 5738, 5740, 5727, 5739 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5566, 5568, 5555, 5567 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5738, 5740, 5727, 5739 ] } ] }, { "id": "vp_stowboard_vertical_left", - "fg": [ 5569, 5571, 5572, 5570 ], + "fg": [ 5741, 5743, 5744, 5742 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5569, 5571, 5572, 5570 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5741, 5743, 5744, 5742 ] } ] }, { "id": "vp_stowboard_vertical_right", - "fg": [ 5572, 5570, 5569, 5571 ], + "fg": [ 5744, 5742, 5741, 5743 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5572, 5570, 5569, 5571 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5744, 5742, 5741, 5743 ] } ] }, { "id": [ "vp_stowboard_horizontal", "vp_stowboard_horizontal_2" ], - "fg": 5550, + "fg": 5722, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5550 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5722 } ] }, { "id": "vp_stowboard_horizontal_front", - "fg": [ 5550, 5553, 5552, 5551 ], + "fg": [ 5722, 5725, 5724, 5723 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5550, 5553, 5552, 5551 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5722, 5725, 5724, 5723 ] } ] }, { "id": "vp_stowboard_horizontal_rear", - "fg": [ 5554, 5551, 5550, 5553 ], + "fg": [ 5726, 5723, 5722, 5725 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5554, 5551, 5550, 5553 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5726, 5723, 5722, 5725 ] } ] }, { "id": "vp_stowboard_vertical", - "fg": 5570, + "fg": 5742, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5570 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5742 } ] }, { "id": "vp_hdstowboard_ne", - "fg": [ 5532, 5535, 5534, 5533 ], + "fg": [ 5704, 5707, 5706, 5705 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5532, 5535, 5534, 5533 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5704, 5707, 5706, 5705 ] } ] }, { "id": "vp_hdstowboard_nw", - "fg": [ 5536, 5539, 5538, 5537 ], + "fg": [ 5708, 5711, 5710, 5709 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5536, 5539, 5538, 5537 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5708, 5711, 5710, 5709 ] } ] }, { "id": "vp_hdstowboard_se", - "fg": [ 5540, 5542, 5536, 5541 ], + "fg": [ 5712, 5714, 5708, 5713 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5540, 5542, 5536, 5541 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5712, 5714, 5708, 5713 ] } ] }, { "id": "vp_hdstowboard_sw", - "fg": [ 5543, 5545, 5532, 5544 ], + "fg": [ 5715, 5717, 5704, 5716 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5543, 5545, 5532, 5544 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5715, 5717, 5704, 5716 ] } ] }, { "id": "vp_hdstowboard_vertical_left", - "fg": [ 5546, 5548, 5549, 5547 ], + "fg": [ 5718, 5720, 5721, 5719 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5546, 5548, 5549, 5547 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5718, 5720, 5721, 5719 ] } ] }, { "id": "vp_hdstowboard_vertical_right", - "fg": [ 5549, 5547, 5546, 5548 ], + "fg": [ 5721, 5719, 5718, 5720 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5549, 5547, 5546, 5548 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5721, 5719, 5718, 5720 ] } ] }, { "id": [ "vp_hdstowboard_horizontal", "vp_hdstowboard_horizontal_2" ], - "fg": 5527, + "fg": 5699, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5527 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5699 } ] }, { "id": "vp_hdstowboard_horizontal_front", - "fg": [ 5527, 5530, 5529, 5528 ], + "fg": [ 5699, 5702, 5701, 5700 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5527, 5530, 5529, 5528 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5699, 5702, 5701, 5700 ] } ] }, { "id": "vp_hdstowboard_horizontal_rear", - "fg": [ 5531, 5528, 5527, 5530 ], + "fg": [ 5703, 5700, 5699, 5702 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5531, 5528, 5527, 5530 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5703, 5700, 5699, 5702 ] } ] }, { "id": "vp_hdstowboard_vertical", - "fg": 5547, + "fg": 5719, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5547 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5719 } ] }, { "id": "vp_woodboard_ne", - "fg": [ 5577, 5578, 5583, 5584 ], + "fg": [ 5749, 5750, 5755, 5756 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5577, 5578, 5583, 5584 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5749, 5750, 5755, 5756 ] } ] }, { "id": "vp_woodboard_nw", - "fg": [ 5579, 5580, 5581, 5582 ], + "fg": [ 5751, 5752, 5753, 5754 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5579, 5580, 5581, 5582 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5751, 5752, 5753, 5754 ] } ] }, { "id": "vp_woodboard_se", - "fg": [ 5581, 5582, 5579, 5580 ], + "fg": [ 5753, 5754, 5751, 5752 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5581, 5582, 5579, 5580 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5753, 5754, 5751, 5752 ] } ] }, { "id": "vp_woodboard_sw", - "fg": [ 5583, 5584, 5577, 5578 ], + "fg": [ 5755, 5756, 5749, 5750 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5583, 5584, 5577, 5578 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5755, 5756, 5749, 5750 ] } ] }, { "id": "vp_woodboard_vertical_left", - "fg": [ 5585, 5575, 5586, 5573 ], + "fg": [ 5757, 5747, 5758, 5745 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5585, 5575, 5586, 5573 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5757, 5747, 5758, 5745 ] } ] }, { "id": "vp_woodboard_vertical_right", - "fg": [ 5586, 5573, 5585, 5575 ], + "fg": [ 5758, 5745, 5757, 5747 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5586, 5573, 5585, 5575 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5758, 5745, 5757, 5747 ] } ] }, { "id": [ "vp_woodboard_horizontal", "vp_woodboard_vertical", "vp_woodboard_horizontal_front" ], - "fg": [ 5573, 5574, 5575, 5576 ], + "fg": [ 5745, 5746, 5747, 5748 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5573, 5574, 5575, 5576 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5745, 5746, 5747, 5748 ] } ] }, { "id": "vp_woodboard_horizontal_rear", - "fg": [ 5575, 5576, 5573, 5574 ], + "fg": [ 5747, 5748, 5745, 5746 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5575, 5576, 5573, 5574 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5747, 5748, 5745, 5746 ] } ] }, { "id": [ "vp_woodhalfboard_ne" ], - "fg": 5591, + "fg": 5763, "rotates": true, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5591 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5763 } ] }, { "id": "vp_woodhalfboard_nw", - "fg": 5590, + "fg": 5762, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5590 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5762 } ] }, { "id": "vp_woodhalfboard_se", - "fg": 5595, + "fg": 5767, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5595 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5767 } ] }, { "id": "vp_woodhalfboard_sw", - "fg": 5594, + "fg": 5766, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5594 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5766 } ] }, { "id": [ "vp_woodhalfboard_vertical_left", "vp_woodhalfboard_vertical_2_left", "vp_woodhalfboard_vertical_T_left" ], - "fg": 5592, + "fg": 5764, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5592 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5764 } ] }, { "id": [ "vp_woodhalfboard_vertical_right", "vp_woodhalfboard_vertical_2_right", "vp_woodhalfboard_vertical_T_right" ], - "fg": 5596, + "fg": 5768, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5596 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5768 } ] }, { "id": [ @@ -8548,934 +8741,934 @@ "vp_woodhalfboard_horizontal_front", "vp_woodhalfboard_horizontal_2_front" ], - "fg": 5589, + "fg": 5761, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5589 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5761 } ] }, { "id": [ "vp_woodhalfboard_horizontal_rear", "vp_woodhalfboard_horizontal_2_rear" ], - "fg": 5593, + "fg": 5765, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5593 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5765 } ] }, { "id": [ "vp_woodhalfboard", "vp_woodhalfboard_cross", "vp_woodhalfboard_vertical", "vp_woodhalfboard_vertical_2" ], - "fg": 5588, + "fg": 5760, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5588 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5760 } ] }, { "id": [ "vp_woodhalfboard_cover" ], - "fg": 5587, + "fg": 5759, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5587 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5759 } ] }, { "id": [ "vp_basketsm", "vp_basketsm_external" ], - "fg": [ 5608, 5607 ], + "fg": [ 5780, 5779 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5608, 5607 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5780, 5779 ] } ] }, { "id": "vp_basketsm_bike_rear", - "fg": [ 5604, 5606, 5605, 5603 ], + "fg": [ 5776, 5778, 5777, 5775 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5604, 5606, 5605, 5603 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5776, 5778, 5777, 5775 ] } ] }, { "id": [ "vp_basketlg", "vp_basketlg_external" ], - "fg": [ 5602, 5601 ], + "fg": [ 5774, 5773 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5602, 5601 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5774, 5773 ] } ] }, { "id": "vp_basketlg_cart", - "fg": [ 5598, 5600, 5599, 5597 ], + "fg": [ 5770, 5772, 5771, 5769 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5598, 5600, 5599, 5597 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5770, 5772, 5771, 5769 ] } ] }, { "id": "vp_box", - "fg": [ 5609, 5610 ], + "fg": [ 5781, 5782 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5609, 5610 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5781, 5782 ] } ] }, { "id": "vp_wood box", - "fg": [ 5619, 5618 ], + "fg": [ 5791, 5790 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5619, 5618 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5791, 5790 ] } ] }, { "id": "vp_box_wheelbarrow", - "fg": [ 5612, 5614, 5613, 5611 ], + "fg": [ 5784, 5786, 5785, 5783 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5612, 5614, 5613, 5611 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 5784, 5786, 5785, 5783 ] } ] }, { "id": "vp_trunk", - "fg": 5616, + "fg": 5788, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5616 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5788 } ] }, { "id": "vp_trunk_rear_edge", - "fg": 5617, + "fg": 5789, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5617 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5789 } ] }, { "id": [ "vp_cargo_space", "animal_compartment" ], - "fg": 5615, + "fg": 5787, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5615 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5787 } ] }, { "id": "vp_door_internal", - "fg": [ 5644, 5648, 5646, 5642 ], + "fg": [ 5816, 5820, 5818, 5814 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5645, 5649, 5647, 5643 ] }, { "id": "broken", "fg": 5623, "bg": [ 5645, 5649, 5647, 5643 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5817, 5821, 5819, 5815 ] }, { "id": "broken", "fg": 5795, "bg": [ 5817, 5821, 5819, 5815 ] } ] }, { "id": [ "vp_door", "vp_door_sliding" ], - "fg": 5640, + "fg": 5812, "multitile": true, - "additional_tiles": [ { "id": "open", "fg": 5641 }, { "id": "broken", "fg": 5623, "bg": 5640 } ] + "additional_tiles": [ { "id": "open", "fg": 5813 }, { "id": "broken", "fg": 5795, "bg": 5812 } ] }, { "id": "vp_door_front", - "fg": [ 5632, 5639, 5638, 5637 ], + "fg": [ 5804, 5811, 5810, 5809 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5634, 5636, 5635, 5633 ] }, { "id": "broken", "fg": 5623, "bg": [ 5634, 5636, 5635, 5633 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5806, 5808, 5807, 5805 ] }, { "id": "broken", "fg": 5795, "bg": [ 5806, 5808, 5807, 5805 ] } ] }, { "id": "vp_door_rear", - "fg": [ 5686, 5693, 5692, 5691 ], + "fg": [ 5858, 5865, 5864, 5863 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5688, 5690, 5689, 5687 ] }, { "id": "broken", "fg": 5623, "bg": [ 5688, 5690, 5689, 5687 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5860, 5862, 5861, 5859 ] }, { "id": "broken", "fg": 5795, "bg": [ 5860, 5862, 5861, 5859 ] } ] }, { "id": [ "vp_door_left", "vp_door_vertical_left" ], - "fg": [ 5624, 5627, 5626, 5625 ], + "fg": [ 5796, 5799, 5798, 5797 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5651, 5653, 5652, 5650 ] }, { "id": "broken", "fg": 5623, "bg": [ 5651, 5653, 5652, 5650 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5823, 5825, 5824, 5822 ] }, { "id": "broken", "fg": 5795, "bg": [ 5823, 5825, 5824, 5822 ] } ] }, { "id": [ "vp_door_nw", "vp_door_front_left" ], - "fg": [ 5658, 5661, 5660, 5659 ], + "fg": [ 5830, 5833, 5832, 5831 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5651, 5653, 5652, 5650 ] }, { "id": "broken", "fg": 5623, "bg": [ 5651, 5653, 5652, 5650 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5823, 5825, 5824, 5822 ] }, { "id": "broken", "fg": 5795, "bg": [ 5823, 5825, 5824, 5822 ] } ] }, { "id": [ "vp_door_sw", "vp_door_rear_left" ], - "fg": [ 5707, 5710, 5709, 5708 ], + "fg": [ 5879, 5882, 5881, 5880 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5651, 5653, 5652, 5650 ] }, { "id": "broken", "fg": 5623, "bg": [ 5651, 5653, 5652, 5650 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5823, 5825, 5824, 5822 ] }, { "id": "broken", "fg": 5795, "bg": [ 5823, 5825, 5824, 5822 ] } ] }, { "id": [ "vp_door_right", "vp_door_vertical_right" ], - "fg": [ 5628, 5631, 5630, 5629 ], + "fg": [ 5800, 5803, 5802, 5801 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5695, 5697, 5696, 5694 ] }, { "id": "broken", "fg": 5623, "bg": [ 5695, 5697, 5696, 5694 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5867, 5869, 5868, 5866 ] }, { "id": "broken", "fg": 5795, "bg": [ 5867, 5869, 5868, 5866 ] } ] }, { "id": [ "vp_door_ne", "vp_door_front_right" ], - "fg": [ 5654, 5657, 5656, 5655 ], + "fg": [ 5826, 5829, 5828, 5827 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5695, 5697, 5696, 5694 ] }, { "id": "broken", "fg": 5623, "bg": [ 5695, 5697, 5696, 5694 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5867, 5869, 5868, 5866 ] }, { "id": "broken", "fg": 5795, "bg": [ 5867, 5869, 5868, 5866 ] } ] }, { "id": [ "vp_door_se", "vp_door_rear_right" ], - "fg": [ 5698, 5701, 5700, 5699 ], + "fg": [ 5870, 5873, 5872, 5871 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5695, 5697, 5696, 5694 ] }, { "id": "broken", "fg": 5623, "bg": [ 5695, 5697, 5696, 5694 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5867, 5869, 5868, 5866 ] }, { "id": "broken", "fg": 5795, "bg": [ 5867, 5869, 5868, 5866 ] } ] }, { "id": "vp_door_shutter", - "fg": [ 5702, 5706, 5705, 5704 ], + "fg": [ 5874, 5878, 5877, 5876 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": 5703 }, { "id": "broken", "fg": 5623, "bg": 5703 } ] + "additional_tiles": [ { "id": "open", "fg": 5875 }, { "id": "broken", "fg": 5795, "bg": 5875 } ] }, { "id": "vp_door_trunk", - "fg": [ 5711, 5718, 5717, 5716 ], + "fg": [ 5883, 5890, 5889, 5888 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5712, 5715, 5714, 5713 ] }, { "id": "broken", "fg": 5623, "bg": [ 5712, 5715, 5714, 5713 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5884, 5887, 5886, 5885 ] }, { "id": "broken", "fg": 5795, "bg": [ 5884, 5887, 5886, 5885 ] } ] }, { "id": [ "vp_hddoor_trunk", "vp_hatch", "vp_hatch_opaque", "vp_hdhatch", "vp_hdhatch_opaque" ], - "fg": [ 5767, 5774, 5773, 5772 ], + "fg": [ 5939, 5946, 5945, 5944 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5768, 5771, 5770, 5769 ] }, { "id": "broken", "fg": 5623, "bg": [ 5768, 5771, 5770, 5769 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5940, 5943, 5942, 5941 ] }, { "id": "broken", "fg": 5795, "bg": [ 5940, 5943, 5942, 5941 ] } ] }, { "id": "vp_hddoor_left", - "fg": [ 5720, 5722, 5721, 5719 ], + "fg": [ 5892, 5894, 5893, 5891 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5732, 5734, 5733, 5731 ] }, { "id": "broken", "fg": 5623, "bg": [ 5732, 5734, 5733, 5731 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5904, 5906, 5905, 5903 ] }, { "id": "broken", "fg": 5795, "bg": [ 5904, 5906, 5905, 5903 ] } ] }, { "id": "vp_hddoor_right", - "fg": [ 5724, 5726, 5725, 5723 ], + "fg": [ 5896, 5898, 5897, 5895 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5764, 5766, 5765, 5763 ] }, { "id": "broken", "fg": 5623, "bg": [ 5764, 5766, 5765, 5763 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5936, 5938, 5937, 5935 ] }, { "id": "broken", "fg": 5795, "bg": [ 5936, 5938, 5937, 5935 ] } ] }, { "id": [ "vp_hddoor", "vp_hddoor_front" ], - "fg": [ 5728, 5730, 5729, 5727 ], + "fg": [ 5900, 5902, 5901, 5899 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5634, 5636, 5635, 5633 ] }, { "id": "broken", "fg": 5623, "bg": [ 5634, 5636, 5635, 5633 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5806, 5808, 5807, 5805 ] }, { "id": "broken", "fg": 5795, "bg": [ 5806, 5808, 5807, 5805 ] } ] }, { "id": "vp_hddoor_rear", - "fg": [ 5760, 5762, 5761, 5759 ], + "fg": [ 5932, 5934, 5933, 5931 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5688, 5690, 5689, 5687 ] }, { "id": "broken", "fg": 5623, "bg": [ 5688, 5690, 5689, 5687 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5860, 5862, 5861, 5859 ] }, { "id": "broken", "fg": 5795, "bg": [ 5860, 5862, 5861, 5859 ] } ] }, { "id": "vp_door_opaque_left", - "fg": [ 5671, 5673, 5672, 5670 ], + "fg": [ 5843, 5845, 5844, 5842 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5667, 5669, 5668, 5666 ] }, { "id": "broken", "fg": 5623, "bg": [ 5667, 5669, 5668, 5666 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5839, 5841, 5840, 5838 ] }, { "id": "broken", "fg": 5795, "bg": [ 5839, 5841, 5840, 5838 ] } ] }, { "id": "vp_door_opaque_right", - "fg": [ 5683, 5685, 5684, 5682 ], + "fg": [ 5855, 5857, 5856, 5854 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5679, 5681, 5680, 5678 ] }, { "id": "broken", "fg": 5623, "bg": [ 5679, 5681, 5680, 5678 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5851, 5853, 5852, 5850 ] }, { "id": "broken", "fg": 5795, "bg": [ 5851, 5853, 5852, 5850 ] } ] }, { "id": [ "vp_door_opaque", "vp_door_opaque_front" ], - "fg": [ 5663, 5665, 5664, 5662 ], + "fg": [ 5835, 5837, 5836, 5834 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5634, 5636, 5635, 5633 ] }, { "id": "broken", "fg": 5623, "bg": [ 5634, 5636, 5635, 5633 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5806, 5808, 5807, 5805 ] }, { "id": "broken", "fg": 5795, "bg": [ 5806, 5808, 5807, 5805 ] } ] }, { "id": "vp_door_opaque_rear", - "fg": [ 5675, 5677, 5676, 5674 ], + "fg": [ 5847, 5849, 5848, 5846 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5688, 5690, 5689, 5687 ] }, { "id": "broken", "fg": 5623, "bg": [ 5688, 5690, 5689, 5687 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5860, 5862, 5861, 5859 ] }, { "id": "broken", "fg": 5795, "bg": [ 5860, 5862, 5861, 5859 ] } ] }, { "id": "vp_hddoor_opaque_left", - "fg": [ 5744, 5746, 5745, 5743 ], + "fg": [ 5916, 5918, 5917, 5915 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5740, 5742, 5741, 5739 ] }, { "id": "broken", "fg": 5623, "bg": [ 5740, 5742, 5741, 5739 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5912, 5914, 5913, 5911 ] }, { "id": "broken", "fg": 5795, "bg": [ 5912, 5914, 5913, 5911 ] } ] }, { "id": "vp_hddoor_opaque_right", - "fg": [ 5756, 5758, 5757, 5755 ], + "fg": [ 5928, 5930, 5929, 5927 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5752, 5754, 5753, 5751 ] }, { "id": "broken", "fg": 5623, "bg": [ 5752, 5754, 5753, 5751 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5924, 5926, 5925, 5923 ] }, { "id": "broken", "fg": 5795, "bg": [ 5924, 5926, 5925, 5923 ] } ] }, { "id": [ "vp_hddoor_opaque", "vp_hddoor_opaque_front" ], - "fg": [ 5736, 5738, 5737, 5735 ], + "fg": [ 5908, 5910, 5909, 5907 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5634, 5636, 5635, 5633 ] }, { "id": "broken", "fg": 5623, "bg": [ 5634, 5636, 5635, 5633 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5806, 5808, 5807, 5805 ] }, { "id": "broken", "fg": 5795, "bg": [ 5806, 5808, 5807, 5805 ] } ] }, { "id": "vp_hddoor_opaque_rear", - "fg": [ 5748, 5750, 5749, 5747 ], + "fg": [ 5920, 5922, 5921, 5919 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5688, 5690, 5689, 5687 ] }, { "id": "broken", "fg": 5623, "bg": [ 5688, 5690, 5689, 5687 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5860, 5862, 5861, 5859 ] }, { "id": "broken", "fg": 5795, "bg": [ 5860, 5862, 5861, 5859 ] } ] }, { "id": "vp_frame_cover", - "fg": 5775, + "fg": 5947, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5775 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5947 } ] }, { "id": "vp_frame_cross", - "fg": 5776, + "fg": 5948, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5776 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5948 } ] }, { "id": "vp_frame_cross_unconnected", - "fg": 5777, + "fg": 5949, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5777 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5949 } ] }, { "id": "vp_frame_ne", - "fg": 5790, + "fg": 5962, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5790 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5962 } ] }, { "id": "vp_frame_nw", - "fg": 5791, + "fg": 5963, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5791 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5963 } ] }, { "id": "vp_frame_se", - "fg": 5792, + "fg": 5964, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5792 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5964 } ] }, { "id": "vp_frame_sw", - "fg": 5793, + "fg": 5965, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5793 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5965 } ] }, { "id": "vp_frame_vertical_unconnected", - "fg": 5801, + "fg": 5973, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5801 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5973 } ] }, { "id": "vp_frame_vertical_2_unconnected", - "fg": 5798, + "fg": 5970, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5798 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5970 } ] }, { "id": "vp_frame_vertical_left", - "fg": 5799, + "fg": 5971, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5799 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5971 } ] }, { "id": "vp_frame_vertical_2_left", - "fg": 5796, + "fg": 5968, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5796 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5968 } ] }, { "id": "vp_frame_vertical_right", - "fg": 5800, + "fg": 5972, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5800 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5972 } ] }, { "id": "vp_frame_vertical_2_right", - "fg": 5797, + "fg": 5969, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5797 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5969 } ] }, { "id": "vp_frame_horizontal", - "fg": 5778, + "fg": 5950, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5778 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5950 } ] }, { "id": "vp_frame_horizontal_2", - "fg": 5779, + "fg": 5951, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5779 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5951 } ] }, { "id": "vp_frame_horizontal_unconnected", - "fg": 5789, + "fg": 5961, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5789 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5961 } ] }, { "id": "vp_frame_horizontal_2_unconnected", - "fg": 5782, + "fg": 5954, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5782 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5954 } ] }, { "id": "vp_frame_horizontal_front", - "fg": 5785, + "fg": 5957, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5785 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5957 } ] }, { "id": "vp_frame_horizontal_2_front", - "fg": 5780, + "fg": 5952, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5780 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5952 } ] }, { "id": "vp_frame_horizontal_rear", - "fg": 5787, + "fg": 5959, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5787 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5959 } ] }, { "id": "vp_frame_horizontal_2_rear", - "fg": 5781, + "fg": 5953, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5781 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5953 } ] }, { "id": "vp_frame_horizontal_left", - "fg": 5786, + "fg": 5958, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5786 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5958 } ] }, { "id": "vp_frame_horizontal_2_left", - "fg": 5783, + "fg": 5955, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5783 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5955 } ] }, { "id": "vp_frame_horizontal_right", - "fg": 5788, + "fg": 5960, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5788 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5960 } ] }, { "id": "vp_frame_horizontal_2_right", - "fg": 5784, + "fg": 5956, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5784 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5956 } ] }, { "id": "vp_frame_vertical", - "fg": 5794, + "fg": 5966, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5794 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5966 } ] }, { "id": "vp_frame_vertical_2", - "fg": 5795, + "fg": 5967, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5795 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5967 } ] }, { "id": "vp_hdframe_cover", - "fg": 5802, + "fg": 5974, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5802 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5974 } ] }, { "id": "vp_hdframe_cross", - "fg": 5803, + "fg": 5975, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5803 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5975 } ] }, { "id": "vp_hdframe_cross_unconnected", - "fg": 5804, + "fg": 5976, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5804 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5976 } ] }, { "id": "vp_hdframe_ne", - "fg": 5817, + "fg": 5989, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5817 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5989 } ] }, { "id": "vp_hdframe_nw", - "fg": 5818, + "fg": 5990, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5818 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5990 } ] }, { "id": "vp_hdframe_se", - "fg": 5819, + "fg": 5991, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5819 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5991 } ] }, { "id": "vp_hdframe_sw", - "fg": 5820, + "fg": 5992, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5820 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5992 } ] }, { "id": "vp_hdframe_vertical_unconnected", - "fg": 5828, + "fg": 6000, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5828 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6000 } ] }, { "id": "vp_hdframe_vertical_2_unconnected", - "fg": 5825, + "fg": 5997, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5825 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5997 } ] }, { "id": "vp_hdframe_vertical_left", - "fg": 5826, + "fg": 5998, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5826 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5998 } ] }, { "id": "vp_hdframe_vertical_2_left", - "fg": 5823, + "fg": 5995, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5823 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5995 } ] }, { "id": "vp_hdframe_vertical_right", - "fg": 5827, + "fg": 5999, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5827 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5999 } ] }, { "id": "vp_hdframe_vertical_2_right", - "fg": 5824, + "fg": 5996, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5824 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5996 } ] }, { "id": "vp_hdframe_horizontal", - "fg": 5805, + "fg": 5977, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5805 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5977 } ] }, { "id": "vp_hdframe_horizontal_2", - "fg": 5806, + "fg": 5978, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5806 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5978 } ] }, { "id": "vp_hdframe_horizontal_unconnected", - "fg": 5816, + "fg": 5988, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5816 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5988 } ] }, { "id": "vp_hdframe_horizontal_2_unconnected", - "fg": 5809, + "fg": 5981, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5809 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5981 } ] }, { "id": "vp_hdframe_horizontal_front", - "fg": 5812, + "fg": 5984, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5812 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5984 } ] }, { "id": "vp_hdframe_horizontal_2_front", - "fg": 5807, + "fg": 5979, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5807 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5979 } ] }, { "id": "vp_hdframe_horizontal_rear", - "fg": 5814, + "fg": 5986, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5814 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5986 } ] }, { "id": "vp_hdframe_horizontal_2_rear", - "fg": 5808, + "fg": 5980, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5808 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5980 } ] }, { "id": "vp_hdframe_horizontal_left", - "fg": 5813, + "fg": 5985, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5813 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5985 } ] }, { "id": "vp_hdframe_horizontal_2_left", - "fg": 5810, + "fg": 5982, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5810 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5982 } ] }, { "id": "vp_hdframe_horizontal_right", - "fg": 5815, + "fg": 5987, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5815 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5987 } ] }, { "id": "vp_hdframe_horizontal_2_right", - "fg": 5811, + "fg": 5983, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5811 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5983 } ] }, { "id": "vp_hdframe_vertical", - "fg": 5821, + "fg": 5993, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5821 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5993 } ] }, { "id": "vp_hdframe_vertical_2", - "fg": 5822, + "fg": 5994, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5822 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 5994 } ] }, { "id": "vp_xlframe_cover", - "fg": 5829, + "fg": 6001, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5829 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6001 } ] }, { "id": "vp_xlframe_cross", - "fg": 5830, + "fg": 6002, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5830 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6002 } ] }, { "id": "vp_xlframe_cross_unconnected", - "fg": 5831, + "fg": 6003, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5831 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6003 } ] }, { "id": "vp_xlframe_ne", - "fg": 5844, + "fg": 6016, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5844 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6016 } ] }, { "id": "vp_xlframe_nw", - "fg": 5845, + "fg": 6017, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5845 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6017 } ] }, { "id": "vp_xlframe_se", - "fg": 5846, + "fg": 6018, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5846 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6018 } ] }, { "id": "vp_xlframe_sw", - "fg": 5847, + "fg": 6019, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5847 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6019 } ] }, { "id": "vp_xlframe_vertical_unconnected", - "fg": 5855, + "fg": 6027, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5855 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6027 } ] }, { "id": "vp_xlframe_vertical_2_unconnected", - "fg": 5852, + "fg": 6024, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5852 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6024 } ] }, { "id": "vp_xlframe_vertical_left", - "fg": 5853, + "fg": 6025, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5853 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6025 } ] }, { "id": "vp_xlframe_vertical_2_left", - "fg": 5850, + "fg": 6022, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5850 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6022 } ] }, { "id": "vp_xlframe_vertical_right", - "fg": 5854, + "fg": 6026, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5854 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6026 } ] }, { "id": "vp_xlframe_vertical_2_right", - "fg": 5851, + "fg": 6023, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5851 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6023 } ] }, { "id": "vp_xlframe_horizontal", - "fg": 5832, + "fg": 6004, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5832 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6004 } ] }, { "id": "vp_xlframe_horizontal_2", - "fg": 5833, + "fg": 6005, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5833 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6005 } ] }, { "id": "vp_xlframe_horizontal_unconnected", - "fg": 5843, + "fg": 6015, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5843 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6015 } ] }, { "id": "vp_xlframe_horizontal_2_unconnected", - "fg": 5836, + "fg": 6008, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5836 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6008 } ] }, { "id": "vp_xlframe_horizontal_front", - "fg": 5839, + "fg": 6011, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5839 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6011 } ] }, { "id": "vp_xlframe_horizontal_2_front", - "fg": 5834, + "fg": 6006, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5834 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6006 } ] }, { "id": "vp_xlframe_horizontal_rear", - "fg": 5841, + "fg": 6013, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5841 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6013 } ] }, { "id": "vp_xlframe_horizontal_2_rear", - "fg": 5835, + "fg": 6007, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5835 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6007 } ] }, { "id": "vp_xlframe_horizontal_left", - "fg": 5840, + "fg": 6012, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5840 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6012 } ] }, { "id": "vp_xlframe_horizontal_2_left", - "fg": 5837, + "fg": 6009, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5837 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6009 } ] }, { "id": "vp_xlframe_horizontal_right", - "fg": 5842, + "fg": 6014, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5842 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6014 } ] }, { "id": "vp_xlframe_horizontal_2_right", - "fg": 5838, + "fg": 6010, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5838 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6010 } ] }, { "id": "vp_xlframe_vertical", - "fg": 5848, + "fg": 6020, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5848 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6020 } ] }, { "id": "vp_xlframe_vertical_2", - "fg": 5849, + "fg": 6021, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5849 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6021 } ] }, { "id": [ "vp_headlight", "vp_headlight_reinforced", "vp_wide_headlight_reinforced", "vp_wide_headlight" ], - "fg": 5857 + "fg": 6029 }, { "id": [ "vp_headlight_ne", "vp_headlight_reinforced_ne", "vp_wide_headlight_reinforced_ne", "vp_wide_headlight_ne" ], - "fg": 5856 + "fg": 6028 }, { "id": [ "vp_headlight_nw", "vp_headlight_reinforced_nw", "vp_wide_headlight_reinforced_nw", "vp_wide_headlight_nw" ], - "fg": 5857 + "fg": 6029 }, { "id": "vp_light_blue", - "fg": [ 5872, 5873 ], + "fg": [ 6044, 6045 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5872, 5873 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6044, 6045 ] } ] }, { "id": "vp_light_red", - "fg": [ 5874, 5875 ], + "fg": [ 6046, 6047 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5874, 5875 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6046, 6047 ] } ] }, { "id": [ "vp_floodlight", "vp_directed_floodlight" ], - "fg": [ 5866, 5868, 5867, 5865 ], + "fg": [ 6038, 6040, 6039, 6037 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5866, 5868, 5867, 5865 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6038, 6040, 6039, 6037 ] } ] }, { "id": [ "vp_veh_table", "vp_veh_table_wood" ], - "fg": [ 5858, 5858 ], - "bg": [ 5885, 5884 ], + "fg": [ 6030, 6030 ], + "bg": [ 6057, 6056 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5859, "bg": [ 5885, 5884 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 6031, "bg": [ 6057, 6056 ] } ] }, { "id": "vp_workbench", - "fg": [ 5886, 5886 ], - "bg": 3813, + "fg": [ 6058, 6058 ], + "bg": 3972, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5886, 5886 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6058, 6058 ] } ] }, { "id": "vp_minifridge", - "fg": [ 5879, 5879 ], + "fg": [ 6051, 6051 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5879, 5879 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6051, 6051 ] } ] }, { "id": "vp_minifreezer", - "fg": [ 5878, 5878 ], + "fg": [ 6050, 6050 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5878, 5878 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6050, 6050 ] } ] }, { "id": "vp_kitchen_unit", - "fg": [ 5871, 5871 ], + "fg": [ 6043, 6043 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5871, 5871 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6043, 6043 ] } ] }, { "id": "vp_welding_rig", - "fg": [ 5883, 5883 ], + "fg": [ 6055, 6055 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5883, 5883 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6055, 6055 ] } ] }, { "id": "vp_craft_rig", - "fg": [ 5864, 5864 ], + "fg": [ 6036, 6036 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5864, 5864 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6036, 6036 ] } ] }, { "id": "vp_washing_machine", - "fg": [ 5882, 5882 ], + "fg": [ 6054, 6054 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5882, 5882 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6054, 6054 ] } ] }, { "id": "vp_bed", - "fg": [ 5862, 5862 ], + "fg": [ 6034, 6034 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5862, 5862 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6034, 6034 ] } ] }, { "id": "vp_veh_forge", - "fg": [ 5869, 5869 ], + "fg": [ 6041, 6041 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5869, 5869 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6041, 6041 ] } ] }, { "id": "vp_veh_kiln", - "fg": [ 5870, 5870 ], + "fg": [ 6042, 6042 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5870, 5870 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6042, 6042 ] } ] }, { "id": "vp_chemlab", - "fg": [ 5863, 5863 ], + "fg": [ 6035, 6035 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5863, 5863 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6035, 6035 ] } ] }, { "id": "vp_aisle_vertical", - "fg": 5861, + "fg": 6033, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5861 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6033 } ] }, { "id": "vp_aisle_horizontal", - "fg": 5860, + "fg": 6032, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5860 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6032 } ] }, - { "id": "vp_trunk_floor", "fg": 5881, "bg": 5861 }, + { "id": "vp_trunk_floor", "fg": 6053, "bg": 6033 }, { "id": "vp_wooden_aisle_vertical", - "fg": [ 5885, 5884 ], + "fg": [ 6057, 6056 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5885, 5884 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6057, 6056 ] } ] }, { "id": "vp_wooden_aisle_horizontal", - "fg": [ 5884, 5885 ], + "fg": [ 6056, 6057 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5884, 5885 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6056, 6057 ] } ] }, { "id": "vp_lit_aisle_vertical", - "fg": 5877, + "fg": 6049, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5877 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6049 } ] }, { "id": "vp_lit_aisle_horizontal", - "fg": 5876, + "fg": 6048, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5876 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6048 } ] }, { "id": "vp_mounted_spare_tire", - "fg": 5880, + "fg": 6052, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5880 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6052 } ] }, { "id": [ "vp_folding_seat", "vp_reclining_seat", "vp_seat", "vp_seat_back" ], - "fg": [ 5900, 5898, 5893, 5899 ], + "fg": [ 6072, 6070, 6065, 6071 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5900, 5898, 5893, 5899 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6072, 6070, 6065, 6071 ] } ] }, { "id": [ "vp_seat_leather", "vp_reclining_seat_leather", "vp_seat_back_leather" ], - "fg": [ 5897, 5895, 5894, 5896 ], + "fg": [ 6069, 6067, 6066, 6068 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5897, 5895, 5894, 5896 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6069, 6067, 6066, 6068 ] } ] }, { "id": [ "vp_seat_wood", "seat_wood_bench" ], - "fg": [ 5903, 5903, 5904, 5904 ], - "bg": [ 5885, 5884 ], + "fg": [ 6075, 6075, 6076, 6076 ], + "bg": [ 6057, 6056 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5903, 5903, 5904, 5904 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6075, 6075, 6076, 6076 ] } ] }, { "id": "vp_seat_wood_flimsy", - "fg": [ 5901, 5901, 5902, 5902 ], - "bg": [ 5885, 5884 ], + "fg": [ 6073, 6073, 6074, 6074 ], + "bg": [ 6057, 6056 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5901, 5901, 5902, 5902 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6073, 6073, 6074, 6074 ] } ] }, { "id": [ "vp_saddle", "vp_saddle_pedal" ], - "fg": [ 5888, 5890, 5889, 5887 ], + "fg": [ 6060, 6062, 6061, 6059 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5888, 5890, 5889, 5887 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6060, 6062, 6061, 6059 ] } ] }, { "id": "vp_solar_panel", - "fg": 5905, + "fg": 6077, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": 5905 } ] + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": 6077 } ] }, { "id": "vp_reinforced_solar_panel", - "fg": 5908, - "bg": 5905, + "fg": 6080, + "bg": 6077, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": 5905 } ] + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": 6077 } ] }, { "id": "vp_solar_panel_v2", - "fg": 5906, + "fg": 6078, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": 5906 } ] + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": 6078 } ] }, { "id": "vp_reinforced_solar_panel_v2", - "fg": 5908, - "bg": 5906, + "fg": 6080, + "bg": 6078, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": 5906 } ] + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": 6078 } ] }, { "id": "vp_solar_panel_v3", - "fg": 5907, + "fg": 6079, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": 5907 } ] + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": 6079 } ] }, { "id": [ @@ -9492,151 +9685,151 @@ "vp_mounted_m60_semi" ], "//": "rifles and machineguns", - "fg": 5910, - "bg": 5909, + "fg": 6082, + "bg": 6081, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5910 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6082 } ] }, { "id": [ "vp_mounted_emp_gun", "vp_mounted_plasma_gun", "vp_plasma_gun", "vp_laser_rifle" ], "//": "energy weapons", - "fg": 5910, - "bg": 5909, + "fg": 6082, + "bg": 6081, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5910 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6082 } ] }, { "id": [ "vp_mounted_hk_g80", "vp_mounted_coilgun" ], "//": "railguns", - "fg": 5910, - "bg": 5909, + "fg": 6082, + "bg": 6081, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5910 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6082 } ] }, { "id": [ "vp_mounted_bigun", "vp_mounted_m134" ], "//": "multibarrel weapons", - "fg": 5910, - "bg": 5909, + "fg": 6082, + "bg": 6081, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5910 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6082 } ] }, { "id": [ "vp_watercannon", "vp_flamethrower", "vp_mounted_chemical_thrower" ], "//": "liquid sprayers", - "fg": 5910, - "bg": 5909, + "fg": 6082, + "bg": 6081, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5910 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6082 } ] }, { "id": "vp_tow_launcher", "//": "rocket tubes", - "fg": 5910, - "bg": 5909, + "fg": 6082, + "bg": 6081, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5910 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6082 } ] }, { "id": [ "vp_wheel", "vp_wheel_steerable", "vp_wheel_wide_or_steerable", "vp_wheel_wide" ], - "fg": 5911, + "fg": 6083, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5911 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6083 } ] }, { "id": [ "vp_wheel_bicycle", "vp_wheel_bicycle_steerable", "vp_wheel_bicycle_or", "vp_wheel_bicycle_or_steerable" ], - "fg": [ 5913, 5915, 5914, 5912 ], + "fg": [ 6085, 6087, 6086, 6084 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5913, 5915, 5914, 5912 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6085, 6087, 6086, 6084 ] } ] }, { "id": [ "vp_wheel_bicycle_rear", "vp_wheel_bicycle_or_rear" ], - "fg": [ 5914, 5912, 5913, 5915 ], + "fg": [ 6086, 6084, 6085, 6087 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": [ 5914, 5912, 5913, 5915 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": [ 6086, 6084, 6085, 6087 ] } ] }, { "id": [ "vp_windshield", "vp_windshield_horizontal", "vp_windshield_horizontal_front", "vp_windshield_front_edge" ], - "fg": [ 5916, 5923, 5922, 5921 ], - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": [ 5916, 5923, 5922, 5921 ] } ], + "fg": [ 6088, 6095, 6094, 6093 ], + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": [ 6088, 6095, 6094, 6093 ] } ], "multitile": true }, { "id": "vp_windshield_horizontal_rear", - "fg": [ 5944, 5951, 5950, 5949 ], - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": [ 5944, 5951, 5950, 5949 ] } ], + "fg": [ 6116, 6123, 6122, 6121 ], + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": [ 6116, 6123, 6122, 6121 ] } ], "multitile": true }, { "id": "vp_windshield_horizontal_front_edge", - "fg": [ 5918, 5920, 5919, 5917 ], - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": [ 5918, 5920, 5919, 5917 ] } ], + "fg": [ 6090, 6092, 6091, 6089 ], + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": [ 6090, 6092, 6091, 6089 ] } ], "multitile": true }, { "id": "vp_windshield_horizontal_rear_edge", - "fg": [ 5945, 5948, 5947, 5946 ], - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": [ 5945, 5948, 5947, 5946 ] } ], + "fg": [ 6117, 6120, 6119, 6118 ], + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": [ 6117, 6120, 6119, 6118 ] } ], "multitile": true }, { "id": "vp_windshield_nw", - "fg": [ 5936, 5943, 5942, 5941 ], - "additional_tiles": [ { "id": "broken", "fg": 5622, "bg": [ 5936, 5943, 5942, 5941 ] } ], + "fg": [ 6108, 6115, 6114, 6113 ], + "additional_tiles": [ { "id": "broken", "fg": 5794, "bg": [ 6108, 6115, 6114, 6113 ] } ], "multitile": true }, { "id": "vp_windshield_ne", - "fg": [ 5928, 5935, 5934, 5933 ], - "additional_tiles": [ { "id": "broken", "fg": 5621, "bg": [ 5928, 5935, 5934, 5933 ] } ], + "fg": [ 6100, 6107, 6106, 6105 ], + "additional_tiles": [ { "id": "broken", "fg": 5793, "bg": [ 6100, 6107, 6106, 6105 ] } ], "multitile": true }, { "id": "vp_windshield_sw", - "fg": [ 5969, 5971, 5970, 5968 ], - "additional_tiles": [ { "id": "broken", "fg": 5622, "bg": [ 5969, 5971, 5970, 5968 ] } ], + "fg": [ 6141, 6143, 6142, 6140 ], + "additional_tiles": [ { "id": "broken", "fg": 5794, "bg": [ 6141, 6143, 6142, 6140 ] } ], "multitile": true }, { "id": "vp_windshield_se", - "fg": [ 5961, 5963, 5962, 5960 ], - "additional_tiles": [ { "id": "broken", "fg": 5621, "bg": [ 5961, 5963, 5962, 5960 ] } ], + "fg": [ 6133, 6135, 6134, 6132 ], + "additional_tiles": [ { "id": "broken", "fg": 5793, "bg": [ 6133, 6135, 6134, 6132 ] } ], "multitile": true }, { "id": "vp_windshield_nw_edge", - "fg": [ 5938, 5940, 5939, 5937 ], - "additional_tiles": [ { "id": "broken", "fg": 5622, "bg": [ 5938, 5940, 5939, 5937 ] } ], + "fg": [ 6110, 6112, 6111, 6109 ], + "additional_tiles": [ { "id": "broken", "fg": 5794, "bg": [ 6110, 6112, 6111, 6109 ] } ], "multitile": true }, { "id": "vp_windshield_ne_edge", - "fg": [ 5930, 5932, 5931, 5929 ], - "additional_tiles": [ { "id": "broken", "fg": 5621, "bg": [ 5930, 5932, 5931, 5929 ] } ], + "fg": [ 6102, 6104, 6103, 6101 ], + "additional_tiles": [ { "id": "broken", "fg": 5793, "bg": [ 6102, 6104, 6103, 6101 ] } ], "multitile": true }, { "id": "vp_windshield_sw_edge", - "fg": [ 5964, 5967, 5966, 5965 ], - "additional_tiles": [ { "id": "broken", "fg": 5622, "bg": [ 5964, 5967, 5966, 5965 ] } ], + "fg": [ 6136, 6139, 6138, 6137 ], + "additional_tiles": [ { "id": "broken", "fg": 5794, "bg": [ 6136, 6139, 6138, 6137 ] } ], "multitile": true }, { "id": "vp_windshield_se_edge", - "fg": [ 5956, 5959, 5958, 5957 ], - "additional_tiles": [ { "id": "broken", "fg": 5621, "bg": [ 5956, 5959, 5958, 5957 ] } ], + "fg": [ 6128, 6131, 6130, 6129 ], + "additional_tiles": [ { "id": "broken", "fg": 5793, "bg": [ 6128, 6131, 6130, 6129 ] } ], "multitile": true }, { "id": [ "vp_windshield_vertical_left", "vp_windshield_left" ], - "fg": [ 5924, 5927, 5926, 5925 ], - "additional_tiles": [ { "id": "broken", "fg": 5621, "bg": [ 5924, 5927, 5926, 5925 ] } ], + "fg": [ 6096, 6099, 6098, 6097 ], + "additional_tiles": [ { "id": "broken", "fg": 5793, "bg": [ 6096, 6099, 6098, 6097 ] } ], "multitile": true }, { "id": [ "vp_windshield_vertical_right", "vp_windshield_right" ], - "fg": [ 5952, 5955, 5954, 5953 ], - "additional_tiles": [ { "id": "broken", "fg": 5622, "bg": [ 5952, 5955, 5954, 5953 ] } ], + "fg": [ 6124, 6127, 6126, 6125 ], + "additional_tiles": [ { "id": "broken", "fg": 5794, "bg": [ 6124, 6127, 6126, 6125 ] } ], "multitile": true }, { @@ -9646,744 +9839,743 @@ "vp_reinforced_windshield_horizontal_front", "vp_reinforced_windshield_front_edge" ], - "fg": 5972, + "fg": 6144, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": 5972 } ] + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": 6144 } ] }, { "id": "vp_reinforced_windshield_horizontal_rear", - "fg": 5973, + "fg": 6145, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": 5973 } ] + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": 6145 } ] }, { "id": "vp_reinforced_windshield_horizontal_rear_edge", - "fg": 5974, + "fg": 6146, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": 5974 } ] + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": 6146 } ] }, { "id": "vp_reinforced_windshield_nw", - "fg": 5976, + "fg": 6148, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": 5976 } ] + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": 6148 } ] }, { "id": "vp_reinforced_windshield_ne", - "fg": 5975, + "fg": 6147, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": 5975 } ] + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": 6147 } ] }, { "id": "vp_reinforced_windshield_sw", - "fg": 5979, + "fg": 6151, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": 5979 } ] + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": 6151 } ] }, { "id": "vp_reinforced_windshield_se", - "fg": 5977, + "fg": 6149, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": 5977 } ] + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": 6149 } ] }, { "id": "vp_reinforced_windshield_sw_edge", - "fg": 5980, + "fg": 6152, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": 5980 } ] + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": 6152 } ] }, { "id": "vp_reinforced_windshield_se_edge", - "fg": 5978, + "fg": 6150, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": 5978 } ] + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": 6150 } ] }, { "id": [ "vp_reinforced_windshield_vertical_left", "vp_reinforced_windshield_left" ], - "fg": 5981, + "fg": 6153, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": 5981 } ] + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": 6153 } ] }, { "id": [ "vp_reinforced_windshield_vertical_right", "vp_reinforced_windshield_right" ], - "fg": 5982, + "fg": 6154, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": 5982 } ] + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": 6154 } ] }, { "id": "vp_frame_wood_vertical_2", - "fg": 6003, + "fg": 6175, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6003 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6175 } ] }, { "id": "vp_frame_wood_vertical_2_unconnected", - "fg": 6006, + "fg": 6178, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6006 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6178 } ] }, { "id": "vp_frame_wood_vertical_2_right", - "fg": 6005, + "fg": 6177, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6005 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6177 } ] }, { "id": "vp_frame_wood_vertical_2_left", - "fg": 6004, + "fg": 6176, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6004 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6176 } ] }, { "id": "vp_frame_wood_vertical", - "fg": 6002, + "fg": 6174, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6002 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6174 } ] }, { "id": "vp_frame_wood_vertical_unconnected", - "fg": 6009, + "fg": 6181, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6009 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6181 } ] }, { "id": "vp_frame_wood_vertical_right", - "fg": 6008, + "fg": 6180, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6008 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6180 } ] }, { "id": "vp_frame_wood_vertical_left", - "fg": 6007, + "fg": 6179, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6007 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6179 } ] }, { "id": "vp_frame_wood_sw", - "fg": 6001, + "fg": 6173, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6001 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6173 } ] }, { "id": "vp_frame_wood_se", - "fg": 6000, + "fg": 6172, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6000 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6172 } ] }, { "id": "vp_frame_wood_nw", - "fg": 5999, + "fg": 6171, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5999 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6171 } ] }, { "id": "vp_frame_wood_ne", - "fg": 5998, + "fg": 6170, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5998 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6170 } ] }, { "id": "vp_frame_wood_horizontal_2", - "fg": 5987, + "fg": 6159, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5987 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6159 } ] }, { "id": "vp_frame_wood_horizontal_2_unconnected", - "fg": 5992, + "fg": 6164, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5992 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6164 } ] }, { "id": "vp_frame_wood_horizontal_2_right", - "fg": 5991, + "fg": 6163, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5991 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6163 } ] }, { "id": "vp_frame_wood_horizontal_2_rear", - "fg": 5990, + "fg": 6162, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5990 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6162 } ] }, { "id": "vp_frame_wood_horizontal_2_left", - "fg": 5989, + "fg": 6161, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5989 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6161 } ] }, { "id": "vp_frame_wood_horizontal_2_front", - "fg": 5988, + "fg": 6160, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5988 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6160 } ] }, { "id": "vp_frame_wood_horizontal", - "fg": 5986, + "fg": 6158, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5986 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6158 } ] }, { "id": "vp_frame_wood_horizontal_unconnected", - "fg": 5997, + "fg": 6169, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5997 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6169 } ] }, { "id": "vp_frame_wood_horizontal_right", - "fg": 5996, + "fg": 6168, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5996 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6168 } ] }, { "id": "vp_frame_wood_horizontal_rear", - "fg": 5995, + "fg": 6167, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5995 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6167 } ] }, { "id": "vp_frame_wood_horizontal_left", - "fg": 5994, + "fg": 6166, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5994 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6166 } ] }, { "id": "vp_frame_wood_horizontal_front", - "fg": 5993, + "fg": 6165, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5993 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6165 } ] }, { "id": "vp_frame_wood_cross", - "fg": 5984, + "fg": 6156, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5984 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6156 } ] }, { "id": [ "vp_frame_wood_cross_unconnected", "vp_frame_wood", "frame_wood" ], - "fg": 5985, + "fg": 6157, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5985 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6157 } ] }, { "id": "vp_frame_wood_cover", - "fg": 5983, - "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 5983 } ] - }, - { "id": "fd_bile", "fg": 5058 }, - { "id": "f_floor_mattress", "fg": 5071 }, - { "id": "f_brazier", "fg": 5074 }, - { "id": "emer_blanket", "fg": 5104 }, - { "id": "emer_blanket_on", "fg": 5105 }, - { "id": "jacket_evac", "fg": 5106 }, - { "id": "55gal_drum", "fg": 5115 }, - { "id": "t_roof_paper", "fg": 5336 }, - { "id": "seat", "fg": 5891 }, - { "id": "seat_leather", "fg": 5892 } + "fg": 6155, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6155 } ] + }, + { "id": "fd_bile", "fg": 5234 }, + { "id": "f_floor_mattress", "fg": 5247 }, + { "id": "f_brazier", "fg": 5250 }, + { "id": "emer_blanket", "fg": 5280 }, + { "id": "emer_blanket_on", "fg": 5281 }, + { "id": "jacket_evac", "fg": 5282 }, + { "id": "55gal_drum", "fg": 5291 }, + { "id": "t_roof_paper", "fg": 5508 }, + { "id": "seat", "fg": 6063 }, + { "id": "seat_leather", "fg": 6064 } ] }, { "file": "incomplete_tall.png", - "//": "range 6016 to 6031", + "//": "range 6192 to 6207", "sprite_width": 32, "sprite_height": 64, "sprite_offset_x": 0, "sprite_offset_y": -32, "tiles": [ - { "id": "overlay_female_worn_helmet_riot_raised", "fg": 6016 }, - { "id": "overlay_male_worn_helmet_riot_raised", "fg": 6017 }, - { "id": "f_street_light", "fg": 6018 }, - { "id": "f_traffic_light", "fg": 6019 } + { "id": "overlay_female_worn_helmet_riot_raised", "fg": 6192 }, + { "id": "overlay_male_worn_helmet_riot_raised", "fg": 6193 }, + { "id": "f_street_light", "fg": 6194 }, + { "id": "f_traffic_light", "fg": 6195 } ] }, { "file": "incomplete_large.png", - "//": "range 6032 to 6047", + "//": "range 6208 to 6223", "sprite_width": 64, "sprite_height": 64, "sprite_offset_x": -16, "sprite_offset_y": -32, - "tiles": [ { "id": "mon_science_bot", "fg": 6035, "bg": 4961 } ] + "tiles": [ { "id": "mon_science_bot", "fg": 6211, "bg": 5135 } ] }, { "file": "fillerhoder.png", - "//": "range 6048 to 6143", + "//": "range 6224 to 6319", "tiles": [ { "id": "f_sandbag_wall", - "fg": 6048, + "fg": 6224, "rotates": true, "multitile": true, "additional_tiles": [ - { "id": "unconnected", "fg": 6048 }, - { "id": "center", "fg": 6049 }, - { "id": "corner", "fg": 6050 }, - { "id": "edge", "fg": 6051 }, - { "id": "end_piece", "fg": 6052 }, - { "id": "t_connection", "fg": 6053 } + { "id": "unconnected", "fg": 6224 }, + { "id": "center", "fg": 6225 }, + { "id": "corner", "fg": 6226 }, + { "id": "edge", "fg": 6227 }, + { "id": "end_piece", "fg": 6228 }, + { "id": "t_connection", "fg": 6229 } ] }, - { "id": "f_slab", "fg": 6054 }, - { "id": "animation_bullet_flame", "fg": 6055, "rotates": false }, - { "id": "animation_bullet_normal", "fg": 6056, "rotates": false }, - { "id": "animation_bullet_shrapnel", "fg": 6057 }, + { "id": "f_slab", "fg": 6230 }, + { "id": "animation_bullet_flame", "fg": 6231, "rotates": false }, + { "id": "animation_bullet_normal", "fg": 6232, "rotates": false }, + { "id": "animation_bullet_shrapnel", "fg": 6233 }, { "id": "explosion", - "fg": 6058, + "fg": 6234, "rotates": true, "multitile": true, - "additional_tiles": [ { "id": "corner", "fg": 6058 }, { "id": "edge", "fg": 6059 } ] + "additional_tiles": [ { "id": "corner", "fg": 6234 }, { "id": "edge", "fg": 6235 } ] }, { "id": "explosion_medium", "rotates": true, "multitile": true, - "additional_tiles": [ { "id": "corner", "fg": 6058 }, { "id": "edge", "fg": 6059 } ], - "fg": 6058 + "additional_tiles": [ { "id": "corner", "fg": 6234 }, { "id": "edge", "fg": 6235 } ], + "fg": 6234 }, { "id": "explosion_weak", "rotates": true, "multitile": true, - "additional_tiles": [ { "id": "corner", "fg": 6058 }, { "id": "edge", "fg": 6059 } ], - "fg": 6058 + "additional_tiles": [ { "id": "corner", "fg": 6234 }, { "id": "edge", "fg": 6235 } ], + "fg": 6234 }, { "id": "vp_chimes", - "fg": 6060, + "fg": 6236, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6060 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6236 } ] }, { "id": "vp_robot_controls", - "fg": 6061, + "fg": 6237, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6061 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6237 } ] }, - { "id": "t_manhole", "fg": 6062, "bg": 3865, "rotates": false }, - { "id": "t_manhole_cover", "fg": 6063, "bg": 3865 }, - { "id": "manhole_cover", "fg": 6063 }, - { "id": "t_pit_corpsed", "fg": 6064, "bg": 3300 }, - { "id": "t_pit_corpsed_season_winter", "fg": 6064, "bg": 3063 }, + { "id": "t_manhole", "fg": 6238, "bg": 4024, "rotates": false }, + { "id": "t_manhole_cover", "fg": 6239, "bg": 4024 }, + { "id": "manhole_cover", "fg": 6239 }, + { "id": "t_pit_corpsed", "fg": 6240, "bg": 3459 }, + { "id": "t_pit_corpsed_season_winter", "fg": 6240, "bg": 3222 }, { "id": [ "vp_external_tank", "vp_external_tank_small" ], - "fg": 6066, + "fg": 6242, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6066 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6242 } ] }, - { "id": "vp_ram_spiked", "fg": [ 6079, 6081, 6080, 6082 ], "rotates": true }, - { "id": "vp_ram_wood", "fg": [ 6087, 6089, 6088, 6090 ], "rotates": true }, - { "id": "vp_spike_wood", "fg": [ 6091, 6093, 6092, 6094 ], "rotates": true }, - { "id": "vp_ram_military", "fg": [ 6075, 6077, 6076, 6078 ], "rotates": true }, - { "id": "vp_ram_steel", "fg": [ 6083, 6085, 6084, 6086 ], "rotates": true }, - { "id": "vp_ram_hardsteel", "fg": [ 6071, 6073, 6072, 6074 ], "rotates": true }, - { "id": "vp_ram_alloy", "fg": [ 6067, 6069, 6068, 6070 ], "rotates": true }, + { "id": "vp_ram_spiked", "fg": [ 6255, 6257, 6256, 6258 ], "rotates": true }, + { "id": "vp_ram_wood", "fg": [ 6263, 6265, 6264, 6266 ], "rotates": true }, + { "id": "vp_ram_military", "fg": [ 6251, 6253, 6252, 6254 ], "rotates": true }, + { "id": "vp_ram_steel", "fg": [ 6259, 6261, 6260, 6262 ], "rotates": true }, + { "id": "vp_ram_hardsteel", "fg": [ 6247, 6249, 6248, 6250 ], "rotates": true }, + { "id": "vp_ram_alloy", "fg": [ 6243, 6245, 6244, 6246 ], "rotates": true }, { "id": [ "vp_seed_drill" ], - "fg": [ 6096, 6098, 6097, 6095 ], + "fg": [ 6268, 6270, 6269, 6267 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 6065, "bg": [ 6096, 6098, 6097, 6095 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 6241, "bg": [ 6268, 6270, 6269, 6267 ] } ] }, { "id": "vp_roller_drum", - "fg": 6099, + "fg": 6271, "rotates": true, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 6065, "bg": 6099 } ] + "additional_tiles": [ { "id": "broken", "fg": 6241, "bg": 6271 } ] }, { "id": "vp_battery_motorbike", - "fg": 6114, + "fg": 6286, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6114 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6286 } ] }, { "id": "vp_blade_horizontal", - "fg": 6123, + "fg": 6295, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6123 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6295 } ] }, { "id": "vp_blade_vertical", - "fg": 6124, + "fg": 6296, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6124 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6296 } ] }, { "id": "vp_controls", - "fg": 6118, + "fg": 6290, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6118 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6290 } ] }, { "id": "vp_engine_1cyl", - "fg": 6106, + "fg": 6278, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6106 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6278 } ] }, { "id": "vp_engine_electric", - "fg": 6111, + "fg": 6283, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6111 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6283 } ] }, { "id": "vp_engine_electric_large", - "fg": 6112, + "fg": 6284, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6112 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6284 } ] }, { "id": "vp_engine_inline4", - "fg": 6108, + "fg": 6280, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6108 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6280 } ] }, - { "id": "vp_engine_v12", "fg": 6109, "bg": 6110 }, + { "id": "vp_engine_v12", "fg": 6281, "bg": 6282 }, { "id": "vp_engine_v6", - "fg": 6109, + "fg": 6281, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6109 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6281 } ] }, { "id": "vp_engine_v8", - "fg": 6110, + "fg": 6282, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6110 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6282 } ] }, { "id": "vp_engine_vtwin", - "fg": 6107, + "fg": 6279, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6107 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6279 } ] }, { "id": "vp_foot_pedals", - "fg": 6113, + "fg": 6285, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6113 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6285 } ] }, { "id": "vp_fusion_gun", - "fg": 6127, + "fg": 6299, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6127 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6299 } ] }, { "id": "vp_hdroof", - "fg": 6130, + "fg": 6302, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6130 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6302 } ] }, { "id": "vp_hydrogen_tank", - "fg": 6116, + "fg": 6288, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6116 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6288 } ] }, { "id": "vp_minireactor", - "fg": 6115, + "fg": 6287, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6115 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6287 } ] }, { "id": "vp_muffler", - "fg": 6117, + "fg": 6289, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6117 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6289 } ] }, { "id": "vp_omnicam", - "fg": 6129, - "bg": 6130, + "fg": 6301, + "bg": 6302, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5620, "bg": 6129 } ] + "additional_tiles": [ { "id": "broken", "fg": 5792, "bg": 6301 } ] }, { "id": "vp_plating_hard", - "fg": 6122, + "fg": 6294, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6122 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6294 } ] }, { "id": "vp_plating_military", - "fg": 6119, + "fg": 6291, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6119 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6291 } ] }, { "id": "vp_plating_spiked", - "fg": 6121, + "fg": 6293, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6121 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6293 } ] }, { "id": "vp_plating_steel", - "fg": 6119, + "fg": 6291, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6119 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6291 } ] }, { "id": "vp_plating_superalloy", - "fg": 6120, + "fg": 6292, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6120 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6292 } ] }, { "id": "vp_plating_wood", - "fg": 6133, + "fg": 6305, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6133 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6305 } ] }, { "id": "vp_roof", - "fg": 6131, + "fg": 6303, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6131 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6303 } ] }, { "id": "vp_roof_cloth", - "fg": 6132, + "fg": 6304, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6132 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6304 } ] }, { "id": "vp_seatbelt", - "fg": 6105, + "fg": 6277, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6105 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6277 } ] }, { "id": "vp_seatbelt_heavyduty", - "fg": 6105, + "fg": 6277, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6105 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6277 } ] }, { "id": "vp_small_storage_battery", - "fg": 6114, + "fg": 6286, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6114 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6286 } ] }, { "id": "vp_spike", - "fg": 6125, + "fg": 6297, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6125 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6297 } ] }, { "id": "vp_storage_battery", - "fg": 6114, + "fg": 6286, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6114 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6286 } ] }, { "id": "vp_v_curtain", - "fg": 6134, + "fg": 6306, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6134 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6306 } ] }, { "id": "vp_wheel_armor", - "fg": 6101, + "fg": 6273, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6101 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6273 } ] }, { "id": "vp_wheel_armor_steerable", - "fg": 6101, + "fg": 6273, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6101 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6273 } ] }, { "id": "vp_wheel_caster", - "fg": 6128, + "fg": 6300, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6128 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6300 } ] }, { "id": "vp_wheel_small", - "fg": 6104, + "fg": 6276, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6104 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6276 } ] }, { "id": "vp_wheel_small_steerable", - "fg": 6104, + "fg": 6276, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6104 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6276 } ] }, { "id": "vp_wheel_wheelchair", - "fg": 6103, + "fg": 6275, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6103 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6275 } ] }, { "id": "vp_wheel_wide_steerable", - "fg": 6102, + "fg": 6274, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6102 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6274 } ] }, { "id": "vp_wheel_wood", - "fg": 6136, + "fg": 6308, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6136 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6308 } ] }, { "id": [ "wheel_wood", "wheel_wood_b" ], - "fg": 6136, + "fg": 6308, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6136 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6308 } ] }, { "id": "vp_wheel_wood_b", - "fg": 6136, + "fg": 6308, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6136 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6308 } ] }, { "id": "alloy_plate", - "fg": 6120, + "fg": 6292, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6120 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6292 } ] }, { "id": "foot_crank", - "fg": 6113, + "fg": 6285, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6113 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6285 } ] }, { "id": "frame", - "fg": 6135, + "fg": 6307, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6135 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6307 } ] }, { "id": "glass_sheet", - "fg": 6100, + "fg": 6272, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6100 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6272 } ] }, { "id": "hard_plate", - "fg": 6122, + "fg": 6294, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6122 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6294 } ] }, { "id": "kitchen_unit", - "fg": 6126, + "fg": 6298, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6126 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6298 } ] }, { "id": "motor", - "fg": 6111, + "fg": 6283, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6111 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6283 } ] }, { "id": "motor_large", - "fg": 6112, + "fg": 6284, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6112 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6284 } ] }, { "id": "muffler", - "fg": 6117, + "fg": 6289, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6117 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6289 } ] }, { "id": "spiked_plate", - "fg": 6121, + "fg": 6293, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6121 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6293 } ] }, { "id": "steel_plate", - "fg": 6119, + "fg": 6291, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6119 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6291 } ] }, { "id": "storage_battery", - "fg": 6114, + "fg": 6286, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6114 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6286 } ] }, { "id": "vehicle_controls", - "fg": 6118, + "fg": 6290, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6118 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6290 } ] }, { "id": "1cyl_combustion", - "fg": 6106, + "fg": 6278, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6106 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6278 } ] }, { "id": "i4_combustion", - "fg": 6108, + "fg": 6280, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6108 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6280 } ] }, { "id": "v2_combustion", - "fg": 6107, + "fg": 6279, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6107 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6279 } ] }, { - "id": "v6_combustion", - "fg": 6109, + "id": [ "v6_combustion", "v6_diesel" ], + "fg": 6281, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6109 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6281 } ] }, { "id": "v8_combustion", - "fg": 6110, + "fg": 6282, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6110 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6282 } ] }, { "id": "wheel", - "fg": 6101, + "fg": 6273, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6101 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6273 } ] }, { "id": "wheel_bicycle", - "fg": 6103, + "fg": 6275, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6103 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6275 } ] }, { "id": "wheel_small", - "fg": 6104, + "fg": 6276, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6104 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6276 } ] }, { "id": "wheel_wide", - "fg": 6102, + "fg": 6274, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5623, "bg": 6102 } ] + "additional_tiles": [ { "id": "broken", "fg": 5795, "bg": 6274 } ] } ] }, { "file": "fillergiant.png", - "//": "range 6144 to 6159", + "//": "range 6320 to 6335", "sprite_width": 96, "sprite_height": 96, "sprite_offset_x": -32, @@ -10396,18 +10588,18 @@ "t_tree_pear_season_spring", "t_tree_plum_season_spring" ], - "fg": 4985, - "bg": 4978 + "fg": 5161, + "bg": 5154 }, - { "id": "t_tree_apricot_season_summer", "fg": 6144, "bg": 4979 }, - { "id": "t_tree_mulberry_season_summer", "fg": 6145, "bg": 4979 }, - { "id": "t_tree_elderberry_season_summer", "fg": 6145, "bg": 4979 }, - { "id": "t_tree_pear_season_autumn", "fg": 6146, "bg": 4979 }, - { "id": "t_tree_plum_season_summer", "fg": 6147, "bg": 4979 }, + { "id": "t_tree_apricot_season_summer", "fg": 6320, "bg": 5155 }, + { "id": "t_tree_mulberry_season_summer", "fg": 6321, "bg": 5155 }, + { "id": "t_tree_elderberry_season_summer", "fg": 6321, "bg": 5155 }, + { "id": "t_tree_pear_season_autumn", "fg": 6322, "bg": 5155 }, + { "id": "t_tree_plum_season_summer", "fg": 6323, "bg": 5155 }, { "id": [ "t_tree_apricot_harvested", "t_tree_mulberry_harvested", "t_tree_plum_harvested", "t_tree_pear_season_summer" ], - "fg": 4980, - "bg": 4979 + "fg": 5156, + "bg": 5155 }, { "id": [ @@ -10417,12 +10609,12 @@ "t_tree_pear_harvested" ], "fg": [ - { "weight": 100, "sprite": 4981 }, - { "weight": 100, "sprite": 4982 }, - { "weight": 100, "sprite": 4983 }, - { "weight": 100, "sprite": 4984 } + { "weight": 100, "sprite": 5157 }, + { "weight": 100, "sprite": 5158 }, + { "weight": 100, "sprite": 5159 }, + { "weight": 100, "sprite": 5160 } ], - "bg": 4977 + "bg": 5153 }, { "id": [ @@ -10431,29 +10623,29 @@ "t_tree_pear_season_winter", "t_tree_plum_season_winter" ], - "fg": 5005, - "bg": 4976 - }, - { "id": "t_tree_chestnut", "fg": 6149, "bg": 4978 }, - { "id": "t_tree_chestnut_season_summer", "fg": 6148, "bg": 4979 }, - { "id": "t_tree_chestnut_season_autumn", "fg": 6148, "bg": 4977 }, - { "id": "t_tree_chestnut_season_winter", "fg": 6148, "bg": 4976 }, - { "id": "t_tree_pine", "fg": 6153, "bg": 4978 }, - { "id": "t_tree_pine_season_summer", "fg": 6153, "bg": 4979 }, - { "id": "t_tree_pine_season_autumn", "fg": 6153, "bg": 4977 }, - { "id": "t_tree_pine_season_winter", "fg": 6153, "bg": 4976 }, - { "id": "t_tree_deadpine", "fg": 6150, "bg": 4978 }, - { "id": "t_tree_deadpine_season_summer", "fg": 6150, "bg": 4979 }, - { "id": "t_tree_deadpine_season_autumn", "fg": 6150, "bg": 4977 }, - { "id": "t_tree_deadpine_season_winter", "fg": 6150, "bg": 4976 }, - { "id": "t_tree_hickory", "fg": 6152, "bg": 4978 }, - { "id": "t_tree_hickory_season_summer", "fg": 6152, "bg": 4979 }, - { "id": "t_tree_hickory_season_autumn", "fg": 6152, "bg": 4977 }, - { "id": "t_tree_hickory_season_winter", "fg": 6151, "bg": 4976 }, - { "id": "t_tree_hickory_dead", "fg": 6151, "bg": 4978 }, - { "id": "t_tree_hickory_dead_season_summer", "fg": 6151, "bg": 4979 }, - { "id": "t_tree_hickory_dead_season_autumn", "fg": 6151, "bg": 4977 }, - { "id": "t_tree_hickory_dead_season_winter", "fg": 6151, "bg": 4976 } + "fg": 5181, + "bg": 5152 + }, + { "id": "t_tree_chestnut", "fg": 6325, "bg": 5154 }, + { "id": "t_tree_chestnut_season_summer", "fg": 6324, "bg": 5155 }, + { "id": "t_tree_chestnut_season_autumn", "fg": 6324, "bg": 5153 }, + { "id": "t_tree_chestnut_season_winter", "fg": 6324, "bg": 5152 }, + { "id": "t_tree_pine", "fg": 6329, "bg": 5154 }, + { "id": "t_tree_pine_season_summer", "fg": 6329, "bg": 5155 }, + { "id": "t_tree_pine_season_autumn", "fg": 6329, "bg": 5153 }, + { "id": "t_tree_pine_season_winter", "fg": 6329, "bg": 5152 }, + { "id": "t_tree_deadpine", "fg": 6326, "bg": 5154 }, + { "id": "t_tree_deadpine_season_summer", "fg": 6326, "bg": 5155 }, + { "id": "t_tree_deadpine_season_autumn", "fg": 6326, "bg": 5153 }, + { "id": "t_tree_deadpine_season_winter", "fg": 6326, "bg": 5152 }, + { "id": "t_tree_hickory", "fg": 6328, "bg": 5154 }, + { "id": "t_tree_hickory_season_summer", "fg": 6328, "bg": 5155 }, + { "id": "t_tree_hickory_season_autumn", "fg": 6328, "bg": 5153 }, + { "id": "t_tree_hickory_season_winter", "fg": 6327, "bg": 5152 }, + { "id": "t_tree_hickory_dead", "fg": 6327, "bg": 5154 }, + { "id": "t_tree_hickory_dead_season_summer", "fg": 6327, "bg": 5155 }, + { "id": "t_tree_hickory_dead_season_autumn", "fg": 6327, "bg": 5153 }, + { "id": "t_tree_hickory_dead_season_winter", "fg": 6327, "bg": 5152 } ] }, { diff --git a/gfx/MshockXotto+/large.png b/gfx/MshockXotto+/large.png index 8a4af5f02e5e3..b80f2cb865264 100644 Binary files a/gfx/MshockXotto+/large.png and b/gfx/MshockXotto+/large.png differ diff --git a/gfx/MshockXotto+/overmapFiller.png b/gfx/MshockXotto+/overmapFiller.png new file mode 100644 index 0000000000000..62ab708777c83 Binary files /dev/null and b/gfx/MshockXotto+/overmapFiller.png differ diff --git a/gfx/MshockXotto+/tile_config.json b/gfx/MshockXotto+/tile_config.json index 5a13ed2bef2e4..b14bf4a5229d7 100644 --- a/gfx/MshockXotto+/tile_config.json +++ b/gfx/MshockXotto+/tile_config.json @@ -2728,10 +2728,10 @@ { "id": "corpse_mon_fish_sbass", "fg": 1764, "rotates": false }, { "id": "corpse_mon_fish_trout", "fg": 1765, "rotates": false }, { "id": "corpse_mon_fish_whitefish", "fg": 1766, "rotates": false }, - { "id": "corpse_mon_fish_lbass", "fg": 2708, "rotates": false }, - { "id": "corpse_mon_fish_pbass", "fg": 2709, "rotates": false }, - { "id": "corpse_mon_fish_salmon", "fg": 2710, "rotates": false }, - { "id": "corpse_mon_fish_sunfish", "fg": 2711, "rotates": false }, + { "id": "corpse_mon_fish_lbass", "fg": 2706, "rotates": false }, + { "id": "corpse_mon_fish_pbass", "fg": 2707, "rotates": false }, + { "id": "corpse_mon_fish_salmon", "fg": 2708, "rotates": false }, + { "id": "corpse_mon_fish_sunfish", "fg": 2709, "rotates": false }, { "id": "corpse_mon_flaming_eye", "fg": 1767, "rotates": false }, { "id": "corpse_mon_fly", "fg": 1768, "rotates": false }, { "id": "corpse_mon_fox", "fg": 1769, "rotates": false }, @@ -2930,10 +2930,10 @@ { "id": "mon_albino_penguin", "fg": 2481, "bg": 2751, "rotates": false }, { "id": "mon_alpha_razorclaw", "fg": 2482, "bg": 2751 }, { "id": "mon_ant", "fg": 2483, "bg": 2751, "rotates": false }, - { "id": "mon_ant_acid", "fg": 2706, "bg": 2751, "rotates": false }, - { "id": "mon_ant_acid_larva", "fg": 2705, "bg": 2751, "rotates": false }, - { "id": "mon_ant_acid_queen", "fg": 2707, "bg": 2751, "rotates": false }, - { "id": "mon_ant_acid_soldier", "fg": 2704, "rotates": false }, + { "id": "mon_ant_acid", "fg": 2704, "bg": 2751, "rotates": false }, + { "id": "mon_ant_acid_larva", "fg": 2703, "bg": 2751, "rotates": false }, + { "id": "mon_ant_acid_queen", "fg": 2705, "bg": 2751, "rotates": false }, + { "id": "mon_ant_acid_soldier", "fg": 2702, "rotates": false }, { "id": "mon_ant_fungus", "fg": 2484, "bg": 2751, "rotates": false }, { "id": "mon_ant_larva", "fg": 2485, "bg": 2751, "rotates": false }, { "id": "mon_ant_queen", "fg": 2486, "bg": 2751, "rotates": false }, @@ -2947,7 +2947,7 @@ { "id": "mon_bee_small", "fg": 2495, "rotates": false }, { "id": "mon_beekeeper", "fg": 2493, "bg": 2751, "rotates": false }, { "id": "mon_biollante", "fg": 2496, "bg": 2751, "rotates": false }, - { "id": "mon_black_rat", "fg": 2611, "rotates": false }, + { "id": "mon_black_rat", "fg": 2609, "rotates": false }, { "id": "mon_blank", "fg": 2497, "bg": 2751, "rotates": false }, { "id": "mon_blob", "fg": 2498, "bg": 2751, "rotates": false }, { "id": "mon_blob_large", "fg": 2499, "rotates": false }, @@ -2975,7 +2975,7 @@ { "id": "mon_crow", "fg": 2520, "bg": 2751, "rotates": false }, { "id": "mon_darkman", "fg": 2521, "bg": 2751, "rotates": false }, { "id": "mon_deer", "fg": 2522, "bg": 2751, "rotates": false }, - { "id": "mon_deer_mouse", "fg": 2611, "rotates": false }, + { "id": "mon_deer_mouse", "fg": 2609, "rotates": false }, { "id": "mon_deinonychus", "fg": 2523, "bg": 2751, "rotates": false }, { "id": "mon_dementia", "fg": 2524, "bg": 2751, "rotates": false }, { "id": "mon_dermatik", "fg": 2525, "bg": 2751, "rotates": false }, @@ -3014,175 +3014,173 @@ { "id": "mon_fly", "fg": 2556, "bg": 2751, "rotates": false }, { "id": "mon_fox_gray", "fg": 2557, "bg": 2751, "rotates": false }, { "id": "mon_fox_red", "fg": 2557, "bg": 2751, "rotates": false }, - { "id": "mon_frog_giant", "fg": 2559, "bg": 2751, "rotates": false }, - { "id": "mon_frog_small", "fg": 2558, "rotates": false }, - { "id": "mon_fungal_blossom", "fg": 2562, "bg": 2751, "rotates": false }, - { "id": "mon_fungal_fighter", "fg": 2563, "bg": 2751, "rotates": false }, - { "id": "mon_fungal_hedgerow", "fg": 2564, "bg": 2751, "rotates": false }, - { "id": "mon_fungal_tendril", "fg": 2565, "bg": 2751, "rotates": false }, - { "id": "mon_fungal_wall", "fg": 2566, "bg": 2751, "rotates": false }, - { "id": "mon_fungaloid", "fg": 2560, "bg": 2751, "rotates": false }, - { "id": "mon_fungaloid_dormant", "fg": 2695, "bg": 2751, "rotates": false }, - { "id": "mon_fungaloid_young", "fg": 2561, "bg": 2751, "rotates": false }, - { "id": "mon_gallimimus", "fg": 2567, "bg": 2751, "rotates": false }, - { "id": "mon_gasbomb_hack", "fg": 2568, "bg": 2751, "rotates": false }, - { "id": "mon_gator", "fg": 2569, "rotates": false }, - { "id": "mon_gelatin", "fg": 2570, "bg": 2751, "rotates": false }, - { "id": "mon_generator", "fg": 2571, "bg": 2751, "rotates": false }, - { "id": "mon_giant_cockroach", "fg": 2572, "rotates": false }, - { "id": "mon_giant_cockroach_nymph", "fg": 2573, "rotates": false }, - { "id": "mon_goat", "fg": 2574, "rotates": false }, - { "id": "mon_gozu", "fg": 2575, "bg": 2751, "rotates": false }, - { "id": "mon_graboid", "fg": 2576, "bg": 2751, "rotates": false }, - { "id": "mon_grenade_hack", "fg": 2577, "bg": 2751, "rotates": false }, + { "id": "mon_fungal_blossom", "fg": 2560, "bg": 2751, "rotates": false }, + { "id": "mon_fungal_fighter", "fg": 2561, "bg": 2751, "rotates": false }, + { "id": "mon_fungal_hedgerow", "fg": 2562, "bg": 2751, "rotates": false }, + { "id": "mon_fungal_tendril", "fg": 2563, "bg": 2751, "rotates": false }, + { "id": "mon_fungal_wall", "fg": 2564, "bg": 2751, "rotates": false }, + { "id": "mon_fungaloid", "fg": 2558, "bg": 2751, "rotates": false }, + { "id": "mon_fungaloid_dormant", "fg": 2693, "bg": 2751, "rotates": false }, + { "id": "mon_fungaloid_young", "fg": 2559, "bg": 2751, "rotates": false }, + { "id": "mon_gallimimus", "fg": 2565, "bg": 2751, "rotates": false }, + { "id": "mon_gasbomb_hack", "fg": 2566, "bg": 2751, "rotates": false }, + { "id": "mon_gator", "fg": 2567, "rotates": false }, + { "id": "mon_gelatin", "fg": 2568, "bg": 2751, "rotates": false }, + { "id": "mon_generator", "fg": 2569, "bg": 2751, "rotates": false }, + { "id": "mon_giant_cockroach", "fg": 2570, "rotates": false }, + { "id": "mon_giant_cockroach_nymph", "fg": 2571, "rotates": false }, + { "id": "mon_goat", "fg": 2572, "rotates": false }, + { "id": "mon_gozu", "fg": 2573, "bg": 2751, "rotates": false }, + { "id": "mon_graboid", "fg": 2574, "bg": 2751, "rotates": false }, + { "id": "mon_grenade_hack", "fg": 2575, "bg": 2751, "rotates": false }, { "id": "mon_groundhog", "fg": 2511, "bg": 2751, "rotates": false }, - { "id": "mon_halfworm", "fg": 2578, "bg": 2751, "rotates": false }, - { "id": "mon_hallu_mom", "fg": 2579, "bg": 2751, "rotates": false }, - { "id": "mon_hare", "fg": 2580, "bg": 2751, "rotates": false }, - { "id": "mon_hare_season_winter", "fg": 2581, "bg": 2751, "rotates": false }, - { "id": "mon_headless_dog_thing", "fg": 2582, "bg": 2751, "rotates": false }, - { "id": "mon_hologram", "fg": 2696, "rotates": false }, - { "id": "mon_human_snail", "fg": 2583, "bg": 2751, "rotates": false }, - { "id": "mon_irradiated_wanderer_1", "fg": 2584, "bg": 2751 }, - { "id": "mon_irradiated_wanderer_2", "fg": 2585, "bg": 2751, "rotates": false }, - { "id": "mon_irradiated_wanderer_3", "fg": 2586, "bg": 2751 }, - { "id": "mon_irradiated_wanderer_4", "fg": 2587, "bg": 2751 }, - { "id": "mon_kreck", "fg": 2588, "bg": 2751, "rotates": false }, - { "id": "mon_laserturret", "fg": 2589, "bg": 2751, "rotates": false }, + { "id": "mon_halfworm", "fg": 2576, "bg": 2751, "rotates": false }, + { "id": "mon_hallu_mom", "fg": 2577, "bg": 2751, "rotates": false }, + { "id": "mon_hare", "fg": 2578, "bg": 2751, "rotates": false }, + { "id": "mon_hare_season_winter", "fg": 2579, "bg": 2751, "rotates": false }, + { "id": "mon_headless_dog_thing", "fg": 2580, "bg": 2751, "rotates": false }, + { "id": "mon_hologram", "fg": 2694, "rotates": false }, + { "id": "mon_human_snail", "fg": 2581, "bg": 2751, "rotates": false }, + { "id": "mon_irradiated_wanderer_1", "fg": 2582, "bg": 2751 }, + { "id": "mon_irradiated_wanderer_2", "fg": 2583, "bg": 2751, "rotates": false }, + { "id": "mon_irradiated_wanderer_3", "fg": 2584, "bg": 2751 }, + { "id": "mon_irradiated_wanderer_4", "fg": 2585, "bg": 2751 }, + { "id": "mon_kreck", "fg": 2586, "bg": 2751, "rotates": false }, + { "id": "mon_laserturret", "fg": 2587, "bg": 2751, "rotates": false }, { "id": "mon_lemming", "fg": 2511, "bg": 2751, "rotates": false }, - { "id": "mon_manhack", "fg": 2590, "bg": 2751, "rotates": false }, - { "id": "mon_manhack_acid", "fg": 2591, "rotates": false }, - { "id": "mon_mi_go", "fg": 2593, "bg": 2751, "rotates": false }, - { "id": "mon_mininuke_hack", "fg": 2592, "bg": 2751, "rotates": false }, + { "id": "mon_manhack", "fg": 2588, "bg": 2751, "rotates": false }, + { "id": "mon_manhack_acid", "fg": 2589, "rotates": false }, + { "id": "mon_mi_go", "fg": 2591, "bg": 2751, "rotates": false }, + { "id": "mon_mininuke_hack", "fg": 2590, "bg": 2751, "rotates": false }, { "id": "mon_mink", "fg": 2511, "bg": 2751, "rotates": false }, - { "id": "mon_moose", "fg": 2594, "bg": 2751, "rotates": false }, - { "id": "mon_mosquito", "fg": 2595, "rotates": false }, - { "id": "mon_mosquito_giant", "fg": 2596, "bg": 2751, "rotates": false }, - { "id": "mon_muskrat", "fg": 2611, "rotates": false }, - { "id": "mon_mutant_carp", "fg": 2597, "rotates": false }, - { "id": "mon_mutant_salmon", "fg": 2598, "rotates": false }, - { "id": "mon_one_eye", "fg": 2599, "bg": 2751, "rotates": false }, + { "id": "mon_moose", "fg": 2592, "bg": 2751, "rotates": false }, + { "id": "mon_mosquito", "fg": 2593, "rotates": false }, + { "id": "mon_mosquito_giant", "fg": 2594, "bg": 2751, "rotates": false }, + { "id": "mon_muskrat", "fg": 2609, "rotates": false }, + { "id": "mon_mutant_carp", "fg": 2595, "rotates": false }, + { "id": "mon_mutant_salmon", "fg": 2596, "rotates": false }, + { "id": "mon_one_eye", "fg": 2597, "bg": 2751, "rotates": false }, { "id": "mon_otter", "fg": 2511, "bg": 2751, "rotates": false }, - { "id": "mon_player_blob", "fg": 2600, "bg": 2751, "rotates": false }, - { "id": "mon_pregnant_giant_cockroach", "fg": 2601, "rotates": false }, + { "id": "mon_player_blob", "fg": 2598, "bg": 2751, "rotates": false }, + { "id": "mon_pregnant_giant_cockroach", "fg": 2599, "rotates": false }, { "id": "mon_prototype_cyborg", "fg": 2726, "bg": 2751, "rotates": false }, - { "id": "mon_rabbit", "fg": 2602, "bg": 2751, "rotates": false }, - { "id": "mon_raccoon", "fg": 2603, "bg": 2751, "rotates": false }, - { "id": "mon_rat_king", "fg": 2606, "bg": 2751, "rotates": false }, - { "id": "mon_rattlesnake", "fg": 2604, "bg": 2751, "rotates": false }, - { "id": "mon_rattlesnake_giant", "fg": 2605, "bg": 2751, "rotates": false }, - { "id": "mon_razorclaw", "fg": 2607, "bg": 2751 }, - { "id": "mon_riotbot", "fg": 2608, "bg": 2751, "rotates": false }, - { "id": "mon_secubot", "fg": 2609, "bg": 2751, "rotates": false }, - { "id": "mon_sewer_fish", "fg": 2610, "bg": 2751, "rotates": false }, - { "id": "mon_sewer_rat", "fg": 2611, "bg": 2751, "rotates": false }, - { "id": "mon_sewer_snake", "fg": 2612, "bg": 2751, "rotates": false }, - { "id": "mon_shadow", "fg": 2613, "rotates": false }, - { "id": "mon_shadow_snake", "fg": 2614, "rotates": false }, - { "id": "mon_skeleton", "fg": 2615, "bg": 2751, "rotates": false }, + { "id": "mon_rabbit", "fg": 2600, "bg": 2751, "rotates": false }, + { "id": "mon_raccoon", "fg": 2601, "bg": 2751, "rotates": false }, + { "id": "mon_rat_king", "fg": 2604, "bg": 2751, "rotates": false }, + { "id": "mon_rattlesnake", "fg": 2602, "bg": 2751, "rotates": false }, + { "id": "mon_rattlesnake_giant", "fg": 2603, "bg": 2751, "rotates": false }, + { "id": "mon_razorclaw", "fg": 2605, "bg": 2751 }, + { "id": "mon_riotbot", "fg": 2606, "bg": 2751, "rotates": false }, + { "id": "mon_secubot", "fg": 2607, "bg": 2751, "rotates": false }, + { "id": "mon_sewer_fish", "fg": 2608, "bg": 2751, "rotates": false }, + { "id": "mon_sewer_rat", "fg": 2609, "bg": 2751, "rotates": false }, + { "id": "mon_sewer_snake", "fg": 2610, "bg": 2751, "rotates": false }, + { "id": "mon_shadow", "fg": 2611, "rotates": false }, + { "id": "mon_shadow_snake", "fg": 2612, "rotates": false }, + { "id": "mon_skeleton", "fg": 2613, "bg": 2751, "rotates": false }, { "id": "mon_skeleton_electric", "fg": 2729, "bg": 2751, "rotates": false }, - { "id": "mon_skitterbot", "fg": 2616, "bg": 2751, "rotates": false }, - { "id": "mon_sludge_crawler", "fg": 2617, "bg": 2751, "rotates": false }, - { "id": "mon_spider_cellar_giant", "fg": 2618, "bg": 2751, "rotates": false }, - { "id": "mon_spider_cellar_giant_s", "fg": 2619, "bg": 2751, "rotates": false }, - { "id": "mon_spider_jumping_giant", "fg": 2621, "bg": 2751, "rotates": false }, - { "id": "mon_spider_jumping_giant_mega", "fg": 2622, "rotates": false }, - { "id": "mon_spider_jumping_small", "fg": 2620, "bg": 2751, "rotates": false }, - { "id": "mon_spider_trapdoor", "fg": 2623, "bg": 2751, "rotates": false }, - { "id": "mon_spider_trapdoor_giant", "fg": 2624, "bg": 2751, "rotates": false }, - { "id": "mon_spider_trapdoor_giant_mega", "fg": 2625, "rotates": false }, - { "id": "mon_spider_trapdoor_giant_small", "fg": 2626, "rotates": false }, - { "id": "mon_spider_web", "fg": 2627, "bg": 2751, "rotates": false }, - { "id": "mon_spider_web_giant", "fg": 2627, "bg": 2751, "rotates": false }, - { "id": "mon_spider_web_mega", "fg": 2628, "rotates": false }, - { "id": "mon_spider_web_s", "fg": 2629, "bg": 2751, "rotates": false }, - { "id": "mon_spider_widow_giant", "fg": 2631, "bg": 2751, "rotates": false }, - { "id": "mon_spider_widow_giant_s", "fg": 2632, "bg": 2751, "rotates": false }, - { "id": "mon_spider_widow_small", "fg": 2630, "bg": 2751, "rotates": false }, - { "id": "mon_spider_wolf_giant", "fg": 2634, "bg": 2751, "rotates": false }, - { "id": "mon_spider_wolf_small", "fg": 2633, "bg": 2751, "rotates": false }, - { "id": "mon_spore", "fg": 2635, "bg": 2751, "rotates": false }, - { "id": "mon_squirrel", "fg": 2636, "bg": 2751, "rotates": false }, - { "id": "mon_squirrel_red", "fg": 2636, "bg": 2751, "rotates": false }, - { "id": "mon_titanis", "fg": 2637, "bg": 2751, "rotates": false }, - { "id": "mon_turkey", "fg": 2638, "bg": 2751, "rotates": false }, - { "id": "mon_velociraptor", "fg": 2639, "bg": 2751, "rotates": false }, - { "id": "mon_vinebeast", "fg": 2640, "bg": 2751, "rotates": false }, - { "id": "mon_vortex", "fg": 2641, "bg": 2751, "rotates": false }, - { "id": "mon_w11b10", "fg": 2698, "rotates": false }, - { "id": "mon_w11b20b4", "fg": 2699, "rotates": false }, - { "id": "mon_w11h10", "fg": 2701, "rotates": false }, - { "id": "mon_w12b10", "fg": 2700, "rotates": false }, - { "id": "mon_w12n10", "fg": 2702, "rotates": false }, - { "id": "mon_wasp", "fg": 2642, "bg": 2751, "rotates": false }, + { "id": "mon_skitterbot", "fg": 2614, "bg": 2751, "rotates": false }, + { "id": "mon_sludge_crawler", "fg": 2615, "bg": 2751, "rotates": false }, + { "id": "mon_spider_cellar_giant", "fg": 2616, "bg": 2751, "rotates": false }, + { "id": "mon_spider_cellar_giant_s", "fg": 2617, "bg": 2751, "rotates": false }, + { "id": "mon_spider_jumping_giant", "fg": 2619, "bg": 2751, "rotates": false }, + { "id": "mon_spider_jumping_giant_mega", "fg": 2620, "rotates": false }, + { "id": "mon_spider_jumping_small", "fg": 2618, "bg": 2751, "rotates": false }, + { "id": "mon_spider_trapdoor", "fg": 2621, "bg": 2751, "rotates": false }, + { "id": "mon_spider_trapdoor_giant", "fg": 2622, "bg": 2751, "rotates": false }, + { "id": "mon_spider_trapdoor_giant_mega", "fg": 2623, "rotates": false }, + { "id": "mon_spider_trapdoor_giant_small", "fg": 2624, "rotates": false }, + { "id": "mon_spider_web", "fg": 2625, "bg": 2751, "rotates": false }, + { "id": "mon_spider_web_giant", "fg": 2625, "bg": 2751, "rotates": false }, + { "id": "mon_spider_web_mega", "fg": 2626, "rotates": false }, + { "id": "mon_spider_web_s", "fg": 2627, "bg": 2751, "rotates": false }, + { "id": "mon_spider_widow_giant", "fg": 2629, "bg": 2751, "rotates": false }, + { "id": "mon_spider_widow_giant_s", "fg": 2630, "bg": 2751, "rotates": false }, + { "id": "mon_spider_widow_small", "fg": 2628, "bg": 2751, "rotates": false }, + { "id": "mon_spider_wolf_giant", "fg": 2632, "bg": 2751, "rotates": false }, + { "id": "mon_spider_wolf_small", "fg": 2631, "bg": 2751, "rotates": false }, + { "id": "mon_spore", "fg": 2633, "bg": 2751, "rotates": false }, + { "id": "mon_squirrel", "fg": 2634, "bg": 2751, "rotates": false }, + { "id": "mon_squirrel_red", "fg": 2634, "bg": 2751, "rotates": false }, + { "id": "mon_titanis", "fg": 2635, "bg": 2751, "rotates": false }, + { "id": "mon_turkey", "fg": 2636, "bg": 2751, "rotates": false }, + { "id": "mon_velociraptor", "fg": 2637, "bg": 2751, "rotates": false }, + { "id": "mon_vinebeast", "fg": 2638, "bg": 2751, "rotates": false }, + { "id": "mon_vortex", "fg": 2639, "bg": 2751, "rotates": false }, + { "id": "mon_w11b10", "fg": 2696, "rotates": false }, + { "id": "mon_w11b20b4", "fg": 2697, "rotates": false }, + { "id": "mon_w11h10", "fg": 2699, "rotates": false }, + { "id": "mon_w12b10", "fg": 2698, "rotates": false }, + { "id": "mon_w12n10", "fg": 2700, "rotates": false }, + { "id": "mon_wasp", "fg": 2640, "bg": 2751, "rotates": false }, { "id": "mon_wasp_larvae", "fg": 2526 }, - { "id": "mon_wasp_mega", "fg": 2643 }, - { "id": "mon_wasp_small", "fg": 2644, "rotates": false }, + { "id": "mon_wasp_mega", "fg": 2641 }, + { "id": "mon_wasp_small", "fg": 2642, "rotates": false }, { "id": "mon_weasel", "fg": 2511, "bg": 2751, "rotates": false }, - { "id": "mon_wolf", "fg": 2645, "bg": 2751, "rotates": false }, - { "id": "mon_worm", "fg": 2646, "bg": 2751, "rotates": false }, - { "id": "mon_zhark", "fg": 2647 }, - { "id": "mon_zolf", "fg": 2648, "bg": 2751, "rotates": false }, - { "id": "mon_zolf_shady", "fg": 2649, "rotates": false }, - { "id": "mon_zombear", "fg": 2650, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_acidic", "fg": 2651, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_anklebiter", "fg": 2652, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_armored", "fg": 2653, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_bio_op", "fg": 2654, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_biter", "fg": 2655, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_blind", "fg": 2656, "rotates": false }, + { "id": "mon_wolf", "fg": 2643, "bg": 2751, "rotates": false }, + { "id": "mon_worm", "fg": 2644, "bg": 2751, "rotates": false }, + { "id": "mon_zhark", "fg": 2645 }, + { "id": "mon_zolf", "fg": 2646, "bg": 2751, "rotates": false }, + { "id": "mon_zolf_shady", "fg": 2647, "rotates": false }, + { "id": "mon_zombear", "fg": 2648, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_acidic", "fg": 2649, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_anklebiter", "fg": 2650, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_armored", "fg": 2651, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_bio_op", "fg": 2652, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_biter", "fg": 2653, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_blind", "fg": 2654, "rotates": false }, { "id": "mon_zombie_brainless", "fg": 2733, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_brute", "fg": 2657, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_brute_grappler", "fg": 2658, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_brute_ninja", "fg": 2659, "bg": 2751 }, - { "id": "mon_zombie_brute_shocker", "fg": 2660, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_child_fungus", "fg": 2703, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_child_scorched", "fg": 2661, "bg": 2751 }, - { "id": "mon_zombie_child_scorched_2", "fg": 2662, "rotates": false }, - { "id": "mon_zombie_cop", "fg": 2663, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_crawler", "fg": 2664, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_creepy", "fg": 2665, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_dancer", "fg": 2666, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_dog", "fg": 2667, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_brute", "fg": 2655, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_brute_grappler", "fg": 2656, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_brute_ninja", "fg": 2657, "bg": 2751 }, + { "id": "mon_zombie_brute_shocker", "fg": 2658, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_child_fungus", "fg": 2701, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_child_scorched", "fg": 2659, "bg": 2751 }, + { "id": "mon_zombie_child_scorched_2", "fg": 2660, "rotates": false }, + { "id": "mon_zombie_cop", "fg": 2661, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_crawler", "fg": 2662, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_creepy", "fg": 2663, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_dancer", "fg": 2664, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_dog", "fg": 2665, "bg": 2751, "rotates": false }, { "id": "mon_zombie_ears", "fg": 2734, "bg": 2751 }, - { "id": "mon_zombie_electric", "fg": 2668, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_electric", "fg": 2666, "bg": 2751, "rotates": false }, { "id": "mon_zombie_fiend", "fg": 2735, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_fireman", "fg": 2669, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_fungus", "fg": [ 2670, 2736 ], "bg": 2751, "rotates": false }, - { "id": "mon_zombie_gasbag", "fg": 2671, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_grappler", "fg": 2672, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_hazmat", "fg": 2673, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_hollow", "fg": 2674, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_hunter", "fg": 2675, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_jackson", "fg": 2676, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_fireman", "fg": 2667, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_fungus", "fg": [ 2668, 2736 ], "bg": 2751, "rotates": false }, + { "id": "mon_zombie_gasbag", "fg": 2669, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_grappler", "fg": 2670, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_hazmat", "fg": 2671, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_hollow", "fg": 2672, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_hunter", "fg": 2673, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_jackson", "fg": 2674, "bg": 2751, "rotates": false }, { "id": "mon_zombie_kevlar_1", "fg": 2740, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_mancroc", "fg": 2677, "bg": 2751 }, - { "id": "mon_zombie_master", "fg": 2678, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_military_pilot", "fg": 2697, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_necro", "fg": 2679, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_predator", "fg": 2680, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_rot", "fg": 2681, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_scorched", "fg": 2682, "bg": 2751 }, - { "id": "mon_zombie_shady", "fg": 2683, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_shady_ghost", "fg": 2684, "rotates": false }, - { "id": "mon_zombie_shriekling", "fg": 2685, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_mancroc", "fg": 2675, "bg": 2751 }, + { "id": "mon_zombie_master", "fg": 2676, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_military_pilot", "fg": 2695, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_necro", "fg": 2677, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_predator", "fg": 2678, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_rot", "fg": 2679, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_scorched", "fg": 2680, "bg": 2751 }, + { "id": "mon_zombie_shady", "fg": 2681, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_shady_ghost", "fg": 2682, "rotates": false }, + { "id": "mon_zombie_shriekling", "fg": 2683, "bg": 2751, "rotates": false }, { "id": "mon_zombie_skull", "fg": 2742, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_smoker", "fg": 2686, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_snotgobbler", "fg": 2687, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_soldier", "fg": 2688, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_smoker", "fg": 2684, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_snotgobbler", "fg": 2685, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_soldier", "fg": 2686, "bg": 2751, "rotates": false }, { "id": "mon_zombie_soldier_acid_1", "fg": 2743, "bg": 2751, "rotates": false }, { "id": "mon_zombie_soldier_acid_2", "fg": 2744, "bg": 2751, "rotates": false }, { "id": "mon_zombie_soldier_blackops_1", "fg": 2745, "bg": 2751, "rotates": false }, { "id": "mon_zombie_soldier_blackops_2", "fg": 2746, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_spitter", "fg": 2689, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_sproglodyte", "fg": 2690, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_spitter", "fg": 2687, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_sproglodyte", "fg": 2688, "bg": 2751, "rotates": false }, { "id": "mon_zombie_static", "fg": 2747, "bg": 2751, "rotates": false }, - { "id": "mon_zombie_swimmer", "fg": 2691, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_swimmer", "fg": 2689, "bg": 2751, "rotates": false }, { "id": "mon_zombie_thorny", "fg": 2748, "rotates": false, "bg": 2751 }, - { "id": "mon_zombie_waif", "fg": 2692, "bg": 2751, "rotates": false }, + { "id": "mon_zombie_waif", "fg": 2690, "bg": 2751, "rotates": false }, { "id": "mon_zombie_wretched", "fg": 2749, "bg": 2751, "rotates": false }, - { "id": "mon_zoose", "fg": 2693, "bg": 2751, "rotates": false }, - { "id": "mon_zougar", "fg": 2694, "bg": 2751, "rotates": false }, + { "id": "mon_zoose", "fg": 2691, "bg": 2751, "rotates": false }, + { "id": "mon_zougar", "fg": 2692, "bg": 2751, "rotates": false }, { "id": "mon_triffid", "fg": 2730, "bg": 2751 }, { "id": "mon_triffid_sprig", "fg": 2731, "bg": 2751 }, { "id": "mon_triffid_young", "fg": 2732, "bg": 2751 }, @@ -9187,13 +9185,15 @@ { "id": "mon_cookie", "fg": 2468 }, { "id": "mon_cow_calf_choc", "fg": 2469 }, { "id": "mon_cow_choc", "fg": 2470 }, - { "id": "lemming_shadow", "fg": 2712 }, - { "id": "mon_boar_wild", "fg": 2713 }, - { "id": "mon_boar_wild_piglet", "fg": 2714 }, - { "id": "mon_copbot", "fg": 2715 }, - { "id": "mon_cow", "fg": 2716 }, - { "id": "mon_cow_calf", "fg": 2717 }, - { "id": "mon_fish_eel", "fg": 2718 }, + { "id": "lemming_shadow", "fg": 2710 }, + { "id": "mon_boar_wild", "fg": 2711 }, + { "id": "mon_boar_wild_piglet", "fg": 2712 }, + { "id": "mon_copbot", "fg": 2713 }, + { "id": "mon_cow", "fg": 2714 }, + { "id": "mon_cow_calf", "fg": 2715 }, + { "id": "mon_fish_eel", "fg": 2716 }, + { "id": "mon_frog", "fg": 2717 }, + { "id": "mon_frog_small", "fg": 2718 }, { "id": "mon_gracke", "fg": 2719 }, { "id": "mon_grocerybot", "fg": 2720 }, { "id": "mon_grocerybot_busted", "fg": 2721 }, @@ -9230,9 +9230,491 @@ { "id": "vp_recharge_station", "fg": 4404 } ] }, + { + "file": "overmapFiller.png", + "//": "range 4624 to 4847", + "tiles": [ + { "id": "2silos", "fg": [ 4692, 4692, 4692, 4692 ], "bg": [ 4688, 4689, 4690, 4691 ], "rotates": true }, + { + "id": [ + "airliner_1a", + "airliner_2a", + "airliner_3a", + "airliner_1b", + "airliner_3b", + "airliner_1c", + "airliner_2c", + "airliner_2d", + "airliner_3d", + "airliner_1e", + "airliner_2e", + "airliner_3e", + "airliner_1f", + "airliner_3f", + "airliner_1g", + "airliner_1h", + "airliner_2h", + "airliner_3h", + "airliner_1i", + "airliner_2i", + "airliner_3i", + "airliner_1j", + "airliner_3j" + ], + "fg": 4843, + "rotates": false + }, + { "id": "airliner_1d", "fg": 4801, "bg": 4843, "rotates": true }, + { "id": "airliner_2b", "fg": 4799, "bg": 4843, "rotates": true }, + { "id": "airliner_2f", "fg": 4802, "bg": 4843, "rotates": true }, + { "id": "airliner_2g", "fg": 4804, "bg": 4843, "rotates": true }, + { "id": "airliner_2j", "fg": 4805, "bg": 4843, "rotates": true }, + { "id": "airliner_3c", "fg": 4800, "bg": 4843, "rotates": true }, + { "id": "airliner_3g", "fg": 4803, "bg": 4843, "rotates": true }, + { "id": "ants_end", "fg": [ 4747, 4748, 4749, 4750 ], "bg": 4746, "rotates": true }, + { "id": "ants_es", "fg": 4753, "bg": 4746, "rotates": false }, + { "id": "ants_esw", "fg": 4757, "bg": 4746, "rotates": false }, + { "id": "ants_ew", "fg": 4752, "bg": 4746, "rotates": false }, + { "id": "ants_food", "fg": 4763, "rotates": false }, + { "id": "ants_isolated", "fg": 4762, "bg": 4746, "rotates": false }, + { "id": "ants_larvae", "fg": 4764, "rotates": false }, + { "id": "ants_ne", "fg": 4756, "bg": 4746, "rotates": false }, + { "id": "ants_nes", "fg": 4760, "bg": 4746, "rotates": false }, + { "id": "ants_nesw", "fg": 4761, "bg": 4746, "rotates": false }, + { "id": "ants_new", "fg": 4759, "bg": 4746, "rotates": false }, + { "id": "ants_ns", "fg": 4751, "bg": 4746, "rotates": false }, + { "id": "ants_nsw", "fg": 4758, "bg": 4746, "rotates": false }, + { "id": "ants_queen", "fg": 4765, "rotates": false }, + { "id": "ants_sw", "fg": 4754, "bg": 4746, "rotates": false }, + { "id": "ants_wn", "fg": 4755, "bg": 4746, "rotates": false }, + { + "id": [ + "basement", + "house_01_basement", + "house_02_basement", + "house_03_basement", + "house_04_basement", + "house_05_basement", + "house_05_ab_basement", + "house_06_basement", + "house_07_basement", + "house_08_basement", + "house_09_basement", + "house_10_basement", + "house_11_basement", + "house_12_basement", + "house_13_basement", + "house_14_basement", + "house_15_basement", + "house_16_basement", + "house_17_basement", + "house_18_basement", + "house_19_basement", + "house_20_basement", + "house_21_basement", + "house_22_basement", + "house_23_basement", + "house_24_basement", + "house_25_basement", + "house_26_basement", + "house_27_basement", + "house_28_basement", + "house_29_basement", + "house_30_basement", + "house_31_basement", + "house_32_basement", + "house_33_basement", + "house_34_basement", + "house_35_basement", + "house_36_basement", + "house_37_basement", + "house_38_basement", + "house_39_basement", + "house_40_basement", + "house_41_basement", + "house_42_basement", + "house_detatched1_basement", + "house_detatched2_basement", + "house_detatched3_basement", + "house_detatched4_basement", + "house_detatched5_basement", + "house_detatched6_basement", + "house_detatched7_basement", + "house_detatched8_basement", + "house_detatched9_basement", + "house_detatched10_basement", + "house_w_1_basement", + "house_w_2_basement", + "house_w_3_basement", + "house_w_4_basement", + "house_w_5_basement", + "house_w_6_basement", + "house_toolshed_basement", + "house_garage_basement", + "house_garage2_basement", + "house_garage3_basement", + "house_garage4_basement", + "house_garage5_basement", + "house_garage6_basement", + "house_garage7_basement", + "house_garage8_basement", + "house_patio_basement", + "basement_survival", + "house_2story_basement", + "house_gardener_basement", + "house_rv_basement", + "basement_chem", + "basement_chem2", + "rural_house2_basement", + "basement_meth", + "basement_weed", + "house_crack3_basement", + "basement_bionic", + "house_porch_basement", + "basement_bionic_decoy", + "house_modern_1_basement", + "basement_messed" + ], + "fg": 4728, + "rotates": true + }, + { "id": "bridge", "fg": [ 4840, 4841, 4840, 4841 ], "bg": [ 4632, 4636, 4632, 4636 ], "rotates": true }, + { "id": "cave", "fg": 4842, "rotates": false }, + { "id": "cemetery_4square_00", "fg": [ 4710, 4711, 4712, 4713 ], "rotates": true }, + { "id": "cemetery_4square_01", "fg": [ 4718, 4719, 4720, 4721 ], "rotates": true }, + { "id": "cemetery_4square_10", "fg": [ 4714, 4715, 4716, 4717 ], "rotates": true }, + { "id": "cemetery_4square_11", "fg": [ 4722, 4723, 4724, 4725 ], "rotates": true }, + { + "id": "construction_site", + "fg": [ 4701, 4701, 4701, 4701 ], + "bg": [ 4694, 4695, 4696, 4697 ], + "rotates": true + }, + { "id": "crater", "fg": 4806, "rotates": false }, + { "id": "dirt_road", "fg": [ 4678, 4679, 4678, 4679 ], "bg": 4625, "rotates": true }, + { "id": "dirt_road_3way", "fg": [ 4684, 4685, 4686, 4687 ], "bg": 4625, "rotates": true }, + { "id": "dirt_road_3way_forest", "fg": [ 4684, 4685, 4686, 4687 ], "bg": 4677, "rotates": true }, + { "id": "dirt_road_forest", "fg": [ 4678, 4679, 4678, 4679 ], "bg": 4677, "rotates": true }, + { "id": "dirt_road_turn1", "fg": [ 4683, 4680, 4681, 4682 ], "bg": 4625, "rotates": true }, + { "id": "dirt_road_turn1_forest", "fg": [ 4683, 4680, 4681, 4682 ], "bg": 4677, "rotates": true }, + { "id": "dirt_road_turn", "fg": [ 4680, 4681, 4682, 4683 ], "bg": 4625, "rotates": true }, + { "id": "dirt_road_turn_forest", "fg": [ 4680, 4681, 4682, 4683 ], "bg": 4677, "rotates": true }, + { "id": "empty_rock", "fg": 4727, "rotates": false }, + { "id": "field", "fg": 4843, "rotates": false }, + { "id": "forest", "fg": 4643, "rotates": false }, + { "id": "forest_thick", "fg": 4644, "rotates": false }, + { "id": "forest_trail_end", "fg": [ 4661, 4662, 4663, 4664 ], "bg": 4677, "rotates": true }, + { "id": "forest_trail_es", "fg": 4668, "bg": 4677, "rotates": false }, + { "id": "forest_trail_esw", "fg": 4675, "bg": 4677, "rotates": false }, + { "id": "forest_trail_ew", "fg": 4671, "bg": 4677, "rotates": false }, + { "id": "forest_trail_isolated", "fg": 4665, "bg": 4677, "rotates": false }, + { "id": "forest_trail_ne", "fg": 4666, "bg": 4677, "rotates": false }, + { "id": "forest_trail_nes", "fg": 4669, "bg": 4677, "rotates": false }, + { "id": "forest_trail_nesw", "fg": 4676, "bg": 4677, "rotates": false }, + { "id": "forest_trail_new", "fg": 4672, "bg": 4677, "rotates": false }, + { "id": "forest_trail_ns", "fg": 4667, "bg": 4677, "rotates": false }, + { "id": "forest_trail_nsw", "fg": 4674, "bg": 4677, "rotates": false }, + { "id": "forest_trail_sw", "fg": 4673, "bg": 4677, "rotates": false }, + { "id": "forest_trail_wn", "fg": 4670, "bg": 4677, "rotates": false }, + { "id": "forest_water", "fg": 4659, "rotates": false }, + { "id": "fungal_bloom", "fg": 4845, "rotates": false }, + { "id": "fungal_flowers", "fg": 4844, "rotates": false }, + { "id": "fungal_tower", "fg": 4624, "rotates": false }, + { "id": [ "furniture" ], "fg": [ 4726, 4726, 4726, 4726 ], "bg": [ 4694, 4695, 4696, 4697 ], "rotates": true }, + { "id": "helipad_ne", "fg": [ 4796, 4797, 4798, 4795 ], "bg": 4625, "rotates": true }, + { "id": "helipad_nw", "fg": [ 4795, 4796, 4797, 4798 ], "bg": 4625, "rotates": true }, + { "id": "helipad_se", "fg": [ 4797, 4798, 4795, 4796 ], "bg": 4625, "rotates": true }, + { "id": "helipad_sw", "fg": [ 4798, 4795, 4796, 4797 ], "bg": 4625, "rotates": true }, + { "id": "hospital_1", "fg": [ 4767, 4768, 4769, 4770 ], "rotates": true }, + { "id": "hospital_2", "fg": [ 4771, 4772, 4773, 4774 ], "rotates": true }, + { "id": "hospital_3", "fg": [ 4775, 4776, 4777, 4778 ], "rotates": true }, + { "id": "hospital_4", "fg": [ 4779, 4780, 4781, 4782 ], "rotates": true }, + { "id": "hospital_5", "fg": 4766, "rotates": false }, + { "id": "hospital_6", "fg": [ 4781, 4782, 4779, 4780 ], "rotates": true }, + { "id": "hospital_7", "fg": [ 4783, 4784, 4785, 4786 ], "rotates": true }, + { "id": "hospital_8", "fg": [ 4787, 4788, 4789, 4790 ], "rotates": true }, + { "id": "hospital_9", "fg": [ 4791, 4792, 4793, 4794 ], "rotates": true }, + { + "id": [ + "house_01", + "house_02", + "house_03", + "house_04", + "house_05", + "house_05ab", + "house_06", + "house_07", + "house_08", + "house_09", + "house_10", + "house_11", + "house_12", + "house_13", + "house_14", + "house_15", + "house_16", + "house_17", + "house_18", + "house_19", + "house_20", + "house_21", + "house_22", + "house_23", + "house_24", + "house_25", + "house_26", + "house_27", + "house_28", + "house_29", + "house_30", + "house_31", + "house_32", + "house_33", + "house_34", + "house_35", + "house_36", + "house_37", + "house_38", + "house_39", + "house_40", + "house_41", + "house_42", + "house_2story_base", + "house_dogs", + "house_detatched1", + "house_detatched2", + "house_detatched3", + "house_detatched4", + "house_detatched5", + "house_detatched6", + "house_detatched7", + "house_detatched8", + "house_detatched9", + "house_detatched10", + "house_porch", + "house_w_1", + "house_w_2", + "house_w_3", + "house_w_4", + "house_w_5", + "house_w_6", + "house_wooded", + "house_patio", + "house_vacant", + "house_vacant2", + "house_gardener", + "rural_house1", + "rural_house2", + "house_library", + "house_quiverfull", + "house_rv", + "house_crack1", + "house_crack2", + "house_crack3", + "house_prepper" + ], + "fg": [ 4698, 4698, 4698, 4698 ], + "bg": [ 4694, 4695, 4696, 4697 ], + "rotates": true + }, + { + "id": [ + "house_duplex1", + "house_duplex2", + "house_duplex3", + "house_duplex4", + "house_duplex5", + "house_duplex6", + "house_duplex7", + "house_duplex8", + "house_duplex9", + "house_duplex10", + "house_duplex11", + "duplex" + ], + "fg": [ 4700, 4700, 4700, 4700 ], + "bg": [ 4694, 4695, 4696, 4697 ], + "rotates": true + }, + { "id": "house_farm", "fg": [ 4693, 4693, 4693, 4693 ], "bg": [ 4690, 4691, 4688, 4689 ], "rotates": true }, + { + "id": [ + "house_garage", + "house_toolshed", + "house_garage2", + "house_garage3", + "house_garage4", + "house_garage5", + "house_garage6", + "house_garage7", + "house_garage8" + ], + "fg": [ 4699, 4699, 4699, 4699 ], + "bg": [ 4694, 4695, 4696, 4697 ], + "rotates": true + }, + { "id": "lake_shore", "fg": 4658, "rotates": false }, + { "id": "mission_arrow_down", "fg": 4836, "rotates": false }, + { "id": "mission_arrow_e", "fg": 4828, "rotates": false }, + { "id": "mission_arrow_n", "fg": 4827, "rotates": false }, + { "id": "mission_arrow_ne", "fg": 4832, "rotates": false }, + { "id": "mission_arrow_nw", "fg": 4831, "rotates": false }, + { "id": "mission_arrow_s", "fg": 4829, "rotates": false }, + { "id": "mission_arrow_se", "fg": 4833, "rotates": false }, + { "id": "mission_arrow_sw", "fg": 4834, "rotates": false }, + { "id": "mission_arrow_up", "fg": 4835, "rotates": false }, + { "id": "mission_arrow_w", "fg": 4830, "rotates": false }, + { "id": "mission_cursor", "fg": 4837, "rotates": false }, + { + "id": [ "office_cubical", "office_cubical_1" ], + "fg": [ 4808, 4808, 4808, 4808 ], + "bg": [ 4694, 4695, 4696, 4697 ], + "rotates": true + }, + { "id": "park", "fg": [ 4643, 4643, 4643, 4643 ], "bg": [ 4694, 4695, 4696, 4697 ], "rotates": true }, + { "id": [ "pavilion", "pavilion_1" ], "fg": 4702, "bg": 4843, "rotates": false }, + { "id": "pond_field", "fg": 4807, "rotates": true }, + { + "id": [ "pool", "pool_1", "pool_2", "pool_3", "pool_4", "pool_5", "pool_6" ], + "fg": 4809, + "bg": [ 4694, 4695, 4696, 4697 ], + "rotates": true + }, + { "id": "river", "fg": [ 4654, 4655, 4656, 4657 ], "rotates": true }, + { "id": "river_c_not_ne", "fg": 4649, "rotates": false }, + { "id": "river_c_not_nw", "fg": 4646, "rotates": false }, + { "id": "river_c_not_se", "fg": 4648, "rotates": false }, + { "id": "river_c_not_sw", "fg": 4647, "rotates": false }, + { "id": [ "river_center", "lake_surface", "lake_water_cube" ], "fg": 4645, "rotates": false }, + { "id": "river_ne", "fg": 4650, "rotates": false }, + { "id": "river_nw", "fg": 4653, "rotates": false }, + { "id": "river_se", "fg": 4651, "rotates": false }, + { "id": "river_sw", "fg": 4652, "rotates": false }, + { "id": "road_end", "fg": [ 4626, 4627, 4628, 4629 ], "rotates": true }, + { "id": "road_es", "fg": 4633, "rotates": false }, + { "id": "road_esw", "fg": 4640, "rotates": false }, + { "id": "road_ew", "fg": 4636, "rotates": false }, + { "id": "road_isolated", "fg": 4630, "rotates": false }, + { "id": "road_ne", "fg": 4631, "rotates": false }, + { "id": "road_nes", "fg": 4634, "rotates": false }, + { "id": "road_nesw", "fg": 4641, "rotates": false }, + { "id": "road_nesw_manhole", "fg": 4642, "rotates": false }, + { "id": "road_new", "fg": 4637, "rotates": false }, + { "id": "road_ns", "fg": 4632, "rotates": false }, + { "id": "road_nsw", "fg": 4639, "rotates": false }, + { "id": "road_sw", "fg": 4638, "rotates": false }, + { "id": "road_wn", "fg": 4635, "rotates": false }, + { + "id": [ "s_clothes", "s_clothes_1", "s_clothes_2", "s_clothes_3", "s_clothes_4", "s_clothes_5", "s_clothes_6" ], + "fg": [ 4705, 4705, 4705, 4705 ], + "bg": [ 4694, 4695, 4696, 4697 ], + "rotates": true + }, + { + "id": [ "s_garage", "s_garage_1" ], + "fg": [ 4810, 4810, 4810, 4810 ], + "bg": [ 4694, 4695, 4696, 4697 ], + "rotates": true + }, + { + "id": [ "s_grocery", "s_grocery_1" ], + "fg": [ 4708, 4708, 4708, 4708 ], + "bg": [ 4694, 4695, 4696, 4697 ], + "rotates": true + }, + { + "id": [ "s_gun", "s_gun_1", "s_gun_2", "s_gun_3", "s_gun_4" ], + "fg": [ 4703, 4703, 4703, 4703 ], + "bg": [ 4694, 4695, 4696, 4697 ], + "rotates": true + }, + { + "id": [ "s_hardware", "s_hardware_1", "s_hardware_2", "s_hardware_3" ], + "fg": [ 4706, 4706, 4706, 4706 ], + "bg": [ 4694, 4695, 4696, 4697 ], + "rotates": true + }, + { + "id": [ "s_restaurant_fast", "s_restaurant_fast_1", "s_restaurant_foodplace" ], + "fg": [ 4709, 4709, 4709, 4709 ], + "bg": [ 4694, 4695, 4696, 4697 ], + "rotates": true + }, + { "id": "sewer_end", "fg": [ 4730, 4731, 4732, 4733 ], "bg": 4729, "rotates": true }, + { "id": "sewer_es", "fg": 4736, "bg": 4729, "rotates": false }, + { "id": "sewer_esw", "fg": 4740, "bg": 4729, "rotates": false }, + { "id": "sewer_ew", "fg": 4735, "bg": 4729, "rotates": false }, + { "id": "sewer_isolated", "fg": 4745, "bg": 4729, "rotates": false }, + { "id": "sewer_ne", "fg": 4739, "bg": 4729, "rotates": false }, + { "id": "sewer_nes", "fg": 4743, "bg": 4729, "rotates": false }, + { "id": "sewer_nesw", "fg": 4744, "bg": 4729, "rotates": false }, + { "id": "sewer_new", "fg": 4742, "bg": 4729, "rotates": false }, + { "id": "sewer_ns", "fg": 4734, "bg": 4729, "rotates": false }, + { "id": "sewer_nsw", "fg": 4741, "bg": 4729, "rotates": false }, + { "id": "sewer_sw", "fg": 4737, "bg": 4729, "rotates": false }, + { "id": "sewer_wn", "fg": 4738, "bg": 4729, "rotates": false }, + { + "id": [ "shelter", "shelter_1", "shelter_2", "shelter_vandal", "shelter_1_vandal", "shelter_2_vandal" ], + "fg": [ 4839, 4839, 4839, 4839 ], + "bg": [ 4628, 4629, 4626, 4627 ], + "rotates": true + }, + { + "id": "small_wooded_trail", + "fg": [ 4707, 4707, 4707, 4707 ], + "bg": [ 4694, 4695, 4696, 4697 ], + "rotates": true + }, + { "id": "subway_end", "fg": [ 4730, 4731, 4732, 4733 ], "bg": [ 4812, 4813, 4814, 4815 ], "rotates": true }, + { "id": "subway_es", "fg": 4736, "bg": 4818, "rotates": false }, + { "id": "subway_esw", "fg": 4740, "bg": 4822, "rotates": false }, + { "id": "subway_ew", "fg": 4735, "bg": 4817, "rotates": false }, + { "id": "subway_isolated", "fg": 4745, "bg": 4811, "rotates": false }, + { "id": "subway_ne", "fg": 4739, "bg": 4821, "rotates": false }, + { "id": "subway_nes", "fg": 4743, "bg": 4825, "rotates": false }, + { "id": "subway_nesw", "fg": 4744, "bg": 4826, "rotates": false }, + { "id": "subway_new", "fg": 4742, "bg": 4824, "rotates": false }, + { "id": "subway_ns", "fg": 4734, "bg": 4816, "rotates": false }, + { "id": "subway_nsw", "fg": 4741, "bg": 4823, "rotates": false }, + { "id": "subway_sw", "fg": 4737, "bg": 4819, "rotates": false }, + { "id": "subway_wn", "fg": 4738, "bg": 4820, "rotates": false }, + { "id": "temple_stairs", "fg": 4838, "rotates": false }, + { "id": [ "trailhead_shack_z0", "trailhead_outhouse_z0", "trailhead" ], "fg": 4660, "rotates": true }, + { + "id": [ + "urban_32_1", + "urban_32_2", + "urban_32_3", + "urban_32_4", + "urban_32_5", + "urban_32_6", + "urban_32_7", + "urban_32_8", + "urban_32_9", + "urban_32_10", + "urban_32_11", + "urban_32_12", + "urban_32_13", + "urban_32_14", + "urban_32_15", + "urban_32_16", + "urban_32_17", + "urban_32_18", + "urban_32_19", + "urban_32_20", + "urban_32_21", + "fire_station" + ], + "fg": [ 4704, 4704, 4704, 4704 ], + "bg": [ 4694, 4695, 4696, 4697 ], + "rotates": true + }, + { "id": "unknown_terrain", "fg": 4846 } + ] + }, { "file": "tall.png", - "//": "range 4624 to 4751", + "//": "range 4848 to 4975", "sprite_width": 32, "sprite_height": 48, "sprite_offset_x": 0, @@ -9242,11 +9724,11 @@ "id": "f_alien_zapper", "animated": true, "fg": [ - { "weight": 36, "sprite": 4631 }, - { "weight": 7, "sprite": 4632 }, - { "weight": 7, "sprite": 4633 }, - { "weight": 7, "sprite": 4634 }, - { "weight": 7, "sprite": 4635 } + { "weight": 36, "sprite": 4855 }, + { "weight": 7, "sprite": 4856 }, + { "weight": 7, "sprite": 4857 }, + { "weight": 7, "sprite": 4858 }, + { "weight": 7, "sprite": 4859 } ], "rotates": false }, @@ -9254,94 +9736,94 @@ "id": "mon_demon_spider", "animated": true, "fg": [ - { "weight": 15, "sprite": 4639 }, - { "weight": 15, "sprite": 4640 }, - { "weight": 15, "sprite": 4641 }, - { "weight": 15, "sprite": 4640 } + { "weight": 15, "sprite": 4863 }, + { "weight": 15, "sprite": 4864 }, + { "weight": 15, "sprite": 4865 }, + { "weight": 15, "sprite": 4864 } ], "rotates": false }, { "id": "mon_marshmallow_buff", - "fg": [ { "weight": 1, "sprite": 4642 }, { "weight": 1, "sprite": 4643 } ], + "fg": [ { "weight": 1, "sprite": 4866 }, { "weight": 1, "sprite": 4867 } ], "bg": [ ], "rotates": false }, - { "id": "mon_nursebot", "fg": [ 4644, 4645, 4646 ], "rotates": false }, + { "id": "mon_nursebot", "fg": [ 4868, 4869, 4870 ], "rotates": false }, { "id": "mon_firefly", "animated": true, "fg": [ - { "weight": 15, "sprite": 4648 }, - { "weight": 15, "sprite": 4649 }, - { "weight": 15, "sprite": 4650 }, - { "weight": 15, "sprite": 4649 } - ] - }, - { "id": "overlay_worn_10gal_hat", "fg": 4652, "rotates": false }, - { "id": "overlay_worn_bowhat", "fg": 4653, "rotates": false }, - { "id": "overlay_worn_eboshi", "fg": 4654, "rotates": false }, - { "id": [ "overlay_worn_fedora", "fedora" ], "fg": 4655, "rotates": false }, - { "id": "overlay_worn_firehelmet", "fg": 4656, "rotates": false }, - { "id": "overlay_worn_hat_chef", "fg": 4657, "rotates": false }, - { "id": "overlay_worn_hat_hard", "fg": 4658, "rotates": false }, - { "id": "overlay_worn_hat_hard_hooded", "fg": 4659, "rotates": false }, - { "id": "overlay_worn_hat_sombrero", "fg": 4660, "rotates": false }, - { "id": "overlay_worn_helmet_kabuto", "fg": 4661, "rotates": false }, - { "id": "overlay_worn_miner_hat", "fg": 4662, "rotates": false }, - { "id": "overlay_worn_miner_hat_on", "fg": 4663, "rotates": false }, - { "id": "overlay_worn_pickelhaube", "fg": 4664, "rotates": false }, - { "id": "overlay_worn_porkpie", "fg": 4665, "rotates": false }, - { "id": "overlay_worn_straw_fedora", "fg": 4666, "rotates": false }, - { "id": "overlay_worn_straw_hat", "fg": 4667, "rotates": false }, - { "id": "overlay_worn_tinfoil_hat", "fg": 4668, "rotates": false }, - { "id": "overlay_worn_tophat", "fg": 4669, "rotates": false }, - { "id": "overlay_worn_veil_wedding", "fg": 4670, "rotates": false }, - { "id": "overlay_worn_welding_mask_crude_raised", "fg": 4671, "rotates": false }, - { "id": "overlay_worn_welding_mask_raised", "fg": 4672, "rotates": false }, - { "id": "overlay_effect_badpoison", "fg": 4674 }, - { "id": "overlay_effect_bleed", "fg": 4675 }, - { "id": "overlay_effect_bouldering", "fg": 4676 }, - { "id": "overlay_effect_common_cold", "fg": 4677 }, - { "id": "overlay_effect_dazed", "fg": 4678 }, - { "id": [ "overlay_effect_deaf", "overlay_effect_earphones" ], "fg": 4679 }, - { "id": "overlay_effect_downed", "fg": 4680 }, - { "id": "overlay_effect_drunk", "fg": 4681 }, - { "id": [ "overlay_effect_flu", "overlay_effect_Influenza" ], "fg": 4682 }, - { "id": [ "overlay_effect_foodpoison", "overlay_effect_nausea" ], "fg": 4683 }, - { "id": "overlay_effect_fungus", "fg": 4684 }, - { "id": "overlay_effect_grabbed", "fg": 4685 }, - { "id": "overlay_female_effect_haslight", "fg": 4694 }, - { "id": "overlay_male_effect_haslight", "fg": 4695 }, - { "id": "overlay_effect_high", "fg": 4686 }, - { "id": "overlay_effect_paralyzepoison", "fg": 4687 }, - { "id": "overlay_effect_poison", "fg": 4688 }, - { "id": "overlay_effect_sleep", "fg": 4689 }, - { "id": "overlay_effect_spores", "fg": 4690 }, - { "id": "overlay_effect_stunned", "fg": 4691 }, - { "id": "overlay_effect_visuals", "fg": 4692 }, - { "id": [ "overlay_effect_winded", "overlay_effect_asthma" ], "fg": 4693 }, - { "id": "overlay_female_mutation_hair_black_fro", "fg": 4697, "rotates": false }, - { "id": "overlay_female_mutation_hair_gray_fro", "fg": 4700, "rotates": false }, - { "id": "overlay_female_mutation_hair_blond_fro", "fg": 4698, "rotates": false }, - { "id": "overlay_female_mutation_hair_brown_fro", "fg": 4699, "rotates": false }, - { "id": "overlay_female_mutation_hair_white_fro", "fg": 4702, "rotates": false }, - { "id": "overlay_female_mutation_hair_red_fro", "fg": 4701, "rotates": false }, - { "id": "overlay_male_mutation_hair_black_fro", "fg": 4703, "rotates": false }, - { "id": "overlay_male_mutation_hair_gray_fro", "fg": 4706, "rotates": false }, - { "id": "overlay_male_mutation_hair_blond_fro", "fg": 4704, "rotates": false }, - { "id": "overlay_male_mutation_hair_brown_fro", "fg": 4705, "rotates": false }, - { "id": "overlay_male_mutation_hair_white_fro", "fg": 4708, "rotates": false }, - { "id": "overlay_male_mutation_hair_red_fro", "fg": 4707, "rotates": false }, - { "id": "overlay_mutation_hair_black_mohawk", "fg": 4709, "rotates": false }, - { "id": "overlay_mutation_hair_gray_mohawk", "fg": 4712, "rotates": false }, - { "id": "overlay_mutation_hair_blond_mohawk", "fg": 4710, "rotates": false }, - { "id": "overlay_mutation_hair_brown_mohawk", "fg": 4711, "rotates": false }, - { "id": "overlay_mutation_hair_white_mohawk", "fg": 4714, "rotates": false }, - { "id": "overlay_mutation_hair_red_mohawk", "fg": 4713, "rotates": false }, + { "weight": 15, "sprite": 4872 }, + { "weight": 15, "sprite": 4873 }, + { "weight": 15, "sprite": 4874 }, + { "weight": 15, "sprite": 4873 } + ] + }, + { "id": "overlay_worn_10gal_hat", "fg": 4876, "rotates": false }, + { "id": "overlay_worn_bowhat", "fg": 4877, "rotates": false }, + { "id": "overlay_worn_eboshi", "fg": 4878, "rotates": false }, + { "id": [ "overlay_worn_fedora", "fedora" ], "fg": 4879, "rotates": false }, + { "id": "overlay_worn_firehelmet", "fg": 4880, "rotates": false }, + { "id": "overlay_worn_hat_chef", "fg": 4881, "rotates": false }, + { "id": "overlay_worn_hat_hard", "fg": 4882, "rotates": false }, + { "id": "overlay_worn_hat_hard_hooded", "fg": 4883, "rotates": false }, + { "id": "overlay_worn_hat_sombrero", "fg": 4884, "rotates": false }, + { "id": "overlay_worn_helmet_kabuto", "fg": 4885, "rotates": false }, + { "id": "overlay_worn_miner_hat", "fg": 4886, "rotates": false }, + { "id": "overlay_worn_miner_hat_on", "fg": 4887, "rotates": false }, + { "id": "overlay_worn_pickelhaube", "fg": 4888, "rotates": false }, + { "id": "overlay_worn_porkpie", "fg": 4889, "rotates": false }, + { "id": "overlay_worn_straw_fedora", "fg": 4890, "rotates": false }, + { "id": "overlay_worn_straw_hat", "fg": 4891, "rotates": false }, + { "id": "overlay_worn_tinfoil_hat", "fg": 4892, "rotates": false }, + { "id": "overlay_worn_tophat", "fg": 4893, "rotates": false }, + { "id": "overlay_worn_veil_wedding", "fg": 4894, "rotates": false }, + { "id": "overlay_worn_welding_mask_crude_raised", "fg": 4895, "rotates": false }, + { "id": "overlay_worn_welding_mask_raised", "fg": 4896, "rotates": false }, + { "id": "overlay_effect_badpoison", "fg": 4898 }, + { "id": "overlay_effect_bleed", "fg": 4899 }, + { "id": "overlay_effect_bouldering", "fg": 4900 }, + { "id": "overlay_effect_common_cold", "fg": 4901 }, + { "id": "overlay_effect_dazed", "fg": 4902 }, + { "id": [ "overlay_effect_deaf", "overlay_effect_earphones" ], "fg": 4903 }, + { "id": "overlay_effect_downed", "fg": 4904 }, + { "id": "overlay_effect_drunk", "fg": 4905 }, + { "id": [ "overlay_effect_flu", "overlay_effect_Influenza" ], "fg": 4906 }, + { "id": [ "overlay_effect_foodpoison", "overlay_effect_nausea" ], "fg": 4907 }, + { "id": "overlay_effect_fungus", "fg": 4908 }, + { "id": "overlay_effect_grabbed", "fg": 4909 }, + { "id": "overlay_female_effect_haslight", "fg": 4918 }, + { "id": "overlay_male_effect_haslight", "fg": 4919 }, + { "id": "overlay_effect_high", "fg": 4910 }, + { "id": "overlay_effect_paralyzepoison", "fg": 4911 }, + { "id": "overlay_effect_poison", "fg": 4912 }, + { "id": "overlay_effect_sleep", "fg": 4913 }, + { "id": "overlay_effect_spores", "fg": 4914 }, + { "id": "overlay_effect_stunned", "fg": 4915 }, + { "id": "overlay_effect_visuals", "fg": 4916 }, + { "id": [ "overlay_effect_winded", "overlay_effect_asthma" ], "fg": 4917 }, + { "id": "overlay_female_mutation_hair_black_fro", "fg": 4921, "rotates": false }, + { "id": "overlay_female_mutation_hair_gray_fro", "fg": 4924, "rotates": false }, + { "id": "overlay_female_mutation_hair_blond_fro", "fg": 4922, "rotates": false }, + { "id": "overlay_female_mutation_hair_brown_fro", "fg": 4923, "rotates": false }, + { "id": "overlay_female_mutation_hair_white_fro", "fg": 4926, "rotates": false }, + { "id": "overlay_female_mutation_hair_red_fro", "fg": 4925, "rotates": false }, + { "id": "overlay_male_mutation_hair_black_fro", "fg": 4927, "rotates": false }, + { "id": "overlay_male_mutation_hair_gray_fro", "fg": 4930, "rotates": false }, + { "id": "overlay_male_mutation_hair_blond_fro", "fg": 4928, "rotates": false }, + { "id": "overlay_male_mutation_hair_brown_fro", "fg": 4929, "rotates": false }, + { "id": "overlay_male_mutation_hair_white_fro", "fg": 4932, "rotates": false }, + { "id": "overlay_male_mutation_hair_red_fro", "fg": 4931, "rotates": false }, + { "id": "overlay_mutation_hair_black_mohawk", "fg": 4933, "rotates": false }, + { "id": "overlay_mutation_hair_gray_mohawk", "fg": 4936, "rotates": false }, + { "id": "overlay_mutation_hair_blond_mohawk", "fg": 4934, "rotates": false }, + { "id": "overlay_mutation_hair_brown_mohawk", "fg": 4935, "rotates": false }, + { "id": "overlay_mutation_hair_white_mohawk", "fg": 4938, "rotates": false }, + { "id": "overlay_mutation_hair_red_mohawk", "fg": 4937, "rotates": false }, { "id": [ "overlay_female_mutation_BIOLUM0", "overlay_female_mutation_BIOLUM1", "overlay_female_mutation_BIOLUM2" ], - "fg": 4715, + "fg": 4939, "rotates": false }, { @@ -9350,12 +9832,12 @@ "overlay_female_mutation_BIOLUM1_active", "overlay_female_mutation_BIOLUM2_active" ], - "fg": 4716, + "fg": 4940, "rotates": false }, { "id": [ "overlay_male_mutation_BIOLUM0", "overlay_male_mutation_BIOLUM1", "overlay_male_mutation_BIOLUM2" ], - "fg": 4717, + "fg": 4941, "rotates": false }, { @@ -9364,131 +9846,131 @@ "overlay_male_mutation_BIOLUM1_active", "overlay_male_mutation_BIOLUM2_active" ], - "fg": 4718, + "fg": 4942, "rotates": false }, - { "id": "overlay_mutation_HORNS_POINTED", "fg": 4719, "rotates": false }, + { "id": "overlay_mutation_HORNS_POINTED", "fg": 4943, "rotates": false }, { "id": "t_privacy_fence", - "fg": 4733, - "bg": 4724, + "fg": 4957, + "bg": 4948, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 4733, "bg": 4724 }, - { "id": "corner", "fg": [ 4727, 4729, 4728, 4726 ], "bg": 4724 }, - { "id": "t_connection", "fg": [ 4730, 3338, 4730, 3338 ], "bg": 4724 }, - { "id": "edge", "fg": [ 3338, 4730 ], "bg": 4724 }, - { "id": "end_piece", "fg": [ 3339, 4732, 3340, 4731 ], "bg": 4724 }, - { "id": "unconnected", "fg": [ 4733, 4733 ], "bg": 4724 } + { "id": "center", "fg": 4957, "bg": 4948 }, + { "id": "corner", "fg": [ 4951, 4953, 4952, 4950 ], "bg": 4948 }, + { "id": "t_connection", "fg": [ 4954, 3338, 4954, 3338 ], "bg": 4948 }, + { "id": "edge", "fg": [ 3338, 4954 ], "bg": 4948 }, + { "id": "end_piece", "fg": [ 3339, 4956, 3340, 4955 ], "bg": 4948 }, + { "id": "unconnected", "fg": [ 4957, 4957 ], "bg": 4948 } ] }, { "id": "t_privacy_fence_season_autumn", - "fg": 4733, - "bg": 4722, + "fg": 4957, + "bg": 4946, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 4733, "bg": 4722 }, - { "id": "corner", "fg": [ 4727, 4729, 4728, 4726 ], "bg": 4722 }, - { "id": "t_connection", "fg": [ 4730, 3338, 4730, 3338 ], "bg": 4722 }, - { "id": "edge", "fg": [ 3338, 4730 ], "bg": 4722 }, - { "id": "end_piece", "fg": [ 3339, 4732, 3340, 4731 ], "bg": 4722 }, - { "id": "unconnected", "fg": [ 4733, 4733 ], "bg": 4722 } + { "id": "center", "fg": 4957, "bg": 4946 }, + { "id": "corner", "fg": [ 4951, 4953, 4952, 4950 ], "bg": 4946 }, + { "id": "t_connection", "fg": [ 4954, 3338, 4954, 3338 ], "bg": 4946 }, + { "id": "edge", "fg": [ 3338, 4954 ], "bg": 4946 }, + { "id": "end_piece", "fg": [ 3339, 4956, 3340, 4955 ], "bg": 4946 }, + { "id": "unconnected", "fg": [ 4957, 4957 ], "bg": 4946 } ] }, { "id": "t_privacy_fence_season_summer", - "fg": 4733, - "bg": 4723, + "fg": 4957, + "bg": 4947, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 4733, "bg": 4723 }, - { "id": "corner", "fg": [ 4727, 4729, 4728, 4726 ], "bg": 4723 }, - { "id": "t_connection", "fg": [ 4730, 3338, 4730, 3338 ], "bg": 4723 }, - { "id": "edge", "fg": [ 3338, 4730 ], "bg": 4723 }, - { "id": "end_piece", "fg": [ 3339, 4732, 3340, 4731 ], "bg": 4723 }, - { "id": "unconnected", "fg": [ 4733, 4733 ], "bg": 4723 } + { "id": "center", "fg": 4957, "bg": 4947 }, + { "id": "corner", "fg": [ 4951, 4953, 4952, 4950 ], "bg": 4947 }, + { "id": "t_connection", "fg": [ 4954, 3338, 4954, 3338 ], "bg": 4947 }, + { "id": "edge", "fg": [ 3338, 4954 ], "bg": 4947 }, + { "id": "end_piece", "fg": [ 3339, 4956, 3340, 4955 ], "bg": 4947 }, + { "id": "unconnected", "fg": [ 4957, 4957 ], "bg": 4947 } ] }, { "id": "t_privacy_fence_season_winter", - "fg": 4733, - "bg": 4725, + "fg": 4957, + "bg": 4949, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 4733, "bg": 4725 }, - { "id": "corner", "fg": [ 4727, 4729, 4728, 4726 ], "bg": 4725 }, - { "id": "t_connection", "fg": [ 4730, 3338, 4730, 3338 ], "bg": 4725 }, - { "id": "edge", "fg": [ 3338, 4730 ], "bg": 4725 }, - { "id": "end_piece", "fg": [ 3339, 4732, 3340, 4731 ], "bg": 4725 }, - { "id": "unconnected", "fg": [ 4733, 4733 ], "bg": 4725 } + { "id": "center", "fg": 4957, "bg": 4949 }, + { "id": "corner", "fg": [ 4951, 4953, 4952, 4950 ], "bg": 4949 }, + { "id": "t_connection", "fg": [ 4954, 3338, 4954, 3338 ], "bg": 4949 }, + { "id": "edge", "fg": [ 3338, 4954 ], "bg": 4949 }, + { "id": "end_piece", "fg": [ 3339, 4956, 3340, 4955 ], "bg": 4949 }, + { "id": "unconnected", "fg": [ 4957, 4957 ], "bg": 4949 } ] }, { "id": "vp_frame_handle", - "fg": [ 4735, 4737, 4736, 4734 ], - "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 4128, "bg": [ 4735, 4737, 4736, 4734 ] } ] - }, - { "id": "f_alien_anemone", "fg": 4624 }, - { "id": "f_alien_gasper", "fg": 4625 }, - { "id": "f_alien_pod", "fg": 4626 }, - { "id": "f_alien_pod_organ", "fg": 4627 }, - { "id": "f_alien_pod_resin", "fg": 4628 }, - { "id": "f_alien_tendril", "fg": 4629 }, - { "id": "f_rotary_clothesline", "fg": 4630 }, - { "id": "f_magiclysm_translocator_gate", "fg": 4636 }, - { "id": "cauldron_demon_chitin", "fg": 4637 }, - { "id": "cauldron_orichalcum", "fg": 4638 }, - { "id": "mon_zombie_scissorlimbs", "fg": 4647 }, - { "id": "mon_robofac_prototype", "fg": 4651 }, - { "id": "overlay_crouch", "fg": 4673 }, - { "id": "overlay_run", "fg": 4696 }, - { "id": "overlay_wielded_mattress", "fg": 4720 }, - { "id": "t_bulk_tank", "fg": 4721 } + "fg": [ 4959, 4961, 4960, 4958 ], + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 4128, "bg": [ 4959, 4961, 4960, 4958 ] } ] + }, + { "id": "f_alien_anemone", "fg": 4848 }, + { "id": "f_alien_gasper", "fg": 4849 }, + { "id": "f_alien_pod", "fg": 4850 }, + { "id": "f_alien_pod_organ", "fg": 4851 }, + { "id": "f_alien_pod_resin", "fg": 4852 }, + { "id": "f_alien_tendril", "fg": 4853 }, + { "id": "f_rotary_clothesline", "fg": 4854 }, + { "id": "f_magiclysm_translocator_gate", "fg": 4860 }, + { "id": "cauldron_demon_chitin", "fg": 4861 }, + { "id": "cauldron_orichalcum", "fg": 4862 }, + { "id": "mon_zombie_scissorlimbs", "fg": 4871 }, + { "id": "mon_robofac_prototype", "fg": 4875 }, + { "id": "overlay_crouch", "fg": 4897 }, + { "id": "overlay_run", "fg": 4920 }, + { "id": "overlay_wielded_mattress", "fg": 4944 }, + { "id": "t_bulk_tank", "fg": 4945 } ] }, { "file": "large.png", - "//": "range 4752 to 4911", + "//": "range 4976 to 5135", "sprite_width": 64, "sprite_height": 80, "sprite_offset_x": -16, "sprite_offset_y": -48, "tiles": [ - { "id": "f_street_light", "fg": 4752, "bg": [ ], "rotates": false }, - { "id": "f_traffic_light", "fg": 4753, "bg": [ ], "rotates": false }, - { "id": "corpse_mon_allosaurus", "fg": 4754, "rotates": false }, - { "id": "corpse_mon_amigara_horror", "fg": 4755, "rotates": false }, - { "id": "corpse_mon_ankylosaurus", "fg": 4756, "rotates": false }, - { "id": "corpse_mon_darck_wyrm", "fg": 4757, "rotates": false }, - { "id": "corpse_mon_devourer", "fg": 4758, "rotates": false }, - { "id": "corpse_mon_fungaloid_queen", "fg": 4759, "rotates": false }, - { "id": "corpse_mon_fungaloid_seeder", "fg": 4760, "rotates": false }, - { "id": "corpse_mon_fungaloid_tower", "fg": 4761, "rotates": false }, - { "id": "corpse_mon_mi_go_guard", "fg": 4762, "rotates": false }, - { "id": "corpse_mon_mi_go_myrmidon", "fg": 4763, "rotates": false }, - { "id": "corpse_mon_mi_go_slaver", "fg": 4764, "rotates": false }, - { "id": "corpse_mon_mi_go_surgeon", "fg": 4765, "rotates": false }, - { "id": "corpse_mon_naked_molerat", "fg": 4766, "rotates": false }, - { "id": "corpse_mon_parasaurolophus", "fg": 4767, "rotates": false }, - { "id": "corpse_mon_skeleton_hulk", "fg": 4768, "rotates": false }, - { "id": "corpse_mon_spinosaurus", "fg": 4769, "rotates": false }, - { "id": "corpse_mon_stegosaurus", "fg": 4770, "rotates": false }, - { "id": "corpse_mon_triceratops", "fg": 4771, "rotates": false }, - { "id": "corpse_mon_tyrannosaurus", "fg": 4772, "rotates": false }, - { "id": "corpse_mon_utahraptor", "fg": 4773, "rotates": false }, - { "id": "corpse_mon_yugg", "fg": 4774, "rotates": false }, - { "id": "corpse_mon_zombie_corrosive", "fg": 4775, "rotates": false }, - { "id": "corpse_mon_zombie_hulk", "fg": 4776, "rotates": false }, - { "id": "corpse_mon_zombie_kevlar_2", "fg": 4777, "rotates": false }, + { "id": "f_street_light", "fg": 4976, "bg": [ ], "rotates": false }, + { "id": "f_traffic_light", "fg": 4977, "bg": [ ], "rotates": false }, + { "id": "corpse_mon_allosaurus", "fg": 4978, "rotates": false }, + { "id": "corpse_mon_amigara_horror", "fg": 4979, "rotates": false }, + { "id": "corpse_mon_ankylosaurus", "fg": 4980, "rotates": false }, + { "id": "corpse_mon_darck_wyrm", "fg": 4981, "rotates": false }, + { "id": "corpse_mon_devourer", "fg": 4982, "rotates": false }, + { "id": "corpse_mon_fungaloid_queen", "fg": 4983, "rotates": false }, + { "id": "corpse_mon_fungaloid_seeder", "fg": 4984, "rotates": false }, + { "id": "corpse_mon_fungaloid_tower", "fg": 4985, "rotates": false }, + { "id": "corpse_mon_mi_go_guard", "fg": 4986, "rotates": false }, + { "id": "corpse_mon_mi_go_myrmidon", "fg": 4987, "rotates": false }, + { "id": "corpse_mon_mi_go_slaver", "fg": 4988, "rotates": false }, + { "id": "corpse_mon_mi_go_surgeon", "fg": 4989, "rotates": false }, + { "id": "corpse_mon_naked_molerat", "fg": 4990, "rotates": false }, + { "id": "corpse_mon_parasaurolophus", "fg": 4991, "rotates": false }, + { "id": "corpse_mon_skeleton_hulk", "fg": 4992, "rotates": false }, + { "id": "corpse_mon_spinosaurus", "fg": 4993, "rotates": false }, + { "id": "corpse_mon_stegosaurus", "fg": 4994, "rotates": false }, + { "id": "corpse_mon_triceratops", "fg": 4995, "rotates": false }, + { "id": "corpse_mon_tyrannosaurus", "fg": 4996, "rotates": false }, + { "id": "corpse_mon_utahraptor", "fg": 4997, "rotates": false }, + { "id": "corpse_mon_yugg", "fg": 4998, "rotates": false }, + { "id": "corpse_mon_zombie_corrosive", "fg": 4999, "rotates": false }, + { "id": "corpse_mon_zombie_hulk", "fg": 5000, "rotates": false }, + { "id": "corpse_mon_zombie_kevlar_2", "fg": 5001, "rotates": false }, { "id": "mon_claygolem", "fg": [ - { "weight": 10, "sprite": 4779 }, - { "weight": 1, "sprite": 4780 }, - { "weight": 2, "sprite": 4781 }, - { "weight": 3, "sprite": 4782 } + { "weight": 10, "sprite": 5003 }, + { "weight": 1, "sprite": 5004 }, + { "weight": 2, "sprite": 5005 }, + { "weight": 3, "sprite": 5006 } ], "rotates": false }, @@ -9496,70 +9978,70 @@ "id": "mon_demon_spider_queen", "animated": true, "fg": [ - { "weight": 15, "sprite": 4783 }, - { "weight": 15, "sprite": 4784 }, - { "weight": 15, "sprite": 4785 }, - { "weight": 15, "sprite": 4786 }, - { "weight": 15, "sprite": 4785 }, - { "weight": 15, "sprite": 4784 } + { "weight": 15, "sprite": 5007 }, + { "weight": 15, "sprite": 5008 }, + { "weight": 15, "sprite": 5009 }, + { "weight": 15, "sprite": 5010 }, + { "weight": 15, "sprite": 5009 }, + { "weight": 15, "sprite": 5008 } ], "rotates": false }, { "id": "mon_plasticgolem", "fg": [ - { "weight": 10, "sprite": 4793 }, - { "weight": 10, "sprite": 4788 }, - { "weight": 6, "sprite": 4789 }, - { "weight": 5, "sprite": 4792 }, - { "weight": 3, "sprite": 4790 }, - { "weight": 1, "sprite": 4791 } + { "weight": 10, "sprite": 5017 }, + { "weight": 10, "sprite": 5012 }, + { "weight": 6, "sprite": 5013 }, + { "weight": 5, "sprite": 5016 }, + { "weight": 3, "sprite": 5014 }, + { "weight": 1, "sprite": 5015 } ], "rotates": false }, - { "id": "mon_allosaurus", "fg": 4812, "rotates": false }, - { "id": "mon_amigara_horror", "fg": 4815, "bg": [ ], "rotates": false }, - { "id": "mon_ankylosaurus", "fg": 4811, "rotates": false }, - { "id": "mon_blob_brain", "fg": 4800, "rotates": false }, - { "id": "mon_boomer_huge", "fg": 4816, "bg": [ ], "rotates": false }, - { "id": "mon_chickenbot", "fg": 4795, "rotates": false }, - { "id": "mon_dark_wyrm", "fg": 4817, "rotates": false }, - { "id": "mon_devourer", "fg": 4818, "rotates": false }, - { "id": "mon_fungaloid_queen", "fg": 4803, "rotates": false }, - { "id": "mon_fungaloid_seeder", "fg": 4801, "rotates": false }, - { "id": "mon_fungaloid_tower", "fg": 4802, "rotates": false }, - { "id": "mon_gas_zombie", "fg": 4819, "bg": [ ], "rotates": false }, - { "id": "mon_jabberwock", "fg": 4796, "rotates": false }, - { "id": "mon_mi_go_guard", "fg": 4824, "rotates": false }, - { "id": "mon_mi_go_myrmidon", "fg": 4825, "rotates": false }, - { "id": "mon_mi_go_slaver", "fg": 4826, "rotates": false }, - { "id": "mon_mi_go_surgeon", "fg": 4827, "rotates": false }, - { "id": "mon_nakedmolerat_giant", "fg": 4806, "rotates": false }, - { "id": "mon_parasaurolophus", "fg": 4813, "rotates": false }, - { "id": "mon_shoggoth", "fg": [ 4797, 4828 ], "rotates": false }, - { "id": "mon_skeleton_hulk", "fg": 4794, "rotates": false }, - { "id": "mon_spinosaurus", "fg": 4807, "rotates": false }, - { "id": "mon_stegosaurus", "fg": 4810, "rotates": false }, - { "id": "mon_triceratops", "fg": 4809, "rotates": false }, - { "id": "mon_triffid_heart", "fg": 4804, "rotates": false }, - { "id": "mon_triffid_queen", "fg": 4829, "bg": [ ], "rotates": false }, - { "id": "mon_turret_searchlight", "fg": 4799, "rotates": false }, - { "id": "mon_tyrannosaurus", "fg": 4808, "rotates": false }, - { "id": "mon_utahraptor", "fg": 4814, "rotates": false }, - { "id": "mon_yugg", "fg": 4805, "rotates": false }, - { "id": "mon_zombie_corrosive", "fg": 4830, "bg": [ ], "rotates": false }, - { "id": "mon_zombie_hulk", "fg": 4798, "rotates": false }, - { "id": "mon_zombie_kevlar_2", "fg": 4834, "bg": [ ], "rotates": false }, - { "id": "mon_zombie_nullfield", "fg": 4836, "bg": [ ], "rotates": false }, - { "id": "overlay_wielded_pike", "fg": 4841, "rotates": false }, - { "id": "overlay_wielded_qiang", "fg": 4841, "rotates": false }, - { "id": "f_boulder_large", "fg": 4886, "rotates": false }, - { "id": "t_leanto", "fg": 4882, "bg": 4905, "rotates": false }, - { "id": "t_leanto_season_winter", "fg": 4882, "bg": 4908, "rotates": false }, - { "id": "t_marloss_tree", "fg": 4870, "bg": 4871, "rotates": false }, - { "id": "t_tree", "fg": 4849, "bg": 4905, "rotates": false }, - { "id": "t_tree_almond_season_autumn", "fg": 4903, "bg": 4906, "rotates": false }, - { "id": "t_tree_almond_season_spring", "fg": 4902, "bg": 4905, "rotates": false }, + { "id": "mon_allosaurus", "fg": 5036, "rotates": false }, + { "id": "mon_amigara_horror", "fg": 5039, "bg": [ ], "rotates": false }, + { "id": "mon_ankylosaurus", "fg": 5035, "rotates": false }, + { "id": "mon_blob_brain", "fg": 5024, "rotates": false }, + { "id": "mon_boomer_huge", "fg": 5040, "bg": [ ], "rotates": false }, + { "id": "mon_chickenbot", "fg": 5019, "rotates": false }, + { "id": "mon_dark_wyrm", "fg": 5041, "rotates": false }, + { "id": "mon_devourer", "fg": 5042, "rotates": false }, + { "id": "mon_fungaloid_queen", "fg": 5027, "rotates": false }, + { "id": "mon_fungaloid_seeder", "fg": 5025, "rotates": false }, + { "id": "mon_fungaloid_tower", "fg": 5026, "rotates": false }, + { "id": "mon_gas_zombie", "fg": 5044, "bg": [ ], "rotates": false }, + { "id": "mon_jabberwock", "fg": 5020, "rotates": false }, + { "id": "mon_mi_go_guard", "fg": 5049, "rotates": false }, + { "id": "mon_mi_go_myrmidon", "fg": 5050, "rotates": false }, + { "id": "mon_mi_go_slaver", "fg": 5051, "rotates": false }, + { "id": "mon_mi_go_surgeon", "fg": 5052, "rotates": false }, + { "id": "mon_nakedmolerat_giant", "fg": 5030, "rotates": false }, + { "id": "mon_parasaurolophus", "fg": 5037, "rotates": false }, + { "id": "mon_shoggoth", "fg": [ 5021, 5053 ], "rotates": false }, + { "id": "mon_skeleton_hulk", "fg": 5018, "rotates": false }, + { "id": "mon_spinosaurus", "fg": 5031, "rotates": false }, + { "id": "mon_stegosaurus", "fg": 5034, "rotates": false }, + { "id": "mon_triceratops", "fg": 5033, "rotates": false }, + { "id": "mon_triffid_heart", "fg": 5028, "rotates": false }, + { "id": "mon_triffid_queen", "fg": 5054, "bg": [ ], "rotates": false }, + { "id": "mon_turret_searchlight", "fg": 5023, "rotates": false }, + { "id": "mon_tyrannosaurus", "fg": 5032, "rotates": false }, + { "id": "mon_utahraptor", "fg": 5038, "rotates": false }, + { "id": "mon_yugg", "fg": 5029, "rotates": false }, + { "id": "mon_zombie_corrosive", "fg": 5055, "bg": [ ], "rotates": false }, + { "id": "mon_zombie_hulk", "fg": 5022, "rotates": false }, + { "id": "mon_zombie_kevlar_2", "fg": 5059, "bg": [ ], "rotates": false }, + { "id": "mon_zombie_nullfield", "fg": 5061, "bg": [ ], "rotates": false }, + { "id": "overlay_wielded_pike", "fg": 5066, "rotates": false }, + { "id": "overlay_wielded_qiang", "fg": 5066, "rotates": false }, + { "id": "f_boulder_large", "fg": 5111, "rotates": false }, + { "id": "t_leanto", "fg": 5107, "bg": 5130, "rotates": false }, + { "id": "t_leanto_season_winter", "fg": 5107, "bg": 5133, "rotates": false }, + { "id": "t_marloss_tree", "fg": 5095, "bg": 5096, "rotates": false }, + { "id": "t_tree", "fg": 5074, "bg": 5130, "rotates": false }, + { "id": "t_tree_almond_season_autumn", "fg": 5128, "bg": 5131, "rotates": false }, + { "id": "t_tree_almond_season_spring", "fg": 5127, "bg": 5130, "rotates": false }, { "id": [ "t_tree_apple_harvested_season_winter", @@ -9575,8 +10057,8 @@ "t_tree_pear_season_winter", "t_tree_plum_season_winter" ], - "fg": 4861, - "bg": 4908 + "fg": 5086, + "bg": 5133 }, { "id": [ @@ -9593,19 +10075,19 @@ "t_tree_pear", "t_tree_plum" ], - "fg": 4854, - "bg": 4905 - }, - { "id": "t_tree_apple_season_autumn", "fg": 4857, "bg": 4906 }, - { "id": "t_tree_apricot_season_summer", "fg": 4859, "bg": 4907 }, - { "id": "t_tree_beech_season_autumn", "fg": 4897, "bg": 4906, "rotates": false }, - { "id": "t_tree_birch", "fg": 4872, "bg": 4905, "rotates": false }, - { "id": "t_tree_birch_harvested", "fg": 4873, "bg": 4905, "rotates": false }, - { "id": "t_tree_birch_harvested_season_winter", "fg": 4873, "bg": 4908, "rotates": false }, - { "id": "t_tree_birch_season_winter", "fg": 4874, "bg": 4908, "rotates": false }, - { "id": "t_tree_blackjack", "fg": 4862, "bg": 4905, "rotates": false }, - { "id": "t_tree_blackjack_season_winter", "fg": 4863, "bg": 4908, "rotates": false }, - { "id": "t_tree_cherry_season_summer", "fg": 4855, "bg": 4907 }, + "fg": 5079, + "bg": 5130 + }, + { "id": "t_tree_apple_season_autumn", "fg": 5082, "bg": 5131 }, + { "id": "t_tree_apricot_season_summer", "fg": 5084, "bg": 5132 }, + { "id": "t_tree_beech_season_autumn", "fg": 5122, "bg": 5131, "rotates": false }, + { "id": "t_tree_birch", "fg": 5097, "bg": 5130, "rotates": false }, + { "id": "t_tree_birch_harvested", "fg": 5098, "bg": 5130, "rotates": false }, + { "id": "t_tree_birch_harvested_season_winter", "fg": 5098, "bg": 5133, "rotates": false }, + { "id": "t_tree_birch_season_winter", "fg": 5099, "bg": 5133, "rotates": false }, + { "id": "t_tree_blackjack", "fg": 5087, "bg": 5130, "rotates": false }, + { "id": "t_tree_blackjack_season_winter", "fg": 5088, "bg": 5133, "rotates": false }, + { "id": "t_tree_cherry_season_summer", "fg": 5080, "bg": 5132 }, { "id": [ "t_tree_chestnut_harvested_season_autumn", @@ -9613,11 +10095,11 @@ "t_tree_pecan_harvested_season_autumn", "t_tree_beech_harvested_season_autumn" ], - "fg": 4892, - "bg": 4906, + "fg": 5117, + "bg": 5131, "rotates": false }, - { "id": "t_tree_chestnut_season_autumn", "fg": 4894, "bg": 4906, "rotates": false }, + { "id": "t_tree_chestnut_season_autumn", "fg": 5119, "bg": 5131, "rotates": false }, { "id": [ "t_tree_chestnut_season_winter", @@ -9629,29 +10111,29 @@ "t_tree_pecan_harvested_season_winter", "t_tree_beech_harvested_season_winter" ], - "fg": 4893, - "bg": 4908, + "fg": 5118, + "bg": 5133, "rotates": false }, { "id": [ "t_tree_chestnut", "t_tree_walnut", "t_tree_pecan", "t_tree_beech" ], - "fg": 4891, - "bg": 4905, + "fg": 5116, + "bg": 5130, "rotates": false }, - { "id": [ "t_tree_dead_season_winter", "t_tree_hickory_dead_season_winter" ], "fg": 4864, "bg": 4908 }, - { "id": [ "t_tree_dead", "t_tree_hickory_dead" ], "fg": 4864, "bg": 4905 }, - { "id": "t_tree_deadpine", "fg": 4865, "bg": 4905, "rotates": false }, - { "id": "t_tree_deadpine_season_winter", "fg": 4865, "bg": 4908, "rotates": false }, - { "id": "t_tree_elderberry_season_summer", "fg": 4848, "bg": 4907, "rotates": false }, - { "id": "t_tree_fungal", "fg": 4869, "bg": 4871, "rotates": false }, + { "id": [ "t_tree_dead_season_winter", "t_tree_hickory_dead_season_winter" ], "fg": 5089, "bg": 5133 }, + { "id": [ "t_tree_dead", "t_tree_hickory_dead" ], "fg": 5089, "bg": 5130 }, + { "id": "t_tree_deadpine", "fg": 5090, "bg": 5130, "rotates": false }, + { "id": "t_tree_deadpine_season_winter", "fg": 5090, "bg": 5133, "rotates": false }, + { "id": "t_tree_elderberry_season_summer", "fg": 5073, "bg": 5132, "rotates": false }, + { "id": "t_tree_fungal", "fg": 5094, "bg": 5096, "rotates": false }, { "id": [ "t_tree_hazelnut_harvested", "t_tree_almond_harvested", "t_tree_pistachio_harvested" ], - "fg": 4899, - "bg": 4905, + "fg": 5124, + "bg": 5130, "rotates": false }, - { "id": "t_tree_hazelnut_season_autumn", "fg": 4901, "bg": 4906, "rotates": false }, + { "id": "t_tree_hazelnut_season_autumn", "fg": 5126, "bg": 5131, "rotates": false }, { "id": [ "t_tree_hazelnut_season_winter", @@ -9661,26 +10143,26 @@ "t_tree_almond_harvested_season_winter", "t_tree_pistachio_harvested_season_winter" ], - "fg": 4900, - "bg": 4908, + "fg": 5125, + "bg": 5133, "rotates": false }, - { "id": [ "t_tree_hazelnut", "t_tree_almond", "t_tree_pistachio" ], "fg": 4898, "bg": 4905, "rotates": false }, - { "id": "t_tree_hickory_season_autumn", "fg": 4867, "bg": 4906, "rotates": false }, + { "id": [ "t_tree_hazelnut", "t_tree_almond", "t_tree_pistachio" ], "fg": 5123, "bg": 5130, "rotates": false }, + { "id": "t_tree_hickory_season_autumn", "fg": 5092, "bg": 5131, "rotates": false }, { "id": [ "t_tree_hickory_season_winter", "t_tree_hickory_harvested_season_winter" ], - "fg": 4868, - "bg": 4908, + "fg": 5093, + "bg": 5133, "rotates": false }, - { "id": [ "t_tree_hickory", "t_tree_hickory_harvested" ], "fg": 4866, "bg": 4905, "rotates": false }, - { "id": "t_tree_maple", "fg": 4875, "bg": 4905, "rotates": false }, - { "id": "t_tree_maple_season_autumn", "fg": 4877, "bg": 4906, "rotates": false }, - { "id": "t_tree_maple_season_winter", "fg": 4877, "bg": 4908, "rotates": false }, - { "id": "t_tree_maple_tapped", "fg": 4876, "bg": 4905 }, - { "id": "t_tree_maple_tapped_season_autumn", "fg": 4878, "bg": 4906 }, - { "id": "t_tree_maple_tapped_season_winter", "fg": 4878, "bg": 4908 }, - { "id": "t_tree_mulberry_season_summer", "fg": 4847, "bg": 4907, "rotates": false }, + { "id": [ "t_tree_hickory", "t_tree_hickory_harvested" ], "fg": 5091, "bg": 5130, "rotates": false }, + { "id": "t_tree_maple", "fg": 5100, "bg": 5130, "rotates": false }, + { "id": "t_tree_maple_season_autumn", "fg": 5102, "bg": 5131, "rotates": false }, + { "id": "t_tree_maple_season_winter", "fg": 5102, "bg": 5133, "rotates": false }, + { "id": "t_tree_maple_tapped", "fg": 5101, "bg": 5130 }, + { "id": "t_tree_maple_tapped_season_autumn", "fg": 5103, "bg": 5131 }, + { "id": "t_tree_maple_tapped_season_winter", "fg": 5103, "bg": 5133 }, + { "id": "t_tree_mulberry_season_summer", "fg": 5072, "bg": 5132, "rotates": false }, { "id": [ "t_tree_mulberry_season_winter", @@ -9688,87 +10170,88 @@ "t_tree_mulberry_harvested_season_winter", "t_tree_elderberry_harvested_season_winter" ], - "fg": 4846, - "bg": 4908, + "fg": 5071, + "bg": 5133, "rotates": false }, { "id": [ "t_tree_mulberry", "t_tree_elderberry", "t_tree_mulberry_harvested", "t_tree_elderberry_harvested" ], - "fg": 4845, - "bg": 4905, + "fg": 5070, + "bg": 5130, "rotates": false }, - { "id": "t_tree_peach_season_summer", "fg": 4856, "bg": 4907 }, - { "id": "t_tree_pear_season_autumn", "fg": 4858, "bg": 4907 }, - { "id": "t_tree_pecan_season_autumn", "fg": 4896, "bg": 4906, "rotates": false }, - { "id": "t_tree_pine", "fg": 4850, "bg": 4905, "rotates": false }, - { "id": "t_tree_pine_season_winter", "fg": 4853, "bg": 4908, "rotates": false }, - { "id": "t_tree_pistachio_season_autumn", "fg": 4904, "bg": 4906, "rotates": false }, - { "id": "t_tree_plum_season_summer", "fg": 4860, "bg": 4907 }, + { "id": "t_tree_peach_season_summer", "fg": 5081, "bg": 5132 }, + { "id": "t_tree_pear_season_autumn", "fg": 5083, "bg": 5132 }, + { "id": "t_tree_pecan_season_autumn", "fg": 5121, "bg": 5131, "rotates": false }, + { "id": "t_tree_pine", "fg": 5075, "bg": 5130, "rotates": false }, + { "id": "t_tree_pine_season_winter", "fg": 5078, "bg": 5133, "rotates": false }, + { "id": "t_tree_pistachio_season_autumn", "fg": 5129, "bg": 5131, "rotates": false }, + { "id": "t_tree_plum_season_summer", "fg": 5085, "bg": 5132 }, { "id": "t_tree_season_autumn", - "fg": [ { "weight": 1, "sprite": 4883 }, { "weight": 1, "sprite": 4885 } ], - "bg": 4906, + "fg": [ { "weight": 1, "sprite": 5108 }, { "weight": 1, "sprite": 5110 } ], + "bg": 5131, "rotates": false }, { "id": "t_tree_season_spring", - "fg": [ { "weight": 1, "sprite": 4849 }, { "weight": 1, "sprite": 4885 } ], - "bg": 4905, + "fg": [ { "weight": 1, "sprite": 5074 }, { "weight": 1, "sprite": 5110 } ], + "bg": 5130, "rotates": false }, - { "id": "t_tree_season_winter", "fg": 4852, "bg": 4908, "rotates": false }, - { "id": "t_tree_walnut_season_autumn", "fg": 4895, "bg": 4906, "rotates": false }, - { "id": "t_tree_willow", "fg": 4879, "bg": 4905, "rotates": false }, - { "id": "t_tree_willow_harvested", "fg": 4880, "bg": 4905, "rotates": false }, - { "id": "t_tree_willow_harvested_season_winter", "fg": 4880, "bg": 4908, "rotates": false }, - { "id": "t_tree_willow_season_winter", "fg": 4881, "bg": 4908, "rotates": false }, - { "id": "t_tree_young", "fg": 4851, "bg": 4905, "rotates": false }, - { "id": "t_tree_young_season_autumn", "fg": 4884, "bg": 4906, "rotates": false }, - { "id": "t_tree_young_season_winter", "fg": 4884, "bg": 4908, "rotates": false }, + { "id": "t_tree_season_winter", "fg": 5077, "bg": 5133, "rotates": false }, + { "id": "t_tree_walnut_season_autumn", "fg": 5120, "bg": 5131, "rotates": false }, + { "id": "t_tree_willow", "fg": 5104, "bg": 5130, "rotates": false }, + { "id": "t_tree_willow_harvested", "fg": 5105, "bg": 5130, "rotates": false }, + { "id": "t_tree_willow_harvested_season_winter", "fg": 5105, "bg": 5133, "rotates": false }, + { "id": "t_tree_willow_season_winter", "fg": 5106, "bg": 5133, "rotates": false }, + { "id": "t_tree_young", "fg": 5076, "bg": 5130, "rotates": false }, + { "id": "t_tree_young_season_autumn", "fg": 5109, "bg": 5131, "rotates": false }, + { "id": "t_tree_young_season_winter", "fg": 5109, "bg": 5133, "rotates": false }, { "id": "vp_solar_array2", - "fg": 4889, + "fg": 5114, "rotates": false, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 4890 } ] + "additional_tiles": [ { "id": "broken", "fg": 5115 } ] }, { "id": "vp_solar_array2r", - "fg": 4889, + "fg": 5114, "rotates": false, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 4890 } ] + "additional_tiles": [ { "id": "broken", "fg": 5115 } ] }, { "id": "vp_solar_array", - "fg": 4887, + "fg": 5112, "rotates": false, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 4888 } ] - }, - { "id": "broken_claygolem", "fg": 4778 }, - { "id": "broken_plasticgolem", "fg": 4787 }, - { "id": "mon_horse", "fg": 4820 }, - { "id": "mon_mech_combat", "fg": 4821 }, - { "id": "mon_mech_lifter", "fg": 4822 }, - { "id": "mon_mech_recon", "fg": 4823 }, - { "id": "mon_zombie_crushed_giant", "fg": 4831 }, - { "id": "mon_zombie_gasbag_impaler", "fg": 4832 }, - { "id": "mon_zombie_horse", "fg": 4833 }, - { "id": "mon_zombie_living_wall", "fg": 4835 }, - { "id": "rid_mon_horse", "fg": 4837 }, - { "id": "rid_mon_mech_combat", "fg": 4838 }, - { "id": "rid_mon_mech_lifter", "fg": 4839 }, - { "id": "rid_mon_mech_recon", "fg": 4840 }, - { "id": "overlay_worn_cape_fp", "fg": 4842 }, - { "id": "overlay_worn_foodperson_mask", "fg": 4843 }, - { "id": "overlay_worn_foodperson_mask_on", "fg": 4844 } + "additional_tiles": [ { "id": "broken", "fg": 5113 } ] + }, + { "id": "broken_claygolem", "fg": 5002 }, + { "id": "broken_plasticgolem", "fg": 5011 }, + { "id": "mon_frog_giant", "fg": 5043 }, + { "id": "mon_horse", "fg": 5045 }, + { "id": "mon_mech_combat", "fg": 5046 }, + { "id": "mon_mech_lifter", "fg": 5047 }, + { "id": "mon_mech_recon", "fg": 5048 }, + { "id": "mon_zombie_crushed_giant", "fg": 5056 }, + { "id": "mon_zombie_gasbag_impaler", "fg": 5057 }, + { "id": "mon_zombie_horse", "fg": 5058 }, + { "id": "mon_zombie_living_wall", "fg": 5060 }, + { "id": "rid_mon_horse", "fg": 5062 }, + { "id": "rid_mon_mech_combat", "fg": 5063 }, + { "id": "rid_mon_mech_lifter", "fg": 5064 }, + { "id": "rid_mon_mech_recon", "fg": 5065 }, + { "id": "overlay_worn_cape_fp", "fg": 5067 }, + { "id": "overlay_worn_foodperson_mask", "fg": 5068 }, + { "id": "overlay_worn_foodperson_mask_on", "fg": 5069 } ] }, { "file": "huge.png", - "//": "range 4912 to 4927", + "//": "range 5136 to 5151", "sprite_width": 128, "sprite_height": 128, "sprite_offset_x": -64, @@ -9776,40 +10259,40 @@ "tiles": [ { "id": "mon_tankbot", - "fg": [ { "weight": 10, "sprite": 4914 }, { "weight": 1, "sprite": 4915 }, { "weight": 3, "sprite": 4916 } ], + "fg": [ { "weight": 10, "sprite": 5138 }, { "weight": 1, "sprite": 5139 }, { "weight": 3, "sprite": 5140 } ], "rotates": false }, - { "id": "bot_tankbot", "fg": 4912 }, - { "id": "broken_tankbot", "fg": 4913 } + { "id": "bot_tankbot", "fg": 5136 }, + { "id": "broken_tankbot", "fg": 5137 } ] }, { "file": "fillersmall.png", - "//": "range 4928 to 4991", + "//": "range 5152 to 5215", "sprite_width": 20, "sprite_height": 20, "sprite_offset_x": 0, "sprite_offset_y": 0, "tiles": [ - { "id": "jack", "fg": 4928 }, - { "id": "jack_small", "fg": 4930 }, - { "id": "jack_makeshift", "fg": 4929 }, - { "id": "acorns", "fg": 4944 }, - { "id": "chips", "fg": 4948 }, - { "id": "apple", "fg": 4945 }, - { "id": "banana", "fg": 4946 }, - { "id": "broccoli", "fg": 4947 }, - { "id": "corn", "fg": 4949 }, - { "id": "cucumber", "fg": 4950 }, - { "id": "grapes", "fg": 4951 }, - { "id": "lemon", "fg": 4953 }, - { "id": "onion", "fg": 4954 }, - { "id": "orange", "fg": 4955 }, - { "id": "pear", "fg": 4956 }, - { "id": "potato", "fg": 4957 }, - { "id": "pumpkin", "fg": 4958 }, - { "id": "tomato", "fg": 4961 }, - { "id": "juniper", "fg": 4952 }, + { "id": "jack", "fg": 5152 }, + { "id": "jack_small", "fg": 5154 }, + { "id": "jack_makeshift", "fg": 5153 }, + { "id": "acorns", "fg": 5168 }, + { "id": "chips", "fg": 5172 }, + { "id": "apple", "fg": 5169 }, + { "id": "banana", "fg": 5170 }, + { "id": "broccoli", "fg": 5171 }, + { "id": "corn", "fg": 5173 }, + { "id": "cucumber", "fg": 5174 }, + { "id": "grapes", "fg": 5175 }, + { "id": "lemon", "fg": 5177 }, + { "id": "onion", "fg": 5178 }, + { "id": "orange", "fg": 5179 }, + { "id": "pear", "fg": 5180 }, + { "id": "potato", "fg": 5181 }, + { "id": "pumpkin", "fg": 5182 }, + { "id": "tomato", "fg": 5185 }, + { "id": "juniper", "fg": 5176 }, { "id": [ "seed_hops", @@ -9877,172 +10360,172 @@ "seed_mulberries", "seed_elderberries" ], - "fg": 4959 - }, - { "id": "straw_pile", "fg": 4960 }, - { "id": "wheat", "fg": 4962 }, - { "id": "withered", "fg": 4963 }, - { "id": "bee_balm", "fg": 4964 }, - { "id": "carrot_wild", "fg": 4965 }, - { "id": "dogbane", "fg": 4966 }, - { "id": "mugwort", "fg": 4967 }, - { "id": "thyme", "fg": 4968 }, - { "id": "veggy_wild", "fg": 4969 }, - { "id": "wild_herbs", "fg": 4970 }, - { "id": "feces_manure", "fg": 4974 }, - { "id": "feces_bird", "fg": 4971 }, - { "id": "feces_cow", "fg": 4972 }, - { "id": "feces_dog", "fg": 4973 }, - { "id": "feces_roach", "fg": 4975 }, - { "id": "brick", "fg": 4976 }, - { "id": "scrap", "fg": 4979 }, - { "id": "e_scrap", "fg": 4978 }, - { "id": "steel_chunk", "fg": 4980 }, - { "id": "steel_lump", "fg": 4981 }, - { "id": "wire", "fg": 4982 }, - { "id": "cable", "fg": 4977 }, - { "id": "mbag", "fg": 4931 }, - { "id": "receiver", "fg": 4932 }, - { "id": "scarf", "fg": 4933 }, - { "id": "slingpack", "fg": 4934 }, - { "id": "baseball", "fg": 4935 }, - { "id": "beach_volleyball", "fg": 4936 }, - { "id": "bowling_ball", "fg": 4937 }, - { "id": "football", "fg": 4938 }, - { "id": "indoor_volleyball", "fg": 4939 }, - { "id": "misc_repairkit", "fg": 4940 }, - { "id": "puck", "fg": 4941 }, - { "id": "tourniquet_upper", "fg": 4942 }, - { "id": "wristwatch", "fg": 4943 }, - { "id": "wire_barbed", "fg": 4983 } + "fg": 5183 + }, + { "id": "straw_pile", "fg": 5184 }, + { "id": "wheat", "fg": 5186 }, + { "id": "withered", "fg": 5187 }, + { "id": "bee_balm", "fg": 5188 }, + { "id": "carrot_wild", "fg": 5189 }, + { "id": "dogbane", "fg": 5190 }, + { "id": "mugwort", "fg": 5191 }, + { "id": "thyme", "fg": 5192 }, + { "id": "veggy_wild", "fg": 5193 }, + { "id": "wild_herbs", "fg": 5194 }, + { "id": "feces_manure", "fg": 5198 }, + { "id": "feces_bird", "fg": 5195 }, + { "id": "feces_cow", "fg": 5196 }, + { "id": "feces_dog", "fg": 5197 }, + { "id": "feces_roach", "fg": 5199 }, + { "id": "brick", "fg": 5200 }, + { "id": "scrap", "fg": 5203 }, + { "id": "e_scrap", "fg": 5202 }, + { "id": "steel_chunk", "fg": 5204 }, + { "id": "steel_lump", "fg": 5205 }, + { "id": "wire", "fg": 5206 }, + { "id": "cable", "fg": 5201 }, + { "id": "mbag", "fg": 5155 }, + { "id": "receiver", "fg": 5156 }, + { "id": "scarf", "fg": 5157 }, + { "id": "slingpack", "fg": 5158 }, + { "id": "baseball", "fg": 5159 }, + { "id": "beach_volleyball", "fg": 5160 }, + { "id": "bowling_ball", "fg": 5161 }, + { "id": "football", "fg": 5162 }, + { "id": "indoor_volleyball", "fg": 5163 }, + { "id": "misc_repairkit", "fg": 5164 }, + { "id": "puck", "fg": 5165 }, + { "id": "tourniquet_upper", "fg": 5166 }, + { "id": "wristwatch", "fg": 5167 }, + { "id": "wire_barbed", "fg": 5207 } ] }, { "file": "fillerlarge.png", - "//": "range 4992 to 5007", + "//": "range 5216 to 5231", "sprite_width": 64, "sprite_height": 64, "sprite_offset_x": -16, "sprite_offset_y": -32, "tiles": [ - { "id": "mon_smoker_brute", "fg": 4994, "bg": 4993 }, + { "id": "mon_smoker_brute", "fg": 5218, "bg": 5217 }, { "id": "mon_exodii_quad", "fg": [ - { "weight": 15, "sprite": 4995 }, - { "weight": 10, "sprite": 4996 }, - { "weight": 15, "sprite": 4997 }, - { "weight": 15, "sprite": 4998 } + { "weight": 15, "sprite": 5219 }, + { "weight": 10, "sprite": 5220 }, + { "weight": 15, "sprite": 5221 }, + { "weight": 15, "sprite": 5222 } ], - "bg": 4992 + "bg": 5216 }, { "id": "mon_exodii_turret", "fg": [ - { "weight": 15, "sprite": 4999 }, - { "weight": 5, "sprite": 5000 }, - { "weight": 15, "sprite": 5001 }, - { "weight": 15, "sprite": 5002 } + { "weight": 15, "sprite": 5223 }, + { "weight": 5, "sprite": 5224 }, + { "weight": 15, "sprite": 5225 }, + { "weight": 15, "sprite": 5226 } ], - "bg": 4993 + "bg": 5217 }, - { "id": "mon_dog_zombie_hulk", "fg": 5003, "bg": 4993 }, - { "id": "mon_zombie_brute_winged", "fg": 5005, "bg": 4992 } + { "id": "mon_dog_zombie_hulk", "fg": 5227, "bg": 5217 }, + { "id": "mon_zombie_brute_winged", "fg": 5229, "bg": 5216 } ] }, { "file": "fillernormal.png", - "//": "range 5008 to 5055", + "//": "range 5232 to 5279", "tiles": [ - { "id": "mon_cat_bengal", "fg": [ { "weight": 1, "sprite": 5010 }, { "weight": 1, "sprite": 5009 } ], "bg": 2752 }, + { "id": "mon_cat_bengal", "fg": [ { "weight": 1, "sprite": 5234 }, { "weight": 1, "sprite": 5233 } ], "bg": 2752 }, { "id": "mon_cat_calico", - "fg": [ { "weight": 1, "sprite": 5013 }, { "weight": 1, "sprite": 5012 } ], + "fg": [ { "weight": 1, "sprite": 5237 }, { "weight": 1, "sprite": 5236 } ], "bg": 2752 }, { "id": "mon_cat_chonker", - "fg": [ { "weight": 1, "sprite": 5016 }, { "weight": 1, "sprite": 5015 } ], + "fg": [ { "weight": 1, "sprite": 5240 }, { "weight": 1, "sprite": 5239 } ], "bg": 2752 }, { "id": "mon_cat_devon_rex", - "fg": [ { "weight": 1, "sprite": 5019 }, { "weight": 1, "sprite": 5018 } ], + "fg": [ { "weight": 1, "sprite": 5243 }, { "weight": 1, "sprite": 5242 } ], "bg": 2752 }, { "id": "mon_cat_longhair", - "fg": [ { "weight": 1, "sprite": 5022 }, { "weight": 1, "sprite": 5021 } ], + "fg": [ { "weight": 1, "sprite": 5246 }, { "weight": 1, "sprite": 5245 } ], "bg": 2752 }, { "id": "mon_cat_maine_coon", - "fg": [ { "weight": 1, "sprite": 5025 }, { "weight": 1, "sprite": 5024 } ], + "fg": [ { "weight": 1, "sprite": 5249 }, { "weight": 1, "sprite": 5248 } ], "bg": 2752 }, { "id": "mon_cat_persian", - "fg": [ { "weight": 1, "sprite": 5028 }, { "weight": 1, "sprite": 5027 } ], + "fg": [ { "weight": 1, "sprite": 5252 }, { "weight": 1, "sprite": 5251 } ], "bg": 2752 }, { "id": "mon_cat_siamese", - "fg": [ { "weight": 1, "sprite": 5032 }, { "weight": 1, "sprite": 5031 } ], + "fg": [ { "weight": 1, "sprite": 5256 }, { "weight": 1, "sprite": 5255 } ], "bg": 2752 }, { "id": "mon_cat_sphynx", - "fg": [ { "weight": 1, "sprite": 5035 }, { "weight": 1, "sprite": 5034 } ], + "fg": [ { "weight": 1, "sprite": 5259 }, { "weight": 1, "sprite": 5258 } ], "bg": 2752 }, { "id": "mon_cat_tabby", - "fg": [ { "weight": 1, "sprite": 5038 }, { "weight": 1, "sprite": 5037 } ], + "fg": [ { "weight": 1, "sprite": 5262 }, { "weight": 1, "sprite": 5261 } ], "bg": 2752 }, - { "id": "mon_cat_kitten", "fg": 5029, "bg": 2752 }, - { "id": "mon_cat_bengal_kitten", "fg": 5008, "bg": 2752 }, - { "id": "mon_cat_calico_kitten", "fg": 5011, "bg": 2752 }, - { "id": "mon_cat_chonker_kitten", "fg": 5014, "bg": 2752 }, - { "id": "mon_cat_devon_rex_kitten", "fg": 5017, "bg": 2752 }, - { "id": "mon_cat_longhair_kitten", "fg": 5020, "bg": 2752 }, - { "id": "mon_cat_maine_coon_kitten", "fg": 5023, "bg": 2752 }, - { "id": "mon_cat_persian_kitten", "fg": 5026, "bg": 2752 }, - { "id": "mon_cat_siamese_kitten", "fg": 5030, "bg": 2752 }, - { "id": "mon_cat_sphynx_kitten", "fg": 5033, "bg": 2752 }, - { "id": "mon_cat_tabby_kitten", "fg": 5036, "bg": 2752 }, - { "id": "mon_dog_beagle", "fg": 5039, "bg": 2752 }, - { "id": "mon_dog_gshepherd", "fg": 5042, "bg": 2751 }, - { "id": "mon_dog_boxer", "fg": 5040, "bg": 2751 }, - { "id": "mon_dog_dachshund", "fg": 5041, "bg": 2751 }, - { "id": "mon_spawn_raptor", "fg": 5043, "bg": 2751 }, - { "id": "mon_crow_mutant_small", "fg": 5044, "bg": 2751 } + { "id": "mon_cat_kitten", "fg": 5253, "bg": 2752 }, + { "id": "mon_cat_bengal_kitten", "fg": 5232, "bg": 2752 }, + { "id": "mon_cat_calico_kitten", "fg": 5235, "bg": 2752 }, + { "id": "mon_cat_chonker_kitten", "fg": 5238, "bg": 2752 }, + { "id": "mon_cat_devon_rex_kitten", "fg": 5241, "bg": 2752 }, + { "id": "mon_cat_longhair_kitten", "fg": 5244, "bg": 2752 }, + { "id": "mon_cat_maine_coon_kitten", "fg": 5247, "bg": 2752 }, + { "id": "mon_cat_persian_kitten", "fg": 5250, "bg": 2752 }, + { "id": "mon_cat_siamese_kitten", "fg": 5254, "bg": 2752 }, + { "id": "mon_cat_sphynx_kitten", "fg": 5257, "bg": 2752 }, + { "id": "mon_cat_tabby_kitten", "fg": 5260, "bg": 2752 }, + { "id": "mon_dog_beagle", "fg": 5263, "bg": 2752 }, + { "id": "mon_dog_gshepherd", "fg": 5266, "bg": 2751 }, + { "id": "mon_dog_boxer", "fg": 5264, "bg": 2751 }, + { "id": "mon_dog_dachshund", "fg": 5265, "bg": 2751 }, + { "id": "mon_spawn_raptor", "fg": 5267, "bg": 2751 }, + { "id": "mon_crow_mutant_small", "fg": 5268, "bg": 2751 } ] }, { "file": "fillertall.png", - "//": "range 5056 to 5071", + "//": "range 5280 to 5295", "sprite_width": 32, "sprite_height": 64, "sprite_offset_x": 0, "sprite_offset_y": -32, "tiles": [ - { "id": "mon_zombie_phase_skulker", "fg": 5058, "bg": 5056 }, - { "id": "mon_zombie_phase_shrike", "fg": 5057, "bg": 5056 }, + { "id": "mon_zombie_phase_skulker", "fg": 5282, "bg": 5280 }, + { "id": "mon_zombie_phase_shrike", "fg": 5281, "bg": 5280 }, { "id": "mon_exodii_worker", "fg": [ - { "weight": 15, "sprite": 5059 }, - { "weight": 15, "sprite": 5060 }, - { "weight": 10, "sprite": 5061 }, - { "weight": 10, "sprite": 5062 } + { "weight": 15, "sprite": 5283 }, + { "weight": 15, "sprite": 5284 }, + { "weight": 10, "sprite": 5285 }, + { "weight": 10, "sprite": 5286 } ], - "bg": 5056 + "bg": 5280 }, - { "id": [ "mon_zombie_crawler_pupa", "mon_zombie_crawler_pupa_decoy" ], "fg": 5063, "bg": 5056 }, - { "id": [ "mon_zombie_pupa", "mon_zombie_pupa_decoy" ], "fg": 5064, "bg": 5056 }, - { "id": [ "mon_zombie_pupa_shady", "mon_zombie_pupa_decoy_shady" ], "fg": 5065, "bg": 5056 }, - { "id": "mon_zombie_winged", "fg": 5066, "bg": 5056 } + { "id": [ "mon_zombie_crawler_pupa", "mon_zombie_crawler_pupa_decoy" ], "fg": 5287, "bg": 5280 }, + { "id": [ "mon_zombie_pupa", "mon_zombie_pupa_decoy" ], "fg": 5288, "bg": 5280 }, + { "id": [ "mon_zombie_pupa_shady", "mon_zombie_pupa_decoy_shady" ], "fg": 5289, "bg": 5280 }, + { "id": "mon_zombie_winged", "fg": 5290, "bg": 5280 } ] }, { diff --git a/gfx/MshockXotto+/tiles.png b/gfx/MshockXotto+/tiles.png index 13321e9c8a3b2..f185f39826eac 100644 Binary files a/gfx/MshockXotto+/tiles.png and b/gfx/MshockXotto+/tiles.png differ diff --git a/gfx/UltimateCataclysm/fillerhoder.png b/gfx/UltimateCataclysm/fillerhoder.png index 3d41b30acd5f2..be2fac634cb28 100644 Binary files a/gfx/UltimateCataclysm/fillerhoder.png and b/gfx/UltimateCataclysm/fillerhoder.png differ diff --git a/gfx/UltimateCataclysm/incomplete.png b/gfx/UltimateCataclysm/incomplete.png index a010fe0d28a39..8cd4284e7c75c 100644 Binary files a/gfx/UltimateCataclysm/incomplete.png and b/gfx/UltimateCataclysm/incomplete.png differ diff --git a/gfx/UltimateCataclysm/large.png b/gfx/UltimateCataclysm/large.png index 22bd13de5d3a4..3503495f06dee 100644 Binary files a/gfx/UltimateCataclysm/large.png and b/gfx/UltimateCataclysm/large.png differ diff --git a/gfx/UltimateCataclysm/normal.png b/gfx/UltimateCataclysm/normal.png index aff09326be5e9..b25e4015cf146 100644 Binary files a/gfx/UltimateCataclysm/normal.png and b/gfx/UltimateCataclysm/normal.png differ diff --git a/gfx/UltimateCataclysm/small.png b/gfx/UltimateCataclysm/small.png index dd0367acf4892..84e2ac01d4720 100644 Binary files a/gfx/UltimateCataclysm/small.png and b/gfx/UltimateCataclysm/small.png differ diff --git a/gfx/UltimateCataclysm/tall.png b/gfx/UltimateCataclysm/tall.png index afbb7e662e1b8..786ba2d20a9c1 100644 Binary files a/gfx/UltimateCataclysm/tall.png and b/gfx/UltimateCataclysm/tall.png differ diff --git a/gfx/UltimateCataclysm/tile_config.json b/gfx/UltimateCataclysm/tile_config.json index c36790fca344c..cb6f41af796a0 100644 --- a/gfx/UltimateCataclysm/tile_config.json +++ b/gfx/UltimateCataclysm/tile_config.json @@ -5,40 +5,41 @@ "tiles-new": [ { "file": "small.png", - "//": "range 1 to 415", + "//": "range 1 to 479", "sprite_width": 20, "sprite_height": 20, "sprite_offset_x": 6, "sprite_offset_y": 0, "tiles": [ - { "id": [ "plastic_plate", "glass_bowl", "plastic_bowl_kids", "soap_holder" ], "fg": 48 }, + { "id": [ "plastic_plate", "glass_bowl", "plastic_bowl_kids", "soap_holder" ], "fg": 54 }, { "id": "RAM", "fg": 2 }, - { "id": "helmet_motor", "fg": 100 }, - { "id": "katana", "fg": 101 }, - { "id": "katana_fake", "fg": 101 }, - { "id": "katana_inferior", "fg": 101 }, - { "id": "223_casing", "fg": 102 }, - { "id": "40mm_casing", "fg": 103 }, - { "id": "40x46mm_m118_casing", "fg": 103 }, - { "id": "50_casing", "fg": 104 }, - { "id": "9mm_casing", "fg": 105 }, - { "id": "arrow_cf", "fg": 106 }, - { "id": "arrow_exploding", "fg": 107 }, - { "id": "arrow_field_point_fletched", "fg": 108 }, - { "id": "arrow_fire_hardened_fletched", "fg": 109 }, - { "id": "flamable_arrow", "fg": 123 }, - { "id": "arrow_flamming", "fg": 110 }, - { "id": "arrow_heavy_fire_hardened_fletched", "fg": 111 }, - { "id": "arrow_metal", "fg": 112 }, - { "id": "arrow_metal_sharpened_fletched", "fg": 113 }, - { "id": "arrow_plastic", "fg": 114 }, - { "id": "arrow_small_game_fletched", "fg": 115 }, - { "id": "arrow_wood", "fg": 116 }, - { "id": "arrow_wood_heavy", "fg": 117 }, - { "id": "bolt_cf", "fg": 118 }, - { "id": "bolt_explosive", "fg": 119 }, - { "id": "bolt_metal", "fg": 120 }, - { "id": [ "bolt_steel", "bolt_steel_bodkin", "bolt_steel_target" ], "fg": 121 }, + { "id": "ceramic_plate", "fg": 54 }, + { "id": "helmet_motor", "fg": 138 }, + { "id": "katana", "fg": 139 }, + { "id": "katana_fake", "fg": 139 }, + { "id": "katana_inferior", "fg": 139 }, + { "id": "223_casing", "fg": 140 }, + { "id": "40mm_casing", "fg": 141 }, + { "id": "40x46mm_m118_casing", "fg": 141 }, + { "id": "50_casing", "fg": 142 }, + { "id": "9mm_casing", "fg": 143 }, + { "id": "arrow_cf", "fg": 144 }, + { "id": "arrow_exploding", "fg": 145 }, + { "id": "arrow_field_point_fletched", "fg": 146 }, + { "id": "arrow_fire_hardened_fletched", "fg": 147 }, + { "id": "flamable_arrow", "fg": 161 }, + { "id": "arrow_flamming", "fg": 148 }, + { "id": "arrow_heavy_fire_hardened_fletched", "fg": 149 }, + { "id": "arrow_metal", "fg": 150 }, + { "id": "arrow_metal_sharpened_fletched", "fg": 151 }, + { "id": "arrow_plastic", "fg": 152 }, + { "id": "arrow_small_game_fletched", "fg": 153 }, + { "id": "arrow_wood", "fg": 154 }, + { "id": "arrow_wood_heavy", "fg": 155 }, + { "id": "bolt_cf", "fg": 156 }, + { "id": "bolt_explosive", "fg": 157 }, + { "id": "bolt_metal", "fg": 158 }, + { "id": [ "bolt_steel", "bolt_steel_bodkin", "bolt_steel_target" ], "fg": 159 }, { "id": [ "bolt_wood", @@ -49,57 +50,57 @@ "bolt_wood_bodkin", "bolt_wood_small_game" ], - "fg": 122 - }, - { "id": "shot_hull", "fg": 124 }, - { "id": "basket_laundry", "fg": 136 }, - { "id": "heavy_battery_cell", "fg": 138 }, - { "id": "heavy_plus_battery_cell", "fg": 138 }, - { "id": "heavy_disposable_cell", "fg": 138 }, - { "id": "heavy_atomic_battery_cell", "fg": 137 }, - { "id": "light_battery_cell", "fg": 140 }, - { "id": "light_minus_battery_cell", "fg": 142 }, - { "id": "light_plus_battery_cell", "fg": 140 }, - { "id": "light_disposable_cell", "fg": 140 }, - { "id": "light_atomic_battery_cell", "fg": 139 }, - { "id": "light_minus_atomic_battery_cell", "fg": 141 }, - { "id": "medium_battery_cell", "fg": 144 }, - { "id": "medium_plus_battery_cell", "fg": 144 }, - { "id": "medium_disposable_cell", "fg": 144 }, - { "id": "medium_atomic_battery_cell", "fg": 143 }, - { "id": "bead_bracelet", "fg": 145 }, - { "id": "bone", "fg": 146 }, - { "id": "bone_human", "fg": 147 }, - { "id": "bone_tainted", "fg": 148 }, - { "id": "SICP", "fg": 149 }, - { "id": [ "flyer", "necropolis_leaflet", "abstractmap" ], "fg": 150 }, - { "id": "book_fict_soft_tpl", "fg": 160 }, - { "id": "novel_adventure", "fg": 160 }, - { "id": "novel_buddy", "fg": 161 }, - { "id": "novel_coa", "fg": 162 }, - { "id": "novel_coa2", "fg": 163 }, - { "id": "novel_crime", "fg": 164 }, - { "id": "novel_crime2", "fg": 165 }, - { "id": "novel_drama", "fg": 166 }, - { "id": "novel_erotic", "fg": 167 }, - { "id": "novel_experimental", "fg": 168 }, - { "id": "novel_fantasy", "fg": 169 }, - { "id": "novel_horror", "fg": 170 }, - { "id": "novel_mystery", "fg": 171 }, - { "id": "novel_pulp", "fg": 172 }, - { "id": "novel_road", "fg": 173 }, - { "id": "novel_romance", "fg": 174 }, - { "id": "novel_samurai", "fg": 175 }, - { "id": "novel_satire", "fg": 176 }, - { "id": "novel_scifi", "fg": 177 }, - { "id": "novel_sports", "fg": 178 }, - { "id": "novel_spy", "fg": 179 }, - { "id": "novel_swash", "fg": 180 }, - { "id": "novel_thriller", "fg": 181 }, - { "id": "novel_tragedy", "fg": 182 }, - { "id": "novel_war", "fg": 183 }, - { "id": "novel_war2", "fg": 184 }, - { "id": "novel_western", "fg": 185 }, + "fg": 160 + }, + { "id": "shot_hull", "fg": 162 }, + { "id": "basket_laundry", "fg": 174 }, + { "id": "heavy_battery_cell", "fg": 176 }, + { "id": "heavy_plus_battery_cell", "fg": 176 }, + { "id": "heavy_disposable_cell", "fg": 176 }, + { "id": "heavy_atomic_battery_cell", "fg": 175 }, + { "id": "light_battery_cell", "fg": 178 }, + { "id": "light_minus_battery_cell", "fg": 180 }, + { "id": "light_plus_battery_cell", "fg": 178 }, + { "id": "light_disposable_cell", "fg": 178 }, + { "id": "light_atomic_battery_cell", "fg": 177 }, + { "id": "light_minus_atomic_battery_cell", "fg": 179 }, + { "id": "medium_battery_cell", "fg": 182 }, + { "id": "medium_plus_battery_cell", "fg": 182 }, + { "id": "medium_disposable_cell", "fg": 182 }, + { "id": "medium_atomic_battery_cell", "fg": 181 }, + { "id": "bead_bracelet", "fg": 183 }, + { "id": "bone", "fg": 184 }, + { "id": "bone_human", "fg": 185 }, + { "id": "bone_tainted", "fg": 186 }, + { "id": "SICP", "fg": 187 }, + { "id": [ "flyer", "necropolis_leaflet", "abstractmap" ], "fg": 188 }, + { "id": "book_fict_soft_tpl", "fg": 198 }, + { "id": "novel_adventure", "fg": 198 }, + { "id": "novel_buddy", "fg": 199 }, + { "id": "novel_coa", "fg": 200 }, + { "id": "novel_coa2", "fg": 201 }, + { "id": "novel_crime", "fg": 202 }, + { "id": "novel_crime2", "fg": 203 }, + { "id": "novel_drama", "fg": 204 }, + { "id": "novel_erotic", "fg": 205 }, + { "id": "novel_experimental", "fg": 206 }, + { "id": "novel_fantasy", "fg": 207 }, + { "id": "novel_horror", "fg": 208 }, + { "id": "novel_mystery", "fg": 209 }, + { "id": "novel_pulp", "fg": 210 }, + { "id": "novel_road", "fg": 211 }, + { "id": "novel_romance", "fg": 212 }, + { "id": "novel_samurai", "fg": 213 }, + { "id": "novel_satire", "fg": 214 }, + { "id": "novel_scifi", "fg": 215 }, + { "id": "novel_sports", "fg": 216 }, + { "id": "novel_spy", "fg": 217 }, + { "id": "novel_swash", "fg": 218 }, + { "id": "novel_thriller", "fg": 219 }, + { "id": "novel_tragedy", "fg": 220 }, + { "id": "novel_war", "fg": 221 }, + { "id": "novel_war2", "fg": 222 }, + { "id": "novel_western", "fg": 223 }, { "id": [ "adv_chemistry", @@ -119,7 +120,7 @@ "modern_tanner", "repeater_mod_guide" ], - "fg": 152 + "fg": 190 }, { "id": [ @@ -140,7 +141,7 @@ "textbook_robots", "textbook_armschina" ], - "fg": 159 + "fg": 197 }, { "id": [ @@ -155,7 +156,7 @@ "cookbook_daintydishes", "cookbook_liverforkids" ], - "fg": 153 + "fg": 191 }, { "id": [ @@ -168,7 +169,7 @@ "recipe_melee", "recipe_labchem" ], - "fg": 157 + "fg": 195 }, { "id": [ @@ -185,9 +186,9 @@ "recipe_creepy", "recipe_maiar" ], - "fg": 157 + "fg": 195 }, - { "id": [ "pocket_firstaid", "pocket_firearms", "pocket_survival" ], "fg": 156 }, + { "id": [ "pocket_firstaid", "pocket_firearms", "pocket_survival" ], "fg": 194 }, { "id": [ "mag_rifle", @@ -211,7 +212,7 @@ "mag_swimming", "mag_news" ], - "fg": 154 + "fg": 192 }, { "id": [ @@ -228,7 +229,7 @@ "schematics_searchlight", "schematics_secubot" ], - "fg": 158 + "fg": 196 }, { "id": [ @@ -249,82 +250,81 @@ "manual_shotgun", "manual_fabrication" ], - "fg": 155 - }, - { "id": [ "record_patient", "tailor_portfolio", "isherwood_herbal_remedies" ], "fg": 151 }, - { "id": "bottle_twoliter", "fg": 186 }, - { "id": "bowl_pewter", "fg": 187 }, - { "id": "ceramic_cup", "fg": 208 }, - { "id": "ceramic_mug", "fg": 209 }, - { "id": "ceramic_shard", "fg": 210 }, - { "id": "chain", "fg": 211 }, - { "id": "clay_lump", "fg": 212 }, - { "id": "bag_plastic", "fg": 213 }, - { "id": "bag_zipper", "fg": 214 }, - { "id": "bottle_glass", "fg": 215 }, - { "id": "bottle_plastic", "fg": 216 }, - { "id": "bottle_plastic_small", "fg": 217 }, - { "id": "box_cigarette", "fg": 218 }, - { "id": "box_small", "fg": 219 }, - { "id": "can_drink", "fg": 220 }, - { "id": "can_drink_unsealed", "fg": 221 }, - { "id": "can_food", "fg": 222 }, - { "id": [ "glass", "base_glass_dish", "wine_glass" ], "fg": 223 }, - { "id": "jar_3l_glass", "fg": 224 }, - { "id": "jar_3l_glass_sealed", "fg": 225 }, - { "id": "jar_glass", "fg": 226 }, - { "id": "jar_glass_sealed", "fg": 227 }, - { "id": "jug_plastic", "fg": 228 }, - { "id": "wrapper", "fg": 229 }, - { "id": "cudgel", "fg": 230 }, - { "id": "hinge", "fg": 237 }, - { "id": "inhaler", "fg": 238 }, - { "id": [ "kasaya", "samghati", "antarvasa", "uttarasanga" ], "fg": 239 }, - { "id": "kettle", "fg": 240 }, - { "id": "cig_butt", "fg": 267 }, - { "id": "joint", "fg": 271 }, - { "id": "joint_lit", "fg": 272 }, - { "id": "joint_roach", "fg": 273 }, - { "id": "aspirin", "fg": 264 }, - { "id": "bandages", "fg": 265 }, - { "id": "syringe", "fg": 277 }, - { "id": "antibiotics", "fg": 261 }, - { "id": "weak_antibiotic", "fg": 280 }, - { "id": "strong_antibiotic", "fg": 276 }, - { "id": "vitamins", "fg": 279 }, - { "id": "gummy_vitamins", "fg": 269 }, - { "id": "calcium_tablet", "fg": 266 }, - { "id": "oxycodone", "fg": 274 }, - { "id": "tramadol", "fg": 278 }, - { "id": "codeine", "fg": 293 }, - { "id": "prussian_blue", "fg": 275 }, - { "id": "iodine", "fg": 270 }, - { "id": "antiparasitic", "fg": 263 }, - { "id": "antifungal", "fg": 262 }, - { "id": "money_bundle", "fg": 281 }, - { "id": "mp3", "fg": 282 }, - { "id": "permanent_marker", "fg": 315 }, - { "id": "pipe", "fg": 317 }, - { "id": "cu_pipe", "fg": 316 }, - { "id": "acorns", "fg": 318 }, - { "id": "chips", "fg": 322 }, - { "id": "apple", "fg": 319 }, - { "id": "banana", "fg": 320 }, - { "id": "broccoli", "fg": 321 }, - { "id": "corn", "fg": 323 }, - { "id": "cucumber", "fg": 324 }, - { "id": "egg_bird", "fg": 325 }, - { "id": "grapes", "fg": 326 }, - { "id": "lemon", "fg": 330 }, - { "id": "onion", "fg": 331 }, - { "id": "orange", "fg": 332 }, - { "id": "pear", "fg": 333 }, - { "id": "potato", "fg": 334 }, - { "id": "pumpkin", "fg": 335 }, - { "id": "tomato", "fg": 338 }, - { "id": "hickory_nut", "fg": 327 }, - { "id": "hickory_root", "fg": 328 }, - { "id": "juniper", "fg": 329 }, + "fg": 193 + }, + { "id": [ "record_patient", "tailor_portfolio", "isherwood_herbal_remedies" ], "fg": 189 }, + { "id": "bottle_twoliter", "fg": 224 }, + { "id": "bowl_pewter", "fg": 225 }, + { "id": "ceramic_cup", "fg": 263 }, + { "id": "ceramic_mug", "fg": 264 }, + { "id": "ceramic_shard", "fg": 265 }, + { "id": "chain", "fg": 266 }, + { "id": "clay_lump", "fg": 267 }, + { "id": "bag_plastic", "fg": 268 }, + { "id": "bag_zipper", "fg": 269 }, + { "id": "bottle_glass", "fg": 270 }, + { "id": "bottle_plastic", "fg": 271 }, + { "id": "bottle_plastic_small", "fg": 272 }, + { "id": "box_cigarette", "fg": 273 }, + { "id": "box_small", "fg": 274 }, + { "id": "can_drink", "fg": 275 }, + { "id": "can_drink_unsealed", "fg": 276 }, + { "id": "can_food", "fg": 277 }, + { "id": [ "glass", "base_glass_dish" ], "fg": 278 }, + { "id": "jar_3l_glass", "fg": 279 }, + { "id": "jar_3l_glass_sealed", "fg": 280 }, + { "id": "jar_glass", "fg": 281 }, + { "id": "jar_glass_sealed", "fg": 282 }, + { "id": "jug_plastic", "fg": 283 }, + { "id": "wrapper", "fg": 284 }, + { "id": "cudgel", "fg": 285 }, + { "id": "hinge", "fg": 292 }, + { "id": "inhaler", "fg": 293 }, + { "id": [ "kasaya", "samghati", "antarvasa", "uttarasanga" ], "fg": 294 }, + { "id": "cig_butt", "fg": 321 }, + { "id": "joint", "fg": 325 }, + { "id": "joint_lit", "fg": 326 }, + { "id": "joint_roach", "fg": 327 }, + { "id": "aspirin", "fg": 318 }, + { "id": "bandages", "fg": 319 }, + { "id": "syringe", "fg": 331 }, + { "id": "antibiotics", "fg": 315 }, + { "id": "weak_antibiotic", "fg": 334 }, + { "id": "strong_antibiotic", "fg": 330 }, + { "id": "vitamins", "fg": 333 }, + { "id": "gummy_vitamins", "fg": 323 }, + { "id": "calcium_tablet", "fg": 320 }, + { "id": "oxycodone", "fg": 328 }, + { "id": "tramadol", "fg": 332 }, + { "id": "codeine", "fg": 347 }, + { "id": "prussian_blue", "fg": 329 }, + { "id": "iodine", "fg": 324 }, + { "id": "antiparasitic", "fg": 317 }, + { "id": "antifungal", "fg": 316 }, + { "id": "money_bundle", "fg": 335 }, + { "id": "mp3", "fg": 336 }, + { "id": "permanent_marker", "fg": 369 }, + { "id": "pipe", "fg": 371 }, + { "id": "cu_pipe", "fg": 370 }, + { "id": "acorns", "fg": 372 }, + { "id": "chips", "fg": 376 }, + { "id": "apple", "fg": 373 }, + { "id": "banana", "fg": 374 }, + { "id": "broccoli", "fg": 375 }, + { "id": "corn", "fg": 377 }, + { "id": "cucumber", "fg": 378 }, + { "id": "egg_bird", "fg": 379 }, + { "id": "grapes", "fg": 380 }, + { "id": "lemon", "fg": 384 }, + { "id": "onion", "fg": 385 }, + { "id": "orange", "fg": 386 }, + { "id": "pear", "fg": 387 }, + { "id": "potato", "fg": 388 }, + { "id": "pumpkin", "fg": 389 }, + { "id": "tomato", "fg": 392 }, + { "id": "hickory_nut", "fg": 381 }, + { "id": "hickory_root", "fg": 382 }, + { "id": "juniper", "fg": 383 }, { "id": [ "seed_hops", @@ -392,74 +392,73 @@ "seed_mulberries", "seed_elderberries" ], - "fg": 336 - }, - { "id": "straw_pile", "fg": 337 }, - { "id": "wheat", "fg": 339 }, - { "id": "withered", "fg": 340 }, - { "id": "bee_balm", "fg": 341 }, - { "id": "carrot_wild", "fg": 342 }, - { "id": "dogbane", "fg": 343 }, - { "id": "egg_reptile", "fg": 344 }, - { "id": "mugwort", "fg": 345 }, - { "id": "thyme", "fg": 346 }, - { "id": "veggy_wild", "fg": 347 }, - { "id": "wild_herbs", "fg": 348 }, - { "id": "feces_manure", "fg": 352 }, - { "id": "feces_bird", "fg": 349 }, - { "id": "feces_cow", "fg": 350 }, - { "id": "feces_dog", "fg": 351 }, - { "id": "feces_roach", "fg": 353 }, - { "id": "fetid_goop", "fg": 354 }, - { "id": "rag_bloody", "fg": 355 }, - { "id": "ash", "fg": 361 }, - { "id": "brick", "fg": 362 }, - { "id": "scrap", "fg": 365 }, - { "id": "e_scrap", "fg": 364 }, - { "id": "steel_chunk", "fg": 366 }, - { "id": "steel_lump", "fg": 367 }, - { "id": "wire", "fg": 368 }, - { "id": "cable", "fg": 363 }, - { "id": "spring", "fg": 369 }, - { "id": "survnote", "fg": 370 }, - { "id": "creepy_doll", "fg": 371 }, - { "id": "talking_doll", "fg": 371 }, - { "id": "teapot", "fg": 373 }, - { "id": "thermometer", "fg": 374 }, - { "id": "crucible_clay", "fg": 375 }, - { "id": "flashlight", "fg": 377 }, - { "id": "heavy_flashlight", "fg": 380 }, - { "id": "saw", "fg": 389 }, - { "id": "screwdriver_set", "fg": 386 }, - { "id": "wrench", "fg": 390 }, - { "id": "hammer", "fg": 379 }, - { "id": "hacksaw", "fg": 378 }, - { "id": "knife_meat_cleaver", "fg": 385 }, - { "id": "knife_vegetable_cleaver", "fg": 388 }, + "fg": 390 + }, + { "id": "straw_pile", "fg": 391 }, + { "id": "wheat", "fg": 393 }, + { "id": "withered", "fg": 394 }, + { "id": "bee_balm", "fg": 395 }, + { "id": "carrot_wild", "fg": 396 }, + { "id": "dogbane", "fg": 397 }, + { "id": "egg_reptile", "fg": 398 }, + { "id": "mugwort", "fg": 399 }, + { "id": "thyme", "fg": 400 }, + { "id": "veggy_wild", "fg": 401 }, + { "id": "wild_herbs", "fg": 402 }, + { "id": "feces_manure", "fg": 406 }, + { "id": "feces_bird", "fg": 403 }, + { "id": "feces_cow", "fg": 404 }, + { "id": "feces_dog", "fg": 405 }, + { "id": "feces_roach", "fg": 407 }, + { "id": "fetid_goop", "fg": 408 }, + { "id": "rag_bloody", "fg": 409 }, + { "id": "ash", "fg": 415 }, + { "id": "brick", "fg": 416 }, + { "id": "scrap", "fg": 419 }, + { "id": "e_scrap", "fg": 418 }, + { "id": "steel_chunk", "fg": 420 }, + { "id": "steel_lump", "fg": 421 }, + { "id": "wire", "fg": 422 }, + { "id": "cable", "fg": 417 }, + { "id": "spring", "fg": 423 }, + { "id": "survnote", "fg": 424 }, + { "id": "creepy_doll", "fg": 425 }, + { "id": "talking_doll", "fg": 425 }, + { "id": "teapot", "fg": 427 }, + { "id": "thermometer", "fg": 428 }, + { "id": "crucible_clay", "fg": 429 }, + { "id": "flashlight", "fg": 431 }, + { "id": "heavy_flashlight", "fg": 434 }, + { "id": "saw", "fg": 443 }, + { "id": "screwdriver_set", "fg": 440 }, + { "id": "wrench", "fg": 444 }, + { "id": "hammer", "fg": 433 }, + { "id": "hacksaw", "fg": 432 }, + { "id": "knife_meat_cleaver", "fg": 439 }, + { "id": "knife_vegetable_cleaver", "fg": 442 }, { "id": "lighter", - "fg": [ { "weight": 1, "sprite": 382 }, { "weight": 1, "sprite": 381 }, { "weight": 1, "sprite": 383 } ] - }, - { "id": "makeshift_crowbar", "fg": 384 }, - { "id": "esbit_stove", "fg": 376 }, - { "id": "usb_drive", "fg": 387 }, - { "id": "cash_card", "fg": 391 }, - { "id": "file", "fg": 392 }, - { "id": "fp_loyalty_card", "fg": 393 }, - { "id": "id_industrial", "fg": 394 }, - { "id": "id_military", "fg": 395 }, - { "id": "id_science", "fg": 396 }, - { "id": "bowl_plastic", "fg": 397 }, - { "id": "cup_plastic", "fg": 398 }, - { "id": "fork", "fg": 399 }, - { "id": "glass_plate", "fg": 400 }, - { "id": "knife_butter", "fg": 401 }, - { "id": "washboard", "fg": 408 }, - { "id": "wash_kit", "fg": 407 }, - { "id": "helmet_army", "fg": 412 }, - { "id": "foodperson_mask", "fg": 410 }, - { "id": "foodperson_mask_on", "fg": 411 }, - { "id": "ballistic_vest_esapi", "fg": 409 }, + "fg": [ { "weight": 1, "sprite": 436 }, { "weight": 1, "sprite": 435 }, { "weight": 1, "sprite": 437 } ] + }, + { "id": "makeshift_crowbar", "fg": 438 }, + { "id": "esbit_stove", "fg": 430 }, + { "id": "usb_drive", "fg": 441 }, + { "id": "cash_card", "fg": 445 }, + { "id": "file", "fg": 446 }, + { "id": "fp_loyalty_card", "fg": 447 }, + { "id": "id_industrial", "fg": 448 }, + { "id": "id_military", "fg": 449 }, + { "id": "id_science", "fg": 450 }, + { "id": "bowl_plastic", "fg": 451 }, + { "id": "cup_plastic", "fg": 452 }, + { "id": "fork", "fg": 453 }, + { "id": "knife_butter", "fg": 454 }, + { "id": "washboard", "fg": 461 }, + { "id": "wash_kit", "fg": 460 }, + { "id": "helmet_army", "fg": 465 }, + { "id": "foodperson_mask", "fg": 463 }, + { "id": "foodperson_mask_on", "fg": 464 }, + { "id": "ballistic_vest_esapi", "fg": 462 }, { "id": "saddle", "fg": 1 }, { "id": "beans_cooked", "fg": 3 }, { "id": "cheese_fries", "fg": 4 }, @@ -503,893 +502,942 @@ { "id": "adhesive_bandages", "fg": 42 }, { "id": "atomic_light", "fg": 43 }, { "id": "atomic_light_off", "fg": 44 }, - { "id": "bandana", "fg": 45 }, - { "id": "boltcutters", "fg": 46 }, - { "id": "briefcase", "fg": 47 }, - { "id": "chain_link", "fg": 49 }, - { "id": "chainmail_suit_faraday", "fg": 50 }, - { "id": "charcoal", "fg": 51 }, - { "id": "chisel", "fg": 52 }, - { "id": "cordless_drill", "fg": 53 }, - { "id": "data_card", "fg": 54 }, - { "id": "food_processor", "fg": 55 }, - { "id": "frisbee", "fg": 56 }, - { "id": "gloves_light", "fg": 57 }, - { "id": "hammer_sledge", "fg": 58 }, - { "id": "hammer_sledge_engineer", "fg": 59 }, - { "id": "hammer_sledge_heavy", "fg": 60 }, - { "id": "hammer_sledge_short", "fg": 61 }, - { "id": "harmonica_holder", "fg": 62 }, - { "id": "jack", "fg": 63 }, - { "id": "jack_makeshift", "fg": 64 }, - { "id": "jack_small", "fg": 65 }, - { "id": "jackhammer", "fg": 66 }, - { "id": "laptop", "fg": 67 }, - { "id": "link_sheet", "fg": 68 }, - { "id": "machete", "fg": 69 }, - { "id": "makeshift_bayonet", "fg": 70 }, - { "id": "makeshift_hammer", "fg": 71 }, - { "id": "makeshift_machete", "fg": 72 }, - { "id": "makeshift_stethoscope", "fg": 73 }, - { "id": "mbag", "fg": 74 }, - { "id": "paper", "fg": 75 }, - { "id": "pliers", "fg": 76 }, - { "id": "pot_helmet", "fg": 77 }, - { "id": "pot_makeshift", "fg": 78 }, - { "id": "pot_makeshift_copper", "fg": 79 }, - { "id": "reading_light", "fg": 80 }, - { "id": "reading_light_on", "fg": 81 }, - { "id": "receiver", "fg": 82 }, - { "id": "scarf", "fg": 83 }, - { "id": "shocktonfa_off", "fg": 84 }, - { "id": "shocktonfa_on", "fg": 85 }, - { "id": "slingpack", "fg": 86 }, - { "id": "smart_phone", "fg": 87 }, - { "id": "soap", "fg": 88 }, - { "id": "solder_wire", "fg": 89 }, - { "id": "spike", "fg": 90 }, - { "id": "stethoscope", "fg": 91 }, - { "id": "swage", "fg": 92 }, - { "id": "teleumbrella", "fg": 93 }, - { "id": "tonfa", "fg": 94 }, - { "id": "tonfa_wood", "fg": 95 }, - { "id": "tongs", "fg": 96 }, - { "id": "water_purifier", "fg": 97 }, - { "id": "wire_barbed", "fg": 98 }, - { "id": "halligan", "fg": 99 }, - { "id": "cig", "fg": 125 }, - { "id": "cig_lit", "fg": 126 }, - { "id": "copper_ring", "fg": 127 }, - { "id": "g_shovel", "fg": 128 }, - { "id": "gold_ring", "fg": 129 }, - { "id": "lsd", "fg": 130 }, - { "id": "silver_ring", "fg": 131 }, - { "id": "thermal_mask", "fg": 132 }, - { "id": "thermal_socks", "fg": 133 }, - { "id": "tie_clipon", "fg": 134 }, - { "id": "whistle", "fg": 135 }, - { "id": "ceramic_bowl", "fg": 188 }, - { "id": "radio_car", "fg": 189 }, - { "id": "radio_car_box", "fg": 190 }, - { "id": "radio_car_on", "fg": 191 }, - { "id": "radio_car_wheel", "fg": 192 }, - { "id": "radiocontrol", "fg": 193 }, - { "id": "rc_car_box", "fg": 194 }, - { "id": "toaster", "fg": 195 }, - { "id": "handflare", "fg": 196 }, - { "id": "heatpack", "fg": 197 }, - { "id": "heatpack_used", "fg": 198 }, - { "id": "analytical_set_basic", "fg": 199 }, - { "id": "balance_small", "fg": 200 }, - { "id": "beaker", "fg": 201 }, - { "id": "flask_glass", "fg": 202 }, - { "id": "gradcylinder", "fg": 203 }, - { "id": "ph_meter", "fg": 204 }, - { "id": "spectrophotometer", "fg": 205 }, - { "id": "test_tube", "fg": 206 }, - { "id": "voltmeter", "fg": 207 }, - { "id": "grenade", "fg": 231 }, - { "id": "grenade_act", "fg": 232 }, - { "id": "grenade_emp", "fg": 233 }, - { "id": "grenade_emp_act", "fg": 234 }, - { "id": "grenade_inc", "fg": 235 }, - { "id": "grenade_inc_act", "fg": 236 }, - { "id": "boxcutter", "fg": 241 }, - { "id": "copper_knife", "fg": 242 }, - { "id": "diveknife", "fg": 243 }, - { "id": "knife_bread", "fg": 244 }, - { "id": "knife_butcher", "fg": 245 }, - { "id": "knife_carving", "fg": 246 }, - { "id": "knife_chef", "fg": 247 }, - { "id": "knife_combat", "fg": 248 }, - { "id": "knife_folding", "fg": 249 }, - { "id": "knife_hunting", "fg": 250 }, - { "id": "knife_paring", "fg": 251 }, - { "id": "knife_rambo", "fg": 252 }, - { "id": "knife_rm42", "fg": 253 }, - { "id": "knife_steak", "fg": 254 }, - { "id": "knife_swissarmy", "fg": 255 }, - { "id": "knife_trench", "fg": 256 }, - { "id": "makeshift_knife", "fg": 257 }, - { "id": "pockknife", "fg": 258 }, - { "id": "primitive_knife", "fg": 259 }, - { "id": "throwing_knife", "fg": 260 }, - { "id": "eyedrops", "fg": 268 }, - { "id": "baseball", "fg": 283 }, - { "id": "basketball", "fg": 284 }, - { "id": "battery_car", "fg": 285 }, - { "id": "beach_volleyball", "fg": 286 }, - { "id": "bowling_ball", "fg": 287 }, - { "id": "cell_phone", "fg": 288 }, - { "id": "cell_phone_flashlight", "fg": 289 }, - { "id": "cigar", "fg": 290 }, - { "id": "cigar_butt", "fg": 291 }, - { "id": "cigar_lit", "fg": 292 }, - { "id": "ear_plugs", "fg": 294 }, - { "id": "fiddlehead_boiled", "fg": 295 }, - { "id": "fiddlehead_raw", "fg": 296 }, - { "id": "fiddlehead_sauteed", "fg": 297 }, - { "id": "flask_hip", "fg": 298 }, - { "id": "football", "fg": 299 }, - { "id": "golf_ball", "fg": 300 }, - { "id": "holo_sight", "fg": 301 }, - { "id": "indoor_volleyball", "fg": 302 }, - { "id": "misc_repairkit", "fg": 303 }, - { "id": "mre_beef_box", "fg": 304 }, - { "id": "peephole", "fg": 305 }, - { "id": "portable_game", "fg": 306 }, - { "id": "puck", "fg": 307 }, - { "id": "purse", "fg": 308 }, - { "id": "smokebomb", "fg": 309 }, - { "id": "smokebomb_act", "fg": 310 }, - { "id": "suppressor", "fg": 311 }, - { "id": "tourniquet_upper", "fg": 312 }, - { "id": "two_way_radio", "fg": 313 }, - { "id": "wristwatch", "fg": 314 }, - { "id": "pebble", "fg": 356 }, - { "id": "pebble_clay", "fg": 357 }, - { "id": "rock", "fg": 358 }, - { "id": "rock_flaking", "fg": 359 }, - { "id": "rock_large", "fg": 360 }, - { "id": "clay_teapot", "fg": 372 }, - { "id": "towel", "fg": 402 }, - { "id": "towel_soiled", "fg": 403 }, - { "id": "towel_wet", "fg": 404 }, - { "id": "battery_charger", "fg": 405 }, - { "id": "recharge_station", "fg": 406 } + { "id": "b_paint", "fg": 45 }, + { "id": "bandana", "fg": 46 }, + { "id": "boltcutters", "fg": 47 }, + { "id": "bottle_opener", "fg": 48 }, + { "id": "briefcase", "fg": 49 }, + { "id": "can_opener", "fg": 50 }, + { "id": "candle", "fg": 51 }, + { "id": "candlestick", "fg": 52 }, + { "id": "carving_fork", "fg": 53 }, + { "id": "chain_link", "fg": 55 }, + { "id": "chainmail_suit_faraday", "fg": 56 }, + { "id": "charcoal", "fg": 57 }, + { "id": "chipper", "fg": 58 }, + { "id": "chisel", "fg": 59 }, + { "id": "clay_pot_flower", "fg": 60 }, + { "id": "colander_steel", "fg": 61 }, + { "id": "copper_pan", "fg": 62 }, + { "id": "cordless_drill", "fg": 63 }, + { "id": "corkscrew", "fg": 64 }, + { "id": "data_card", "fg": 65 }, + { "id": "dish_towel", "fg": 66 }, + { "id": "food_processor", "fg": 67 }, + { "id": "frisbee", "fg": 68 }, + { "id": "g_paint", "fg": 69 }, + { "id": "garlic_press", "fg": 70 }, + { "id": "glass_plate", "fg": 71 }, + { "id": "gloves_light", "fg": 72 }, + { "id": "hammer_sledge", "fg": 73 }, + { "id": "hammer_sledge_engineer", "fg": 74 }, + { "id": "hammer_sledge_heavy", "fg": 75 }, + { "id": "hammer_sledge_short", "fg": 76 }, + { "id": "hand_drill", "fg": 77 }, + { "id": "harmonica_holder", "fg": 78 }, + { "id": "iron_pot", "fg": 79 }, + { "id": "jack", "fg": 80 }, + { "id": "jack_makeshift", "fg": 81 }, + { "id": "jack_small", "fg": 82 }, + { "id": "jackhammer", "fg": 83 }, + { "id": "kettle", "fg": 84 }, + { "id": "ladle", "fg": 85 }, + { "id": "laptop", "fg": 86 }, + { "id": "link_sheet", "fg": 87 }, + { "id": "machete", "fg": 88 }, + { "id": "makeshift_bayonet", "fg": 89 }, + { "id": "makeshift_hammer", "fg": 90 }, + { "id": "makeshift_machete", "fg": 91 }, + { "id": "makeshift_stethoscope", "fg": 92 }, + { "id": "matches", "fg": 93 }, + { "id": "mbag", "fg": 94 }, + { "id": "p_paint", "fg": 95 }, + { "id": "paint_brush", "fg": 96 }, + { "id": "pan", "fg": 97 }, + { "id": "paper", "fg": 98 }, + { "id": "peeler", "fg": 99 }, + { "id": "plastic_pot_flower", "fg": 100 }, + { "id": "pliers", "fg": 101 }, + { "id": "pot", "fg": 102 }, + { "id": "pot_canning", "fg": 103 }, + { "id": "pot_copper", "fg": 104 }, + { "id": "pot_helmet", "fg": 105 }, + { "id": "pot_makeshift", "fg": 106 }, + { "id": "pot_makeshift_copper", "fg": 107 }, + { "id": "potato_masher", "fg": 108 }, + { "id": "r_paint", "fg": 109 }, + { "id": "reading_light", "fg": 110 }, + { "id": "reading_light_on", "fg": 111 }, + { "id": "receiver", "fg": 112 }, + { "id": "rolling_pin", "fg": 113 }, + { "id": "scarf", "fg": 114 }, + { "id": "shocktonfa_off", "fg": 115 }, + { "id": "shocktonfa_on", "fg": 116 }, + { "id": "slingpack", "fg": 117 }, + { "id": "smart_phone", "fg": 118 }, + { "id": "soap", "fg": 119 }, + { "id": "solder_wire", "fg": 120 }, + { "id": "spatula", "fg": 121 }, + { "id": "spike", "fg": 122 }, + { "id": "steel_pan", "fg": 123 }, + { "id": "stethoscope", "fg": 124 }, + { "id": "stock_pot", "fg": 125 }, + { "id": "swage", "fg": 126 }, + { "id": "teleumbrella", "fg": 127 }, + { "id": "tonfa", "fg": 128 }, + { "id": "tonfa_wood", "fg": 129 }, + { "id": "tongs", "fg": 130 }, + { "id": "w_paint", "fg": 131 }, + { "id": "water_purifier", "fg": 132 }, + { "id": "whisk", "fg": 133 }, + { "id": "wine_glass", "fg": 134 }, + { "id": "wire_barbed", "fg": 135 }, + { "id": "y_paint", "fg": 136 }, + { "id": "halligan", "fg": 137 }, + { "id": "cig", "fg": 163 }, + { "id": "cig_lit", "fg": 164 }, + { "id": "copper_ring", "fg": 165 }, + { "id": "g_shovel", "fg": 166 }, + { "id": "gold_ring", "fg": 167 }, + { "id": "lsd", "fg": 168 }, + { "id": "silver_ring", "fg": 169 }, + { "id": "thermal_mask", "fg": 170 }, + { "id": "thermal_socks", "fg": 171 }, + { "id": "tie_clipon", "fg": 172 }, + { "id": "whistle", "fg": 173 }, + { "id": "ceramic_bowl", "fg": 226 }, + { "id": "chestrig", "fg": 227 }, + { "id": "radio_car", "fg": 228 }, + { "id": "radio_car_box", "fg": 229 }, + { "id": "radio_car_on", "fg": 230 }, + { "id": "radio_car_wheel", "fg": 231 }, + { "id": "radiocontrol", "fg": 232 }, + { "id": "rc_car_box", "fg": 233 }, + { "id": "toaster", "fg": 234 }, + { "id": "xl_chestrig", "fg": 235 }, + { "id": "ammolink", "fg": 236 }, + { "id": "angle_grinder", "fg": 237 }, + { "id": "atomic_lamp", "fg": 238 }, + { "id": "atomic_lamp_off", "fg": 239 }, + { "id": "birdfood", "fg": 240 }, + { "id": "drivebelt", "fg": 241 }, + { "id": "eink_tablet_pc", "fg": 242 }, + { "id": "handflare", "fg": 243 }, + { "id": "heatpack", "fg": 244 }, + { "id": "heatpack_used", "fg": 245 }, + { "id": "hoe", "fg": 246 }, + { "id": "horn_bicycle", "fg": 247 }, + { "id": "pencil", "fg": 248 }, + { "id": "pipe_glass", "fg": 249 }, + { "id": "sickle", "fg": 250 }, + { "id": "beartrap", "fg": 251 }, + { "id": "tr_beartrap", "fg": 252 }, + { "id": "wire_mesh", "fg": 253 }, + { "id": "analytical_set_basic", "fg": 254 }, + { "id": "balance_small", "fg": 255 }, + { "id": "beaker", "fg": 256 }, + { "id": "flask_glass", "fg": 257 }, + { "id": "gradcylinder", "fg": 258 }, + { "id": "ph_meter", "fg": 259 }, + { "id": "spectrophotometer", "fg": 260 }, + { "id": "test_tube", "fg": 261 }, + { "id": "voltmeter", "fg": 262 }, + { "id": "grenade", "fg": 286 }, + { "id": "grenade_act", "fg": 287 }, + { "id": "grenade_emp", "fg": 288 }, + { "id": "grenade_emp_act", "fg": 289 }, + { "id": "grenade_inc", "fg": 290 }, + { "id": "grenade_inc_act", "fg": 291 }, + { "id": "boxcutter", "fg": 295 }, + { "id": "copper_knife", "fg": 296 }, + { "id": "diveknife", "fg": 297 }, + { "id": "knife_bread", "fg": 298 }, + { "id": "knife_butcher", "fg": 299 }, + { "id": "knife_carving", "fg": 300 }, + { "id": "knife_chef", "fg": 301 }, + { "id": "knife_combat", "fg": 302 }, + { "id": "knife_folding", "fg": 303 }, + { "id": "knife_hunting", "fg": 304 }, + { "id": "knife_paring", "fg": 305 }, + { "id": "knife_rambo", "fg": 306 }, + { "id": "knife_rm42", "fg": 307 }, + { "id": "knife_steak", "fg": 308 }, + { "id": "knife_swissarmy", "fg": 309 }, + { "id": "knife_trench", "fg": 310 }, + { "id": "makeshift_knife", "fg": 311 }, + { "id": "pockknife", "fg": 312 }, + { "id": "primitive_knife", "fg": 313 }, + { "id": "throwing_knife", "fg": 314 }, + { "id": "eyedrops", "fg": 322 }, + { "id": "baseball", "fg": 337 }, + { "id": "basketball", "fg": 338 }, + { "id": "battery_car", "fg": 339 }, + { "id": "beach_volleyball", "fg": 340 }, + { "id": "bowling_ball", "fg": 341 }, + { "id": "cell_phone", "fg": 342 }, + { "id": "cell_phone_flashlight", "fg": 343 }, + { "id": "cigar", "fg": 344 }, + { "id": "cigar_butt", "fg": 345 }, + { "id": "cigar_lit", "fg": 346 }, + { "id": "ear_plugs", "fg": 348 }, + { "id": "fiddlehead_boiled", "fg": 349 }, + { "id": "fiddlehead_raw", "fg": 350 }, + { "id": "fiddlehead_sauteed", "fg": 351 }, + { "id": "flask_hip", "fg": 352 }, + { "id": "football", "fg": 353 }, + { "id": "golf_ball", "fg": 354 }, + { "id": "holo_sight", "fg": 355 }, + { "id": "indoor_volleyball", "fg": 356 }, + { "id": "misc_repairkit", "fg": 357 }, + { "id": "mre_beef_box", "fg": 358 }, + { "id": "peephole", "fg": 359 }, + { "id": "portable_game", "fg": 360 }, + { "id": "puck", "fg": 361 }, + { "id": "purse", "fg": 362 }, + { "id": "smokebomb", "fg": 363 }, + { "id": "smokebomb_act", "fg": 364 }, + { "id": "suppressor", "fg": 365 }, + { "id": "tourniquet_upper", "fg": 366 }, + { "id": "two_way_radio", "fg": 367 }, + { "id": "wristwatch", "fg": 368 }, + { "id": "pebble", "fg": 410 }, + { "id": "pebble_clay", "fg": 411 }, + { "id": "rock", "fg": 412 }, + { "id": "rock_flaking", "fg": 413 }, + { "id": "rock_large", "fg": 414 }, + { "id": "clay_teapot", "fg": 426 }, + { "id": "towel", "fg": 455 }, + { "id": "towel_soiled", "fg": 456 }, + { "id": "towel_wet", "fg": 457 }, + { "id": "battery_charger", "fg": 458 }, + { "id": "recharge_station", "fg": 459 } ] }, { "file": "normal.png", - "//": "range 416 to 2863", + "//": "range 480 to 3007", "tiles": [ - { "id": "fd_fire", "fg": 417 }, - { "id": "f_plant_seed", "fg": 423, "rotates": false }, - { "id": "f_plant_seedling", "fg": 424, "rotates": false }, - { "id": "f_plant_mature", "fg": 422, "rotates": false }, - { "id": "f_plant_harvest", "fg": 421, "rotates": false }, - { "id": "tr_rollmat", "fg": 426 }, - { "id": "tr_fur_rollmat", "fg": 425 }, - { "id": "f_air_conditioner", "fg": 427 }, - { "id": "f_armchair", "rotates": true, "fg": [ 430, 431, 429, 428 ] }, - { "id": "f_ash", "fg": 432 }, - { "id": "f_barricade_road", "fg": 433 }, + { "id": "fd_fire", "fg": 481 }, + { "id": "f_plant_seed", "fg": 487, "rotates": false }, + { "id": "f_plant_seedling", "fg": 488, "rotates": false }, + { "id": "f_plant_mature", "fg": 486, "rotates": false }, + { "id": "f_plant_harvest", "fg": 485, "rotates": false }, + { "id": "tr_rollmat", "fg": 490 }, + { "id": "tr_fur_rollmat", "fg": 489 }, + { "id": "f_air_conditioner", "fg": 491 }, + { "id": "f_armchair", "rotates": true, "fg": [ 494, 495, 493, 492 ] }, + { "id": "f_ash", "fg": 496 }, + { "id": "f_barricade_road", "fg": 497 }, { "id": "f_bathtub", "multitile": true, - "fg": 449, + "fg": 513, "additional_tiles": [ - { "id": "center", "fg": 434 }, - { "id": "corner", "fg": [ 436, 438, 437, 435 ] }, - { "id": "t_connection", "fg": [ 446, 448, 447, 445 ] }, - { "id": "edge", "fg": [ 440, 439 ] }, - { "id": "end_piece", "fg": [ 442, 444, 443, 441 ] }, - { "id": "unconnected", "fg": [ 449, 449 ] } + { "id": "center", "fg": 498 }, + { "id": "corner", "fg": [ 500, 502, 501, 499 ] }, + { "id": "t_connection", "fg": [ 510, 512, 511, 509 ] }, + { "id": "edge", "fg": [ 504, 503 ] }, + { "id": "end_piece", "fg": [ 506, 508, 507, 505 ] }, + { "id": "unconnected", "fg": [ 513, 513 ] } ] }, { "id": "f_bed", "multitile": true, - "fg": 465, + "fg": 529, "additional_tiles": [ - { "id": "center", "fg": 450 }, - { "id": "corner", "fg": [ 452, 454, 453, 451 ] }, - { "id": "t_connection", "fg": [ 462, 464, 463, 461 ] }, - { "id": "edge", "fg": [ 456, 455 ] }, - { "id": "end_piece", "fg": [ 458, 460, 459, 457 ] }, - { "id": "unconnected", "fg": [ 465, 465 ] } + { "id": "center", "fg": 514 }, + { "id": "corner", "fg": [ 516, 518, 517, 515 ] }, + { "id": "t_connection", "fg": [ 526, 528, 527, 525 ] }, + { "id": "edge", "fg": [ 520, 519 ] }, + { "id": "end_piece", "fg": [ 522, 524, 523, 521 ] }, + { "id": "unconnected", "fg": [ 529, 529 ] } ] }, { "id": "f_bench", "multitile": true, - "fg": 481, + "fg": 545, "additional_tiles": [ - { "id": "center", "fg": 466 }, - { "id": "corner", "fg": [ 468, 470, 469, 467 ] }, - { "id": "t_connection", "fg": [ 478, 480, 479, 477 ] }, - { "id": "edge", "fg": [ 472, 471 ] }, - { "id": "end_piece", "fg": [ 474, 476, 475, 473 ] }, - { "id": "unconnected", "fg": [ 481, 481 ] } + { "id": "center", "fg": 530 }, + { "id": "corner", "fg": [ 532, 534, 533, 531 ] }, + { "id": "t_connection", "fg": [ 542, 544, 543, 541 ] }, + { "id": "edge", "fg": [ 536, 535 ] }, + { "id": "end_piece", "fg": [ 538, 540, 539, 537 ] }, + { "id": "unconnected", "fg": [ 545, 545 ] } ] }, - { "id": "f_bluebell", "fg": [ { "weight": 1, "sprite": 483 }, { "weight": 2, "sprite": 484 } ] }, - { "id": "f_boulder_medium", "fg": 485 }, - { "id": "f_boulder_small", "fg": 486 }, - { "id": "f_generator_broken", "fg": 487 }, - { "id": "t_generator_broken", "fg": 487, "bg": 1534 }, - { "id": "f_bulletin", "fg": 488 }, - { "id": [ "f_canvas_door", "f_large_canvas_door" ], "fg": 489 }, - { "id": [ "f_canvas_door_o", "f_large_canvas_door_o" ], "fg": 490 }, + { "id": "f_bluebell", "fg": [ { "weight": 1, "sprite": 547 }, { "weight": 2, "sprite": 548 } ] }, + { "id": "f_boulder_medium", "fg": 549 }, + { "id": "f_boulder_small", "fg": 550 }, + { "id": "f_generator_broken", "fg": 551 }, + { "id": "t_generator_broken", "fg": 551, "bg": 1676 }, + { "id": "f_bulletin", "fg": 552 }, + { "id": [ "f_canvas_door", "f_large_canvas_door" ], "fg": 553 }, + { "id": [ "f_canvas_door_o", "f_large_canvas_door_o" ], "fg": 554 }, { "id": [ "f_canvas_wall", "f_large_canvas_wall" ], "multitile": true, - "fg": 506, + "fg": 570, "additional_tiles": [ - { "id": "center", "fg": 491 }, - { "id": "corner", "fg": [ 493, 495, 494, 492 ] }, - { "id": "t_connection", "fg": [ 503, 505, 504, 502 ] }, - { "id": "edge", "fg": [ 497, 496 ] }, - { "id": "end_piece", "fg": [ 499, 501, 500, 498 ] }, - { "id": "unconnected", "fg": 506 } + { "id": "center", "fg": 555 }, + { "id": "corner", "fg": [ 557, 559, 558, 556 ] }, + { "id": "t_connection", "fg": [ 567, 569, 568, 566 ] }, + { "id": "edge", "fg": [ 561, 560 ] }, + { "id": "end_piece", "fg": [ 563, 565, 564, 562 ] }, + { "id": "unconnected", "fg": 570 } ] }, - { "id": "f_cardboard_box", "fg": 507 }, - { "id": "f_centrifuge", "fg": 508 }, - { "id": "t_centrifuge", "fg": 508, "bg": 1763 }, - { "id": "f_chair", "rotates": true, "fg": [ 511, 512, 510, 509 ] }, - { "id": "f_chamomile", "fg": 513 }, - { "id": "f_compact_ASRG_containment", "fg": 515 }, + { "id": "f_cardboard_box", "fg": 571 }, + { "id": "f_centrifuge", "fg": 572 }, + { "id": "t_centrifuge", "fg": 572, "bg": 1905 }, + { "id": "f_chair", "rotates": true, "fg": [ 575, 576, 574, 573 ] }, + { "id": "f_chamomile", "fg": 577 }, + { "id": "f_compact_ASRG_containment", "fg": 579 }, { "id": "f_counter", "multitile": true, - "fg": 531, + "fg": 595, "additional_tiles": [ - { "id": "center", "fg": 516 }, - { "id": "corner", "fg": [ 518, 520, 519, 517 ] }, - { "id": "t_connection", "fg": [ 528, 530, 529, 527 ] }, - { "id": "edge", "fg": [ 522, 521 ] }, - { "id": "end_piece", "fg": [ 524, 526, 525, 523 ] }, - { "id": "unconnected", "fg": [ 531, 531 ] } + { "id": "center", "fg": 580 }, + { "id": "corner", "fg": [ 582, 584, 583, 581 ] }, + { "id": "t_connection", "fg": [ 592, 594, 593, 591 ] }, + { "id": "edge", "fg": [ 586, 585 ] }, + { "id": "end_piece", "fg": [ 588, 590, 589, 587 ] }, + { "id": "unconnected", "fg": [ 595, 595 ] } ] }, { "id": "f_cupboard", "multitile": true, - "fg": 547, + "fg": 611, "additional_tiles": [ - { "id": "center", "fg": 532 }, - { "id": "corner", "fg": [ 534, 536, 535, 533 ] }, - { "id": "t_connection", "fg": [ 544, 546, 545, 543 ] }, - { "id": "edge", "fg": [ 538, 537 ] }, - { "id": "end_piece", "fg": [ 540, 542, 541, 539 ] }, - { "id": "unconnected", "fg": [ 547, 547 ] } + { "id": "center", "fg": 596 }, + { "id": "corner", "fg": [ 598, 600, 599, 597 ] }, + { "id": "t_connection", "fg": [ 608, 610, 609, 607 ] }, + { "id": "edge", "fg": [ 602, 601 ] }, + { "id": "end_piece", "fg": [ 604, 606, 605, 603 ] }, + { "id": "unconnected", "fg": [ 611, 611 ] } ] }, - { "id": "f_dahlia", "fg": [ { "weight": 1, "sprite": 548 }, { "weight": 2, "sprite": 549 } ] }, - { "id": "f_dandelion_season_spring", "fg": 550 }, - { "id": "f_dandelion_season_summer", "fg": 552 }, - { "id": "f_dandelion_season_autumn", "fg": 551 }, - { "id": "f_dandelion_season_winter", "fg": 553 }, - { "id": "f_datura", "fg": 554 }, + { "id": "f_dahlia", "fg": [ { "weight": 1, "sprite": 612 }, { "weight": 2, "sprite": 613 } ] }, + { "id": "f_dandelion_season_spring", "fg": 614 }, + { "id": "f_dandelion_season_summer", "fg": 616 }, + { "id": "f_dandelion_season_autumn", "fg": 615 }, + { "id": "f_dandelion_season_winter", "fg": 617 }, + { "id": "f_datura", "fg": 618 }, { "id": "f_desk", "multitile": true, - "fg": 570, - "additional_tiles": [ - { "id": "center", "fg": 555 }, - { "id": "corner", "fg": [ 557, 559, 558, 556 ] }, - { "id": "t_connection", "fg": [ 567, 569, 568, 566 ] }, - { "id": "edge", "fg": [ 561, 560 ] }, - { "id": "end_piece", "fg": [ 563, 565, 564, 562 ] }, - { "id": "unconnected", "fg": [ 570, 570 ] } - ] - }, - { "id": "f_displaycase", "fg": 571 }, - { "id": "f_entertainment_center", "fg": 572 }, - { "id": "f_filing_cabinet", "fg": 573 }, - { "id": "f_firering", "fg": 574 }, - { "id": "f_flower_spurge", "fg": 575 }, - { "id": "f_flower_tulip", "fg": [ { "weight": 1, "sprite": 576 }, { "weight": 2, "sprite": 577 } ] }, - { "id": "f_grave_stone", "fg": [ { "weight": 1, "sprite": 578 }, { "weight": 1, "sprite": 579 } ] }, - { "id": "f_grave_stone_old", "fg": [ { "weight": 1, "sprite": 580 }, { "weight": 1, "sprite": 581 } ] }, - { "id": [ "f_groundsheet", "f_large_groundsheet", "f_center_groundsheet", "f_fema_groundsheet" ], "fg": 582 }, - { "id": "f_gunsafe_ml", "fg": 585 }, - { "id": "f_gunsafe_mj", "fg": 584 }, - { "id": "f_gun_safe_el", "fg": 583 }, - { "id": "f_hay", "fg": 586 }, - { "id": "f_indoor_plant", "fg": 587 }, - { "id": "f_indoor_plant_y", "fg": 588 }, - { "id": [ "f_indoor_plant_y_season_autumn", "f_indoor_plant_y_season_winter" ], "fg": 589 }, - { "id": "f_leather_tarp", "fg": 590 }, - { "id": "f_mailbox", "fg": 591 }, - { "id": "f_metal_crate_r", "fg": 594 }, - { "id": "f_metal_crate_c", "fg": 592 }, - { "id": "f_metal_crate_o", "fg": 593 }, + "fg": 634, + "additional_tiles": [ + { "id": "center", "fg": 619 }, + { "id": "corner", "fg": [ 621, 623, 622, 620 ] }, + { "id": "t_connection", "fg": [ 631, 633, 632, 630 ] }, + { "id": "edge", "fg": [ 625, 624 ] }, + { "id": "end_piece", "fg": [ 627, 629, 628, 626 ] }, + { "id": "unconnected", "fg": [ 634, 634 ] } + ] + }, + { "id": "f_displaycase", "fg": 635 }, + { "id": "f_entertainment_center", "fg": 636 }, + { "id": "f_filing_cabinet", "fg": 637 }, + { "id": "f_firering", "fg": 638 }, + { "id": "f_flower_spurge", "fg": 639 }, + { "id": "f_flower_tulip", "fg": [ { "weight": 1, "sprite": 640 }, { "weight": 2, "sprite": 641 } ] }, + { "id": "f_grave_stone", "fg": [ { "weight": 1, "sprite": 642 }, { "weight": 1, "sprite": 643 } ] }, + { "id": "f_grave_stone_old", "fg": [ { "weight": 1, "sprite": 644 }, { "weight": 1, "sprite": 645 } ] }, + { "id": [ "f_groundsheet", "f_large_groundsheet", "f_center_groundsheet", "f_fema_groundsheet" ], "fg": 646 }, + { "id": "f_gunsafe_ml", "fg": 649 }, + { "id": "f_gunsafe_mj", "fg": 648 }, + { "id": "f_gun_safe_el", "fg": 647 }, + { "id": "f_hay", "fg": 650 }, + { "id": "f_indoor_plant", "fg": 651 }, + { "id": "f_indoor_plant_y", "fg": 652 }, + { "id": [ "f_indoor_plant_y_season_autumn", "f_indoor_plant_y_season_winter" ], "fg": 653 }, + { "id": "f_leather_tarp", "fg": 654 }, + { "id": "f_mailbox", "fg": 655 }, + { "id": "f_metal_crate_r", "fg": 658 }, + { "id": "f_metal_crate_c", "fg": 656 }, + { "id": "f_metal_crate_o", "fg": 657 }, { "id": "f_metal_table", "multitile": true, - "fg": 610, + "fg": 674, "additional_tiles": [ - { "id": "center", "fg": 595 }, - { "id": "corner", "fg": [ 597, 599, 598, 596 ] }, - { "id": "t_connection", "fg": [ 607, 609, 608, 606 ] }, - { "id": "edge", "fg": [ 601, 600 ] }, - { "id": "end_piece", "fg": [ 603, 605, 604, 602 ] }, - { "id": "unconnected", "fg": [ 610, 610 ] } + { "id": "center", "fg": 659 }, + { "id": "corner", "fg": [ 661, 663, 662, 660 ] }, + { "id": "t_connection", "fg": [ 671, 673, 672, 670 ] }, + { "id": "edge", "fg": [ 665, 664 ] }, + { "id": "end_piece", "fg": [ 667, 669, 668, 666 ] }, + { "id": "unconnected", "fg": [ 674, 674 ] } ] }, - { "id": "f_alien_anemone", "fg": 611 }, - { "id": "f_alien_table", "fg": 612 }, - { "id": "f_mustard_season_spring", "fg": 614, "rotates": false }, - { "id": "f_mustard_season_summer", "fg": 615, "rotates": false }, - { "id": "f_mustard_season_autumn", "fg": 613, "rotates": false }, - { "id": "f_mustard_season_winter", "fg": 616, "rotates": false }, - { "id": "f_mutpoppy", "fg": 617 }, + { "id": "f_alien_anemone", "fg": 675 }, + { "id": "f_alien_table", "fg": 676 }, + { "id": "f_mustard_season_spring", "fg": 678, "rotates": false }, + { "id": "f_mustard_season_summer", "fg": 679, "rotates": false }, + { "id": "f_mustard_season_autumn", "fg": 677, "rotates": false }, + { "id": "f_mustard_season_winter", "fg": 680, "rotates": false }, + { "id": "f_mutpoppy", "fg": 681 }, { "id": "f_planter", "multitile": true, - "fg": 633, + "fg": 697, "additional_tiles": [ - { "id": "center", "fg": 618 }, - { "id": "corner", "fg": [ 620, 622, 621, 619 ] }, - { "id": "t_connection", "fg": [ 630, 632, 631, 629 ] }, - { "id": "edge", "fg": [ 624, 623 ] }, - { "id": "end_piece", "fg": [ 626, 628, 627, 625 ] }, - { "id": "unconnected", "fg": [ 633, 633 ] } + { "id": "center", "fg": 682 }, + { "id": "corner", "fg": [ 684, 686, 685, 683 ] }, + { "id": "t_connection", "fg": [ 694, 696, 695, 693 ] }, + { "id": "edge", "fg": [ 688, 687 ] }, + { "id": "end_piece", "fg": [ 690, 692, 691, 689 ] }, + { "id": "unconnected", "fg": [ 697, 697 ] } ] }, { "id": "f_planter_harvest", "multitile": true, - "fg": 649, + "fg": 713, "additional_tiles": [ - { "id": "center", "fg": 634 }, - { "id": "corner", "fg": [ 636, 638, 637, 635 ] }, - { "id": "t_connection", "fg": [ 646, 648, 647, 645 ] }, - { "id": "edge", "fg": [ 640, 639 ] }, - { "id": "end_piece", "fg": [ 642, 644, 643, 641 ] }, - { "id": "unconnected", "fg": [ 649, 649 ] } + { "id": "center", "fg": 698 }, + { "id": "corner", "fg": [ 700, 702, 701, 699 ] }, + { "id": "t_connection", "fg": [ 710, 712, 711, 709 ] }, + { "id": "edge", "fg": [ 704, 703 ] }, + { "id": "end_piece", "fg": [ 706, 708, 707, 705 ] }, + { "id": "unconnected", "fg": [ 713, 713 ] } ] }, { "id": "f_planter_mature", "multitile": true, - "fg": 665, + "fg": 729, "additional_tiles": [ - { "id": "center", "fg": 650 }, - { "id": "corner", "fg": [ 652, 654, 653, 651 ] }, - { "id": "t_connection", "fg": [ 662, 664, 663, 661 ] }, - { "id": "edge", "fg": [ 656, 655 ] }, - { "id": "end_piece", "fg": [ 658, 660, 659, 657 ] }, - { "id": "unconnected", "fg": [ 665, 665 ] } + { "id": "center", "fg": 714 }, + { "id": "corner", "fg": [ 716, 718, 717, 715 ] }, + { "id": "t_connection", "fg": [ 726, 728, 727, 725 ] }, + { "id": "edge", "fg": [ 720, 719 ] }, + { "id": "end_piece", "fg": [ 722, 724, 723, 721 ] }, + { "id": "unconnected", "fg": [ 729, 729 ] } ] }, { "id": "f_planter_seedling", "multitile": true, - "fg": 681, + "fg": 745, "additional_tiles": [ - { "id": "center", "fg": 666 }, - { "id": "corner", "fg": [ 668, 670, 669, 667 ] }, - { "id": "t_connection", "fg": [ 678, 680, 679, 677 ] }, - { "id": "edge", "fg": [ 672, 671 ] }, - { "id": "end_piece", "fg": [ 674, 676, 675, 673 ] }, - { "id": "unconnected", "fg": [ 681, 681 ] } + { "id": "center", "fg": 730 }, + { "id": "corner", "fg": [ 732, 734, 733, 731 ] }, + { "id": "t_connection", "fg": [ 742, 744, 743, 741 ] }, + { "id": "edge", "fg": [ 736, 735 ] }, + { "id": "end_piece", "fg": [ 738, 740, 739, 737 ] }, + { "id": "unconnected", "fg": [ 745, 745 ] } ] }, - { "id": "f_plastic_groundsheet", "fg": 682 }, + { "id": "f_plastic_groundsheet", "fg": 746 }, { "id": "f_pool_table", "multitile": true, - "fg": 698, + "fg": 762, "additional_tiles": [ - { "id": "center", "fg": 683 }, - { "id": "corner", "fg": [ 685, 687, 686, 684 ] }, - { "id": "t_connection", "fg": [ 695, 697, 696, 694 ] }, - { "id": "edge", "fg": [ 689, 688 ] }, - { "id": "end_piece", "fg": [ 691, 693, 692, 690 ] }, - { "id": "unconnected", "fg": 698 } + { "id": "center", "fg": 747 }, + { "id": "corner", "fg": [ 749, 751, 750, 748 ] }, + { "id": "t_connection", "fg": [ 759, 761, 760, 758 ] }, + { "id": "edge", "fg": [ 753, 752 ] }, + { "id": "end_piece", "fg": [ 755, 757, 756, 754 ] }, + { "id": "unconnected", "fg": 762 } ] }, - { "id": "f_rack", "fg": 699 }, - { "id": "f_rack_wood", "fg": 700 }, - { "id": "f_recycle_bin", "fg": 701 }, - { "id": "f_rubble", "fg": 702 }, - { "id": "f_rubble_rock", "fg": 703 }, - { "id": "f_sign", "fg": 704 }, + { "id": "f_rack", "fg": 763 }, + { "id": "f_rack_wood", "fg": 764 }, + { "id": "f_recycle_bin", "fg": 765 }, + { "id": "f_rubble", "fg": 766 }, + { "id": "f_rubble_rock", "fg": 767 }, + { "id": "f_sign", "fg": 768 }, { "id": "f_sofa", "multitile": true, - "fg": 720, + "fg": 784, "additional_tiles": [ - { "id": "center", "fg": 705 }, - { "id": "corner", "fg": [ 707, 709, 708, 706 ] }, - { "id": "t_connection", "fg": [ 717, 719, 718, 716 ] }, - { "id": "edge", "fg": [ 711, 710 ] }, - { "id": "end_piece", "fg": [ 713, 715, 714, 712 ] }, - { "id": "unconnected", "fg": [ 720, 720 ] } + { "id": "center", "fg": 769 }, + { "id": "corner", "fg": [ 771, 773, 772, 770 ] }, + { "id": "t_connection", "fg": [ 781, 783, 782, 780 ] }, + { "id": "edge", "fg": [ 775, 774 ] }, + { "id": "end_piece", "fg": [ 777, 779, 778, 776 ] }, + { "id": "unconnected", "fg": [ 784, 784 ] } ] }, - { "id": "f_stool", "fg": 721 }, - { "id": "f_sunflower_season_spring", "fg": 722 }, - { "id": "f_sunflower_season_winter", "fg": 723 }, + { "id": "f_stool", "fg": 785 }, + { "id": "f_sunflower_season_spring", "fg": 786 }, + { "id": "f_sunflower_season_winter", "fg": 787 }, { "id": "f_table", "multitile": true, - "fg": 739, + "fg": 803, "additional_tiles": [ - { "id": "center", "fg": 724 }, - { "id": "corner", "fg": [ 726, 728, 727, 725 ] }, - { "id": "t_connection", "fg": [ 736, 738, 737, 735 ] }, - { "id": "edge", "fg": [ 730, 729 ] }, - { "id": "end_piece", "fg": [ 732, 734, 733, 731 ] }, - { "id": "unconnected", "fg": [ 739, 739 ] } + { "id": "center", "fg": 788 }, + { "id": "corner", "fg": [ 790, 792, 791, 789 ] }, + { "id": "t_connection", "fg": [ 800, 802, 801, 799 ] }, + { "id": "edge", "fg": [ 794, 793 ] }, + { "id": "end_piece", "fg": [ 796, 798, 797, 795 ] }, + { "id": "unconnected", "fg": [ 803, 803 ] } ] }, - { "id": "f_toilet", "fg": 740 }, - { "id": "f_trashcan", "fg": 741 }, - { "id": "f_wreckage", "fg": 742 }, - { "id": "f_lilypad", "fg": 743 }, - { "id": "f_small_satelitte_dish", "fg": 747 }, - { "id": "f_TV_antenna", "fg": 744 }, - { "id": "f_cellphone_booster", "fg": 745 }, - { "id": "f_vent_pipe", "fg": 748 }, - { "id": "f_roof_turbine_vent", "fg": 746 }, + { "id": "f_toilet", "fg": 804 }, + { "id": "f_trashcan", "fg": 805 }, + { "id": "f_wreckage", "fg": 806 }, + { "id": "f_lilypad", "fg": 807 }, + { "id": "f_small_satelitte_dish", "fg": 811 }, + { "id": "f_TV_antenna", "fg": 808 }, + { "id": "f_cellphone_booster", "fg": 809 }, + { "id": "f_vent_pipe", "fg": 812 }, + { "id": "f_roof_turbine_vent", "fg": 810 }, { "id": "f_sandbag_half", "multitile": true, - "fg": 764, - "additional_tiles": [ - { "id": "center", "fg": 749 }, - { "id": "corner", "fg": [ 751, 753, 752, 750 ] }, - { "id": "t_connection", "fg": [ 761, 763, 762, 760 ] }, - { "id": "edge", "fg": [ 755, 754 ] }, - { "id": "end_piece", "fg": [ 757, 759, 758, 756 ] }, - { "id": "unconnected", "fg": [ 764, 764 ] } - ] - }, - { "id": "1st_aid", "fg": 765 }, - { "id": "2x4", "fg": 766 }, - { "id": "halberd", "fg": 781 }, - { "id": "halberd_fake", "fg": 781 }, - { "id": "nodachi", "fg": 783 }, - { "id": "nodachi_fake", "fg": 783 }, - { "id": "nodachi_inferior", "fg": 783 }, - { "id": "ak74", "fg": 786 }, - { "id": "ar15", "fg": 910 }, - { "id": "arming_sword", "fg": 911 }, - { "id": "art_sphere", "fg": 926 }, - { "id": "art_rod", "fg": 924 }, - { "id": "art_teardrop", "fg": 928 }, - { "id": "art_lamp", "fg": 920 }, - { "id": "art_snake", "fg": 925 }, - { "id": "art_disc", "fg": 917 }, - { "id": "art_beads", "fg": 914 }, - { "id": "art_napkin", "fg": 921 }, - { "id": "art_urchin", "fg": 930 }, - { "id": "art_jelly", "fg": 918 }, - { "id": "art_spiral", "fg": 927 }, - { "id": "art_pin", "fg": 922 }, - { "id": "art_tube", "fg": 929 }, - { "id": "art_pyramid", "fg": 923 }, - { "id": "art_crystal", "fg": 916 }, - { "id": "art_knot", "fg": 919 }, - { "id": "art_crescent", "fg": 915 }, - { "id": "altered_teapot", "fg": 912 }, - { "id": "architect_cube", "fg": 913 }, - { "id": "fire_ax", "fg": 931 }, - { "id": "ax", "fg": 934 }, - { "id": "hatchet", "fg": 932 }, - { "id": "backpack", "fg": 935 }, - { "id": "duffelbag", "fg": 936 }, - { "id": "molle_pack", "fg": 937 }, - { "id": [ "rifle_case_soft_leather", "rifle_case_xl_soft_leather" ], "fg": 940 }, - { "id": "bag_canvas", "fg": 943 }, - { "id": "bat", "fg": 944 }, - { "id": "bat_metal", "fg": 945 }, - { "id": "blanket", "fg": 946 }, - { "id": "down_blanket", "fg": 947 }, - { "id": "electric_blanket", "fg": 948 }, - { "id": "board_trap", "fg": 949 }, - { "id": "box_large", "fg": 950 }, - { "id": "box_medium", "fg": 951 }, - { "id": "broom", "fg": 952 }, - { "id": "bwirebat", "fg": 953 }, - { "id": "cattlefodder", "fg": 955 }, - { "id": "chainsaw_off", "fg": 956 }, - { "id": "axe_ring", "fg": 963 }, - { "id": "balclava", "fg": 964 }, - { "id": "beret", "fg": 965 }, - { "id": "boots", "fg": 966 }, - { "id": "boxer_briefs", "fg": 967 }, - { "id": "boxer_shorts", "fg": 968 }, - { "id": "boy_shorts", "fg": 969 }, - { "id": "bra", "fg": 970 }, - { "id": "briefs", "fg": 971 }, - { "id": "bscabbard", "fg": 972 }, - { "id": "corset", "fg": 975 }, - { "id": "cowboy_hat", "fg": 976 }, - { "id": "dress_shoes", "fg": 977 }, - { "id": "hat_ball", "fg": 978 }, - { "id": "hat_cotton", "fg": 979 }, - { "id": "hat_fur", "fg": 980 }, - { "id": "hat_knit", "fg": 982 }, - { "id": "hat_noise_cancelling", "fg": 983 }, - { "id": "helmet_barbute", "fg": 984 }, - { "id": "helmet_chitin", "fg": 985 }, - { "id": "helmet_kabuto", "fg": 986 }, - { "id": "holster", "fg": 987 }, - { "id": "hoodie", "fg": 988 }, - { "id": "jeans", "fg": 991 }, - { "id": "leather_belt", "fg": 992 }, - { "id": "longshirt", "fg": 993 }, - { "id": "maid_dress", "fg": 994 }, - { "id": "maid_hat", "fg": 995 }, - { "id": "mask_dust", "fg": 996 }, - { "id": "panties", "fg": 997 }, - { "id": "pants", "fg": 998 }, - { "id": "pants_cargo", "fg": 999 }, - { "id": "polo_shirt", "fg": 1000 }, - { "id": "ragpouch", "fg": 1001 }, - { "id": "scabbard", "fg": 1002 }, - { "id": "sneakers", "fg": 1004 }, - { "id": "socks", "fg": 1005 }, - { "id": "spearsling", "fg": 1006 }, - { "id": "stockings", "fg": 1008 }, - { "id": "sweater", "fg": 1011 }, - { "id": "sweatshirt", "fg": 1012 }, - { "id": "tank_top", "fg": 1013 }, - { "id": "tool_belt", "fg": 1014 }, - { "id": "tshirt", "fg": 1015 }, - { "id": "turban", "fg": 1016 }, - { "id": "undershirt", "fg": 1017 }, - { "id": "coat_lab", "fg": 973 }, - { "id": "coat_rain", "fg": 974 }, - { "id": "sports_bra", "fg": 1007 }, - { "id": "skirt", "fg": 1003 }, - { "id": "jacket_light", "fg": 990 }, - { "id": "jacket_army", "fg": 989 }, - { "id": "hat_hard", "fg": 981 }, - { "id": "striped_pants", "fg": 1009 }, - { "id": "striped_shirt", "fg": 1010 }, - { "id": "cloak", "fg": 1018 }, - { "id": "cloak_wool", "fg": 1021 }, - { "id": "cloak_leather", "fg": 1020 }, - { "id": "cloak_fur", "fg": 1019 }, - { "id": "coffeemaker", "fg": 1022 }, - { "id": "contacts", "fg": 1023 }, - { "id": "corpse", "fg": 1024 }, - { "id": "corpse_generic_human", "fg": 1025 }, - { "id": "crossbow", "fg": 1026 }, - { "id": "crowbar", "fg": 1027 }, - { "id": "filter_air", "fg": 1030 }, - { "id": "fish_bait", "fg": 1031 }, - { "id": "corpse_mon_fish_tiny", "fg": 1035 }, - { "id": "corpse_mon_fish_small", "fg": 1034 }, - { "id": "corpse_mon_fish_medium", "fg": 1033 }, - { "id": "corpse_mon_fish_large", "fg": 1032 }, - { "id": "fish_trap", "fg": 1036 }, - { "id": "fishing_rod_basic", "fg": 1037 }, - { "id": "fishing_rod_professional", "fg": 1038 }, - { "id": "forge", "fg": 1040 }, - { "id": "char_forge", "fg": 1039 }, - { "id": "glass_shard", "fg": 1041 }, - { "id": [ "glock_17", "glock_19", "glock_18c", "glock_22", "glock_31" ], "fg": 1042 }, - { "id": "hoboreel", "fg": 1043 }, - { "id": "hydrogen_tank", "fg": 1044 }, - { "id": "leather_tarp", "fg": 1045 }, - { "id": "water", "fg": 1056 }, - { "id": "water_clean", "fg": 1057 }, - { "id": "gasoline", "fg": 1051 }, - { "id": "diesel", "fg": 1049 }, - { "id": "biodiesel", "fg": 1047 }, - { "id": "flamethrower_fuel", "fg": 1050 }, - { "id": "avgas", "fg": 1046 }, - { "id": "lamp_oil", "fg": 1053 }, - { "id": "motor_oil", "fg": 1054 }, - { "id": "napalm", "fg": 1055 }, - { "id": "gelled_gasoline", "fg": 1052 }, - { "id": "blood", "fg": 1048 }, - { "id": "log", "fg": 1058 }, - { "id": "longbow", "fg": 1059 }, - { "id": "lucern_hammer", "fg": 1060 }, - { "id": "m79", "fg": 1061 }, - { "id": "marble", "fg": 1062 }, - { "id": "matches", "fg": 1063 }, - { "id": "meat", "fg": 1064 }, - { "id": "microwave", "fg": 1065 }, - { "id": "mjolnir", "fg": 1066 }, - { "id": "mop", "fg": 1067 }, - { "id": "mp5mag", "fg": 1068 }, - { "id": "nail", "fg": 1073 }, - { "id": "nailbat", "fg": 1074 }, - { "id": "nailboard", "fg": 1075 }, - { "id": "needle_bone", "fg": 1076 }, - { "id": "needle_curved", "fg": 1077 }, - { "id": "needle_wood", "fg": 1078 }, - { "id": "many_years_old_newspaper", "fg": 1079 }, - { "id": "years_old_newspaper", "fg": 1084 }, - { "id": "months_old_newspaper", "fg": 1080 }, - { "id": "newest_newspaper", "fg": 1081 }, - { "id": "one_year_old_newspaper", "fg": 1082 }, - { "id": "weeks_old_newspaper", "fg": 1083 }, - { "id": "pan", "fg": 1085 }, - { "id": "2h_flail_wood", "fg": 1086 }, - { "id": "pillow", "fg": 1088 }, - { "id": "down_pillow", "fg": 1087 }, - { "id": "pine_bough", "fg": 1089 }, - { "id": "pinecone", "fg": 1090 }, + "fg": 828, + "additional_tiles": [ + { "id": "center", "fg": 813 }, + { "id": "corner", "fg": [ 815, 817, 816, 814 ] }, + { "id": "t_connection", "fg": [ 825, 827, 826, 824 ] }, + { "id": "edge", "fg": [ 819, 818 ] }, + { "id": "end_piece", "fg": [ 821, 823, 822, 820 ] }, + { "id": "unconnected", "fg": [ 828, 828 ] } + ] + }, + { "id": "1st_aid", "fg": 829 }, + { "id": "2x4", "fg": 830 }, + { "id": "halberd", "fg": 845 }, + { "id": "halberd_fake", "fg": 845 }, + { "id": "nodachi", "fg": 848 }, + { "id": "nodachi_fake", "fg": 848 }, + { "id": "nodachi_inferior", "fg": 848 }, + { "id": "ak74", "fg": 851 }, + { "id": "ar15", "fg": 975 }, + { "id": "arming_sword", "fg": 976 }, + { "id": "art_sphere", "fg": 991 }, + { "id": "art_rod", "fg": 989 }, + { "id": "art_teardrop", "fg": 993 }, + { "id": "art_lamp", "fg": 985 }, + { "id": "art_snake", "fg": 990 }, + { "id": "art_disc", "fg": 982 }, + { "id": "art_beads", "fg": 979 }, + { "id": "art_napkin", "fg": 986 }, + { "id": "art_urchin", "fg": 995 }, + { "id": "art_jelly", "fg": 983 }, + { "id": "art_spiral", "fg": 992 }, + { "id": "art_pin", "fg": 987 }, + { "id": "art_tube", "fg": 994 }, + { "id": "art_pyramid", "fg": 988 }, + { "id": "art_crystal", "fg": 981 }, + { "id": "art_knot", "fg": 984 }, + { "id": "art_crescent", "fg": 980 }, + { "id": "altered_teapot", "fg": 977 }, + { "id": "architect_cube", "fg": 978 }, + { "id": "fire_ax", "fg": 996 }, + { "id": "ax", "fg": 999 }, + { "id": "hatchet", "fg": 997 }, + { "id": "backpack", "fg": 1000 }, + { "id": "duffelbag", "fg": 1001 }, + { "id": "molle_pack", "fg": 1002 }, + { "id": [ "rifle_case_soft_leather", "rifle_case_xl_soft_leather" ], "fg": 1005 }, + { "id": "bag_canvas", "fg": 1008 }, + { "id": "bat", "fg": 1009 }, + { "id": "bat_metal", "fg": 1010 }, + { "id": "blanket", "fg": 1011 }, + { "id": "down_blanket", "fg": 1012 }, + { "id": "electric_blanket", "fg": 1013 }, + { "id": "board_trap", "fg": 1014 }, + { "id": "box_large", "fg": 1015 }, + { "id": "box_medium", "fg": 1016 }, + { "id": "broom", "fg": 1017 }, + { "id": "bwirebat", "fg": 1018 }, + { "id": "cattlefodder", "fg": 1021 }, + { "id": "chainsaw_off", "fg": 1022 }, + { "id": "axe_ring", "fg": 1029 }, + { "id": "balclava", "fg": 1030 }, + { "id": "beret", "fg": 1031 }, + { "id": "boots", "fg": 1032 }, + { "id": "boxer_briefs", "fg": 1033 }, + { "id": "boxer_shorts", "fg": 1034 }, + { "id": "boy_shorts", "fg": 1035 }, + { "id": "bra", "fg": 1036 }, + { "id": "briefs", "fg": 1037 }, + { "id": "bscabbard", "fg": 1038 }, + { "id": "corset", "fg": 1041 }, + { "id": "cowboy_hat", "fg": 1042 }, + { "id": "dress_shoes", "fg": 1043 }, + { "id": "hat_ball", "fg": 1044 }, + { "id": "hat_cotton", "fg": 1045 }, + { "id": "hat_fur", "fg": 1046 }, + { "id": "hat_knit", "fg": 1048 }, + { "id": "hat_noise_cancelling", "fg": 1049 }, + { "id": "helmet_barbute", "fg": 1050 }, + { "id": "helmet_chitin", "fg": 1051 }, + { "id": "helmet_kabuto", "fg": 1052 }, + { "id": "holster", "fg": 1053 }, + { "id": "hoodie", "fg": 1054 }, + { "id": "jeans", "fg": 1057 }, + { "id": "leather_belt", "fg": 1058 }, + { "id": "longshirt", "fg": 1059 }, + { "id": "maid_dress", "fg": 1060 }, + { "id": "maid_hat", "fg": 1061 }, + { "id": "mask_dust", "fg": 1062 }, + { "id": "panties", "fg": 1063 }, + { "id": "pants", "fg": 1064 }, + { "id": "pants_cargo", "fg": 1065 }, + { "id": "polo_shirt", "fg": 1066 }, + { "id": "ragpouch", "fg": 1067 }, + { "id": "scabbard", "fg": 1068 }, + { "id": "sneakers", "fg": 1070 }, + { "id": "socks", "fg": 1071 }, + { "id": "spearsling", "fg": 1072 }, + { "id": "stockings", "fg": 1074 }, + { "id": "sweater", "fg": 1077 }, + { "id": "sweatshirt", "fg": 1078 }, + { "id": "tank_top", "fg": 1079 }, + { "id": "tool_belt", "fg": 1080 }, + { "id": "tshirt", "fg": 1081 }, + { "id": "turban", "fg": 1082 }, + { "id": "undershirt", "fg": 1083 }, + { "id": "coat_lab", "fg": 1039 }, + { "id": "coat_rain", "fg": 1040 }, + { "id": "sports_bra", "fg": 1073 }, + { "id": "skirt", "fg": 1069 }, + { "id": "jacket_light", "fg": 1056 }, + { "id": "jacket_army", "fg": 1055 }, + { "id": "hat_hard", "fg": 1047 }, + { "id": "striped_pants", "fg": 1075 }, + { "id": "striped_shirt", "fg": 1076 }, + { "id": "cloak", "fg": 1084 }, + { "id": "cloak_wool", "fg": 1087 }, + { "id": "cloak_leather", "fg": 1086 }, + { "id": "cloak_fur", "fg": 1085 }, + { "id": "coffeemaker", "fg": 1088 }, + { "id": "contacts", "fg": 1089 }, + { "id": "corpse", "fg": 1090 }, + { "id": "corpse_generic_human", "fg": 1091 }, + { "id": "crossbow", "fg": 1092 }, + { "id": "crowbar", "fg": 1093 }, + { "id": "filter_air", "fg": 1096 }, + { "id": "fish_bait", "fg": 1097 }, + { "id": "corpse_mon_fish_tiny", "fg": 1101 }, + { "id": "corpse_mon_fish_small", "fg": 1100 }, + { "id": "corpse_mon_fish_medium", "fg": 1099 }, + { "id": "corpse_mon_fish_large", "fg": 1098 }, + { "id": "fish_trap", "fg": 1102 }, + { "id": "fishing_rod_basic", "fg": 1103 }, + { "id": "fishing_rod_professional", "fg": 1104 }, + { "id": "forge", "fg": 1106 }, + { "id": "char_forge", "fg": 1105 }, + { "id": "glass_shard", "fg": 1107 }, + { "id": [ "glock_17", "glock_19", "glock_18c", "glock_22", "glock_31" ], "fg": 1108 }, + { "id": "hoboreel", "fg": 1109 }, + { "id": "hydrogen_tank", "fg": 1110 }, + { "id": "leather_tarp", "fg": 1111 }, + { "id": "water", "fg": 1122 }, + { "id": "water_clean", "fg": 1123 }, + { "id": "gasoline", "fg": 1117 }, + { "id": "diesel", "fg": 1115 }, + { "id": "biodiesel", "fg": 1113 }, + { "id": "flamethrower_fuel", "fg": 1116 }, + { "id": "avgas", "fg": 1112 }, + { "id": "lamp_oil", "fg": 1119 }, + { "id": "motor_oil", "fg": 1120 }, + { "id": "napalm", "fg": 1121 }, + { "id": "gelled_gasoline", "fg": 1118 }, + { "id": "blood", "fg": 1114 }, + { "id": "log", "fg": 1124 }, + { "id": "longbow", "fg": 1125 }, + { "id": "lucern_hammer", "fg": 1126 }, + { "id": "m79", "fg": 1127 }, + { "id": "marble", "fg": 1128 }, + { "id": "meat", "fg": 1129 }, + { "id": "microwave", "fg": 1130 }, + { "id": "mjolnir", "fg": 1131 }, + { "id": "mop", "fg": 1132 }, + { "id": "mp5mag", "fg": 1133 }, + { "id": "nail", "fg": 1138 }, + { "id": "nailbat", "fg": 1139 }, + { "id": "nailboard", "fg": 1140 }, + { "id": "needle_bone", "fg": 1141 }, + { "id": "needle_curved", "fg": 1142 }, + { "id": "needle_wood", "fg": 1143 }, + { "id": "many_years_old_newspaper", "fg": 1144 }, + { "id": "years_old_newspaper", "fg": 1149 }, + { "id": "months_old_newspaper", "fg": 1145 }, + { "id": "newest_newspaper", "fg": 1146 }, + { "id": "one_year_old_newspaper", "fg": 1147 }, + { "id": "weeks_old_newspaper", "fg": 1148 }, + { "id": "2h_flail_wood", "fg": 1150 }, + { "id": "pillow", "fg": 1152 }, + { "id": "down_pillow", "fg": 1151 }, + { "id": "pine_bough", "fg": 1153 }, + { "id": "pinecone", "fg": 1154 }, { "id": [ "rifle_9mm", "rifle_3006", "rifle_45", "rifle_22", "rifle_40", "rifle_44", "rifle_38", "rifle_223" ], - "fg": 1091 - }, - { "id": "pipe_shotgun", "fg": 1092 }, - { "id": "plastic_sheet", "fg": 1093 }, - { "id": "plastic_shopping_bag", "fg": 1094 }, - { "id": "pneumatic_shotgun", "fg": 1095 }, - { "id": "pool_ball", "fg": 1096 }, - { "id": "pot", "fg": 1097 }, - { "id": "pot_canning", "fg": 1098 }, - { "id": "pot_copper", "fg": 1099 }, - { "id": "powder_candy", "fg": 1100 }, - { "id": "rag", "fg": 1101 }, - { "id": "rebar", "fg": 1102 }, - { "id": "rifle_flintlock", "fg": 1103 }, - { "id": "rolling_pin", "fg": 1104 }, - { "id": "fur_rollmat", "fg": 1105 }, - { "id": "rollmat", "fg": 1106 }, - { "id": "scissors", "fg": 1107 }, - { "id": "screwdriver", "fg": 1108 }, - { "id": "sewing_kit", "fg": 1109 }, - { "id": "sharp_rock", "fg": 1110 }, - { "id": "sheet_metal", "fg": 1111 }, - { "id": "sheet_metal_small", "fg": 1112 }, - { "id": "shovel", "fg": 1113 }, - { "id": "slingshot", "fg": 1114 }, - { "id": "solar_panel", "fg": 1116 }, - { "id": "solar_cell", "fg": 1115 }, - { "id": "pointy_stick", "fg": 1117 }, - { "id": "spear_wood", "fg": 1125 }, - { "id": "spear_spike", "fg": 1123 }, - { "id": "spear_knife", "fg": 1119 }, - { "id": "spear_knife_superior", "fg": 1120 }, - { "id": "spear_pipe", "fg": 1121 }, - { "id": "spear_rebar", "fg": 1122 }, - { "id": "spear_steel", "fg": 1124 }, - { "id": "spear_copper", "fg": 1118 }, - { "id": "splinter", "fg": 1126 }, - { "id": "sponge", "fg": 1127 }, - { "id": "spoon", "fg": 1128 }, - { "id": "stick", "fg": 1129 }, - { "id": "stick_long", "fg": 1130 }, - { "id": "primitive_hammer", "fg": 1131 }, - { "id": "string_36", "fg": 1132 }, - { "id": "string_6", "fg": 1133 }, - { "id": "tailors_kit", "fg": 1135 }, - { "id": "tarp", "fg": 1136 }, - { "id": "television", "fg": 1137 }, - { "id": "thermos", "fg": 1138 }, - { "id": "thread", "fg": 1139 }, - { "id": "2h_flail_steel", "fg": 1144 }, - { "id": "welder", "fg": 1145 }, - { "id": "welder_crude", "fg": 1146 }, - { "id": "wood_panel", "fg": 1147 }, - { "id": "wood_sheet", "fg": 1148 }, - { "id": "corpse_mon_troll", "fg": 1149 }, - { "id": "mon_bat", "fg": 1150, "bg": 1273 }, - { "id": "mon_crow", "fg": 1151, "bg": 1273 }, - { "id": "mon_duck", "fg": 1152, "bg": 1273 }, - { "id": "mon_pigeon", "fg": 1153, "bg": 1273 }, - { "id": "mon_turkey", "fg": 1154, "bg": 1272 }, - { "id": "mon_fish_blinky", "fg": 1155 }, + "fg": 1155 + }, + { "id": "pipe_shotgun", "fg": 1156 }, + { "id": "plastic_sheet", "fg": 1157 }, + { "id": "plastic_shopping_bag", "fg": 1158 }, + { "id": "pneumatic_shotgun", "fg": 1159 }, + { "id": "pool_ball", "fg": 1160 }, + { "id": "powder_candy", "fg": 1161 }, + { "id": "rag", "fg": 1162 }, + { "id": "rebar", "fg": 1163 }, + { "id": "rifle_flintlock", "fg": 1164 }, + { "id": "fur_rollmat", "fg": 1165 }, + { "id": "rollmat", "fg": 1166 }, + { "id": "scissors", "fg": 1167 }, + { "id": "screwdriver", "fg": 1168 }, + { "id": "sewing_kit", "fg": 1169 }, + { "id": "sharp_rock", "fg": 1170 }, + { "id": "sheet_metal", "fg": 1171 }, + { "id": "sheet_metal_small", "fg": 1172 }, + { "id": "shovel", "fg": 1173 }, + { "id": "slingshot", "fg": 1174 }, + { "id": "solar_panel", "fg": 1176 }, + { "id": "solar_cell", "fg": 1175 }, + { "id": "pointy_stick", "fg": 1177 }, + { "id": "spear_wood", "fg": 1185 }, + { "id": "spear_spike", "fg": 1183 }, + { "id": "spear_knife", "fg": 1179 }, + { "id": "spear_knife_superior", "fg": 1180 }, + { "id": "spear_pipe", "fg": 1181 }, + { "id": "spear_rebar", "fg": 1182 }, + { "id": "spear_steel", "fg": 1184 }, + { "id": "spear_copper", "fg": 1178 }, + { "id": "splinter", "fg": 1186 }, + { "id": "sponge", "fg": 1187 }, + { "id": "spoon", "fg": 1188 }, + { "id": "stick", "fg": 1189 }, + { "id": "stick_long", "fg": 1190 }, + { "id": "primitive_hammer", "fg": 1191 }, + { "id": "string_36", "fg": 1192 }, + { "id": "string_6", "fg": 1193 }, + { "id": "tailors_kit", "fg": 1195 }, + { "id": "tarp", "fg": 1196 }, + { "id": "television", "fg": 1197 }, + { "id": "thermos", "fg": 1198 }, + { "id": "thread", "fg": 1199 }, + { "id": "2h_flail_steel", "fg": 1204 }, + { "id": "welder", "fg": 1205 }, + { "id": "welder_crude", "fg": 1206 }, + { "id": "wood_panel", "fg": 1207 }, + { "id": "wood_sheet", "fg": 1208 }, + { "id": "corpse_mon_troll", "fg": 1209 }, + { "id": "mon_bat", "fg": 1212, "bg": 1335 }, + { "id": "mon_crow", "fg": 1213, "bg": 1335 }, + { "id": "mon_duck", "fg": 1214, "bg": 1335 }, + { "id": "mon_pigeon", "fg": 1215, "bg": 1335 }, + { "id": "mon_turkey", "fg": 1216, "bg": 1334 }, + { "id": "mon_fish_blinky", "fg": 1217 }, { "id": "mon_cat", "fg": [ - { "weight": 1, "sprite": 1156 }, - { "weight": 1, "sprite": 1157 }, - { "weight": 1, "sprite": 1181 }, - { "weight": 1, "sprite": 1180 } + { "weight": 1, "sprite": 1218 }, + { "weight": 1, "sprite": 1219 }, + { "weight": 1, "sprite": 1243 }, + { "weight": 1, "sprite": 1242 } ], - "bg": 1273 + "bg": 1335 }, { "id": "mon_cat_bengal", - "fg": [ { "weight": 1, "sprite": 1160 }, { "weight": 1, "sprite": 1159 } ], - "bg": 1273 + "fg": [ { "weight": 1, "sprite": 1222 }, { "weight": 1, "sprite": 1221 } ], + "bg": 1335 }, { "id": "mon_cat_calico", - "fg": [ { "weight": 1, "sprite": 1163 }, { "weight": 1, "sprite": 1162 } ], - "bg": 1273 + "fg": [ { "weight": 1, "sprite": 1225 }, { "weight": 1, "sprite": 1224 } ], + "bg": 1335 }, { "id": "mon_cat_chonker", - "fg": [ { "weight": 1, "sprite": 1166 }, { "weight": 1, "sprite": 1165 } ], - "bg": 1273 + "fg": [ { "weight": 1, "sprite": 1228 }, { "weight": 1, "sprite": 1227 } ], + "bg": 1335 }, { "id": "mon_cat_devon_rex", - "fg": [ { "weight": 1, "sprite": 1169 }, { "weight": 1, "sprite": 1168 } ], - "bg": 1273 + "fg": [ { "weight": 1, "sprite": 1231 }, { "weight": 1, "sprite": 1230 } ], + "bg": 1335 }, { "id": "mon_cat_longhair", - "fg": [ { "weight": 1, "sprite": 1172 }, { "weight": 1, "sprite": 1171 } ], - "bg": 1273 + "fg": [ { "weight": 1, "sprite": 1234 }, { "weight": 1, "sprite": 1233 } ], + "bg": 1335 }, { "id": "mon_cat_maine_coon", - "fg": [ { "weight": 1, "sprite": 1175 }, { "weight": 1, "sprite": 1174 } ], - "bg": 1273 + "fg": [ { "weight": 1, "sprite": 1237 }, { "weight": 1, "sprite": 1236 } ], + "bg": 1335 }, { "id": "mon_cat_persian", - "fg": [ { "weight": 1, "sprite": 1178 }, { "weight": 1, "sprite": 1177 } ], - "bg": 1273 + "fg": [ { "weight": 1, "sprite": 1240 }, { "weight": 1, "sprite": 1239 } ], + "bg": 1335 }, { "id": "mon_cat_siamese", - "fg": [ { "weight": 1, "sprite": 1184 }, { "weight": 1, "sprite": 1183 } ], - "bg": 1273 + "fg": [ { "weight": 1, "sprite": 1246 }, { "weight": 1, "sprite": 1245 } ], + "bg": 1335 }, { "id": "mon_cat_sphynx", - "fg": [ { "weight": 1, "sprite": 1187 }, { "weight": 1, "sprite": 1186 } ], - "bg": 1273 + "fg": [ { "weight": 1, "sprite": 1249 }, { "weight": 1, "sprite": 1248 } ], + "bg": 1335 }, { "id": "mon_cat_tabby", - "fg": [ { "weight": 1, "sprite": 1190 }, { "weight": 1, "sprite": 1189 } ], - "bg": 1273 - }, - { "id": "mon_cat_kitten", "fg": 1179, "bg": 1273 }, - { "id": "mon_cat_bengal_kitten", "fg": 1158, "bg": 1273 }, - { "id": "mon_cat_calico_kitten", "fg": 1161, "bg": 1273 }, - { "id": "mon_cat_chonker_kitten", "fg": 1164, "bg": 1273 }, - { "id": "mon_cat_devon_rex_kitten", "fg": 1167, "bg": 1273 }, - { "id": "mon_cat_longhair_kitten", "fg": 1170, "bg": 1273 }, - { "id": "mon_cat_maine_coon_kitten", "fg": 1173, "bg": 1273 }, - { "id": "mon_cat_persian_kitten", "fg": 1176, "bg": 1273 }, - { "id": "mon_cat_siamese_kitten", "fg": 1182, "bg": 1273 }, - { "id": "mon_cat_sphynx_kitten", "fg": 1185, "bg": 1273 }, - { "id": "mon_cat_tabby_kitten", "fg": 1188, "bg": 1273 }, - { "id": "mon_coyote", "fg": 1191, "bg": 1272 }, - { "id": "mon_coyote_wolf", "fg": 1192, "bg": 1272 }, - { "id": "mon_dog", "fg": 1193, "bg": 1272 }, - { "id": "mon_dog_skeleton", "fg": 1198, "bg": 1272 }, + "fg": [ { "weight": 1, "sprite": 1252 }, { "weight": 1, "sprite": 1251 } ], + "bg": 1335 + }, + { "id": "mon_cat_kitten", "fg": 1241, "bg": 1335 }, + { "id": "mon_cat_bengal_kitten", "fg": 1220, "bg": 1335 }, + { "id": "mon_cat_calico_kitten", "fg": 1223, "bg": 1335 }, + { "id": "mon_cat_chonker_kitten", "fg": 1226, "bg": 1335 }, + { "id": "mon_cat_devon_rex_kitten", "fg": 1229, "bg": 1335 }, + { "id": "mon_cat_longhair_kitten", "fg": 1232, "bg": 1335 }, + { "id": "mon_cat_maine_coon_kitten", "fg": 1235, "bg": 1335 }, + { "id": "mon_cat_persian_kitten", "fg": 1238, "bg": 1335 }, + { "id": "mon_cat_siamese_kitten", "fg": 1244, "bg": 1335 }, + { "id": "mon_cat_sphynx_kitten", "fg": 1247, "bg": 1335 }, + { "id": "mon_cat_tabby_kitten", "fg": 1250, "bg": 1335 }, + { "id": "mon_coyote", "fg": 1253, "bg": 1334 }, + { "id": "mon_coyote_wolf", "fg": 1254, "bg": 1334 }, + { "id": "mon_dog", "fg": 1255, "bg": 1334 }, + { "id": "mon_dog_skeleton", "fg": 1260, "bg": 1334 }, { "id": "mon_zombie_dog", - "fg": [ { "weight": 1, "sprite": 1199 }, { "weight": 1, "sprite": 1200 } ], - "bg": 1272 - }, - { "id": "mon_dog_beagle", "fg": 1194, "bg": 1273 }, - { "id": "mon_dog_gshepherd", "fg": 1197, "bg": 1272 }, - { "id": "mon_dog_boxer", "fg": 1195, "bg": 1272 }, - { "id": "mon_dog_dachshund", "fg": 1196, "bg": 1272 }, - { "id": "mon_fish_tiny", "fg": 1204 }, - { "id": "mon_fish_small", "fg": 1203 }, - { "id": "mon_fish_medium", "fg": 1202 }, - { "id": [ "mon_fish_large", "mon_fish_huge" ], "fg": 1201 }, - { "id": "mon_sewer_fish", "fg": 1205 }, - { "id": "mon_goose_canadian", "fg": 1206, "bg": 1273 }, + "fg": [ { "weight": 1, "sprite": 1261 }, { "weight": 1, "sprite": 1262 } ], + "bg": 1334 + }, + { "id": "mon_dog_beagle", "fg": 1256, "bg": 1335 }, + { "id": "mon_dog_gshepherd", "fg": 1259, "bg": 1334 }, + { "id": "mon_dog_boxer", "fg": 1257, "bg": 1334 }, + { "id": "mon_dog_dachshund", "fg": 1258, "bg": 1334 }, + { "id": "mon_fish_tiny", "fg": 1266 }, + { "id": "mon_fish_small", "fg": 1265 }, + { "id": "mon_fish_medium", "fg": 1264 }, + { "id": [ "mon_fish_large", "mon_fish_huge" ], "fg": 1263 }, + { "id": "mon_sewer_fish", "fg": 1267 }, + { "id": "mon_goose_canadian", "fg": 1268, "bg": 1335 }, { "id": "mon_pig", - "fg": [ { "weight": 8, "sprite": 1209 }, { "weight": 3, "sprite": 1207 }, { "weight": 1, "sprite": 1208 } ], - "bg": 1272 - }, - { "id": "mon_pig_piglet", "fg": 1210, "bg": 1273 }, - { "id": "mon_mink", "fg": 1211, "bg": 1273 }, - { "id": "mon_duck_chick", "fg": 1212, "bg": 1273 }, - { "id": "mon_goose_canadian_chick", "fg": 1213, "bg": 1273 }, - { "id": "mon_cockatrice_chick", "fg": 1215, "bg": 1273 }, - { "id": "mon_cockatrice", "fg": 1214, "bg": 1273 }, - { "id": "mon_sewer_rat", "fg": 1216, "bg": 1273 }, - { "id": "mon_bear_cub", "fg": 1217, "bg": 1273 }, - { "id": [ "mon_fox", "mon_fox_red", "mon_fox_gray" ], "fg": 1218, "bg": 1272 }, - { "id": "mon_wolf", "fg": 1219, "bg": 1272 }, - { "id": "mon_rattlesnake_giant", "fg": 1221, "bg": 1272 }, - { "id": "mon_rattlesnake", "fg": 1220, "bg": 1273 }, - { "id": "mon_sewer_snake", "fg": 1222, "bg": 1273 }, - { "id": "mon_chipmunk", "fg": 1227, "bg": 1273 }, - { "id": "mon_groundhog", "fg": 1229, "bg": 1273 }, - { "id": "mon_lemming", "fg": 1223, "bg": 1224 }, - { "id": "mon_beaver", "fg": 1225, "bg": 1273 }, - { "id": "mon_black_rat", "fg": 1226, "bg": 1273 }, - { "id": "mon_deer_mouse", "fg": 1228, "bg": 1273 }, - { "id": "mon_muskrat", "fg": 1230, "bg": 1273 }, - { "id": "mon_otter", "fg": 1232, "bg": 1273 }, - { "id": "mon_rabbit", "fg": 1233, "bg": 1273 }, - { "id": "mon_squirrel", "fg": 1234, "bg": 1273 }, - { "id": "mon_squirrel_red", "fg": 1235, "bg": 1273 }, - { "id": "mon_opossum", "fg": 1231, "bg": 1273 }, - { "id": "mon_centipede_giant", "fg": 1236, "bg": 1272 }, - { "id": "mon_dragonfly", "fg": 1237, "bg": 1273 }, - { "id": "mon_locust", "fg": 1238, "bg": 1272 }, - { "id": "mon_locust_nymph", "fg": 1239, "bg": 1273 }, - { "id": "mon_mosquito", "fg": 1240, "bg": 1273 }, - { "id": "mon_ant", "fg": 1245, "bg": 1272 }, - { "id": "mon_ant_acid", "fg": 1246, "bg": 1272 }, - { "id": "corpse_mon_ant", "fg": 1241 }, - { "id": "corpse_mon_ant_acid", "fg": 1242 }, - { "id": "mon_ant_larva", "fg": 1248, "bg": 1273 }, - { "id": "mon_ant_acid_larva", "fg": 1247, "bg": 1273 }, - { "id": "corpse_mon_ant_larva", "fg": 1244 }, - { "id": "corpse_mon_ant_acid_larva", "fg": 1243 }, - { "id": "mon_dermatik_larva", "fg": 1249, "bg": 1273 }, - { "id": "mon_wasp_small", "fg": 1250, "bg": 1273 }, - { "id": "mon_giant_cockroach", "fg": 1251, "bg": 1272 }, - { "id": "mon_giant_cockroach_nymph", "fg": 1252, "bg": 1273 }, - { "id": "mon_plague_nymph", "fg": 1253, "bg": 1273 }, - { "id": "mon_plague_vector", "fg": 1254, "bg": 1272 }, - { "id": "mon_pregnant_giant_cockroach", "fg": 1255, "bg": 1272 }, - { "id": "mon_skittering_plague", "fg": 1256, "bg": 1272 }, - { "id": "mon_eyebot", "fg": 1258, "bg": 1273 }, - { "id": "mon_kreck", "fg": 1261, "bg": 1272 }, - { "id": "mon_blob", "fg": 1262, "bg": 1272 }, + "fg": [ { "weight": 8, "sprite": 1271 }, { "weight": 3, "sprite": 1269 }, { "weight": 1, "sprite": 1270 } ], + "bg": 1334 + }, + { "id": "mon_pig_piglet", "fg": 1272, "bg": 1335 }, + { "id": "mon_mink", "fg": 1273, "bg": 1335 }, + { "id": "mon_duck_chick", "fg": 1274, "bg": 1335 }, + { "id": "mon_goose_canadian_chick", "fg": 1275, "bg": 1335 }, + { "id": "mon_cockatrice_chick", "fg": 1277, "bg": 1335 }, + { "id": "mon_cockatrice", "fg": 1276, "bg": 1335 }, + { "id": "mon_sewer_rat", "fg": 1278, "bg": 1335 }, + { "id": "mon_bear_cub", "fg": 1279, "bg": 1335 }, + { "id": [ "mon_fox", "mon_fox_red", "mon_fox_gray" ], "fg": 1280, "bg": 1334 }, + { "id": "mon_wolf", "fg": 1281, "bg": 1334 }, + { "id": "mon_rattlesnake_giant", "fg": 1283, "bg": 1334 }, + { "id": "mon_rattlesnake", "fg": 1282, "bg": 1335 }, + { "id": "mon_sewer_snake", "fg": 1284, "bg": 1335 }, + { "id": "mon_chipmunk", "fg": 1289, "bg": 1335 }, + { "id": "mon_groundhog", "fg": 1291, "bg": 1335 }, + { "id": "mon_lemming", "fg": 1285, "bg": 1286 }, + { "id": "mon_beaver", "fg": 1287, "bg": 1335 }, + { "id": "mon_black_rat", "fg": 1288, "bg": 1335 }, + { "id": "mon_deer_mouse", "fg": 1290, "bg": 1335 }, + { "id": "mon_muskrat", "fg": 1292, "bg": 1335 }, + { "id": "mon_otter", "fg": 1294, "bg": 1335 }, + { "id": "mon_rabbit", "fg": 1295, "bg": 1335 }, + { "id": "mon_squirrel", "fg": 1296, "bg": 1335 }, + { "id": "mon_squirrel_red", "fg": 1297, "bg": 1335 }, + { "id": "mon_opossum", "fg": 1293, "bg": 1335 }, + { "id": "mon_centipede_giant", "fg": 1298, "bg": 1334 }, + { "id": "mon_dragonfly", "fg": 1299, "bg": 1335 }, + { "id": "mon_locust", "fg": 1300, "bg": 1334 }, + { "id": "mon_locust_nymph", "fg": 1301, "bg": 1335 }, + { "id": "mon_mosquito", "fg": 1302, "bg": 1335 }, + { "id": "mon_ant", "fg": 1307, "bg": 1334 }, + { "id": "mon_ant_acid", "fg": 1308, "bg": 1334 }, + { "id": "corpse_mon_ant", "fg": 1303 }, + { "id": "corpse_mon_ant_acid", "fg": 1304 }, + { "id": "mon_ant_larva", "fg": 1310, "bg": 1335 }, + { "id": "mon_ant_acid_larva", "fg": 1309, "bg": 1335 }, + { "id": "corpse_mon_ant_larva", "fg": 1306 }, + { "id": "corpse_mon_ant_acid_larva", "fg": 1305 }, + { "id": "mon_dermatik_larva", "fg": 1311, "bg": 1335 }, + { "id": "mon_wasp_small", "fg": 1312, "bg": 1335 }, + { "id": "mon_giant_cockroach", "fg": 1313, "bg": 1334 }, + { "id": "mon_giant_cockroach_nymph", "fg": 1314, "bg": 1335 }, + { "id": "mon_plague_nymph", "fg": 1315, "bg": 1335 }, + { "id": "mon_plague_vector", "fg": 1316, "bg": 1334 }, + { "id": "mon_pregnant_giant_cockroach", "fg": 1317, "bg": 1334 }, + { "id": "mon_skittering_plague", "fg": 1318, "bg": 1334 }, + { "id": "mon_eyebot", "fg": 1320, "bg": 1335 }, + { "id": "mon_kreck", "fg": 1323, "bg": 1334 }, + { "id": "mon_blob", "fg": 1324, "bg": 1334 }, { "id": "mon_blob_small", - "fg": [ { "weight": 1, "sprite": 1263 }, { "weight": 1, "sprite": 1264 } ], - "bg": 1273 - }, - { "id": "mon_spawn_raptor", "fg": 1265, "bg": 1272 }, - { "id": "mon_zolf", "fg": 1266, "bg": 1272 }, - { "id": "mon_zombeaver", "fg": 1267, "bg": 1273 }, - { "id": "mon_zombie_pig", "fg": 1268, "bg": 1272 }, - { "id": "mon_crow_mutant_small", "fg": 1269, "bg": 1272 }, - { "id": "mon_dog_rottweiler", "fg": 1270, "bg": 1272 }, - { "id": "mon_dog_zombie_rot", "fg": 1271, "bg": 1272 }, - { "id": "mon_skitterbot", "fg": 1274, "bg": 1272 }, - { "id": "mon_dog_zombie_cop", "fg": 1275, "bg": 1272 }, + "fg": [ { "weight": 1, "sprite": 1325 }, { "weight": 1, "sprite": 1326 } ], + "bg": 1335 + }, + { "id": "mon_spawn_raptor", "fg": 1327, "bg": 1334 }, + { "id": "mon_zolf", "fg": 1328, "bg": 1334 }, + { "id": "mon_zombeaver", "fg": 1329, "bg": 1335 }, + { "id": "mon_zombie_pig", "fg": 1330, "bg": 1334 }, + { "id": "mon_crow_mutant_small", "fg": 1331, "bg": 1334 }, + { "id": "mon_dog_rottweiler", "fg": 1332, "bg": 1334 }, + { "id": "mon_dog_zombie_rot", "fg": 1333, "bg": 1334 }, + { "id": "mon_skitterbot", "fg": 1336, "bg": 1334 }, + { "id": "mon_dog_zombie_cop", "fg": 1337, "bg": 1334 }, { "id": "mon_zombie_child", "fg": [ - { "weight": 1, "sprite": 1278 }, - { "weight": 1, "sprite": 1280 }, - { "weight": 5, "sprite": 1279 }, - { "weight": 5, "sprite": 1281 } + { "weight": 1, "sprite": 1340 }, + { "weight": 1, "sprite": 1342 }, + { "weight": 5, "sprite": 1341 }, + { "weight": 5, "sprite": 1343 } ], - "bg": 1273 + "bg": 1335 }, - { "id": "mon_zombie_anklebiter", "fg": 1277, "bg": 1273 }, - { "id": "mon_zombie_creepy", "fg": 1282, "bg": 1273 }, - { "id": "mon_zombie_shriekling", "fg": 1283, "bg": 1273 }, - { "id": "mon_zombie_snotgobbler", "fg": 1284, "bg": 1273 }, - { "id": "mon_zombie_sproglodyte", "fg": 1285, "bg": 1273 }, - { "id": "mon_zombie_waif", "fg": 1276, "bg": 1273 }, - { "id": "lighting_lowlight_dark", "fg": 1291 }, - { "id": "lighting_boomered_dark", "fg": 1286 }, + { "id": "mon_zombie_anklebiter", "fg": 1339, "bg": 1335 }, + { "id": "mon_zombie_creepy", "fg": 1344, "bg": 1335 }, + { "id": "mon_zombie_shriekling", "fg": 1345, "bg": 1335 }, + { "id": "mon_zombie_snotgobbler", "fg": 1346, "bg": 1335 }, + { "id": "mon_zombie_sproglodyte", "fg": 1347, "bg": 1335 }, + { "id": "mon_zombie_waif", "fg": 1338, "bg": 1335 }, + { "id": "lighting_lowlight_dark", "fg": 1353 }, + { "id": "lighting_boomered_dark", "fg": 1348 }, { "id": "lighting_hidden", "fg": [ - { "weight": 100, "sprite": 1287 }, - { "weight": 100, "sprite": 1288 }, - { "weight": 100, "sprite": 1289 }, - { "weight": 100, "sprite": 1290 } - ] - }, - { "id": "animation_hit", "fg": 1309 }, - { "id": "cursor", "fg": 1311 }, - { "id": "highlight", "fg": 1313 }, - { "id": "highlight_item", "fg": 1314 }, - { "id": "line_target", "fg": 1312 }, - { "id": "line_trail", "fg": 1315 }, - { "id": "animation_line", "fg": 1310 }, - { "id": "overlay_effect_bleed", "fg": 1316 }, - { "id": "overlay_effect_deaf", "fg": 1318 }, - { "id": "overlay_effect_downed", "fg": 1319 }, - { "id": "overlay_effect_grabbed", "fg": 1320 }, - { "id": "overlay_effect_winded", "fg": 1322 }, - { "id": "overlay_effect_hot", "fg": 1321 }, - { "id": "overlay_effect_cold", "fg": 1317 }, - { "id": [ "overlay_male_crouch", "overlay_female_crouch" ], "fg": 1325 }, - { "id": [ "overlay_male_run", "overlay_female_run" ], "fg": 1326 }, - { "id": "overlay_hostile_sees_player", "fg": 1324 }, - { "id": "overlay_neutral_sees_player", "fg": 1327 }, - { "id": "overlay_friendly_sees_player", "fg": 1323 }, - { "id": "overlay_other_sees_player", "fg": 1328 }, - { "id": "zombie_revival_indicator", "fg": 1329 }, - { "id": "generic_city_building", "fg": 1330, "bg": 1867 }, + { "weight": 100, "sprite": 1349 }, + { "weight": 100, "sprite": 1350 }, + { "weight": 100, "sprite": 1351 }, + { "weight": 100, "sprite": 1352 } + ] + }, + { "id": "animation_hit", "fg": 1371 }, + { "id": "cursor", "fg": 1373 }, + { "id": "highlight", "fg": 1375 }, + { "id": "highlight_item", "fg": 1376 }, + { "id": "line_target", "fg": 1374 }, + { "id": "line_trail", "fg": 1377 }, + { "id": "animation_line", "fg": 1372 }, + { "id": "overlay_effect_bleed", "fg": 1378 }, + { "id": "overlay_effect_deaf", "fg": 1380 }, + { "id": "overlay_effect_downed", "fg": 1381 }, + { "id": "overlay_effect_grabbed", "fg": 1382 }, + { "id": "overlay_effect_winded", "fg": 1384 }, + { "id": "overlay_effect_hot", "fg": 1383 }, + { "id": "overlay_effect_cold", "fg": 1379 }, + { "id": [ "overlay_male_crouch", "overlay_female_crouch" ], "fg": 1387 }, + { "id": [ "overlay_male_run", "overlay_female_run" ], "fg": 1388 }, + { "id": "overlay_hostile_sees_player", "fg": 1386 }, + { "id": "overlay_neutral_sees_player", "fg": 1389 }, + { "id": "overlay_friendly_sees_player", "fg": 1385 }, + { "id": "overlay_other_sees_player", "fg": 1390 }, + { "id": "zombie_revival_indicator", "fg": 1391 }, + { "id": "generic_city_building", "fg": 1395, "bg": 2009 }, { "id": [ "abstorefront_1", @@ -1418,57 +1466,17 @@ "s_sports", "veterinarian" ], - "fg": 1330, - "bg": 1867 - }, - { "id": "forest_water", "fg": 2530, "bg": 2796 }, - { "id": "forest", "fg": 2530, "bg": 1866 }, - { "id": "forest_thick", "fg": 2437, "bg": 2113 }, - { - "id": [ - "road_ne", - "road_ns", - "road_es", - "road_nes", - "road_wn", - "road_ew", - "road_new", - "road_sw", - "road_nsw", - "road_esw", - "road_nesw", - "road_end", - "road_end_north", - "road_end_south", - "road_end_west", - "road_end_east" - ], - "fg": 2183 + "fg": 1395, + "bg": 2009 }, - { - "id": [ - "river", - "river_sw", - "river_nw", - "river_se", - "river_ne", - "river_north", - "river_south", - "river_west", - "river_east", - "river_c_not_sw", - "river_c_not_nw", - "river_c_not_se", - "river_c_not_ne" - ], - "fg": 2762 - }, - { "id": "river_center", "fg": 2745 }, - { "id": "field", "fg": 1881, "bg": 1866 }, + { "id": "forest_water", "fg": 1404 }, + { "id": "forest", "fg": 1393, "bg": 1392 }, + { "id": "field", "fg": 1392 }, + { "id": "open_air", "fg": 1394 }, { "id": [ "shelter", "shelter_1", "shelter_2", "shelter_vandal", "shelter_1_vandal", "shelter_2_vandal" ], - "fg": [ 1332, 1331, 1333, 1334 ], - "bg": 1867, + "fg": [ 1397, 1396, 1398, 1399 ], + "bg": 2009, "rotates": true }, { @@ -1691,612 +1699,773 @@ "urban_13_11", "urban_13_12" ], - "fg": [ 1336, 1335, 1337, 1338 ], - "bg": 1867, + "fg": [ 1401, 1400, 1402, 1403 ], + "bg": 2009, + "rotates": true + }, + { + "id": [ "2farm_3", "farm_3", "farm_isherwood_3", "farm_dairy_twd_6", "farm_dairy_twd_12", "ranch_camp_66" ], + "fg": [ 1406, 1405, 1406, 1405 ], + "bg": 1392, + "rotates": true + }, + { "id": [ "desolatebarn", "barn_aban1" ], "fg": 1407, "bg": 1392 }, + { + "id": [ + "cabin", + "cabin_1", + "cabin_2", + "cabin_3", + "cabin_4", + "cabin_5", + "cabin_6", + "cabin_7", + "cabin_lapin", + "bandit_cabin", + "cabin_isherwood", + "cabin_lake", + "lake_cabin_boathouse", + "cabin_strange", + "cabin_strange_b", + "riverside_dwelling" + ], + "fg": [ 1409, 1408, 1410, 1411 ], + "bg": 1392, "rotates": true }, + { "id": "cave", "fg": 1412, "bg": 1392 }, + { + "id": [ + "2farm_1", + "2farm_10", + "2farm_12", + "2farm_13", + "2farm_14", + "2farm_15", + "2farm_16", + "2farm_2", + "2farm_5", + "2farm_6", + "2farm_9", + "farm_1", + "farm_4", + "farm_5", + "farm_6", + "farm_7", + "farm_8", + "farm_9", + "farm_isherwood_1", + "farm_isherwood_4", + "farm_isherwood_5", + "farm_isherwood_6", + "farm_isherwood_7", + "farm_isherwood_8", + "farm_isherwood_9", + "farm_lot_M", + "farm_lot_M1", + "farm_lot_wire_straight_h", + "farm_lot_wire_straight_h_open", + "farm_lot_wire_straight_v", + "farm_lot_wire_straight_v_open", + "farm_lot_wire_turn_h", + "farm_lot_wire_turn_h_open", + "farm_lot_wire_turn_v", + "farm_lot_wire_turn_v_open", + "farm_lot_wire_turn_uni", + "farm_stills_1", + "farm_stills_10", + "farm_stills_2", + "farm_stills_5", + "farm_stills_6", + "farm_stills_9", + "horse_farm_1", + "horse_farm_11", + "horse_farm_12", + "horse_farm_14", + "horse_farm_15", + "horse_farm_16", + "horse_farm_3", + "horse_farm_5", + "horse_farm_6", + "horse_farm_8", + "horse_farm_2", + "horse_farm_isherwood_1", + "horse_farm_isherwood_11", + "horse_farm_isherwood_12", + "horse_farm_isherwood_14", + "horse_farm_isherwood_15", + "horse_farm_isherwood_16", + "horse_farm_isherwood_3", + "horse_farm_isherwood_5", + "horse_farm_isherwood_6", + "horse_farm_isherwood_8", + "horse_farm_isherwood_2", + "yard" + ], + "fg": 1413 + }, + { "id": "forest_trail_isolated", "fg": 1429 }, + { "id": "forest_trail_nesw", "fg": 1414 }, + { "id": "forest_trail_es", "fg": 1416 }, + { "id": "forest_trail_ne", "fg": 1418 }, + { "id": "forest_trail_wn", "fg": 1417 }, + { "id": "forest_trail_sw", "fg": 1415 }, + { "id": "forest_trail_esw", "fg": 1426 }, + { "id": "forest_trail_nes", "fg": 1428 }, + { "id": "forest_trail_new", "fg": 1427 }, + { "id": "forest_trail_nsw", "fg": 1425 }, + { "id": "forest_trail_ns", "fg": 1420 }, + { "id": "forest_trail_ew", "fg": 1419 }, + { "id": "forest_trail_end_north", "fg": 1422 }, + { "id": "forest_trail_end_west", "fg": 1424 }, + { "id": "forest_trail_end_south", "fg": 1423 }, + { "id": "forest_trail_end_east", "fg": 1421 }, + { "id": "2farm_7", "fg": 1414 }, + { "id": "crater", "fg": 2326, "bg": 1392 }, + { "id": [ "slimepit_down", "slimepit" ], "fg": 2636 }, + { "id": "2farm_4", "fg": [ 1438, 1437, 1439, 1440 ], "rotates": true }, + { "id": "2farm_8", "fg": [ 1439, 1440, 1438, 1437 ], "rotates": true }, + { "id": "dairy_farm_NW", "fg": [ 1440, 1438, 1437, 1439 ], "rotates": true }, + { "id": "dairy_farm_NE", "fg": [ 1437, 1439, 1440, 1438 ], "rotates": true }, + { "id": "river_nw", "fg": 1454, "bg": 1392, "rotates": false }, + { "id": "river_sw", "fg": 1457, "bg": 1392, "rotates": false }, + { "id": "river_se", "fg": 1455, "bg": 1392, "rotates": false }, + { "id": "river_ne", "fg": 1452, "bg": 1392, "rotates": false }, + { "id": "river_north", "fg": 1453, "bg": 1392, "rotates": false }, + { "id": "river_west", "fg": 1458, "bg": 1392, "rotates": false }, + { "id": "river_east", "fg": 1451, "bg": 1392, "rotates": false }, + { "id": "river_south", "fg": 1456, "bg": 1392, "rotates": false }, + { "id": "river_center", "fg": 1450, "bg": 1392, "rotates": false }, + { "id": "river", "fg": [ 1453, 1451, 1456, 1458 ], "bg": 1392, "rotates": true }, + { "id": "river_c_not_nw", "fg": 1447, "bg": 1392, "rotates": false }, + { "id": "river_c_not_ne", "fg": 1446, "bg": 1392, "rotates": false }, + { "id": "river_c_not_sw", "fg": 1449, "bg": 1392, "rotates": false }, + { "id": "river_c_not_se", "fg": 1448, "bg": 1392, "rotates": false }, + { "id": "road_isolated", "fg": 1474 }, + { "id": "road_nesw", "fg": 1459 }, + { "id": "road_es", "fg": 1461 }, + { "id": "road_ne", "fg": 1463 }, + { "id": "road_wn", "fg": 1462 }, + { "id": "road_sw", "fg": 1460 }, + { "id": "road_esw", "fg": 1471 }, + { "id": "road_nes", "fg": 1473 }, + { "id": "road_new", "fg": 1472 }, + { "id": "road_nsw", "fg": 1470 }, + { "id": "road_ns", "fg": 1465 }, + { "id": "road_ew", "fg": 1464 }, + { "id": "road_end_north", "fg": 1467 }, + { "id": "road_end_west", "fg": 1469 }, + { "id": "road_end_south", "fg": 1468 }, + { "id": "road_end_east", "fg": 1466 }, + { + "id": [ "house_farm", "farm_2", "farm_isherwood_2", "2farm_11" ], + "fg": [ 1476, 1475, 1477, 1478 ], + "bg": 1392, + "rotates": true + }, + { "id": "2silos", "fg": [ 1480, 1479, 1480, 1479 ], "bg": 1392, "rotates": true }, { "id": "f_earthbag_half", "multitile": true, - "fg": 1354, - "bg": 1866, + "fg": 1496, + "bg": 2008, "additional_tiles": [ - { "id": "center", "fg": 1339 }, - { "id": "corner", "fg": [ 1341, 1343, 1342, 1340 ] }, - { "id": "t_connection", "fg": [ 1351, 1353, 1352, 1350 ] }, - { "id": "edge", "fg": [ 1345, 1344 ] }, - { "id": "end_piece", "fg": [ 1347, 1349, 1348, 1346 ] }, - { "id": "unconnected", "fg": [ 1354, 1354 ] } + { "id": "center", "fg": 1481 }, + { "id": "corner", "fg": [ 1483, 1485, 1484, 1482 ] }, + { "id": "t_connection", "fg": [ 1493, 1495, 1494, 1492 ] }, + { "id": "edge", "fg": [ 1487, 1486 ] }, + { "id": "end_piece", "fg": [ 1489, 1491, 1490, 1488 ] }, + { "id": "unconnected", "fg": [ 1496, 1496 ] } ] }, - { "id": [ "t_ramp_up_low", "t_ramp_down_low" ], "fg": 2164 }, - { "id": [ "t_sidewalk_ramp_up_low", "t_sidewalk_ramp_down_low" ], "fg": 2478 }, + { "id": [ "t_ramp_up_low", "t_ramp_down_low" ], "fg": 2306 }, + { "id": [ "t_sidewalk_ramp_up_low", "t_sidewalk_ramp_down_low" ], "fg": 2620 }, { "id": "t_splitrail_fence", "multitile": true, - "fg": 1396, - "bg": 1866, + "fg": 1538, + "bg": 2008, "additional_tiles": [ - { "id": "center", "bg": 1866, "fg": 1381 }, - { "id": "corner", "bg": 1866, "fg": [ 1383, 1385, 1384, 1382 ] }, - { "id": "t_connection", "bg": 1866, "fg": [ 1393, 1395, 1394, 1392 ] }, - { "id": "edge", "bg": 1866, "fg": [ 1387, 1386 ] }, - { "id": "end_piece", "bg": 1866, "fg": [ 1389, 1391, 1390, 1388 ] }, - { "bg": 1866, "id": "unconnected", "fg": [ 1396, 1396 ] } + { "id": "center", "bg": 2008, "fg": 1523 }, + { "id": "corner", "bg": 2008, "fg": [ 1525, 1527, 1526, 1524 ] }, + { "id": "t_connection", "bg": 2008, "fg": [ 1535, 1537, 1536, 1534 ] }, + { "id": "edge", "bg": 2008, "fg": [ 1529, 1528 ] }, + { "id": "end_piece", "bg": 2008, "fg": [ 1531, 1533, 1532, 1530 ] }, + { "bg": 2008, "id": "unconnected", "fg": [ 1538, 1538 ] } ] }, { "id": "t_splitrail_fence_season_summer", "multitile": true, - "fg": 1396, - "bg": 1876, + "fg": 1538, + "bg": 2018, "additional_tiles": [ - { "id": "center", "bg": 1876, "fg": 1381 }, - { "id": "corner", "bg": 1876, "fg": [ 1383, 1385, 1384, 1382 ] }, - { "id": "t_connection", "bg": 1876, "fg": [ 1393, 1395, 1394, 1392 ] }, - { "id": "edge", "bg": 1876, "fg": [ 1387, 1386 ] }, - { "id": "end_piece", "bg": 1876, "fg": [ 1389, 1391, 1390, 1388 ] }, - { "bg": 1876, "id": "unconnected", "fg": [ 1396, 1396 ] } + { "id": "center", "bg": 2018, "fg": 1523 }, + { "id": "corner", "bg": 2018, "fg": [ 1525, 1527, 1526, 1524 ] }, + { "id": "t_connection", "bg": 2018, "fg": [ 1535, 1537, 1536, 1534 ] }, + { "id": "edge", "bg": 2018, "fg": [ 1529, 1528 ] }, + { "id": "end_piece", "bg": 2018, "fg": [ 1531, 1533, 1532, 1530 ] }, + { "bg": 2018, "id": "unconnected", "fg": [ 1538, 1538 ] } ] }, { "id": "t_splitrail_fence_season_autumn", "multitile": true, - "fg": 1396, - "bg": 1871, + "fg": 1538, + "bg": 2013, "additional_tiles": [ - { "id": "center", "bg": 1871, "fg": 1381 }, - { "id": "corner", "bg": 1871, "fg": [ 1383, 1385, 1384, 1382 ] }, - { "id": "t_connection", "bg": 1871, "fg": [ 1393, 1395, 1394, 1392 ] }, - { "id": "edge", "bg": 1871, "fg": [ 1387, 1386 ] }, - { "id": "end_piece", "bg": 1871, "fg": [ 1389, 1391, 1390, 1388 ] }, - { "bg": 1871, "id": "unconnected", "fg": [ 1396, 1396 ] } + { "id": "center", "bg": 2013, "fg": 1523 }, + { "id": "corner", "bg": 2013, "fg": [ 1525, 1527, 1526, 1524 ] }, + { "id": "t_connection", "bg": 2013, "fg": [ 1535, 1537, 1536, 1534 ] }, + { "id": "edge", "bg": 2013, "fg": [ 1529, 1528 ] }, + { "id": "end_piece", "bg": 2013, "fg": [ 1531, 1533, 1532, 1530 ] }, + { "bg": 2013, "id": "unconnected", "fg": [ 1538, 1538 ] } ] }, { "id": "t_splitrail_fence_season_winter", "multitile": true, - "fg": 1396, - "bg": 1362, + "fg": 1538, + "bg": 1504, "additional_tiles": [ - { "id": "center", "bg": 1362, "fg": 1381 }, - { "id": "corner", "bg": 1362, "fg": [ 1383, 1385, 1384, 1382 ] }, - { "id": "t_connection", "bg": 1362, "fg": [ 1393, 1395, 1394, 1392 ] }, - { "id": "edge", "bg": 1362, "fg": [ 1387, 1386 ] }, - { "id": "end_piece", "bg": 1362, "fg": [ 1389, 1391, 1390, 1388 ] }, - { "bg": 1362, "id": "unconnected", "fg": [ 1396, 1396 ] } + { "id": "center", "bg": 1504, "fg": 1523 }, + { "id": "corner", "bg": 1504, "fg": [ 1525, 1527, 1526, 1524 ] }, + { "id": "t_connection", "bg": 1504, "fg": [ 1535, 1537, 1536, 1534 ] }, + { "id": "edge", "bg": 1504, "fg": [ 1529, 1528 ] }, + { "id": "end_piece", "bg": 1504, "fg": [ 1531, 1533, 1532, 1530 ] }, + { "bg": 1504, "id": "unconnected", "fg": [ 1538, 1538 ] } ] }, - { "id": "t_stairs_down", "fg": 1397 }, - { "id": "t_wood_stairs_down", "fg": 1398 }, + { "id": "t_stairs_down", "fg": 1539 }, + { "id": "t_wood_stairs_down", "fg": 1540 }, { "id": "t_adobe_brick_wall", "multitile": true, - "fg": 1414, + "fg": 1556, "additional_tiles": [ - { "id": "center", "fg": 1399 }, - { "id": "corner", "fg": [ 1401, 1403, 1402, 1400 ] }, - { "id": "t_connection", "fg": [ 1411, 1413, 1412, 1410 ] }, - { "id": "edge", "fg": [ 1405, 1404 ] }, - { "id": "end_piece", "fg": [ 1407, 1409, 1408, 1406 ] }, - { "id": "unconnected", "fg": [ 1414, 1414 ] } + { "id": "center", "fg": 1541 }, + { "id": "corner", "fg": [ 1543, 1545, 1544, 1542 ] }, + { "id": "t_connection", "fg": [ 1553, 1555, 1554, 1552 ] }, + { "id": "edge", "fg": [ 1547, 1546 ] }, + { "id": "end_piece", "fg": [ 1549, 1551, 1550, 1548 ] }, + { "id": "unconnected", "fg": [ 1556, 1556 ] } ] }, - { "id": "t_bars", "fg": 1415 }, + { "id": "t_bars", "fg": 1557 }, { "id": "t_brick_wall", "multitile": true, - "fg": 1431, + "fg": 1573, "additional_tiles": [ - { "id": "center", "fg": 1416 }, - { "id": "corner", "fg": [ 1418, 1420, 1419, 1417 ] }, - { "id": "t_connection", "fg": [ 1428, 1430, 1429, 1427 ] }, - { "id": "edge", "fg": [ 1422, 1421 ] }, - { "id": "end_piece", "fg": [ 1424, 1426, 1425, 1423 ] }, - { "id": "unconnected", "fg": 1431 } + { "id": "center", "fg": 1558 }, + { "id": "corner", "fg": [ 1560, 1562, 1561, 1559 ] }, + { "id": "t_connection", "fg": [ 1570, 1572, 1571, 1569 ] }, + { "id": "edge", "fg": [ 1564, 1563 ] }, + { "id": "end_piece", "fg": [ 1566, 1568, 1567, 1565 ] }, + { "id": "unconnected", "fg": 1573 } ] }, { "id": "t_bridge", "multitile": true, - "fg": 1447, + "fg": 1589, "additional_tiles": [ - { "id": "center", "fg": 1432 }, - { "id": "corner", "fg": [ 1434, 1436, 1435, 1433 ] }, - { "id": "t_connection", "fg": [ 1444, 1446, 1445, 1443 ] }, - { "id": "edge", "fg": [ 1438, 1437 ] }, - { "id": "end_piece", "fg": [ 1440, 1442, 1441, 1439 ] }, - { "id": "unconnected", "fg": [ 1447, 1447 ] } + { "id": "center", "fg": 1574 }, + { "id": "corner", "fg": [ 1576, 1578, 1577, 1575 ] }, + { "id": "t_connection", "fg": [ 1586, 1588, 1587, 1585 ] }, + { "id": "edge", "fg": [ 1580, 1579 ] }, + { "id": "end_piece", "fg": [ 1582, 1584, 1583, 1581 ] }, + { "id": "unconnected", "fg": [ 1589, 1589 ] } ] }, { "id": "t_carpet_green", "multitile": true, - "fg": 1466, + "fg": 1608, "additional_tiles": [ { "id": "center", "fg": [ - { "weight": 1, "sprite": 1448 }, - { "weight": 1, "sprite": 1449 }, - { "weight": 1, "sprite": 1450 }, - { "weight": 1, "sprite": 1451 } + { "weight": 1, "sprite": 1590 }, + { "weight": 1, "sprite": 1591 }, + { "weight": 1, "sprite": 1592 }, + { "weight": 1, "sprite": 1593 } ] }, - { "id": "corner", "fg": [ 1453, 1455, 1454, 1452 ] }, - { "id": "t_connection", "fg": [ 1463, 1465, 1464, 1462 ] }, - { "id": "edge", "fg": [ 1457, 1456 ] }, - { "id": "end_piece", "fg": [ 1459, 1461, 1460, 1458 ] }, - { "id": "unconnected", "fg": 1466 } + { "id": "corner", "fg": [ 1595, 1597, 1596, 1594 ] }, + { "id": "t_connection", "fg": [ 1605, 1607, 1606, 1604 ] }, + { "id": "edge", "fg": [ 1599, 1598 ] }, + { "id": "end_piece", "fg": [ 1601, 1603, 1602, 1600 ] }, + { "id": "unconnected", "fg": 1608 } ] }, { "id": "t_carpet_purple", "multitile": true, - "fg": 1485, + "fg": 1627, "additional_tiles": [ { "id": "center", "fg": [ - { "weight": 1, "sprite": 1467 }, - { "weight": 1, "sprite": 1468 }, - { "weight": 1, "sprite": 1469 }, - { "weight": 1, "sprite": 1470 } + { "weight": 1, "sprite": 1609 }, + { "weight": 1, "sprite": 1610 }, + { "weight": 1, "sprite": 1611 }, + { "weight": 1, "sprite": 1612 } ] }, - { "id": "corner", "fg": [ 1472, 1474, 1473, 1471 ] }, - { "id": "t_connection", "fg": [ 1482, 1484, 1483, 1481 ] }, - { "id": "edge", "fg": [ 1476, 1475 ] }, - { "id": "end_piece", "fg": [ 1478, 1480, 1479, 1477 ] }, - { "id": "unconnected", "fg": 1485 } + { "id": "corner", "fg": [ 1614, 1616, 1615, 1613 ] }, + { "id": "t_connection", "fg": [ 1624, 1626, 1625, 1623 ] }, + { "id": "edge", "fg": [ 1618, 1617 ] }, + { "id": "end_piece", "fg": [ 1620, 1622, 1621, 1619 ] }, + { "id": "unconnected", "fg": 1627 } ] }, { "id": "t_carpet_red", "multitile": true, - "fg": 1501, + "fg": 1643, "additional_tiles": [ - { "id": "center", "fg": 1486 }, - { "id": "corner", "fg": [ 1488, 1490, 1489, 1487 ] }, - { "id": "t_connection", "fg": [ 1498, 1500, 1499, 1497 ] }, - { "id": "edge", "fg": [ 1492, 1491 ] }, - { "id": "end_piece", "fg": [ 1494, 1496, 1495, 1493 ] }, - { "id": "unconnected", "fg": 1501 } + { "id": "center", "fg": 1628 }, + { "id": "corner", "fg": [ 1630, 1632, 1631, 1629 ] }, + { "id": "t_connection", "fg": [ 1640, 1642, 1641, 1639 ] }, + { "id": "edge", "fg": [ 1634, 1633 ] }, + { "id": "end_piece", "fg": [ 1636, 1638, 1637, 1635 ] }, + { "id": "unconnected", "fg": 1643 } ] }, { "id": "t_carpet_yellow", "multitile": true, - "fg": 1517, + "fg": 1659, "additional_tiles": [ - { "id": "center", "fg": 1502 }, - { "id": "corner", "fg": [ 1504, 1506, 1505, 1503 ] }, - { "id": "t_connection", "fg": [ 1514, 1516, 1515, 1513 ] }, - { "id": "edge", "fg": [ 1508, 1507 ] }, - { "id": "end_piece", "fg": [ 1510, 1512, 1511, 1509 ] }, - { "id": "unconnected", "fg": 1517 } + { "id": "center", "fg": 1644 }, + { "id": "corner", "fg": [ 1646, 1648, 1647, 1645 ] }, + { "id": "t_connection", "fg": [ 1656, 1658, 1657, 1655 ] }, + { "id": "edge", "fg": [ 1650, 1649 ] }, + { "id": "end_piece", "fg": [ 1652, 1654, 1653, 1651 ] }, + { "id": "unconnected", "fg": 1659 } ] }, { "id": "t_clay", "multitile": true, - "fg": 1533, - "bg": 1866, + "fg": 1675, + "bg": 2008, "additional_tiles": [ - { "id": "center", "bg": 1866, "fg": 1518 }, - { "id": "corner", "bg": 1866, "fg": [ 1520, 1522, 1521, 1519 ] }, - { "id": "t_connection", "bg": 1866, "fg": [ 1530, 1532, 1531, 1529 ] }, - { "id": "edge", "bg": 1866, "fg": [ 1524, 1523 ] }, - { "id": "end_piece", "bg": 1866, "fg": [ 1526, 1528, 1527, 1525 ] }, - { "bg": 1866, "id": "unconnected", "fg": 1533 } + { "id": "center", "bg": 2008, "fg": 1660 }, + { "id": "corner", "bg": 2008, "fg": [ 1662, 1664, 1663, 1661 ] }, + { "id": "t_connection", "bg": 2008, "fg": [ 1672, 1674, 1673, 1671 ] }, + { "id": "edge", "bg": 2008, "fg": [ 1666, 1665 ] }, + { "id": "end_piece", "bg": 2008, "fg": [ 1668, 1670, 1669, 1667 ] }, + { "bg": 2008, "id": "unconnected", "fg": 1675 } ] }, { "id": "t_clay_season_summer", "multitile": true, - "fg": 1533, - "bg": 1876, + "fg": 1675, + "bg": 2018, "additional_tiles": [ - { "id": "center", "bg": 1876, "fg": 1518 }, - { "id": "corner", "bg": 1876, "fg": [ 1520, 1522, 1521, 1519 ] }, - { "id": "t_connection", "bg": 1876, "fg": [ 1530, 1532, 1531, 1529 ] }, - { "id": "edge", "bg": 1876, "fg": [ 1524, 1523 ] }, - { "id": "end_piece", "bg": 1876, "fg": [ 1526, 1528, 1527, 1525 ] }, - { "bg": 1876, "id": "unconnected", "fg": 1533 } + { "id": "center", "bg": 2018, "fg": 1660 }, + { "id": "corner", "bg": 2018, "fg": [ 1662, 1664, 1663, 1661 ] }, + { "id": "t_connection", "bg": 2018, "fg": [ 1672, 1674, 1673, 1671 ] }, + { "id": "edge", "bg": 2018, "fg": [ 1666, 1665 ] }, + { "id": "end_piece", "bg": 2018, "fg": [ 1668, 1670, 1669, 1667 ] }, + { "bg": 2018, "id": "unconnected", "fg": 1675 } ] }, { "id": "t_clay_season_autumn", "multitile": true, - "fg": 1533, - "bg": 1871, + "fg": 1675, + "bg": 2013, "additional_tiles": [ - { "id": "center", "bg": 1871, "fg": 1518 }, - { "id": "corner", "bg": 1871, "fg": [ 1520, 1522, 1521, 1519 ] }, - { "id": "t_connection", "bg": 1871, "fg": [ 1530, 1532, 1531, 1529 ] }, - { "id": "edge", "bg": 1871, "fg": [ 1524, 1523 ] }, - { "id": "end_piece", "bg": 1871, "fg": [ 1526, 1528, 1527, 1525 ] }, - { "bg": 1871, "id": "unconnected", "fg": 1533 } + { "id": "center", "bg": 2013, "fg": 1660 }, + { "id": "corner", "bg": 2013, "fg": [ 1662, 1664, 1663, 1661 ] }, + { "id": "t_connection", "bg": 2013, "fg": [ 1672, 1674, 1673, 1671 ] }, + { "id": "edge", "bg": 2013, "fg": [ 1666, 1665 ] }, + { "id": "end_piece", "bg": 2013, "fg": [ 1668, 1670, 1669, 1667 ] }, + { "bg": 2013, "id": "unconnected", "fg": 1675 } ] }, { "id": "t_clay_season_winter", "multitile": true, - "fg": 1533, - "bg": 1362, + "fg": 1675, + "bg": 1504, "additional_tiles": [ - { "id": "center", "bg": 1362, "fg": 1518 }, - { "id": "corner", "bg": 1362, "fg": [ 1520, 1522, 1521, 1519 ] }, - { "id": "t_connection", "bg": 1362, "fg": [ 1530, 1532, 1531, 1529 ] }, - { "id": "edge", "bg": 1362, "fg": [ 1524, 1523 ] }, - { "id": "end_piece", "bg": 1362, "fg": [ 1526, 1528, 1527, 1525 ] }, - { "bg": 1362, "id": "unconnected", "fg": 1533 } + { "id": "center", "bg": 1504, "fg": 1660 }, + { "id": "corner", "bg": 1504, "fg": [ 1662, 1664, 1663, 1661 ] }, + { "id": "t_connection", "bg": 1504, "fg": [ 1672, 1674, 1673, 1671 ] }, + { "id": "edge", "bg": 1504, "fg": [ 1666, 1665 ] }, + { "id": "end_piece", "bg": 1504, "fg": [ 1668, 1670, 1669, 1667 ] }, + { "bg": 1504, "id": "unconnected", "fg": 1675 } ] }, { "id": "t_concrete", "multitile": true, - "fg": 1549, + "fg": 1691, "additional_tiles": [ - { "id": "center", "fg": 1534 }, - { "id": "corner", "fg": [ 1536, 1538, 1537, 1535 ] }, - { "id": "t_connection", "fg": [ 1546, 1548, 1547, 1545 ] }, - { "id": "edge", "fg": [ 1540, 1539 ] }, - { "id": "end_piece", "fg": [ 1542, 1544, 1543, 1541 ] }, - { "id": "unconnected", "fg": 1549 } + { "id": "center", "fg": 1676 }, + { "id": "corner", "fg": [ 1678, 1680, 1679, 1677 ] }, + { "id": "t_connection", "fg": [ 1688, 1690, 1689, 1687 ] }, + { "id": "edge", "fg": [ 1682, 1681 ] }, + { "id": "end_piece", "fg": [ 1684, 1686, 1685, 1683 ] }, + { "id": "unconnected", "fg": 1691 } ] }, - { "id": "t_concrete_season_winter", "fg": 1362 }, + { "id": "t_concrete_season_winter", "fg": 1504 }, { "id": "t_concrete_wall", "multitile": true, - "fg": 1565, + "fg": 1707, "additional_tiles": [ - { "id": "center", "fg": 1550 }, - { "id": "corner", "fg": [ 1552, 1554, 1553, 1551 ] }, - { "id": "t_connection", "fg": [ 1562, 1564, 1563, 1561 ] }, - { "id": "edge", "fg": [ 1556, 1555 ] }, - { "id": "end_piece", "fg": [ 1558, 1560, 1559, 1557 ] }, - { "id": "unconnected", "fg": 1565 } + { "id": "center", "fg": 1692 }, + { "id": "corner", "fg": [ 1694, 1696, 1695, 1693 ] }, + { "id": "t_connection", "fg": [ 1704, 1706, 1705, 1703 ] }, + { "id": "edge", "fg": [ 1698, 1697 ] }, + { "id": "end_piece", "fg": [ 1700, 1702, 1701, 1699 ] }, + { "id": "unconnected", "fg": 1707 } ] }, { "id": "t_concrete_y", "multitile": true, - "fg": 1581, + "fg": 1723, "additional_tiles": [ - { "id": "center", "fg": 1566 }, - { "id": "corner", "fg": [ 1568, 1570, 1569, 1567 ] }, - { "id": "t_connection", "fg": [ 1578, 1580, 1579, 1577 ] }, - { "id": "edge", "fg": [ 1572, 1571 ] }, - { "id": "end_piece", "fg": [ 1574, 1576, 1575, 1573 ] }, - { "id": "unconnected", "fg": 1581 } + { "id": "center", "fg": 1708 }, + { "id": "corner", "fg": [ 1710, 1712, 1711, 1709 ] }, + { "id": "t_connection", "fg": [ 1720, 1722, 1721, 1719 ] }, + { "id": "edge", "fg": [ 1714, 1713 ] }, + { "id": "end_piece", "fg": [ 1716, 1718, 1717, 1715 ] }, + { "id": "unconnected", "fg": 1723 } ] }, - { "id": "t_concrete_y_season_winter", "fg": 1362 }, + { "id": "t_concrete_y_season_winter", "fg": 1504 }, { "id": "t_conveyor", "multitile": true, - "fg": 1597, - "bg": 2514, + "fg": 1739, + "bg": 2656, "additional_tiles": [ - { "id": "center", "bg": 2514, "fg": 1582 }, - { "id": "corner", "bg": 2514, "fg": [ 1584, 1586, 1585, 1583 ] }, - { "id": "t_connection", "bg": 2514, "fg": [ 1594, 1596, 1595, 1593 ] }, - { "id": "edge", "bg": 2514, "fg": [ 1588, 1587 ] }, - { "id": "end_piece", "bg": 2514, "fg": [ 1590, 1592, 1591, 1589 ] }, - { "bg": 2514, "id": "unconnected", "fg": [ 1597, 1597 ] } + { "id": "center", "bg": 2656, "fg": 1724 }, + { "id": "corner", "bg": 2656, "fg": [ 1726, 1728, 1727, 1725 ] }, + { "id": "t_connection", "bg": 2656, "fg": [ 1736, 1738, 1737, 1735 ] }, + { "id": "edge", "bg": 2656, "fg": [ 1730, 1729 ] }, + { "id": "end_piece", "bg": 2656, "fg": [ 1732, 1734, 1733, 1731 ] }, + { "bg": 2656, "id": "unconnected", "fg": [ 1739, 1739 ] } ] }, - { "id": "t_curtains", "fg": 1598 }, + { "id": "t_curtains", "fg": 1740 }, { "id": "t_dirt", - "fg": 1617, + "fg": 1759, "multitile": true, "additional_tiles": [ { "id": "center", "fg": [ - { "weight": 100, "sprite": 1599 }, - { "weight": 100, "sprite": 1600 }, - { "weight": 100, "sprite": 1601 }, - { "weight": 100, "sprite": 1602 } + { "weight": 100, "sprite": 1741 }, + { "weight": 100, "sprite": 1742 }, + { "weight": 100, "sprite": 1743 }, + { "weight": 100, "sprite": 1744 } ] }, - { "id": "corner", "fg": [ 1604, 1606, 1605, 1603 ] }, - { "id": "t_connection", "fg": [ 1614, 1616, 1615, 1613 ] }, - { "id": "edge", "fg": [ 1608, 1607 ] }, - { "id": "end_piece", "fg": [ 1610, 1612, 1611, 1609 ] }, - { "id": "unconnected", "fg": [ 1617, 1617 ] } + { "id": "corner", "fg": [ 1746, 1748, 1747, 1745 ] }, + { "id": "t_connection", "fg": [ 1756, 1758, 1757, 1755 ] }, + { "id": "edge", "fg": [ 1750, 1749 ] }, + { "id": "end_piece", "fg": [ 1752, 1754, 1753, 1751 ] }, + { "id": "unconnected", "fg": [ 1759, 1759 ] } ] }, { "id": "t_dirt_season_autumn", - "fg": 1636, + "fg": 1778, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": [ 1618, 1619, 1620, 1621 ] }, - { "id": "corner", "fg": [ 1623, 1625, 1624, 1622 ] }, - { "id": "t_connection", "fg": [ 1633, 1635, 1634, 1632 ] }, - { "id": "edge", "fg": [ 1627, 1626 ] }, - { "id": "end_piece", "fg": [ 1629, 1631, 1630, 1628 ] }, - { "id": "unconnected", "fg": [ 1636, 1636 ] } + { "id": "center", "fg": [ 1760, 1761, 1762, 1763 ] }, + { "id": "corner", "fg": [ 1765, 1767, 1766, 1764 ] }, + { "id": "t_connection", "fg": [ 1775, 1777, 1776, 1774 ] }, + { "id": "edge", "fg": [ 1769, 1768 ] }, + { "id": "end_piece", "fg": [ 1771, 1773, 1772, 1770 ] }, + { "id": "unconnected", "fg": [ 1778, 1778 ] } ] }, { "id": "t_dirt_season_summer", - "fg": 1655, + "fg": 1797, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": [ 1637, 1638, 1639, 1640 ] }, - { "id": "corner", "fg": [ 1642, 1644, 1643, 1641 ] }, - { "id": "t_connection", "fg": [ 1652, 1654, 1653, 1651 ] }, - { "id": "edge", "fg": [ 1646, 1645 ] }, - { "id": "end_piece", "fg": [ 1648, 1650, 1649, 1647 ] }, - { "id": "unconnected", "fg": [ 1655, 1655 ] } + { "id": "center", "fg": [ 1779, 1780, 1781, 1782 ] }, + { "id": "corner", "fg": [ 1784, 1786, 1785, 1783 ] }, + { "id": "t_connection", "fg": [ 1794, 1796, 1795, 1793 ] }, + { "id": "edge", "fg": [ 1788, 1787 ] }, + { "id": "end_piece", "fg": [ 1790, 1792, 1791, 1789 ] }, + { "id": "unconnected", "fg": [ 1797, 1797 ] } ] }, { "id": "t_dirt_season_winter", "fg": [ - { "weight": 100, "sprite": 1656 }, - { "weight": 100, "sprite": 1657 }, - { "weight": 100, "sprite": 1658 }, - { "weight": 100, "sprite": 1659 } + { "weight": 100, "sprite": 1798 }, + { "weight": 100, "sprite": 1799 }, + { "weight": 100, "sprite": 1800 }, + { "weight": 100, "sprite": 1801 } ] }, { "id": "t_dirtfloor", "multitile": true, - "fg": 1675, - "additional_tiles": [ - { "id": "center", "fg": 1660 }, - { "id": "corner", "fg": [ 1662, 1664, 1663, 1661 ] }, - { "id": "t_connection", "fg": [ 1672, 1674, 1673, 1671 ] }, - { "id": "edge", "fg": [ 1666, 1665 ] }, - { "id": "end_piece", "fg": [ 1668, 1670, 1669, 1667 ] }, - { "id": "unconnected", "fg": 1675 } - ] - }, - { "id": "t_door_c", "fg": 1677 }, - { "id": "t_door_locked", "fg": 1678 }, - { "id": "t_door_o", "fg": 1679 }, - { "id": "t_door_b", "fg": 1676 }, - { "id": "t_door_boarded", "fg": 1680 }, - { "id": "t_door_boarded_damaged", "fg": 1681 }, - { "id": "t_door_glass_c", "fg": 1682 }, - { "id": "t_door_glass_o", "fg": 1683 }, - { "id": "t_door_lab_c", "fg": 1684 }, - { "id": "t_door_lab_o", "fg": 1685 }, - { "id": "t_door_metal_c_peep", "fg": 1686 }, - { "id": [ "t_door_metal_locked", "t_door_metal_pickable" ], "fg": 1687 }, - { "id": "t_elevator", "fg": [ { "weight": 100, "sprite": 1694 }, { "weight": 100, "sprite": 1695 } ] }, + "fg": 1817, + "additional_tiles": [ + { "id": "center", "fg": 1802 }, + { "id": "corner", "fg": [ 1804, 1806, 1805, 1803 ] }, + { "id": "t_connection", "fg": [ 1814, 1816, 1815, 1813 ] }, + { "id": "edge", "fg": [ 1808, 1807 ] }, + { "id": "end_piece", "fg": [ 1810, 1812, 1811, 1809 ] }, + { "id": "unconnected", "fg": 1817 } + ] + }, + { "id": "t_door_c", "fg": 1819 }, + { "id": "t_door_locked", "fg": 1820 }, + { "id": "t_door_o", "fg": 1821 }, + { "id": "t_door_b", "fg": 1818 }, + { "id": "t_door_boarded", "fg": 1822 }, + { "id": "t_door_boarded_damaged", "fg": 1823 }, + { "id": "t_door_glass_c", "fg": 1824 }, + { "id": "t_door_glass_o", "fg": 1825 }, + { "id": "t_door_lab_c", "fg": 1826 }, + { "id": "t_door_lab_o", "fg": 1827 }, + { "id": "t_door_metal_c_peep", "fg": 1828 }, + { "id": [ "t_door_metal_locked", "t_door_metal_pickable" ], "fg": 1829 }, + { "id": "t_elevator", "fg": [ { "weight": 100, "sprite": 1836 }, { "weight": 100, "sprite": 1837 } ] }, { "id": "t_fence_season_spring", "multitile": true, - "fg": 1711, - "bg": 1866, + "fg": 1853, + "bg": 2008, "additional_tiles": [ - { "id": "center", "bg": 1866, "fg": 1696 }, - { "id": "corner", "bg": 1866, "fg": [ 1698, 1700, 1699, 1697 ] }, - { "id": "t_connection", "bg": 1866, "fg": [ 1708, 1710, 1709, 1707 ] }, - { "id": "edge", "bg": 1866, "fg": [ 1702, 1701 ] }, - { "id": "end_piece", "bg": 1866, "fg": [ 1704, 1706, 1705, 1703 ] }, - { "bg": 1866, "id": "unconnected", "fg": 1711 } + { "id": "center", "bg": 2008, "fg": 1838 }, + { "id": "corner", "bg": 2008, "fg": [ 1840, 1842, 1841, 1839 ] }, + { "id": "t_connection", "bg": 2008, "fg": [ 1850, 1852, 1851, 1849 ] }, + { "id": "edge", "bg": 2008, "fg": [ 1844, 1843 ] }, + { "id": "end_piece", "bg": 2008, "fg": [ 1846, 1848, 1847, 1845 ] }, + { "bg": 2008, "id": "unconnected", "fg": 1853 } ] }, { "id": "t_fence_season_summer", "multitile": true, - "fg": 1711, - "bg": 1876, + "fg": 1853, + "bg": 2018, "additional_tiles": [ - { "id": "center", "bg": 1876, "fg": 1696 }, - { "id": "corner", "bg": 1876, "fg": [ 1698, 1700, 1699, 1697 ] }, - { "id": "t_connection", "bg": 1876, "fg": [ 1708, 1710, 1709, 1707 ] }, - { "id": "edge", "bg": 1876, "fg": [ 1702, 1701 ] }, - { "id": "end_piece", "bg": 1876, "fg": [ 1704, 1706, 1705, 1703 ] }, - { "bg": 1876, "id": "unconnected", "fg": 1711 } + { "id": "center", "bg": 2018, "fg": 1838 }, + { "id": "corner", "bg": 2018, "fg": [ 1840, 1842, 1841, 1839 ] }, + { "id": "t_connection", "bg": 2018, "fg": [ 1850, 1852, 1851, 1849 ] }, + { "id": "edge", "bg": 2018, "fg": [ 1844, 1843 ] }, + { "id": "end_piece", "bg": 2018, "fg": [ 1846, 1848, 1847, 1845 ] }, + { "bg": 2018, "id": "unconnected", "fg": 1853 } ] }, { "id": "t_fence_season_autumn", "multitile": true, - "fg": 1711, - "bg": 1871, + "fg": 1853, + "bg": 2013, "additional_tiles": [ - { "id": "center", "bg": 1871, "fg": 1696 }, - { "id": "corner", "bg": 1871, "fg": [ 1698, 1700, 1699, 1697 ] }, - { "id": "t_connection", "bg": 1871, "fg": [ 1708, 1710, 1709, 1707 ] }, - { "id": "edge", "bg": 1871, "fg": [ 1702, 1701 ] }, - { "id": "end_piece", "bg": 1871, "fg": [ 1704, 1706, 1705, 1703 ] }, - { "bg": 1871, "id": "unconnected", "fg": 1711 } + { "id": "center", "bg": 2013, "fg": 1838 }, + { "id": "corner", "bg": 2013, "fg": [ 1840, 1842, 1841, 1839 ] }, + { "id": "t_connection", "bg": 2013, "fg": [ 1850, 1852, 1851, 1849 ] }, + { "id": "edge", "bg": 2013, "fg": [ 1844, 1843 ] }, + { "id": "end_piece", "bg": 2013, "fg": [ 1846, 1848, 1847, 1845 ] }, + { "bg": 2013, "id": "unconnected", "fg": 1853 } ] }, { "id": "t_fence_season_winter", "multitile": true, - "fg": 1711, - "bg": 1362, - "additional_tiles": [ - { "id": "center", "bg": 1362, "fg": 1696 }, - { "id": "corner", "bg": 1362, "fg": [ 1698, 1700, 1699, 1697 ] }, - { "id": "t_connection", "bg": 1362, "fg": [ 1708, 1710, 1709, 1707 ] }, - { "id": "edge", "bg": 1362, "fg": [ 1702, 1701 ] }, - { "id": "end_piece", "bg": 1362, "fg": [ 1704, 1706, 1705, 1703 ] }, - { "bg": 1362, "id": "unconnected", "fg": 1711 } - ] - }, - { "id": "t_fencegate_c_season_spring", "fg": 1712, "bg": 1866 }, - { "id": "t_fencegate_c_season_summer", "fg": 1712, "bg": 1876 }, - { "id": "t_fencegate_c_season_autumn", "fg": 1712, "bg": 1871 }, - { "id": "t_fencegate_c_season_winter", "fg": 1712, "bg": 1362 }, - { "id": "t_fencegate_o_season_spring", "fg": 1713, "bg": 1866 }, - { "id": "t_fencegate_o_season_summer", "fg": 1713, "bg": 1876 }, - { "id": "t_fencegate_o_season_autumn", "fg": 1713, "bg": 1871 }, - { "id": "t_fencegate_o_season_winter", "fg": 1713, "bg": 1362 }, - { "id": "t_fence_post_season_spring", "fg": 1711, "bg": 1866 }, - { "id": "t_fence_post_season_summer", "fg": 1711, "bg": 1876 }, - { "id": "t_fence_post_season_autumn", "fg": 1711, "bg": 1871 }, - { "id": "t_fence_post_season_winter", "fg": 1711, "bg": 1362 }, + "fg": 1853, + "bg": 1504, + "additional_tiles": [ + { "id": "center", "bg": 1504, "fg": 1838 }, + { "id": "corner", "bg": 1504, "fg": [ 1840, 1842, 1841, 1839 ] }, + { "id": "t_connection", "bg": 1504, "fg": [ 1850, 1852, 1851, 1849 ] }, + { "id": "edge", "bg": 1504, "fg": [ 1844, 1843 ] }, + { "id": "end_piece", "bg": 1504, "fg": [ 1846, 1848, 1847, 1845 ] }, + { "bg": 1504, "id": "unconnected", "fg": 1853 } + ] + }, + { "id": "t_fencegate_c_season_spring", "fg": 1854, "bg": 2008 }, + { "id": "t_fencegate_c_season_summer", "fg": 1854, "bg": 2018 }, + { "id": "t_fencegate_c_season_autumn", "fg": 1854, "bg": 2013 }, + { "id": "t_fencegate_c_season_winter", "fg": 1854, "bg": 1504 }, + { "id": "t_fencegate_o_season_spring", "fg": 1855, "bg": 2008 }, + { "id": "t_fencegate_o_season_summer", "fg": 1855, "bg": 2018 }, + { "id": "t_fencegate_o_season_autumn", "fg": 1855, "bg": 2013 }, + { "id": "t_fencegate_o_season_winter", "fg": 1855, "bg": 1504 }, + { "id": "t_fence_post_season_spring", "fg": 1853, "bg": 2008 }, + { "id": "t_fence_post_season_summer", "fg": 1853, "bg": 2018 }, + { "id": "t_fence_post_season_autumn", "fg": 1853, "bg": 2013 }, + { "id": "t_fence_post_season_winter", "fg": 1853, "bg": 1504 }, { "id": "t_fence_barbed_season_spring", "multitile": true, - "fg": 1729, - "bg": 1866, + "fg": 1871, + "bg": 2008, "additional_tiles": [ - { "id": "center", "bg": 1866, "fg": 1714 }, - { "id": "corner", "bg": 1866, "fg": [ 1716, 1718, 1717, 1715 ] }, - { "id": "t_connection", "bg": 1866, "fg": [ 1726, 1728, 1727, 1725 ] }, - { "id": "edge", "bg": 1866, "fg": [ 1720, 1719 ] }, - { "id": "end_piece", "bg": 1866, "fg": [ 1722, 1724, 1723, 1721 ] }, - { "bg": 1866, "id": "unconnected", "fg": 1729 } + { "id": "center", "bg": 2008, "fg": 1856 }, + { "id": "corner", "bg": 2008, "fg": [ 1858, 1860, 1859, 1857 ] }, + { "id": "t_connection", "bg": 2008, "fg": [ 1868, 1870, 1869, 1867 ] }, + { "id": "edge", "bg": 2008, "fg": [ 1862, 1861 ] }, + { "id": "end_piece", "bg": 2008, "fg": [ 1864, 1866, 1865, 1863 ] }, + { "bg": 2008, "id": "unconnected", "fg": 1871 } ] }, { "id": "t_fence_barbed_season_summer", "multitile": true, - "fg": 1729, - "bg": 1876, + "fg": 1871, + "bg": 2018, "additional_tiles": [ - { "id": "center", "bg": 1876, "fg": 1714 }, - { "id": "corner", "bg": 1876, "fg": [ 1716, 1718, 1717, 1715 ] }, - { "id": "t_connection", "bg": 1876, "fg": [ 1726, 1728, 1727, 1725 ] }, - { "id": "edge", "bg": 1876, "fg": [ 1720, 1719 ] }, - { "id": "end_piece", "bg": 1876, "fg": [ 1722, 1724, 1723, 1721 ] }, - { "bg": 1876, "id": "unconnected", "fg": 1729 } + { "id": "center", "bg": 2018, "fg": 1856 }, + { "id": "corner", "bg": 2018, "fg": [ 1858, 1860, 1859, 1857 ] }, + { "id": "t_connection", "bg": 2018, "fg": [ 1868, 1870, 1869, 1867 ] }, + { "id": "edge", "bg": 2018, "fg": [ 1862, 1861 ] }, + { "id": "end_piece", "bg": 2018, "fg": [ 1864, 1866, 1865, 1863 ] }, + { "bg": 2018, "id": "unconnected", "fg": 1871 } ] }, { "id": "t_fence_barbed_season_autumn", "multitile": true, - "fg": 1729, - "bg": 1871, + "fg": 1871, + "bg": 2013, "additional_tiles": [ - { "id": "center", "bg": 1871, "fg": 1714 }, - { "id": "corner", "bg": 1871, "fg": [ 1716, 1718, 1717, 1715 ] }, - { "id": "t_connection", "bg": 1871, "fg": [ 1726, 1728, 1727, 1725 ] }, - { "id": "edge", "bg": 1871, "fg": [ 1720, 1719 ] }, - { "id": "end_piece", "bg": 1871, "fg": [ 1722, 1724, 1723, 1721 ] }, - { "bg": 1871, "id": "unconnected", "fg": 1729 } + { "id": "center", "bg": 2013, "fg": 1856 }, + { "id": "corner", "bg": 2013, "fg": [ 1858, 1860, 1859, 1857 ] }, + { "id": "t_connection", "bg": 2013, "fg": [ 1868, 1870, 1869, 1867 ] }, + { "id": "edge", "bg": 2013, "fg": [ 1862, 1861 ] }, + { "id": "end_piece", "bg": 2013, "fg": [ 1864, 1866, 1865, 1863 ] }, + { "bg": 2013, "id": "unconnected", "fg": 1871 } ] }, { "id": "t_fence_barbed_season_winter", "multitile": true, - "fg": 1729, - "bg": 1362, + "fg": 1871, + "bg": 1504, "additional_tiles": [ - { "id": "center", "bg": 1362, "fg": 1714 }, - { "id": "corner", "bg": 1362, "fg": [ 1716, 1718, 1717, 1715 ] }, - { "id": "t_connection", "bg": 1362, "fg": [ 1726, 1728, 1727, 1725 ] }, - { "id": "edge", "bg": 1362, "fg": [ 1720, 1719 ] }, - { "id": "end_piece", "bg": 1362, "fg": [ 1722, 1724, 1723, 1721 ] }, - { "bg": 1362, "id": "unconnected", "fg": 1729 } + { "id": "center", "bg": 1504, "fg": 1856 }, + { "id": "corner", "bg": 1504, "fg": [ 1858, 1860, 1859, 1857 ] }, + { "id": "t_connection", "bg": 1504, "fg": [ 1868, 1870, 1869, 1867 ] }, + { "id": "edge", "bg": 1504, "fg": [ 1862, 1861 ] }, + { "id": "end_piece", "bg": 1504, "fg": [ 1864, 1866, 1865, 1863 ] }, + { "bg": 1504, "id": "unconnected", "fg": 1871 } ] }, { "id": "t_fence_rope_season_spring", - "fg": 1746, + "fg": 1888, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 1731, "bg": 1599 }, - { "id": "corner", "fg": [ 1733, 1735, 1734, 1732 ], "bg": [ 1604, 1606, 1605, 1603 ] }, - { "id": "t_connection", "fg": [ 1743, 1745, 1744, 1742 ], "bg": [ 1614, 1616, 1615, 1613 ] }, - { "id": "edge", "fg": [ 1737, 1736 ], "bg": [ 1608, 1607 ] }, - { "id": "end_piece", "fg": [ 1739, 1741, 1740, 1738 ], "bg": [ 1610, 1612, 1611, 1609 ] }, - { "id": "unconnected", "fg": [ 1746, 1746 ], "bg": [ 1617, 1617 ] } + { "id": "center", "fg": 1873, "bg": 1741 }, + { "id": "corner", "fg": [ 1875, 1877, 1876, 1874 ], "bg": [ 1746, 1748, 1747, 1745 ] }, + { "id": "t_connection", "fg": [ 1885, 1887, 1886, 1884 ], "bg": [ 1756, 1758, 1757, 1755 ] }, + { "id": "edge", "fg": [ 1879, 1878 ], "bg": [ 1750, 1749 ] }, + { "id": "end_piece", "fg": [ 1881, 1883, 1882, 1880 ], "bg": [ 1752, 1754, 1753, 1751 ] }, + { "id": "unconnected", "fg": [ 1888, 1888 ], "bg": [ 1759, 1759 ] } ] }, { "id": "t_fence_rope_season_summer", - "fg": 1746, + "fg": 1888, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 1731, "bg": 1637 }, - { "id": "corner", "fg": [ 1733, 1735, 1734, 1732 ], "bg": [ 1642, 1644, 1643, 1641 ] }, - { "id": "t_connection", "fg": [ 1743, 1745, 1744, 1742 ], "bg": [ 1652, 1654, 1653, 1651 ] }, - { "id": "edge", "fg": [ 1737, 1736 ], "bg": [ 1646, 1645 ] }, - { "id": "end_piece", "fg": [ 1739, 1741, 1740, 1738 ], "bg": [ 1648, 1650, 1649, 1647 ] }, - { "id": "unconnected", "fg": [ 1746, 1746 ], "bg": [ 1655, 1655 ] } + { "id": "center", "fg": 1873, "bg": 1779 }, + { "id": "corner", "fg": [ 1875, 1877, 1876, 1874 ], "bg": [ 1784, 1786, 1785, 1783 ] }, + { "id": "t_connection", "fg": [ 1885, 1887, 1886, 1884 ], "bg": [ 1794, 1796, 1795, 1793 ] }, + { "id": "edge", "fg": [ 1879, 1878 ], "bg": [ 1788, 1787 ] }, + { "id": "end_piece", "fg": [ 1881, 1883, 1882, 1880 ], "bg": [ 1790, 1792, 1791, 1789 ] }, + { "id": "unconnected", "fg": [ 1888, 1888 ], "bg": [ 1797, 1797 ] } ] }, { "id": "t_fence_rope_season_autumn", - "fg": 1746, + "fg": 1888, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 1731, "bg": 1618 }, - { "id": "corner", "fg": [ 1733, 1735, 1734, 1732 ], "bg": [ 1623, 1625, 1624, 1622 ] }, - { "id": "t_connection", "fg": [ 1743, 1745, 1744, 1742 ], "bg": [ 1633, 1635, 1634, 1632 ] }, - { "id": "edge", "fg": [ 1737, 1736 ], "bg": [ 1627, 1626 ] }, - { "id": "end_piece", "fg": [ 1739, 1741, 1740, 1738 ], "bg": [ 1629, 1631, 1630, 1628 ] }, - { "id": "unconnected", "fg": [ 1746, 1746 ], "bg": [ 1636, 1636 ] } + { "id": "center", "fg": 1873, "bg": 1760 }, + { "id": "corner", "fg": [ 1875, 1877, 1876, 1874 ], "bg": [ 1765, 1767, 1766, 1764 ] }, + { "id": "t_connection", "fg": [ 1885, 1887, 1886, 1884 ], "bg": [ 1775, 1777, 1776, 1774 ] }, + { "id": "edge", "fg": [ 1879, 1878 ], "bg": [ 1769, 1768 ] }, + { "id": "end_piece", "fg": [ 1881, 1883, 1882, 1880 ], "bg": [ 1771, 1773, 1772, 1770 ] }, + { "id": "unconnected", "fg": [ 1888, 1888 ], "bg": [ 1778, 1778 ] } ] }, { "id": "t_fence_rope_season_winter", - "fg": 1746, + "fg": 1888, "multitile": true, "additional_tiles": [ { "id": "center", - "fg": 1731, + "fg": 1873, "bg": [ - { "weight": 100, "sprite": 1656 }, - { "weight": 100, "sprite": 1657 }, - { "weight": 100, "sprite": 1658 }, - { "weight": 100, "sprite": 1659 } + { "weight": 100, "sprite": 1798 }, + { "weight": 100, "sprite": 1799 }, + { "weight": 100, "sprite": 1800 }, + { "weight": 100, "sprite": 1801 } ] }, { "id": "corner", - "fg": [ 1733, 1735, 1734, 1732 ], + "fg": [ 1875, 1877, 1876, 1874 ], "bg": [ - { "weight": 100, "sprite": 1656 }, - { "weight": 100, "sprite": 1657 }, - { "weight": 100, "sprite": 1658 }, - { "weight": 100, "sprite": 1659 } + { "weight": 100, "sprite": 1798 }, + { "weight": 100, "sprite": 1799 }, + { "weight": 100, "sprite": 1800 }, + { "weight": 100, "sprite": 1801 } ] }, { "id": "t_connection", - "fg": [ 1743, 1745, 1744, 1742 ], + "fg": [ 1885, 1887, 1886, 1884 ], "bg": [ - { "weight": 100, "sprite": 1656 }, - { "weight": 100, "sprite": 1657 }, - { "weight": 100, "sprite": 1658 }, - { "weight": 100, "sprite": 1659 } + { "weight": 100, "sprite": 1798 }, + { "weight": 100, "sprite": 1799 }, + { "weight": 100, "sprite": 1800 }, + { "weight": 100, "sprite": 1801 } ] }, { "id": "edge", - "fg": [ 1737, 1736 ], + "fg": [ 1879, 1878 ], "bg": [ - { "weight": 100, "sprite": 1656 }, - { "weight": 100, "sprite": 1657 }, - { "weight": 100, "sprite": 1658 }, - { "weight": 100, "sprite": 1659 } + { "weight": 100, "sprite": 1798 }, + { "weight": 100, "sprite": 1799 }, + { "weight": 100, "sprite": 1800 }, + { "weight": 100, "sprite": 1801 } ] }, { "id": "end_piece", - "fg": [ 1739, 1741, 1740, 1738 ], + "fg": [ 1881, 1883, 1882, 1880 ], "bg": [ - { "weight": 100, "sprite": 1656 }, - { "weight": 100, "sprite": 1657 }, - { "weight": 100, "sprite": 1658 }, - { "weight": 100, "sprite": 1659 } + { "weight": 100, "sprite": 1798 }, + { "weight": 100, "sprite": 1799 }, + { "weight": 100, "sprite": 1800 }, + { "weight": 100, "sprite": 1801 } ] }, { "id": "unconnected", - "fg": [ 1746, 1746 ], + "fg": [ 1888, 1888 ], "bg": [ - { "weight": 100, "sprite": 1656 }, - { "weight": 100, "sprite": 1657 }, - { "weight": 100, "sprite": 1658 }, - { "weight": 100, "sprite": 1659 } + { "weight": 100, "sprite": 1798 }, + { "weight": 100, "sprite": 1799 }, + { "weight": 100, "sprite": 1800 }, + { "weight": 100, "sprite": 1801 } ] } ] @@ -2304,2320 +2473,2342 @@ { "id": "t_fence_wire_season_spring", "multitile": true, - "fg": 1762, - "bg": 1866, + "fg": 1904, + "bg": 2008, "additional_tiles": [ - { "id": "center", "bg": 1866, "fg": 1747 }, - { "id": "corner", "bg": 1866, "fg": [ 1749, 1751, 1750, 1748 ] }, - { "id": "t_connection", "bg": 1866, "fg": [ 1759, 1761, 1760, 1758 ] }, - { "id": "edge", "bg": 1866, "fg": [ 1753, 1752 ] }, - { "id": "end_piece", "bg": 1866, "fg": [ 1755, 1757, 1756, 1754 ] }, - { "bg": 1866, "id": "unconnected", "fg": 1762 } + { "id": "center", "bg": 2008, "fg": 1889 }, + { "id": "corner", "bg": 2008, "fg": [ 1891, 1893, 1892, 1890 ] }, + { "id": "t_connection", "bg": 2008, "fg": [ 1901, 1903, 1902, 1900 ] }, + { "id": "edge", "bg": 2008, "fg": [ 1895, 1894 ] }, + { "id": "end_piece", "bg": 2008, "fg": [ 1897, 1899, 1898, 1896 ] }, + { "bg": 2008, "id": "unconnected", "fg": 1904 } ] }, { "id": "t_fence_wire_season_summer", "multitile": true, - "fg": 1762, - "bg": 1876, + "fg": 1904, + "bg": 2018, "additional_tiles": [ - { "id": "center", "bg": 1876, "fg": 1747 }, - { "id": "corner", "bg": 1876, "fg": [ 1749, 1751, 1750, 1748 ] }, - { "id": "t_connection", "bg": 1876, "fg": [ 1759, 1761, 1760, 1758 ] }, - { "id": "edge", "bg": 1876, "fg": [ 1753, 1752 ] }, - { "id": "end_piece", "bg": 1876, "fg": [ 1755, 1757, 1756, 1754 ] }, - { "bg": 1876, "id": "unconnected", "fg": 1762 } + { "id": "center", "bg": 2018, "fg": 1889 }, + { "id": "corner", "bg": 2018, "fg": [ 1891, 1893, 1892, 1890 ] }, + { "id": "t_connection", "bg": 2018, "fg": [ 1901, 1903, 1902, 1900 ] }, + { "id": "edge", "bg": 2018, "fg": [ 1895, 1894 ] }, + { "id": "end_piece", "bg": 2018, "fg": [ 1897, 1899, 1898, 1896 ] }, + { "bg": 2018, "id": "unconnected", "fg": 1904 } ] }, { "id": "t_fence_wire_season_autumn", "multitile": true, - "fg": 1762, - "bg": 1871, + "fg": 1904, + "bg": 2013, "additional_tiles": [ - { "id": "center", "bg": 1871, "fg": 1747 }, - { "id": "corner", "bg": 1871, "fg": [ 1749, 1751, 1750, 1748 ] }, - { "id": "t_connection", "bg": 1871, "fg": [ 1759, 1761, 1760, 1758 ] }, - { "id": "edge", "bg": 1871, "fg": [ 1753, 1752 ] }, - { "id": "end_piece", "bg": 1871, "fg": [ 1755, 1757, 1756, 1754 ] }, - { "bg": 1871, "id": "unconnected", "fg": 1762 } + { "id": "center", "bg": 2013, "fg": 1889 }, + { "id": "corner", "bg": 2013, "fg": [ 1891, 1893, 1892, 1890 ] }, + { "id": "t_connection", "bg": 2013, "fg": [ 1901, 1903, 1902, 1900 ] }, + { "id": "edge", "bg": 2013, "fg": [ 1895, 1894 ] }, + { "id": "end_piece", "bg": 2013, "fg": [ 1897, 1899, 1898, 1896 ] }, + { "bg": 2013, "id": "unconnected", "fg": 1904 } ] }, { "id": "t_fence_wire_season_winter", "multitile": true, - "fg": 1762, - "bg": 1362, + "fg": 1904, + "bg": 1504, "additional_tiles": [ - { "id": "center", "bg": 1362, "fg": 1747 }, - { "id": "corner", "bg": 1362, "fg": [ 1749, 1751, 1750, 1748 ] }, - { "id": "t_connection", "bg": 1362, "fg": [ 1759, 1761, 1760, 1758 ] }, - { "id": "edge", "bg": 1362, "fg": [ 1753, 1752 ] }, - { "id": "end_piece", "bg": 1362, "fg": [ 1755, 1757, 1756, 1754 ] }, - { "bg": 1362, "id": "unconnected", "fg": 1762 } + { "id": "center", "bg": 1504, "fg": 1889 }, + { "id": "corner", "bg": 1504, "fg": [ 1891, 1893, 1892, 1890 ] }, + { "id": "t_connection", "bg": 1504, "fg": [ 1901, 1903, 1902, 1900 ] }, + { "id": "edge", "bg": 1504, "fg": [ 1895, 1894 ] }, + { "id": "end_piece", "bg": 1504, "fg": [ 1897, 1899, 1898, 1896 ] }, + { "bg": 1504, "id": "unconnected", "fg": 1904 } ] }, { "id": "t_floor", "multitile": true, - "fg": 1780, + "fg": 1922, "additional_tiles": [ { "id": "center", - "fg": [ { "weight": 1, "sprite": 1763 }, { "weight": 1, "sprite": 1764 }, { "weight": 1, "sprite": 1765 } ] + "fg": [ { "weight": 1, "sprite": 1905 }, { "weight": 1, "sprite": 1906 }, { "weight": 1, "sprite": 1907 } ] }, - { "id": "corner", "fg": [ 1767, 1769, 1768, 1766 ] }, - { "id": "t_connection", "fg": [ 1777, 1779, 1778, 1776 ] }, - { "id": "edge", "fg": [ 1771, 1770 ] }, - { "id": "end_piece", "fg": [ 1773, 1775, 1774, 1772 ] }, - { "id": "unconnected", "fg": 1780 } + { "id": "corner", "fg": [ 1909, 1911, 1910, 1908 ] }, + { "id": "t_connection", "fg": [ 1919, 1921, 1920, 1918 ] }, + { "id": "edge", "fg": [ 1913, 1912 ] }, + { "id": "end_piece", "fg": [ 1915, 1917, 1916, 1914 ] }, + { "id": "unconnected", "fg": 1922 } ] }, { "id": "t_floor_resin", "multitile": true, - "fg": 1796, + "fg": 1938, "additional_tiles": [ - { "id": "center", "fg": 1781 }, - { "id": "corner", "fg": [ 1783, 1785, 1784, 1782 ] }, - { "id": "t_connection", "fg": [ 1793, 1795, 1794, 1792 ] }, - { "id": "edge", "fg": [ 1787, 1786 ] }, - { "id": "end_piece", "fg": [ 1789, 1791, 1790, 1788 ] }, - { "id": "unconnected", "fg": 1796 } + { "id": "center", "fg": 1923 }, + { "id": "corner", "fg": [ 1925, 1927, 1926, 1924 ] }, + { "id": "t_connection", "fg": [ 1935, 1937, 1936, 1934 ] }, + { "id": "edge", "fg": [ 1929, 1928 ] }, + { "id": "end_piece", "fg": [ 1931, 1933, 1932, 1930 ] }, + { "id": "unconnected", "fg": 1938 } ] }, { "id": "t_floor_wax", "multitile": true, - "fg": 1812, + "fg": 1954, "additional_tiles": [ - { "id": "center", "fg": 1797 }, - { "id": "corner", "fg": [ 1799, 1801, 1800, 1798 ] }, - { "id": "t_connection", "fg": [ 1809, 1811, 1810, 1808 ] }, - { "id": "edge", "fg": [ 1803, 1802 ] }, - { "id": "end_piece", "fg": [ 1805, 1807, 1806, 1804 ] }, - { "id": "unconnected", "fg": 1812 } + { "id": "center", "fg": 1939 }, + { "id": "corner", "fg": [ 1941, 1943, 1942, 1940 ] }, + { "id": "t_connection", "fg": [ 1951, 1953, 1952, 1950 ] }, + { "id": "edge", "fg": [ 1945, 1944 ] }, + { "id": "end_piece", "fg": [ 1947, 1949, 1948, 1946 ] }, + { "id": "unconnected", "fg": 1954 } ] }, { "id": "t_floor_waxed", "multitile": true, - "fg": 1828, + "fg": 1970, "additional_tiles": [ - { "id": "center", "fg": 1813 }, - { "id": "corner", "fg": [ 1815, 1817, 1816, 1814 ] }, - { "id": "t_connection", "fg": [ 1825, 1827, 1826, 1824 ] }, - { "id": "edge", "fg": [ 1819, 1818 ] }, - { "id": "end_piece", "fg": [ 1821, 1823, 1822, 1820 ] }, - { "id": "unconnected", "fg": 1828 } + { "id": "center", "fg": 1955 }, + { "id": "corner", "fg": [ 1957, 1959, 1958, 1956 ] }, + { "id": "t_connection", "fg": [ 1967, 1969, 1968, 1966 ] }, + { "id": "edge", "fg": [ 1961, 1960 ] }, + { "id": "end_piece", "fg": [ 1963, 1965, 1964, 1962 ] }, + { "id": "unconnected", "fg": 1970 } ] }, { "id": "t_floor_waxed_y", "multitile": true, - "fg": 1844, + "fg": 1986, "additional_tiles": [ - { "id": "center", "fg": 1829 }, - { "id": "corner", "fg": [ 1831, 1833, 1832, 1830 ] }, - { "id": "t_connection", "fg": [ 1841, 1843, 1842, 1840 ] }, - { "id": "edge", "fg": [ 1835, 1834 ] }, - { "id": "end_piece", "fg": [ 1837, 1839, 1838, 1836 ] }, - { "id": "unconnected", "fg": 1844 } + { "id": "center", "fg": 1971 }, + { "id": "corner", "fg": [ 1973, 1975, 1974, 1972 ] }, + { "id": "t_connection", "fg": [ 1983, 1985, 1984, 1982 ] }, + { "id": "edge", "fg": [ 1977, 1976 ] }, + { "id": "end_piece", "fg": [ 1979, 1981, 1980, 1978 ] }, + { "id": "unconnected", "fg": 1986 } ] }, { "id": [ "t_fungus", "t_fungus_floor_out" ], "multitile": true, - "fg": 1860, - "bg": 1866, + "fg": 2002, + "bg": 2008, "additional_tiles": [ - { "id": "center", "bg": 1866, "fg": 1845 }, - { "id": "corner", "bg": 1866, "fg": [ 1847, 1849, 1848, 1846 ] }, - { "id": "t_connection", "bg": 1866, "fg": [ 1857, 1859, 1858, 1856 ] }, - { "id": "edge", "bg": 1866, "fg": [ 1851, 1850 ] }, - { "id": "end_piece", "bg": 1866, "fg": [ 1853, 1855, 1854, 1852 ] }, - { "bg": 1866, "id": "unconnected", "fg": 1860 } + { "id": "center", "bg": 2008, "fg": 1987 }, + { "id": "corner", "bg": 2008, "fg": [ 1989, 1991, 1990, 1988 ] }, + { "id": "t_connection", "bg": 2008, "fg": [ 1999, 2001, 2000, 1998 ] }, + { "id": "edge", "bg": 2008, "fg": [ 1993, 1992 ] }, + { "id": "end_piece", "bg": 2008, "fg": [ 1995, 1997, 1996, 1994 ] }, + { "bg": 2008, "id": "unconnected", "fg": 2002 } ] }, { "id": "t_fungus_season_summer", "multitile": true, - "fg": 1860, - "bg": 1876, + "fg": 2002, + "bg": 2018, "additional_tiles": [ - { "id": "center", "bg": 1876, "fg": 1845 }, - { "id": "corner", "bg": 1876, "fg": [ 1847, 1849, 1848, 1846 ] }, - { "id": "t_connection", "bg": 1876, "fg": [ 1857, 1859, 1858, 1856 ] }, - { "id": "edge", "bg": 1876, "fg": [ 1851, 1850 ] }, - { "id": "end_piece", "bg": 1876, "fg": [ 1853, 1855, 1854, 1852 ] }, - { "bg": 1876, "id": "unconnected", "fg": 1860 } + { "id": "center", "bg": 2018, "fg": 1987 }, + { "id": "corner", "bg": 2018, "fg": [ 1989, 1991, 1990, 1988 ] }, + { "id": "t_connection", "bg": 2018, "fg": [ 1999, 2001, 2000, 1998 ] }, + { "id": "edge", "bg": 2018, "fg": [ 1993, 1992 ] }, + { "id": "end_piece", "bg": 2018, "fg": [ 1995, 1997, 1996, 1994 ] }, + { "bg": 2018, "id": "unconnected", "fg": 2002 } ] }, { "id": "t_fungus_season_autumn", "multitile": true, - "fg": 1860, - "bg": 1871, + "fg": 2002, + "bg": 2013, "additional_tiles": [ - { "id": "center", "bg": 1871, "fg": 1845 }, - { "id": "corner", "bg": 1871, "fg": [ 1847, 1849, 1848, 1846 ] }, - { "id": "t_connection", "bg": 1871, "fg": [ 1857, 1859, 1858, 1856 ] }, - { "id": "edge", "bg": 1871, "fg": [ 1851, 1850 ] }, - { "id": "end_piece", "bg": 1871, "fg": [ 1853, 1855, 1854, 1852 ] }, - { "bg": 1871, "id": "unconnected", "fg": 1860 } + { "id": "center", "bg": 2013, "fg": 1987 }, + { "id": "corner", "bg": 2013, "fg": [ 1989, 1991, 1990, 1988 ] }, + { "id": "t_connection", "bg": 2013, "fg": [ 1999, 2001, 2000, 1998 ] }, + { "id": "edge", "bg": 2013, "fg": [ 1993, 1992 ] }, + { "id": "end_piece", "bg": 2013, "fg": [ 1995, 1997, 1996, 1994 ] }, + { "bg": 2013, "id": "unconnected", "fg": 2002 } ] }, { "id": "t_fungus_season_winter", "multitile": true, - "fg": 1860, - "bg": 1362, + "fg": 2002, + "bg": 1504, "additional_tiles": [ - { "id": "center", "bg": 1362, "fg": 1845 }, - { "id": "corner", "bg": 1362, "fg": [ 1847, 1849, 1848, 1846 ] }, - { "id": "t_connection", "bg": 1362, "fg": [ 1857, 1859, 1858, 1856 ] }, - { "id": "edge", "bg": 1362, "fg": [ 1851, 1850 ] }, - { "id": "end_piece", "bg": 1362, "fg": [ 1853, 1855, 1854, 1852 ] }, - { "bg": 1362, "id": "unconnected", "fg": 1860 } + { "id": "center", "bg": 1504, "fg": 1987 }, + { "id": "corner", "bg": 1504, "fg": [ 1989, 1991, 1990, 1988 ] }, + { "id": "t_connection", "bg": 1504, "fg": [ 1999, 2001, 2000, 1998 ] }, + { "id": "edge", "bg": 1504, "fg": [ 1993, 1992 ] }, + { "id": "end_piece", "bg": 1504, "fg": [ 1995, 1997, 1996, 1994 ] }, + { "bg": 1504, "id": "unconnected", "fg": 2002 } ] }, { "id": [ "t_fungus_floor_in", "t_fungus_floor_sup" ], "multitile": true, - "fg": 1860, - "bg": 2514, + "fg": 2002, + "bg": 2656, "additional_tiles": [ - { "id": "center", "bg": 2514, "fg": 1845 }, - { "id": "corner", "bg": 2514, "fg": [ 1847, 1849, 1848, 1846 ] }, - { "id": "t_connection", "bg": 2514, "fg": [ 1857, 1859, 1858, 1856 ] }, - { "id": "edge", "bg": 2514, "fg": [ 1851, 1850 ] }, - { "id": "end_piece", "bg": 2514, "fg": [ 1853, 1855, 1854, 1852 ] }, - { "bg": 2514, "id": "unconnected", "fg": [ 1860, 1860 ] } + { "id": "center", "bg": 2656, "fg": 1987 }, + { "id": "corner", "bg": 2656, "fg": [ 1989, 1991, 1990, 1988 ] }, + { "id": "t_connection", "bg": 2656, "fg": [ 1999, 2001, 2000, 1998 ] }, + { "id": "edge", "bg": 2656, "fg": [ 1993, 1992 ] }, + { "id": "end_piece", "bg": 2656, "fg": [ 1995, 1997, 1996, 1994 ] }, + { "bg": 2656, "id": "unconnected", "fg": [ 2002, 2002 ] } ] }, - { "id": "t_gates_mech_control", "fg": 1861, "bg": 2514 }, - { "id": "t_gates_mech_control_lab", "fg": 1862, "bg": 2514 }, - { "id": "t_gates_control_concrete", "fg": 1863, "bg": 1565 }, - { "id": "t_gates_control_concrete_lab", "fg": 1862, "bg": 4896 }, - { "id": "t_gates_control_brick", "fg": 1863, "bg": 1431 }, - { "id": "t_gates_control_brick_lab", "fg": 1862, "bg": 1431 }, - { "id": "t_gates_control_metal", "fg": 1863, "bg": 4900 }, - { "id": "t_gates_control_metal_lab", "fg": 1862, "bg": 4900 }, - { "id": "t_elevator_control", "fg": 1864, "bg": 2514 }, - { "id": "t_elevator_control_off", "fg": 1865, "bg": 2514 }, + { "id": "t_gates_mech_control", "fg": 2003, "bg": 2656 }, + { "id": "t_gates_mech_control_lab", "fg": 2004, "bg": 2656 }, + { "id": "t_gates_control_concrete", "fg": 2005, "bg": 1707 }, + { "id": "t_gates_control_concrete_lab", "fg": 2004, "bg": 5053 }, + { "id": "t_gates_control_brick", "fg": 2005, "bg": 1573 }, + { "id": "t_gates_control_brick_lab", "fg": 2004, "bg": 1573 }, + { "id": "t_gates_control_metal", "fg": 2005, "bg": 5057 }, + { "id": "t_gates_control_metal_lab", "fg": 2004, "bg": 5057 }, + { "id": "t_elevator_control", "fg": 2006, "bg": 2656 }, + { "id": "t_elevator_control_off", "fg": 2007, "bg": 2656 }, { "id": "t_grass", "fg": [ - { "weight": 1, "sprite": 1867 }, - { "weight": 1, "sprite": 1868 }, - { "weight": 1, "sprite": 1869 }, - { "weight": 1, "sprite": 1870 } + { "weight": 1, "sprite": 2009 }, + { "weight": 1, "sprite": 2010 }, + { "weight": 1, "sprite": 2011 }, + { "weight": 1, "sprite": 2012 } ] }, { "id": "t_grass_season_summer", "fg": [ - { "weight": 1, "sprite": 1877 }, - { "weight": 1, "sprite": 1878 }, - { "weight": 1, "sprite": 1879 }, - { "weight": 1, "sprite": 1880 } + { "weight": 1, "sprite": 2019 }, + { "weight": 1, "sprite": 2020 }, + { "weight": 1, "sprite": 2021 }, + { "weight": 1, "sprite": 2022 } ] }, { "id": "t_grass_season_autumn", "fg": [ - { "weight": 1, "sprite": 1872 }, - { "weight": 1, "sprite": 1873 }, - { "weight": 1, "sprite": 1874 }, - { "weight": 1, "sprite": 1875 } + { "weight": 1, "sprite": 2014 }, + { "weight": 1, "sprite": 2015 }, + { "weight": 1, "sprite": 2016 }, + { "weight": 1, "sprite": 2017 } ] }, { "id": "t_grass_season_winter", - "fg": 1380, - "bg": 1362, + "fg": 1522, + "bg": 1504, "multitile": true, "additional_tiles": [ { "id": "center", "fg": [ - { "weight": 1, "sprite": 1362 }, - { "weight": 1, "sprite": 1363 }, - { "weight": 1, "sprite": 1364 }, - { "weight": 1, "sprite": 1365 } + { "weight": 1, "sprite": 1504 }, + { "weight": 1, "sprite": 1505 }, + { "weight": 1, "sprite": 1506 }, + { "weight": 1, "sprite": 1507 } ] }, - { "id": "corner", "bg": 1362, "fg": [ 1367, 1369, 1368, 1366 ] }, - { "id": "t_connection", "bg": 1362, "fg": [ 1377, 1379, 1378, 1376 ] }, - { "id": "edge", "bg": 1362, "fg": [ 1371, 1370 ] }, - { "id": "end_piece", "bg": 1362, "fg": [ 1373, 1375, 1374, 1372 ] }, - { "bg": 1362, "id": "unconnected", "fg": 1380 } + { "id": "corner", "bg": 1504, "fg": [ 1509, 1511, 1510, 1508 ] }, + { "id": "t_connection", "bg": 1504, "fg": [ 1519, 1521, 1520, 1518 ] }, + { "id": "edge", "bg": 1504, "fg": [ 1513, 1512 ] }, + { "id": "end_piece", "bg": 1504, "fg": [ 1515, 1517, 1516, 1514 ] }, + { "bg": 1504, "id": "unconnected", "fg": 1522 } ] }, { "id": "t_grass_dead", "multitile": true, - "fg": 1896, - "bg": 1866, + "fg": 2038, + "bg": 2008, "additional_tiles": [ - { "id": "center", "bg": 1866, "fg": 1881 }, - { "id": "corner", "bg": 1866, "fg": [ 1883, 1885, 1884, 1882 ] }, - { "id": "t_connection", "bg": 1866, "fg": [ 1893, 1895, 1894, 1892 ] }, - { "id": "edge", "bg": 1866, "fg": [ 1887, 1886 ] }, - { "id": "end_piece", "bg": 1866, "fg": [ 1889, 1891, 1890, 1888 ] }, - { "bg": 1866, "id": "unconnected", "fg": 1896 } + { "id": "center", "bg": 2008, "fg": 2023 }, + { "id": "corner", "bg": 2008, "fg": [ 2025, 2027, 2026, 2024 ] }, + { "id": "t_connection", "bg": 2008, "fg": [ 2035, 2037, 2036, 2034 ] }, + { "id": "edge", "bg": 2008, "fg": [ 2029, 2028 ] }, + { "id": "end_piece", "bg": 2008, "fg": [ 2031, 2033, 2032, 2030 ] }, + { "bg": 2008, "id": "unconnected", "fg": 2038 } ] }, { "id": "t_grass_dead_season_summer", "multitile": true, - "fg": 1928, - "bg": 1876, + "fg": 2070, + "bg": 2018, "additional_tiles": [ - { "id": "center", "bg": 1876, "fg": 1913 }, - { "id": "corner", "bg": 1876, "fg": [ 1915, 1917, 1916, 1914 ] }, - { "id": "t_connection", "bg": 1876, "fg": [ 1925, 1927, 1926, 1924 ] }, - { "id": "edge", "bg": 1876, "fg": [ 1919, 1918 ] }, - { "id": "end_piece", "bg": 1876, "fg": [ 1921, 1923, 1922, 1920 ] }, - { "bg": 1876, "id": "unconnected", "fg": 1928 } + { "id": "center", "bg": 2018, "fg": 2055 }, + { "id": "corner", "bg": 2018, "fg": [ 2057, 2059, 2058, 2056 ] }, + { "id": "t_connection", "bg": 2018, "fg": [ 2067, 2069, 2068, 2066 ] }, + { "id": "edge", "bg": 2018, "fg": [ 2061, 2060 ] }, + { "id": "end_piece", "bg": 2018, "fg": [ 2063, 2065, 2064, 2062 ] }, + { "bg": 2018, "id": "unconnected", "fg": 2070 } ] }, { "id": "t_grass_dead_season_autumn", "multitile": true, - "fg": 1912, - "bg": 1871, + "fg": 2054, + "bg": 2013, "additional_tiles": [ - { "id": "center", "bg": 1871, "fg": 1897 }, - { "id": "corner", "bg": 1871, "fg": [ 1899, 1901, 1900, 1898 ] }, - { "id": "t_connection", "bg": 1871, "fg": [ 1909, 1911, 1910, 1908 ] }, - { "id": "edge", "bg": 1871, "fg": [ 1903, 1902 ] }, - { "id": "end_piece", "bg": 1871, "fg": [ 1905, 1907, 1906, 1904 ] }, - { "bg": 1871, "id": "unconnected", "fg": 1912 } + { "id": "center", "bg": 2013, "fg": 2039 }, + { "id": "corner", "bg": 2013, "fg": [ 2041, 2043, 2042, 2040 ] }, + { "id": "t_connection", "bg": 2013, "fg": [ 2051, 2053, 2052, 2050 ] }, + { "id": "edge", "bg": 2013, "fg": [ 2045, 2044 ] }, + { "id": "end_piece", "bg": 2013, "fg": [ 2047, 2049, 2048, 2046 ] }, + { "bg": 2013, "id": "unconnected", "fg": 2054 } ] }, { "id": "t_grass_dead_season_winter", "multitile": true, - "fg": 1380, - "bg": 1362, + "fg": 1522, + "bg": 1504, "additional_tiles": [ { "id": "center", - "bg": 1362, + "bg": 1504, "fg": [ - { "weight": 1, "sprite": 1362 }, - { "weight": 1, "sprite": 1363 }, - { "weight": 1, "sprite": 1364 }, - { "weight": 1, "sprite": 1365 } + { "weight": 1, "sprite": 1504 }, + { "weight": 1, "sprite": 1505 }, + { "weight": 1, "sprite": 1506 }, + { "weight": 1, "sprite": 1507 } ] }, - { "id": "corner", "bg": 1362, "fg": [ 1367, 1369, 1368, 1366 ] }, - { "id": "t_connection", "bg": 1362, "fg": [ 1377, 1379, 1378, 1376 ] }, - { "id": "edge", "bg": 1362, "fg": [ 1371, 1370 ] }, - { "id": "end_piece", "bg": 1362, "fg": [ 1373, 1375, 1374, 1372 ] }, - { "bg": 1362, "id": "unconnected", "fg": 1380 } + { "id": "corner", "bg": 1504, "fg": [ 1509, 1511, 1510, 1508 ] }, + { "id": "t_connection", "bg": 1504, "fg": [ 1519, 1521, 1520, 1518 ] }, + { "id": "edge", "bg": 1504, "fg": [ 1513, 1512 ] }, + { "id": "end_piece", "bg": 1504, "fg": [ 1515, 1517, 1516, 1514 ] }, + { "bg": 1504, "id": "unconnected", "fg": 1522 } ] }, { "id": "f_grass_long", "multitile": true, - "fg": 1944, + "fg": 2086, "additional_tiles": [ - { "id": "center", "fg": 1929 }, - { "id": "corner", "fg": [ 1931, 1933, 1932, 1930 ] }, - { "id": "t_connection", "fg": [ 1941, 1943, 1942, 1940 ] }, - { "id": "edge", "fg": [ 1935, 1934 ] }, - { "id": "end_piece", "fg": [ 1937, 1939, 1938, 1936 ] }, - { "id": "unconnected", "fg": 1944 } + { "id": "center", "fg": 2071 }, + { "id": "corner", "fg": [ 2073, 2075, 2074, 2072 ] }, + { "id": "t_connection", "fg": [ 2083, 2085, 2084, 2082 ] }, + { "id": "edge", "fg": [ 2077, 2076 ] }, + { "id": "end_piece", "fg": [ 2079, 2081, 2080, 2078 ] }, + { "id": "unconnected", "fg": 2086 } ] }, { "id": "f_grass_long_season_autumn", "multitile": true, - "fg": 1960, + "fg": 2102, "additional_tiles": [ - { "id": "center", "fg": 1945 }, - { "id": "corner", "fg": [ 1947, 1949, 1948, 1946 ] }, - { "id": "t_connection", "fg": [ 1957, 1959, 1958, 1956 ] }, - { "id": "edge", "fg": [ 1951, 1950 ] }, - { "id": "end_piece", "fg": [ 1953, 1955, 1954, 1952 ] }, - { "id": "unconnected", "fg": 1960 } + { "id": "center", "fg": 2087 }, + { "id": "corner", "fg": [ 2089, 2091, 2090, 2088 ] }, + { "id": "t_connection", "fg": [ 2099, 2101, 2100, 2098 ] }, + { "id": "edge", "fg": [ 2093, 2092 ] }, + { "id": "end_piece", "fg": [ 2095, 2097, 2096, 2094 ] }, + { "id": "unconnected", "fg": 2102 } ] }, { "id": "f_grass_long_season_summer", "multitile": true, - "fg": 1976, + "fg": 2118, "additional_tiles": [ - { "id": "center", "fg": 1961 }, - { "id": "corner", "fg": [ 1963, 1965, 1964, 1962 ] }, - { "id": "t_connection", "fg": [ 1973, 1975, 1974, 1972 ] }, - { "id": "edge", "fg": [ 1967, 1966 ] }, - { "id": "end_piece", "fg": [ 1969, 1971, 1970, 1968 ] }, - { "id": "unconnected", "fg": 1976 } + { "id": "center", "fg": 2103 }, + { "id": "corner", "fg": [ 2105, 2107, 2106, 2104 ] }, + { "id": "t_connection", "fg": [ 2115, 2117, 2116, 2114 ] }, + { "id": "edge", "fg": [ 2109, 2108 ] }, + { "id": "end_piece", "fg": [ 2111, 2113, 2112, 2110 ] }, + { "id": "unconnected", "fg": 2118 } ] }, { "id": "t_grass_long", "multitile": true, - "fg": 1944, - "bg": 1866, + "fg": 2086, + "bg": 2008, "additional_tiles": [ - { "id": "center", "bg": 1866, "fg": 1929 }, - { "id": "corner", "bg": 1866, "fg": [ 1931, 1933, 1932, 1930 ] }, - { "id": "t_connection", "bg": 1866, "fg": [ 1941, 1943, 1942, 1940 ] }, - { "id": "edge", "bg": 1866, "fg": [ 1935, 1934 ] }, - { "id": "end_piece", "bg": 1866, "fg": [ 1937, 1939, 1938, 1936 ] }, - { "bg": 1866, "id": "unconnected", "fg": 1944 } + { "id": "center", "bg": 2008, "fg": 2071 }, + { "id": "corner", "bg": 2008, "fg": [ 2073, 2075, 2074, 2072 ] }, + { "id": "t_connection", "bg": 2008, "fg": [ 2083, 2085, 2084, 2082 ] }, + { "id": "edge", "bg": 2008, "fg": [ 2077, 2076 ] }, + { "id": "end_piece", "bg": 2008, "fg": [ 2079, 2081, 2080, 2078 ] }, + { "bg": 2008, "id": "unconnected", "fg": 2086 } ] }, { "id": "t_grass_long_season_autumn", "multitile": true, - "fg": 1960, - "bg": 1871, + "fg": 2102, + "bg": 2013, "additional_tiles": [ - { "id": "center", "bg": 1871, "fg": 1945 }, - { "id": "corner", "bg": 1871, "fg": [ 1947, 1949, 1948, 1946 ] }, - { "id": "t_connection", "bg": 1871, "fg": [ 1957, 1959, 1958, 1956 ] }, - { "id": "edge", "bg": 1871, "fg": [ 1951, 1950 ] }, - { "id": "end_piece", "bg": 1871, "fg": [ 1953, 1955, 1954, 1952 ] }, - { "bg": 1871, "id": "unconnected", "fg": 1960 } + { "id": "center", "bg": 2013, "fg": 2087 }, + { "id": "corner", "bg": 2013, "fg": [ 2089, 2091, 2090, 2088 ] }, + { "id": "t_connection", "bg": 2013, "fg": [ 2099, 2101, 2100, 2098 ] }, + { "id": "edge", "bg": 2013, "fg": [ 2093, 2092 ] }, + { "id": "end_piece", "bg": 2013, "fg": [ 2095, 2097, 2096, 2094 ] }, + { "bg": 2013, "id": "unconnected", "fg": 2102 } ] }, { "id": "t_grass_long_season_summer", "multitile": true, - "fg": 1976, - "bg": 1876, + "fg": 2118, + "bg": 2018, "additional_tiles": [ - { "id": "center", "bg": 1876, "fg": 1961 }, - { "id": "corner", "bg": 1876, "fg": [ 1963, 1965, 1964, 1962 ] }, - { "id": "t_connection", "bg": 1876, "fg": [ 1973, 1975, 1974, 1972 ] }, - { "id": "edge", "bg": 1876, "fg": [ 1967, 1966 ] }, - { "id": "end_piece", "bg": 1876, "fg": [ 1969, 1971, 1970, 1968 ] }, - { "bg": 1876, "id": "unconnected", "fg": 1976 } + { "id": "center", "bg": 2018, "fg": 2103 }, + { "id": "corner", "bg": 2018, "fg": [ 2105, 2107, 2106, 2104 ] }, + { "id": "t_connection", "bg": 2018, "fg": [ 2115, 2117, 2116, 2114 ] }, + { "id": "edge", "bg": 2018, "fg": [ 2109, 2108 ] }, + { "id": "end_piece", "bg": 2018, "fg": [ 2111, 2113, 2112, 2110 ] }, + { "bg": 2018, "id": "unconnected", "fg": 2118 } ] }, - { "id": "t_grass_long_season_winter", "fg": 1361 }, + { "id": "t_grass_long_season_winter", "fg": 1503 }, { "id": "f_grass_tall", "multitile": true, - "fg": 1992, + "fg": 2134, "additional_tiles": [ - { "id": "center", "fg": 1977 }, - { "id": "corner", "fg": [ 1979, 1981, 1980, 1978 ] }, - { "id": "t_connection", "fg": [ 1989, 1991, 1990, 1988 ] }, - { "id": "edge", "fg": [ 1983, 1982 ] }, - { "id": "end_piece", "fg": [ 1985, 1987, 1986, 1984 ] }, - { "id": "unconnected", "fg": 1992 } + { "id": "center", "fg": 2119 }, + { "id": "corner", "fg": [ 2121, 2123, 2122, 2120 ] }, + { "id": "t_connection", "fg": [ 2131, 2133, 2132, 2130 ] }, + { "id": "edge", "fg": [ 2125, 2124 ] }, + { "id": "end_piece", "fg": [ 2127, 2129, 2128, 2126 ] }, + { "id": "unconnected", "fg": 2134 } ] }, { "id": "f_grass_tall_season_summer", "multitile": true, - "fg": 2024, + "fg": 2166, "additional_tiles": [ - { "id": "center", "fg": 2009 }, - { "id": "corner", "fg": [ 2011, 2013, 2012, 2010 ] }, - { "id": "t_connection", "fg": [ 2021, 2023, 2022, 2020 ] }, - { "id": "edge", "fg": [ 2015, 2014 ] }, - { "id": "end_piece", "fg": [ 2017, 2019, 2018, 2016 ] }, - { "id": "unconnected", "fg": 2024 } + { "id": "center", "fg": 2151 }, + { "id": "corner", "fg": [ 2153, 2155, 2154, 2152 ] }, + { "id": "t_connection", "fg": [ 2163, 2165, 2164, 2162 ] }, + { "id": "edge", "fg": [ 2157, 2156 ] }, + { "id": "end_piece", "fg": [ 2159, 2161, 2160, 2158 ] }, + { "id": "unconnected", "fg": 2166 } ] }, { "id": "f_grass_tall_season_autumn", "multitile": true, - "fg": 2008, + "fg": 2150, "additional_tiles": [ - { "id": "center", "fg": 1993 }, - { "id": "corner", "fg": [ 1995, 1997, 1996, 1994 ] }, - { "id": "t_connection", "fg": [ 2005, 2007, 2006, 2004 ] }, - { "id": "edge", "fg": [ 1999, 1998 ] }, - { "id": "end_piece", "fg": [ 2001, 2003, 2002, 2000 ] }, - { "id": "unconnected", "fg": 2008 } + { "id": "center", "fg": 2135 }, + { "id": "corner", "fg": [ 2137, 2139, 2138, 2136 ] }, + { "id": "t_connection", "fg": [ 2147, 2149, 2148, 2146 ] }, + { "id": "edge", "fg": [ 2141, 2140 ] }, + { "id": "end_piece", "fg": [ 2143, 2145, 2144, 2142 ] }, + { "id": "unconnected", "fg": 2150 } ] }, { "id": "t_grass_tall", "multitile": true, - "fg": 1992, - "bg": 1866, + "fg": 2134, + "bg": 2008, "additional_tiles": [ - { "id": "center", "bg": 1866, "fg": 1977 }, - { "id": "corner", "bg": 1866, "fg": [ 1979, 1981, 1980, 1978 ] }, - { "id": "t_connection", "bg": 1866, "fg": [ 1989, 1991, 1990, 1988 ] }, - { "id": "edge", "bg": 1866, "fg": [ 1983, 1982 ] }, - { "id": "end_piece", "bg": 1866, "fg": [ 1985, 1987, 1986, 1984 ] }, - { "bg": 1866, "id": "unconnected", "fg": 1992 } + { "id": "center", "bg": 2008, "fg": 2119 }, + { "id": "corner", "bg": 2008, "fg": [ 2121, 2123, 2122, 2120 ] }, + { "id": "t_connection", "bg": 2008, "fg": [ 2131, 2133, 2132, 2130 ] }, + { "id": "edge", "bg": 2008, "fg": [ 2125, 2124 ] }, + { "id": "end_piece", "bg": 2008, "fg": [ 2127, 2129, 2128, 2126 ] }, + { "bg": 2008, "id": "unconnected", "fg": 2134 } ] }, { "id": "t_grass_tall_season_summer", "multitile": true, - "fg": 2024, - "bg": 1876, + "fg": 2166, + "bg": 2018, "additional_tiles": [ - { "id": "center", "bg": 1876, "fg": 2009 }, - { "id": "corner", "bg": 1876, "fg": [ 2011, 2013, 2012, 2010 ] }, - { "id": "t_connection", "bg": 1876, "fg": [ 2021, 2023, 2022, 2020 ] }, - { "id": "edge", "bg": 1876, "fg": [ 2015, 2014 ] }, - { "id": "end_piece", "bg": 1876, "fg": [ 2017, 2019, 2018, 2016 ] }, - { "bg": 1876, "id": "unconnected", "fg": 2024 } + { "id": "center", "bg": 2018, "fg": 2151 }, + { "id": "corner", "bg": 2018, "fg": [ 2153, 2155, 2154, 2152 ] }, + { "id": "t_connection", "bg": 2018, "fg": [ 2163, 2165, 2164, 2162 ] }, + { "id": "edge", "bg": 2018, "fg": [ 2157, 2156 ] }, + { "id": "end_piece", "bg": 2018, "fg": [ 2159, 2161, 2160, 2158 ] }, + { "bg": 2018, "id": "unconnected", "fg": 2166 } ] }, { "id": "t_grass_tall_season_autumn", "multitile": true, - "fg": 2008, - "bg": 1871, + "fg": 2150, + "bg": 2013, "additional_tiles": [ - { "id": "center", "bg": 1871, "fg": 1993 }, - { "id": "corner", "bg": 1871, "fg": [ 1995, 1997, 1996, 1994 ] }, - { "id": "t_connection", "bg": 1871, "fg": [ 2005, 2007, 2006, 2004 ] }, - { "id": "edge", "bg": 1871, "fg": [ 1999, 1998 ] }, - { "id": "end_piece", "bg": 1871, "fg": [ 2001, 2003, 2002, 2000 ] }, - { "bg": 1871, "id": "unconnected", "fg": 2008 } + { "id": "center", "bg": 2013, "fg": 2135 }, + { "id": "corner", "bg": 2013, "fg": [ 2137, 2139, 2138, 2136 ] }, + { "id": "t_connection", "bg": 2013, "fg": [ 2147, 2149, 2148, 2146 ] }, + { "id": "edge", "bg": 2013, "fg": [ 2141, 2140 ] }, + { "id": "end_piece", "bg": 2013, "fg": [ 2143, 2145, 2144, 2142 ] }, + { "bg": 2013, "id": "unconnected", "fg": 2150 } ] }, - { "id": "t_grass_tall_season_winter", "fg": 1361 }, + { "id": "t_grass_tall_season_winter", "fg": 1503 }, { "id": "t_grate", "multitile": true, - "fg": 2040, + "fg": 2182, "additional_tiles": [ - { "id": "center", "fg": 2025 }, - { "id": "corner", "fg": [ 2027, 2029, 2028, 2026 ] }, - { "id": "t_connection", "fg": [ 2037, 2039, 2038, 2036 ] }, - { "id": "edge", "fg": [ 2031, 2030 ] }, - { "id": "end_piece", "fg": [ 2033, 2035, 2034, 2032 ] }, - { "id": "unconnected", "fg": [ 2040, 2040 ] } + { "id": "center", "fg": 2167 }, + { "id": "corner", "fg": [ 2169, 2171, 2170, 2168 ] }, + { "id": "t_connection", "fg": [ 2179, 2181, 2180, 2178 ] }, + { "id": "edge", "fg": [ 2173, 2172 ] }, + { "id": "end_piece", "fg": [ 2175, 2177, 2176, 2174 ] }, + { "id": "unconnected", "fg": [ 2182, 2182 ] } ] }, { "id": [ "t_guardrail", "t_guardrail_bg_dp", "t_guardrail_hw_air" ], "multitile": true, - "fg": 2047, - "bg": 2478, + "fg": 2189, + "bg": 2620, "additional_tiles": [ - { "id": "edge", "bg": 2478, "fg": [ 2042, 2041 ] }, - { "id": "end_piece", "bg": 2478, "fg": [ 2044, 2046, 2045, 2043 ] }, - { "bg": 2478, "id": "unconnected", "fg": 2047 } + { "id": "edge", "bg": 2620, "fg": [ 2184, 2183 ] }, + { "id": "end_piece", "bg": 2620, "fg": [ 2186, 2188, 2187, 2185 ] }, + { "bg": 2620, "id": "unconnected", "fg": 2189 } ] }, - { "id": "t_ladder_down", "fg": 2048 }, + { "id": "t_ladder_down", "fg": 2190 }, { "id": "t_lava", - "fg": 2064, - "bg": 2287, + "fg": 2206, + "bg": 2429, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 2049, "bg": 2287 }, - { "id": "corner", "fg": [ 2051, 2053, 2052, 2050 ], "bg": 2287 }, - { "id": "t_connection", "fg": [ 2061, 2063, 2062, 2060 ], "bg": 2287 }, - { "id": "edge", "fg": [ 2055, 2054 ], "bg": 2287 }, - { "id": "end_piece", "fg": [ 2057, 2059, 2058, 2056 ], "bg": 2287 }, - { "id": "unconnected", "fg": [ 2064, 2064 ], "bg": 2287 } + { "id": "center", "fg": 2191, "bg": 2429 }, + { "id": "corner", "fg": [ 2193, 2195, 2194, 2192 ], "bg": 2429 }, + { "id": "t_connection", "fg": [ 2203, 2205, 2204, 2202 ], "bg": 2429 }, + { "id": "edge", "fg": [ 2197, 2196 ], "bg": 2429 }, + { "id": "end_piece", "fg": [ 2199, 2201, 2200, 2198 ], "bg": 2429 }, + { "id": "unconnected", "fg": [ 2206, 2206 ], "bg": 2429 } ] }, { "id": [ "t_linoleum_gray", "t_linoleum_gray_no_roof" ], "multitile": true, - "fg": 2080, + "fg": 2222, "additional_tiles": [ - { "id": "center", "fg": 2065 }, - { "id": "corner", "fg": [ 2067, 2069, 2068, 2066 ] }, - { "id": "t_connection", "fg": [ 2077, 2079, 2078, 2076 ] }, - { "id": "edge", "fg": [ 2071, 2070 ] }, - { "id": "end_piece", "fg": [ 2073, 2075, 2074, 2072 ] }, - { "id": "unconnected", "fg": 2080 } + { "id": "center", "fg": 2207 }, + { "id": "corner", "fg": [ 2209, 2211, 2210, 2208 ] }, + { "id": "t_connection", "fg": [ 2219, 2221, 2220, 2218 ] }, + { "id": "edge", "fg": [ 2213, 2212 ] }, + { "id": "end_piece", "fg": [ 2215, 2217, 2216, 2214 ] }, + { "id": "unconnected", "fg": 2222 } ] }, { "id": [ "t_linoleum_white", "t_linoleum_white_no_roof" ], "multitile": true, - "fg": 2096, + "fg": 2238, "additional_tiles": [ - { "id": "center", "fg": 2081 }, - { "id": "corner", "fg": [ 2083, 2085, 2084, 2082 ] }, - { "id": "t_connection", "fg": [ 2093, 2095, 2094, 2092 ] }, - { "id": "edge", "fg": [ 2087, 2086 ] }, - { "id": "end_piece", "fg": [ 2089, 2091, 2090, 2088 ] }, - { "id": "unconnected", "fg": 2096 } + { "id": "center", "fg": 2223 }, + { "id": "corner", "fg": [ 2225, 2227, 2226, 2224 ] }, + { "id": "t_connection", "fg": [ 2235, 2237, 2236, 2234 ] }, + { "id": "edge", "fg": [ 2229, 2228 ] }, + { "id": "end_piece", "fg": [ 2231, 2233, 2232, 2230 ] }, + { "id": "unconnected", "fg": 2238 } ] }, { "id": "t_metal_floor", "multitile": true, - "fg": 2112, + "fg": 2254, "additional_tiles": [ - { "id": "center", "fg": 2097 }, - { "id": "corner", "fg": [ 2099, 2101, 2100, 2098 ] }, - { "id": "t_connection", "fg": [ 2109, 2111, 2110, 2108 ] }, - { "id": "edge", "fg": [ 2103, 2102 ] }, - { "id": "end_piece", "fg": [ 2105, 2107, 2106, 2104 ] }, - { "id": "unconnected", "fg": 2112 } + { "id": "center", "fg": 2239 }, + { "id": "corner", "fg": [ 2241, 2243, 2242, 2240 ] }, + { "id": "t_connection", "fg": [ 2251, 2253, 2252, 2250 ] }, + { "id": "edge", "fg": [ 2245, 2244 ] }, + { "id": "end_piece", "fg": [ 2247, 2249, 2248, 2246 ] }, + { "id": "unconnected", "fg": 2254 } ] }, { "id": "t_moss", "multitile": true, - "fg": 2129, - "bg": 1867, + "fg": 2271, + "bg": 2009, "additional_tiles": [ - { "id": "center", "bg": 1867, "fg": [ { "weight": 1, "sprite": 2113 }, { "weight": 1, "sprite": 2114 } ] }, - { "id": "corner", "bg": 1867, "fg": [ 2116, 2118, 2117, 2115 ] }, - { "id": "t_connection", "bg": 1867, "fg": [ 2126, 2128, 2127, 2125 ] }, - { "id": "edge", "bg": 1867, "fg": [ 2120, 2119 ] }, - { "id": "end_piece", "bg": 1867, "fg": [ 2122, 2124, 2123, 2121 ] }, - { "bg": 1867, "id": "unconnected", "fg": 2129 } + { "id": "center", "bg": 2009, "fg": [ { "weight": 1, "sprite": 2255 }, { "weight": 1, "sprite": 2256 } ] }, + { "id": "corner", "bg": 2009, "fg": [ 2258, 2260, 2259, 2257 ] }, + { "id": "t_connection", "bg": 2009, "fg": [ 2268, 2270, 2269, 2267 ] }, + { "id": "edge", "bg": 2009, "fg": [ 2262, 2261 ] }, + { "id": "end_piece", "bg": 2009, "fg": [ 2264, 2266, 2265, 2263 ] }, + { "bg": 2009, "id": "unconnected", "fg": 2271 } ] }, { "id": "t_moss_season_summer", "multitile": true, - "fg": 2163, - "bg": 1877, + "fg": 2305, + "bg": 2019, "additional_tiles": [ - { "id": "center", "bg": 1877, "fg": [ { "weight": 1, "sprite": 2147 }, { "weight": 1, "sprite": 2148 } ] }, - { "id": "corner", "bg": 1877, "fg": [ 2150, 2152, 2151, 2149 ] }, - { "id": "t_connection", "bg": 1877, "fg": [ 2160, 2162, 2161, 2159 ] }, - { "id": "edge", "bg": 1877, "fg": [ 2154, 2153 ] }, - { "id": "end_piece", "bg": 1877, "fg": [ 2156, 2158, 2157, 2155 ] }, - { "bg": 1877, "id": "unconnected", "fg": 2163 } + { "id": "center", "bg": 2019, "fg": [ { "weight": 1, "sprite": 2289 }, { "weight": 1, "sprite": 2290 } ] }, + { "id": "corner", "bg": 2019, "fg": [ 2292, 2294, 2293, 2291 ] }, + { "id": "t_connection", "bg": 2019, "fg": [ 2302, 2304, 2303, 2301 ] }, + { "id": "edge", "bg": 2019, "fg": [ 2296, 2295 ] }, + { "id": "end_piece", "bg": 2019, "fg": [ 2298, 2300, 2299, 2297 ] }, + { "bg": 2019, "id": "unconnected", "fg": 2305 } ] }, { "id": "t_moss_season_autumn", "multitile": true, - "fg": 2146, - "bg": 1872, + "fg": 2288, + "bg": 2014, "additional_tiles": [ - { "id": "center", "bg": 1872, "fg": [ { "weight": 1, "sprite": 2130 }, { "weight": 1, "sprite": 2131 } ] }, - { "id": "corner", "bg": 1872, "fg": [ 2133, 2135, 2134, 2132 ] }, - { "id": "t_connection", "bg": 1872, "fg": [ 2143, 2145, 2144, 2142 ] }, - { "id": "edge", "bg": 1872, "fg": [ 2137, 2136 ] }, - { "id": "end_piece", "bg": 1872, "fg": [ 2139, 2141, 2140, 2138 ] }, - { "bg": 1872, "id": "unconnected", "fg": 2146 } + { "id": "center", "bg": 2014, "fg": [ { "weight": 1, "sprite": 2272 }, { "weight": 1, "sprite": 2273 } ] }, + { "id": "corner", "bg": 2014, "fg": [ 2275, 2277, 2276, 2274 ] }, + { "id": "t_connection", "bg": 2014, "fg": [ 2285, 2287, 2286, 2284 ] }, + { "id": "edge", "bg": 2014, "fg": [ 2279, 2278 ] }, + { "id": "end_piece", "bg": 2014, "fg": [ 2281, 2283, 2282, 2280 ] }, + { "bg": 2014, "id": "unconnected", "fg": 2288 } ] }, { "id": "t_moss_season_winter", "multitile": true, - "fg": 1380, - "bg": 1362, + "fg": 1522, + "bg": 1504, "additional_tiles": [ - { "id": "center", "bg": 1362, "fg": [ { "weight": 1, "sprite": 1362 }, { "weight": 1, "sprite": 1363 } ] }, - { "id": "corner", "bg": 1362, "fg": [ 1367, 1369, 1368, 1366 ] }, - { "id": "t_connection", "bg": 1362, "fg": [ 1377, 1379, 1378, 1376 ] }, - { "id": "edge", "bg": 1362, "fg": [ 1371, 1370 ] }, - { "id": "end_piece", "bg": 1362, "fg": [ 1373, 1375, 1374, 1372 ] }, - { "bg": 1362, "id": "unconnected", "fg": 1380 } + { "id": "center", "bg": 1504, "fg": [ { "weight": 1, "sprite": 1504 }, { "weight": 1, "sprite": 1505 } ] }, + { "id": "corner", "bg": 1504, "fg": [ 1509, 1511, 1510, 1508 ] }, + { "id": "t_connection", "bg": 1504, "fg": [ 1519, 1521, 1520, 1518 ] }, + { "id": "edge", "bg": 1504, "fg": [ 1513, 1512 ] }, + { "id": "end_piece", "bg": 1504, "fg": [ 1515, 1517, 1516, 1514 ] }, + { "bg": 1504, "id": "unconnected", "fg": 1522 } ] }, { "id": "t_pavement", "multitile": true, - "fg": 2164, + "fg": 2306, "additional_tiles": [ { "id": "center", "fg": [ - { "weight": 1, "sprite": 2164 }, - { "weight": 1, "sprite": 2165 }, - { "weight": 1, "sprite": 2166 }, - { "weight": 1, "sprite": 2167 } + { "weight": 1, "sprite": 2306 }, + { "weight": 1, "sprite": 2307 }, + { "weight": 1, "sprite": 2308 }, + { "weight": 1, "sprite": 2309 } ] }, - { "id": "corner", "bg": 1866, "fg": [ 2176, 2179, 2178, 2175 ] }, - { "id": "t_connection", "fg": [ 2174, 2182, 2177, 2168 ] }, - { "id": "edge", "fg": [ 2181, 2173 ] }, - { "id": "end_piece", "fg": [ 2170, 2172, 2171, 2169 ] }, - { "id": "unconnected", "fg": 2180 } + { "id": "corner", "bg": 2008, "fg": [ 2318, 2321, 2320, 2317 ] }, + { "id": "t_connection", "fg": [ 2316, 2324, 2319, 2310 ] }, + { "id": "edge", "fg": [ 2323, 2315 ] }, + { "id": "end_piece", "fg": [ 2312, 2314, 2313, 2311 ] }, + { "id": "unconnected", "fg": 2322 } ] }, { "id": "t_pavement_season_summer", "multitile": true, - "fg": 2164, + "fg": 2306, "additional_tiles": [ { "id": "center", "fg": [ - { "weight": 1, "sprite": 2164 }, - { "weight": 1, "sprite": 2165 }, - { "weight": 1, "sprite": 2166 }, - { "weight": 1, "sprite": 2167 } + { "weight": 1, "sprite": 2306 }, + { "weight": 1, "sprite": 2307 }, + { "weight": 1, "sprite": 2308 }, + { "weight": 1, "sprite": 2309 } ] }, - { "id": "corner", "bg": 1876, "fg": [ 2176, 2179, 2178, 2175 ] }, - { "id": "t_connection", "fg": [ 2174, 2182, 2177, 2168 ] }, - { "id": "edge", "fg": [ 2181, 2173 ] }, - { "id": "end_piece", "fg": [ 2170, 2172, 2171, 2169 ] }, - { "id": "unconnected", "fg": 2180 } + { "id": "corner", "bg": 2018, "fg": [ 2318, 2321, 2320, 2317 ] }, + { "id": "t_connection", "fg": [ 2316, 2324, 2319, 2310 ] }, + { "id": "edge", "fg": [ 2323, 2315 ] }, + { "id": "end_piece", "fg": [ 2312, 2314, 2313, 2311 ] }, + { "id": "unconnected", "fg": 2322 } ] }, { "id": "t_pavement_season_autumn", "multitile": true, - "fg": 2164, + "fg": 2306, "additional_tiles": [ { "id": "center", "fg": [ - { "weight": 1, "sprite": 2164 }, - { "weight": 1, "sprite": 2165 }, - { "weight": 1, "sprite": 2166 }, - { "weight": 1, "sprite": 2167 } + { "weight": 1, "sprite": 2306 }, + { "weight": 1, "sprite": 2307 }, + { "weight": 1, "sprite": 2308 }, + { "weight": 1, "sprite": 2309 } ] }, - { "id": "corner", "bg": 1871, "fg": [ 2176, 2179, 2178, 2175 ] }, - { "id": "t_connection", "fg": [ 2174, 2182, 2177, 2168 ] }, - { "id": "edge", "fg": [ 2181, 2173 ] }, - { "id": "end_piece", "fg": [ 2170, 2172, 2171, 2169 ] }, - { "id": "unconnected", "fg": 2180 } + { "id": "corner", "bg": 2013, "fg": [ 2318, 2321, 2320, 2317 ] }, + { "id": "t_connection", "fg": [ 2316, 2324, 2319, 2310 ] }, + { "id": "edge", "fg": [ 2323, 2315 ] }, + { "id": "end_piece", "fg": [ 2312, 2314, 2313, 2311 ] }, + { "id": "unconnected", "fg": 2322 } ] }, - { "id": "t_pavement_season_winter", "fg": 1362 }, - { "id": "t_pavement_y", "fg": 2183 }, - { "id": "t_pavement_y_season_winter", "fg": 1362 }, - { "id": "t_pit", "fg": 2184, "bg": [ { "weight": 100, "sprite": 1866 }, { "weight": 100, "sprite": 1868 } ] }, + { "id": "t_pavement_season_winter", "fg": 1504 }, + { "id": "t_pavement_y", "fg": 2325 }, + { "id": "t_pavement_y_season_winter", "fg": 1504 }, + { "id": "t_pit", "fg": 2326, "bg": [ { "weight": 100, "sprite": 2008 }, { "weight": 100, "sprite": 2010 } ] }, { "id": "t_pit_season_summer", - "fg": 2184, - "bg": [ { "weight": 100, "sprite": 1876 }, { "weight": 100, "sprite": 1878 } ] + "fg": 2326, + "bg": [ { "weight": 100, "sprite": 2018 }, { "weight": 100, "sprite": 2020 } ] }, { "id": "t_pit_season_autumn", - "fg": 2184, - "bg": [ { "weight": 100, "sprite": 1871 }, { "weight": 100, "sprite": 1873 } ] + "fg": 2326, + "bg": [ { "weight": 100, "sprite": 2013 }, { "weight": 100, "sprite": 2015 } ] }, - { "id": "t_pit_season_winter", "fg": 2184, "bg": 1362 }, + { "id": "t_pit_season_winter", "fg": 2326, "bg": 1504 }, { "id": "t_pit_shallow", - "fg": 2200, - "bg": [ { "weight": 100, "sprite": 1866 }, { "weight": 100, "sprite": 1868 } ], + "fg": 2342, + "bg": [ { "weight": 100, "sprite": 2008 }, { "weight": 100, "sprite": 2010 } ], "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 2185, "bg": [ { "weight": 100, "sprite": 1866 }, { "weight": 100, "sprite": 1868 } ] }, + { "id": "center", "fg": 2327, "bg": [ { "weight": 100, "sprite": 2008 }, { "weight": 100, "sprite": 2010 } ] }, { "id": "corner", - "fg": [ 2187, 2189, 2188, 2186 ], - "bg": [ { "weight": 100, "sprite": 1866 }, { "weight": 100, "sprite": 1868 } ] + "fg": [ 2329, 2331, 2330, 2328 ], + "bg": [ { "weight": 100, "sprite": 2008 }, { "weight": 100, "sprite": 2010 } ] }, { "id": "t_connection", - "fg": [ 2197, 2199, 2198, 2196 ], - "bg": [ { "weight": 100, "sprite": 1866 }, { "weight": 100, "sprite": 1868 } ] + "fg": [ 2339, 2341, 2340, 2338 ], + "bg": [ { "weight": 100, "sprite": 2008 }, { "weight": 100, "sprite": 2010 } ] }, { "id": "edge", - "fg": [ 2191, 2190 ], - "bg": [ { "weight": 100, "sprite": 1866 }, { "weight": 100, "sprite": 1868 } ] + "fg": [ 2333, 2332 ], + "bg": [ { "weight": 100, "sprite": 2008 }, { "weight": 100, "sprite": 2010 } ] }, { "id": "end_piece", - "fg": [ 2193, 2195, 2194, 2192 ], - "bg": [ { "weight": 100, "sprite": 1866 }, { "weight": 100, "sprite": 1868 } ] + "fg": [ 2335, 2337, 2336, 2334 ], + "bg": [ { "weight": 100, "sprite": 2008 }, { "weight": 100, "sprite": 2010 } ] }, { "id": "unconnected", - "fg": [ 2200, 2200 ], - "bg": [ { "weight": 100, "sprite": 1866 }, { "weight": 100, "sprite": 1868 } ] + "fg": [ 2342, 2342 ], + "bg": [ { "weight": 100, "sprite": 2008 }, { "weight": 100, "sprite": 2010 } ] } ] }, { "id": "t_pit_shallow_season_summer", - "fg": 2200, - "bg": [ { "weight": 100, "sprite": 1876 }, { "weight": 100, "sprite": 1878 } ], + "fg": 2342, + "bg": [ { "weight": 100, "sprite": 2018 }, { "weight": 100, "sprite": 2020 } ], "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 2185, "bg": [ { "weight": 100, "sprite": 1876 }, { "weight": 100, "sprite": 1878 } ] }, + { "id": "center", "fg": 2327, "bg": [ { "weight": 100, "sprite": 2018 }, { "weight": 100, "sprite": 2020 } ] }, { "id": "corner", - "fg": [ 2187, 2189, 2188, 2186 ], - "bg": [ { "weight": 100, "sprite": 1876 }, { "weight": 100, "sprite": 1878 } ] + "fg": [ 2329, 2331, 2330, 2328 ], + "bg": [ { "weight": 100, "sprite": 2018 }, { "weight": 100, "sprite": 2020 } ] }, { "id": "t_connection", - "fg": [ 2197, 2199, 2198, 2196 ], - "bg": [ { "weight": 100, "sprite": 1876 }, { "weight": 100, "sprite": 1878 } ] + "fg": [ 2339, 2341, 2340, 2338 ], + "bg": [ { "weight": 100, "sprite": 2018 }, { "weight": 100, "sprite": 2020 } ] }, { "id": "edge", - "fg": [ 2191, 2190 ], - "bg": [ { "weight": 100, "sprite": 1876 }, { "weight": 100, "sprite": 1878 } ] + "fg": [ 2333, 2332 ], + "bg": [ { "weight": 100, "sprite": 2018 }, { "weight": 100, "sprite": 2020 } ] }, { "id": "end_piece", - "fg": [ 2193, 2195, 2194, 2192 ], - "bg": [ { "weight": 100, "sprite": 1876 }, { "weight": 100, "sprite": 1878 } ] + "fg": [ 2335, 2337, 2336, 2334 ], + "bg": [ { "weight": 100, "sprite": 2018 }, { "weight": 100, "sprite": 2020 } ] }, { "id": "unconnected", - "fg": [ 2200, 2200 ], - "bg": [ { "weight": 100, "sprite": 1876 }, { "weight": 100, "sprite": 1878 } ] + "fg": [ 2342, 2342 ], + "bg": [ { "weight": 100, "sprite": 2018 }, { "weight": 100, "sprite": 2020 } ] } ] }, { "id": "t_pit_shallow_season_autumn", - "fg": 2200, - "bg": [ { "weight": 100, "sprite": 1871 }, { "weight": 100, "sprite": 1873 } ], + "fg": 2342, + "bg": [ { "weight": 100, "sprite": 2013 }, { "weight": 100, "sprite": 2015 } ], "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 2185, "bg": [ { "weight": 100, "sprite": 1871 }, { "weight": 100, "sprite": 1873 } ] }, + { "id": "center", "fg": 2327, "bg": [ { "weight": 100, "sprite": 2013 }, { "weight": 100, "sprite": 2015 } ] }, { "id": "corner", - "fg": [ 2187, 2189, 2188, 2186 ], - "bg": [ { "weight": 100, "sprite": 1871 }, { "weight": 100, "sprite": 1873 } ] + "fg": [ 2329, 2331, 2330, 2328 ], + "bg": [ { "weight": 100, "sprite": 2013 }, { "weight": 100, "sprite": 2015 } ] }, { "id": "t_connection", - "fg": [ 2197, 2199, 2198, 2196 ], - "bg": [ { "weight": 100, "sprite": 1871 }, { "weight": 100, "sprite": 1873 } ] + "fg": [ 2339, 2341, 2340, 2338 ], + "bg": [ { "weight": 100, "sprite": 2013 }, { "weight": 100, "sprite": 2015 } ] }, { "id": "edge", - "fg": [ 2191, 2190 ], - "bg": [ { "weight": 100, "sprite": 1871 }, { "weight": 100, "sprite": 1873 } ] + "fg": [ 2333, 2332 ], + "bg": [ { "weight": 100, "sprite": 2013 }, { "weight": 100, "sprite": 2015 } ] }, { "id": "end_piece", - "fg": [ 2193, 2195, 2194, 2192 ], - "bg": [ { "weight": 100, "sprite": 1871 }, { "weight": 100, "sprite": 1873 } ] + "fg": [ 2335, 2337, 2336, 2334 ], + "bg": [ { "weight": 100, "sprite": 2013 }, { "weight": 100, "sprite": 2015 } ] }, { "id": "unconnected", - "fg": [ 2200, 2200 ], - "bg": [ { "weight": 100, "sprite": 1871 }, { "weight": 100, "sprite": 1873 } ] + "fg": [ 2342, 2342 ], + "bg": [ { "weight": 100, "sprite": 2013 }, { "weight": 100, "sprite": 2015 } ] } ] }, { "id": "t_pit_shallow_season_winter", - "fg": 2200, - "bg": [ { "weight": 100, "sprite": 1362 }, { "weight": 100, "sprite": 1363 } ], + "fg": 2342, + "bg": [ { "weight": 100, "sprite": 1504 }, { "weight": 100, "sprite": 1505 } ], "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 2185, "bg": [ { "weight": 100, "sprite": 1362 }, { "weight": 100, "sprite": 1363 } ] }, + { "id": "center", "fg": 2327, "bg": [ { "weight": 100, "sprite": 1504 }, { "weight": 100, "sprite": 1505 } ] }, { "id": "corner", - "fg": [ 2187, 2189, 2188, 2186 ], - "bg": [ { "weight": 100, "sprite": 1362 }, { "weight": 100, "sprite": 1363 } ] + "fg": [ 2329, 2331, 2330, 2328 ], + "bg": [ { "weight": 100, "sprite": 1504 }, { "weight": 100, "sprite": 1505 } ] }, { "id": "t_connection", - "fg": [ 2197, 2199, 2198, 2196 ], - "bg": [ { "weight": 100, "sprite": 1362 }, { "weight": 100, "sprite": 1363 } ] + "fg": [ 2339, 2341, 2340, 2338 ], + "bg": [ { "weight": 100, "sprite": 1504 }, { "weight": 100, "sprite": 1505 } ] }, { "id": "edge", - "fg": [ 2191, 2190 ], - "bg": [ { "weight": 100, "sprite": 1362 }, { "weight": 100, "sprite": 1363 } ] + "fg": [ 2333, 2332 ], + "bg": [ { "weight": 100, "sprite": 1504 }, { "weight": 100, "sprite": 1505 } ] }, { "id": "end_piece", - "fg": [ 2193, 2195, 2194, 2192 ], - "bg": [ { "weight": 100, "sprite": 1362 }, { "weight": 100, "sprite": 1363 } ] + "fg": [ 2335, 2337, 2336, 2334 ], + "bg": [ { "weight": 100, "sprite": 1504 }, { "weight": 100, "sprite": 1505 } ] }, { "id": "unconnected", - "fg": [ 2200, 2200 ], - "bg": [ { "weight": 100, "sprite": 1362 }, { "weight": 100, "sprite": 1363 } ] + "fg": [ 2342, 2342 ], + "bg": [ { "weight": 100, "sprite": 1504 }, { "weight": 100, "sprite": 1505 } ] } ] }, { "id": "t_privacy_fence", "multitile": true, - "fg": 2216, - "bg": 1866, + "fg": 2358, + "bg": 2008, "additional_tiles": [ - { "id": "center", "bg": 1866, "fg": 2201 }, - { "id": "corner", "bg": 1866, "fg": [ 2203, 2205, 2204, 2202 ] }, - { "id": "t_connection", "bg": 1866, "fg": [ 2213, 2215, 2214, 2212 ] }, - { "id": "edge", "bg": 1866, "fg": [ 2207, 2206 ] }, - { "id": "end_piece", "bg": 1866, "fg": [ 2209, 2211, 2210, 2208 ] }, - { "bg": 1866, "id": "unconnected", "fg": [ 2216, 2216 ] } + { "id": "center", "bg": 2008, "fg": 2343 }, + { "id": "corner", "bg": 2008, "fg": [ 2345, 2347, 2346, 2344 ] }, + { "id": "t_connection", "bg": 2008, "fg": [ 2355, 2357, 2356, 2354 ] }, + { "id": "edge", "bg": 2008, "fg": [ 2349, 2348 ] }, + { "id": "end_piece", "bg": 2008, "fg": [ 2351, 2353, 2352, 2350 ] }, + { "bg": 2008, "id": "unconnected", "fg": [ 2358, 2358 ] } ] }, { "id": "t_privacy_fence_season_winter", "multitile": true, - "fg": 2216, - "bg": 1362, + "fg": 2358, + "bg": 1504, "additional_tiles": [ - { "id": "center", "bg": 1362, "fg": 2201 }, - { "id": "corner", "bg": 1362, "fg": [ 2203, 2205, 2204, 2202 ] }, - { "id": "t_connection", "bg": 1362, "fg": [ 2213, 2215, 2214, 2212 ] }, - { "id": "edge", "bg": 1362, "fg": [ 2207, 2206 ] }, - { "id": "end_piece", "bg": 1362, "fg": [ 2209, 2211, 2210, 2208 ] }, - { "bg": 1362, "id": "unconnected", "fg": [ 2216, 2216 ] } + { "id": "center", "bg": 1504, "fg": 2343 }, + { "id": "corner", "bg": 1504, "fg": [ 2345, 2347, 2346, 2344 ] }, + { "id": "t_connection", "bg": 1504, "fg": [ 2355, 2357, 2356, 2354 ] }, + { "id": "edge", "bg": 1504, "fg": [ 2349, 2348 ] }, + { "id": "end_piece", "bg": 1504, "fg": [ 2351, 2353, 2352, 2350 ] }, + { "bg": 1504, "id": "unconnected", "fg": [ 2358, 2358 ] } ] }, { "id": "t_railing", "multitile": true, - "fg": 2232, - "bg": 1549, + "fg": 2374, + "bg": 1691, "additional_tiles": [ - { "id": "center", "bg": 1549, "fg": 2217 }, - { "id": "corner", "bg": 1549, "fg": [ 2219, 2221, 2220, 2218 ] }, - { "id": "t_connection", "bg": 1549, "fg": [ 2229, 2231, 2230, 2228 ] }, - { "id": "edge", "bg": 1549, "fg": [ 2223, 2222 ] }, - { "id": "end_piece", "bg": 1549, "fg": [ 2225, 2227, 2226, 2224 ] }, - { "bg": 1549, "id": "unconnected", "fg": [ 2232, 2232 ] } + { "id": "center", "bg": 1691, "fg": 2359 }, + { "id": "corner", "bg": 1691, "fg": [ 2361, 2363, 2362, 2360 ] }, + { "id": "t_connection", "bg": 1691, "fg": [ 2371, 2373, 2372, 2370 ] }, + { "id": "edge", "bg": 1691, "fg": [ 2365, 2364 ] }, + { "id": "end_piece", "bg": 1691, "fg": [ 2367, 2369, 2368, 2366 ] }, + { "bg": 1691, "id": "unconnected", "fg": [ 2374, 2374 ] } ] }, { "id": "t_railroad_rubble", "multitile": true, - "fg": 2249, - "bg": 1866, + "fg": 2391, + "bg": 2008, "additional_tiles": [ - { "id": "center", "bg": 1866, "fg": [ { "weight": 1, "sprite": 2233 }, { "weight": 1, "sprite": 2234 } ] }, - { "id": "corner", "bg": 1866, "fg": [ 2236, 2238, 2237, 2235 ] }, - { "id": "t_connection", "bg": 1866, "fg": [ 2246, 2248, 2247, 2245 ] }, - { "id": "edge", "bg": 1866, "fg": [ 2240, 2239 ] }, - { "id": "end_piece", "bg": 1866, "fg": [ 2242, 2244, 2243, 2241 ] }, - { "bg": 1866, "id": "unconnected", "fg": 2249 } + { "id": "center", "bg": 2008, "fg": [ { "weight": 1, "sprite": 2375 }, { "weight": 1, "sprite": 2376 } ] }, + { "id": "corner", "bg": 2008, "fg": [ 2378, 2380, 2379, 2377 ] }, + { "id": "t_connection", "bg": 2008, "fg": [ 2388, 2390, 2389, 2387 ] }, + { "id": "edge", "bg": 2008, "fg": [ 2382, 2381 ] }, + { "id": "end_piece", "bg": 2008, "fg": [ 2384, 2386, 2385, 2383 ] }, + { "bg": 2008, "id": "unconnected", "fg": 2391 } ] }, { "id": "t_railroad_rubble_season_summer", "multitile": true, - "fg": 2249, - "bg": 1876, + "fg": 2391, + "bg": 2018, "additional_tiles": [ - { "id": "center", "bg": 1876, "fg": [ { "weight": 1, "sprite": 2233 }, { "weight": 1, "sprite": 2234 } ] }, - { "id": "corner", "bg": 1876, "fg": [ 2236, 2238, 2237, 2235 ] }, - { "id": "t_connection", "bg": 1876, "fg": [ 2246, 2248, 2247, 2245 ] }, - { "id": "edge", "bg": 1876, "fg": [ 2240, 2239 ] }, - { "id": "end_piece", "bg": 1876, "fg": [ 2242, 2244, 2243, 2241 ] }, - { "bg": 1876, "id": "unconnected", "fg": 2249 } + { "id": "center", "bg": 2018, "fg": [ { "weight": 1, "sprite": 2375 }, { "weight": 1, "sprite": 2376 } ] }, + { "id": "corner", "bg": 2018, "fg": [ 2378, 2380, 2379, 2377 ] }, + { "id": "t_connection", "bg": 2018, "fg": [ 2388, 2390, 2389, 2387 ] }, + { "id": "edge", "bg": 2018, "fg": [ 2382, 2381 ] }, + { "id": "end_piece", "bg": 2018, "fg": [ 2384, 2386, 2385, 2383 ] }, + { "bg": 2018, "id": "unconnected", "fg": 2391 } ] }, { "id": "t_railroad_rubble_season_autumn", "multitile": true, - "fg": 2249, - "bg": 1871, + "fg": 2391, + "bg": 2013, "additional_tiles": [ - { "id": "center", "bg": 1871, "fg": [ { "weight": 1, "sprite": 2233 }, { "weight": 1, "sprite": 2234 } ] }, - { "id": "corner", "bg": 1871, "fg": [ 2236, 2238, 2237, 2235 ] }, - { "id": "t_connection", "bg": 1871, "fg": [ 2246, 2248, 2247, 2245 ] }, - { "id": "edge", "bg": 1871, "fg": [ 2240, 2239 ] }, - { "id": "end_piece", "bg": 1871, "fg": [ 2242, 2244, 2243, 2241 ] }, - { "bg": 1871, "id": "unconnected", "fg": 2249 } + { "id": "center", "bg": 2013, "fg": [ { "weight": 1, "sprite": 2375 }, { "weight": 1, "sprite": 2376 } ] }, + { "id": "corner", "bg": 2013, "fg": [ 2378, 2380, 2379, 2377 ] }, + { "id": "t_connection", "bg": 2013, "fg": [ 2388, 2390, 2389, 2387 ] }, + { "id": "edge", "bg": 2013, "fg": [ 2382, 2381 ] }, + { "id": "end_piece", "bg": 2013, "fg": [ 2384, 2386, 2385, 2383 ] }, + { "bg": 2013, "id": "unconnected", "fg": 2391 } ] }, { "id": "t_railroad_rubble_season_winter", "multitile": true, - "fg": 2249, - "bg": 1362, + "fg": 2391, + "bg": 1504, "additional_tiles": [ - { "id": "center", "bg": 1362, "fg": [ { "weight": 1, "sprite": 2233 }, { "weight": 1, "sprite": 2234 } ] }, - { "id": "corner", "bg": 1362, "fg": [ 2236, 2238, 2237, 2235 ] }, - { "id": "t_connection", "bg": 1362, "fg": [ 2246, 2248, 2247, 2245 ] }, - { "id": "edge", "bg": 1362, "fg": [ 2240, 2239 ] }, - { "id": "end_piece", "bg": 1362, "fg": [ 2242, 2244, 2243, 2241 ] }, - { "bg": 1362, "id": "unconnected", "fg": 2249 } + { "id": "center", "bg": 1504, "fg": [ { "weight": 1, "sprite": 2375 }, { "weight": 1, "sprite": 2376 } ] }, + { "id": "corner", "bg": 1504, "fg": [ 2378, 2380, 2379, 2377 ] }, + { "id": "t_connection", "bg": 1504, "fg": [ 2388, 2390, 2389, 2387 ] }, + { "id": "edge", "bg": 1504, "fg": [ 2382, 2381 ] }, + { "id": "end_piece", "bg": 1504, "fg": [ 2384, 2386, 2385, 2383 ] }, + { "bg": 1504, "id": "unconnected", "fg": 2391 } ] }, { "id": "t_railroad_small", "multitile": true, - "fg": 2250, - "bg": 2233, + "fg": 2392, + "bg": 2375, "additional_tiles": [ - { "id": "center", "bg": 2233, "fg": 2250 }, - { "id": "corner", "bg": 2233, "fg": [ 2250, 2251, 2250, 2251 ] }, - { "id": "t_connection", "bg": 2233, "fg": [ 2251, 2250, 2251, 2250 ] }, - { "id": "edge", "fg": [ 2251, 2250 ] }, - { "id": "end_piece", "bg": 2233, "fg": [ 2251, 2250, 2251, 2250 ] }, - { "bg": 2233, "id": "unconnected", "fg": 2251 } + { "id": "center", "bg": 2375, "fg": 2392 }, + { "id": "corner", "bg": 2375, "fg": [ 2392, 2393, 2392, 2393 ] }, + { "id": "t_connection", "bg": 2375, "fg": [ 2393, 2392, 2393, 2392 ] }, + { "id": "edge", "fg": [ 2393, 2392 ] }, + { "id": "end_piece", "bg": 2375, "fg": [ 2393, 2392, 2393, 2392 ] }, + { "bg": 2375, "id": "unconnected", "fg": 2393 } ] }, - { "id": "t_rdoor_c", "fg": 2253 }, - { "id": "t_rdoor_o", "fg": 2254 }, - { "id": "t_rdoor_b", "fg": 2252 }, + { "id": "t_rdoor_c", "fg": 2395 }, + { "id": "t_rdoor_o", "fg": 2396 }, + { "id": "t_rdoor_b", "fg": 2394 }, { "id": "t_reinforced_glass", "multitile": true, - "fg": 2270, + "fg": 2412, "additional_tiles": [ - { "id": "center", "fg": 2255 }, - { "id": "corner", "fg": [ 2257, 2259, 2258, 2256 ] }, - { "id": "t_connection", "fg": [ 2267, 2269, 2268, 2266 ] }, - { "id": "edge", "fg": [ 2261, 2260 ] }, - { "id": "end_piece", "fg": [ 2263, 2265, 2264, 2262 ] }, - { "id": "unconnected", "fg": 2270 } + { "id": "center", "fg": 2397 }, + { "id": "corner", "fg": [ 2399, 2401, 2400, 2398 ] }, + { "id": "t_connection", "fg": [ 2409, 2411, 2410, 2408 ] }, + { "id": "edge", "fg": [ 2403, 2402 ] }, + { "id": "end_piece", "fg": [ 2405, 2407, 2406, 2404 ] }, + { "id": "unconnected", "fg": 2412 } ] }, { "id": "t_rock", "multitile": true, - "fg": 2286, + "fg": 2428, "additional_tiles": [ - { "id": "center", "fg": 2271 }, - { "id": "corner", "fg": [ 2273, 2275, 2274, 2272 ] }, - { "id": "t_connection", "fg": [ 2283, 2285, 2284, 2282 ] }, - { "id": "edge", "fg": [ 2277, 2276 ] }, - { "id": "end_piece", "fg": [ 2279, 2281, 2280, 2278 ] }, - { "id": "unconnected", "fg": 2286 } + { "id": "center", "fg": 2413 }, + { "id": "corner", "fg": [ 2415, 2417, 2416, 2414 ] }, + { "id": "t_connection", "fg": [ 2425, 2427, 2426, 2424 ] }, + { "id": "edge", "fg": [ 2419, 2418 ] }, + { "id": "end_piece", "fg": [ 2421, 2423, 2422, 2420 ] }, + { "id": "unconnected", "fg": 2428 } ] }, { "id": "t_rock_floor", "multitile": true, - "fg": 2304, + "fg": 2446, "additional_tiles": [ { "id": "center", - "fg": [ { "weight": 1, "sprite": 2287 }, { "weight": 1, "sprite": 2288 }, { "weight": 1, "sprite": 2289 } ] + "fg": [ { "weight": 1, "sprite": 2429 }, { "weight": 1, "sprite": 2430 }, { "weight": 1, "sprite": 2431 } ] }, - { "id": "corner", "fg": [ 2291, 2293, 2292, 2290 ] }, - { "id": "t_connection", "fg": [ 2301, 2303, 2302, 2300 ] }, - { "id": "edge", "fg": [ 2295, 2294 ] }, - { "id": "end_piece", "fg": [ 2297, 2299, 2298, 2296 ] }, - { "id": "unconnected", "fg": 2304 } + { "id": "corner", "fg": [ 2433, 2435, 2434, 2432 ] }, + { "id": "t_connection", "fg": [ 2443, 2445, 2444, 2442 ] }, + { "id": "edge", "fg": [ 2437, 2436 ] }, + { "id": "end_piece", "fg": [ 2439, 2441, 2440, 2438 ] }, + { "id": "unconnected", "fg": 2446 } ] }, { "id": "t_rock_wall", "multitile": true, - "fg": 2320, + "fg": 2462, "additional_tiles": [ - { "id": "center", "fg": 2305 }, - { "id": "corner", "fg": [ 2307, 2309, 2308, 2306 ] }, - { "id": "t_connection", "fg": [ 2317, 2319, 2318, 2316 ] }, - { "id": "edge", "fg": [ 2311, 2310 ] }, - { "id": "end_piece", "fg": [ 2313, 2315, 2314, 2312 ] }, - { "id": "unconnected", "fg": 2320 } + { "id": "center", "fg": 2447 }, + { "id": "corner", "fg": [ 2449, 2451, 2450, 2448 ] }, + { "id": "t_connection", "fg": [ 2459, 2461, 2460, 2458 ] }, + { "id": "edge", "fg": [ 2453, 2452 ] }, + { "id": "end_piece", "fg": [ 2455, 2457, 2456, 2454 ] }, + { "id": "unconnected", "fg": 2462 } ] }, { "id": "t_sand", "multitile": true, - "fg": 2339, - "bg": 1866, + "fg": 2481, + "bg": 2008, "additional_tiles": [ { "id": "center", - "bg": 1866, + "bg": 2008, "fg": [ - { "weight": 1, "sprite": 2321 }, - { "weight": 1, "sprite": 2322 }, - { "weight": 1, "sprite": 2323 }, - { "weight": 1, "sprite": 2324 } + { "weight": 1, "sprite": 2463 }, + { "weight": 1, "sprite": 2464 }, + { "weight": 1, "sprite": 2465 }, + { "weight": 1, "sprite": 2466 } ] }, - { "id": "corner", "bg": 1866, "fg": [ 2326, 2328, 2327, 2325 ] }, - { "id": "t_connection", "bg": 1866, "fg": [ 2336, 2338, 2337, 2335 ] }, - { "id": "edge", "bg": 1866, "fg": [ 2330, 2329 ] }, - { "id": "end_piece", "bg": 1866, "fg": [ 2332, 2334, 2333, 2331 ] }, - { "bg": 1866, "id": "unconnected", "fg": 2339 } + { "id": "corner", "bg": 2008, "fg": [ 2468, 2470, 2469, 2467 ] }, + { "id": "t_connection", "bg": 2008, "fg": [ 2478, 2480, 2479, 2477 ] }, + { "id": "edge", "bg": 2008, "fg": [ 2472, 2471 ] }, + { "id": "end_piece", "bg": 2008, "fg": [ 2474, 2476, 2475, 2473 ] }, + { "bg": 2008, "id": "unconnected", "fg": 2481 } ] }, { "id": "t_sand_season_summer", "multitile": true, - "fg": 2339, - "bg": 1876, + "fg": 2481, + "bg": 2018, "additional_tiles": [ - { "id": "center", "bg": 1876, "fg": [ { "weight": 1, "sprite": 2321 }, { "weight": 1, "sprite": 2322 } ] }, - { "id": "corner", "bg": 1876, "fg": [ 2326, 2328, 2327, 2325 ] }, - { "id": "t_connection", "bg": 1876, "fg": [ 2336, 2338, 2337, 2335 ] }, - { "id": "edge", "bg": 1876, "fg": [ 2330, 2329 ] }, - { "id": "end_piece", "bg": 1876, "fg": [ 2332, 2334, 2333, 2331 ] }, - { "bg": 1876, "id": "unconnected", "fg": 2339 } + { "id": "center", "bg": 2018, "fg": [ { "weight": 1, "sprite": 2463 }, { "weight": 1, "sprite": 2464 } ] }, + { "id": "corner", "bg": 2018, "fg": [ 2468, 2470, 2469, 2467 ] }, + { "id": "t_connection", "bg": 2018, "fg": [ 2478, 2480, 2479, 2477 ] }, + { "id": "edge", "bg": 2018, "fg": [ 2472, 2471 ] }, + { "id": "end_piece", "bg": 2018, "fg": [ 2474, 2476, 2475, 2473 ] }, + { "bg": 2018, "id": "unconnected", "fg": 2481 } ] }, { "id": "t_sand_season_autumn", "multitile": true, - "fg": 2339, - "bg": 1871, + "fg": 2481, + "bg": 2013, "additional_tiles": [ - { "id": "center", "bg": 1871, "fg": [ { "weight": 1, "sprite": 2321 }, { "weight": 1, "sprite": 2322 } ] }, - { "id": "corner", "bg": 1871, "fg": [ 2326, 2328, 2327, 2325 ] }, - { "id": "t_connection", "bg": 1871, "fg": [ 2336, 2338, 2337, 2335 ] }, - { "id": "edge", "bg": 1871, "fg": [ 2330, 2329 ] }, - { "id": "end_piece", "bg": 1871, "fg": [ 2332, 2334, 2333, 2331 ] }, - { "bg": 1871, "id": "unconnected", "fg": 2339 } + { "id": "center", "bg": 2013, "fg": [ { "weight": 1, "sprite": 2463 }, { "weight": 1, "sprite": 2464 } ] }, + { "id": "corner", "bg": 2013, "fg": [ 2468, 2470, 2469, 2467 ] }, + { "id": "t_connection", "bg": 2013, "fg": [ 2478, 2480, 2479, 2477 ] }, + { "id": "edge", "bg": 2013, "fg": [ 2472, 2471 ] }, + { "id": "end_piece", "bg": 2013, "fg": [ 2474, 2476, 2475, 2473 ] }, + { "bg": 2013, "id": "unconnected", "fg": 2481 } ] }, { "id": "t_sand_season_winter", "multitile": true, - "fg": 2339, - "bg": 1362, + "fg": 2481, + "bg": 1504, "additional_tiles": [ - { "id": "center", "bg": 1362, "fg": [ { "weight": 1, "sprite": 2321 }, { "weight": 1, "sprite": 2322 } ] }, - { "id": "corner", "bg": 1362, "fg": [ 2326, 2328, 2327, 2325 ] }, - { "id": "t_connection", "bg": 1362, "fg": [ 2336, 2338, 2337, 2335 ] }, - { "id": "edge", "bg": 1362, "fg": [ 2330, 2329 ] }, - { "id": "end_piece", "bg": 1362, "fg": [ 2332, 2334, 2333, 2331 ] }, - { "bg": 1362, "id": "unconnected", "fg": 2339 } + { "id": "center", "bg": 1504, "fg": [ { "weight": 1, "sprite": 2463 }, { "weight": 1, "sprite": 2464 } ] }, + { "id": "corner", "bg": 1504, "fg": [ 2468, 2470, 2469, 2467 ] }, + { "id": "t_connection", "bg": 1504, "fg": [ 2478, 2480, 2479, 2477 ] }, + { "id": "edge", "bg": 1504, "fg": [ 2472, 2471 ] }, + { "id": "end_piece", "bg": 1504, "fg": [ 2474, 2476, 2475, 2473 ] }, + { "bg": 1504, "id": "unconnected", "fg": 2481 } ] }, { "id": [ "t_sandmound_season_spring", "t_sandmound_season_summer", "t_sandmound_season_autumn" ], - "fg": 2340 + "fg": 2482 }, - { "id": "t_sandmound_season_winter", "fg": 4851 }, + { "id": "t_sandmound_season_winter", "fg": 5008 }, { "id": "t_scrap_floor", "multitile": true, - "fg": 2356, + "fg": 2498, "additional_tiles": [ - { "id": "center", "fg": 2341 }, - { "id": "corner", "fg": [ 2343, 2345, 2344, 2342 ] }, - { "id": "t_connection", "fg": [ 2353, 2355, 2354, 2352 ] }, - { "id": "edge", "fg": [ 2347, 2346 ] }, - { "id": "end_piece", "fg": [ 2349, 2351, 2350, 2348 ] }, - { "id": "unconnected", "fg": 2356 } + { "id": "center", "fg": 2483 }, + { "id": "corner", "fg": [ 2485, 2487, 2486, 2484 ] }, + { "id": "t_connection", "fg": [ 2495, 2497, 2496, 2494 ] }, + { "id": "edge", "fg": [ 2489, 2488 ] }, + { "id": "end_piece", "fg": [ 2491, 2493, 2492, 2490 ] }, + { "id": "unconnected", "fg": 2498 } ] }, { "id": "t_scrap_wall", "multitile": true, - "fg": 2372, + "fg": 2514, "additional_tiles": [ - { "id": "center", "fg": 2357 }, - { "id": "corner", "fg": [ 2359, 2361, 2360, 2358 ] }, - { "id": "t_connection", "fg": [ 2369, 2371, 2370, 2368 ] }, - { "id": "edge", "fg": [ 2363, 2362 ] }, - { "id": "end_piece", "fg": [ 2365, 2367, 2366, 2364 ] }, - { "id": "unconnected", "fg": 2372 } + { "id": "center", "fg": 2499 }, + { "id": "corner", "fg": [ 2501, 2503, 2502, 2500 ] }, + { "id": "t_connection", "fg": [ 2511, 2513, 2512, 2510 ] }, + { "id": "edge", "fg": [ 2505, 2504 ] }, + { "id": "end_piece", "fg": [ 2507, 2509, 2508, 2506 ] }, + { "id": "unconnected", "fg": 2514 } ] }, { "id": "t_screened_porch_wall", "multitile": true, - "fg": 2388, - "bg": 1763, + "fg": 2530, + "bg": 1905, "additional_tiles": [ - { "id": "center", "bg": 1763, "fg": 2373 }, - { "id": "corner", "bg": 1763, "fg": [ 2375, 2377, 2376, 2374 ] }, - { "id": "t_connection", "bg": 1763, "fg": [ 2385, 2387, 2386, 2384 ] }, - { "id": "edge", "bg": 1763, "fg": [ 2379, 2378 ] }, - { "id": "end_piece", "bg": 1763, "fg": [ 2381, 2383, 2382, 2380 ] }, - { "bg": 1763, "id": "unconnected", "fg": [ 2388, 2388 ] } + { "id": "center", "bg": 1905, "fg": 2515 }, + { "id": "corner", "bg": 1905, "fg": [ 2517, 2519, 2518, 2516 ] }, + { "id": "t_connection", "bg": 1905, "fg": [ 2527, 2529, 2528, 2526 ] }, + { "id": "edge", "bg": 1905, "fg": [ 2521, 2520 ] }, + { "id": "end_piece", "bg": 1905, "fg": [ 2523, 2525, 2524, 2522 ] }, + { "bg": 1905, "id": "unconnected", "fg": [ 2530, 2530 ] } ] }, { "id": "t_sewage", "multitile": true, - "fg": 2404, + "fg": 2546, "additional_tiles": [ - { "id": "center", "fg": 2389 }, - { "id": "corner", "fg": [ 2391, 2393, 2392, 2390 ] }, - { "id": "t_connection", "fg": [ 2401, 2403, 2402, 2400 ] }, - { "id": "edge", "fg": [ 2395, 2394 ] }, - { "id": "end_piece", "fg": [ 2397, 2399, 2398, 2396 ] }, - { "id": "unconnected", "fg": [ 2404, 2404 ] } + { "id": "center", "fg": 2531 }, + { "id": "corner", "fg": [ 2533, 2535, 2534, 2532 ] }, + { "id": "t_connection", "fg": [ 2543, 2545, 2544, 2542 ] }, + { "id": "edge", "fg": [ 2537, 2536 ] }, + { "id": "end_piece", "fg": [ 2539, 2541, 2540, 2538 ] }, + { "id": "unconnected", "fg": [ 2546, 2546 ] } ] }, { "id": "t_sewage_pipe", "multitile": true, - "fg": 2420, + "fg": 2562, "additional_tiles": [ - { "id": "center", "fg": 2405 }, - { "id": "corner", "fg": [ 2407, 2409, 2408, 2406 ] }, - { "id": "t_connection", "fg": [ 2417, 2419, 2418, 2416 ] }, - { "id": "edge", "fg": [ 2411, 2410 ] }, - { "id": "end_piece", "fg": [ 2413, 2415, 2414, 2412 ] }, - { "id": "unconnected", "fg": [ 2420, 2420 ] } + { "id": "center", "fg": 2547 }, + { "id": "corner", "fg": [ 2549, 2551, 2550, 2548 ] }, + { "id": "t_connection", "fg": [ 2559, 2561, 2560, 2558 ] }, + { "id": "edge", "fg": [ 2553, 2552 ] }, + { "id": "end_piece", "fg": [ 2555, 2557, 2556, 2554 ] }, + { "id": "unconnected", "fg": [ 2562, 2562 ] } ] }, { "id": "t_shingle_flat_roof", "multitile": true, - "fg": 2436, - "additional_tiles": [ - { "id": "center", "fg": 2421 }, - { "id": "corner", "fg": [ 2423, 2425, 2424, 2422 ] }, - { "id": "t_connection", "fg": [ 2433, 2435, 2434, 2432 ] }, - { "id": "edge", "fg": [ 2427, 2426 ] }, - { "id": "end_piece", "fg": [ 2429, 2431, 2430, 2428 ] }, - { "id": "unconnected", "fg": 2436 } - ] - }, - { "id": "t_shrub", "fg": 2437, "bg": 1866 }, - { "id": "t_shrub_season_summer", "fg": 2437, "bg": 1876 }, - { "id": "t_shrub_season_autumn", "fg": 2437, "bg": 1871 }, - { "id": "t_shrub_season_winter", "fg": 2438, "bg": 1361 }, - { "id": "t_shrub_blackberry", "fg": 2439, "bg": 1866 }, - { "id": "t_shrub_blackberry_harvested", "fg": 2440, "bg": 1876 }, - { "id": "t_shrub_blackberry_season_summer", "fg": 2441, "bg": 1876 }, - { "id": "t_shrub_blackberry_season_autumn", "fg": 2439, "bg": 1871 }, - { "id": "t_shrub_blackberry_season_winter", "fg": 2442, "bg": 1361 }, - { "id": "t_shrub_blueberry", "fg": 2443, "bg": 1866 }, - { "id": "t_shrub_blueberry_harvested", "fg": 2444, "bg": 1876 }, - { "id": "t_shrub_blueberry_season_summer", "fg": 2445, "bg": 1876 }, - { "id": "t_shrub_blueberry_season_autumn", "fg": 2443, "bg": 1871 }, - { "id": "t_shrub_blueberry_season_winter", "fg": 2446, "bg": 1361 }, - { "id": "t_shrub_grape", "fg": 2447, "bg": 1866 }, - { "id": "t_shrub_grape_harvested", "fg": 2448, "bg": 1876 }, - { "id": "t_shrub_grape_season_summer", "fg": 2449, "bg": 1876 }, - { "id": "t_shrub_grape_season_autumn", "fg": 2447, "bg": 1871 }, - { "id": "t_shrub_grape_season_winter", "fg": 2450, "bg": 1361 }, - { "id": "t_shrub_huckleberry", "fg": 2451, "bg": 1866 }, - { "id": "t_shrub_huckleberry_harvested", "fg": 2452, "bg": 1876 }, - { "id": "t_shrub_huckleberry_season_summer", "fg": 2453, "bg": 1876 }, - { "id": "t_shrub_huckleberry_season_autumn", "fg": 2451, "bg": 1871 }, - { "id": "t_shrub_huckleberry_season_winter", "fg": 2454, "bg": 1361 }, - { "id": "t_shrub_hydrangea", "fg": 2456, "bg": 1866 }, - { "id": "t_shrub_hydrangea_harvested", "fg": 2455, "bg": 1866 }, - { "id": "t_shrub_hydrangea_season_summer", "fg": 2457, "bg": 1876 }, - { "id": "t_shrub_hydrangea_season_autumn", "fg": 2456, "bg": 1871 }, - { "id": "t_shrub_hydrangea_season_winter", "fg": 2458, "bg": 1361 }, - { "id": "t_shrub_lilac", "fg": 2460, "bg": 1866 }, - { "id": "t_shrub_lilac_harvested", "fg": 2459, "bg": 1866 }, - { "id": "t_shrub_lilac_season_summer", "fg": 2461, "bg": 1876 }, - { "id": "t_shrub_lilac_season_autumn", "fg": 2459, "bg": 1871 }, - { "id": "t_shrub_lilac_season_winter", "fg": 2462, "bg": 1361 }, - { "id": "t_shrub_peanut", "fg": 2463, "bg": 1866 }, - { "id": "t_shrub_peanut_harvested", "fg": 2465, "bg": 1871 }, - { "id": "t_shrub_peanut_season_summer", "fg": 2463, "bg": 1876 }, - { "id": "t_shrub_peanut_season_autumn", "fg": 2464, "bg": 1871 }, - { "id": "t_shrub_peanut_season_winter", "fg": 2466, "bg": 1361 }, - { "id": "t_shrub_raspberry", "fg": 2467, "bg": 1866 }, - { "id": "t_shrub_raspberry_harvested", "fg": 2468, "bg": 1876 }, - { "id": "t_shrub_raspberry_season_summer", "fg": 2469, "bg": 1876 }, - { "id": "t_shrub_raspberry_season_autumn", "fg": 2467, "bg": 1871 }, - { "id": "t_shrub_raspberry_season_winter", "fg": 2470, "bg": 1361 }, - { "id": "t_shrub_rose", "fg": 2472, "bg": 1866 }, - { "id": "t_shrub_rose_season_summer", "fg": 2472, "bg": 1876 }, - { "id": "t_shrub_rose_harvested", "fg": 2472, "bg": 1871 }, - { "id": "t_shrub_rose_season_autumn", "fg": 2471, "bg": 1871 }, - { "id": "t_shrub_rose_season_winter", "fg": 2473, "bg": 1361 }, - { "id": "t_shrub_strawberry", "fg": 2474, "bg": 1866 }, - { "id": "t_shrub_strawberry_harvested", "fg": 2475, "bg": 1876 }, - { "id": "t_shrub_strawberry_season_summer", "fg": 2476, "bg": 1876 }, - { "id": "t_shrub_strawberry_season_autumn", "fg": 2474, "bg": 1871 }, - { "id": "t_shrub_strawberry_season_winter", "fg": 2477, "bg": 1361 }, + "fg": 2578, + "additional_tiles": [ + { "id": "center", "fg": 2563 }, + { "id": "corner", "fg": [ 2565, 2567, 2566, 2564 ] }, + { "id": "t_connection", "fg": [ 2575, 2577, 2576, 2574 ] }, + { "id": "edge", "fg": [ 2569, 2568 ] }, + { "id": "end_piece", "fg": [ 2571, 2573, 2572, 2570 ] }, + { "id": "unconnected", "fg": 2578 } + ] + }, + { "id": "t_shrub", "fg": 2579, "bg": 2008 }, + { "id": "t_shrub_season_summer", "fg": 2579, "bg": 2018 }, + { "id": "t_shrub_season_autumn", "fg": 2579, "bg": 2013 }, + { "id": "t_shrub_season_winter", "fg": 2580, "bg": 1503 }, + { "id": "t_shrub_blackberry", "fg": 2581, "bg": 2008 }, + { "id": "t_shrub_blackberry_harvested", "fg": 2582, "bg": 2018 }, + { "id": "t_shrub_blackberry_season_summer", "fg": 2583, "bg": 2018 }, + { "id": "t_shrub_blackberry_season_autumn", "fg": 2581, "bg": 2013 }, + { "id": "t_shrub_blackberry_season_winter", "fg": 2584, "bg": 1503 }, + { "id": "t_shrub_blueberry", "fg": 2585, "bg": 2008 }, + { "id": "t_shrub_blueberry_harvested", "fg": 2586, "bg": 2018 }, + { "id": "t_shrub_blueberry_season_summer", "fg": 2587, "bg": 2018 }, + { "id": "t_shrub_blueberry_season_autumn", "fg": 2585, "bg": 2013 }, + { "id": "t_shrub_blueberry_season_winter", "fg": 2588, "bg": 1503 }, + { "id": "t_shrub_grape", "fg": 2589, "bg": 2008 }, + { "id": "t_shrub_grape_harvested", "fg": 2590, "bg": 2018 }, + { "id": "t_shrub_grape_season_summer", "fg": 2591, "bg": 2018 }, + { "id": "t_shrub_grape_season_autumn", "fg": 2589, "bg": 2013 }, + { "id": "t_shrub_grape_season_winter", "fg": 2592, "bg": 1503 }, + { "id": "t_shrub_huckleberry", "fg": 2593, "bg": 2008 }, + { "id": "t_shrub_huckleberry_harvested", "fg": 2594, "bg": 2018 }, + { "id": "t_shrub_huckleberry_season_summer", "fg": 2595, "bg": 2018 }, + { "id": "t_shrub_huckleberry_season_autumn", "fg": 2593, "bg": 2013 }, + { "id": "t_shrub_huckleberry_season_winter", "fg": 2596, "bg": 1503 }, + { "id": "t_shrub_hydrangea", "fg": 2598, "bg": 2008 }, + { "id": "t_shrub_hydrangea_harvested", "fg": 2597, "bg": 2008 }, + { "id": "t_shrub_hydrangea_season_summer", "fg": 2599, "bg": 2018 }, + { "id": "t_shrub_hydrangea_season_autumn", "fg": 2598, "bg": 2013 }, + { "id": "t_shrub_hydrangea_season_winter", "fg": 2600, "bg": 1503 }, + { "id": "t_shrub_lilac", "fg": 2602, "bg": 2008 }, + { "id": "t_shrub_lilac_harvested", "fg": 2601, "bg": 2008 }, + { "id": "t_shrub_lilac_season_summer", "fg": 2603, "bg": 2018 }, + { "id": "t_shrub_lilac_season_autumn", "fg": 2601, "bg": 2013 }, + { "id": "t_shrub_lilac_season_winter", "fg": 2604, "bg": 1503 }, + { "id": "t_shrub_peanut", "fg": 2605, "bg": 2008 }, + { "id": "t_shrub_peanut_harvested", "fg": 2607, "bg": 2013 }, + { "id": "t_shrub_peanut_season_summer", "fg": 2605, "bg": 2018 }, + { "id": "t_shrub_peanut_season_autumn", "fg": 2606, "bg": 2013 }, + { "id": "t_shrub_peanut_season_winter", "fg": 2608, "bg": 1503 }, + { "id": "t_shrub_raspberry", "fg": 2609, "bg": 2008 }, + { "id": "t_shrub_raspberry_harvested", "fg": 2610, "bg": 2018 }, + { "id": "t_shrub_raspberry_season_summer", "fg": 2611, "bg": 2018 }, + { "id": "t_shrub_raspberry_season_autumn", "fg": 2609, "bg": 2013 }, + { "id": "t_shrub_raspberry_season_winter", "fg": 2612, "bg": 1503 }, + { "id": "t_shrub_rose", "fg": 2614, "bg": 2008 }, + { "id": "t_shrub_rose_season_summer", "fg": 2614, "bg": 2018 }, + { "id": "t_shrub_rose_harvested", "fg": 2614, "bg": 2013 }, + { "id": "t_shrub_rose_season_autumn", "fg": 2613, "bg": 2013 }, + { "id": "t_shrub_rose_season_winter", "fg": 2615, "bg": 1503 }, + { "id": "t_shrub_strawberry", "fg": 2616, "bg": 2008 }, + { "id": "t_shrub_strawberry_harvested", "fg": 2617, "bg": 2018 }, + { "id": "t_shrub_strawberry_season_summer", "fg": 2618, "bg": 2018 }, + { "id": "t_shrub_strawberry_season_autumn", "fg": 2616, "bg": 2013 }, + { "id": "t_shrub_strawberry_season_winter", "fg": 2619, "bg": 1503 }, { "id": [ "t_sidewalk", "t_sidewalk_bg_dp" ], "multitile": true, - "fg": 2493, + "fg": 2635, "additional_tiles": [ - { "id": "center", "fg": 2478 }, - { "id": "corner", "fg": [ 2480, 2482, 2481, 2479 ] }, - { "id": "t_connection", "fg": [ 2490, 2492, 2491, 2489 ] }, - { "id": "edge", "fg": [ 2484, 2483 ] }, - { "id": "end_piece", "fg": [ 2486, 2488, 2487, 2485 ] }, - { "id": "unconnected", "fg": 2493 } + { "id": "center", "fg": 2620 }, + { "id": "corner", "fg": [ 2622, 2624, 2623, 2621 ] }, + { "id": "t_connection", "fg": [ 2632, 2634, 2633, 2631 ] }, + { "id": "edge", "fg": [ 2626, 2625 ] }, + { "id": "end_piece", "fg": [ 2628, 2630, 2629, 2627 ] }, + { "id": "unconnected", "fg": 2635 } ] }, - { "id": "t_sidewalk_season_winter", "fg": 1362 }, + { "id": "t_sidewalk_season_winter", "fg": 1504 }, { "id": "t_strconc_floor", "multitile": true, - "fg": 2510, + "fg": 2652, "additional_tiles": [ - { "id": "center", "fg": 2495 }, - { "id": "corner", "fg": [ 2497, 2499, 2498, 2496 ] }, - { "id": "t_connection", "fg": [ 2507, 2509, 2508, 2506 ] }, - { "id": "edge", "fg": [ 2501, 2500 ] }, - { "id": "end_piece", "fg": [ 2503, 2505, 2504, 2502 ] }, - { "id": "unconnected", "fg": 2510 } + { "id": "center", "fg": 2637 }, + { "id": "corner", "fg": [ 2639, 2641, 2640, 2638 ] }, + { "id": "t_connection", "fg": [ 2649, 2651, 2650, 2648 ] }, + { "id": "edge", "fg": [ 2643, 2642 ] }, + { "id": "end_piece", "fg": [ 2645, 2647, 2646, 2644 ] }, + { "id": "unconnected", "fg": 2652 } ] }, - { "id": "t_stump", "fg": 2511, "bg": 1866 }, - { "id": "t_stump_season_summer", "fg": 2511, "bg": 1876 }, - { "id": "t_stump_season_autumn", "fg": 2511, "bg": 1871 }, - { "id": "t_stump_season_winter", "fg": 2511, "bg": 1361 }, - { "id": "f_tatami", "fg": [ { "weight": 100, "sprite": 2512 }, { "weight": 100, "sprite": 2513 } ] }, + { "id": "t_stump", "fg": 2653, "bg": 2008 }, + { "id": "t_stump_season_summer", "fg": 2653, "bg": 2018 }, + { "id": "t_stump_season_autumn", "fg": 2653, "bg": 2013 }, + { "id": "t_stump_season_winter", "fg": 2653, "bg": 1503 }, + { "id": "f_tatami", "fg": [ { "weight": 100, "sprite": 2654 }, { "weight": 100, "sprite": 2655 } ] }, { "id": "t_thconc_floor", "multitile": true, - "fg": 2529, + "fg": 2671, "additional_tiles": [ - { "id": "center", "fg": 2514 }, - { "id": "corner", "fg": [ 2516, 2518, 2517, 2515 ] }, - { "id": "t_connection", "fg": [ 2526, 2528, 2527, 2525 ] }, - { "id": "edge", "fg": [ 2520, 2519 ] }, - { "id": "end_piece", "fg": [ 2522, 2524, 2523, 2521 ] }, - { "id": "unconnected", "fg": 2529 } + { "id": "center", "fg": 2656 }, + { "id": "corner", "fg": [ 2658, 2660, 2659, 2657 ] }, + { "id": "t_connection", "fg": [ 2668, 2670, 2669, 2667 ] }, + { "id": "edge", "fg": [ 2662, 2661 ] }, + { "id": "end_piece", "fg": [ 2664, 2666, 2665, 2663 ] }, + { "id": "unconnected", "fg": 2671 } ] }, - { "id": "t_underbrush", "fg": 2530, "bg": 1866 }, - { "id": "t_underbrush_harvested_spring", "fg": 2531, "bg": 1866 }, - { "id": "t_underbrush_season_summer", "fg": 2530, "bg": 1876 }, - { "id": "t_underbrush_harvested_summer", "fg": 2531, "bg": 1876 }, - { "id": "t_underbrush_season_autumn", "fg": 2530, "bg": 1871 }, - { "id": "t_underbrush_harvested_autumn", "fg": 2531, "bg": 1871 }, - { "id": "t_underbrush_harvested_winter", "fg": 2531, "bg": 1361 }, - { "id": "t_underbrush_season_winter", "fg": 2530, "bg": 1361 }, + { "id": "t_underbrush", "fg": 2672, "bg": 2008 }, + { "id": "t_underbrush_harvested_spring", "fg": 2673, "bg": 2008 }, + { "id": "t_underbrush_season_summer", "fg": 2672, "bg": 2018 }, + { "id": "t_underbrush_harvested_summer", "fg": 2673, "bg": 2018 }, + { "id": "t_underbrush_season_autumn", "fg": 2672, "bg": 2013 }, + { "id": "t_underbrush_harvested_autumn", "fg": 2673, "bg": 2013 }, + { "id": "t_underbrush_harvested_winter", "fg": 2673, "bg": 1503 }, + { "id": "t_underbrush_season_winter", "fg": 2672, "bg": 1503 }, { "id": "t_wall", "multitile": true, - "fg": 2547, + "fg": 2689, "additional_tiles": [ - { "id": "center", "fg": 2532 }, - { "id": "corner", "fg": [ 2534, 2536, 2535, 2533 ] }, - { "id": "t_connection", "fg": [ 2544, 2546, 2545, 2543 ] }, - { "id": "edge", "fg": [ 2538, 2537 ] }, - { "id": "end_piece", "fg": [ 2540, 2542, 2541, 2539 ] }, - { "id": "unconnected", "fg": 2547 } + { "id": "center", "fg": 2674 }, + { "id": "corner", "fg": [ 2676, 2678, 2677, 2675 ] }, + { "id": "t_connection", "fg": [ 2686, 2688, 2687, 2685 ] }, + { "id": "edge", "fg": [ 2680, 2679 ] }, + { "id": "end_piece", "fg": [ 2682, 2684, 2683, 2681 ] }, + { "id": "unconnected", "fg": 2689 } ] }, { "id": "t_wall_b", "multitile": true, - "fg": 2563, + "fg": 2705, "additional_tiles": [ - { "id": "center", "fg": 2548 }, - { "id": "corner", "fg": [ 2550, 2552, 2551, 2549 ] }, - { "id": "t_connection", "fg": [ 2560, 2562, 2561, 2559 ] }, - { "id": "edge", "fg": [ 2554, 2553 ] }, - { "id": "end_piece", "fg": [ 2556, 2558, 2557, 2555 ] }, - { "id": "unconnected", "fg": 2563 } + { "id": "center", "fg": 2690 }, + { "id": "corner", "fg": [ 2692, 2694, 2693, 2691 ] }, + { "id": "t_connection", "fg": [ 2702, 2704, 2703, 2701 ] }, + { "id": "edge", "fg": [ 2696, 2695 ] }, + { "id": "end_piece", "fg": [ 2698, 2700, 2699, 2697 ] }, + { "id": "unconnected", "fg": 2705 } ] }, { "id": "t_wall_g", "multitile": true, - "fg": 2579, + "fg": 2721, "additional_tiles": [ - { "id": "center", "fg": 2564 }, - { "id": "corner", "fg": [ 2566, 2568, 2567, 2565 ] }, - { "id": "t_connection", "fg": [ 2576, 2578, 2577, 2575 ] }, - { "id": "edge", "fg": [ 2570, 2569 ] }, - { "id": "end_piece", "fg": [ 2572, 2574, 2573, 2571 ] }, - { "id": "unconnected", "fg": 2579 } + { "id": "center", "fg": 2706 }, + { "id": "corner", "fg": [ 2708, 2710, 2709, 2707 ] }, + { "id": "t_connection", "fg": [ 2718, 2720, 2719, 2717 ] }, + { "id": "edge", "fg": [ 2712, 2711 ] }, + { "id": "end_piece", "fg": [ 2714, 2716, 2715, 2713 ] }, + { "id": "unconnected", "fg": 2721 } ] }, { "id": [ "t_wall_glass", "t_wall_glass_alarm" ], "multitile": true, - "fg": 2595, + "fg": 2737, "additional_tiles": [ - { "id": "center", "fg": 2580 }, - { "id": "corner", "fg": [ 2582, 2584, 2583, 2581 ] }, - { "id": "t_connection", "fg": [ 2592, 2594, 2593, 2591 ] }, - { "id": "edge", "fg": [ 2586, 2585 ] }, - { "id": "end_piece", "fg": [ 2588, 2590, 2589, 2587 ] }, - { "id": "unconnected", "fg": 2595 } + { "id": "center", "fg": 2722 }, + { "id": "corner", "fg": [ 2724, 2726, 2725, 2723 ] }, + { "id": "t_connection", "fg": [ 2734, 2736, 2735, 2733 ] }, + { "id": "edge", "fg": [ 2728, 2727 ] }, + { "id": "end_piece", "fg": [ 2730, 2732, 2731, 2729 ] }, + { "id": "unconnected", "fg": 2737 } ] }, { "id": "t_wall_log", "multitile": true, - "fg": 2611, - "bg": 1866, + "fg": 2753, + "bg": 2008, "additional_tiles": [ - { "id": "center", "fg": 2596 }, - { "id": "corner", "fg": [ 2598, 2600, 2599, 2597 ] }, - { "id": "t_connection", "fg": [ 2608, 2610, 2609, 2607 ] }, - { "id": "edge", "bg": 1866, "fg": [ 2602, 2601 ] }, - { "id": "end_piece", "bg": 1866, "fg": [ 2604, 2606, 2605, 2603 ] }, - { "bg": 1866, "id": "unconnected", "fg": 2611 } + { "id": "center", "fg": 2738 }, + { "id": "corner", "fg": [ 2740, 2742, 2741, 2739 ] }, + { "id": "t_connection", "fg": [ 2750, 2752, 2751, 2749 ] }, + { "id": "edge", "bg": 2008, "fg": [ 2744, 2743 ] }, + { "id": "end_piece", "bg": 2008, "fg": [ 2746, 2748, 2747, 2745 ] }, + { "bg": 2008, "id": "unconnected", "fg": 2753 } ] }, { "id": "t_wall_p", "multitile": true, - "fg": 2627, + "fg": 2769, "additional_tiles": [ - { "id": "center", "fg": 2612 }, - { "id": "corner", "fg": [ 2614, 2616, 2615, 2613 ] }, - { "id": "t_connection", "fg": [ 2624, 2626, 2625, 2623 ] }, - { "id": "edge", "fg": [ 2618, 2617 ] }, - { "id": "end_piece", "fg": [ 2620, 2622, 2621, 2619 ] }, - { "id": "unconnected", "fg": 2627 } + { "id": "center", "fg": 2754 }, + { "id": "corner", "fg": [ 2756, 2758, 2757, 2755 ] }, + { "id": "t_connection", "fg": [ 2766, 2768, 2767, 2765 ] }, + { "id": "edge", "fg": [ 2760, 2759 ] }, + { "id": "end_piece", "fg": [ 2762, 2764, 2763, 2761 ] }, + { "id": "unconnected", "fg": 2769 } ] }, { "id": "t_wall_r", "multitile": true, - "fg": 2643, + "fg": 2785, "additional_tiles": [ - { "id": "center", "fg": 2628 }, - { "id": "corner", "fg": [ 2630, 2632, 2631, 2629 ] }, - { "id": "t_connection", "fg": [ 2640, 2642, 2641, 2639 ] }, - { "id": "edge", "fg": [ 2634, 2633 ] }, - { "id": "end_piece", "fg": [ 2636, 2638, 2637, 2635 ] }, - { "id": "unconnected", "fg": 2643 } + { "id": "center", "fg": 2770 }, + { "id": "corner", "fg": [ 2772, 2774, 2773, 2771 ] }, + { "id": "t_connection", "fg": [ 2782, 2784, 2783, 2781 ] }, + { "id": "edge", "fg": [ 2776, 2775 ] }, + { "id": "end_piece", "fg": [ 2778, 2780, 2779, 2777 ] }, + { "id": "unconnected", "fg": 2785 } ] }, { "id": "t_wall_resin", "multitile": true, - "fg": 2661, + "fg": 2803, "additional_tiles": [ - { "id": "center", "fg": 2646 }, - { "id": "corner", "fg": [ 2648, 2650, 2649, 2647 ] }, - { "id": "t_connection", "fg": [ 2658, 2660, 2659, 2657 ] }, - { "id": "edge", "fg": [ 2652, 2651 ] }, - { "id": "end_piece", "fg": [ 2654, 2656, 2655, 2653 ] }, - { "id": "unconnected", "fg": 2661 } + { "id": "center", "fg": 2788 }, + { "id": "corner", "fg": [ 2790, 2792, 2791, 2789 ] }, + { "id": "t_connection", "fg": [ 2800, 2802, 2801, 2799 ] }, + { "id": "edge", "fg": [ 2794, 2793 ] }, + { "id": "end_piece", "fg": [ 2796, 2798, 2797, 2795 ] }, + { "id": "unconnected", "fg": 2803 } ] }, - { "id": "t_resin_hole_c", "fg": 2644 }, - { "id": "t_resin_hole_o", "fg": 2645 }, + { "id": "t_resin_hole_c", "fg": 2786 }, + { "id": "t_resin_hole_o", "fg": 2787 }, { "id": "t_wall_w", "multitile": true, - "fg": 2677, + "fg": 2819, "additional_tiles": [ - { "id": "center", "fg": 2662 }, - { "id": "corner", "fg": [ 2664, 2666, 2665, 2663 ] }, - { "id": "t_connection", "fg": [ 2674, 2676, 2675, 2673 ] }, - { "id": "edge", "fg": [ 2668, 2667 ] }, - { "id": "end_piece", "fg": [ 2670, 2672, 2671, 2669 ] }, - { "id": "unconnected", "fg": 2677 } + { "id": "center", "fg": 2804 }, + { "id": "corner", "fg": [ 2806, 2808, 2807, 2805 ] }, + { "id": "t_connection", "fg": [ 2816, 2818, 2817, 2815 ] }, + { "id": "edge", "fg": [ 2810, 2809 ] }, + { "id": "end_piece", "fg": [ 2812, 2814, 2813, 2811 ] }, + { "id": "unconnected", "fg": 2819 } ] }, { "id": [ "t_wall_wood", "t_wall_wood_chipped", "t_wall_wood_broken" ], "multitile": true, - "fg": 2693, + "fg": 2835, "additional_tiles": [ - { "id": "center", "fg": 2678 }, - { "id": "corner", "fg": [ 2680, 2682, 2681, 2679 ] }, - { "id": "t_connection", "fg": [ 2690, 2692, 2691, 2689 ] }, - { "id": "edge", "fg": [ 2684, 2683 ] }, - { "id": "end_piece", "fg": [ 2686, 2688, 2687, 2685 ] }, - { "id": "unconnected", "fg": 2693 } + { "id": "center", "fg": 2820 }, + { "id": "corner", "fg": [ 2822, 2824, 2823, 2821 ] }, + { "id": "t_connection", "fg": [ 2832, 2834, 2833, 2831 ] }, + { "id": "edge", "fg": [ 2826, 2825 ] }, + { "id": "end_piece", "fg": [ 2828, 2830, 2829, 2827 ] }, + { "id": "unconnected", "fg": 2835 } ] }, { "id": "t_wall_y", "multitile": true, - "fg": 2709, + "fg": 2851, "additional_tiles": [ - { "id": "center", "fg": 2694 }, - { "id": "corner", "fg": [ 2696, 2698, 2697, 2695 ] }, - { "id": "t_connection", "fg": [ 2706, 2708, 2707, 2705 ] }, - { "id": "edge", "fg": [ 2700, 2699 ] }, - { "id": "end_piece", "fg": [ 2702, 2704, 2703, 2701 ] }, - { "id": "unconnected", "fg": 2709 } + { "id": "center", "fg": 2836 }, + { "id": "corner", "fg": [ 2838, 2840, 2839, 2837 ] }, + { "id": "t_connection", "fg": [ 2848, 2850, 2849, 2847 ] }, + { "id": "edge", "fg": [ 2842, 2841 ] }, + { "id": "end_piece", "fg": [ 2844, 2846, 2845, 2843 ] }, + { "id": "unconnected", "fg": 2851 } ] }, { "id": [ "t_water_dp", "t_swater_dp" ], "multitile": true, - "fg": 2728, - "bg": 1866, + "fg": 2870, + "bg": 2008, "additional_tiles": [ { "id": "center", - "bg": 1866, + "bg": 2008, "fg": [ - { "weight": 1, "sprite": 2710 }, - { "weight": 1, "sprite": 2711 }, - { "weight": 1, "sprite": 2712 }, - { "weight": 1, "sprite": 2713 } + { "weight": 1, "sprite": 2852 }, + { "weight": 1, "sprite": 2853 }, + { "weight": 1, "sprite": 2854 }, + { "weight": 1, "sprite": 2855 } ] }, - { "id": "corner", "bg": 1866, "fg": [ 2715, 2717, 2716, 2714 ] }, - { "id": "t_connection", "bg": 1866, "fg": [ 2725, 2727, 2726, 2724 ] }, - { "id": "edge", "bg": 1866, "fg": [ 2719, 2718 ] }, - { "id": "end_piece", "bg": 1866, "fg": [ 2721, 2723, 2722, 2720 ] }, - { "bg": 1866, "id": "unconnected", "fg": 2728 } + { "id": "corner", "bg": 2008, "fg": [ 2857, 2859, 2858, 2856 ] }, + { "id": "t_connection", "bg": 2008, "fg": [ 2867, 2869, 2868, 2866 ] }, + { "id": "edge", "bg": 2008, "fg": [ 2861, 2860 ] }, + { "id": "end_piece", "bg": 2008, "fg": [ 2863, 2865, 2864, 2862 ] }, + { "bg": 2008, "id": "unconnected", "fg": 2870 } ] }, { "id": [ "t_water_dp_season_summer", "t_swater_dp_season_summer" ], "multitile": true, - "fg": 2728, - "bg": 1876, + "fg": 2870, + "bg": 2018, "additional_tiles": [ { "id": "center", - "bg": 1876, - "fg": [ { "weight": 1, "sprite": 2710 }, { "weight": 1, "sprite": 2711 }, { "weight": 1, "sprite": 2712 } ] + "bg": 2018, + "fg": [ { "weight": 1, "sprite": 2852 }, { "weight": 1, "sprite": 2853 }, { "weight": 1, "sprite": 2854 } ] }, - { "id": "corner", "bg": 1876, "fg": [ 2715, 2717, 2716, 2714 ] }, - { "id": "t_connection", "bg": 1876, "fg": [ 2725, 2727, 2726, 2724 ] }, - { "id": "edge", "bg": 1876, "fg": [ 2719, 2718 ] }, - { "id": "end_piece", "bg": 1876, "fg": [ 2721, 2723, 2722, 2720 ] }, - { "bg": 1876, "id": "unconnected", "fg": 2728 } + { "id": "corner", "bg": 2018, "fg": [ 2857, 2859, 2858, 2856 ] }, + { "id": "t_connection", "bg": 2018, "fg": [ 2867, 2869, 2868, 2866 ] }, + { "id": "edge", "bg": 2018, "fg": [ 2861, 2860 ] }, + { "id": "end_piece", "bg": 2018, "fg": [ 2863, 2865, 2864, 2862 ] }, + { "bg": 2018, "id": "unconnected", "fg": 2870 } ] }, { "id": [ "t_water_dp_season_autumn", "t_swater_dp_season_autumn" ], "multitile": true, - "fg": 2728, - "bg": 1871, + "fg": 2870, + "bg": 2013, "additional_tiles": [ { "id": "center", - "bg": 1871, - "fg": [ { "weight": 1, "sprite": 2710 }, { "weight": 1, "sprite": 2711 }, { "weight": 1, "sprite": 2712 } ] + "bg": 2013, + "fg": [ { "weight": 1, "sprite": 2852 }, { "weight": 1, "sprite": 2853 }, { "weight": 1, "sprite": 2854 } ] }, - { "id": "corner", "bg": 1871, "fg": [ 2715, 2717, 2716, 2714 ] }, - { "id": "t_connection", "bg": 1871, "fg": [ 2725, 2727, 2726, 2724 ] }, - { "id": "edge", "bg": 1871, "fg": [ 2719, 2718 ] }, - { "id": "end_piece", "bg": 1871, "fg": [ 2721, 2723, 2722, 2720 ] }, - { "bg": 1871, "id": "unconnected", "fg": 2728 } + { "id": "corner", "bg": 2013, "fg": [ 2857, 2859, 2858, 2856 ] }, + { "id": "t_connection", "bg": 2013, "fg": [ 2867, 2869, 2868, 2866 ] }, + { "id": "edge", "bg": 2013, "fg": [ 2861, 2860 ] }, + { "id": "end_piece", "bg": 2013, "fg": [ 2863, 2865, 2864, 2862 ] }, + { "bg": 2013, "id": "unconnected", "fg": 2870 } ] }, { "id": [ "t_water_dp_season_winter", "t_swater_dp_season_winter" ], "multitile": true, - "fg": 2728, - "bg": 1362, + "fg": 2870, + "bg": 1504, "additional_tiles": [ { "id": "center", - "bg": 1362, - "fg": [ { "weight": 1, "sprite": 2710 }, { "weight": 1, "sprite": 2711 }, { "weight": 1, "sprite": 2712 } ] + "bg": 1504, + "fg": [ { "weight": 1, "sprite": 2852 }, { "weight": 1, "sprite": 2853 }, { "weight": 1, "sprite": 2854 } ] }, - { "id": "corner", "bg": 1362, "fg": [ 2715, 2717, 2716, 2714 ] }, - { "id": "t_connection", "bg": 1362, "fg": [ 2725, 2727, 2726, 2724 ] }, - { "id": "edge", "bg": 1362, "fg": [ 2719, 2718 ] }, - { "id": "end_piece", "bg": 1362, "fg": [ 2721, 2723, 2722, 2720 ] }, - { "bg": 1362, "id": "unconnected", "fg": 2728 } + { "id": "corner", "bg": 1504, "fg": [ 2857, 2859, 2858, 2856 ] }, + { "id": "t_connection", "bg": 1504, "fg": [ 2867, 2869, 2868, 2866 ] }, + { "id": "edge", "bg": 1504, "fg": [ 2861, 2860 ] }, + { "id": "end_piece", "bg": 1504, "fg": [ 2863, 2865, 2864, 2862 ] }, + { "bg": 1504, "id": "unconnected", "fg": 2870 } ] }, { "id": "t_water_hot", - "fg": 2744, - "bg": 1866, + "fg": 2886, + "bg": 2008, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 2729, "bg": 1866 }, - { "id": "corner", "fg": [ 2731, 2733, 2732, 2730 ], "bg": 1866 }, - { "id": "t_connection", "fg": [ 2741, 2743, 2742, 2740 ], "bg": 1866 }, - { "id": "edge", "fg": [ 2735, 2734 ], "bg": 1866 }, - { "id": "end_piece", "fg": [ 2737, 2739, 2738, 2736 ], "bg": 1866 }, - { "id": "unconnected", "fg": [ 2744, 2744 ], "bg": 1866 } + { "id": "center", "fg": 2871, "bg": 2008 }, + { "id": "corner", "fg": [ 2873, 2875, 2874, 2872 ], "bg": 2008 }, + { "id": "t_connection", "fg": [ 2883, 2885, 2884, 2882 ], "bg": 2008 }, + { "id": "edge", "fg": [ 2877, 2876 ], "bg": 2008 }, + { "id": "end_piece", "fg": [ 2879, 2881, 2880, 2878 ], "bg": 2008 }, + { "id": "unconnected", "fg": [ 2886, 2886 ], "bg": 2008 } ] }, { "id": "t_water_hot_season_summer", - "fg": 2744, - "bg": 1876, + "fg": 2886, + "bg": 2018, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 2729, "bg": 1876 }, - { "id": "corner", "fg": [ 2731, 2733, 2732, 2730 ], "bg": 1876 }, - { "id": "t_connection", "fg": [ 2741, 2743, 2742, 2740 ], "bg": 1876 }, - { "id": "edge", "fg": [ 2735, 2734 ], "bg": 1876 }, - { "id": "end_piece", "fg": [ 2737, 2739, 2738, 2736 ], "bg": 1876 }, - { "id": "unconnected", "fg": [ 2744, 2744 ], "bg": 1876 } + { "id": "center", "fg": 2871, "bg": 2018 }, + { "id": "corner", "fg": [ 2873, 2875, 2874, 2872 ], "bg": 2018 }, + { "id": "t_connection", "fg": [ 2883, 2885, 2884, 2882 ], "bg": 2018 }, + { "id": "edge", "fg": [ 2877, 2876 ], "bg": 2018 }, + { "id": "end_piece", "fg": [ 2879, 2881, 2880, 2878 ], "bg": 2018 }, + { "id": "unconnected", "fg": [ 2886, 2886 ], "bg": 2018 } ] }, { "id": "t_water_hot_season_autumn", - "fg": 2744, - "bg": 1871, + "fg": 2886, + "bg": 2013, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 2729, "bg": 1871 }, - { "id": "corner", "fg": [ 2731, 2733, 2732, 2730 ], "bg": 1871 }, - { "id": "t_connection", "fg": [ 2741, 2743, 2742, 2740 ], "bg": 1871 }, - { "id": "edge", "fg": [ 2735, 2734 ], "bg": 1871 }, - { "id": "end_piece", "fg": [ 2737, 2739, 2738, 2736 ], "bg": 1871 }, - { "id": "unconnected", "fg": [ 2744, 2744 ], "bg": 1871 } + { "id": "center", "fg": 2871, "bg": 2013 }, + { "id": "corner", "fg": [ 2873, 2875, 2874, 2872 ], "bg": 2013 }, + { "id": "t_connection", "fg": [ 2883, 2885, 2884, 2882 ], "bg": 2013 }, + { "id": "edge", "fg": [ 2877, 2876 ], "bg": 2013 }, + { "id": "end_piece", "fg": [ 2879, 2881, 2880, 2878 ], "bg": 2013 }, + { "id": "unconnected", "fg": [ 2886, 2886 ], "bg": 2013 } ] }, { "id": "t_water_hot_season_winter", - "fg": 2744, - "bg": 1362, + "fg": 2886, + "bg": 1504, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 2729, "bg": 1362 }, - { "id": "corner", "fg": [ 2731, 2733, 2732, 2730 ], "bg": 1362 }, - { "id": "t_connection", "fg": [ 2741, 2743, 2742, 2740 ], "bg": 1362 }, - { "id": "edge", "fg": [ 2735, 2734 ], "bg": 1362 }, - { "id": "end_piece", "fg": [ 2737, 2739, 2738, 2736 ], "bg": 1362 }, - { "id": "unconnected", "fg": [ 2744, 2744 ], "bg": 1362 } + { "id": "center", "fg": 2871, "bg": 1504 }, + { "id": "corner", "fg": [ 2873, 2875, 2874, 2872 ], "bg": 1504 }, + { "id": "t_connection", "fg": [ 2883, 2885, 2884, 2882 ], "bg": 1504 }, + { "id": "edge", "fg": [ 2877, 2876 ], "bg": 1504 }, + { "id": "end_piece", "fg": [ 2879, 2881, 2880, 2878 ], "bg": 1504 }, + { "id": "unconnected", "fg": [ 2886, 2886 ], "bg": 1504 } ] }, { "id": [ "t_water_moving_dp", "t_swater_moving_dp" ], "multitile": true, - "fg": 2761, - "bg": 1866, + "fg": 2903, + "bg": 2008, "additional_tiles": [ - { "id": "center", "bg": 1866, "fg": [ { "weight": 1, "sprite": 2745 }, { "weight": 1, "sprite": 2746 } ] }, - { "id": "corner", "bg": 1866, "fg": [ 2748, 2750, 2749, 2747 ] }, - { "id": "t_connection", "bg": 1866, "fg": [ 2758, 2760, 2759, 2757 ] }, - { "id": "edge", "bg": 1866, "fg": [ 2752, 2751 ] }, - { "id": "end_piece", "bg": 1866, "fg": [ 2754, 2756, 2755, 2753 ] }, - { "bg": 1866, "id": "unconnected", "fg": 2761 } + { "id": "center", "bg": 2008, "fg": [ { "weight": 1, "sprite": 2887 }, { "weight": 1, "sprite": 2888 } ] }, + { "id": "corner", "bg": 2008, "fg": [ 2890, 2892, 2891, 2889 ] }, + { "id": "t_connection", "bg": 2008, "fg": [ 2900, 2902, 2901, 2899 ] }, + { "id": "edge", "bg": 2008, "fg": [ 2894, 2893 ] }, + { "id": "end_piece", "bg": 2008, "fg": [ 2896, 2898, 2897, 2895 ] }, + { "bg": 2008, "id": "unconnected", "fg": 2903 } ] }, { "id": [ "t_water_moving_dp_season_summer", "t_swater_moving_dp_season_summer" ], "multitile": true, - "fg": 2761, - "bg": 1876, + "fg": 2903, + "bg": 2018, "additional_tiles": [ - { "id": "center", "bg": 1876, "fg": [ { "weight": 1, "sprite": 2745 }, { "weight": 1, "sprite": 2746 } ] }, - { "id": "corner", "bg": 1876, "fg": [ 2748, 2750, 2749, 2747 ] }, - { "id": "t_connection", "bg": 1876, "fg": [ 2758, 2760, 2759, 2757 ] }, - { "id": "edge", "bg": 1876, "fg": [ 2752, 2751 ] }, - { "id": "end_piece", "bg": 1876, "fg": [ 2754, 2756, 2755, 2753 ] }, - { "bg": 1876, "id": "unconnected", "fg": 2761 } + { "id": "center", "bg": 2018, "fg": [ { "weight": 1, "sprite": 2887 }, { "weight": 1, "sprite": 2888 } ] }, + { "id": "corner", "bg": 2018, "fg": [ 2890, 2892, 2891, 2889 ] }, + { "id": "t_connection", "bg": 2018, "fg": [ 2900, 2902, 2901, 2899 ] }, + { "id": "edge", "bg": 2018, "fg": [ 2894, 2893 ] }, + { "id": "end_piece", "bg": 2018, "fg": [ 2896, 2898, 2897, 2895 ] }, + { "bg": 2018, "id": "unconnected", "fg": 2903 } ] }, { "id": [ "t_water_moving_dp_season_autumn", "t_swater_moving_dp_season_autumn" ], "multitile": true, - "fg": 2761, - "bg": 1871, + "fg": 2903, + "bg": 2013, "additional_tiles": [ - { "id": "center", "bg": 1871, "fg": [ { "weight": 1, "sprite": 2745 }, { "weight": 1, "sprite": 2746 } ] }, - { "id": "corner", "bg": 1871, "fg": [ 2748, 2750, 2749, 2747 ] }, - { "id": "t_connection", "bg": 1871, "fg": [ 2758, 2760, 2759, 2757 ] }, - { "id": "edge", "bg": 1871, "fg": [ 2752, 2751 ] }, - { "id": "end_piece", "bg": 1871, "fg": [ 2754, 2756, 2755, 2753 ] }, - { "bg": 1871, "id": "unconnected", "fg": 2761 } + { "id": "center", "bg": 2013, "fg": [ { "weight": 1, "sprite": 2887 }, { "weight": 1, "sprite": 2888 } ] }, + { "id": "corner", "bg": 2013, "fg": [ 2890, 2892, 2891, 2889 ] }, + { "id": "t_connection", "bg": 2013, "fg": [ 2900, 2902, 2901, 2899 ] }, + { "id": "edge", "bg": 2013, "fg": [ 2894, 2893 ] }, + { "id": "end_piece", "bg": 2013, "fg": [ 2896, 2898, 2897, 2895 ] }, + { "bg": 2013, "id": "unconnected", "fg": 2903 } ] }, { "id": [ "t_water_moving_dp_season_winter", "t_swater_moving_dp_season_winter" ], "multitile": true, - "fg": 2761, - "bg": 1362, + "fg": 2903, + "bg": 1504, "additional_tiles": [ - { "id": "center", "bg": 1362, "fg": [ { "weight": 1, "sprite": 2745 }, { "weight": 1, "sprite": 2746 } ] }, - { "id": "corner", "bg": 1362, "fg": [ 2748, 2750, 2749, 2747 ] }, - { "id": "t_connection", "bg": 1362, "fg": [ 2758, 2760, 2759, 2757 ] }, - { "id": "edge", "bg": 1362, "fg": [ 2752, 2751 ] }, - { "id": "end_piece", "bg": 1362, "fg": [ 2754, 2756, 2755, 2753 ] }, - { "bg": 1362, "id": "unconnected", "fg": 2761 } + { "id": "center", "bg": 1504, "fg": [ { "weight": 1, "sprite": 2887 }, { "weight": 1, "sprite": 2888 } ] }, + { "id": "corner", "bg": 1504, "fg": [ 2890, 2892, 2891, 2889 ] }, + { "id": "t_connection", "bg": 1504, "fg": [ 2900, 2902, 2901, 2899 ] }, + { "id": "edge", "bg": 1504, "fg": [ 2894, 2893 ] }, + { "id": "end_piece", "bg": 1504, "fg": [ 2896, 2898, 2897, 2895 ] }, + { "bg": 1504, "id": "unconnected", "fg": 2903 } ] }, { "id": [ "t_water_moving_sh", "t_swater_moving_sh" ], "multitile": true, - "fg": 2780, - "bg": 1866, + "fg": 2922, + "bg": 2008, "additional_tiles": [ { "id": "center", - "bg": 1866, + "bg": 2008, "fg": [ - { "weight": 1, "sprite": 2762 }, - { "weight": 1, "sprite": 2763 }, - { "weight": 1, "sprite": 2764 }, - { "weight": 1, "sprite": 2765 } + { "weight": 1, "sprite": 2904 }, + { "weight": 1, "sprite": 2905 }, + { "weight": 1, "sprite": 2906 }, + { "weight": 1, "sprite": 2907 } ] }, - { "id": "corner", "bg": 1866, "fg": [ 2767, 2769, 2768, 2766 ] }, - { "id": "t_connection", "bg": 1866, "fg": [ 2777, 2779, 2778, 2776 ] }, - { "id": "edge", "bg": 1866, "fg": [ 2771, 2770 ] }, - { "id": "end_piece", "bg": 1866, "fg": [ 2773, 2775, 2774, 2772 ] }, - { "bg": 1866, "id": "unconnected", "fg": 2780 } + { "id": "corner", "bg": 2008, "fg": [ 2909, 2911, 2910, 2908 ] }, + { "id": "t_connection", "bg": 2008, "fg": [ 2919, 2921, 2920, 2918 ] }, + { "id": "edge", "bg": 2008, "fg": [ 2913, 2912 ] }, + { "id": "end_piece", "bg": 2008, "fg": [ 2915, 2917, 2916, 2914 ] }, + { "bg": 2008, "id": "unconnected", "fg": 2922 } ] }, { "id": [ "t_water_moving_sh_season_summer", "t_swater_moving_sh_season_summer" ], "multitile": true, - "fg": 2780, - "bg": 1876, + "fg": 2922, + "bg": 2018, "additional_tiles": [ { "id": "center", - "bg": 1876, + "bg": 2018, "fg": [ - { "weight": 1, "sprite": 2762 }, - { "weight": 1, "sprite": 2763 }, - { "weight": 1, "sprite": 2764 }, - { "weight": 1, "sprite": 2765 } + { "weight": 1, "sprite": 2904 }, + { "weight": 1, "sprite": 2905 }, + { "weight": 1, "sprite": 2906 }, + { "weight": 1, "sprite": 2907 } ] }, - { "id": "corner", "bg": 1876, "fg": [ 2767, 2769, 2768, 2766 ] }, - { "id": "t_connection", "bg": 1876, "fg": [ 2777, 2779, 2778, 2776 ] }, - { "id": "edge", "bg": 1876, "fg": [ 2771, 2770 ] }, - { "id": "end_piece", "bg": 1876, "fg": [ 2773, 2775, 2774, 2772 ] }, - { "bg": 1876, "id": "unconnected", "fg": 2780 } + { "id": "corner", "bg": 2018, "fg": [ 2909, 2911, 2910, 2908 ] }, + { "id": "t_connection", "bg": 2018, "fg": [ 2919, 2921, 2920, 2918 ] }, + { "id": "edge", "bg": 2018, "fg": [ 2913, 2912 ] }, + { "id": "end_piece", "bg": 2018, "fg": [ 2915, 2917, 2916, 2914 ] }, + { "bg": 2018, "id": "unconnected", "fg": 2922 } ] }, { "id": [ "t_water_moving_sh_season_autumn", "t_swater_moving_sh_season_autumn" ], "multitile": true, - "fg": 2780, - "bg": 1871, + "fg": 2922, + "bg": 2013, "additional_tiles": [ { "id": "center", - "bg": 1871, + "bg": 2013, "fg": [ - { "weight": 1, "sprite": 2762 }, - { "weight": 1, "sprite": 2763 }, - { "weight": 1, "sprite": 2764 }, - { "weight": 1, "sprite": 2765 } + { "weight": 1, "sprite": 2904 }, + { "weight": 1, "sprite": 2905 }, + { "weight": 1, "sprite": 2906 }, + { "weight": 1, "sprite": 2907 } ] }, - { "id": "corner", "bg": 1871, "fg": [ 2767, 2769, 2768, 2766 ] }, - { "id": "t_connection", "bg": 1871, "fg": [ 2777, 2779, 2778, 2776 ] }, - { "id": "edge", "bg": 1871, "fg": [ 2771, 2770 ] }, - { "id": "end_piece", "bg": 1871, "fg": [ 2773, 2775, 2774, 2772 ] }, - { "bg": 1871, "id": "unconnected", "fg": 2780 } + { "id": "corner", "bg": 2013, "fg": [ 2909, 2911, 2910, 2908 ] }, + { "id": "t_connection", "bg": 2013, "fg": [ 2919, 2921, 2920, 2918 ] }, + { "id": "edge", "bg": 2013, "fg": [ 2913, 2912 ] }, + { "id": "end_piece", "bg": 2013, "fg": [ 2915, 2917, 2916, 2914 ] }, + { "bg": 2013, "id": "unconnected", "fg": 2922 } ] }, { "id": [ "t_water_moving_sh_season_winter", "t_swater_moving_sh_season_winter" ], "multitile": true, - "fg": 2780, - "bg": 1362, + "fg": 2922, + "bg": 1504, "additional_tiles": [ { "id": "center", - "bg": 1362, + "bg": 1504, "fg": [ - { "weight": 1, "sprite": 2762 }, - { "weight": 1, "sprite": 2763 }, - { "weight": 1, "sprite": 2764 }, - { "weight": 1, "sprite": 2765 } + { "weight": 1, "sprite": 2904 }, + { "weight": 1, "sprite": 2905 }, + { "weight": 1, "sprite": 2906 }, + { "weight": 1, "sprite": 2907 } ] }, - { "id": "corner", "bg": 1362, "fg": [ 2767, 2769, 2768, 2766 ] }, - { "id": "t_connection", "bg": 1362, "fg": [ 2777, 2779, 2778, 2776 ] }, - { "id": "edge", "bg": 1362, "fg": [ 2771, 2770 ] }, - { "id": "end_piece", "bg": 1362, "fg": [ 2773, 2775, 2774, 2772 ] }, - { "bg": 1362, "id": "unconnected", "fg": 2780 } + { "id": "corner", "bg": 1504, "fg": [ 2909, 2911, 2910, 2908 ] }, + { "id": "t_connection", "bg": 1504, "fg": [ 2919, 2921, 2920, 2918 ] }, + { "id": "edge", "bg": 1504, "fg": [ 2913, 2912 ] }, + { "id": "end_piece", "bg": 1504, "fg": [ 2915, 2917, 2916, 2914 ] }, + { "bg": 1504, "id": "unconnected", "fg": 2922 } ] }, { "id": [ "t_water_pool", "t_water_pool_shallow" ], "multitile": true, - "fg": 2795, + "fg": 2937, "additional_tiles": [ { "id": "center", - "fg": [ { "weight": 1, "sprite": 2796 }, { "weight": 1, "sprite": 2797 }, { "weight": 1, "sprite": 2798 } ] + "fg": [ { "weight": 1, "sprite": 2938 }, { "weight": 1, "sprite": 2939 }, { "weight": 1, "sprite": 2940 } ] }, - { "id": "corner", "fg": [ 2782, 2784, 2783, 2781 ] }, - { "id": "t_connection", "fg": [ 2792, 2794, 2793, 2791 ] }, - { "id": "edge", "fg": [ 2786, 2785 ] }, - { "id": "end_piece", "fg": [ 2788, 2790, 2789, 2787 ] }, - { "id": "unconnected", "fg": [ 2795, 2795 ] } + { "id": "corner", "fg": [ 2924, 2926, 2925, 2923 ] }, + { "id": "t_connection", "fg": [ 2934, 2936, 2935, 2933 ] }, + { "id": "edge", "fg": [ 2928, 2927 ] }, + { "id": "end_piece", "fg": [ 2930, 2932, 2931, 2929 ] }, + { "id": "unconnected", "fg": [ 2937, 2937 ] } ] }, { "id": [ "t_water_sh", "t_swater_sh" ], "multitile": true, - "fg": 2814, - "bg": 1866, + "fg": 2956, + "bg": 2008, "additional_tiles": [ { "id": "center", - "bg": 1866, + "bg": 2008, "fg": [ - { "weight": 1, "sprite": 2796 }, - { "weight": 1, "sprite": 2797 }, - { "weight": 1, "sprite": 2798 }, - { "weight": 1, "sprite": 2799 } + { "weight": 1, "sprite": 2938 }, + { "weight": 1, "sprite": 2939 }, + { "weight": 1, "sprite": 2940 }, + { "weight": 1, "sprite": 2941 } ] }, - { "id": "corner", "bg": 1866, "fg": [ 2801, 2803, 2802, 2800 ] }, - { "id": "t_connection", "bg": 1866, "fg": [ 2811, 2813, 2812, 2810 ] }, - { "id": "edge", "bg": 1866, "fg": [ 2805, 2804 ] }, - { "id": "end_piece", "bg": 1866, "fg": [ 2807, 2809, 2808, 2806 ] }, - { "bg": 1866, "id": "unconnected", "fg": 2814 } + { "id": "corner", "bg": 2008, "fg": [ 2943, 2945, 2944, 2942 ] }, + { "id": "t_connection", "bg": 2008, "fg": [ 2953, 2955, 2954, 2952 ] }, + { "id": "edge", "bg": 2008, "fg": [ 2947, 2946 ] }, + { "id": "end_piece", "bg": 2008, "fg": [ 2949, 2951, 2950, 2948 ] }, + { "bg": 2008, "id": "unconnected", "fg": 2956 } ] }, { "id": [ "t_water_sh_season_summer", "t_swater_sh_season_summer" ], "multitile": true, - "fg": 2814, - "bg": 1876, + "fg": 2956, + "bg": 2018, "additional_tiles": [ { "id": "center", - "bg": 1876, - "fg": [ { "weight": 1, "sprite": 2796 }, { "weight": 1, "sprite": 2797 }, { "weight": 1, "sprite": 2798 } ] + "bg": 2018, + "fg": [ { "weight": 1, "sprite": 2938 }, { "weight": 1, "sprite": 2939 }, { "weight": 1, "sprite": 2940 } ] }, - { "id": "corner", "bg": 1876, "fg": [ 2801, 2803, 2802, 2800 ] }, - { "id": "t_connection", "bg": 1876, "fg": [ 2811, 2813, 2812, 2810 ] }, - { "id": "edge", "bg": 1876, "fg": [ 2805, 2804 ] }, - { "id": "end_piece", "bg": 1876, "fg": [ 2807, 2809, 2808, 2806 ] }, - { "bg": 1876, "id": "unconnected", "fg": 2814 } + { "id": "corner", "bg": 2018, "fg": [ 2943, 2945, 2944, 2942 ] }, + { "id": "t_connection", "bg": 2018, "fg": [ 2953, 2955, 2954, 2952 ] }, + { "id": "edge", "bg": 2018, "fg": [ 2947, 2946 ] }, + { "id": "end_piece", "bg": 2018, "fg": [ 2949, 2951, 2950, 2948 ] }, + { "bg": 2018, "id": "unconnected", "fg": 2956 } ] }, { "id": [ "t_water_sh_season_autumn", "t_swater_sh_season_autumn" ], "multitile": true, - "fg": 2814, - "bg": 1871, + "fg": 2956, + "bg": 2013, "additional_tiles": [ { "id": "center", - "bg": 1871, - "fg": [ { "weight": 1, "sprite": 2796 }, { "weight": 1, "sprite": 2797 }, { "weight": 1, "sprite": 2798 } ] + "bg": 2013, + "fg": [ { "weight": 1, "sprite": 2938 }, { "weight": 1, "sprite": 2939 }, { "weight": 1, "sprite": 2940 } ] }, - { "id": "corner", "bg": 1871, "fg": [ 2801, 2803, 2802, 2800 ] }, - { "id": "t_connection", "bg": 1871, "fg": [ 2811, 2813, 2812, 2810 ] }, - { "id": "edge", "bg": 1871, "fg": [ 2805, 2804 ] }, - { "id": "end_piece", "bg": 1871, "fg": [ 2807, 2809, 2808, 2806 ] }, - { "bg": 1871, "id": "unconnected", "fg": 2814 } + { "id": "corner", "bg": 2013, "fg": [ 2943, 2945, 2944, 2942 ] }, + { "id": "t_connection", "bg": 2013, "fg": [ 2953, 2955, 2954, 2952 ] }, + { "id": "edge", "bg": 2013, "fg": [ 2947, 2946 ] }, + { "id": "end_piece", "bg": 2013, "fg": [ 2949, 2951, 2950, 2948 ] }, + { "bg": 2013, "id": "unconnected", "fg": 2956 } ] }, { "id": [ "t_water_sh_season_winter", "t_swater_sh_season_winter" ], "multitile": true, - "fg": 2814, - "bg": 1362, + "fg": 2956, + "bg": 1504, "additional_tiles": [ { "id": "center", - "bg": 1362, - "fg": [ { "weight": 1, "sprite": 2796 }, { "weight": 1, "sprite": 2797 }, { "weight": 1, "sprite": 2798 } ] + "bg": 1504, + "fg": [ { "weight": 1, "sprite": 2938 }, { "weight": 1, "sprite": 2939 }, { "weight": 1, "sprite": 2940 } ] }, - { "id": "corner", "bg": 1362, "fg": [ 2801, 2803, 2802, 2800 ] }, - { "id": "t_connection", "bg": 1362, "fg": [ 2811, 2813, 2812, 2810 ] }, - { "id": "edge", "bg": 1362, "fg": [ 2805, 2804 ] }, - { "id": "end_piece", "bg": 1362, "fg": [ 2807, 2809, 2808, 2806 ] }, - { "bg": 1362, "id": "unconnected", "fg": 2814 } - ] - }, - { "id": [ "t_window", "t_window_alarm" ], "fg": 2815 }, - { "id": "t_window_empty", "fg": 2818 }, - { "id": "t_window_domestic", "fg": 2816 }, - { "id": "t_window_open", "fg": 2822 }, - { "id": "t_window_no_curtains", "fg": 2819 }, - { "id": "t_window_no_curtains_open", "fg": 2820 }, - { "id": "t_woodchips", "fg": 2824 }, - { "id": "t_woodchips_season_winter", "fg": 1362 }, + { "id": "corner", "bg": 1504, "fg": [ 2943, 2945, 2944, 2942 ] }, + { "id": "t_connection", "bg": 1504, "fg": [ 2953, 2955, 2954, 2952 ] }, + { "id": "edge", "bg": 1504, "fg": [ 2947, 2946 ] }, + { "id": "end_piece", "bg": 1504, "fg": [ 2949, 2951, 2950, 2948 ] }, + { "bg": 1504, "id": "unconnected", "fg": 2956 } + ] + }, + { "id": [ "t_window", "t_window_alarm" ], "fg": 2957 }, + { "id": "t_window_empty", "fg": 2960 }, + { "id": "t_window_domestic", "fg": 2958 }, + { "id": "t_window_open", "fg": 2964 }, + { "id": "t_window_no_curtains", "fg": 2961 }, + { "id": "t_window_no_curtains_open", "fg": 2962 }, + { "id": "t_woodchips", "fg": 2966 }, + { "id": "t_woodchips_season_winter", "fg": 1504 }, { "id": [ "tr_downspout_funnel", "tr_pit", "tr_lava", "tr_ledge", "tr_glass_pit", "tr_spike_pit" ], - "fg": 416 + "fg": 480 }, - { "id": "tr_goo", "fg": [ { "weight": 2007, "sprite": 2826 }, { "weight": 1, "sprite": 2827 } ] }, - { "id": "tr_nailboard", "fg": 2825, "bg": 949 }, - { "id": "tr_portal", "fg": 2829 }, - { "id": "tr_tripwire", "fg": 2830 }, + { "id": "tr_goo", "fg": [ { "weight": 2007, "sprite": 2968 }, { "weight": 1, "sprite": 2969 } ] }, + { "id": "tr_nailboard", "fg": 2967, "bg": 1014 }, + { "id": "tr_portal", "fg": 2972 }, + { "id": "tr_tripwire", "fg": 2973 }, { "id": [ "vp_forklift_fork" ], - "fg": [ 2832, 2834, 2833, 2831 ], + "fg": [ 2975, 2977, 2976, 2974 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 2832, 2834, 2833, 2831 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 2975, 2977, 2976, 2974 ] } ] }, { "id": "vp_saddle_motor", - "fg": [ 2836, 2838, 2837, 2835 ], + "fg": [ 2979, 2981, 2980, 2978 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 2836, 2838, 2837, 2835 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 2979, 2981, 2980, 2978 ] } ] }, { "id": [ "vp_wheel_motorbike", "vp_wheel_motorbike_steerable", "vp_wheel_motorbike_or", "vp_wheel_motorbike_or_steerable" ], - "fg": [ 2844, 2846, 2845, 2843 ], + "fg": [ 2987, 2989, 2988, 2986 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 2844, 2846, 2845, 2843 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 2987, 2989, 2988, 2986 ] } ] }, { "id": [ "vp_wheel_motorbike_rear", "vp_wheel_motorbike_or_rear" ], - "fg": [ 2840, 2842, 2841, 2839 ], + "fg": [ 2983, 2985, 2984, 2982 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 2840, 2842, 2841, 2839 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 2983, 2985, 2984, 2982 ] } ] }, { "id": [ "vp_wheel_small_scooter", "vp_wheel_small_scooter_steerable" ], - "fg": [ 2852, 2854, 2853, 2851 ], + "fg": [ 2995, 2997, 2996, 2994 ], "rotates": true }, - { "id": "vp_wheel_small_scooter_rear", "fg": [ 2848, 2850, 2849, 2847 ], "rotates": true }, + { "id": "vp_wheel_small_scooter_rear", "fg": [ 2991, 2993, 2992, 2990 ], "rotates": true }, { "id": "vp_battery_charger", - "fg": 2855, - "bg": 5156, + "fg": 2998, + "bg": 5313, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 2855 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 2998 } ] }, { "id": "vp_recharge_station", - "fg": 2856, - "bg": 5156, - "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 2856 } ] - }, - { "id": "f_chest", "fg": 418 }, - { "id": "f_foot_locker", "fg": 419 }, - { "id": "f_shredder", "fg": 420 }, - { "id": "f_black_eyed_susan", "fg": 482 }, - { "id": "f_chimney", "fg": 514 }, - { "id": "mossberg_500", "fg": 767 }, - { "id": "mossberg_500_security", "fg": 768 }, - { "id": "mossberg_590", "fg": 769 }, - { "id": "mossberg_930", "fg": 770 }, - { "id": "remington_1100", "fg": 771 }, - { "id": "remington_870", "fg": 772 }, - { "id": "remington_870_breacher", "fg": 773 }, - { "id": "remington_870_express", "fg": 774 }, - { "id": "acoustic_guitar", "fg": 775 }, - { "id": "banjo", "fg": 776 }, - { "id": "bionic_general", "fg": 777 }, - { "id": "char_smoker", "fg": 778 }, - { "id": "dehydrator", "fg": 779 }, - { "id": "guitar_electric", "fg": 780 }, - { "id": "mattress", "fg": 782 }, - { "id": "sheet", "fg": 784 }, - { "id": "umbrella", "fg": 785 }, - { "id": "10mm_fmj", "fg": 787 }, - { "id": "120mm_HEAT", "fg": 788 }, - { "id": "123ln", "fg": 789 }, - { "id": "12mm", "fg": 790 }, - { "id": "20x66_beanbag", "fg": 791 }, - { "id": "20x66_flare", "fg": 792 }, - { "id": "20x66_flechette", "fg": 793 }, - { "id": "20x66_frag", "fg": 794 }, - { "id": "20x66_inc", "fg": 795 }, - { "id": "20x66_shot", "fg": 796 }, - { "id": "20x66_slug", "fg": 797 }, - { "id": "223", "fg": 798 }, - { "id": "22_cb", "fg": 799 }, - { "id": "22_fmj", "fg": 800 }, - { "id": "22_lr", "fg": 801 }, - { "id": "22_ratshot", "fg": 802 }, - { "id": "270win_jsp", "fg": 803 }, - { "id": "3006", "fg": 804 }, - { "id": "3006_incendiary", "fg": 805 }, - { "id": "3006fmj", "fg": 806 }, - { "id": "300_winmag", "fg": 807 }, - { "id": "300blk", "fg": 808 }, - { "id": "300blk_ss", "fg": 809 }, - { "id": "308", "fg": 810 }, - { "id": "32_acp", "fg": 811 }, - { "id": "357mag_fmj", "fg": 812 }, - { "id": "357mag_jhp", "fg": 813 }, - { "id": "357sig_fmj", "fg": 814 }, - { "id": "357sig_jhp", "fg": 815 }, - { "id": "380_FMJ", "fg": 816 }, - { "id": "380_JHP", "fg": 817 }, - { "id": "380_p", "fg": 818 }, - { "id": "38_fmj", "fg": 819 }, - { "id": "38_special", "fg": 820 }, - { "id": "38_super", "fg": 821 }, - { "id": "38super_fmj", "fg": 822 }, - { "id": "40fmj", "fg": 823 }, - { "id": "40mm_flashbang", "fg": 824 }, - { "id": "40mm_incendiary", "fg": 825 }, - { "id": "40mm_slug", "fg": 826 }, - { "id": "40sw", "fg": 827 }, - { "id": "40x46mm_grenade", "fg": 828 }, - { "id": "40x46mm_m1006", "fg": 829 }, - { "id": "40x46mm_m433", "fg": 830 }, - { "id": "40x46mm_m576", "fg": 831 }, - { "id": "40x46mm_m651", "fg": 832 }, - { "id": "40x53mm_buckshot_m169", "fg": 833 }, - { "id": "40x53mm_flechette_m169", "fg": 834 }, - { "id": "40x53mm_grenade", "fg": 835 }, - { "id": "40x53mm_m1001", "fg": 836 }, - { "id": "40x53mm_m430a1", "fg": 837 }, - { "id": "40x53mm_slug_m169", "fg": 838 }, - { "id": "410shot_000", "fg": 839 }, - { "id": "44fmj", "fg": 840 }, - { "id": "44magnum", "fg": 841 }, - { "id": "454_Casull", "fg": 842 }, - { "id": "4570_low", "fg": 843 }, - { "id": "4570_pen", "fg": 844 }, - { "id": "4570_sp", "fg": 845 }, - { "id": "45_acp", "fg": 846 }, - { "id": "45_jhp", "fg": 847 }, - { "id": "45_super", "fg": 848 }, - { "id": "45colt_jhp", "fg": 849 }, - { "id": "460_fmj", "fg": 850 }, - { "id": "460_rowland", "fg": 851 }, - { "id": "46mm", "fg": 852 }, - { "id": "500_Magnum", "fg": 853 }, - { "id": "50_incendiary", "fg": 854 }, - { "id": "50_mk211", "fg": 855 }, - { "id": "50bmg", "fg": 856 }, - { "id": "50match", "fg": 857 }, - { "id": "50ss", "fg": 858 }, - { "id": "545", "fg": 859 }, - { "id": "545_ap", "fg": 860 }, - { "id": "556", "fg": 861 }, - { "id": "556_incendiary", "fg": 862 }, - { "id": "57mm", "fg": 863 }, - { "id": "5x50dart", "fg": 864 }, - { "id": "5x50heavy", "fg": 865 }, - { "id": "66mm_HEAT", "fg": 866 }, - { "id": "700nx", "fg": 867 }, - { "id": "762_25", "fg": 868 }, - { "id": "762_25hot", "fg": 869 }, - { "id": "762_25typeP", "fg": 870 }, - { "id": "762_51", "fg": 871 }, - { "id": "762_51_incendiary", "fg": 872 }, - { "id": "762_54R", "fg": 873 }, - { "id": "762_m43", "fg": 874 }, - { "id": "762_m87", "fg": 875 }, - { "id": "84x246mm_he", "fg": 876 }, - { "id": "84x246mm_hedp", "fg": 877 }, - { "id": "84x246mm_smoke", "fg": 878 }, - { "id": "8mm_bootleg", "fg": 879 }, - { "id": "8mm_caseless", "fg": 880 }, - { "id": "8mm_civilian", "fg": 881 }, - { "id": "8mm_fmj", "fg": 882 }, - { "id": "8mm_hvp", "fg": 883 }, - { "id": "8mm_inc", "fg": 884 }, - { "id": "8mm_jhp", "fg": 885 }, - { "id": "9mm", "fg": 886 }, - { "id": "9mmP", "fg": 887 }, - { "id": "9mmfmj", "fg": 888 }, - { "id": "9x18mm", "fg": 889 }, - { "id": "9x18mmP2", "fg": 890 }, - { "id": "9x18mmfmj", "fg": 891 }, - { "id": "RPG-7_ammo", "fg": 892 }, - { "id": "RPG-7_og7v", "fg": 893 }, - { "id": "RPG-7_pg7vr", "fg": 894 }, - { "id": "RPG-7_tbg7v", "fg": 895 }, - { "id": "atgm_heat", "fg": 896 }, - { "id": "m235tpa", "fg": 897 }, - { "id": "shot_00", "fg": 898 }, - { "id": "shot_beanbag", "fg": 899 }, - { "id": "shot_bird", "fg": 900 }, - { "id": "shot_dragon", "fg": 901 }, - { "id": "shot_flechette", "fg": 902 }, - { "id": "shot_he", "fg": 903 }, - { "id": "shot_scrap", "fg": 904 }, - { "id": "shot_slug", "fg": 905 }, - { "id": "oxygen_cylinder", "fg": 906 }, - { "id": "oxygen_tank", "fg": 907 }, - { "id": "tinyweldtank", "fg": 908 }, - { "id": "weldtank", "fg": 909 }, - { "id": "iceaxe", "fg": 933 }, - { "id": "rifle_case_soft", "fg": 938 }, - { "id": "rifle_case_soft_2", "fg": 939 }, - { "id": "rifle_case_soft_leather_2", "fg": 941 }, - { "id": "rucksack", "fg": 942 }, - { "id": "rack_test_tube", "fg": 954 }, - { "id": "bowl_clay", "fg": 957 }, - { "id": "clay_hydria", "fg": 958 }, - { "id": "clay_pot", "fg": 959 }, - { "id": "clay_quern", "fg": 960 }, - { "id": "clay_watercont", "fg": 961 }, - { "id": "jug_clay", "fg": 962 }, - { "id": "bot_eyebot", "fg": 1028 }, - { "id": "broken_eyebot", "fg": 1029 }, - { "id": "PR24-extended", "fg": 1069 }, - { "id": "PR24-retracted", "fg": 1070 }, - { "id": "baton-extended", "fg": 1071 }, - { "id": "baton", "fg": 1072 }, - { "id": "bokken", "fg": 1134 }, - { "id": "UPS_off", "fg": 1140 }, - { "id": "hose", "fg": 1141 }, - { "id": "oxy_torch", "fg": 1142 }, - { "id": "picklocks", "fg": 1143 }, - { "id": "mon_raccoon", "fg": 1257 }, - { "id": "mon_fish_eel", "fg": 1259 }, - { "id": "mon_dragonfly_naiad", "fg": 1260 }, - { "id": "footstep", "fg": 1292 }, - { "id": "footstep_above", "fg": 1293 }, - { "id": "footstep_below", "fg": 1294 }, - { "id": "unknown_field", "fg": 1295 }, - { "id": "unknown_furniture", "fg": 1296 }, - { "id": "unknown_item", "fg": 1297 }, - { "id": "unknown_item_AMMO", "fg": 1298 }, - { "id": "unknown_item_ARMOR", "fg": 1299 }, - { "id": "unknown_item_BIONIC", "fg": 1300 }, - { "id": "unknown_item_BOOK", "fg": 1301 }, - { "id": "unknown_item_FOOD", "fg": 1302 }, - { "id": "unknown_item_GUN", "fg": 1303 }, - { "id": "unknown_item_TOOL", "fg": 1304 }, - { "id": "unknown_item_misc", "fg": 1305 }, - { "id": "unknown_terrain", "fg": 1306 }, - { "id": "unknown_trap", "fg": 1307 }, - { "id": "unknown_vehicle_part", "fg": 1308 }, - { "id": "t_ramp_down_high", "fg": 1355 }, - { "id": "t_ramp_up_high", "fg": 1356 }, - { "id": "t_sidewalk_ramp_down_high", "fg": 1357 }, - { "id": "t_sidewalk_ramp_up_high", "fg": 1358 }, - { "id": "t_slope_down", "fg": 1359 }, - { "id": "t_slope_up", "fg": 1360 }, - { "id": "t_door_b_peep", "fg": 1688 }, - { "id": "t_door_boarded_damaged_peep", "fg": 1689 }, - { "id": "t_door_boarded_peep", "fg": 1690 }, - { "id": "t_door_c_peep", "fg": 1691 }, - { "id": "t_door_locked_peep", "fg": 1692 }, - { "id": "t_door_o_peep", "fg": 1693 }, - { "id": "t_fence_post", "fg": 1730 }, - { "id": "t_slime", "fg": 2494 }, - { "id": "t_window_domestic_taped", "fg": 2817 }, - { "id": "t_window_no_curtains_taped", "fg": 2821 }, - { "id": "t_window_taped", "fg": 2823 }, - { "id": "tr_landmine", "fg": 2828 } + "fg": 2999, + "bg": 5313, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 2999 } ] + }, + { + "id": "vp_spike_wood", + "fg": 3000, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 3000 } ] + }, + { "id": "f_chest", "fg": 482 }, + { "id": "f_foot_locker", "fg": 483 }, + { "id": "f_shredder", "fg": 484 }, + { "id": "f_black_eyed_susan", "fg": 546 }, + { "id": "f_chimney", "fg": 578 }, + { "id": "mossberg_500", "fg": 831 }, + { "id": "mossberg_500_security", "fg": 832 }, + { "id": "mossberg_590", "fg": 833 }, + { "id": "mossberg_930", "fg": 834 }, + { "id": "remington_1100", "fg": 835 }, + { "id": "remington_870", "fg": 836 }, + { "id": "remington_870_breacher", "fg": 837 }, + { "id": "remington_870_express", "fg": 838 }, + { "id": "acoustic_guitar", "fg": 839 }, + { "id": "banjo", "fg": 840 }, + { "id": "bionic_general", "fg": 841 }, + { "id": "char_smoker", "fg": 842 }, + { "id": "dehydrator", "fg": 843 }, + { "id": "guitar_electric", "fg": 844 }, + { "id": "lawnmower", "fg": 846 }, + { "id": "mattress", "fg": 847 }, + { "id": "sheet", "fg": 849 }, + { "id": "umbrella", "fg": 850 }, + { "id": "10mm_fmj", "fg": 852 }, + { "id": "120mm_HEAT", "fg": 853 }, + { "id": "123ln", "fg": 854 }, + { "id": "12mm", "fg": 855 }, + { "id": "20x66_beanbag", "fg": 856 }, + { "id": "20x66_flare", "fg": 857 }, + { "id": "20x66_flechette", "fg": 858 }, + { "id": "20x66_frag", "fg": 859 }, + { "id": "20x66_inc", "fg": 860 }, + { "id": "20x66_shot", "fg": 861 }, + { "id": "20x66_slug", "fg": 862 }, + { "id": "223", "fg": 863 }, + { "id": "22_cb", "fg": 864 }, + { "id": "22_fmj", "fg": 865 }, + { "id": "22_lr", "fg": 866 }, + { "id": "22_ratshot", "fg": 867 }, + { "id": "270win_jsp", "fg": 868 }, + { "id": "3006", "fg": 869 }, + { "id": "3006_incendiary", "fg": 870 }, + { "id": "3006fmj", "fg": 871 }, + { "id": "300_winmag", "fg": 872 }, + { "id": "300blk", "fg": 873 }, + { "id": "300blk_ss", "fg": 874 }, + { "id": "308", "fg": 875 }, + { "id": "32_acp", "fg": 876 }, + { "id": "357mag_fmj", "fg": 877 }, + { "id": "357mag_jhp", "fg": 878 }, + { "id": "357sig_fmj", "fg": 879 }, + { "id": "357sig_jhp", "fg": 880 }, + { "id": "380_FMJ", "fg": 881 }, + { "id": "380_JHP", "fg": 882 }, + { "id": "380_p", "fg": 883 }, + { "id": "38_fmj", "fg": 884 }, + { "id": "38_special", "fg": 885 }, + { "id": "38_super", "fg": 886 }, + { "id": "38super_fmj", "fg": 887 }, + { "id": "40fmj", "fg": 888 }, + { "id": "40mm_flashbang", "fg": 889 }, + { "id": "40mm_incendiary", "fg": 890 }, + { "id": "40mm_slug", "fg": 891 }, + { "id": "40sw", "fg": 892 }, + { "id": "40x46mm_grenade", "fg": 893 }, + { "id": "40x46mm_m1006", "fg": 894 }, + { "id": "40x46mm_m433", "fg": 895 }, + { "id": "40x46mm_m576", "fg": 896 }, + { "id": "40x46mm_m651", "fg": 897 }, + { "id": "40x53mm_buckshot_m169", "fg": 898 }, + { "id": "40x53mm_flechette_m169", "fg": 899 }, + { "id": "40x53mm_grenade", "fg": 900 }, + { "id": "40x53mm_m1001", "fg": 901 }, + { "id": "40x53mm_m430a1", "fg": 902 }, + { "id": "40x53mm_slug_m169", "fg": 903 }, + { "id": "410shot_000", "fg": 904 }, + { "id": "44fmj", "fg": 905 }, + { "id": "44magnum", "fg": 906 }, + { "id": "454_Casull", "fg": 907 }, + { "id": "4570_low", "fg": 908 }, + { "id": "4570_pen", "fg": 909 }, + { "id": "4570_sp", "fg": 910 }, + { "id": "45_acp", "fg": 911 }, + { "id": "45_jhp", "fg": 912 }, + { "id": "45_super", "fg": 913 }, + { "id": "45colt_jhp", "fg": 914 }, + { "id": "460_fmj", "fg": 915 }, + { "id": "460_rowland", "fg": 916 }, + { "id": "46mm", "fg": 917 }, + { "id": "500_Magnum", "fg": 918 }, + { "id": "50_incendiary", "fg": 919 }, + { "id": "50_mk211", "fg": 920 }, + { "id": "50bmg", "fg": 921 }, + { "id": "50match", "fg": 922 }, + { "id": "50ss", "fg": 923 }, + { "id": "545", "fg": 924 }, + { "id": "545_ap", "fg": 925 }, + { "id": "556", "fg": 926 }, + { "id": "556_incendiary", "fg": 927 }, + { "id": "57mm", "fg": 928 }, + { "id": "5x50dart", "fg": 929 }, + { "id": "5x50heavy", "fg": 930 }, + { "id": "66mm_HEAT", "fg": 931 }, + { "id": "700nx", "fg": 932 }, + { "id": "762_25", "fg": 933 }, + { "id": "762_25hot", "fg": 934 }, + { "id": "762_25typeP", "fg": 935 }, + { "id": "762_51", "fg": 936 }, + { "id": "762_51_incendiary", "fg": 937 }, + { "id": "762_54R", "fg": 938 }, + { "id": "762_m43", "fg": 939 }, + { "id": "762_m87", "fg": 940 }, + { "id": "84x246mm_he", "fg": 941 }, + { "id": "84x246mm_hedp", "fg": 942 }, + { "id": "84x246mm_smoke", "fg": 943 }, + { "id": "8mm_bootleg", "fg": 944 }, + { "id": "8mm_caseless", "fg": 945 }, + { "id": "8mm_civilian", "fg": 946 }, + { "id": "8mm_fmj", "fg": 947 }, + { "id": "8mm_hvp", "fg": 948 }, + { "id": "8mm_inc", "fg": 949 }, + { "id": "8mm_jhp", "fg": 950 }, + { "id": "9mm", "fg": 951 }, + { "id": "9mmP", "fg": 952 }, + { "id": "9mmfmj", "fg": 953 }, + { "id": "9x18mm", "fg": 954 }, + { "id": "9x18mmP2", "fg": 955 }, + { "id": "9x18mmfmj", "fg": 956 }, + { "id": "RPG-7_ammo", "fg": 957 }, + { "id": "RPG-7_og7v", "fg": 958 }, + { "id": "RPG-7_pg7vr", "fg": 959 }, + { "id": "RPG-7_tbg7v", "fg": 960 }, + { "id": "atgm_heat", "fg": 961 }, + { "id": "m235tpa", "fg": 962 }, + { "id": "shot_00", "fg": 963 }, + { "id": "shot_beanbag", "fg": 964 }, + { "id": "shot_bird", "fg": 965 }, + { "id": "shot_dragon", "fg": 966 }, + { "id": "shot_flechette", "fg": 967 }, + { "id": "shot_he", "fg": 968 }, + { "id": "shot_scrap", "fg": 969 }, + { "id": "shot_slug", "fg": 970 }, + { "id": "oxygen_cylinder", "fg": 971 }, + { "id": "oxygen_tank", "fg": 972 }, + { "id": "tinyweldtank", "fg": 973 }, + { "id": "weldtank", "fg": 974 }, + { "id": "iceaxe", "fg": 998 }, + { "id": "rifle_case_soft", "fg": 1003 }, + { "id": "rifle_case_soft_2", "fg": 1004 }, + { "id": "rifle_case_soft_leather_2", "fg": 1006 }, + { "id": "rucksack", "fg": 1007 }, + { "id": "scythe", "fg": 1019 }, + { "id": "rack_test_tube", "fg": 1020 }, + { "id": "bowl_clay", "fg": 1023 }, + { "id": "clay_hydria", "fg": 1024 }, + { "id": "clay_pot", "fg": 1025 }, + { "id": "clay_quern", "fg": 1026 }, + { "id": "clay_watercont", "fg": 1027 }, + { "id": "jug_clay", "fg": 1028 }, + { "id": "bot_eyebot", "fg": 1094 }, + { "id": "broken_eyebot", "fg": 1095 }, + { "id": "PR24-extended", "fg": 1134 }, + { "id": "PR24-retracted", "fg": 1135 }, + { "id": "baton-extended", "fg": 1136 }, + { "id": "baton", "fg": 1137 }, + { "id": "bokken", "fg": 1194 }, + { "id": "UPS_off", "fg": 1200 }, + { "id": "hose", "fg": 1201 }, + { "id": "oxy_torch", "fg": 1202 }, + { "id": "picklocks", "fg": 1203 }, + { "id": "mon_breather", "fg": 1210 }, + { "id": "mon_breather_hub", "fg": 1211 }, + { "id": "mon_raccoon", "fg": 1319 }, + { "id": "mon_fish_eel", "fg": 1321 }, + { "id": "mon_dragonfly_naiad", "fg": 1322 }, + { "id": "footstep", "fg": 1354 }, + { "id": "footstep_above", "fg": 1355 }, + { "id": "footstep_below", "fg": 1356 }, + { "id": "unknown_field", "fg": 1357 }, + { "id": "unknown_furniture", "fg": 1358 }, + { "id": "unknown_item", "fg": 1359 }, + { "id": "unknown_item_AMMO", "fg": 1360 }, + { "id": "unknown_item_ARMOR", "fg": 1361 }, + { "id": "unknown_item_BIONIC", "fg": 1362 }, + { "id": "unknown_item_BOOK", "fg": 1363 }, + { "id": "unknown_item_FOOD", "fg": 1364 }, + { "id": "unknown_item_GUN", "fg": 1365 }, + { "id": "unknown_item_TOOL", "fg": 1366 }, + { "id": "unknown_item_misc", "fg": 1367 }, + { "id": "unknown_terrain", "fg": 1368 }, + { "id": "unknown_trap", "fg": 1369 }, + { "id": "unknown_vehicle_part", "fg": 1370 }, + { "id": "pasture_center", "fg": 1430 }, + { "id": "pasture_connection_ew", "fg": 1431 }, + { "id": "pasture_connection_ns", "fg": 1432 }, + { "id": "pasture_corner_ne", "fg": 1433 }, + { "id": "pasture_corner_nw", "fg": 1434 }, + { "id": "pasture_corner_se", "fg": 1435 }, + { "id": "pasture_corner_sw", "fg": 1436 }, + { "id": "pasture_not_e", "fg": 1441 }, + { "id": "pasture_not_n", "fg": 1442 }, + { "id": "pasture_not_s", "fg": 1443 }, + { "id": "pasture_not_w", "fg": 1444 }, + { "id": "pasture_unconnected", "fg": 1445 }, + { "id": "t_ramp_down_high", "fg": 1497 }, + { "id": "t_ramp_up_high", "fg": 1498 }, + { "id": "t_sidewalk_ramp_down_high", "fg": 1499 }, + { "id": "t_sidewalk_ramp_up_high", "fg": 1500 }, + { "id": "t_slope_down", "fg": 1501 }, + { "id": "t_slope_up", "fg": 1502 }, + { "id": "t_door_b_peep", "fg": 1830 }, + { "id": "t_door_boarded_damaged_peep", "fg": 1831 }, + { "id": "t_door_boarded_peep", "fg": 1832 }, + { "id": "t_door_c_peep", "fg": 1833 }, + { "id": "t_door_locked_peep", "fg": 1834 }, + { "id": "t_door_o_peep", "fg": 1835 }, + { "id": "t_fence_post", "fg": 1872 }, + { "id": "t_window_domestic_taped", "fg": 2959 }, + { "id": "t_window_no_curtains_taped", "fg": 2963 }, + { "id": "t_window_taped", "fg": 2965 }, + { "id": "tr_landmine", "fg": 2970 }, + { "id": "tr_landmine_buried", "fg": 2971 } ] }, { "file": "tall.png", - "//": "range 2864 to 4367", + "//": "range 3008 to 4511", "sprite_width": 32, "sprite_height": 64, "sprite_offset_x": 0, "sprite_offset_y": -32, "tiles": [ - { "id": "npc_female", "fg": 3280, "bg": 4331 }, - { "id": "npc_male", "fg": 3281, "bg": 4331 }, - { "id": "player_female", "fg": 3280, "bg": 4331 }, - { "id": "player_male", "fg": 3281, "bg": 4331 }, + { "id": "npc_female", "fg": 3424, "bg": 4485 }, + { "id": "npc_male", "fg": 3425, "bg": 4485 }, + { "id": "player_female", "fg": 3424, "bg": 4485 }, + { "id": "player_male", "fg": 3425, "bg": 4485 }, { "id": "f_deckchair", - "fg": [ { "weight": 1, "sprite": 2864 }, { "weight": 1, "sprite": 2865 }, { "weight": 1, "sprite": 2866 } ] + "fg": [ { "weight": 1, "sprite": 3008 }, { "weight": 1, "sprite": 3009 }, { "weight": 1, "sprite": 3010 } ] }, - { "id": "f_punching_bag", "fg": 2871 }, - { "id": "f_exercise", "fg": 2870 }, - { "id": "f_ergometer", "fg": 2869 }, - { "id": "f_IV_pole", "fg": 2873 }, - { "id": "f_arcade_machine", "fg": 2874 }, - { "id": "f_autodoc_couch", "fg": 2875 }, - { "id": "f_bigmirror", "fg": 2876 }, - { "id": "f_birdbath", "fg": 2877 }, + { "id": "f_punching_bag", "fg": 3015 }, + { "id": "f_exercise", "fg": 3014 }, + { "id": "f_ergometer", "fg": 3013 }, + { "id": "f_IV_pole", "fg": 3017 }, + { "id": "f_arcade_machine", "fg": 3018 }, + { "id": "f_autodoc_couch", "fg": 3019 }, + { "id": "f_bigmirror", "fg": 3020 }, + { "id": "f_birdbath", "fg": 3021 }, { "id": "f_bookcase", "multitile": true, "rotates": false, - "fg": 2878, + "fg": 3022, "additional_tiles": [ - { "id": "center", "fg": 2878 }, - { "id": "corner", "fg": [ 2880, 2881, 2881, 2880 ] }, - { "id": "t_connection", "fg": [ 2878, 2879, 2878, 2879 ] }, - { "id": "edge", "fg": [ 2879, 2878 ] }, - { "id": "end_piece", "fg": [ 2880, 2878, 2881, 2878 ] }, - { "id": "unconnected", "fg": [ 2878, 2878 ] } + { "id": "center", "fg": 3022 }, + { "id": "corner", "fg": [ 3024, 3025, 3025, 3024 ] }, + { "id": "t_connection", "fg": [ 3022, 3023, 3022, 3023 ] }, + { "id": "edge", "fg": [ 3023, 3022 ] }, + { "id": "end_piece", "fg": [ 3024, 3022, 3025, 3022 ] }, + { "id": "unconnected", "fg": [ 3022, 3022 ] } ] }, - { "id": "f_boulder_large", "fg": 2882 }, - { "id": "f_cattails_season_spring", "fg": 2884, "rotates": false }, - { "id": "f_cattails_season_summer", "fg": 2885, "rotates": false }, - { "id": "f_cattails_season_autumn", "fg": 2883, "rotates": false }, - { "id": "f_cattails_season_winter", "fg": 2886, "rotates": false }, + { "id": "f_boulder_large", "fg": 3026 }, + { "id": "f_cattails_season_spring", "fg": 3028, "rotates": false }, + { "id": "f_cattails_season_summer", "fg": 3029, "rotates": false }, + { "id": "f_cattails_season_autumn", "fg": 3027, "rotates": false }, + { "id": "f_cattails_season_winter", "fg": 3030, "rotates": false }, { "id": "f_console", "multitile": true, - "fg": 2920, + "fg": 3064, "additional_tiles": [ - { "id": "center", "fg": 2905 }, - { "id": "corner", "fg": [ 2907, 2909, 2908, 2906 ] }, - { "id": "t_connection", "fg": [ 2917, 2919, 2918, 2916 ] }, - { "id": "edge", "fg": [ 2911, 2910 ] }, - { "id": "end_piece", "fg": [ 2913, 2915, 2914, 2912 ] }, - { "id": "unconnected", "fg": [ 2920, 2922, 2920, 2921 ] } + { "id": "center", "fg": 3049 }, + { "id": "corner", "fg": [ 3051, 3053, 3052, 3050 ] }, + { "id": "t_connection", "fg": [ 3061, 3063, 3062, 3060 ] }, + { "id": "edge", "fg": [ 3055, 3054 ] }, + { "id": "end_piece", "fg": [ 3057, 3059, 3058, 3056 ] }, + { "id": "unconnected", "fg": [ 3064, 3066, 3064, 3065 ] } ] }, { "id": "f_console_broken", "multitile": true, - "fg": 2903, + "fg": 3047, "additional_tiles": [ - { "id": "center", "fg": 2887 }, - { "id": "corner", "fg": [ 2889, 2891, 2890, 2888 ] }, - { "id": "t_connection", "fg": [ 2899, 2901, 2900, 2898 ] }, - { "id": "edge", "fg": [ 2893, 2892 ] }, - { "id": "end_piece", "fg": [ 2895, 2897, 2896, 2894 ] }, - { "id": "unconnected", "fg": [ 2903, 2904, 2903, 2902 ] } + { "id": "center", "fg": 3031 }, + { "id": "corner", "fg": [ 3033, 3035, 3034, 3032 ] }, + { "id": "t_connection", "fg": [ 3043, 3045, 3044, 3042 ] }, + { "id": "edge", "fg": [ 3037, 3036 ] }, + { "id": "end_piece", "fg": [ 3039, 3041, 3040, 3038 ] }, + { "id": "unconnected", "fg": [ 3047, 3048, 3047, 3046 ] } ] }, - { "id": "f_crate_c", "fg": 2923 }, - { "id": "f_crate_o", "fg": 2924 }, - { "id": "f_dialysis", "fg": 2925 }, - { "id": "f_dresser", "rotates": true, "fg": [ 2928, 2929, 2927, 2926 ] }, - { "id": "f_dryer", "fg": 2930 }, + { "id": "f_crate_c", "fg": 3067 }, + { "id": "f_crate_o", "fg": 3068 }, + { "id": "f_dialysis", "fg": 3069 }, + { "id": "f_dresser", "rotates": true, "fg": [ 3072, 3073, 3071, 3070 ] }, + { "id": "f_dryer", "fg": 3074 }, { "id": "f_dumpster", - "fg": 2937, - "multitile": true, - "additional_tiles": [ - { "id": "center", "fg": 2931 }, - { "id": "corner", "fg": [ 2936, 2936, 2933, 2933 ] }, - { "id": "t_connection", "fg": [ 2931, 2936, 2931, 2933 ] }, - { "id": "edge", "fg": [ 2932, 2931 ] }, - { "id": "end_piece", "fg": [ 2934, 2936, 2935, 2933 ] }, - { "id": "unconnected", "fg": [ 2937, 2937 ] } - ] - }, - { "id": "f_fireplace", "fg": 2938 }, - { "id": "f_floor_lamp", "fg": 2939 }, - { "id": "f_fridge", "rotates": true, "fg": [ 2942, 2943, 2941, 2940 ] }, - { "id": "t_gas_pump", "fg": 2944, "bg": 4337 }, - { "id": "f_gas_pump", "fg": 2944 }, - { "id": "f_glass_cabinet", "fg": 2945 }, - { "id": "f_glass_fridge", "fg": 2946 }, - { "id": "f_home_furnace", "fg": 2947 }, - { "id": "f_locker", "fg": 2949 }, - { "id": "f_machinery_old", "fg": 2956 }, - { "id": "t_machinery_old", "fg": 2956, "bg": 4333 }, - { "id": "f_machinery_electronic", "fg": 2950 }, - { "id": "t_machinery_electronic", "fg": 2950, "bg": 4333 }, + "fg": 3081, + "multitile": true, + "additional_tiles": [ + { "id": "center", "fg": 3075 }, + { "id": "corner", "fg": [ 3080, 3080, 3077, 3077 ] }, + { "id": "t_connection", "fg": [ 3075, 3080, 3075, 3077 ] }, + { "id": "edge", "fg": [ 3076, 3075 ] }, + { "id": "end_piece", "fg": [ 3078, 3080, 3079, 3077 ] }, + { "id": "unconnected", "fg": [ 3081, 3081 ] } + ] + }, + { "id": "f_fireplace", "fg": 3082 }, + { "id": "f_floor_lamp", "fg": 3083 }, + { "id": "f_fridge", "rotates": true, "fg": [ 3086, 3087, 3085, 3084 ] }, + { "id": "t_gas_pump", "fg": 3088, "bg": 4491 }, + { "id": "f_gas_pump", "fg": 3088 }, + { "id": "f_glass_cabinet", "fg": 3089 }, + { "id": "f_glass_fridge", "fg": 3090 }, + { "id": "f_home_furnace", "fg": 3091 }, + { "id": "f_locker", "fg": 3093 }, + { "id": "f_machinery_old", "fg": 3100 }, + { "id": "t_machinery_old", "fg": 3100, "bg": 4487 }, + { "id": "f_machinery_electronic", "fg": 3094 }, + { "id": "t_machinery_electronic", "fg": 3094, "bg": 4487 }, { "id": "f_machinery_heavy", - "fg": [ { "weight": 20, "sprite": 2951 }, { "weight": 150, "sprite": 2952 }, { "weight": 100, "sprite": 2953 } ] + "fg": [ { "weight": 20, "sprite": 3095 }, { "weight": 150, "sprite": 3096 }, { "weight": 100, "sprite": 3097 } ] }, { "id": "t_machinery_heavy", - "fg": [ { "weight": 20, "sprite": 2951 }, { "weight": 150, "sprite": 2952 }, { "weight": 100, "sprite": 2953 } ], - "bg": 4333 + "fg": [ { "weight": 20, "sprite": 3095 }, { "weight": 150, "sprite": 3096 }, { "weight": 100, "sprite": 3097 } ], + "bg": 4487 }, - { "id": "f_machinery_light", "fg": [ { "weight": 100, "sprite": 2955 }, { "weight": 100, "sprite": 2954 } ] }, + { "id": "f_machinery_light", "fg": [ { "weight": 100, "sprite": 3099 }, { "weight": 100, "sprite": 3098 } ] }, { "id": "t_machinery_light", - "fg": [ { "weight": 100, "sprite": 2955 }, { "weight": 100, "sprite": 2954 } ], - "bg": 4333 - }, - { "id": "f_mannequin", "fg": 2957 }, - { "id": "f_alien_tendril", "fg": 2960 }, - { "id": "f_alien_zapper", "fg": 2961 }, - { "id": [ "f_alien_pod", "f_alien_pod_organ" ], "fg": 2958 }, - { "id": "f_alien_pod_resin", "fg": 2959 }, - { "id": "f_oven", "rotates": true, "fg": [ 2964, 2965, 2963, 2962 ] }, - { "id": "f_rack_coat", "fg": 2966 }, - { "id": "f_scan_bed", "fg": 2967 }, + "fg": [ { "weight": 100, "sprite": 3099 }, { "weight": 100, "sprite": 3098 } ], + "bg": 4487 + }, + { "id": "f_mannequin", "fg": 3101 }, + { "id": "f_alien_tendril", "fg": 3104 }, + { "id": "f_alien_zapper", "fg": 3105 }, + { "id": [ "f_alien_pod", "f_alien_pod_organ" ], "fg": 3102 }, + { "id": "f_alien_pod_resin", "fg": 3103 }, + { "id": "f_oven", "rotates": true, "fg": [ 3108, 3109, 3107, 3106 ] }, + { "id": "f_rack_coat", "fg": 3110 }, + { "id": "f_scan_bed", "fg": 3111 }, { "id": "f_scrap_antenna", "animated": true, "fg": [ - { "weight": 15, "sprite": 2968 }, - { "weight": 15, "sprite": 2969 }, - { "weight": 15, "sprite": 2970 }, - { "weight": 15, "sprite": 2971 }, - { "weight": 15, "sprite": 2972 }, - { "weight": 15, "sprite": 2973 } + { "weight": 15, "sprite": 3112 }, + { "weight": 15, "sprite": 3113 }, + { "weight": 15, "sprite": 3114 }, + { "weight": 15, "sprite": 3115 }, + { "weight": 15, "sprite": 3116 }, + { "weight": 15, "sprite": 3117 } ], "rotates": false }, - { "id": "f_shower", "fg": 2974 }, - { "id": "f_standing_tank", "fg": 2975 }, - { "id": "f_statue", "fg": 2976 }, - { "id": "f_sunflower_season_summer", "fg": 2978 }, - { "id": "f_sunflower_season_autumn", "fg": 2977 }, - { "id": "f_vending_c", "fg": 2979 }, - { "id": "f_vending_reinforced", "fg": 2981 }, - { "id": "f_vending_o", "fg": 2980 }, - { "id": "f_ventilator", "fg": 2982 }, - { "id": "f_washer", "fg": 2983 }, - { "id": "f_water_heater", "fg": 2984 }, - { "id": "f_water_pump", "fg": 2985 }, - { "id": "t_water_pump", "fg": 2985, "bg": 4333 }, - { "id": "f_wind_mill", "fg": 2986 }, - { "id": "f_woodstove", "fg": 2987 }, - { "id": "f_workbench", "fg": 2988 }, - { "id": "mon_zombie_phase_skulker", "fg": 2990, "bg": 4331 }, - { "id": "mon_zombie_phase_shrike", "fg": 2989, "bg": 4331 }, - { "id": "mon_broken_cyborg", "fg": 2991, "bg": 4331 }, - { "id": "mon_prototype_cyborg", "fg": 2992, "bg": 4331 }, - { "id": "mon_biollante", "fg": 2994, "bg": 4331 }, + { "id": "f_shower", "fg": 3118 }, + { "id": "f_standing_tank", "fg": 3119 }, + { "id": "f_statue", "fg": 3120 }, + { "id": "f_sunflower_season_summer", "fg": 3122 }, + { "id": "f_sunflower_season_autumn", "fg": 3121 }, + { "id": "f_vending_c", "fg": 3123 }, + { "id": "f_vending_reinforced", "fg": 3125 }, + { "id": "f_vending_o", "fg": 3124 }, + { "id": "f_ventilator", "fg": 3126 }, + { "id": "f_washer", "fg": 3127 }, + { "id": "f_water_heater", "fg": 3128 }, + { "id": "f_water_pump", "fg": 3129 }, + { "id": "t_water_pump", "fg": 3129, "bg": 4487 }, + { "id": "f_wind_mill", "fg": 3130 }, + { "id": "f_woodstove", "fg": 3131 }, + { "id": "f_workbench", "fg": 3132 }, + { "id": "mon_zombie_phase_skulker", "fg": 3134, "bg": 4485 }, + { "id": "mon_zombie_phase_shrike", "fg": 3133, "bg": 4485 }, + { "id": "mon_broken_cyborg", "fg": 3135, "bg": 4485 }, + { "id": "mon_prototype_cyborg", "fg": 3136, "bg": 4485 }, + { "id": "mon_biollante", "fg": 3138, "bg": 4485 }, { "id": "mon_exodii_worker", "fg": [ - { "weight": 15, "sprite": 2995 }, - { "weight": 15, "sprite": 2996 }, - { "weight": 10, "sprite": 2997 }, - { "weight": 10, "sprite": 2998 } + { "weight": 15, "sprite": 3139 }, + { "weight": 15, "sprite": 3140 }, + { "weight": 10, "sprite": 3141 }, + { "weight": 10, "sprite": 3142 } ], - "bg": 4331 + "bg": 4485 }, { "id": "mon_feral_human_crowbar", - "fg": [ { "weight": 100, "sprite": 3001 }, { "weight": 50, "sprite": 3002 } ], - "bg": 4331 + "fg": [ { "weight": 100, "sprite": 3145 }, { "weight": 50, "sprite": 3146 } ], + "bg": 4485 }, { "id": "mon_feral_human_pipe", - "fg": [ { "weight": 100, "sprite": 3003 }, { "weight": 50, "sprite": 3004 } ], - "bg": 4331 + "fg": [ { "weight": 100, "sprite": 3147 }, { "weight": 50, "sprite": 3148 } ], + "bg": 4485 }, { "id": "mon_feral_human_axe", - "fg": [ { "weight": 100, "sprite": 2999 }, { "weight": 50, "sprite": 3000 } ], - "bg": 4331 - }, - { "id": "mon_zombie_grabber", "fg": 3005, "bg": 4331 }, - { "id": "mon_zombie_kevlar_1", "fg": 3007, "bg": 4331 }, - { "id": "mon_turret_searchlight", "fg": 3008, "bg": 4331 }, - { "id": "mon_bee", "fg": 3009, "bg": 4331 }, - { "id": "mon_blank", "fg": 3010, "bg": 4331 }, - { "id": "mon_cougar", "fg": 3011, "bg": 4331 }, - { "id": "mon_dermatik", "fg": 3012, "bg": 4331 }, - { "id": "mon_dragonfly_giant", "fg": 3013, "bg": 4331 }, - { "id": "mon_fly", "fg": 3014, "bg": 4331 }, - { "id": "mon_fungal_tendril", "fg": 3015, "bg": 4331 }, - { "id": "mon_fungaloid", "fg": 3016, "bg": 4331 }, + "fg": [ { "weight": 100, "sprite": 3143 }, { "weight": 50, "sprite": 3144 } ], + "bg": 4485 + }, + { "id": "mon_zombie_grabber", "fg": 3149, "bg": 4485 }, + { "id": "mon_zombie_kevlar_1", "fg": 3151, "bg": 4485 }, + { "id": "mon_turret_searchlight", "fg": 3152, "bg": 4485 }, + { "id": "mon_bee", "fg": 3153, "bg": 4485 }, + { "id": "mon_blank", "fg": 3154, "bg": 4485 }, + { "id": "mon_cougar", "fg": 3155, "bg": 4485 }, + { "id": "mon_dermatik", "fg": 3156, "bg": 4485 }, + { "id": "mon_dragonfly_giant", "fg": 3157, "bg": 4485 }, + { "id": "mon_fly", "fg": 3158, "bg": 4485 }, + { "id": "mon_fungal_tendril", "fg": 3159, "bg": 4485 }, + { "id": "mon_fungaloid", "fg": 3160, "bg": 4485 }, { "id": "mon_hunting_horror", - "fg": [ { "weight": 1, "sprite": 3017 }, { "weight": 1, "sprite": 3018 }, { "weight": 1, "sprite": 3019 } ], - "bg": 4331 - }, - { "id": "mon_mosquito_giant", "fg": 3020, "bg": 4331 }, - { "id": "mon_skeleton", "fg": 3021, "bg": 4331 }, - { "id": "mon_skeleton_brute", "fg": 3022, "bg": 4331 }, - { "id": [ "corpse_mon_skeleton", "corpse_mon_skeleton_brute" ], "fg": 3045 }, - { "id": "mon_spore", "fg": 3023, "bg": 4331 }, - { "id": "mon_turret_riot", "fg": 3024, "bg": 4331 }, - { "id": "mon_zombie_acidic", "fg": 3025, "bg": 4331 }, - { "id": "mon_zombie_corrosive", "fg": 3026, "bg": 4331 }, - { "id": "mon_zombie_spitter", "fg": 3027, "bg": 4331 }, - { "id": "mon_zombie_crawler", "fg": 3028, "bg": 4331 }, + "fg": [ { "weight": 1, "sprite": 3161 }, { "weight": 1, "sprite": 3162 }, { "weight": 1, "sprite": 3163 } ], + "bg": 4485 + }, + { "id": "mon_mosquito_giant", "fg": 3164, "bg": 4485 }, + { "id": "mon_skeleton", "fg": 3165, "bg": 4485 }, + { "id": "mon_skeleton_brute", "fg": 3166, "bg": 4485 }, + { "id": [ "corpse_mon_skeleton", "corpse_mon_skeleton_brute" ], "fg": 3189 }, + { "id": "mon_spore", "fg": 3167, "bg": 4485 }, + { "id": "mon_turret_riot", "fg": 3168, "bg": 4485 }, + { "id": "mon_zombie_acidic", "fg": 3169, "bg": 4485 }, + { "id": "mon_zombie_corrosive", "fg": 3170, "bg": 4485 }, + { "id": "mon_zombie_spitter", "fg": 3171, "bg": 4485 }, + { "id": "mon_zombie_crawler", "fg": 3172, "bg": 4485 }, { "id": "mon_zombie_fat", - "fg": [ { "weight": 1, "sprite": 3029 }, { "weight": 1, "sprite": 3030 } ], - "bg": 4331 + "fg": [ { "weight": 1, "sprite": 3173 }, { "weight": 1, "sprite": 3174 } ], + "bg": 4485 }, { "id": "mon_zombie_brainless", - "fg": [ { "weight": 100, "sprite": 3032 }, { "weight": 100, "sprite": 3033 } ], - "bg": 4331 + "fg": [ { "weight": 100, "sprite": 3176 }, { "weight": 100, "sprite": 3177 } ], + "bg": 4485 }, - { "id": "mon_zombie_hollow", "fg": 3034, "bg": 4331 }, - { "id": "mon_zombie_hunter", "fg": 3035, "bg": 4331 }, - { "id": "mon_zombie_predator", "fg": 3036, "bg": 4331 }, + { "id": "mon_zombie_hollow", "fg": 3178, "bg": 4485 }, + { "id": "mon_zombie_hunter", "fg": 3179, "bg": 4485 }, + { "id": "mon_zombie_predator", "fg": 3180, "bg": 4485 }, { "id": "mon_zombie_mancroc", - "fg": [ { "weight": 100, "sprite": 3037 }, { "weight": 100, "sprite": 3038 } ], - "bg": 4331 - }, - { "id": "mon_zombie_necro", "fg": 3041, "bg": 4331 }, - { "id": "mon_zombie_master", "fg": 3040, "bg": 4331 }, - { "id": [ "corpse_mon_zombie_necro", "corpse_mon_zombie_master" ], "fg": 3039 }, - { "id": [ "mon_zombie_crawler_pupa", "mon_zombie_crawler_pupa_decoy" ], "fg": 3042, "bg": 4331 }, - { "id": [ "mon_zombie_pupa", "mon_zombie_pupa_decoy" ], "fg": 3043, "bg": 4331 }, - { "id": [ "mon_zombie_pupa_shady", "mon_zombie_pupa_decoy_shady" ], "fg": 3044, "bg": 4331 }, - { "id": "mon_zombie_rot", "fg": 3046, "bg": 4331 }, - { "id": "corpse_mon_zombie_rot", "fg": 3045 }, - { "id": "mon_zombie_skull", "fg": 3047, "bg": 4331 }, + "fg": [ { "weight": 100, "sprite": 3181 }, { "weight": 100, "sprite": 3182 } ], + "bg": 4485 + }, + { "id": "mon_zombie_necro", "fg": 3185, "bg": 4485 }, + { "id": "mon_zombie_master", "fg": 3184, "bg": 4485 }, + { "id": [ "corpse_mon_zombie_necro", "corpse_mon_zombie_master" ], "fg": 3183 }, + { "id": [ "mon_zombie_crawler_pupa", "mon_zombie_crawler_pupa_decoy" ], "fg": 3186, "bg": 4485 }, + { "id": [ "mon_zombie_pupa", "mon_zombie_pupa_decoy" ], "fg": 3187, "bg": 4485 }, + { "id": [ "mon_zombie_pupa_shady", "mon_zombie_pupa_decoy_shady" ], "fg": 3188, "bg": 4485 }, + { "id": "mon_zombie_rot", "fg": 3190, "bg": 4485 }, + { "id": "corpse_mon_zombie_rot", "fg": 3189 }, + { "id": "mon_zombie_skull", "fg": 3191, "bg": 4485 }, { "id": "mon_zombie_soldier", - "fg": [ { "weight": 100, "sprite": 3050 }, { "weight": 100, "sprite": 3051 } ], - "bg": 4331 + "fg": [ { "weight": 100, "sprite": 3194 }, { "weight": 100, "sprite": 3195 } ], + "bg": 4485 }, - { "id": "mon_zombie_military_pilot", "fg": 3049, "bg": 4331 }, - { "id": [ "corpse_mon_zombie_soldier", "corpse_mon_zombie_military_pilot" ], "fg": 3048 }, - { "id": "mon_zombie_static", "fg": 3052, "bg": 4331 }, - { "id": "mon_zombie_swimmer", "fg": 3053, "bg": 4331 }, + { "id": "mon_zombie_military_pilot", "fg": 3193, "bg": 4485 }, + { "id": [ "corpse_mon_zombie_soldier", "corpse_mon_zombie_military_pilot" ], "fg": 3192 }, + { "id": "mon_zombie_static", "fg": 3196, "bg": 4485 }, + { "id": "mon_zombie_swimmer", "fg": 3197, "bg": 4485 }, { "id": "mon_zombie", "fg": [ - { "weight": 100, "sprite": 3059 }, - { "weight": 150, "sprite": 3060 }, - { "weight": 100, "sprite": 3061 }, - { "weight": 100, "sprite": 3062 }, - { "weight": 150, "sprite": 3063 } + { "weight": 100, "sprite": 3203 }, + { "weight": 150, "sprite": 3204 }, + { "weight": 100, "sprite": 3205 }, + { "weight": 100, "sprite": 3206 }, + { "weight": 150, "sprite": 3207 } ], - "bg": 4331 + "bg": 4485 }, - { "id": "mon_zombie_hazmat", "fg": 3066, "bg": 4331 }, - { "id": "mon_zombie_fireman", "fg": 3065, "bg": 4331 }, + { "id": "mon_zombie_hazmat", "fg": 3210, "bg": 4485 }, + { "id": "mon_zombie_fireman", "fg": 3209, "bg": 4485 }, { "id": "mon_zombie_scientist", - "fg": [ { "weight": 1, "sprite": 3068 }, { "weight": 1, "sprite": 3069 } ], - "bg": 4331 + "fg": [ { "weight": 1, "sprite": 3212 }, { "weight": 1, "sprite": 3213 } ], + "bg": 4485 }, - { "id": "mon_zombie_cop", "fg": 3064, "bg": 4331 }, - { "id": "mon_zombie_labsecurity", "fg": 3067, "bg": 4331 }, + { "id": "mon_zombie_cop", "fg": 3208, "bg": 4485 }, + { "id": "mon_zombie_labsecurity", "fg": 3211, "bg": 4485 }, { "id": "mon_zombie_tough", - "fg": [ { "weight": 1, "sprite": 3072 }, { "weight": 1, "sprite": 3073 } ], - "bg": 4331 + "fg": [ { "weight": 1, "sprite": 3216 }, { "weight": 1, "sprite": 3217 } ], + "bg": 4485 }, { "id": "mon_zombie_technician", - "fg": [ { "weight": 1, "sprite": 3070 }, { "weight": 1, "sprite": 3071 } ], - "bg": 4331 + "fg": [ { "weight": 1, "sprite": 3214 }, { "weight": 1, "sprite": 3215 } ], + "bg": 4485 }, { "id": [ @@ -4655,11 +4846,11 @@ "corpse_mon_zombie_prisoner", "corpse_mon_zombie_winged" ], - "fg": 3054 + "fg": 3198 }, - { "id": "corpse_mon_zombie_scientist", "fg": 3056 }, - { "id": [ "corpse_mon_zombie_technician", "corpse_mon_zombie_hazmat" ], "fg": 3057 }, - { "id": [ "corpse_mon_zombie_cop", "corpse_mon_zombie_labsecurity" ], "fg": 3055 }, + { "id": "corpse_mon_zombie_scientist", "fg": 3200 }, + { "id": [ "corpse_mon_zombie_technician", "corpse_mon_zombie_hazmat" ], "fg": 3201 }, + { "id": [ "corpse_mon_zombie_cop", "corpse_mon_zombie_labsecurity" ], "fg": 3199 }, { "id": [ "corpse_mon_zombie_tough", @@ -4675,336 +4866,336 @@ "corpse_mon_zombie_soldier_blackops_2", "corpse_mon_zombie_soldier_blackops_1" ], - "fg": 3058 + "fg": 3202 }, - { "id": "mon_zombie_winged", "fg": 3074, "bg": 4331 }, - { "id": "mon_zougar", "fg": 3075, "bg": 4331 }, - { "id": "mon_copbot", "fg": 3076, "bg": 4331 }, - { "id": "mon_zombie_screecher", "fg": 3077, "bg": 4331 }, - { "id": "mon_zombie_shrieker", "fg": 3078, "bg": 4331 }, - { "id": "mon_zombie_survivor", "fg": 3079, "bg": 4331 }, - { "id": "mon_zombie_swat", "fg": 3080, "bg": 4331 }, - { "id": "mon_zombie_thorny", "fg": 3081, "bg": 4331 }, + { "id": "mon_zombie_winged", "fg": 3218, "bg": 4485 }, + { "id": "mon_zougar", "fg": 3219, "bg": 4485 }, + { "id": "mon_copbot", "fg": 3220, "bg": 4485 }, + { "id": "mon_zombie_screecher", "fg": 3221, "bg": 4485 }, + { "id": "mon_zombie_shrieker", "fg": 3222, "bg": 4485 }, + { "id": "mon_zombie_survivor", "fg": 3223, "bg": 4485 }, + { "id": "mon_zombie_swat", "fg": 3224, "bg": 4485 }, + { "id": "mon_zombie_thorny", "fg": 3225, "bg": 4485 }, { "id": "mon_triffid", - "fg": [ { "weight": 100, "sprite": 3082 }, { "weight": 50, "sprite": 3083 } ], - "bg": 4331 + "fg": [ { "weight": 100, "sprite": 3226 }, { "weight": 50, "sprite": 3227 } ], + "bg": 4485 }, - { "id": "mon_triffid_sprig", "fg": 3084, "bg": 4331 }, - { "id": "mon_triffid_young", "fg": 3085, "bg": 4331 }, - { "id": "mon_zombie_flamer", "fg": 3086, "bg": 4331 }, + { "id": "mon_triffid_sprig", "fg": 3228, "bg": 4485 }, + { "id": "mon_triffid_young", "fg": 3229, "bg": 4485 }, + { "id": "mon_zombie_flamer", "fg": 3230, "bg": 4485 }, { "id": "mon_zombie_prisoner", - "fg": [ { "weight": 1, "sprite": 3087 }, { "weight": 1, "sprite": 3088 }, { "weight": 1, "sprite": 3089 } ], - "bg": 4331 - }, - { "id": "overlay_female_mutation_FACIAL_HAIR_3DAYSTUBBLE", "fg": 3090 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_3DAYSTUBBLE", "fg": 3091 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_ANCHOR", "fg": 3092 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_ANCHOR", "fg": 3093 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_BEARD", "fg": 3094 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_BEARD", "fg": 3095 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_CHEVRON", "fg": 3096 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_CHEVRON", "fg": 3097 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_CHIN_CURTAIN", "fg": 3098 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_CHIN_CURTAIN", "fg": 3099 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_CHIN_STRAP", "fg": 3100 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_CHIN_STRAP", "fg": 3101 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_CHIN_STRIP", "fg": 3102 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_CHIN_STRIP", "fg": 3103 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_CIRCLE", "fg": 3104 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_CIRCLE", "fg": 3105 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_GOATEE", "fg": 3106 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_GOATEE", "fg": 3107 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_GUNSLINGER", "fg": 3108 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_GUNSLINGER", "fg": 3109 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_HANDLEBAR", "fg": 3110 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_HANDLEBAR", "fg": 3111 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_HORSESHOE", "fg": 3112 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_HORSESHOE", "fg": 3113 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_MUSTACHE", "fg": 3118 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_MUSTACHE", "fg": 3119 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_MUTTONCHOPS", "fg": 3114 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_MUTTONCHOPS", "fg": 3115 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_NECKBEARD", "fg": 3116 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_NECKBEARD", "fg": 3117 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_PENCIL", "fg": 3120 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_PENCIL", "fg": 3121 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_ROYALE", "fg": 3122 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_ROYALE", "fg": 3123 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_SHENANDOAH", "fg": 3124 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_SHENANDOAH", "fg": 3125 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_SHORTBOXED", "fg": 3126 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_SHORTBOXED", "fg": 3127 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_SIDEBURNS", "fg": 3128 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_SIDEBURNS", "fg": 3129 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_SOUL_PATCH", "fg": 3130 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_SOUL_PATCH", "fg": 3131 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_TOOTHBRUSH", "fg": 3134 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_TOOTHBRUSH", "fg": 3135 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_VANDYKE", "fg": 3136 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_VANDYKE", "fg": 3137 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_WALRUS", "fg": 3138 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_WALRUS", "fg": 3139 }, - { "id": "overlay_female_mutation_FACIAL_HAIR_ZAPPA", "fg": 3132 }, - { "id": "overlay_male_mutation_FACIAL_HAIR_ZAPPA", "fg": 3133 }, - { "id": "overlay_male_mutation_hair_black_crewcut", "fg": 3141 }, - { "id": "overlay_female_mutation_hair_black_crewcut", "fg": 3140 }, - { "id": "overlay_male_mutation_hair_black_fro", "fg": 3143 }, - { "id": "overlay_female_mutation_hair_black_fro", "fg": 3142 }, - { "id": "overlay_male_mutation_hair_black_long", "fg": 3145 }, - { "id": "overlay_female_mutation_hair_black_long", "fg": 3144 }, - { "id": "overlay_male_mutation_hair_black_medium", "fg": 3147 }, - { "id": "overlay_female_mutation_hair_black_medium", "fg": 3146 }, - { "id": "overlay_male_mutation_hair_black_mohawk", "fg": 3149 }, - { "id": "overlay_female_mutation_hair_black_mohawk", "fg": 3148 }, - { "id": "overlay_male_mutation_hair_black_short", "fg": 3151 }, - { "id": "overlay_female_mutation_hair_black_short", "fg": 3150 }, - { "id": "overlay_male_mutation_hair_blond_crewcut", "fg": 3153 }, - { "id": "overlay_female_mutation_hair_blond_crewcut", "fg": 3152 }, - { "id": "overlay_male_mutation_hair_blond_fro", "fg": 3155 }, - { "id": "overlay_female_mutation_hair_blond_fro", "fg": 3154 }, - { "id": "overlay_male_mutation_hair_blond_long", "fg": 3157 }, - { "id": "overlay_female_mutation_hair_blond_long", "fg": 3156 }, - { "id": "overlay_male_mutation_hair_blond_medium", "fg": 3159 }, - { "id": "overlay_female_mutation_hair_blond_medium", "fg": 3158 }, - { "id": "overlay_male_mutation_hair_blond_mohawk", "fg": 3161 }, - { "id": "overlay_female_mutation_hair_blond_mohawk", "fg": 3160 }, - { "id": "overlay_male_mutation_hair_blond_short", "fg": 3163 }, - { "id": "overlay_female_mutation_hair_blond_short", "fg": 3162 }, - { "id": "overlay_male_mutation_hair_brown_crewcut", "fg": 3165 }, - { "id": "overlay_female_mutation_hair_brown_crewcut", "fg": 3164 }, - { "id": "overlay_male_mutation_hair_brown_fro", "fg": 3167 }, - { "id": "overlay_female_mutation_hair_brown_fro", "fg": 3166 }, - { "id": "overlay_male_mutation_hair_brown_long", "fg": 3169 }, - { "id": "overlay_female_mutation_hair_brown_long", "fg": 3168 }, - { "id": "overlay_male_mutation_hair_brown_medium", "fg": 3171 }, - { "id": "overlay_female_mutation_hair_brown_medium", "fg": 3170 }, - { "id": "overlay_male_mutation_hair_brown_mohawk", "fg": 3173 }, - { "id": "overlay_female_mutation_hair_brown_mohawk", "fg": 3172 }, - { "id": "overlay_male_mutation_hair_brown_short", "fg": 3175 }, - { "id": "overlay_female_mutation_hair_brown_short", "fg": 3174 }, - { "id": "overlay_male_mutation_hair_gray_crewcut", "fg": 3177 }, - { "id": "overlay_female_mutation_hair_gray_crewcut", "fg": 3176 }, - { "id": "overlay_male_mutation_hair_gray_fro", "fg": 3179 }, - { "id": "overlay_female_mutation_hair_gray_fro", "fg": 3178 }, - { "id": "overlay_male_mutation_hair_gray_long", "fg": 3181 }, - { "id": "overlay_female_mutation_hair_gray_long", "fg": 3180 }, - { "id": "overlay_male_mutation_hair_gray_medium", "fg": 3183 }, - { "id": "overlay_female_mutation_hair_gray_medium", "fg": 3182 }, - { "id": "overlay_male_mutation_hair_gray_mohawk", "fg": 3185 }, - { "id": "overlay_female_mutation_hair_gray_mohawk", "fg": 3184 }, - { "id": "overlay_male_mutation_hair_gray_short", "fg": 3187 }, - { "id": "overlay_female_mutation_hair_gray_short", "fg": 3186 }, - { "id": "overlay_male_mutation_hair_red_crewcut", "fg": 3189 }, - { "id": "overlay_female_mutation_hair_red_crewcut", "fg": 3188 }, - { "id": "overlay_male_mutation_hair_red_fro", "fg": 3191 }, - { "id": "overlay_female_mutation_hair_red_fro", "fg": 3190 }, - { "id": "overlay_male_mutation_hair_red_long", "fg": 3193 }, - { "id": "overlay_female_mutation_hair_red_long", "fg": 3192 }, - { "id": "overlay_male_mutation_hair_red_medium", "fg": 3195 }, - { "id": "overlay_female_mutation_hair_red_medium", "fg": 3194 }, - { "id": "overlay_male_mutation_hair_red_mohawk", "fg": 3197 }, - { "id": "overlay_female_mutation_hair_red_mohawk", "fg": 3196 }, - { "id": "overlay_male_mutation_hair_red_short", "fg": 3199 }, - { "id": "overlay_female_mutation_hair_red_short", "fg": 3198 }, - { "id": "overlay_male_mutation_hair_white_crewcut", "fg": 3201 }, - { "id": "overlay_female_mutation_hair_white_crewcut", "fg": 3200 }, - { "id": "overlay_male_mutation_hair_white_fro", "fg": 3203 }, - { "id": "overlay_female_mutation_hair_white_fro", "fg": 3202 }, - { "id": "overlay_male_mutation_hair_white_long", "fg": 3205 }, - { "id": "overlay_female_mutation_hair_white_long", "fg": 3204 }, - { "id": "overlay_male_mutation_hair_white_medium", "fg": 3207 }, - { "id": "overlay_female_mutation_hair_white_medium", "fg": 3206 }, - { "id": "overlay_male_mutation_hair_white_mohawk", "fg": 3209 }, - { "id": "overlay_female_mutation_hair_white_mohawk", "fg": 3208 }, - { "id": "overlay_male_mutation_hair_white_short", "fg": 3211 }, - { "id": "overlay_female_mutation_hair_white_short", "fg": 3210 }, - { "id": "overlay_female_mutation_ARACHNID_ARMS", "fg": 3212 }, - { "id": "overlay_male_mutation_ARACHNID_ARMS", "fg": 3213 }, - { "id": "overlay_female_mutation_BEAK", "fg": 3220 }, - { "id": "overlay_male_mutation_BEAK", "fg": 3221 }, - { "id": "overlay_female_mutation_BEAK_HUM", "fg": 3222 }, - { "id": "overlay_male_mutation_BEAK_HUM", "fg": 3223 }, - { "id": "overlay_female_mutation_BEAK_PECK", "fg": 3224 }, - { "id": "overlay_male_mutation_BEAK_PECK", "fg": 3225 }, - { "id": "overlay_female_mutation_BIRD_EYE", "fg": 3226 }, - { "id": "overlay_male_mutation_BIRD_EYE", "fg": 3227 }, - { "id": "overlay_female_mutation_FANGS", "fg": 3230 }, - { "id": "overlay_male_mutation_FANGS", "fg": 3231 }, - { "id": "overlay_female_mutation_LEAVES", "fg": 3238 }, - { "id": "overlay_male_mutation_LEAVES", "fg": 3239 }, - { "id": "overlay_female_mutation_LIZ_EYE", "fg": 3242 }, - { "id": "overlay_male_mutation_LIZ_EYE", "fg": 3243 }, - { "id": "overlay_female_mutation_MUZZLE_LONG", "fg": 3248 }, - { "id": "overlay_male_mutation_MUZZLE_LONG", "fg": 3249 }, - { "id": "overlay_female_mutation_TAIL_THICK", "fg": 3256 }, - { "id": "overlay_male_mutation_TAIL_THICK", "fg": 3257 }, - { "id": "overlay_female_mutation_TALONS", "fg": 3258 }, - { "id": "overlay_male_mutation_TALONS", "fg": 3259 }, - { "id": "overlay_female_mutation_VINES1", "fg": 3260 }, - { "id": "overlay_male_mutation_VINES1", "fg": 3261 }, - { "id": "overlay_female_mutation_WINGS_BIRD", "fg": 3262 }, - { "id": "overlay_male_mutation_WINGS_BIRD", "fg": 3263 }, - { "id": "overlay_female_mutation_CHITIN", "fg": 3266 }, - { "id": "overlay_male_mutation_CHITIN", "fg": 3267 }, - { "id": "overlay_female_mutation_CHITIN2", "fg": 3264 }, - { "id": "overlay_male_mutation_CHITIN2", "fg": 3265 }, - { "id": "overlay_female_mutation_FEATHERS", "fg": 3268 }, - { "id": "overlay_male_mutation_FEATHERS", "fg": 3269 }, - { "id": "overlay_female_mutation_SCALES", "fg": 3278 }, - { "id": "overlay_male_mutation_SCALES", "fg": 3279 }, - { "id": "overlay_female_mutation_PLANTSKIN", "fg": 3276 }, - { "id": "overlay_male_mutation_PLANTSKIN", "fg": 3277 }, - { "id": "overlay_female_mutation_SKIN_MEDIUM", "fg": 3280 }, - { "id": "overlay_male_mutation_SKIN_MEDIUM", "fg": 3281 }, - { "id": "overlay_female_mutation_SKIN_DARK", "fg": 3282 }, - { "id": "overlay_male_mutation_SKIN_DARK", "fg": 3283 }, - { "id": "overlay_female_mutation_SKIN_LIGHT", "fg": 3284 }, - { "id": "overlay_male_mutation_SKIN_LIGHT", "fg": 3285 }, - { "id": "overlay_female_mutation_SKIN_PINK", "fg": 3286 }, - { "id": "overlay_male_mutation_SKIN_PINK", "fg": 3287 }, - { "id": "overlay_female_mutation_SKIN_TAN", "fg": 3288 }, - { "id": "overlay_male_mutation_SKIN_TAN", "fg": 3289 }, - { "id": "overlay_female_mutation_PALE", "fg": 3274 }, - { "id": "overlay_male_mutation_PALE", "fg": 3275 }, - { "id": "overlay_female_mutation_ALBINO", "fg": 3270 }, - { "id": "overlay_male_mutation_ALBINO", "fg": 3272 }, - { "id": "overlay_wielded_arming_sword_fake", "fg": 3356 }, - { "id": "overlay_wielded_arming_sword_inferior", "fg": 3356 }, - { "id": "overlay_wielded_battleaxe_inferior", "fg": 3295 }, - { "id": "overlay_wielded_battleaxe_fake", "fg": 3295 }, - { "id": "overlay_wielded_broadsword_inferior", "fg": 3387 }, - { "id": "overlay_wielded_broadsword_fake", "fg": 3387 }, - { "id": "overlay_wielded_cavalry_sabre_fake", "fg": 3299 }, - { "id": "overlay_wielded_cutlass_fake", "fg": 3301 }, - { "id": "overlay_wielded_cutlass_inferior", "fg": 3301 }, - { "id": "overlay_wielded_estoc_inferior", "fg": 3426 }, - { "id": "overlay_wielded_estoc_fake", "fg": 3426 }, - { "id": "overlay_female_wielded_halberd_fake", "fg": 3445 }, - { "id": "overlay_male_wielded_halberd_fake", "fg": 3446 }, - { "id": "overlay_wielded_jian_fake", "fg": 3307 }, - { "id": "overlay_wielded_jian_inferior", "fg": 3307 }, - { "id": "overlay_wielded_katana_fake", "fg": 3465 }, - { "id": "overlay_wielded_katana_inferior", "fg": 3465 }, - { "id": "overlay_wielded_kris_fake", "fg": 3471 }, - { "id": "overlay_wielded_longsword_fake", "fg": 3475 }, - { "id": "overlay_wielded_longsword_inferior", "fg": 3475 }, - { "id": "overlay_female_wielded_lucern_hammerfake", "fg": 3476 }, - { "id": "overlay_male_wielded_lucern_hammerfake", "fg": 3477 }, - { "id": "overlay_wielded_mace_inferior", "fg": 3478 }, - { "id": "overlay_wielded_mace_fake", "fg": 3478 }, - { "id": "overlay_wielded_morningstar_fake", "fg": 3479 }, - { "id": "overlay_wielded_morningstar_inferior", "fg": 3479 }, - { "id": "overlay_female_wielded_naginata_fake", "fg": 3318 }, - { "id": "overlay_male_wielded_naginata_fake", "fg": 3319 }, - { "id": "overlay_female_wielded_naginata_inferior", "fg": 3318 }, - { "id": "overlay_male_wielded_naginata_inferior", "fg": 3319 }, - { "id": "overlay_wielded_nodachi_inferior", "fg": 3542 }, - { "id": "overlay_wielded_nodachi_fake", "fg": 3542 }, - { "id": "overlay_wielded_pike_fake", "fg": 3546 }, - { "id": "overlay_wielded_pike_inferior", "fg": 3546 }, - { "id": "overlay_wielded_rapier_fake", "fg": 3571 }, - { "id": "overlay_wielded_tanto_inferior", "fg": 3620 }, - { "id": "overlay_wielded_tanto_fake", "fg": 3620 }, - { "id": "overlay_wielded_wakizashi_fake", "fg": 3646 }, - { "id": "overlay_wielded_wakizashi_inferior", "fg": 3646 }, - { "id": "overlay_wielded_zweihander_fake", "fg": 3672 }, - { "id": "overlay_wielded_zweihander_inferior", "fg": 3672 }, - { "id": "overlay_female_wielded_1st_aid", "fg": 3290 }, - { "id": "overlay_male_wielded_1st_aid", "fg": 3291 }, - { "id": "overlay_female_wielded_2x4", "fg": 3292 }, - { "id": "overlay_male_wielded_2x4", "fg": 3293 }, - { "id": "overlay_wielded_bowling_axe", "fg": 3294 }, - { "id": "overlay_wielded_battleaxe", "fg": 3295 }, - { "id": "overlay_wielded_knife_butcher", "fg": 3296 }, - { "id": "overlay_female_wielded_butterfly_swords", "fg": 3297 }, - { "id": "overlay_male_wielded_butterfly_swords", "fg": 3298 }, - { "id": "overlay_wielded_cavalry_sabre", "fg": 3299 }, - { "id": "overlay_wielded_sword_crude", "fg": 3300 }, - { "id": "overlay_wielded_cutlass", "fg": 3301 }, - { "id": "overlay_wielded_dao", "fg": 3302 }, - { "id": "overlay_wielded_diveknife", "fg": 3303 }, - { "id": "overlay_female_wielded_glaive", "fg": 3304 }, - { "id": "overlay_male_wielded_glaive", "fg": 3305 }, - { "id": "overlay_wielded_glass_shiv", "fg": 3306 }, - { "id": "overlay_wielded_jian", "fg": 3307 }, - { "id": "overlay_wielded_khopesh", "fg": 3308 }, - { "id": "overlay_wielded_kukri", "fg": 3309 }, - { "id": "overlay_wielded_lajatang", "fg": 3310 }, - { "id": "overlay_wielded_machete", "fg": 3311 }, - { "id": "overlay_female_wielded_makeshift_halberd", "fg": 3312 }, - { "id": "overlay_male_wielded_makeshift_halberd", "fg": 3313 }, - { "id": "overlay_wielded_makeshift_machete", "fg": 3314 }, - { "id": "overlay_wielded_glass_macuahuitl", "fg": 3315 }, - { "id": "overlay_female_wielded_makeshift_scythe_war", "fg": 3316 }, - { "id": "overlay_male_wielded_makeshift_scythe_war", "fg": 3317 }, - { "id": "overlay_female_wielded_naginata", "fg": 3318 }, - { "id": "overlay_male_wielded_naginata", "fg": 3319 }, - { "id": "overlay_wielded_knuckle_katar", "fg": 3320 }, - { "id": "overlay_wielded_scimitar", "fg": 3321 }, - { "id": "overlay_wielded_scythe", "fg": 3322 }, - { "id": "overlay_wielded_survivor_machete", "fg": 3323 }, - { "id": "overlay_wielded_sword_bayonet", "fg": 3324 }, - { "id": "overlay_female_wielded_bagh_nakha", "fg": 3325 }, - { "id": "overlay_male_wielded_bagh_nakha", "fg": 3326 }, - { "id": "overlay_female_wielded_scythe_war", "fg": 3327 }, - { "id": "overlay_male_wielded_scythe_war", "fg": 3328 }, - { "id": "overlay_wielded_sword_xiphos", "fg": 3329 }, - { "id": "overlay_female_wielded_stepladder", "fg": 3351 }, - { "id": "overlay_male_wielded_stepladder", "fg": 3352 }, - { "id": "overlay_female_wielded_ak74", "fg": 3353 }, - { "id": "overlay_male_wielded_ak74", "fg": 3354 }, - { "id": "overlay_wielded_ar15", "fg": 3355 }, - { "id": "overlay_wielded_arming_sword", "fg": 3356 }, - { "id": "overlay_wielded_fire_ax", "fg": 3357 }, - { "id": "overlay_wielded_ax", "fg": 3359 }, - { "id": "overlay_wielded_hatchet", "fg": 3358 }, - { "id": "overlay_wielded_bag_canvas", "fg": 3360 }, - { "id": "overlay_wielded_bag_plastic", "fg": 3361 }, - { "id": "overlay_wielded_knife_baselard", "fg": 3362 }, - { "id": "overlay_female_wielded_bat", "fg": 3363 }, - { "id": "overlay_male_wielded_bat", "fg": 3364 }, - { "id": "overlay_female_wielded_bat_metal", "fg": 3365 }, - { "id": "overlay_male_wielded_bat_metal", "fg": 3366 }, - { "id": "overlay_wielded_bone_knife", "fg": 3367 }, - { "id": "overlay_wielded_bottle_glass", "fg": 3368 }, - { "id": "overlay_wielded_bottle_plastic", "fg": 3369 }, - { "id": "overlay_wielded_bottle_plastic_small", "fg": 3370 }, - { "id": "overlay_wielded_compositebow", "fg": 3371 }, - { "id": "overlay_wielded_reflexbow", "fg": 3372 }, - { "id": "overlay_wielded_compgreatbow", "fg": 3373 }, - { "id": "overlay_wielded_compbow", "fg": 3374 }, - { "id": "overlay_wielded_compbow_high", "fg": 3374 }, - { "id": "overlay_wielded_compbow_low", "fg": 3374 }, - { "id": "overlay_wielded_hybridbow", "fg": 3375 }, - { "id": "overlay_wielded_longbow", "fg": 3376 }, - { "id": "overlay_wielded_recurbow", "fg": 3377 }, - { "id": "overlay_wielded_reflexrecurvebow", "fg": 3378 }, - { "id": "overlay_wielded_shortbow", "fg": 3379 }, - { "id": "overlay_wielded_selfbow", "fg": 3380 }, - { "id": "overlay_wielded_woodgreatbow", "fg": 3381 }, - { "id": "overlay_wielded_box_large", "fg": 3382 }, - { "id": "overlay_wielded_box_medium", "fg": 3383 }, - { "id": "overlay_wielded_box_small", "fg": 3384 }, - { "id": "overlay_wielded_brick", "fg": 3386 }, - { "id": "overlay_wielded_broadsword", "fg": 3387 }, - { "id": "overlay_wielded_broom", "fg": 3388 }, - { "id": "overlay_female_wielded_bwirebat", "fg": 3389 }, - { "id": "overlay_male_wielded_bwirebat", "fg": 3390 }, - { "id": [ "overlay_female_wielded_cestus", "overlay_female_worn_cestus" ], "fg": 3403 }, - { "id": [ "overlay_male_wielded_cestus", "overlay_male_worn_cestus" ], "fg": 3404 }, - { "id": "overlay_female_wielded_chainsaw_off", "fg": 3405 }, - { "id": "overlay_male_wielded_chainsaw_off", "fg": 3406 }, - { "id": "overlay_wielded_coffeemaker", "fg": 3407 }, - { "id": "overlay_wielded_knife_combat", "fg": 3408 }, - { "id": "overlay_wielded_knife_combat_mod", "fg": 3408 }, - { "id": "overlay_wielded_copper_knife", "fg": 3409 }, - { "id": "overlay_female_wielded_corpse_generic_human", "fg": 3410 }, - { "id": "overlay_male_wielded_corpse_generic_human", "fg": 3411 }, + "fg": [ { "weight": 1, "sprite": 3231 }, { "weight": 1, "sprite": 3232 }, { "weight": 1, "sprite": 3233 } ], + "bg": 4485 + }, + { "id": "overlay_female_mutation_FACIAL_HAIR_3DAYSTUBBLE", "fg": 3234 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_3DAYSTUBBLE", "fg": 3235 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_ANCHOR", "fg": 3236 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_ANCHOR", "fg": 3237 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_BEARD", "fg": 3238 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_BEARD", "fg": 3239 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_CHEVRON", "fg": 3240 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_CHEVRON", "fg": 3241 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_CHIN_CURTAIN", "fg": 3242 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_CHIN_CURTAIN", "fg": 3243 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_CHIN_STRAP", "fg": 3244 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_CHIN_STRAP", "fg": 3245 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_CHIN_STRIP", "fg": 3246 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_CHIN_STRIP", "fg": 3247 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_CIRCLE", "fg": 3248 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_CIRCLE", "fg": 3249 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_GOATEE", "fg": 3250 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_GOATEE", "fg": 3251 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_GUNSLINGER", "fg": 3252 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_GUNSLINGER", "fg": 3253 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_HANDLEBAR", "fg": 3254 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_HANDLEBAR", "fg": 3255 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_HORSESHOE", "fg": 3256 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_HORSESHOE", "fg": 3257 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_MUSTACHE", "fg": 3262 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_MUSTACHE", "fg": 3263 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_MUTTONCHOPS", "fg": 3258 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_MUTTONCHOPS", "fg": 3259 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_NECKBEARD", "fg": 3260 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_NECKBEARD", "fg": 3261 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_PENCIL", "fg": 3264 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_PENCIL", "fg": 3265 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_ROYALE", "fg": 3266 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_ROYALE", "fg": 3267 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_SHENANDOAH", "fg": 3268 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_SHENANDOAH", "fg": 3269 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_SHORTBOXED", "fg": 3270 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_SHORTBOXED", "fg": 3271 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_SIDEBURNS", "fg": 3272 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_SIDEBURNS", "fg": 3273 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_SOUL_PATCH", "fg": 3274 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_SOUL_PATCH", "fg": 3275 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_TOOTHBRUSH", "fg": 3278 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_TOOTHBRUSH", "fg": 3279 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_VANDYKE", "fg": 3280 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_VANDYKE", "fg": 3281 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_WALRUS", "fg": 3282 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_WALRUS", "fg": 3283 }, + { "id": "overlay_female_mutation_FACIAL_HAIR_ZAPPA", "fg": 3276 }, + { "id": "overlay_male_mutation_FACIAL_HAIR_ZAPPA", "fg": 3277 }, + { "id": "overlay_male_mutation_hair_black_crewcut", "fg": 3285 }, + { "id": "overlay_female_mutation_hair_black_crewcut", "fg": 3284 }, + { "id": "overlay_male_mutation_hair_black_fro", "fg": 3287 }, + { "id": "overlay_female_mutation_hair_black_fro", "fg": 3286 }, + { "id": "overlay_male_mutation_hair_black_long", "fg": 3289 }, + { "id": "overlay_female_mutation_hair_black_long", "fg": 3288 }, + { "id": "overlay_male_mutation_hair_black_medium", "fg": 3291 }, + { "id": "overlay_female_mutation_hair_black_medium", "fg": 3290 }, + { "id": "overlay_male_mutation_hair_black_mohawk", "fg": 3293 }, + { "id": "overlay_female_mutation_hair_black_mohawk", "fg": 3292 }, + { "id": "overlay_male_mutation_hair_black_short", "fg": 3295 }, + { "id": "overlay_female_mutation_hair_black_short", "fg": 3294 }, + { "id": "overlay_male_mutation_hair_blond_crewcut", "fg": 3297 }, + { "id": "overlay_female_mutation_hair_blond_crewcut", "fg": 3296 }, + { "id": "overlay_male_mutation_hair_blond_fro", "fg": 3299 }, + { "id": "overlay_female_mutation_hair_blond_fro", "fg": 3298 }, + { "id": "overlay_male_mutation_hair_blond_long", "fg": 3301 }, + { "id": "overlay_female_mutation_hair_blond_long", "fg": 3300 }, + { "id": "overlay_male_mutation_hair_blond_medium", "fg": 3303 }, + { "id": "overlay_female_mutation_hair_blond_medium", "fg": 3302 }, + { "id": "overlay_male_mutation_hair_blond_mohawk", "fg": 3305 }, + { "id": "overlay_female_mutation_hair_blond_mohawk", "fg": 3304 }, + { "id": "overlay_male_mutation_hair_blond_short", "fg": 3307 }, + { "id": "overlay_female_mutation_hair_blond_short", "fg": 3306 }, + { "id": "overlay_male_mutation_hair_brown_crewcut", "fg": 3309 }, + { "id": "overlay_female_mutation_hair_brown_crewcut", "fg": 3308 }, + { "id": "overlay_male_mutation_hair_brown_fro", "fg": 3311 }, + { "id": "overlay_female_mutation_hair_brown_fro", "fg": 3310 }, + { "id": "overlay_male_mutation_hair_brown_long", "fg": 3313 }, + { "id": "overlay_female_mutation_hair_brown_long", "fg": 3312 }, + { "id": "overlay_male_mutation_hair_brown_medium", "fg": 3315 }, + { "id": "overlay_female_mutation_hair_brown_medium", "fg": 3314 }, + { "id": "overlay_male_mutation_hair_brown_mohawk", "fg": 3317 }, + { "id": "overlay_female_mutation_hair_brown_mohawk", "fg": 3316 }, + { "id": "overlay_male_mutation_hair_brown_short", "fg": 3319 }, + { "id": "overlay_female_mutation_hair_brown_short", "fg": 3318 }, + { "id": "overlay_male_mutation_hair_gray_crewcut", "fg": 3321 }, + { "id": "overlay_female_mutation_hair_gray_crewcut", "fg": 3320 }, + { "id": "overlay_male_mutation_hair_gray_fro", "fg": 3323 }, + { "id": "overlay_female_mutation_hair_gray_fro", "fg": 3322 }, + { "id": "overlay_male_mutation_hair_gray_long", "fg": 3325 }, + { "id": "overlay_female_mutation_hair_gray_long", "fg": 3324 }, + { "id": "overlay_male_mutation_hair_gray_medium", "fg": 3327 }, + { "id": "overlay_female_mutation_hair_gray_medium", "fg": 3326 }, + { "id": "overlay_male_mutation_hair_gray_mohawk", "fg": 3329 }, + { "id": "overlay_female_mutation_hair_gray_mohawk", "fg": 3328 }, + { "id": "overlay_male_mutation_hair_gray_short", "fg": 3331 }, + { "id": "overlay_female_mutation_hair_gray_short", "fg": 3330 }, + { "id": "overlay_male_mutation_hair_red_crewcut", "fg": 3333 }, + { "id": "overlay_female_mutation_hair_red_crewcut", "fg": 3332 }, + { "id": "overlay_male_mutation_hair_red_fro", "fg": 3335 }, + { "id": "overlay_female_mutation_hair_red_fro", "fg": 3334 }, + { "id": "overlay_male_mutation_hair_red_long", "fg": 3337 }, + { "id": "overlay_female_mutation_hair_red_long", "fg": 3336 }, + { "id": "overlay_male_mutation_hair_red_medium", "fg": 3339 }, + { "id": "overlay_female_mutation_hair_red_medium", "fg": 3338 }, + { "id": "overlay_male_mutation_hair_red_mohawk", "fg": 3341 }, + { "id": "overlay_female_mutation_hair_red_mohawk", "fg": 3340 }, + { "id": "overlay_male_mutation_hair_red_short", "fg": 3343 }, + { "id": "overlay_female_mutation_hair_red_short", "fg": 3342 }, + { "id": "overlay_male_mutation_hair_white_crewcut", "fg": 3345 }, + { "id": "overlay_female_mutation_hair_white_crewcut", "fg": 3344 }, + { "id": "overlay_male_mutation_hair_white_fro", "fg": 3347 }, + { "id": "overlay_female_mutation_hair_white_fro", "fg": 3346 }, + { "id": "overlay_male_mutation_hair_white_long", "fg": 3349 }, + { "id": "overlay_female_mutation_hair_white_long", "fg": 3348 }, + { "id": "overlay_male_mutation_hair_white_medium", "fg": 3351 }, + { "id": "overlay_female_mutation_hair_white_medium", "fg": 3350 }, + { "id": "overlay_male_mutation_hair_white_mohawk", "fg": 3353 }, + { "id": "overlay_female_mutation_hair_white_mohawk", "fg": 3352 }, + { "id": "overlay_male_mutation_hair_white_short", "fg": 3355 }, + { "id": "overlay_female_mutation_hair_white_short", "fg": 3354 }, + { "id": "overlay_female_mutation_ARACHNID_ARMS", "fg": 3356 }, + { "id": "overlay_male_mutation_ARACHNID_ARMS", "fg": 3357 }, + { "id": "overlay_female_mutation_BEAK", "fg": 3364 }, + { "id": "overlay_male_mutation_BEAK", "fg": 3365 }, + { "id": "overlay_female_mutation_BEAK_HUM", "fg": 3366 }, + { "id": "overlay_male_mutation_BEAK_HUM", "fg": 3367 }, + { "id": "overlay_female_mutation_BEAK_PECK", "fg": 3368 }, + { "id": "overlay_male_mutation_BEAK_PECK", "fg": 3369 }, + { "id": "overlay_female_mutation_BIRD_EYE", "fg": 3370 }, + { "id": "overlay_male_mutation_BIRD_EYE", "fg": 3371 }, + { "id": "overlay_female_mutation_FANGS", "fg": 3374 }, + { "id": "overlay_male_mutation_FANGS", "fg": 3375 }, + { "id": "overlay_female_mutation_LEAVES", "fg": 3382 }, + { "id": "overlay_male_mutation_LEAVES", "fg": 3383 }, + { "id": "overlay_female_mutation_LIZ_EYE", "fg": 3386 }, + { "id": "overlay_male_mutation_LIZ_EYE", "fg": 3387 }, + { "id": "overlay_female_mutation_MUZZLE_LONG", "fg": 3392 }, + { "id": "overlay_male_mutation_MUZZLE_LONG", "fg": 3393 }, + { "id": "overlay_female_mutation_TAIL_THICK", "fg": 3400 }, + { "id": "overlay_male_mutation_TAIL_THICK", "fg": 3401 }, + { "id": "overlay_female_mutation_TALONS", "fg": 3402 }, + { "id": "overlay_male_mutation_TALONS", "fg": 3403 }, + { "id": "overlay_female_mutation_VINES1", "fg": 3404 }, + { "id": "overlay_male_mutation_VINES1", "fg": 3405 }, + { "id": "overlay_female_mutation_WINGS_BIRD", "fg": 3406 }, + { "id": "overlay_male_mutation_WINGS_BIRD", "fg": 3407 }, + { "id": "overlay_female_mutation_CHITIN", "fg": 3410 }, + { "id": "overlay_male_mutation_CHITIN", "fg": 3411 }, + { "id": "overlay_female_mutation_CHITIN2", "fg": 3408 }, + { "id": "overlay_male_mutation_CHITIN2", "fg": 3409 }, + { "id": "overlay_female_mutation_FEATHERS", "fg": 3412 }, + { "id": "overlay_male_mutation_FEATHERS", "fg": 3413 }, + { "id": "overlay_female_mutation_SCALES", "fg": 3422 }, + { "id": "overlay_male_mutation_SCALES", "fg": 3423 }, + { "id": "overlay_female_mutation_PLANTSKIN", "fg": 3420 }, + { "id": "overlay_male_mutation_PLANTSKIN", "fg": 3421 }, + { "id": "overlay_female_mutation_SKIN_MEDIUM", "fg": 3424 }, + { "id": "overlay_male_mutation_SKIN_MEDIUM", "fg": 3425 }, + { "id": "overlay_female_mutation_SKIN_DARK", "fg": 3426 }, + { "id": "overlay_male_mutation_SKIN_DARK", "fg": 3427 }, + { "id": "overlay_female_mutation_SKIN_LIGHT", "fg": 3428 }, + { "id": "overlay_male_mutation_SKIN_LIGHT", "fg": 3429 }, + { "id": "overlay_female_mutation_SKIN_PINK", "fg": 3430 }, + { "id": "overlay_male_mutation_SKIN_PINK", "fg": 3431 }, + { "id": "overlay_female_mutation_SKIN_TAN", "fg": 3432 }, + { "id": "overlay_male_mutation_SKIN_TAN", "fg": 3433 }, + { "id": "overlay_female_mutation_PALE", "fg": 3418 }, + { "id": "overlay_male_mutation_PALE", "fg": 3419 }, + { "id": "overlay_female_mutation_ALBINO", "fg": 3414 }, + { "id": "overlay_male_mutation_ALBINO", "fg": 3416 }, + { "id": "overlay_wielded_arming_sword_fake", "fg": 3500 }, + { "id": "overlay_wielded_arming_sword_inferior", "fg": 3500 }, + { "id": "overlay_wielded_battleaxe_inferior", "fg": 3439 }, + { "id": "overlay_wielded_battleaxe_fake", "fg": 3439 }, + { "id": "overlay_wielded_broadsword_inferior", "fg": 3531 }, + { "id": "overlay_wielded_broadsword_fake", "fg": 3531 }, + { "id": "overlay_wielded_cavalry_sabre_fake", "fg": 3443 }, + { "id": "overlay_wielded_cutlass_fake", "fg": 3445 }, + { "id": "overlay_wielded_cutlass_inferior", "fg": 3445 }, + { "id": "overlay_wielded_estoc_inferior", "fg": 3572 }, + { "id": "overlay_wielded_estoc_fake", "fg": 3572 }, + { "id": "overlay_female_wielded_halberd_fake", "fg": 3591 }, + { "id": "overlay_male_wielded_halberd_fake", "fg": 3592 }, + { "id": "overlay_wielded_jian_fake", "fg": 3451 }, + { "id": "overlay_wielded_jian_inferior", "fg": 3451 }, + { "id": "overlay_wielded_katana_fake", "fg": 3611 }, + { "id": "overlay_wielded_katana_inferior", "fg": 3611 }, + { "id": "overlay_wielded_kris_fake", "fg": 3617 }, + { "id": "overlay_wielded_longsword_fake", "fg": 3621 }, + { "id": "overlay_wielded_longsword_inferior", "fg": 3621 }, + { "id": "overlay_female_wielded_lucern_hammerfake", "fg": 3622 }, + { "id": "overlay_male_wielded_lucern_hammerfake", "fg": 3623 }, + { "id": "overlay_wielded_mace_inferior", "fg": 3624 }, + { "id": "overlay_wielded_mace_fake", "fg": 3624 }, + { "id": "overlay_wielded_morningstar_fake", "fg": 3625 }, + { "id": "overlay_wielded_morningstar_inferior", "fg": 3625 }, + { "id": "overlay_female_wielded_naginata_fake", "fg": 3462 }, + { "id": "overlay_male_wielded_naginata_fake", "fg": 3463 }, + { "id": "overlay_female_wielded_naginata_inferior", "fg": 3462 }, + { "id": "overlay_male_wielded_naginata_inferior", "fg": 3463 }, + { "id": "overlay_wielded_nodachi_inferior", "fg": 3688 }, + { "id": "overlay_wielded_nodachi_fake", "fg": 3688 }, + { "id": "overlay_wielded_pike_fake", "fg": 3692 }, + { "id": "overlay_wielded_pike_inferior", "fg": 3692 }, + { "id": "overlay_wielded_rapier_fake", "fg": 3717 }, + { "id": "overlay_wielded_tanto_inferior", "fg": 3766 }, + { "id": "overlay_wielded_tanto_fake", "fg": 3766 }, + { "id": "overlay_wielded_wakizashi_fake", "fg": 3792 }, + { "id": "overlay_wielded_wakizashi_inferior", "fg": 3792 }, + { "id": "overlay_wielded_zweihander_fake", "fg": 3818 }, + { "id": "overlay_wielded_zweihander_inferior", "fg": 3818 }, + { "id": "overlay_female_wielded_1st_aid", "fg": 3434 }, + { "id": "overlay_male_wielded_1st_aid", "fg": 3435 }, + { "id": "overlay_female_wielded_2x4", "fg": 3436 }, + { "id": "overlay_male_wielded_2x4", "fg": 3437 }, + { "id": "overlay_wielded_bowling_axe", "fg": 3438 }, + { "id": "overlay_wielded_battleaxe", "fg": 3439 }, + { "id": "overlay_wielded_knife_butcher", "fg": 3440 }, + { "id": "overlay_female_wielded_butterfly_swords", "fg": 3441 }, + { "id": "overlay_male_wielded_butterfly_swords", "fg": 3442 }, + { "id": "overlay_wielded_cavalry_sabre", "fg": 3443 }, + { "id": "overlay_wielded_sword_crude", "fg": 3444 }, + { "id": "overlay_wielded_cutlass", "fg": 3445 }, + { "id": "overlay_wielded_dao", "fg": 3446 }, + { "id": "overlay_wielded_diveknife", "fg": 3447 }, + { "id": "overlay_female_wielded_glaive", "fg": 3448 }, + { "id": "overlay_male_wielded_glaive", "fg": 3449 }, + { "id": "overlay_wielded_glass_shiv", "fg": 3450 }, + { "id": "overlay_wielded_jian", "fg": 3451 }, + { "id": "overlay_wielded_khopesh", "fg": 3452 }, + { "id": "overlay_wielded_kukri", "fg": 3453 }, + { "id": "overlay_wielded_lajatang", "fg": 3454 }, + { "id": "overlay_wielded_machete", "fg": 3455 }, + { "id": "overlay_female_wielded_makeshift_halberd", "fg": 3456 }, + { "id": "overlay_male_wielded_makeshift_halberd", "fg": 3457 }, + { "id": "overlay_wielded_makeshift_machete", "fg": 3458 }, + { "id": "overlay_wielded_glass_macuahuitl", "fg": 3459 }, + { "id": "overlay_female_wielded_makeshift_scythe_war", "fg": 3460 }, + { "id": "overlay_male_wielded_makeshift_scythe_war", "fg": 3461 }, + { "id": "overlay_female_wielded_naginata", "fg": 3462 }, + { "id": "overlay_male_wielded_naginata", "fg": 3463 }, + { "id": "overlay_wielded_knuckle_katar", "fg": 3464 }, + { "id": "overlay_wielded_scimitar", "fg": 3465 }, + { "id": "overlay_wielded_scythe", "fg": 3466 }, + { "id": "overlay_wielded_survivor_machete", "fg": 3467 }, + { "id": "overlay_wielded_sword_bayonet", "fg": 3468 }, + { "id": "overlay_female_wielded_bagh_nakha", "fg": 3469 }, + { "id": "overlay_male_wielded_bagh_nakha", "fg": 3470 }, + { "id": "overlay_female_wielded_scythe_war", "fg": 3471 }, + { "id": "overlay_male_wielded_scythe_war", "fg": 3472 }, + { "id": "overlay_wielded_sword_xiphos", "fg": 3473 }, + { "id": "overlay_female_wielded_stepladder", "fg": 3495 }, + { "id": "overlay_male_wielded_stepladder", "fg": 3496 }, + { "id": "overlay_female_wielded_ak74", "fg": 3497 }, + { "id": "overlay_male_wielded_ak74", "fg": 3498 }, + { "id": "overlay_wielded_ar15", "fg": 3499 }, + { "id": "overlay_wielded_arming_sword", "fg": 3500 }, + { "id": "overlay_wielded_fire_ax", "fg": 3501 }, + { "id": "overlay_wielded_ax", "fg": 3503 }, + { "id": "overlay_wielded_hatchet", "fg": 3502 }, + { "id": "overlay_wielded_bag_canvas", "fg": 3504 }, + { "id": "overlay_wielded_bag_plastic", "fg": 3505 }, + { "id": "overlay_wielded_knife_baselard", "fg": 3506 }, + { "id": "overlay_female_wielded_bat", "fg": 3507 }, + { "id": "overlay_male_wielded_bat", "fg": 3508 }, + { "id": "overlay_female_wielded_bat_metal", "fg": 3509 }, + { "id": "overlay_male_wielded_bat_metal", "fg": 3510 }, + { "id": "overlay_wielded_bone_knife", "fg": 3511 }, + { "id": "overlay_wielded_bottle_glass", "fg": 3512 }, + { "id": "overlay_wielded_bottle_plastic", "fg": 3513 }, + { "id": "overlay_wielded_bottle_plastic_small", "fg": 3514 }, + { "id": "overlay_wielded_compositebow", "fg": 3515 }, + { "id": "overlay_wielded_reflexbow", "fg": 3516 }, + { "id": "overlay_wielded_compgreatbow", "fg": 3517 }, + { "id": "overlay_wielded_compbow", "fg": 3518 }, + { "id": "overlay_wielded_compbow_high", "fg": 3518 }, + { "id": "overlay_wielded_compbow_low", "fg": 3518 }, + { "id": "overlay_wielded_hybridbow", "fg": 3519 }, + { "id": "overlay_wielded_longbow", "fg": 3520 }, + { "id": "overlay_wielded_recurbow", "fg": 3521 }, + { "id": "overlay_wielded_reflexrecurvebow", "fg": 3522 }, + { "id": "overlay_wielded_shortbow", "fg": 3523 }, + { "id": "overlay_wielded_selfbow", "fg": 3524 }, + { "id": "overlay_wielded_woodgreatbow", "fg": 3525 }, + { "id": "overlay_wielded_box_large", "fg": 3526 }, + { "id": "overlay_wielded_box_medium", "fg": 3527 }, + { "id": "overlay_wielded_box_small", "fg": 3528 }, + { "id": "overlay_wielded_brick", "fg": 3530 }, + { "id": "overlay_wielded_broadsword", "fg": 3531 }, + { "id": "overlay_wielded_broom", "fg": 3532 }, + { "id": "overlay_female_wielded_bwirebat", "fg": 3533 }, + { "id": "overlay_male_wielded_bwirebat", "fg": 3534 }, + { "id": [ "overlay_female_wielded_cestus", "overlay_female_worn_cestus" ], "fg": 3549 }, + { "id": [ "overlay_male_wielded_cestus", "overlay_male_worn_cestus" ], "fg": 3550 }, + { "id": "overlay_female_wielded_chainsaw_off", "fg": 3551 }, + { "id": "overlay_male_wielded_chainsaw_off", "fg": 3552 }, + { "id": "overlay_wielded_coffeemaker", "fg": 3553 }, + { "id": "overlay_wielded_knife_combat", "fg": 3554 }, + { "id": "overlay_wielded_knife_combat_mod", "fg": 3554 }, + { "id": "overlay_wielded_copper_knife", "fg": 3555 }, + { "id": "overlay_female_wielded_corpse_generic_human", "fg": 3556 }, + { "id": "overlay_male_wielded_corpse_generic_human", "fg": 3557 }, { "id": [ "overlay_wielded_corpse_mon_ant", "overlay_wielded_corpse_mon_ant_soldier", "overlay_wielded_corpse_mon_ant_queen" ], - "fg": 3413 + "fg": 3559 }, { "id": [ @@ -5012,7 +5203,7 @@ "overlay_wielded_corpse_mon_ant_acid_soldier", "overlay_wielded_corpse_mon_ant_acid_queen" ], - "fg": 3412 + "fg": 3558 }, { "id": [ @@ -5071,7 +5262,7 @@ "overlay_male_wielded_corpse_mon_zombie_prisoner", "overlay_male_wielded_corpse_mon_zombie_military_pilot" ], - "fg": 3415 + "fg": 3561 }, { "id": [ @@ -5130,35 +5321,35 @@ "overlay_female_wielded_corpse_mon_zombie_prisoner", "overlay_female_wielded_corpse_mon_zombie_military_pilot" ], - "fg": 3414 - }, - { "id": "overlay_wielded_bullet_crossbow", "fg": 3416 }, - { "id": "overlay_wielded_compositecrossbow", "fg": 3417 }, - { "id": "overlay_wielded_compcrossbow", "fg": 3418 }, - { "id": "overlay_wielded_huge_crossbow", "fg": 3419 }, - { "id": "overlay_wielded_hand_crossbow", "fg": 3420 }, - { "id": "overlay_wielded_rep_crossbow", "fg": 3421 }, - { "id": "overlay_wielded_crossbow", "fg": 3422 }, - { "id": "overlay_wielded_cudgel", "fg": 3423 }, - { "id": "overlay_female_wielded_spear_dory", "fg": 3424 }, - { "id": "overlay_male_wielded_spear_dory", "fg": 3425 }, - { "id": "overlay_wielded_estoc", "fg": 3426 }, - { "id": "overlay_wielded_shock_epee", "fg": 3427 }, - { "id": "overlay_wielded_shock_foil", "fg": 3428 }, - { "id": "overlay_wielded_shock_sabre", "fg": 3429 }, - { "id": "overlay_wielded_fencing_epee", "fg": 3430 }, - { "id": "overlay_wielded_fencing_foil", "fg": 3431 }, - { "id": "overlay_wielded_fencing_sabre", "fg": 3432 }, - { "id": "overlay_wielded_fencing_epee_sharpened", "fg": 3433 }, - { "id": "overlay_wielded_fencing_foil_sharpened", "fg": 3434 }, - { "id": "overlay_wielded_fencing_sabre_sharpened", "fg": 3435 }, - { "id": "overlay_wielded_fishing_rod_basic", "fg": 3436 }, - { "id": "overlay_wielded_hoboreel", "fg": 3437 }, - { "id": "overlay_wielded_fishing_rod_professional", "fg": 3438 }, - { "id": "overlay_wielded_flashlight", "fg": 3439 }, - { "id": "overlay_wielded_heavy_flashlight", "fg": 3440 }, - { "id": "overlay_wielded_spear_forked", "fg": 3441 }, - { "id": "overlay_wielded_glass_shard", "fg": 3442 }, + "fg": 3560 + }, + { "id": "overlay_wielded_bullet_crossbow", "fg": 3562 }, + { "id": "overlay_wielded_compositecrossbow", "fg": 3563 }, + { "id": "overlay_wielded_compcrossbow", "fg": 3564 }, + { "id": "overlay_wielded_huge_crossbow", "fg": 3565 }, + { "id": "overlay_wielded_hand_crossbow", "fg": 3566 }, + { "id": "overlay_wielded_rep_crossbow", "fg": 3567 }, + { "id": "overlay_wielded_crossbow", "fg": 3568 }, + { "id": "overlay_wielded_cudgel", "fg": 3569 }, + { "id": "overlay_female_wielded_spear_dory", "fg": 3570 }, + { "id": "overlay_male_wielded_spear_dory", "fg": 3571 }, + { "id": "overlay_wielded_estoc", "fg": 3572 }, + { "id": "overlay_wielded_shock_epee", "fg": 3573 }, + { "id": "overlay_wielded_shock_foil", "fg": 3574 }, + { "id": "overlay_wielded_shock_sabre", "fg": 3575 }, + { "id": "overlay_wielded_fencing_epee", "fg": 3576 }, + { "id": "overlay_wielded_fencing_foil", "fg": 3577 }, + { "id": "overlay_wielded_fencing_sabre", "fg": 3578 }, + { "id": "overlay_wielded_fencing_epee_sharpened", "fg": 3579 }, + { "id": "overlay_wielded_fencing_foil_sharpened", "fg": 3580 }, + { "id": "overlay_wielded_fencing_sabre_sharpened", "fg": 3581 }, + { "id": "overlay_wielded_fishing_rod_basic", "fg": 3582 }, + { "id": "overlay_wielded_hoboreel", "fg": 3583 }, + { "id": "overlay_wielded_fishing_rod_professional", "fg": 3584 }, + { "id": "overlay_wielded_flashlight", "fg": 3585 }, + { "id": "overlay_wielded_heavy_flashlight", "fg": 3586 }, + { "id": "overlay_wielded_spear_forked", "fg": 3587 }, + { "id": "overlay_wielded_glass_shard", "fg": 3588 }, { "id": [ "overlay_wielded_glock_17", @@ -5167,62 +5358,62 @@ "overlay_wielded_glock_22", "overlay_wielded_glock_31" ], - "fg": 3443 - }, - { "id": "overlay_wielded_grip_hook", "fg": 3444 }, - { "id": "overlay_male_wielded_halberd", "fg": 3446 }, - { "id": "overlay_female_wielded_halberd", "fg": 3445 }, - { "id": "overlay_wielded_crowbar", "fg": 3447 }, - { "id": "overlay_male_wielded_screwdriver", "fg": 3450 }, - { "id": "overlay_female_wielded_screwdriver", "fg": 3449 }, - { "id": "overlay_wielded_shovel", "fg": 3451 }, - { "id": "overlay_wielded_wrench", "fg": 3452 }, - { "id": "overlay_wielded_hammer", "fg": 3448 }, - { "id": "overlay_wielded_hollow_cane", "fg": 3453 }, - { "id": "overlay_female_wielded_spear_homemade_halfpike", "fg": 3454 }, - { "id": "overlay_male_wielded_spear_homemade_halfpike", "fg": 3455 }, - { "id": "overlay_wielded_jar_3l_glass", "fg": 3456 }, - { "id": "overlay_wielded_jar_3l_glass_sealed", "fg": 3457 }, - { "id": "overlay_wielded_jar_glass", "fg": 3458 }, - { "id": "overlay_wielded_jar_glass_sealed", "fg": 3459 }, - { "id": "overlay_wielded_javelin", "fg": 3461 }, - { "id": "overlay_wielded_javelin_iron", "fg": 3460 }, - { "id": "overlay_female_wielded_ji", "fg": 3462 }, - { "id": "overlay_male_wielded_ji", "fg": 3463 }, - { "id": "overlay_wielded_jug_plastic", "fg": 3464 }, - { "id": "overlay_wielded_katana", "fg": 3465 }, - { "id": "overlay_wielded_kirpan", "fg": 3466 }, - { "id": "overlay_female_wielded_knuckle_nail", "fg": 3467 }, - { "id": "overlay_male_wielded_knuckle_nail", "fg": 3468 }, - { "id": "overlay_female_wielded_knuckle_steel", "fg": 3469 }, - { "id": "overlay_male_wielded_knuckle_steel", "fg": 3470 }, - { "id": "overlay_wielded_kris", "fg": 3471 }, - { "id": "overlay_wielded_shillelagh_weighted", "fg": 3472 }, - { "id": "overlay_wielded_log", "fg": 3473 }, - { "id": "overlay_wielded_long_pole", "fg": 3474 }, - { "id": "overlay_wielded_longsword", "fg": 3475 }, - { "id": "overlay_male_wielded_lucern_hammer", "fg": 3477 }, - { "id": "overlay_female_wielded_lucern_hammer", "fg": 3476 }, - { "id": "overlay_wielded_mace", "fg": 3478 }, - { "id": "overlay_wielded_morningstar", "fg": 3479 }, - { "id": "overlay_wielded_makeshift_crowbar", "fg": 3480 }, - { "id": "overlay_wielded_makeshift_knife", "fg": 3481 }, - { "id": "overlay_wielded_makeshift_sap", "fg": 3482 }, - { "id": "overlay_wielded_antibiotics", "fg": 3483 }, - { "id": "overlay_wielded_weak_antibiotic", "fg": 3495 }, - { "id": "overlay_wielded_strong_antibiotic", "fg": 3492 }, - { "id": "overlay_wielded_calcium_tablet", "fg": 3486 }, - { "id": "overlay_wielded_vitamins", "fg": 3494 }, - { "id": "overlay_wielded_gummy_vitamins", "fg": 3487 }, - { "id": "overlay_wielded_antifungal", "fg": 3484 }, - { "id": "overlay_wielded_antiparasitic", "fg": 3485 }, - { "id": "overlay_wielded_iodine", "fg": 3488 }, - { "id": "overlay_wielded_prussian_blue", "fg": 3491 }, - { "id": "overlay_wielded_tramadol", "fg": 3493 }, - { "id": "overlay_wielded_oxycodone", "fg": 3490 }, - { "id": "overlay_female_wielded_mjolnir", "fg": 3496 }, - { "id": "overlay_male_wielded_mjolnir", "fg": 3497 }, - { "id": "overlay_wielded_mop", "fg": 3498 }, + "fg": 3589 + }, + { "id": "overlay_wielded_grip_hook", "fg": 3590 }, + { "id": "overlay_male_wielded_halberd", "fg": 3592 }, + { "id": "overlay_female_wielded_halberd", "fg": 3591 }, + { "id": "overlay_wielded_crowbar", "fg": 3593 }, + { "id": "overlay_male_wielded_screwdriver", "fg": 3596 }, + { "id": "overlay_female_wielded_screwdriver", "fg": 3595 }, + { "id": "overlay_wielded_shovel", "fg": 3597 }, + { "id": "overlay_wielded_wrench", "fg": 3598 }, + { "id": "overlay_wielded_hammer", "fg": 3594 }, + { "id": "overlay_wielded_hollow_cane", "fg": 3599 }, + { "id": "overlay_female_wielded_spear_homemade_halfpike", "fg": 3600 }, + { "id": "overlay_male_wielded_spear_homemade_halfpike", "fg": 3601 }, + { "id": "overlay_wielded_jar_3l_glass", "fg": 3602 }, + { "id": "overlay_wielded_jar_3l_glass_sealed", "fg": 3603 }, + { "id": "overlay_wielded_jar_glass", "fg": 3604 }, + { "id": "overlay_wielded_jar_glass_sealed", "fg": 3605 }, + { "id": "overlay_wielded_javelin", "fg": 3607 }, + { "id": "overlay_wielded_javelin_iron", "fg": 3606 }, + { "id": "overlay_female_wielded_ji", "fg": 3608 }, + { "id": "overlay_male_wielded_ji", "fg": 3609 }, + { "id": "overlay_wielded_jug_plastic", "fg": 3610 }, + { "id": "overlay_wielded_katana", "fg": 3611 }, + { "id": "overlay_wielded_kirpan", "fg": 3612 }, + { "id": "overlay_female_wielded_knuckle_nail", "fg": 3613 }, + { "id": "overlay_male_wielded_knuckle_nail", "fg": 3614 }, + { "id": "overlay_female_wielded_knuckle_steel", "fg": 3615 }, + { "id": "overlay_male_wielded_knuckle_steel", "fg": 3616 }, + { "id": "overlay_wielded_kris", "fg": 3617 }, + { "id": "overlay_wielded_shillelagh_weighted", "fg": 3618 }, + { "id": "overlay_wielded_log", "fg": 3619 }, + { "id": "overlay_wielded_long_pole", "fg": 3620 }, + { "id": "overlay_wielded_longsword", "fg": 3621 }, + { "id": "overlay_male_wielded_lucern_hammer", "fg": 3623 }, + { "id": "overlay_female_wielded_lucern_hammer", "fg": 3622 }, + { "id": "overlay_wielded_mace", "fg": 3624 }, + { "id": "overlay_wielded_morningstar", "fg": 3625 }, + { "id": "overlay_wielded_makeshift_crowbar", "fg": 3626 }, + { "id": "overlay_wielded_makeshift_knife", "fg": 3627 }, + { "id": "overlay_wielded_makeshift_sap", "fg": 3628 }, + { "id": "overlay_wielded_antibiotics", "fg": 3629 }, + { "id": "overlay_wielded_weak_antibiotic", "fg": 3641 }, + { "id": "overlay_wielded_strong_antibiotic", "fg": 3638 }, + { "id": "overlay_wielded_calcium_tablet", "fg": 3632 }, + { "id": "overlay_wielded_vitamins", "fg": 3640 }, + { "id": "overlay_wielded_gummy_vitamins", "fg": 3633 }, + { "id": "overlay_wielded_antifungal", "fg": 3630 }, + { "id": "overlay_wielded_antiparasitic", "fg": 3631 }, + { "id": "overlay_wielded_iodine", "fg": 3634 }, + { "id": "overlay_wielded_prussian_blue", "fg": 3637 }, + { "id": "overlay_wielded_tramadol", "fg": 3639 }, + { "id": "overlay_wielded_oxycodone", "fg": 3636 }, + { "id": "overlay_female_wielded_mjolnir", "fg": 3642 }, + { "id": "overlay_male_wielded_mjolnir", "fg": 3643 }, + { "id": "overlay_wielded_mop", "fg": 3644 }, { "id": [ "overlay_wielded_tourniquet_upper", @@ -5230,1377 +5421,1390 @@ "overlay_wielded_tourniquet_lower", "overlay_wielded_tourniquet_lower_XL" ], - "fg": 3536 - }, - { "id": "overlay_female_wielded_nailbat", "fg": 3538 }, - { "id": "overlay_male_wielded_nailbat", "fg": 3539 }, - { "id": "overlay_female_wielded_nailboard", "fg": 3540 }, - { "id": "overlay_male_wielded_nailboard", "fg": 3541 }, - { "id": "overlay_wielded_nodachi", "fg": 3542 }, - { "id": "overlay_male_wielded_2h_flail_wood", "fg": 3544 }, - { "id": "overlay_female_wielded_2h_flail_wood", "fg": 3543 }, - { "id": "overlay_wielded_pike_copper", "fg": 3545 }, - { "id": "overlay_wielded_pike", "fg": 3546 }, - { "id": "overlay_wielded_pike_wood", "fg": 3547 }, - { "id": "overlay_male_wielded_pillow", "fg": 3551 }, - { "id": "overlay_female_wielded_pillow", "fg": 3550 }, - { "id": "overlay_male_wielded_down_pillow", "fg": 3549 }, - { "id": "overlay_female_wielded_down_pillow", "fg": 3548 }, - { "id": "overlay_wielded_pipe", "fg": 3552 }, - { "id": "overlay_wielded_pitchfork", "fg": 3553 }, - { "id": "overlay_wielded_sharp_toothbrush", "fg": 3554 }, - { "id": "overlay_wielded_pockknife", "fg": 3555 }, - { "id": "overlay_female_wielded_pot", "fg": 3556 }, - { "id": "overlay_male_wielded_pot", "fg": 3557 }, - { "id": "overlay_female_wielded_pot_copper", "fg": 3558 }, - { "id": "overlay_male_wielded_pot_copper", "fg": 3559 }, - { "id": "overlay_wielded_punch_dagger", "fg": 3560 }, - { "id": "overlay_female_wielded_qiang", "fg": 3561 }, - { "id": "overlay_male_wielded_qiang", "fg": 3562 }, - { "id": "overlay_wielded_female_i_staff", "fg": 3563 }, - { "id": "overlay_wielded_male_i_staff", "fg": 3564 }, - { "id": "overlay_female_wielded_shock_staff", "fg": 3565 }, - { "id": "overlay_male_wielded_shock_staff", "fg": 3566 }, - { "id": "overlay_female_wielded_q_staff", "fg": 3567 }, - { "id": "overlay_male_wielded_q_staff", "fg": 3568 }, - { "id": "overlay_female_wielded_rag", "fg": 3569 }, - { "id": "overlay_male_wielded_rag", "fg": 3570 }, - { "id": "overlay_wielded_rapier", "fg": 3571 }, - { "id": "overlay_wielded_rebar", "fg": 3572 }, - { "id": "overlay_female_wielded_rifle_flintlock", "fg": 3573 }, - { "id": "overlay_male_wielded_rifle_flintlock", "fg": 3574 }, - { "id": "overlay_wielded_knife_rm42", "fg": 3575 }, - { "id": "overlay_wielded_rock", "fg": 3576 }, - { "id": "overlay_wielded_rock_sock", "fg": 3577 }, - { "id": "overlay_wielded_rolling_pin", "fg": 3578 }, - { "id": "overlay_wielded_scissors", "fg": 3579 }, - { "id": "overlay_wielded_sharp_rock", "fg": 3580 }, - { "id": "overlay_wielded_shillelagh", "fg": 3581 }, - { "id": "overlay_male_wielded_pointy_stick", "fg": 3583 }, - { "id": "overlay_female_wielded_pointy_stick", "fg": 3582 }, - { "id": "overlay_male_wielded_spear_wood", "fg": 3599 }, - { "id": "overlay_female_wielded_spear_wood", "fg": 3598 }, - { "id": "overlay_male_wielded_spear_spike", "fg": 3595 }, - { "id": "overlay_female_wielded_spear_spike", "fg": 3594 }, - { "id": "overlay_male_wielded_spear_knife", "fg": 3587 }, - { "id": "overlay_female_wielded_spear_knife", "fg": 3586 }, - { "id": "overlay_male_wielded_spear_knife_superior", "fg": 3589 }, - { "id": "overlay_female_wielded_spear_knife_superior", "fg": 3588 }, - { "id": "overlay_male_wielded_spear_rebar", "fg": 3593 }, - { "id": "overlay_female_wielded_spear_rebar", "fg": 3592 }, - { "id": "overlay_male_wielded_spear_pipe", "fg": 3591 }, - { "id": "overlay_female_wielded_spear_pipe", "fg": 3590 }, - { "id": "overlay_male_wielded_spear_steel", "fg": 3597 }, - { "id": "overlay_female_wielded_spear_steel", "fg": 3596 }, - { "id": "overlay_male_wielded_spear_copper", "fg": 3585 }, - { "id": "overlay_female_wielded_spear_copper", "fg": 3584 }, - { "id": "overlay_female_wielded_splinter", "fg": 3600 }, - { "id": "overlay_male_wielded_splinter", "fg": 3601 }, - { "id": "overlay_wielded_knife_steak", "fg": 3602 }, - { "id": "overlay_wielded_steel_chunk", "fg": 3603 }, - { "id": "overlay_wielded_steel_lump", "fg": 3604 }, - { "id": "overlay_female_wielded_stick", "fg": 3605 }, - { "id": "overlay_male_wielded_stick", "fg": 3606 }, - { "id": "overlay_female_wielded_stick_long", "fg": 3607 }, - { "id": "overlay_male_wielded_stick_long", "fg": 3608 }, - { "id": "overlay_female_wielded_primitive_hammer", "fg": 3609 }, - { "id": "overlay_male_wielded_primitive_hammer", "fg": 3610 }, - { "id": "overlay_female_wielded_spear_stone", "fg": 3611 }, - { "id": "overlay_male_wielded_spear_stone", "fg": 3612 }, - { "id": "overlay_wielded_knife_rambo", "fg": 3613 }, - { "id": "overlay_female_wielded_spear_survivor", "fg": 3614 }, - { "id": "overlay_male_wielded_spear_survivor", "fg": 3615 }, - { "id": "overlay_wielded_sw_619", "fg": 3616 }, - { "id": "overlay_wielded_switchblade", "fg": 3617 }, - { "id": "overlay_wielded_sword_cane", "fg": 3618 }, - { "id": "overlay_wielded_tanto", "fg": 3620 }, - { "id": "overlay_female_wielded_teapot", "fg": 3621 }, - { "id": "overlay_male_wielded_teapot", "fg": 3622 }, - { "id": "overlay_female_wielded_television", "fg": 3623 }, - { "id": "overlay_male_wielded_television", "fg": 3624 }, - { "id": "overlay_female_wielded_thermos", "fg": 3625 }, - { "id": "overlay_male_wielded_thermos", "fg": 3626 }, - { "id": "overlay_wielded_boltcutters", "fg": 3627 }, - { "id": "overlay_wielded_digging_stick", "fg": 3628 }, - { "id": "overlay_wielded_e_tool", "fg": 3629 }, - { "id": "overlay_wielded_halligan", "fg": 3630 }, - { "id": "overlay_wielded_hoe", "fg": 3631 }, - { "id": "overlay_wielded_jackhammer", "fg": 3632 }, - { "id": "overlay_wielded_elec_jackhammer", "fg": 3632 }, - { "id": "overlay_wielded_lobotomizer", "fg": 3633 }, - { "id": "overlay_wielded_makeshift_axe", "fg": 3634 }, - { "id": "overlay_wielded_ny_hook", "fg": 3635 }, - { "id": "overlay_wielded_pickaxe", "fg": 3636 }, - { "id": "overlay_wielded_hammer_sledge_engineer", "fg": 3637 }, - { "id": "overlay_wielded_hammer_sledge_heavy", "fg": 3638 }, - { "id": "overlay_wielded_hammer_sledge_short", "fg": 3639 }, - { "id": "overlay_wielded_hammer_sledge", "fg": 3640 }, - { "id": "overlay_wielded_g_shovel", "fg": 3641 }, - { "id": "overlay_wielded_primitive_shovel", "fg": 3642 }, - { "id": "overlay_wielded_knife_trench", "fg": 3643 }, - { "id": "overlay_female_wielded_teleumbrella", "fg": 3644 }, - { "id": "overlay_male_wielded_teleumbrella", "fg": 3645 }, - { "id": "overlay_female_wielded_umbrella", "fg": 3644 }, - { "id": "overlay_male_wielded_umbrella", "fg": 3645 }, - { "id": "overlay_wielded_wakizashi", "fg": 3646 }, - { "id": "overlay_male_wielded_2h_flail_steel", "fg": 3648 }, - { "id": "overlay_female_wielded_2h_flail_steel", "fg": 3647 }, - { "id": "overlay_wielded_warhammer", "fg": 3649 }, - { "id": "overlay_wielded_bolas", "fg": 3650 }, - { "id": "overlay_wielded_bullwhip", "fg": 3651 }, - { "id": "overlay_female_wielded_homewrecker", "fg": 3652 }, - { "id": "overlay_male_wielded_homewrecker", "fg": 3653 }, - { "id": "overlay_wielded_lawn_dart", "fg": 3654 }, - { "id": "overlay_wielded_net", "fg": 3655 }, - { "id": "overlay_wielded_bullwhip_razor", "fg": 3656 }, - { "id": "overlay_wielded_sling", "fg": 3657 }, - { "id": "overlay_wielded_staff_sling", "fg": 3658 }, - { "id": "overlay_wielded_throwing_axe", "fg": 3659 }, - { "id": "overlay_female_wielded_throwing_knife", "fg": 3660 }, - { "id": "overlay_male_wielded_throwing_knife", "fg": 3661 }, - { "id": "overlay_wielded_throwing_stick", "fg": 3662 }, - { "id": "overlay_wielded_shocktonfa_off", "fg": 3663 }, - { "id": "overlay_wielded_shocktonfa_on", "fg": 3663 }, - { "id": "overlay_wielded_tonfa", "fg": 3664 }, - { "id": "overlay_wielded_tonfa_wood", "fg": 3665 }, - { "id": "overlay_female_wielded_wood_panel", "fg": 3666 }, - { "id": "overlay_male_wielded_wood_panel", "fg": 3667 }, - { "id": "overlay_female_wielded_wood_sheet", "fg": 3668 }, - { "id": "overlay_male_wielded_wood_sheet", "fg": 3669 }, - { "id": "overlay_wielded_sword_wood", "fg": 3670 }, - { "id": "overlay_wielded_sword_nail", "fg": 3671 }, - { "id": "overlay_wielded_zweihander", "fg": 3672 }, - { "id": "overlay_female_worn_armor_samurai", "fg": 3673 }, - { "id": "overlay_male_worn_armor_samurai", "fg": 3674 }, - { "id": "overlay_female_worn_chainmail_suit", "fg": 3683 }, - { "id": "overlay_male_worn_chainmail_suit", "fg": 3684 }, - { "id": "overlay_female_worn_chainmail_feet", "fg": 3685 }, - { "id": "overlay_male_worn_chainmail_feet", "fg": 3686 }, - { "id": "overlay_female_worn_chainmail_hood", "fg": 3687 }, - { "id": "overlay_male_worn_chainmail_hood", "fg": 3688 }, - { "id": "overlay_female_worn_chainmail_hands", "fg": 3689 }, - { "id": "overlay_male_worn_chainmail_hands", "fg": 3690 }, - { "id": "overlay_female_worn_chainmail_hauberk", "fg": 3691 }, - { "id": "overlay_male_worn_chainmail_hauberk", "fg": 3692 }, - { "id": "overlay_female_worn_chainmail_legs", "fg": 3693 }, - { "id": "overlay_male_worn_chainmail_legs", "fg": 3694 }, - { "id": "overlay_female_worn_chainmail_arms", "fg": 3695 }, - { "id": "overlay_male_worn_chainmail_arms", "fg": 3696 }, - { "id": "overlay_female_worn_chainmail_vest", "fg": 3697 }, - { "id": "overlay_male_worn_chainmail_vest", "fg": 3698 }, - { "id": "overlay_female_worn_vest_leather_mod", "fg": 3679 }, - { "id": "overlay_male_worn_vest_leather_mod", "fg": 3680 }, - { "id": "overlay_female_worn_armor_blarmor", "fg": 3681 }, - { "id": "overlay_male_worn_armor_blarmor", "fg": 3682 }, - { "id": "overlay_female_worn_armguard_larmor", "fg": 3703 }, - { "id": "overlay_male_worn_armguard_larmor", "fg": 3704 }, - { "id": "overlay_female_worn_boots_larmor", "fg": 3705 }, - { "id": "overlay_male_worn_boots_larmor", "fg": 3706 }, - { "id": "overlay_male_worn_gauntlets_larmor", "fg": 3707 }, - { "id": "overlay_female_worn_gauntlets_larmor", "fg": 3708 }, - { "id": "overlay_male_worn_helmet_larmor", "fg": 3710 }, - { "id": "overlay_female_worn_helmet_larmor", "fg": 3709 }, - { "id": "overlay_female_worn_armor_larmor", "fg": 3711 }, - { "id": "overlay_male_worn_armor_larmor", "fg": 3712 }, - { "id": "overlay_female_worn_footrags_leather", "fg": 3713 }, - { "id": "overlay_male_worn_footrags_leather", "fg": 3714 }, - { "id": "overlay_female_worn_gloves_wraps_leather", "fg": 3715 }, - { "id": "overlay_male_worn_gloves_wraps_leather", "fg": 3716 }, - { "id": "overlay_female_worn_vambrace_larmor", "fg": 3717 }, - { "id": "overlay_male_worn_vambrace_larmor", "fg": 3718 }, - { "id": "overlay_female_worn_vest_leather", "fg": 3719 }, - { "id": "overlay_male_worn_vest_leather", "fg": 3720 }, - { "id": "overlay_female_worn_armor_plarmor", "fg": 3723 }, - { "id": "overlay_male_worn_armor_plarmor", "fg": 3724 }, - { "id": "overlay_female_worn_gloves_studded", "fg": 3731 }, - { "id": "overlay_male_worn_gloves_studded", "fg": 3732 }, - { "id": "overlay_male_worn_helmet_plate", "fg": 3702 }, - { "id": "overlay_male_worn_armor_lightplate", "fg": 3722 }, - { "id": "overlay_male_worn_gloves_plate", "fg": 3678 }, - { "id": "overlay_male_worn_boots_plate", "fg": 3676 }, - { "id": "overlay_male_worn_cuirass_lightplate", "fg": 3700 }, - { "id": "overlay_male_worn_armguard_lightplate", "fg": 3728 }, - { "id": "overlay_male_worn_legguard_lightplate", "fg": 3730 }, - { "id": "overlay_female_worn_helmet_plate", "fg": 3701 }, - { "id": "overlay_female_worn_armor_lightplate", "fg": 3721 }, - { "id": "overlay_female_worn_gloves_plate", "fg": 3677 }, - { "id": "overlay_female_worn_boots_plate", "fg": 3675 }, - { "id": "overlay_female_worn_cuirass_lightplate", "fg": 3699 }, - { "id": "overlay_female_worn_armguard_lightplate", "fg": 3727 }, - { "id": "overlay_female_worn_legguard_lightplate", "fg": 3729 }, - { "id": "overlay_female_worn_armguard_hard", "fg": 3733 }, - { "id": "overlay_male_worn_armguard_hard", "fg": 3734 }, - { "id": "overlay_female_worn_armor_riot", "fg": 3735 }, - { "id": "overlay_male_worn_armor_riot", "fg": 3736 }, - { "id": "overlay_female_worn_ballistic_vest_esapi", "fg": 3737 }, - { "id": "overlay_male_worn_ballistic_vest_esapi", "fg": 3738 }, - { "id": "overlay_female_worn_helmet_riot", "fg": 3739 }, - { "id": "overlay_male_worn_helmet_riot", "fg": 3740 }, - { "id": "overlay_female_worn_kevlar", "fg": 3741 }, - { "id": "overlay_male_worn_kevlar", "fg": 3742 }, - { "id": "overlay_female_worn_legguard_hard", "fg": 3743 }, - { "id": "overlay_male_worn_legguard_hard", "fg": 3744 }, - { "id": "overlay_female_worn_swat_armor", "fg": 3747 }, - { "id": "overlay_male_worn_swat_armor", "fg": 3748 }, - { "id": "overlay_female_worn_tac_fullhelmet", "fg": 3749 }, - { "id": "overlay_male_worn_tac_fullhelmet", "fg": 3750 }, - { "id": "overlay_female_worn_tac_helmet", "fg": 3751 }, - { "id": "overlay_male_worn_tac_helmet", "fg": 3752 }, - { "id": "overlay_female_worn_2byarm_guard", "fg": 3753 }, - { "id": "overlay_male_worn_2byarm_guard", "fg": 3754 }, - { "id": "overlay_female_worn_2byshin_guard", "fg": 3755 }, - { "id": "overlay_male_worn_2byshin_guard", "fg": 3756 }, - { "id": "overlay_female_worn_legguard_metal", "fg": 3757 }, - { "id": "overlay_male_worn_legguard_metal", "fg": 3758 }, - { "id": "overlay_female_worn_armguard_metal", "fg": 3759 }, - { "id": "overlay_male_worn_armguard_metal", "fg": 3760 }, - { "id": "overlay_male_worn_helmet_scrap", "fg": 3770 }, - { "id": "overlay_male_worn_armor_scrapsuit", "fg": 3774 }, - { "id": "overlay_male_worn_boots_scrap", "fg": 3766 }, - { "id": "overlay_male_worn_cuirass_scrap", "fg": 3768 }, - { "id": "overlay_male_worn_armguard_scrap", "fg": 3726 }, - { "id": "overlay_male_worn_legguard_scrap", "fg": 3772 }, - { "id": "overlay_female_worn_helmet_scrap", "fg": 3769 }, - { "id": "overlay_female_worn_armor_scrapsuit", "fg": 3773 }, - { "id": "overlay_female_worn_boots_scrap", "fg": 3765 }, - { "id": "overlay_female_worn_cuirass_scrap", "fg": 3767 }, - { "id": "overlay_female_worn_armguard_scrap", "fg": 3725 }, - { "id": "overlay_female_worn_legguard_scrap", "fg": 3771 }, - { "id": "overlay_male_worn_backpack", "fg": 3780 }, - { "id": "overlay_female_worn_backpack", "fg": 3775 }, - { "id": "overlay_male_worn_backpack_hiking", "fg": 3777 }, - { "id": "overlay_female_worn_backpack_hiking", "fg": 3776 }, - { "id": "overlay_female_worn_backpack_leather", "fg": 3778 }, - { "id": "overlay_male_worn_backpack_leather", "fg": 3779 }, - { "id": "overlay_male_worn_backpack_tactical_large", "fg": 3782 }, - { "id": "overlay_female_worn_backpack_tactical_large", "fg": 3781 }, - { "id": "overlay_male_worn_molle_pack", "fg": 3784 }, - { "id": "overlay_female_worn_molle_pack", "fg": 3783 }, - { "id": [ "overlay_female_worn_rifle_case_soft", "overlay_female_worn_rifle_case_soft_2" ], "fg": 3786 }, + "fg": 3682 + }, + { "id": "overlay_female_wielded_nailbat", "fg": 3684 }, + { "id": "overlay_male_wielded_nailbat", "fg": 3685 }, + { "id": "overlay_female_wielded_nailboard", "fg": 3686 }, + { "id": "overlay_male_wielded_nailboard", "fg": 3687 }, + { "id": "overlay_wielded_nodachi", "fg": 3688 }, + { "id": "overlay_male_wielded_2h_flail_wood", "fg": 3690 }, + { "id": "overlay_female_wielded_2h_flail_wood", "fg": 3689 }, + { "id": "overlay_wielded_pike_copper", "fg": 3691 }, + { "id": "overlay_wielded_pike", "fg": 3692 }, + { "id": "overlay_wielded_pike_wood", "fg": 3693 }, + { "id": "overlay_male_wielded_pillow", "fg": 3697 }, + { "id": "overlay_female_wielded_pillow", "fg": 3696 }, + { "id": "overlay_male_wielded_down_pillow", "fg": 3695 }, + { "id": "overlay_female_wielded_down_pillow", "fg": 3694 }, + { "id": "overlay_wielded_pipe", "fg": 3698 }, + { "id": "overlay_wielded_pitchfork", "fg": 3699 }, + { "id": "overlay_wielded_sharp_toothbrush", "fg": 3700 }, + { "id": "overlay_wielded_pockknife", "fg": 3701 }, + { "id": "overlay_female_wielded_pot", "fg": 3702 }, + { "id": "overlay_male_wielded_pot", "fg": 3703 }, + { "id": "overlay_female_wielded_pot_copper", "fg": 3704 }, + { "id": "overlay_male_wielded_pot_copper", "fg": 3705 }, + { "id": "overlay_wielded_punch_dagger", "fg": 3706 }, + { "id": "overlay_female_wielded_qiang", "fg": 3707 }, + { "id": "overlay_male_wielded_qiang", "fg": 3708 }, + { "id": "overlay_wielded_female_i_staff", "fg": 3709 }, + { "id": "overlay_wielded_male_i_staff", "fg": 3710 }, + { "id": "overlay_female_wielded_shock_staff", "fg": 3711 }, + { "id": "overlay_male_wielded_shock_staff", "fg": 3712 }, + { "id": "overlay_female_wielded_q_staff", "fg": 3713 }, + { "id": "overlay_male_wielded_q_staff", "fg": 3714 }, + { "id": "overlay_female_wielded_rag", "fg": 3715 }, + { "id": "overlay_male_wielded_rag", "fg": 3716 }, + { "id": "overlay_wielded_rapier", "fg": 3717 }, + { "id": "overlay_wielded_rebar", "fg": 3718 }, + { "id": "overlay_female_wielded_rifle_flintlock", "fg": 3719 }, + { "id": "overlay_male_wielded_rifle_flintlock", "fg": 3720 }, + { "id": "overlay_wielded_knife_rm42", "fg": 3721 }, + { "id": "overlay_wielded_rock", "fg": 3722 }, + { "id": "overlay_wielded_rock_sock", "fg": 3723 }, + { "id": "overlay_wielded_rolling_pin", "fg": 3724 }, + { "id": "overlay_wielded_scissors", "fg": 3725 }, + { "id": "overlay_wielded_sharp_rock", "fg": 3726 }, + { "id": "overlay_wielded_shillelagh", "fg": 3727 }, + { "id": "overlay_male_wielded_pointy_stick", "fg": 3729 }, + { "id": "overlay_female_wielded_pointy_stick", "fg": 3728 }, + { "id": "overlay_male_wielded_spear_wood", "fg": 3745 }, + { "id": "overlay_female_wielded_spear_wood", "fg": 3744 }, + { "id": "overlay_male_wielded_spear_spike", "fg": 3741 }, + { "id": "overlay_female_wielded_spear_spike", "fg": 3740 }, + { "id": "overlay_male_wielded_spear_knife", "fg": 3733 }, + { "id": "overlay_female_wielded_spear_knife", "fg": 3732 }, + { "id": "overlay_male_wielded_spear_knife_superior", "fg": 3735 }, + { "id": "overlay_female_wielded_spear_knife_superior", "fg": 3734 }, + { "id": "overlay_male_wielded_spear_rebar", "fg": 3739 }, + { "id": "overlay_female_wielded_spear_rebar", "fg": 3738 }, + { "id": "overlay_male_wielded_spear_pipe", "fg": 3737 }, + { "id": "overlay_female_wielded_spear_pipe", "fg": 3736 }, + { "id": "overlay_male_wielded_spear_steel", "fg": 3743 }, + { "id": "overlay_female_wielded_spear_steel", "fg": 3742 }, + { "id": "overlay_male_wielded_spear_copper", "fg": 3731 }, + { "id": "overlay_female_wielded_spear_copper", "fg": 3730 }, + { "id": "overlay_female_wielded_splinter", "fg": 3746 }, + { "id": "overlay_male_wielded_splinter", "fg": 3747 }, + { "id": "overlay_wielded_knife_steak", "fg": 3748 }, + { "id": "overlay_wielded_steel_chunk", "fg": 3749 }, + { "id": "overlay_wielded_steel_lump", "fg": 3750 }, + { "id": "overlay_female_wielded_stick", "fg": 3751 }, + { "id": "overlay_male_wielded_stick", "fg": 3752 }, + { "id": "overlay_female_wielded_stick_long", "fg": 3753 }, + { "id": "overlay_male_wielded_stick_long", "fg": 3754 }, + { "id": "overlay_female_wielded_primitive_hammer", "fg": 3755 }, + { "id": "overlay_male_wielded_primitive_hammer", "fg": 3756 }, + { "id": "overlay_female_wielded_spear_stone", "fg": 3757 }, + { "id": "overlay_male_wielded_spear_stone", "fg": 3758 }, + { "id": "overlay_wielded_knife_rambo", "fg": 3759 }, + { "id": "overlay_female_wielded_spear_survivor", "fg": 3760 }, + { "id": "overlay_male_wielded_spear_survivor", "fg": 3761 }, + { "id": "overlay_wielded_sw_619", "fg": 3762 }, + { "id": "overlay_wielded_switchblade", "fg": 3763 }, + { "id": "overlay_wielded_sword_cane", "fg": 3764 }, + { "id": "overlay_wielded_tanto", "fg": 3766 }, + { "id": "overlay_female_wielded_teapot", "fg": 3767 }, + { "id": "overlay_male_wielded_teapot", "fg": 3768 }, + { "id": "overlay_female_wielded_television", "fg": 3769 }, + { "id": "overlay_male_wielded_television", "fg": 3770 }, + { "id": "overlay_female_wielded_thermos", "fg": 3771 }, + { "id": "overlay_male_wielded_thermos", "fg": 3772 }, + { "id": "overlay_wielded_boltcutters", "fg": 3773 }, + { "id": "overlay_wielded_digging_stick", "fg": 3774 }, + { "id": "overlay_wielded_e_tool", "fg": 3775 }, + { "id": "overlay_wielded_halligan", "fg": 3776 }, + { "id": "overlay_wielded_jackhammer", "fg": 3778 }, + { "id": "overlay_wielded_elec_jackhammer", "fg": 3778 }, + { "id": "overlay_wielded_lobotomizer", "fg": 3779 }, + { "id": "overlay_wielded_makeshift_axe", "fg": 3780 }, + { "id": "overlay_wielded_ny_hook", "fg": 3781 }, + { "id": "overlay_wielded_pickaxe", "fg": 3782 }, + { "id": "overlay_wielded_hammer_sledge_engineer", "fg": 3783 }, + { "id": "overlay_wielded_hammer_sledge_heavy", "fg": 3784 }, + { "id": "overlay_wielded_hammer_sledge_short", "fg": 3785 }, + { "id": "overlay_wielded_hammer_sledge", "fg": 3786 }, + { "id": "overlay_wielded_g_shovel", "fg": 3787 }, + { "id": "overlay_wielded_primitive_shovel", "fg": 3788 }, + { "id": "overlay_wielded_knife_trench", "fg": 3789 }, + { "id": "overlay_female_wielded_teleumbrella", "fg": 3790 }, + { "id": "overlay_male_wielded_teleumbrella", "fg": 3791 }, + { "id": "overlay_female_wielded_umbrella", "fg": 3790 }, + { "id": "overlay_male_wielded_umbrella", "fg": 3791 }, + { "id": "overlay_wielded_wakizashi", "fg": 3792 }, + { "id": "overlay_male_wielded_2h_flail_steel", "fg": 3794 }, + { "id": "overlay_female_wielded_2h_flail_steel", "fg": 3793 }, + { "id": "overlay_wielded_warhammer", "fg": 3795 }, + { "id": "overlay_wielded_bolas", "fg": 3796 }, + { "id": "overlay_wielded_bullwhip", "fg": 3797 }, + { "id": "overlay_female_wielded_homewrecker", "fg": 3798 }, + { "id": "overlay_male_wielded_homewrecker", "fg": 3799 }, + { "id": "overlay_wielded_lawn_dart", "fg": 3800 }, + { "id": "overlay_wielded_net", "fg": 3801 }, + { "id": "overlay_wielded_bullwhip_razor", "fg": 3802 }, + { "id": "overlay_wielded_sling", "fg": 3803 }, + { "id": "overlay_wielded_staff_sling", "fg": 3804 }, + { "id": "overlay_wielded_throwing_axe", "fg": 3805 }, + { "id": "overlay_female_wielded_throwing_knife", "fg": 3806 }, + { "id": "overlay_male_wielded_throwing_knife", "fg": 3807 }, + { "id": "overlay_wielded_throwing_stick", "fg": 3808 }, + { "id": "overlay_wielded_shocktonfa_off", "fg": 3809 }, + { "id": "overlay_wielded_shocktonfa_on", "fg": 3809 }, + { "id": "overlay_wielded_tonfa", "fg": 3810 }, + { "id": "overlay_wielded_tonfa_wood", "fg": 3811 }, + { "id": "overlay_female_wielded_wood_panel", "fg": 3812 }, + { "id": "overlay_male_wielded_wood_panel", "fg": 3813 }, + { "id": "overlay_female_wielded_wood_sheet", "fg": 3814 }, + { "id": "overlay_male_wielded_wood_sheet", "fg": 3815 }, + { "id": "overlay_wielded_sword_wood", "fg": 3816 }, + { "id": "overlay_wielded_sword_nail", "fg": 3817 }, + { "id": "overlay_wielded_zweihander", "fg": 3818 }, + { "id": "overlay_female_worn_armor_samurai", "fg": 3819 }, + { "id": "overlay_male_worn_armor_samurai", "fg": 3820 }, + { "id": "overlay_female_worn_chainmail_suit", "fg": 3829 }, + { "id": "overlay_male_worn_chainmail_suit", "fg": 3830 }, + { "id": "overlay_female_worn_chainmail_feet", "fg": 3831 }, + { "id": "overlay_male_worn_chainmail_feet", "fg": 3832 }, + { "id": "overlay_female_worn_chainmail_hood", "fg": 3833 }, + { "id": "overlay_male_worn_chainmail_hood", "fg": 3834 }, + { "id": "overlay_female_worn_chainmail_hands", "fg": 3835 }, + { "id": "overlay_male_worn_chainmail_hands", "fg": 3836 }, + { "id": "overlay_female_worn_chainmail_hauberk", "fg": 3837 }, + { "id": "overlay_male_worn_chainmail_hauberk", "fg": 3838 }, + { "id": "overlay_female_worn_chainmail_legs", "fg": 3839 }, + { "id": "overlay_male_worn_chainmail_legs", "fg": 3840 }, + { "id": "overlay_female_worn_chainmail_arms", "fg": 3841 }, + { "id": "overlay_male_worn_chainmail_arms", "fg": 3842 }, + { "id": "overlay_female_worn_chainmail_vest", "fg": 3843 }, + { "id": "overlay_male_worn_chainmail_vest", "fg": 3844 }, + { "id": "overlay_female_worn_vest_leather_mod", "fg": 3825 }, + { "id": "overlay_male_worn_vest_leather_mod", "fg": 3826 }, + { "id": "overlay_female_worn_armor_blarmor", "fg": 3827 }, + { "id": "overlay_male_worn_armor_blarmor", "fg": 3828 }, + { "id": "overlay_female_worn_armguard_larmor", "fg": 3849 }, + { "id": "overlay_male_worn_armguard_larmor", "fg": 3850 }, + { "id": "overlay_female_worn_boots_larmor", "fg": 3851 }, + { "id": "overlay_male_worn_boots_larmor", "fg": 3852 }, + { "id": "overlay_male_worn_gauntlets_larmor", "fg": 3853 }, + { "id": "overlay_female_worn_gauntlets_larmor", "fg": 3854 }, + { "id": "overlay_male_worn_helmet_larmor", "fg": 3856 }, + { "id": "overlay_female_worn_helmet_larmor", "fg": 3855 }, + { "id": "overlay_female_worn_armor_larmor", "fg": 3857 }, + { "id": "overlay_male_worn_armor_larmor", "fg": 3858 }, + { "id": "overlay_female_worn_footrags_leather", "fg": 3859 }, + { "id": "overlay_male_worn_footrags_leather", "fg": 3860 }, + { "id": "overlay_female_worn_gloves_wraps_leather", "fg": 3861 }, + { "id": "overlay_male_worn_gloves_wraps_leather", "fg": 3862 }, + { "id": "overlay_female_worn_vambrace_larmor", "fg": 3863 }, + { "id": "overlay_male_worn_vambrace_larmor", "fg": 3864 }, + { "id": "overlay_female_worn_vest_leather", "fg": 3865 }, + { "id": "overlay_male_worn_vest_leather", "fg": 3866 }, + { "id": "overlay_female_worn_armor_plarmor", "fg": 3869 }, + { "id": "overlay_male_worn_armor_plarmor", "fg": 3870 }, + { "id": "overlay_female_worn_gloves_studded", "fg": 3877 }, + { "id": "overlay_male_worn_gloves_studded", "fg": 3878 }, + { "id": "overlay_male_worn_helmet_plate", "fg": 3848 }, + { "id": "overlay_male_worn_armor_lightplate", "fg": 3868 }, + { "id": "overlay_male_worn_gloves_plate", "fg": 3824 }, + { "id": "overlay_male_worn_boots_plate", "fg": 3822 }, + { "id": "overlay_male_worn_cuirass_lightplate", "fg": 3846 }, + { "id": "overlay_male_worn_armguard_lightplate", "fg": 3874 }, + { "id": "overlay_male_worn_legguard_lightplate", "fg": 3876 }, + { "id": "overlay_female_worn_helmet_plate", "fg": 3847 }, + { "id": "overlay_female_worn_armor_lightplate", "fg": 3867 }, + { "id": "overlay_female_worn_gloves_plate", "fg": 3823 }, + { "id": "overlay_female_worn_boots_plate", "fg": 3821 }, + { "id": "overlay_female_worn_cuirass_lightplate", "fg": 3845 }, + { "id": "overlay_female_worn_armguard_lightplate", "fg": 3873 }, + { "id": "overlay_female_worn_legguard_lightplate", "fg": 3875 }, + { "id": "overlay_female_worn_armguard_hard", "fg": 3879 }, + { "id": "overlay_male_worn_armguard_hard", "fg": 3880 }, + { "id": "overlay_female_worn_armor_riot", "fg": 3881 }, + { "id": "overlay_male_worn_armor_riot", "fg": 3882 }, + { "id": "overlay_female_worn_ballistic_vest_esapi", "fg": 3883 }, + { "id": "overlay_male_worn_ballistic_vest_esapi", "fg": 3884 }, + { "id": "overlay_female_worn_helmet_riot", "fg": 3885 }, + { "id": "overlay_male_worn_helmet_riot", "fg": 3886 }, + { "id": "overlay_female_worn_kevlar", "fg": 3887 }, + { "id": "overlay_male_worn_kevlar", "fg": 3888 }, + { "id": "overlay_female_worn_legguard_hard", "fg": 3889 }, + { "id": "overlay_male_worn_legguard_hard", "fg": 3890 }, + { "id": "overlay_female_worn_swat_armor", "fg": 3893 }, + { "id": "overlay_male_worn_swat_armor", "fg": 3894 }, + { "id": "overlay_female_worn_tac_fullhelmet", "fg": 3895 }, + { "id": "overlay_male_worn_tac_fullhelmet", "fg": 3896 }, + { "id": "overlay_female_worn_tac_helmet", "fg": 3897 }, + { "id": "overlay_male_worn_tac_helmet", "fg": 3898 }, + { "id": "overlay_female_worn_2byarm_guard", "fg": 3899 }, + { "id": "overlay_male_worn_2byarm_guard", "fg": 3900 }, + { "id": "overlay_female_worn_2byshin_guard", "fg": 3901 }, + { "id": "overlay_male_worn_2byshin_guard", "fg": 3902 }, + { "id": "overlay_female_worn_legguard_metal", "fg": 3903 }, + { "id": "overlay_male_worn_legguard_metal", "fg": 3904 }, + { "id": "overlay_female_worn_armguard_metal", "fg": 3905 }, + { "id": "overlay_male_worn_armguard_metal", "fg": 3906 }, + { "id": "overlay_male_worn_helmet_scrap", "fg": 3916 }, + { "id": "overlay_male_worn_armor_scrapsuit", "fg": 3920 }, + { "id": "overlay_male_worn_boots_scrap", "fg": 3912 }, + { "id": "overlay_male_worn_cuirass_scrap", "fg": 3914 }, + { "id": "overlay_male_worn_armguard_scrap", "fg": 3872 }, + { "id": "overlay_male_worn_legguard_scrap", "fg": 3918 }, + { "id": "overlay_female_worn_helmet_scrap", "fg": 3915 }, + { "id": "overlay_female_worn_armor_scrapsuit", "fg": 3919 }, + { "id": "overlay_female_worn_boots_scrap", "fg": 3911 }, + { "id": "overlay_female_worn_cuirass_scrap", "fg": 3913 }, + { "id": "overlay_female_worn_armguard_scrap", "fg": 3871 }, + { "id": "overlay_female_worn_legguard_scrap", "fg": 3917 }, + { "id": "overlay_male_worn_backpack", "fg": 3926 }, + { "id": "overlay_female_worn_backpack", "fg": 3921 }, + { "id": "overlay_male_worn_backpack_hiking", "fg": 3923 }, + { "id": "overlay_female_worn_backpack_hiking", "fg": 3922 }, + { "id": "overlay_female_worn_backpack_leather", "fg": 3924 }, + { "id": "overlay_male_worn_backpack_leather", "fg": 3925 }, + { "id": "overlay_male_worn_backpack_tactical_large", "fg": 3928 }, + { "id": "overlay_female_worn_backpack_tactical_large", "fg": 3927 }, + { "id": "overlay_male_worn_molle_pack", "fg": 3930 }, + { "id": "overlay_female_worn_molle_pack", "fg": 3929 }, + { "id": [ "overlay_female_worn_rifle_case_soft", "overlay_female_worn_rifle_case_soft_2" ], "fg": 3932 }, { "id": [ "overlay_female_worn_rifle_case_soft_leather", "overlay_female_worn_rifle_case_soft_leather_2", "overlay_female_worn_rifle_case_xl_soft_leather" ], - "fg": 3787 + "fg": 3933 }, - { "id": [ "overlay_male_worn_rifle_case_soft", "overlay_male_worn_rifle_case_soft_2" ], "fg": 3790 }, + { "id": [ "overlay_male_worn_rifle_case_soft", "overlay_male_worn_rifle_case_soft_2" ], "fg": 3936 }, { "id": [ "overlay_male_worn_rifle_case_soft_leather", "overlay_male_worn_rifle_case_soft_leather_2", "overlay_male_worn_rifle_case_xl_soft_leather" ], - "fg": 3791 - }, - { "id": "overlay_female_worn_rucksack", "fg": 3793 }, - { "id": "overlay_male_worn_rucksack", "fg": 3794 }, - { "id": "overlay_worn_bead_necklace", "fg": 3796 }, - { "id": "overlay_worn_bead_bracelet", "fg": 3795 }, - { "id": "overlay_worn_leather_belt", "fg": 3806 }, - { "id": "overlay_worn_police_belt", "fg": 3818 }, - { "id": "overlay_worn_tool_belt", "fg": 3823 }, - { "id": "overlay_worn_webbing_belt", "fg": 3825 }, - { "id": "overlay_worn_briefcase", "fg": 3799 }, - { "id": "overlay_wielded_briefcase", "fg": 3799 }, - { "id": "overlay_worn_briefcase_smg", "fg": 3799 }, - { "id": "overlay_wielded_briefcase_smg", "fg": 3799 }, - { "id": "overlay_worn_hk_briefcase", "fg": 3799 }, - { "id": "overlay_wielded_hk_briefcase", "fg": 3799 }, - { "id": "overlay_female_worn_wearable_light", "fg": 3802 }, - { "id": "overlay_male_worn_wearable_light", "fg": 3803 }, - { "id": "overlay_female_worn_wearable_light_on", "fg": 3802 }, - { "id": "overlay_male_worn_wearable_light_on", "fg": 3803 }, - { "id": "overlay_female_worn_survivor_light", "fg": 3802 }, - { "id": "overlay_male_worn_survivor_light", "fg": 3803 }, - { "id": "overlay_female_worn_survivor_light_on", "fg": 3802 }, - { "id": "overlay_male_worn_survivor_light_on", "fg": 3803 }, - { "id": "overlay_female_worn_holster", "fg": 3804 }, - { "id": "overlay_male_worn_holster", "fg": 3805 }, - { "id": "overlay_female_worn_legpouch_large", "fg": 3807 }, - { "id": "overlay_male_worn_legpouch_large", "fg": 3808 }, - { "id": "overlay_female_worn_legrig", "fg": 3809 }, - { "id": "overlay_male_worn_legrig", "fg": 3810 }, - { "id": "overlay_worn_judo_belt_black", "fg": 3797 }, - { "id": "overlay_worn_judo_belt_blue", "fg": 3798 }, - { "id": "overlay_worn_judo_belt_brown", "fg": 3800 }, - { "id": "overlay_worn_judo_belt_green", "fg": 3801 }, - { "id": "overlay_worn_judo_belt_orange", "fg": 3811 }, - { "id": "overlay_worn_judo_belt_white", "fg": 3826 }, - { "id": "overlay_worn_judo_belt_yellow", "fg": 3827 }, - { "id": "overlay_female_worn_ragpouch", "fg": 3819 }, - { "id": "overlay_male_worn_ragpouch", "fg": 3820 }, - { "id": "overlay_female_worn_tacvest", "fg": 3821 }, - { "id": "overlay_male_worn_tacvest", "fg": 3822 }, - { "id": "overlay_worn_wearable_light", "fg": 3824 }, - { "id": "overlay_female_worn_dinosuit", "fg": 3828 }, - { "id": "overlay_male_worn_dinosuit", "fg": 3829 }, - { "id": "overlay_female_worn_hazmat_suit", "fg": 3830 }, - { "id": "overlay_male_worn_hazmat_suit", "fg": 3831 }, - { "id": "overlay_female_worn_judo_gi", "fg": 3832 }, - { "id": "overlay_male_worn_judo_gi", "fg": 3833 }, - { "id": "overlay_female_worn_jumpsuit", "fg": 3834 }, - { "id": "overlay_male_worn_jumpsuit", "fg": 3835 }, - { "id": "overlay_female_worn_karate_gi", "fg": 3836 }, - { "id": "overlay_male_worn_karate_gi", "fg": 3837 }, - { "id": "overlay_female_worn_robofac_jumpsuit", "fg": 3838 }, - { "id": "overlay_male_worn_robofac_jumpsuit", "fg": 3839 }, - { "id": "overlay_female_worn_subject_suit", "fg": 3840 }, - { "id": "overlay_male_worn_subject_suit", "fg": 3841 }, - { "id": "overlay_female_worn_suit", "fg": 3842 }, - { "id": "overlay_male_worn_suit", "fg": 3843 }, - { "id": "overlay_female_worn_touring_suit", "fg": 3844 }, - { "id": "overlay_male_worn_touring_suit", "fg": 3845 }, - { "id": "overlay_female_worn_boots", "fg": 3849 }, - { "id": "overlay_male_worn_boots", "fg": 3854 }, - { "id": "overlay_female_worn_boots_bunker", "fg": 3846 }, - { "id": "overlay_male_worn_boots_bunker", "fg": 3847 }, - { "id": "overlay_female_worn_boots_fur", "fg": 3850 }, - { "id": "overlay_male_worn_boots_fur", "fg": 3851 }, - { "id": "overlay_female_worn_boots_hiking", "fg": 3852 }, - { "id": "overlay_male_worn_boots_hiking", "fg": 3853 }, - { "id": "overlay_female_worn_boots_rubber", "fg": 3855 }, - { "id": "overlay_male_worn_boots_rubber", "fg": 3856 }, - { "id": "overlay_female_worn_boots_steel", "fg": 3857 }, - { "id": "overlay_male_worn_boots_steel", "fg": 3858 }, - { "id": "overlay_female_worn_boots_western", "fg": 3859 }, - { "id": "overlay_male_worn_boots_western", "fg": 3860 }, - { "id": "overlay_female_worn_boots_winter", "fg": 3861 }, - { "id": "overlay_male_worn_boots_winter", "fg": 3862 }, - { "id": "overlay_female_worn_motorbike_boots", "fg": 3863 }, - { "id": "overlay_male_worn_motorbike_boots", "fg": 3864 }, - { "id": "overlay_worn_boots_combat", "fg": 3848 }, - { "id": "overlay_male_worn_cape_fp", "fg": 3866 }, - { "id": "overlay_female_worn_cape_fp", "fg": 3865 }, - { "id": "overlay_male_worn_cloak", "fg": 3872 }, - { "id": "overlay_female_worn_cloak", "fg": 3867 }, - { "id": "overlay_male_worn_cloak_wool", "fg": 3874 }, - { "id": "overlay_female_worn_cloak_wool", "fg": 3873 }, - { "id": "overlay_male_worn_cloak_leather", "fg": 3871 }, - { "id": "overlay_female_worn_cloak_leather", "fg": 3870 }, - { "id": "overlay_male_worn_cloak_fur", "fg": 3869 }, - { "id": "overlay_female_worn_cloak_fur", "fg": 3868 }, - { "id": "overlay_female_worn_dress", "fg": 3893 }, - { "id": "overlay_male_worn_dress", "fg": 3894 }, - { "id": "overlay_female_worn_sundress", "fg": 3901 }, - { "id": "overlay_male_worn_sundress", "fg": 3902 }, - { "id": "overlay_female_worn_maid_hat", "fg": 3992 }, - { "id": "overlay_female_worn_maid_dress", "fg": 3895 }, - { "id": "overlay_male_worn_maid_hat", "fg": 3993 }, - { "id": "overlay_male_worn_maid_dress", "fg": 3896 }, - { "id": "overlay_female_worn_skirt", "fg": 3897 }, - { "id": "overlay_male_worn_skirt", "fg": 3900 }, - { "id": "overlay_female_worn_skirt_leather", "fg": 3898 }, - { "id": "overlay_male_worn_skirt_leather", "fg": 3899 }, - { "id": "overlay_worn_elbow_pads", "fg": 3903 }, - { "id": "overlay_female_worn_glasses_bal", "fg": 3904 }, - { "id": "overlay_male_worn_glasses_bal", "fg": 3905 }, - { "id": "overlay_female_worn_glasses_bifocal", "fg": 3906 }, - { "id": "overlay_male_worn_glasses_bifocal", "fg": 3907 }, - { "id": "overlay_female_worn_glasses_eye", "fg": 3908 }, - { "id": "overlay_male_worn_glasses_eye", "fg": 3909 }, - { "id": "overlay_female_worn_glasses_monocle", "fg": 3910 }, - { "id": "overlay_male_worn_glasses_monocle", "fg": 3911 }, - { "id": "overlay_female_worn_glasses_reading", "fg": 3912 }, - { "id": "overlay_male_worn_glasses_reading", "fg": 3913 }, - { "id": "overlay_female_worn_glasses_safety", "fg": 3914 }, - { "id": "overlay_male_worn_glasses_safety", "fg": 3915 }, - { "id": "overlay_female_worn_mask_ski", "fg": 3916 }, - { "id": "overlay_male_worn_mask_ski", "fg": 3919 }, - { "id": "overlay_female_worn_mask_ski_loose", "fg": 3917 }, - { "id": "overlay_male_worn_mask_ski_loose", "fg": 3918 }, - { "id": "overlay_female_worn_sunglasses", "fg": 3922 }, - { "id": "overlay_male_worn_sunglasses", "fg": 3923 }, - { "id": "overlay_female_worn_goggles_welding", "fg": 3924 }, - { "id": "overlay_male_worn_goggles_welding", "fg": 3925 }, - { "id": "overlay_female_worn_glove_jackson", "fg": 3926 }, - { "id": "overlay_male_worn_glove_jackson", "fg": 3927 }, - { "id": "overlay_female_worn_gloves_liner", "fg": 3940 }, - { "id": "overlay_male_worn_gloves_liner", "fg": 3941 }, - { "id": "overlay_female_worn_gloves_medical", "fg": 3942 }, - { "id": "overlay_male_worn_gloves_medical", "fg": 3943 }, - { "id": "overlay_female_worn_gloves_rubber", "fg": 3944 }, - { "id": "overlay_male_worn_gloves_rubber", "fg": 3945 }, - { "id": "overlay_female_worn_gloves_tactical", "fg": 3946 }, - { "id": "overlay_male_worn_gloves_tactical", "fg": 3947 }, - { "id": "overlay_female_worn_gloves_winter", "fg": 3948 }, - { "id": "overlay_male_worn_gloves_winter", "fg": 3949 }, - { "id": "overlay_female_worn_gloves_wool", "fg": 3950 }, - { "id": "overlay_male_worn_gloves_wool", "fg": 3951 }, - { "id": "overlay_female_worn_gloves_work", "fg": 3952 }, - { "id": "overlay_male_worn_gloves_work", "fg": 3953 }, - { "id": "overlay_female_worn_gloves_cut_resistant", "fg": 3928 }, - { "id": "overlay_male_worn_gloves_cut_resistant", "fg": 3929 }, - { "id": "overlay_female_worn_gloves_fingerless", "fg": 3930 }, - { "id": "overlay_male_worn_gloves_fingerless", "fg": 3931 }, - { "id": "overlay_female_worn_gloves_fur", "fg": 3932 }, - { "id": "overlay_male_worn_gloves_fur", "fg": 3933 }, - { "id": "overlay_female_worn_gloves_golf", "fg": 3934 }, - { "id": "overlay_male_worn_gloves_golf", "fg": 3935 }, - { "id": "overlay_female_worn_gloves_leather", "fg": 3936 }, - { "id": "overlay_male_worn_gloves_leather", "fg": 3937 }, - { "id": "overlay_female_worn_gloves_light", "fg": 3938 }, - { "id": "overlay_male_worn_gloves_light", "fg": 3939 }, - { "id": "overlay_male_worn_long_glove_white", "fg": 3955 }, - { "id": "overlay_female_worn_long_glove_white", "fg": 3954 }, - { "id": "overlay_female_worn_mittens", "fg": 3956 }, - { "id": "overlay_male_worn_mittens", "fg": 3957 }, - { "id": "overlay_female_worn_beret", "fg": 3958 }, - { "id": "overlay_male_worn_beret", "fg": 3959 }, - { "id": "overlay_female_worn_bowhat", "fg": 3960 }, - { "id": "overlay_male_worn_bowhat", "fg": 3961 }, - { "id": "overlay_female_worn_cowboy_hat", "fg": 3962 }, - { "id": "overlay_male_worn_cowboy_hat", "fg": 3963 }, - { "id": "overlay_female_worn_fedora", "fg": 3964 }, - { "id": "overlay_male_worn_fedora", "fg": 3965 }, - { "id": "overlay_female_worn_firehelmet", "fg": 3966 }, - { "id": "overlay_male_worn_firehelmet", "fg": 3967 }, - { "id": "overlay_female_worn_hat_ball", "fg": 3968 }, - { "id": "overlay_male_worn_hat_ball", "fg": 3969 }, - { "id": "overlay_male_worn_hat_cotton", "fg": 3971 }, - { "id": "overlay_female_worn_hat_cotton", "fg": 3970 }, - { "id": "overlay_male_worn_hat_fur", "fg": 3973 }, - { "id": "overlay_female_worn_hat_fur", "fg": 3972 }, - { "id": "overlay_female_worn_hat_hard", "fg": 3974 }, - { "id": "overlay_male_worn_hat_hard", "fg": 3975 }, - { "id": "overlay_female_worn_hat_noise_cancelling", "fg": 3978 }, - { "id": "overlay_male_worn_hat_noise_cancelling", "fg": 3979 }, - { "id": "overlay_female_worn_helmet_army", "fg": 3980 }, - { "id": "overlay_male_worn_helmet_army", "fg": 3981 }, - { "id": "overlay_female_worn_helmet_barbute", "fg": 3982 }, - { "id": "overlay_male_worn_helmet_barbute", "fg": 3983 }, - { "id": "overlay_female_worn_helmet_bike", "fg": 3984 }, - { "id": "overlay_male_worn_helmet_bike", "fg": 3985 }, - { "id": "overlay_female_worn_helmet_chitin", "fg": 3986 }, - { "id": "overlay_male_worn_helmet_chitin", "fg": 3987 }, - { "id": "overlay_female_worn_helmet_kabuto", "fg": 3988 }, - { "id": "overlay_male_worn_helmet_kabuto", "fg": 3989 }, - { "id": "overlay_female_worn_helmet_motor", "fg": 3990 }, - { "id": "overlay_male_worn_helmet_motor", "fg": 3991 }, - { "id": "overlay_female_worn_hat_knit", "fg": 3976 }, - { "id": "overlay_male_worn_hat_knit", "fg": 3977 }, - { "id": "overlay_female_worn_straw_fedora", "fg": 3994 }, - { "id": "overlay_male_worn_straw_fedora", "fg": 3995 }, - { "id": "overlay_female_worn_straw_hat", "fg": 3996 }, - { "id": "overlay_male_worn_straw_hat", "fg": 3997 }, - { "id": "overlay_female_worn_10gal_hat", "fg": 3998 }, - { "id": "overlay_male_worn_10gal_hat", "fg": 3999 }, - { "id": "overlay_female_worn_tophat", "fg": 4000 }, - { "id": "overlay_male_worn_tophat", "fg": 4001 }, - { "id": "overlay_male_worn_turban", "fg": 4003 }, - { "id": "overlay_female_worn_turban", "fg": 4002 }, - { "id": "overlay_female_worn_blazer", "fg": 4006 }, - { "id": "overlay_male_worn_blazer", "fg": 4007 }, - { "id": "overlay_female_worn_bunker_coat", "fg": 4008 }, - { "id": "overlay_male_worn_bunker_coat", "fg": 4009 }, - { "id": "overlay_female_worn_coat_lab", "fg": 4010 }, - { "id": "overlay_male_worn_coat_lab", "fg": 4011 }, - { "id": "overlay_female_worn_coat_rain", "fg": 4012 }, - { "id": "overlay_male_worn_coat_rain", "fg": 4013 }, - { "id": "overlay_female_worn_coat_winter", "fg": 4014 }, - { "id": "overlay_male_worn_coat_winter", "fg": 4015 }, - { "id": "overlay_female_worn_duster", "fg": 4016 }, - { "id": "overlay_male_worn_duster", "fg": 4017 }, - { "id": "overlay_female_worn_jacket_flannel", "fg": 4022 }, - { "id": "overlay_male_worn_jacket_flannel", "fg": 4023 }, - { "id": "overlay_female_worn_jacket_jean", "fg": 4024 }, - { "id": "overlay_male_worn_jacket_jean", "fg": 4025 }, - { "id": "overlay_female_worn_jacket_light", "fg": 4028 }, - { "id": "overlay_male_worn_jacket_light", "fg": 4029 }, - { "id": "overlay_female_worn_jacket_evac", "fg": 4020 }, - { "id": "overlay_male_worn_jacket_evac", "fg": 4021 }, - { "id": "overlay_female_worn_jacket_leather", "fg": 4030 }, - { "id": "overlay_male_worn_jacket_leather", "fg": 4031 }, - { "id": "overlay_female_worn_jacket_leather_red", "fg": 4026 }, - { "id": "overlay_male_worn_jacket_leather_red", "fg": 4027 }, - { "id": "overlay_female_worn_ski_jacket", "fg": 4032 }, - { "id": "overlay_male_worn_ski_jacket", "fg": 4033 }, - { "id": "overlay_female_worn_jacket_windbreaker", "fg": 4038 }, - { "id": "overlay_male_worn_jacket_windbreaker", "fg": 4039 }, - { "id": "overlay_female_worn_winter_jacket_army", "fg": 4004 }, - { "id": "overlay_male_worn_winter_jacket_army", "fg": 4005 }, - { "id": "overlay_female_worn_jacket_army", "fg": 4018 }, - { "id": "overlay_male_worn_jacket_army", "fg": 4019 }, - { "id": "overlay_female_worn_trenchcoat", "fg": 4034 }, - { "id": "overlay_male_worn_trenchcoat", "fg": 4035 }, - { "id": "overlay_female_worn_waistcoat", "fg": 4036 }, - { "id": "overlay_male_worn_waistcoat", "fg": 4037 }, - { "id": "overlay_female_worn_peacoat", "fg": 4040 }, - { "id": "overlay_male_worn_peacoat", "fg": 4041 }, - { "id": "overlay_female_worn_poncho", "fg": 4042 }, - { "id": "overlay_male_worn_poncho", "fg": 4043 }, - { "id": "overlay_worn_badge_swat", "fg": 4044 }, - { "id": "overlay_female_worn_barrette", "fg": 4045 }, - { "id": "overlay_male_worn_barrette", "fg": 4046 }, - { "id": "overlay_female_worn_badge_deputy", "fg": 4047 }, - { "id": "overlay_male_worn_badge_deputy", "fg": 4048 }, - { "id": "overlay_female_worn_knee_pads", "fg": 4057 }, - { "id": "overlay_male_worn_knee_pads", "fg": 4058 }, - { "id": "overlay_male_worn_arm_warmers", "fg": 4060 }, - { "id": "overlay_female_worn_arm_warmers", "fg": 4059 }, - { "id": "overlay_male_worn_leg_warmers", "fg": 4062 }, - { "id": "overlay_female_worn_leg_warmers", "fg": 4061 }, - { "id": "overlay_female_worn_armguard_soft", "fg": 4063 }, - { "id": "overlay_male_worn_armguard_soft", "fg": 4064 }, - { "id": "overlay_female_worn_balclava", "fg": 4065 }, - { "id": "overlay_male_worn_balclava", "fg": 4066 }, - { "id": "overlay_female_worn_bandana", "fg": 4067 }, - { "id": "overlay_male_worn_bandana", "fg": 4068 }, - { "id": "overlay_female_worn_beekeeping_hood", "fg": 4069 }, - { "id": "overlay_male_worn_beekeeping_hood", "fg": 4070 }, - { "id": "overlay_male_worn_foodperson_mask", "fg": 4072 }, - { "id": "overlay_female_worn_foodperson_mask", "fg": 4071 }, - { "id": "overlay_male_worn_foodperson_mask_on", "fg": 4074 }, - { "id": "overlay_female_worn_foodperson_mask_on", "fg": 4073 }, - { "id": "overlay_female_worn_mask_dust", "fg": 4075 }, - { "id": "overlay_male_worn_mask_dust", "fg": 4076 }, - { "id": "overlay_female_worn_mask_gas", "fg": 4077 }, - { "id": "overlay_male_worn_mask_gas", "fg": 4078 }, - { "id": "overlay_female_worn_welding_mask_crude", "fg": 4079 }, - { "id": "overlay_male_worn_welding_mask_crude", "fg": 4080 }, - { "id": "overlay_female_worn_welding_mask_crude_raised", "fg": 4081 }, - { "id": "overlay_male_worn_welding_mask_crude_raised", "fg": 4082 }, - { "id": "overlay_female_worn_welding_mask", "fg": 4083 }, - { "id": "overlay_male_worn_welding_mask", "fg": 4084 }, - { "id": "overlay_female_worn_welding_mask_raised", "fg": 4085 }, - { "id": "overlay_male_worn_welding_mask_raised", "fg": 4086 }, - { "id": "overlay_female_worn_mask_bal", "fg": 4087 }, - { "id": "overlay_male_worn_mask_bal", "fg": 4088 }, - { "id": "overlay_female_worn_fencing_mask", "fg": 4089 }, - { "id": "overlay_male_worn_fencing_mask", "fg": 4090 }, - { "id": "overlay_female_worn_mask_filter", "fg": 4091 }, - { "id": "overlay_male_worn_mask_filter", "fg": 4092 }, - { "id": "overlay_female_worn_mask_bunker", "fg": 4093 }, - { "id": "overlay_male_worn_mask_bunker", "fg": 4094 }, - { "id": "overlay_female_worn_mask_guy_fawkes", "fg": 4095 }, - { "id": "overlay_male_worn_mask_guy_fawkes", "fg": 4096 }, - { "id": "overlay_female_worn_mask_hockey", "fg": 4097 }, - { "id": "overlay_male_worn_mask_hockey", "fg": 4098 }, - { "id": "overlay_female_worn_mask_rioter", "fg": 4099 }, - { "id": "overlay_male_worn_mask_rioter", "fg": 4100 }, - { "id": "overlay_male_worn_robe", "fg": 4111 }, - { "id": "overlay_female_worn_robe", "fg": 4110 }, - { "id": "overlay_male_worn_house_coat", "fg": 4109 }, - { "id": "overlay_female_worn_house_coat", "fg": 4108 }, - { "id": "overlay_worn_binoculars", "fg": 4112 }, - { "id": "overlay_female_worn_knit_scarf", "fg": 4115 }, - { "id": "overlay_male_worn_knit_scarf", "fg": 4116 }, - { "id": "overlay_female_worn_scarf", "fg": 4118 }, - { "id": "overlay_male_worn_scarf", "fg": 4119 }, - { "id": "overlay_worn_tie_bow", "fg": 4113 }, - { "id": "overlay_worn_tie_clipon", "fg": 4114 }, - { "id": "overlay_worn_tie_necktie", "fg": 4117 }, - { "id": "overlay_worn_tie_skinny", "fg": 4120 }, - { "id": "overlay_female_worn_army_top", "fg": 4121 }, - { "id": "overlay_male_worn_army_top", "fg": 4122 }, - { "id": "overlay_female_worn_camisole", "fg": 4123 }, - { "id": "overlay_male_worn_camisole", "fg": 4124 }, - { "id": "overlay_female_worn_under_armor", "fg": 4125 }, - { "id": "overlay_male_worn_under_armor", "fg": 4126 }, - { "id": "overlay_female_worn_dress_shirt", "fg": 4127 }, - { "id": "overlay_male_worn_dress_shirt", "fg": 4128 }, - { "id": "overlay_female_worn_halter_top", "fg": 4129 }, - { "id": "overlay_male_worn_halter_top", "fg": 4130 }, - { "id": "overlay_female_worn_hoodie", "fg": 4131 }, - { "id": "overlay_male_worn_hoodie", "fg": 4132 }, - { "id": "overlay_female_worn_jersey", "fg": 4133 }, - { "id": "overlay_male_worn_jersey", "fg": 4134 }, - { "id": "overlay_female_worn_linuxtshirt", "fg": 4135 }, - { "id": "overlay_male_worn_linuxtshirt", "fg": 4136 }, - { "id": "overlay_female_worn_longshirt", "fg": 4137 }, - { "id": "overlay_male_worn_longshirt", "fg": 4138 }, - { "id": "overlay_female_worn_striped_shirt", "fg": 4139 }, - { "id": "overlay_male_worn_striped_shirt", "fg": 4140 }, - { "id": "overlay_female_worn_sweater", "fg": 4141 }, - { "id": "overlay_male_worn_sweater", "fg": 4142 }, - { "id": "overlay_female_worn_sweatshirt", "fg": 4143 }, - { "id": "overlay_male_worn_sweatshirt", "fg": 4144 }, - { "id": "overlay_female_worn_tank_top", "fg": 4145 }, - { "id": "overlay_male_worn_tank_top", "fg": 4146 }, - { "id": "overlay_female_worn_tshirt", "fg": 4147 }, - { "id": "overlay_male_worn_tshirt", "fg": 4148 }, - { "id": "overlay_female_worn_technician_shirt_gray", "fg": 4149 }, - { "id": "overlay_male_worn_technician_shirt_gray", "fg": 4150 }, - { "id": "overlay_worn_dress_shoes", "fg": 4151 }, - { "id": "overlay_female_worn_flip_flops", "fg": 4152 }, - { "id": "overlay_male_worn_flip_flops", "fg": 4153 }, - { "id": "overlay_female_worn_geta", "fg": 4154 }, - { "id": "overlay_male_worn_geta", "fg": 4155 }, - { "id": "overlay_worn_heels", "fg": 4156 }, - { "id": "overlay_worn_leathersandals", "fg": 4157 }, - { "id": "overlay_worn_lowtops", "fg": 4158 }, - { "id": "overlay_worn_roller_blades", "fg": 4159 }, - { "id": "overlay_female_worn_shoes_bowling", "fg": 4160 }, - { "id": "overlay_male_worn_shoes_bowling", "fg": 4161 }, - { "id": "overlay_female_worn_sneakers", "fg": 4162 }, - { "id": "overlay_male_worn_sneakers", "fg": 4163 }, - { "id": "overlay_female_worn_clogs", "fg": 4164 }, - { "id": "overlay_male_worn_clogs", "fg": 4165 }, - { "id": "overlay_female_worn_b_shorts", "fg": 4166 }, - { "id": "overlay_male_worn_b_shorts", "fg": 4167 }, - { "id": "overlay_female_worn_boy_shorts", "fg": 4168 }, - { "id": "overlay_male_worn_boy_shorts", "fg": 4169 }, - { "id": "overlay_female_worn_under_armor_shorts", "fg": 4170 }, - { "id": "overlay_male_worn_under_armor_shorts", "fg": 4171 }, - { "id": "overlay_female_worn_shorts_cargo", "fg": 4172 }, - { "id": "overlay_male_worn_shorts_cargo", "fg": 4173 }, - { "id": "overlay_female_worn_shorts_denim", "fg": 4174 }, - { "id": "overlay_male_worn_shorts_denim", "fg": 4175 }, - { "id": "overlay_female_worn_shorts", "fg": 4176 }, - { "id": "overlay_male_worn_shorts", "fg": 4177 }, - { "id": "overlay_female_worn_mossberg_500", "fg": 4178 }, - { "id": "overlay_male_worn_mossberg_500", "fg": 4179 }, - { "id": "overlay_worn_boots_survivor", "fg": 4180 }, - { "id": "overlay_worn_boots_xlsurvivor", "fg": 4180 }, - { "id": "overlay_female_worn_sleeveless_duster_survivor", "fg": 4183 }, - { "id": "overlay_male_worn_sleeveless_duster_survivor", "fg": 4184 }, - { "id": "overlay_female_worn_sleeveless_trenchcoat_survivor", "fg": 4185 }, - { "id": "overlay_male_worn_sleeveless_trenchcoat_survivor", "fg": 4186 }, - { "id": "overlay_female_worn_survivor_belt_notools", "fg": 4249 }, - { "id": "overlay_male_worn_survivor_belt_notools", "fg": 4250 }, - { "id": "overlay_female_worn_duster_survivor", "fg": 4189 }, - { "id": "overlay_male_worn_duster_survivor", "fg": 4190 }, - { "id": "overlay_female_worn_xl_duster_survivor", "fg": 4189 }, - { "id": "overlay_male_worn_xl_duster_survivor", "fg": 4190 }, - { "id": "overlay_female_worn_gloves_survivor", "fg": 4193 }, - { "id": "overlay_male_worn_gloves_survivor", "fg": 4194 }, - { "id": "overlay_female_worn_gloves_xlsurvivor", "fg": 4193 }, - { "id": "overlay_male_worn_gloves_xlsurvivor", "fg": 4194 }, - { "id": "overlay_female_worn_survivor_vest", "fg": 4251 }, - { "id": "overlay_male_worn_survivor_vest", "fg": 4252 }, - { "id": "overlay_female_worn_xl_survivor_vest", "fg": 4251 }, - { "id": "overlay_male_worn_xl_survivor_vest", "fg": 4252 }, - { "id": "overlay_female_worn_hood_survivor", "fg": 4195 }, - { "id": "overlay_male_worn_hood_survivor", "fg": 4196 }, - { "id": "overlay_female_worn_hood_xlsurvivor", "fg": 4195 }, - { "id": "overlay_male_worn_hood_xlsurvivor", "fg": 4196 }, - { "id": "overlay_female_worn_survivor_suit", "fg": 4197 }, - { "id": "overlay_male_worn_survivor_suit", "fg": 4198 }, - { "id": "overlay_female_worn_xlsurvivor_suit", "fg": 4197 }, - { "id": "overlay_male_worn_xlsurvivor_suit", "fg": 4198 }, - { "id": "overlay_female_worn_trenchcoat_survivor", "fg": 4199 }, - { "id": "overlay_male_worn_trenchcoat_survivor", "fg": 4200 }, - { "id": "overlay_worn_boots_hsurvivor", "fg": 4215 }, - { "id": "overlay_worn_xl_boots_hsurvivor", "fg": 4215 }, - { "id": "overlay_female_worn_gloves_hsurvivor", "fg": 4216 }, - { "id": "overlay_male_worn_gloves_hsurvivor", "fg": 4217 }, - { "id": "overlay_female_worn_xl_gloves_hsurvivor", "fg": 4216 }, - { "id": "overlay_male_worn_xl_gloves_hsurvivor", "fg": 4217 }, - { "id": "overlay_female_worn_hsurvivor_suit", "fg": 4218 }, - { "id": "overlay_male_worn_hsurvivor_suit", "fg": 4219 }, - { "id": "overlay_female_worn_xlhsurvivor_suit", "fg": 4218 }, - { "id": "overlay_male_worn_xlhsurvivor_suit", "fg": 4219 }, - { "id": "overlay_worn_boots_fsurvivor", "fg": 4208 }, - { "id": "overlay_worn_xl_boots_fsurvivor", "fg": 4208 }, - { "id": "overlay_female_worn_gloves_fsurvivor", "fg": 4209 }, - { "id": "overlay_male_worn_gloves_fsurvivor", "fg": 4210 }, - { "id": "overlay_female_worn_xl_gloves_fsurvivor", "fg": 4209 }, - { "id": "overlay_male_worn_xl_gloves_fsurvivor", "fg": 4210 }, - { "id": "overlay_female_worn_hood_fsurvivor", "fg": 4211 }, - { "id": "overlay_male_worn_hood_fsurvivor", "fg": 4212 }, - { "id": "overlay_female_worn_xl_hood_fsurvivor", "fg": 4211 }, - { "id": "overlay_male_worn_xl_hood_fsurvivor", "fg": 4212 }, - { "id": "overlay_female_worn_fsurvivor_suit", "fg": 4213 }, - { "id": "overlay_male_worn_fsurvivor_suit", "fg": 4214 }, - { "id": "overlay_female_worn_xl_fsurvivor_suit", "fg": 4213 }, - { "id": "overlay_male_worn_xl_fsurvivor_suit", "fg": 4214 }, - { "id": [ "overlay_female_worn_pants_survivor", "overlay_female_worn_xl_pants_survivor" ], "fg": 4187 }, - { "id": [ "overlay_male_worn_pants_survivor", "overlay_male_worn_xl_pants_survivor" ], "fg": 4188 }, + "fg": 3937 + }, + { "id": "overlay_female_worn_rucksack", "fg": 3939 }, + { "id": "overlay_male_worn_rucksack", "fg": 3940 }, + { "id": "overlay_worn_bead_necklace", "fg": 3942 }, + { "id": "overlay_worn_bead_bracelet", "fg": 3941 }, + { "id": "overlay_worn_leather_belt", "fg": 3952 }, + { "id": "overlay_worn_police_belt", "fg": 3966 }, + { "id": "overlay_worn_tool_belt", "fg": 3971 }, + { "id": "overlay_worn_webbing_belt", "fg": 3973 }, + { "id": "overlay_worn_briefcase", "fg": 3945 }, + { "id": "overlay_wielded_briefcase", "fg": 3945 }, + { "id": "overlay_worn_briefcase_smg", "fg": 3945 }, + { "id": "overlay_wielded_briefcase_smg", "fg": 3945 }, + { "id": "overlay_worn_hk_briefcase", "fg": 3945 }, + { "id": "overlay_wielded_hk_briefcase", "fg": 3945 }, + { "id": "overlay_female_worn_wearable_light", "fg": 3948 }, + { "id": "overlay_male_worn_wearable_light", "fg": 3949 }, + { "id": "overlay_female_worn_wearable_light_on", "fg": 3948 }, + { "id": "overlay_male_worn_wearable_light_on", "fg": 3949 }, + { "id": "overlay_female_worn_survivor_light", "fg": 3948 }, + { "id": "overlay_male_worn_survivor_light", "fg": 3949 }, + { "id": "overlay_female_worn_survivor_light_on", "fg": 3948 }, + { "id": "overlay_male_worn_survivor_light_on", "fg": 3949 }, + { "id": "overlay_female_worn_holster", "fg": 3950 }, + { "id": "overlay_male_worn_holster", "fg": 3951 }, + { "id": "overlay_female_worn_legpouch_large", "fg": 3953 }, + { "id": "overlay_male_worn_legpouch_large", "fg": 3954 }, + { "id": "overlay_female_worn_legrig", "fg": 3955 }, + { "id": "overlay_male_worn_legrig", "fg": 3956 }, + { "id": "overlay_worn_judo_belt_black", "fg": 3943 }, + { "id": "overlay_worn_judo_belt_blue", "fg": 3944 }, + { "id": "overlay_worn_judo_belt_brown", "fg": 3946 }, + { "id": "overlay_worn_judo_belt_green", "fg": 3947 }, + { "id": "overlay_worn_judo_belt_orange", "fg": 3957 }, + { "id": "overlay_worn_judo_belt_white", "fg": 3974 }, + { "id": "overlay_worn_judo_belt_yellow", "fg": 3975 }, + { "id": "overlay_female_worn_ragpouch", "fg": 3967 }, + { "id": "overlay_male_worn_ragpouch", "fg": 3968 }, + { "id": "overlay_female_worn_tacvest", "fg": 3969 }, + { "id": "overlay_male_worn_tacvest", "fg": 3970 }, + { "id": "overlay_worn_wearable_light", "fg": 3972 }, + { "id": "overlay_female_worn_dinosuit", "fg": 3976 }, + { "id": "overlay_male_worn_dinosuit", "fg": 3977 }, + { "id": "overlay_female_worn_hazmat_suit", "fg": 3978 }, + { "id": "overlay_male_worn_hazmat_suit", "fg": 3979 }, + { "id": "overlay_female_worn_judo_gi", "fg": 3980 }, + { "id": "overlay_male_worn_judo_gi", "fg": 3981 }, + { "id": "overlay_female_worn_jumpsuit", "fg": 3982 }, + { "id": "overlay_male_worn_jumpsuit", "fg": 3983 }, + { "id": "overlay_female_worn_karate_gi", "fg": 3984 }, + { "id": "overlay_male_worn_karate_gi", "fg": 3985 }, + { "id": "overlay_female_worn_robofac_jumpsuit", "fg": 3986 }, + { "id": "overlay_male_worn_robofac_jumpsuit", "fg": 3987 }, + { "id": "overlay_female_worn_subject_suit", "fg": 3988 }, + { "id": "overlay_male_worn_subject_suit", "fg": 3989 }, + { "id": "overlay_female_worn_suit", "fg": 3990 }, + { "id": "overlay_male_worn_suit", "fg": 3991 }, + { "id": "overlay_female_worn_touring_suit", "fg": 3992 }, + { "id": "overlay_male_worn_touring_suit", "fg": 3993 }, + { "id": "overlay_female_worn_boots", "fg": 3997 }, + { "id": "overlay_male_worn_boots", "fg": 4002 }, + { "id": "overlay_female_worn_boots_bunker", "fg": 3994 }, + { "id": "overlay_male_worn_boots_bunker", "fg": 3995 }, + { "id": "overlay_female_worn_boots_fur", "fg": 3998 }, + { "id": "overlay_male_worn_boots_fur", "fg": 3999 }, + { "id": "overlay_female_worn_boots_hiking", "fg": 4000 }, + { "id": "overlay_male_worn_boots_hiking", "fg": 4001 }, + { "id": "overlay_female_worn_boots_rubber", "fg": 4003 }, + { "id": "overlay_male_worn_boots_rubber", "fg": 4004 }, + { "id": "overlay_female_worn_boots_steel", "fg": 4005 }, + { "id": "overlay_male_worn_boots_steel", "fg": 4006 }, + { "id": "overlay_female_worn_boots_western", "fg": 4007 }, + { "id": "overlay_male_worn_boots_western", "fg": 4008 }, + { "id": "overlay_female_worn_boots_winter", "fg": 4009 }, + { "id": "overlay_male_worn_boots_winter", "fg": 4010 }, + { "id": "overlay_female_worn_motorbike_boots", "fg": 4011 }, + { "id": "overlay_male_worn_motorbike_boots", "fg": 4012 }, + { "id": "overlay_worn_boots_combat", "fg": 3996 }, + { "id": "overlay_male_worn_cape_fp", "fg": 4014 }, + { "id": "overlay_female_worn_cape_fp", "fg": 4013 }, + { "id": "overlay_male_worn_cloak", "fg": 4020 }, + { "id": "overlay_female_worn_cloak", "fg": 4015 }, + { "id": "overlay_male_worn_cloak_wool", "fg": 4022 }, + { "id": "overlay_female_worn_cloak_wool", "fg": 4021 }, + { "id": "overlay_male_worn_cloak_leather", "fg": 4019 }, + { "id": "overlay_female_worn_cloak_leather", "fg": 4018 }, + { "id": "overlay_male_worn_cloak_fur", "fg": 4017 }, + { "id": "overlay_female_worn_cloak_fur", "fg": 4016 }, + { "id": "overlay_female_worn_dress", "fg": 4041 }, + { "id": "overlay_male_worn_dress", "fg": 4042 }, + { "id": "overlay_female_worn_sundress", "fg": 4049 }, + { "id": "overlay_male_worn_sundress", "fg": 4050 }, + { "id": "overlay_female_worn_maid_hat", "fg": 4140 }, + { "id": "overlay_female_worn_maid_dress", "fg": 4043 }, + { "id": "overlay_male_worn_maid_hat", "fg": 4141 }, + { "id": "overlay_male_worn_maid_dress", "fg": 4044 }, + { "id": "overlay_female_worn_skirt", "fg": 4045 }, + { "id": "overlay_male_worn_skirt", "fg": 4048 }, + { "id": "overlay_female_worn_skirt_leather", "fg": 4046 }, + { "id": "overlay_male_worn_skirt_leather", "fg": 4047 }, + { "id": "overlay_worn_elbow_pads", "fg": 4051 }, + { "id": "overlay_female_worn_glasses_bal", "fg": 4052 }, + { "id": "overlay_male_worn_glasses_bal", "fg": 4053 }, + { "id": "overlay_female_worn_glasses_bifocal", "fg": 4054 }, + { "id": "overlay_male_worn_glasses_bifocal", "fg": 4055 }, + { "id": "overlay_female_worn_glasses_eye", "fg": 4056 }, + { "id": "overlay_male_worn_glasses_eye", "fg": 4057 }, + { "id": "overlay_female_worn_glasses_monocle", "fg": 4058 }, + { "id": "overlay_male_worn_glasses_monocle", "fg": 4059 }, + { "id": "overlay_female_worn_glasses_reading", "fg": 4060 }, + { "id": "overlay_male_worn_glasses_reading", "fg": 4061 }, + { "id": "overlay_female_worn_glasses_safety", "fg": 4062 }, + { "id": "overlay_male_worn_glasses_safety", "fg": 4063 }, + { "id": "overlay_female_worn_mask_ski", "fg": 4064 }, + { "id": "overlay_male_worn_mask_ski", "fg": 4067 }, + { "id": "overlay_female_worn_mask_ski_loose", "fg": 4065 }, + { "id": "overlay_male_worn_mask_ski_loose", "fg": 4066 }, + { "id": "overlay_female_worn_sunglasses", "fg": 4070 }, + { "id": "overlay_male_worn_sunglasses", "fg": 4071 }, + { "id": "overlay_female_worn_goggles_welding", "fg": 4072 }, + { "id": "overlay_male_worn_goggles_welding", "fg": 4073 }, + { "id": "overlay_female_worn_glove_jackson", "fg": 4074 }, + { "id": "overlay_male_worn_glove_jackson", "fg": 4075 }, + { "id": "overlay_female_worn_gloves_liner", "fg": 4088 }, + { "id": "overlay_male_worn_gloves_liner", "fg": 4089 }, + { "id": "overlay_female_worn_gloves_medical", "fg": 4090 }, + { "id": "overlay_male_worn_gloves_medical", "fg": 4091 }, + { "id": "overlay_female_worn_gloves_rubber", "fg": 4092 }, + { "id": "overlay_male_worn_gloves_rubber", "fg": 4093 }, + { "id": "overlay_female_worn_gloves_tactical", "fg": 4094 }, + { "id": "overlay_male_worn_gloves_tactical", "fg": 4095 }, + { "id": "overlay_female_worn_gloves_winter", "fg": 4096 }, + { "id": "overlay_male_worn_gloves_winter", "fg": 4097 }, + { "id": "overlay_female_worn_gloves_wool", "fg": 4098 }, + { "id": "overlay_male_worn_gloves_wool", "fg": 4099 }, + { "id": "overlay_female_worn_gloves_work", "fg": 4100 }, + { "id": "overlay_male_worn_gloves_work", "fg": 4101 }, + { "id": "overlay_female_worn_gloves_cut_resistant", "fg": 4076 }, + { "id": "overlay_male_worn_gloves_cut_resistant", "fg": 4077 }, + { "id": "overlay_female_worn_gloves_fingerless", "fg": 4078 }, + { "id": "overlay_male_worn_gloves_fingerless", "fg": 4079 }, + { "id": "overlay_female_worn_gloves_fur", "fg": 4080 }, + { "id": "overlay_male_worn_gloves_fur", "fg": 4081 }, + { "id": "overlay_female_worn_gloves_golf", "fg": 4082 }, + { "id": "overlay_male_worn_gloves_golf", "fg": 4083 }, + { "id": "overlay_female_worn_gloves_leather", "fg": 4084 }, + { "id": "overlay_male_worn_gloves_leather", "fg": 4085 }, + { "id": "overlay_female_worn_gloves_light", "fg": 4086 }, + { "id": "overlay_male_worn_gloves_light", "fg": 4087 }, + { "id": "overlay_male_worn_long_glove_white", "fg": 4103 }, + { "id": "overlay_female_worn_long_glove_white", "fg": 4102 }, + { "id": "overlay_female_worn_mittens", "fg": 4104 }, + { "id": "overlay_male_worn_mittens", "fg": 4105 }, + { "id": "overlay_female_worn_beret", "fg": 4106 }, + { "id": "overlay_male_worn_beret", "fg": 4107 }, + { "id": "overlay_female_worn_bowhat", "fg": 4108 }, + { "id": "overlay_male_worn_bowhat", "fg": 4109 }, + { "id": "overlay_female_worn_cowboy_hat", "fg": 4110 }, + { "id": "overlay_male_worn_cowboy_hat", "fg": 4111 }, + { "id": "overlay_female_worn_fedora", "fg": 4112 }, + { "id": "overlay_male_worn_fedora", "fg": 4113 }, + { "id": "overlay_female_worn_firehelmet", "fg": 4114 }, + { "id": "overlay_male_worn_firehelmet", "fg": 4115 }, + { "id": "overlay_female_worn_hat_ball", "fg": 4116 }, + { "id": "overlay_male_worn_hat_ball", "fg": 4117 }, + { "id": "overlay_male_worn_hat_cotton", "fg": 4119 }, + { "id": "overlay_female_worn_hat_cotton", "fg": 4118 }, + { "id": "overlay_male_worn_hat_fur", "fg": 4121 }, + { "id": "overlay_female_worn_hat_fur", "fg": 4120 }, + { "id": "overlay_female_worn_hat_hard", "fg": 4122 }, + { "id": "overlay_male_worn_hat_hard", "fg": 4123 }, + { "id": "overlay_female_worn_hat_noise_cancelling", "fg": 4126 }, + { "id": "overlay_male_worn_hat_noise_cancelling", "fg": 4127 }, + { "id": "overlay_female_worn_helmet_army", "fg": 4128 }, + { "id": "overlay_male_worn_helmet_army", "fg": 4129 }, + { "id": "overlay_female_worn_helmet_barbute", "fg": 4130 }, + { "id": "overlay_male_worn_helmet_barbute", "fg": 4131 }, + { "id": "overlay_female_worn_helmet_bike", "fg": 4132 }, + { "id": "overlay_male_worn_helmet_bike", "fg": 4133 }, + { "id": "overlay_female_worn_helmet_chitin", "fg": 4134 }, + { "id": "overlay_male_worn_helmet_chitin", "fg": 4135 }, + { "id": "overlay_female_worn_helmet_kabuto", "fg": 4136 }, + { "id": "overlay_male_worn_helmet_kabuto", "fg": 4137 }, + { "id": "overlay_female_worn_helmet_motor", "fg": 4138 }, + { "id": "overlay_male_worn_helmet_motor", "fg": 4139 }, + { "id": "overlay_female_worn_hat_knit", "fg": 4124 }, + { "id": "overlay_male_worn_hat_knit", "fg": 4125 }, + { "id": "overlay_female_worn_straw_fedora", "fg": 4142 }, + { "id": "overlay_male_worn_straw_fedora", "fg": 4143 }, + { "id": "overlay_female_worn_straw_hat", "fg": 4144 }, + { "id": "overlay_male_worn_straw_hat", "fg": 4145 }, + { "id": "overlay_female_worn_10gal_hat", "fg": 4146 }, + { "id": "overlay_male_worn_10gal_hat", "fg": 4147 }, + { "id": "overlay_female_worn_tophat", "fg": 4148 }, + { "id": "overlay_male_worn_tophat", "fg": 4149 }, + { "id": "overlay_male_worn_turban", "fg": 4151 }, + { "id": "overlay_female_worn_turban", "fg": 4150 }, + { "id": "overlay_female_worn_blazer", "fg": 4154 }, + { "id": "overlay_male_worn_blazer", "fg": 4155 }, + { "id": "overlay_female_worn_bunker_coat", "fg": 4156 }, + { "id": "overlay_male_worn_bunker_coat", "fg": 4157 }, + { "id": "overlay_female_worn_coat_lab", "fg": 4158 }, + { "id": "overlay_male_worn_coat_lab", "fg": 4159 }, + { "id": "overlay_female_worn_coat_rain", "fg": 4160 }, + { "id": "overlay_male_worn_coat_rain", "fg": 4161 }, + { "id": "overlay_female_worn_coat_winter", "fg": 4162 }, + { "id": "overlay_male_worn_coat_winter", "fg": 4163 }, + { "id": "overlay_female_worn_duster", "fg": 4164 }, + { "id": "overlay_male_worn_duster", "fg": 4165 }, + { "id": "overlay_female_worn_jacket_flannel", "fg": 4170 }, + { "id": "overlay_male_worn_jacket_flannel", "fg": 4171 }, + { "id": "overlay_female_worn_jacket_jean", "fg": 4172 }, + { "id": "overlay_male_worn_jacket_jean", "fg": 4173 }, + { "id": "overlay_female_worn_jacket_light", "fg": 4176 }, + { "id": "overlay_male_worn_jacket_light", "fg": 4177 }, + { "id": "overlay_female_worn_jacket_evac", "fg": 4168 }, + { "id": "overlay_male_worn_jacket_evac", "fg": 4169 }, + { "id": "overlay_female_worn_jacket_leather", "fg": 4178 }, + { "id": "overlay_male_worn_jacket_leather", "fg": 4179 }, + { "id": "overlay_female_worn_jacket_leather_red", "fg": 4174 }, + { "id": "overlay_male_worn_jacket_leather_red", "fg": 4175 }, + { "id": "overlay_female_worn_ski_jacket", "fg": 4180 }, + { "id": "overlay_male_worn_ski_jacket", "fg": 4181 }, + { "id": "overlay_female_worn_jacket_windbreaker", "fg": 4186 }, + { "id": "overlay_male_worn_jacket_windbreaker", "fg": 4187 }, + { "id": "overlay_female_worn_winter_jacket_army", "fg": 4152 }, + { "id": "overlay_male_worn_winter_jacket_army", "fg": 4153 }, + { "id": "overlay_female_worn_jacket_army", "fg": 4166 }, + { "id": "overlay_male_worn_jacket_army", "fg": 4167 }, + { "id": "overlay_female_worn_trenchcoat", "fg": 4182 }, + { "id": "overlay_male_worn_trenchcoat", "fg": 4183 }, + { "id": "overlay_female_worn_waistcoat", "fg": 4184 }, + { "id": "overlay_male_worn_waistcoat", "fg": 4185 }, + { "id": "overlay_female_worn_peacoat", "fg": 4188 }, + { "id": "overlay_male_worn_peacoat", "fg": 4189 }, + { "id": "overlay_female_worn_poncho", "fg": 4190 }, + { "id": "overlay_male_worn_poncho", "fg": 4191 }, + { "id": "overlay_worn_badge_swat", "fg": 4192 }, + { "id": "overlay_female_worn_barrette", "fg": 4193 }, + { "id": "overlay_male_worn_barrette", "fg": 4194 }, + { "id": "overlay_female_worn_badge_deputy", "fg": 4195 }, + { "id": "overlay_male_worn_badge_deputy", "fg": 4196 }, + { "id": "overlay_female_worn_knee_pads", "fg": 4205 }, + { "id": "overlay_male_worn_knee_pads", "fg": 4206 }, + { "id": "overlay_male_worn_arm_warmers", "fg": 4208 }, + { "id": "overlay_female_worn_arm_warmers", "fg": 4207 }, + { "id": "overlay_male_worn_leg_warmers", "fg": 4210 }, + { "id": "overlay_female_worn_leg_warmers", "fg": 4209 }, + { "id": "overlay_female_worn_armguard_soft", "fg": 4211 }, + { "id": "overlay_male_worn_armguard_soft", "fg": 4212 }, + { "id": "overlay_female_worn_balclava", "fg": 4213 }, + { "id": "overlay_male_worn_balclava", "fg": 4214 }, + { "id": "overlay_female_worn_bandana", "fg": 4215 }, + { "id": "overlay_male_worn_bandana", "fg": 4216 }, + { "id": "overlay_female_worn_beekeeping_hood", "fg": 4217 }, + { "id": "overlay_male_worn_beekeeping_hood", "fg": 4218 }, + { "id": "overlay_male_worn_foodperson_mask", "fg": 4220 }, + { "id": "overlay_female_worn_foodperson_mask", "fg": 4219 }, + { "id": "overlay_male_worn_foodperson_mask_on", "fg": 4222 }, + { "id": "overlay_female_worn_foodperson_mask_on", "fg": 4221 }, + { "id": "overlay_female_worn_mask_dust", "fg": 4223 }, + { "id": "overlay_male_worn_mask_dust", "fg": 4224 }, + { "id": "overlay_female_worn_mask_gas", "fg": 4225 }, + { "id": "overlay_male_worn_mask_gas", "fg": 4226 }, + { "id": "overlay_female_worn_welding_mask_crude", "fg": 4227 }, + { "id": "overlay_male_worn_welding_mask_crude", "fg": 4228 }, + { "id": "overlay_female_worn_welding_mask_crude_raised", "fg": 4229 }, + { "id": "overlay_male_worn_welding_mask_crude_raised", "fg": 4230 }, + { "id": "overlay_female_worn_welding_mask", "fg": 4231 }, + { "id": "overlay_male_worn_welding_mask", "fg": 4232 }, + { "id": "overlay_female_worn_welding_mask_raised", "fg": 4233 }, + { "id": "overlay_male_worn_welding_mask_raised", "fg": 4234 }, + { "id": "overlay_female_worn_mask_bal", "fg": 4235 }, + { "id": "overlay_male_worn_mask_bal", "fg": 4236 }, + { "id": "overlay_female_worn_fencing_mask", "fg": 4237 }, + { "id": "overlay_male_worn_fencing_mask", "fg": 4238 }, + { "id": "overlay_female_worn_mask_filter", "fg": 4239 }, + { "id": "overlay_male_worn_mask_filter", "fg": 4240 }, + { "id": "overlay_female_worn_mask_bunker", "fg": 4241 }, + { "id": "overlay_male_worn_mask_bunker", "fg": 4242 }, + { "id": "overlay_female_worn_mask_guy_fawkes", "fg": 4243 }, + { "id": "overlay_male_worn_mask_guy_fawkes", "fg": 4244 }, + { "id": "overlay_female_worn_mask_hockey", "fg": 4245 }, + { "id": "overlay_male_worn_mask_hockey", "fg": 4246 }, + { "id": "overlay_female_worn_mask_rioter", "fg": 4247 }, + { "id": "overlay_male_worn_mask_rioter", "fg": 4248 }, + { "id": "overlay_male_worn_robe", "fg": 4259 }, + { "id": "overlay_female_worn_robe", "fg": 4258 }, + { "id": "overlay_male_worn_house_coat", "fg": 4257 }, + { "id": "overlay_female_worn_house_coat", "fg": 4256 }, + { "id": "overlay_worn_binoculars", "fg": 4260 }, + { "id": "overlay_female_worn_knit_scarf", "fg": 4263 }, + { "id": "overlay_male_worn_knit_scarf", "fg": 4264 }, + { "id": "overlay_female_worn_scarf", "fg": 4266 }, + { "id": "overlay_male_worn_scarf", "fg": 4267 }, + { "id": "overlay_worn_tie_bow", "fg": 4261 }, + { "id": "overlay_worn_tie_clipon", "fg": 4262 }, + { "id": "overlay_worn_tie_necktie", "fg": 4265 }, + { "id": "overlay_worn_tie_skinny", "fg": 4268 }, + { "id": "overlay_female_worn_army_top", "fg": 4269 }, + { "id": "overlay_male_worn_army_top", "fg": 4270 }, + { "id": "overlay_female_worn_camisole", "fg": 4271 }, + { "id": "overlay_male_worn_camisole", "fg": 4272 }, + { "id": "overlay_female_worn_under_armor", "fg": 4273 }, + { "id": "overlay_male_worn_under_armor", "fg": 4274 }, + { "id": "overlay_female_worn_dress_shirt", "fg": 4275 }, + { "id": "overlay_male_worn_dress_shirt", "fg": 4276 }, + { "id": "overlay_female_worn_halter_top", "fg": 4277 }, + { "id": "overlay_male_worn_halter_top", "fg": 4278 }, + { "id": "overlay_female_worn_hoodie", "fg": 4279 }, + { "id": "overlay_male_worn_hoodie", "fg": 4280 }, + { "id": "overlay_female_worn_jersey", "fg": 4281 }, + { "id": "overlay_male_worn_jersey", "fg": 4282 }, + { "id": "overlay_female_worn_linuxtshirt", "fg": 4283 }, + { "id": "overlay_male_worn_linuxtshirt", "fg": 4284 }, + { "id": "overlay_female_worn_longshirt", "fg": 4285 }, + { "id": "overlay_male_worn_longshirt", "fg": 4286 }, + { "id": "overlay_female_worn_striped_shirt", "fg": 4287 }, + { "id": "overlay_male_worn_striped_shirt", "fg": 4288 }, + { "id": "overlay_female_worn_sweater", "fg": 4289 }, + { "id": "overlay_male_worn_sweater", "fg": 4290 }, + { "id": "overlay_female_worn_sweatshirt", "fg": 4291 }, + { "id": "overlay_male_worn_sweatshirt", "fg": 4292 }, + { "id": "overlay_female_worn_tank_top", "fg": 4293 }, + { "id": "overlay_male_worn_tank_top", "fg": 4294 }, + { "id": "overlay_female_worn_tshirt", "fg": 4295 }, + { "id": "overlay_male_worn_tshirt", "fg": 4296 }, + { "id": "overlay_female_worn_technician_shirt_gray", "fg": 4297 }, + { "id": "overlay_male_worn_technician_shirt_gray", "fg": 4298 }, + { "id": "overlay_worn_dress_shoes", "fg": 4299 }, + { "id": "overlay_female_worn_flip_flops", "fg": 4300 }, + { "id": "overlay_male_worn_flip_flops", "fg": 4301 }, + { "id": "overlay_female_worn_geta", "fg": 4302 }, + { "id": "overlay_male_worn_geta", "fg": 4303 }, + { "id": "overlay_worn_heels", "fg": 4304 }, + { "id": "overlay_worn_leathersandals", "fg": 4305 }, + { "id": "overlay_worn_lowtops", "fg": 4306 }, + { "id": "overlay_worn_roller_blades", "fg": 4307 }, + { "id": "overlay_female_worn_shoes_bowling", "fg": 4308 }, + { "id": "overlay_male_worn_shoes_bowling", "fg": 4309 }, + { "id": "overlay_female_worn_sneakers", "fg": 4310 }, + { "id": "overlay_male_worn_sneakers", "fg": 4311 }, + { "id": "overlay_female_worn_clogs", "fg": 4312 }, + { "id": "overlay_male_worn_clogs", "fg": 4313 }, + { "id": "overlay_female_worn_b_shorts", "fg": 4314 }, + { "id": "overlay_male_worn_b_shorts", "fg": 4315 }, + { "id": "overlay_female_worn_boy_shorts", "fg": 4316 }, + { "id": "overlay_male_worn_boy_shorts", "fg": 4317 }, + { "id": "overlay_female_worn_under_armor_shorts", "fg": 4318 }, + { "id": "overlay_male_worn_under_armor_shorts", "fg": 4319 }, + { "id": "overlay_female_worn_shorts_cargo", "fg": 4320 }, + { "id": "overlay_male_worn_shorts_cargo", "fg": 4321 }, + { "id": "overlay_female_worn_shorts_denim", "fg": 4322 }, + { "id": "overlay_male_worn_shorts_denim", "fg": 4323 }, + { "id": "overlay_female_worn_shorts", "fg": 4324 }, + { "id": "overlay_male_worn_shorts", "fg": 4325 }, + { "id": "overlay_female_worn_mossberg_500", "fg": 4326 }, + { "id": "overlay_male_worn_mossberg_500", "fg": 4327 }, + { "id": "overlay_worn_boots_survivor", "fg": 4328 }, + { "id": "overlay_worn_boots_xlsurvivor", "fg": 4328 }, + { "id": "overlay_female_worn_sleeveless_duster_survivor", "fg": 4331 }, + { "id": "overlay_male_worn_sleeveless_duster_survivor", "fg": 4332 }, + { "id": "overlay_female_worn_sleeveless_trenchcoat_survivor", "fg": 4333 }, + { "id": "overlay_male_worn_sleeveless_trenchcoat_survivor", "fg": 4334 }, + { "id": "overlay_female_worn_survivor_belt_notools", "fg": 4397 }, + { "id": "overlay_male_worn_survivor_belt_notools", "fg": 4398 }, + { "id": "overlay_female_worn_duster_survivor", "fg": 4337 }, + { "id": "overlay_male_worn_duster_survivor", "fg": 4338 }, + { "id": "overlay_female_worn_xl_duster_survivor", "fg": 4337 }, + { "id": "overlay_male_worn_xl_duster_survivor", "fg": 4338 }, + { "id": "overlay_female_worn_gloves_survivor", "fg": 4341 }, + { "id": "overlay_male_worn_gloves_survivor", "fg": 4342 }, + { "id": "overlay_female_worn_gloves_xlsurvivor", "fg": 4341 }, + { "id": "overlay_male_worn_gloves_xlsurvivor", "fg": 4342 }, + { "id": "overlay_female_worn_survivor_vest", "fg": 4399 }, + { "id": "overlay_male_worn_survivor_vest", "fg": 4400 }, + { "id": "overlay_female_worn_xl_survivor_vest", "fg": 4399 }, + { "id": "overlay_male_worn_xl_survivor_vest", "fg": 4400 }, + { "id": "overlay_female_worn_hood_survivor", "fg": 4343 }, + { "id": "overlay_male_worn_hood_survivor", "fg": 4344 }, + { "id": "overlay_female_worn_hood_xlsurvivor", "fg": 4343 }, + { "id": "overlay_male_worn_hood_xlsurvivor", "fg": 4344 }, + { "id": "overlay_female_worn_survivor_suit", "fg": 4345 }, + { "id": "overlay_male_worn_survivor_suit", "fg": 4346 }, + { "id": "overlay_female_worn_xlsurvivor_suit", "fg": 4345 }, + { "id": "overlay_male_worn_xlsurvivor_suit", "fg": 4346 }, + { "id": "overlay_female_worn_trenchcoat_survivor", "fg": 4347 }, + { "id": "overlay_male_worn_trenchcoat_survivor", "fg": 4348 }, + { "id": "overlay_worn_boots_hsurvivor", "fg": 4363 }, + { "id": "overlay_worn_xl_boots_hsurvivor", "fg": 4363 }, + { "id": "overlay_female_worn_gloves_hsurvivor", "fg": 4364 }, + { "id": "overlay_male_worn_gloves_hsurvivor", "fg": 4365 }, + { "id": "overlay_female_worn_xl_gloves_hsurvivor", "fg": 4364 }, + { "id": "overlay_male_worn_xl_gloves_hsurvivor", "fg": 4365 }, + { "id": "overlay_female_worn_hsurvivor_suit", "fg": 4366 }, + { "id": "overlay_male_worn_hsurvivor_suit", "fg": 4367 }, + { "id": "overlay_female_worn_xlhsurvivor_suit", "fg": 4366 }, + { "id": "overlay_male_worn_xlhsurvivor_suit", "fg": 4367 }, + { "id": "overlay_worn_boots_fsurvivor", "fg": 4356 }, + { "id": "overlay_worn_xl_boots_fsurvivor", "fg": 4356 }, + { "id": "overlay_female_worn_gloves_fsurvivor", "fg": 4357 }, + { "id": "overlay_male_worn_gloves_fsurvivor", "fg": 4358 }, + { "id": "overlay_female_worn_xl_gloves_fsurvivor", "fg": 4357 }, + { "id": "overlay_male_worn_xl_gloves_fsurvivor", "fg": 4358 }, + { "id": "overlay_female_worn_hood_fsurvivor", "fg": 4359 }, + { "id": "overlay_male_worn_hood_fsurvivor", "fg": 4360 }, + { "id": "overlay_female_worn_xl_hood_fsurvivor", "fg": 4359 }, + { "id": "overlay_male_worn_xl_hood_fsurvivor", "fg": 4360 }, + { "id": "overlay_female_worn_fsurvivor_suit", "fg": 4361 }, + { "id": "overlay_male_worn_fsurvivor_suit", "fg": 4362 }, + { "id": "overlay_female_worn_xl_fsurvivor_suit", "fg": 4361 }, + { "id": "overlay_male_worn_xl_fsurvivor_suit", "fg": 4362 }, + { "id": [ "overlay_female_worn_pants_survivor", "overlay_female_worn_xl_pants_survivor" ], "fg": 4335 }, + { "id": [ "overlay_male_worn_pants_survivor", "overlay_male_worn_xl_pants_survivor" ], "fg": 4336 }, { "id": [ "overlay_female_worn_gloves_survivor_fingerless", "overlay_female_worn_xl_gloves_survivor_fingerless" ], - "fg": 4191 + "fg": 4339 }, { "id": [ "overlay_male_worn_gloves_survivor_fingerless", "overlay_male_worn_xl_gloves_survivor_fingerless" ], - "fg": 4192 - }, - { "id": "overlay_worn_boots_h20survivor", "fg": 4201 }, - { "id": "overlay_female_worn_gloves_h20survivor", "fg": 4202 }, - { "id": "overlay_male_worn_gloves_h20survivor", "fg": 4203 }, - { "id": "overlay_female_worn_hood_h20survivor", "fg": 4204 }, - { "id": "overlay_male_worn_hood_h20survivor", "fg": 4205 }, - { "id": "overlay_female_worn_h20survivor_suit", "fg": 4206 }, - { "id": "overlay_male_worn_h20survivor_suit", "fg": 4207 }, - { "id": [ "overlay_worn_boots_lsurvivor", "overlay_worn_xl_boots_lsurvivor" ], "fg": 4220 }, - { "id": [ "overlay_female_worn_gloves_lsurvivor", "overlay_female_worn_xl_gloves_lsurvivor" ], "fg": 4225 }, - { "id": [ "overlay_male_worn_gloves_lsurvivor", "overlay_male_worn_xl_gloves_lsurvivor" ], "fg": 4226 }, - { "id": [ "overlay_female_worn_hood_lsurvivor", "overlay_female_worn_xl_hood_lsurvivor" ], "fg": 4227 }, - { "id": [ "overlay_male_worn_hood_lsurvivor", "overlay_male_worn_xl_hood_lsurvivor" ], "fg": 4228 }, - { "id": [ "overlay_female_worn_lsurvivor_suit", "overlay_female_worn_xl_lsurvivor_suit" ], "fg": 4229 }, - { "id": [ "overlay_male_worn_lsurvivor_suit", "overlay_male_worn_xl_lsurvivor_suit" ], "fg": 4230 }, - { "id": [ "overlay_female_worn_lsurvivor_armor", "overlay_female_worn_xl_lsurvivor_armor" ], "fg": 4221 }, - { "id": [ "overlay_male_worn_lsurvivor_armor", "overlay_male_worn_xl_lsurvivor_armor" ], "fg": 4222 }, - { "id": [ "overlay_female_worn_lsurvivor_pants", "overlay_female_worn_xl_lsurvivor_pants" ], "fg": 4223 }, - { "id": [ "overlay_male_worn_lsurvivor_pants", "overlay_male_worn_xl_lsurvivor_pants" ], "fg": 4224 }, - { "id": "overlay_female_worn_mask_hsurvivor", "fg": 4231 }, - { "id": "overlay_male_worn_mask_hsurvivor", "fg": 4232 }, - { "id": "overlay_female_worn_mask_lsurvivor", "fg": 4233 }, - { "id": "overlay_male_worn_mask_lsurvivor", "fg": 4234 }, - { "id": "overlay_female_worn_mask_fsurvivor", "fg": 4235 }, - { "id": "overlay_male_worn_mask_fsurvivor", "fg": 4236 }, - { "id": "overlay_female_worn_mask_fsurvivorxl", "fg": 4235 }, - { "id": "overlay_male_worn_mask_fsurvivorxl", "fg": 4236 }, - { "id": "overlay_female_worn_mask_survivor", "fg": 4237 }, - { "id": "overlay_male_worn_mask_survivor", "fg": 4238 }, - { "id": "overlay_female_worn_mask_survivorxl", "fg": 4237 }, - { "id": "overlay_male_worn_mask_survivorxl", "fg": 4238 }, - { "id": "overlay_female_worn_mask_wsurvivor", "fg": 4239 }, - { "id": "overlay_male_worn_mask_wsurvivor", "fg": 4240 }, - { "id": "overlay_female_worn_mask_wsurvivorxl", "fg": 4239 }, - { "id": "overlay_male_worn_mask_wsurvivorxl", "fg": 4240 }, - { "id": [ "overlay_worn_boots_wsurvivor", "overlay_worn_xl_boots_wsurvivor" ], "fg": 4253 }, - { "id": [ "overlay_female_worn_gloves_wsurvivor", "overlay_female_worn_xl_gloves_wsurvivor" ], "fg": 4254 }, - { "id": [ "overlay_male_worn_gloves_wsurvivor", "overlay_male_worn_xl_gloves_wsurvivor" ], "fg": 4255 }, - { "id": [ "overlay_female_worn_hood_wsurvivor", "overlay_female_worn_xl_hood_wsurvivor" ], "fg": 4256 }, - { "id": [ "overlay_male_worn_hood_wsurvivor", "overlay_male_worn_xl_hood_wsurvivor" ], "fg": 4257 }, - { "id": [ "overlay_female_worn_wsurvivor_suit", "overlay_female_worn_xl_wsurvivor_suit" ], "fg": 4258 }, - { "id": [ "overlay_male_worn_wsurvivor_suit", "overlay_male_worn_xl_wsurvivor_suit" ], "fg": 4259 }, - { "id": "overlay_female_worn_bikini_bottom", "fg": 4260 }, - { "id": "overlay_male_worn_bikini_bottom", "fg": 4261 }, - { "id": "overlay_female_worn_bikini_top", "fg": 4262 }, - { "id": "overlay_male_worn_bikini_top", "fg": 4263 }, - { "id": "overlay_female_worn_bikini_top_fur", "fg": 4264 }, - { "id": "overlay_male_worn_bikini_top_fur", "fg": 4265 }, - { "id": "overlay_female_worn_bikini_top_leather", "fg": 4266 }, - { "id": "overlay_male_worn_bikini_top_leather", "fg": 4267 }, - { "id": "overlay_female_worn_winter_pants_army", "fg": 4268 }, - { "id": "overlay_male_worn_winter_pants_army", "fg": 4269 }, - { "id": "overlay_female_worn_bunker_pants", "fg": 4270 }, - { "id": "overlay_male_worn_bunker_pants", "fg": 4271 }, - { "id": "overlay_female_worn_striped_pants", "fg": 4294 }, - { "id": "overlay_male_worn_striped_pants", "fg": 4295 }, - { "id": "overlay_female_worn_technician_pants_gray", "fg": 4296 }, - { "id": "overlay_male_worn_technician_pants_gray", "fg": 4297 }, - { "id": "overlay_female_worn_jeans", "fg": 4272 }, - { "id": "overlay_male_worn_jeans", "fg": 4273 }, - { "id": "overlay_female_worn_jeans_red", "fg": 4274 }, - { "id": "overlay_male_worn_jeans_red", "fg": 4275 }, - { "id": "overlay_female_worn_motorbike_pants", "fg": 4276 }, - { "id": "overlay_male_worn_motorbike_pants", "fg": 4277 }, - { "id": "overlay_female_worn_pants_army", "fg": 4278 }, - { "id": "overlay_male_worn_pants_army", "fg": 4279 }, - { "id": "overlay_female_worn_pants_cargo", "fg": 4280 }, - { "id": "overlay_male_worn_pants_cargo", "fg": 4281 }, - { "id": "overlay_female_worn_pants_checkered", "fg": 4282 }, - { "id": "overlay_male_worn_pants_checkered", "fg": 4283 }, - { "id": "overlay_female_worn_pants_faux_fur", "fg": 4285 }, - { "id": "overlay_male_worn_pants_faux_fur", "fg": 4286 }, - { "id": "overlay_female_worn_pants_fur", "fg": 4287 }, - { "id": "overlay_male_worn_pants_fur", "fg": 4288 }, - { "id": "overlay_female_worn_pants_leather", "fg": 4289 }, - { "id": "overlay_male_worn_pants_leather", "fg": 4290 }, - { "id": "overlay_female_worn_pants", "fg": 4284 }, - { "id": "overlay_male_worn_pants", "fg": 4291 }, - { "id": "overlay_female_worn_pants_ski", "fg": 4292 }, - { "id": "overlay_male_worn_pants_ski", "fg": 4293 }, - { "id": "overlay_female_worn_bra", "fg": 4302 }, - { "id": "overlay_male_worn_bra", "fg": 4303 }, - { "id": "overlay_female_worn_corset", "fg": 4304 }, - { "id": "overlay_male_worn_corset", "fg": 4305 }, - { "id": "overlay_male_worn_undershirt", "fg": 4319 }, - { "id": "overlay_female_worn_undershirt", "fg": 4318 }, - { "id": "overlay_female_worn_socks", "fg": 4312 }, - { "id": "overlay_male_worn_socks", "fg": 4313 }, - { "id": "overlay_female_worn_stockings", "fg": 4316 }, - { "id": "overlay_male_worn_stockings", "fg": 4317 }, - { "id": "overlay_worn_socks_wool", "fg": 4322 }, - { "id": "overlay_female_worn_sports_bra", "fg": 4314 }, - { "id": "overlay_male_worn_sports_bra", "fg": 4315 }, - { "id": "overlay_female_worn_boxer_briefs", "fg": 4298 }, - { "id": "overlay_male_worn_boxer_briefs", "fg": 4299 }, - { "id": "overlay_female_worn_boxer_shorts", "fg": 4300 }, - { "id": "overlay_male_worn_boxer_shorts", "fg": 4301 }, - { "id": "overlay_female_worn_long_underpants", "fg": 4306 }, - { "id": "overlay_male_worn_long_underpants", "fg": 4307 }, - { "id": "overlay_female_worn_long_undertop", "fg": 4308 }, - { "id": "overlay_male_worn_long_undertop", "fg": 4309 }, - { "id": "overlay_female_worn_panties", "fg": 4310 }, - { "id": "overlay_male_worn_panties", "fg": 4311 }, - { "id": "overlay_female_worn_union_suit", "fg": 4320 }, - { "id": "overlay_male_worn_union_suit", "fg": 4321 }, - { "id": "overlay_male_worn_blanket", "fg": 4324 }, - { "id": "overlay_female_worn_blanket", "fg": 4323 }, - { "id": "overlay_male_worn_down_blanket", "fg": 4326 }, - { "id": "overlay_female_worn_down_blanket", "fg": 4325 }, - { "id": "overlay_female_worn_electric_blanket", "fg": 4327 }, - { "id": "overlay_male_worn_electric_blanket", "fg": 4328 }, - { "id": "overlay_female_worn_towel", "fg": 4329 }, - { "id": "overlay_male_worn_towel", "fg": 4330 }, - { "id": "overlay_female_worn_towel_wet", "fg": 4329 }, - { "id": "overlay_male_worn_towel_wet", "fg": 4330 }, - { "id": "overlay_female_worn_towel_soiled", "fg": 4329 }, - { "id": "overlay_male_worn_towel_soiled", "fg": 4330 }, - { "id": "t_atm", "fg": 4338, "bg": 4333 }, - { "id": "t_column", "fg": 4339, "bg": 4333 }, - { "id": "t_gutter_downspout", "fg": 4340, "bg": 4336 }, - { "id": "t_gutter_downspout_season_autumn", "fg": 4340, "bg": 4334 }, - { "id": "t_gutter_downspout_season_summer", "fg": 4340, "bg": 4335 }, - { "id": "t_gutter_downspout_season_winter", "fg": 4340, "bg": 4332 }, - { "id": "t_ladder_up", "fg": 4341 }, - { "id": "t_little_column", "fg": 4342, "bg": 4333 }, - { "id": "t_stairs_up", "fg": 4343 }, - { "id": "t_wood_stairs_up", "fg": 4344 }, - { "id": "t_utility_light", "fg": 4345 }, + "fg": 4340 + }, + { "id": "overlay_worn_boots_h20survivor", "fg": 4349 }, + { "id": "overlay_female_worn_gloves_h20survivor", "fg": 4350 }, + { "id": "overlay_male_worn_gloves_h20survivor", "fg": 4351 }, + { "id": "overlay_female_worn_hood_h20survivor", "fg": 4352 }, + { "id": "overlay_male_worn_hood_h20survivor", "fg": 4353 }, + { "id": "overlay_female_worn_h20survivor_suit", "fg": 4354 }, + { "id": "overlay_male_worn_h20survivor_suit", "fg": 4355 }, + { "id": [ "overlay_worn_boots_lsurvivor", "overlay_worn_xl_boots_lsurvivor" ], "fg": 4368 }, + { "id": [ "overlay_female_worn_gloves_lsurvivor", "overlay_female_worn_xl_gloves_lsurvivor" ], "fg": 4373 }, + { "id": [ "overlay_male_worn_gloves_lsurvivor", "overlay_male_worn_xl_gloves_lsurvivor" ], "fg": 4374 }, + { "id": [ "overlay_female_worn_hood_lsurvivor", "overlay_female_worn_xl_hood_lsurvivor" ], "fg": 4375 }, + { "id": [ "overlay_male_worn_hood_lsurvivor", "overlay_male_worn_xl_hood_lsurvivor" ], "fg": 4376 }, + { "id": [ "overlay_female_worn_lsurvivor_suit", "overlay_female_worn_xl_lsurvivor_suit" ], "fg": 4377 }, + { "id": [ "overlay_male_worn_lsurvivor_suit", "overlay_male_worn_xl_lsurvivor_suit" ], "fg": 4378 }, + { "id": [ "overlay_female_worn_lsurvivor_armor", "overlay_female_worn_xl_lsurvivor_armor" ], "fg": 4369 }, + { "id": [ "overlay_male_worn_lsurvivor_armor", "overlay_male_worn_xl_lsurvivor_armor" ], "fg": 4370 }, + { "id": [ "overlay_female_worn_lsurvivor_pants", "overlay_female_worn_xl_lsurvivor_pants" ], "fg": 4371 }, + { "id": [ "overlay_male_worn_lsurvivor_pants", "overlay_male_worn_xl_lsurvivor_pants" ], "fg": 4372 }, + { "id": "overlay_female_worn_mask_hsurvivor", "fg": 4379 }, + { "id": "overlay_male_worn_mask_hsurvivor", "fg": 4380 }, + { "id": "overlay_female_worn_mask_lsurvivor", "fg": 4381 }, + { "id": "overlay_male_worn_mask_lsurvivor", "fg": 4382 }, + { "id": "overlay_female_worn_mask_fsurvivor", "fg": 4383 }, + { "id": "overlay_male_worn_mask_fsurvivor", "fg": 4384 }, + { "id": "overlay_female_worn_mask_fsurvivorxl", "fg": 4383 }, + { "id": "overlay_male_worn_mask_fsurvivorxl", "fg": 4384 }, + { "id": "overlay_female_worn_mask_survivor", "fg": 4385 }, + { "id": "overlay_male_worn_mask_survivor", "fg": 4386 }, + { "id": "overlay_female_worn_mask_survivorxl", "fg": 4385 }, + { "id": "overlay_male_worn_mask_survivorxl", "fg": 4386 }, + { "id": "overlay_female_worn_mask_wsurvivor", "fg": 4387 }, + { "id": "overlay_male_worn_mask_wsurvivor", "fg": 4388 }, + { "id": "overlay_female_worn_mask_wsurvivorxl", "fg": 4387 }, + { "id": "overlay_male_worn_mask_wsurvivorxl", "fg": 4388 }, + { "id": [ "overlay_worn_boots_wsurvivor", "overlay_worn_xl_boots_wsurvivor" ], "fg": 4401 }, + { "id": [ "overlay_female_worn_gloves_wsurvivor", "overlay_female_worn_xl_gloves_wsurvivor" ], "fg": 4402 }, + { "id": [ "overlay_male_worn_gloves_wsurvivor", "overlay_male_worn_xl_gloves_wsurvivor" ], "fg": 4403 }, + { "id": [ "overlay_female_worn_hood_wsurvivor", "overlay_female_worn_xl_hood_wsurvivor" ], "fg": 4404 }, + { "id": [ "overlay_male_worn_hood_wsurvivor", "overlay_male_worn_xl_hood_wsurvivor" ], "fg": 4405 }, + { "id": [ "overlay_female_worn_wsurvivor_suit", "overlay_female_worn_xl_wsurvivor_suit" ], "fg": 4406 }, + { "id": [ "overlay_male_worn_wsurvivor_suit", "overlay_male_worn_xl_wsurvivor_suit" ], "fg": 4407 }, + { "id": "overlay_female_worn_bikini_bottom", "fg": 4408 }, + { "id": "overlay_male_worn_bikini_bottom", "fg": 4409 }, + { "id": "overlay_female_worn_bikini_top", "fg": 4410 }, + { "id": "overlay_male_worn_bikini_top", "fg": 4411 }, + { "id": "overlay_female_worn_bikini_top_fur", "fg": 4412 }, + { "id": "overlay_male_worn_bikini_top_fur", "fg": 4413 }, + { "id": "overlay_female_worn_bikini_top_leather", "fg": 4414 }, + { "id": "overlay_male_worn_bikini_top_leather", "fg": 4415 }, + { "id": "overlay_female_worn_winter_pants_army", "fg": 4416 }, + { "id": "overlay_male_worn_winter_pants_army", "fg": 4417 }, + { "id": "overlay_female_worn_bunker_pants", "fg": 4418 }, + { "id": "overlay_male_worn_bunker_pants", "fg": 4419 }, + { "id": "overlay_female_worn_striped_pants", "fg": 4442 }, + { "id": "overlay_male_worn_striped_pants", "fg": 4443 }, + { "id": "overlay_female_worn_technician_pants_gray", "fg": 4444 }, + { "id": "overlay_male_worn_technician_pants_gray", "fg": 4445 }, + { "id": "overlay_female_worn_jeans", "fg": 4420 }, + { "id": "overlay_male_worn_jeans", "fg": 4421 }, + { "id": "overlay_female_worn_jeans_red", "fg": 4422 }, + { "id": "overlay_male_worn_jeans_red", "fg": 4423 }, + { "id": "overlay_female_worn_motorbike_pants", "fg": 4424 }, + { "id": "overlay_male_worn_motorbike_pants", "fg": 4425 }, + { "id": "overlay_female_worn_pants_army", "fg": 4426 }, + { "id": "overlay_male_worn_pants_army", "fg": 4427 }, + { "id": "overlay_female_worn_pants_cargo", "fg": 4428 }, + { "id": "overlay_male_worn_pants_cargo", "fg": 4429 }, + { "id": "overlay_female_worn_pants_checkered", "fg": 4430 }, + { "id": "overlay_male_worn_pants_checkered", "fg": 4431 }, + { "id": "overlay_female_worn_pants_faux_fur", "fg": 4433 }, + { "id": "overlay_male_worn_pants_faux_fur", "fg": 4434 }, + { "id": "overlay_female_worn_pants_fur", "fg": 4435 }, + { "id": "overlay_male_worn_pants_fur", "fg": 4436 }, + { "id": "overlay_female_worn_pants_leather", "fg": 4437 }, + { "id": "overlay_male_worn_pants_leather", "fg": 4438 }, + { "id": "overlay_female_worn_pants", "fg": 4432 }, + { "id": "overlay_male_worn_pants", "fg": 4439 }, + { "id": "overlay_female_worn_pants_ski", "fg": 4440 }, + { "id": "overlay_male_worn_pants_ski", "fg": 4441 }, + { "id": "overlay_female_worn_bra", "fg": 4450 }, + { "id": "overlay_male_worn_bra", "fg": 4451 }, + { "id": "overlay_female_worn_corset", "fg": 4452 }, + { "id": "overlay_male_worn_corset", "fg": 4453 }, + { "id": "overlay_male_worn_undershirt", "fg": 4467 }, + { "id": "overlay_female_worn_undershirt", "fg": 4466 }, + { "id": "overlay_female_worn_socks", "fg": 4460 }, + { "id": "overlay_male_worn_socks", "fg": 4461 }, + { "id": "overlay_female_worn_stockings", "fg": 4464 }, + { "id": "overlay_male_worn_stockings", "fg": 4465 }, + { "id": "overlay_worn_socks_wool", "fg": 4470 }, + { "id": "overlay_female_worn_sports_bra", "fg": 4462 }, + { "id": "overlay_male_worn_sports_bra", "fg": 4463 }, + { "id": "overlay_female_worn_boxer_briefs", "fg": 4446 }, + { "id": "overlay_male_worn_boxer_briefs", "fg": 4447 }, + { "id": "overlay_female_worn_boxer_shorts", "fg": 4448 }, + { "id": "overlay_male_worn_boxer_shorts", "fg": 4449 }, + { "id": "overlay_female_worn_long_underpants", "fg": 4454 }, + { "id": "overlay_male_worn_long_underpants", "fg": 4455 }, + { "id": "overlay_female_worn_long_undertop", "fg": 4456 }, + { "id": "overlay_male_worn_long_undertop", "fg": 4457 }, + { "id": "overlay_female_worn_panties", "fg": 4458 }, + { "id": "overlay_male_worn_panties", "fg": 4459 }, + { "id": "overlay_female_worn_union_suit", "fg": 4468 }, + { "id": "overlay_male_worn_union_suit", "fg": 4469 }, + { "id": "overlay_male_worn_blanket", "fg": 4472 }, + { "id": "overlay_female_worn_blanket", "fg": 4471 }, + { "id": "overlay_male_worn_down_blanket", "fg": 4474 }, + { "id": "overlay_female_worn_down_blanket", "fg": 4473 }, + { "id": "overlay_female_worn_electric_blanket", "fg": 4475 }, + { "id": "overlay_male_worn_electric_blanket", "fg": 4476 }, + { "id": "overlay_female_worn_towel", "fg": 4477 }, + { "id": "overlay_male_worn_towel", "fg": 4478 }, + { "id": "overlay_female_worn_towel_wet", "fg": 4477 }, + { "id": "overlay_male_worn_towel_wet", "fg": 4478 }, + { "id": "overlay_female_worn_towel_soiled", "fg": 4477 }, + { "id": "overlay_male_worn_towel_soiled", "fg": 4478 }, + { + "id": [ "horse_farm_isherwood_13", "horse_farm_13", "farm_dairy_twd_4", "farm_stills_3" ], + "fg": [ 4481, 4480, 4482, 4483 ], + "bg": 4479, + "rotates": true + }, + { "id": "park", "fg": 4484, "bg": 4479 }, + { "id": "t_atm", "fg": 4492, "bg": 4487 }, + { "id": "t_column", "fg": 4493, "bg": 4487 }, + { "id": "t_gutter_downspout", "fg": 4494, "bg": 4490 }, + { "id": "t_gutter_downspout_season_autumn", "fg": 4494, "bg": 4488 }, + { "id": "t_gutter_downspout_season_summer", "fg": 4494, "bg": 4489 }, + { "id": "t_gutter_downspout_season_winter", "fg": 4494, "bg": 4486 }, + { "id": "t_ladder_up", "fg": 4495 }, + { "id": "t_little_column", "fg": 4496, "bg": 4487 }, + { "id": "t_stairs_up", "fg": 4497 }, + { "id": "t_wood_stairs_up", "fg": 4498 }, + { "id": "t_utility_light", "fg": 4499 }, { "id": "vp_frame_handle", - "fg": [ 4350, 4352, 4351, 4349 ], - "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4350, 4352, 4351, 4349 ] } ] - }, - { "id": "vp_saddle_scooter", "fg": [ 4354, 4356, 4355, 4353 ], "rotates": true }, - { "id": "f_dishwasher", "fg": 2867 }, - { "id": "f_wardrobe", "fg": 2868 }, - { "id": "f_treadmill", "fg": 2872 }, - { "id": "f_ladder", "fg": 2948 }, - { "id": "mon_shadow", "fg": 2993 }, - { "id": "mon_gracke", "fg": 3006 }, - { "id": "corpse_mon_zombie_brainless", "fg": 3031 }, - { "id": "overlay_female_mutation_ARM_TENTACLES", "fg": 3214 }, - { "id": "overlay_male_mutation_ARM_TENTACLES", "fg": 3215 }, - { "id": "overlay_female_mutation_ARM_TENTACLES_4", "fg": 3216 }, - { "id": "overlay_male_mutation_ARM_TENTACLES_4", "fg": 3217 }, - { "id": "overlay_female_mutation_ARM_TENTACLES_8", "fg": 3218 }, - { "id": "overlay_male_mutation_ARM_TENTACLES_8", "fg": 3219 }, - { "id": "overlay_female_mutation_CANINE_EARS", "fg": 3228 }, - { "id": "overlay_male_mutation_CANINE_EARS", "fg": 3229 }, - { "id": "overlay_female_mutation_FELINE_EARS", "fg": 3232 }, - { "id": "overlay_male_mutation_FELINE_EARS", "fg": 3233 }, - { "id": "overlay_female_mutation_HOOVES", "fg": 3234 }, - { "id": "overlay_male_mutation_HOOVES", "fg": 3235 }, - { "id": "overlay_female_mutation_HORNS", "fg": 3236 }, - { "id": "overlay_male_mutation_HORNS", "fg": 3237 }, - { "id": "overlay_female_mutation_LEG_TENTACLES", "fg": 3240 }, - { "id": "overlay_male_mutation_LEG_TENTACLES", "fg": 3241 }, - { "id": "overlay_female_mutation_MINOTAUR", "fg": 3244 }, - { "id": "overlay_male_mutation_MINOTAUR", "fg": 3245 }, - { "id": "overlay_female_mutation_MOUTH_TENTACLES", "fg": 3246 }, - { "id": "overlay_male_mutation_MOUTH_TENTACLES", "fg": 3247 }, - { "id": "overlay_female_mutation_SHELL", "fg": 3250 }, - { "id": "overlay_male_mutation_SHELL", "fg": 3251 }, - { "id": "overlay_female_mutation_TAIL_CATTLE", "fg": 3252 }, - { "id": "overlay_male_mutation_TAIL_CATTLE", "fg": 3253 }, - { "id": "overlay_female_mutation_TAIL_LONG", "fg": 3254 }, - { "id": "overlay_male_mutation_TAIL_LONG", "fg": 3255 }, - { "id": "overlay_female_mutation_FUR", "fg": 3271 }, - { "id": "overlay_male_mutation_FUR", "fg": 3273 }, - { "id": "overlay_wielded_mossberg_500", "fg": 3330 }, - { "id": "overlay_wielded_mossberg_500_security", "fg": 3331 }, - { "id": "overlay_wielded_mossberg_590", "fg": 3332 }, - { "id": "overlay_wielded_mossberg_930", "fg": 3333 }, - { "id": "overlay_wielded_remington_1100", "fg": 3334 }, - { "id": "overlay_wielded_remington_870", "fg": 3335 }, - { "id": "overlay_wielded_remington_870_breacher", "fg": 3336 }, - { "id": "overlay_wielded_remington_870_express", "fg": 3337 }, - { "id": "overlay_female_wielded_clay_teapot", "fg": 3338 }, - { "id": "overlay_female_worn_harmonica_holder", "fg": 3339 }, - { "id": "overlay_male_wielded_clay_teapot", "fg": 3340 }, - { "id": "overlay_male_worn_harmonica_holder", "fg": 3341 }, - { "id": "overlay_wielded_acoustic_guitar", "fg": 3342 }, - { "id": "overlay_wielded_banjo", "fg": 3343 }, - { "id": "overlay_wielded_clay_pot", "fg": 3344 }, - { "id": "overlay_wielded_guitar_electric", "fg": 3345 }, - { "id": "overlay_wielded_laptop", "fg": 3346 }, - { "id": "overlay_wielded_makeshift_hammer", "fg": 3347 }, - { "id": "overlay_wielded_mattress", "fg": 3348 }, - { "id": "overlay_wielded_pot_makeshift", "fg": 3349 }, - { "id": "overlay_wielded_pot_makeshift_copper", "fg": 3350 }, - { "id": "overlay_wielded_brazier", "fg": 3385 }, - { "id": "overlay_female_wielded_radio_car", "fg": 3391 }, - { "id": "overlay_female_wielded_radio_car_box", "fg": 3392 }, - { "id": "overlay_female_wielded_radio_car_on", "fg": 3393 }, - { "id": "overlay_female_wielded_radio_car_wheel", "fg": 3394 }, - { "id": "overlay_female_wielded_radiocontrol", "fg": 3395 }, - { "id": "overlay_female_wielded_rc_car_box", "fg": 3396 }, - { "id": "overlay_male_wielded_radio_car", "fg": 3397 }, - { "id": "overlay_male_wielded_radio_car_box", "fg": 3398 }, - { "id": "overlay_male_wielded_radio_car_on", "fg": 3399 }, - { "id": "overlay_male_wielded_radio_car_wheel", "fg": 3400 }, - { "id": "overlay_male_wielded_radiocontrol", "fg": 3401 }, - { "id": "overlay_male_wielded_rc_car_box", "fg": 3402 }, - { "id": "overlay_wielded_eyedrops", "fg": 3489 }, - { "id": "overlay_female_wielded_baseball", "fg": 3499 }, - { "id": "overlay_female_wielded_basketball", "fg": 3500 }, - { "id": "overlay_female_wielded_beach_volleyball", "fg": 3501 }, - { "id": "overlay_female_wielded_cigar", "fg": 3502 }, - { "id": "overlay_female_wielded_cigar_lit", "fg": 3503 }, - { "id": "overlay_female_wielded_mre_beef_box", "fg": 3504 }, - { "id": "overlay_female_wielded_puck", "fg": 3505 }, - { "id": "overlay_male_wielded_baseball", "fg": 3506 }, - { "id": "overlay_male_wielded_basketball", "fg": 3507 }, - { "id": "overlay_male_wielded_beach_volleyball", "fg": 3508 }, - { "id": "overlay_male_wielded_cigar", "fg": 3509 }, - { "id": "overlay_male_wielded_cigar_lit", "fg": 3510 }, - { "id": "overlay_male_wielded_mre_beef_box", "fg": 3511 }, - { "id": "overlay_male_wielded_puck", "fg": 3512 }, - { "id": "overlay_wielded_PR24-extended", "fg": 3513 }, - { "id": "overlay_wielded_PR24-retracted", "fg": 3514 }, - { "id": "overlay_wielded_baton-extended", "fg": 3515 }, - { "id": "overlay_wielded_baton", "fg": 3516 }, - { "id": "overlay_wielded_battery_car", "fg": 3517 }, - { "id": "overlay_wielded_bowling_ball", "fg": 3518 }, - { "id": "overlay_wielded_cell_phone", "fg": 3519 }, - { "id": "overlay_wielded_cell_phone_flashlight", "fg": 3520 }, - { "id": "overlay_wielded_codeine", "fg": 3521 }, - { "id": "overlay_wielded_flask_hip", "fg": 3522 }, - { "id": "overlay_wielded_football", "fg": 3523 }, - { "id": "overlay_wielded_golf_ball", "fg": 3524 }, - { "id": "overlay_wielded_grenade", "fg": 3525 }, - { "id": "overlay_wielded_grenade_act", "fg": 3526 }, - { "id": "overlay_wielded_grenade_emp", "fg": 3527 }, - { "id": "overlay_wielded_grenade_emp_act", "fg": 3528 }, - { "id": "overlay_wielded_grenade_inc", "fg": 3529 }, - { "id": "overlay_wielded_grenade_inc_act", "fg": 3530 }, - { "id": "overlay_wielded_indoor_volleyball", "fg": 3531 }, - { "id": "overlay_wielded_misc_repairkit", "fg": 3532 }, - { "id": "overlay_wielded_portable_game", "fg": 3533 }, - { "id": "overlay_wielded_smokebomb", "fg": 3534 }, - { "id": "overlay_wielded_smokebomb_act", "fg": 3535 }, - { "id": "overlay_wielded_two_way_radio", "fg": 3537 }, - { "id": "overlay_wielded_bokken", "fg": 3619 }, - { "id": "overlay_female_worn_aep_suit", "fg": 3745 }, - { "id": "overlay_male_worn_aep_suit", "fg": 3746 }, - { "id": "overlay_female_worn_chainmail_suit_faraday", "fg": 3761 }, - { "id": "overlay_female_worn_pot_helmet", "fg": 3762 }, - { "id": "overlay_male_worn_chainmail_suit_faraday", "fg": 3763 }, - { "id": "overlay_male_worn_pot_helmet", "fg": 3764 }, - { "id": "overlay_female_worn_duffelbag", "fg": 3785 }, - { "id": "overlay_female_worn_runner_bag", "fg": 3788 }, - { "id": "overlay_male_worn_duffelbag", "fg": 3789 }, - { "id": "overlay_male_worn_runner_bag", "fg": 3792 }, - { "id": "overlay_female_worn_grenadebandolier", "fg": 3812 }, - { "id": "overlay_female_worn_mbag", "fg": 3813 }, - { "id": "overlay_female_worn_slingpack", "fg": 3814 }, - { "id": "overlay_male_worn_grenadebandolier", "fg": 3815 }, - { "id": "overlay_male_worn_mbag", "fg": 3816 }, - { "id": "overlay_male_worn_slingpack", "fg": 3817 }, - { "id": "overlay_female_worn_scuba_tank", "fg": 3875 }, - { "id": "overlay_female_worn_scuba_tank_on", "fg": 3876 }, - { "id": "overlay_female_worn_small_scuba_tank", "fg": 3877 }, - { "id": "overlay_female_worn_small_scuba_tank_on", "fg": 3878 }, - { "id": "overlay_female_worn_wetsuit", "fg": 3879 }, - { "id": "overlay_female_worn_wetsuit_gloves", "fg": 3880 }, - { "id": "overlay_female_worn_wetsuit_hood", "fg": 3881 }, - { "id": "overlay_female_worn_wetsuit_spring", "fg": 3882 }, - { "id": "overlay_male_worn_scuba_tank", "fg": 3883 }, - { "id": "overlay_male_worn_scuba_tank_on", "fg": 3884 }, - { "id": "overlay_male_worn_small_scuba_tank", "fg": 3885 }, - { "id": "overlay_male_worn_small_scuba_tank_on", "fg": 3886 }, - { "id": "overlay_male_worn_wetsuit", "fg": 3887 }, - { "id": "overlay_male_worn_wetsuit_gloves", "fg": 3888 }, - { "id": "overlay_male_worn_wetsuit_hood", "fg": 3889 }, - { "id": "overlay_male_worn_wetsuit_spring", "fg": 3890 }, - { "id": "overlay_worn_swim_fins", "fg": 3891 }, - { "id": "overlay_worn_wetsuit_booties", "fg": 3892 }, - { "id": "overlay_female_worn_fitover_sunglasses", "fg": 3920 }, - { "id": "overlay_male_worn_fitover_sunglasses", "fg": 3921 }, - { "id": "overlay_female_worn_antarvasa", "fg": 4049 }, - { "id": "overlay_female_worn_kasaya", "fg": 4050 }, - { "id": "overlay_female_worn_samghati", "fg": 4051 }, - { "id": "overlay_female_worn_uttarasanga", "fg": 4052 }, - { "id": "overlay_male_worn_antarvasa", "fg": 4053 }, - { "id": "overlay_male_worn_kasaya", "fg": 4054 }, - { "id": "overlay_male_worn_samghati", "fg": 4055 }, - { "id": "overlay_male_worn_uttarasanga", "fg": 4056 }, - { "id": "overlay_female_worn_tourniquet_lower", "fg": 4101 }, - { "id": "overlay_female_worn_tourniquet_upper", "fg": 4102 }, - { "id": "overlay_female_worn_wristwatch", "fg": 4103 }, - { "id": "overlay_male_worn_tourniquet_lower", "fg": 4104 }, - { "id": "overlay_male_worn_tourniquet_upper", "fg": 4105 }, - { "id": "overlay_male_worn_wristwatch", "fg": 4106 }, - { "id": "overlay_worn_purse", "fg": 4107 }, - { "id": "overlay_female_worn_survivor_goggles", "fg": 4181 }, - { "id": "overlay_male_worn_survivor_goggles", "fg": 4182 }, - { "id": "overlay_female_worn_survivor_duffel_bag", "fg": 4241 }, - { "id": "overlay_female_worn_survivor_pack", "fg": 4242 }, - { "id": "overlay_female_worn_survivor_rucksack", "fg": 4243 }, - { "id": "overlay_female_worn_survivor_runner_pack", "fg": 4244 }, - { "id": "overlay_male_worn_survivor_duffel_bag", "fg": 4245 }, - { "id": "overlay_male_worn_survivor_pack", "fg": 4246 }, - { "id": "overlay_male_worn_survivor_rucksack", "fg": 4247 }, - { "id": "overlay_male_worn_survivor_runner_pack", "fg": 4248 }, - { "id": "t_window_stained_blue", "fg": 4346 }, - { "id": "t_window_stained_green", "fg": 4347 }, - { "id": "t_window_stained_red", "fg": 4348 } + "fg": [ 4504, 4506, 4505, 4503 ], + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 4504, 4506, 4505, 4503 ] } ] + }, + { "id": "vp_saddle_scooter", "fg": [ 4508, 4510, 4509, 4507 ], "rotates": true }, + { "id": "f_dishwasher", "fg": 3011 }, + { "id": "f_wardrobe", "fg": 3012 }, + { "id": "f_treadmill", "fg": 3016 }, + { "id": "f_ladder", "fg": 3092 }, + { "id": "mon_shadow", "fg": 3137 }, + { "id": "mon_gracke", "fg": 3150 }, + { "id": "corpse_mon_zombie_brainless", "fg": 3175 }, + { "id": "overlay_female_mutation_ARM_TENTACLES", "fg": 3358 }, + { "id": "overlay_male_mutation_ARM_TENTACLES", "fg": 3359 }, + { "id": "overlay_female_mutation_ARM_TENTACLES_4", "fg": 3360 }, + { "id": "overlay_male_mutation_ARM_TENTACLES_4", "fg": 3361 }, + { "id": "overlay_female_mutation_ARM_TENTACLES_8", "fg": 3362 }, + { "id": "overlay_male_mutation_ARM_TENTACLES_8", "fg": 3363 }, + { "id": "overlay_female_mutation_CANINE_EARS", "fg": 3372 }, + { "id": "overlay_male_mutation_CANINE_EARS", "fg": 3373 }, + { "id": "overlay_female_mutation_FELINE_EARS", "fg": 3376 }, + { "id": "overlay_male_mutation_FELINE_EARS", "fg": 3377 }, + { "id": "overlay_female_mutation_HOOVES", "fg": 3378 }, + { "id": "overlay_male_mutation_HOOVES", "fg": 3379 }, + { "id": "overlay_female_mutation_HORNS", "fg": 3380 }, + { "id": "overlay_male_mutation_HORNS", "fg": 3381 }, + { "id": "overlay_female_mutation_LEG_TENTACLES", "fg": 3384 }, + { "id": "overlay_male_mutation_LEG_TENTACLES", "fg": 3385 }, + { "id": "overlay_female_mutation_MINOTAUR", "fg": 3388 }, + { "id": "overlay_male_mutation_MINOTAUR", "fg": 3389 }, + { "id": "overlay_female_mutation_MOUTH_TENTACLES", "fg": 3390 }, + { "id": "overlay_male_mutation_MOUTH_TENTACLES", "fg": 3391 }, + { "id": "overlay_female_mutation_SHELL", "fg": 3394 }, + { "id": "overlay_male_mutation_SHELL", "fg": 3395 }, + { "id": "overlay_female_mutation_TAIL_CATTLE", "fg": 3396 }, + { "id": "overlay_male_mutation_TAIL_CATTLE", "fg": 3397 }, + { "id": "overlay_female_mutation_TAIL_LONG", "fg": 3398 }, + { "id": "overlay_male_mutation_TAIL_LONG", "fg": 3399 }, + { "id": "overlay_female_mutation_FUR", "fg": 3415 }, + { "id": "overlay_male_mutation_FUR", "fg": 3417 }, + { "id": "overlay_wielded_mossberg_500", "fg": 3474 }, + { "id": "overlay_wielded_mossberg_500_security", "fg": 3475 }, + { "id": "overlay_wielded_mossberg_590", "fg": 3476 }, + { "id": "overlay_wielded_mossberg_930", "fg": 3477 }, + { "id": "overlay_wielded_remington_1100", "fg": 3478 }, + { "id": "overlay_wielded_remington_870", "fg": 3479 }, + { "id": "overlay_wielded_remington_870_breacher", "fg": 3480 }, + { "id": "overlay_wielded_remington_870_express", "fg": 3481 }, + { "id": "overlay_female_wielded_clay_teapot", "fg": 3482 }, + { "id": "overlay_female_worn_harmonica_holder", "fg": 3483 }, + { "id": "overlay_male_wielded_clay_teapot", "fg": 3484 }, + { "id": "overlay_male_worn_harmonica_holder", "fg": 3485 }, + { "id": "overlay_wielded_acoustic_guitar", "fg": 3486 }, + { "id": "overlay_wielded_banjo", "fg": 3487 }, + { "id": "overlay_wielded_clay_pot", "fg": 3488 }, + { "id": "overlay_wielded_guitar_electric", "fg": 3489 }, + { "id": "overlay_wielded_laptop", "fg": 3490 }, + { "id": "overlay_wielded_makeshift_hammer", "fg": 3491 }, + { "id": "overlay_wielded_mattress", "fg": 3492 }, + { "id": "overlay_wielded_pot_makeshift", "fg": 3493 }, + { "id": "overlay_wielded_pot_makeshift_copper", "fg": 3494 }, + { "id": "overlay_wielded_brazier", "fg": 3529 }, + { "id": "overlay_female_wielded_radio_car", "fg": 3535 }, + { "id": "overlay_female_wielded_radio_car_box", "fg": 3536 }, + { "id": "overlay_female_wielded_radio_car_on", "fg": 3537 }, + { "id": "overlay_female_wielded_radio_car_wheel", "fg": 3538 }, + { "id": "overlay_female_wielded_radiocontrol", "fg": 3539 }, + { "id": "overlay_female_wielded_rc_car_box", "fg": 3540 }, + { "id": "overlay_male_wielded_radio_car", "fg": 3541 }, + { "id": "overlay_male_wielded_radio_car_box", "fg": 3542 }, + { "id": "overlay_male_wielded_radio_car_on", "fg": 3543 }, + { "id": "overlay_male_wielded_radio_car_wheel", "fg": 3544 }, + { "id": "overlay_male_wielded_radiocontrol", "fg": 3545 }, + { "id": "overlay_male_wielded_rc_car_box", "fg": 3546 }, + { "id": "overlay_wielded_atomic_lamp", "fg": 3547 }, + { "id": "overlay_wielded_atomic_lamp_off", "fg": 3548 }, + { "id": "overlay_wielded_eyedrops", "fg": 3635 }, + { "id": "overlay_female_wielded_baseball", "fg": 3645 }, + { "id": "overlay_female_wielded_basketball", "fg": 3646 }, + { "id": "overlay_female_wielded_beach_volleyball", "fg": 3647 }, + { "id": "overlay_female_wielded_cigar", "fg": 3648 }, + { "id": "overlay_female_wielded_cigar_lit", "fg": 3649 }, + { "id": "overlay_female_wielded_mre_beef_box", "fg": 3650 }, + { "id": "overlay_female_wielded_puck", "fg": 3651 }, + { "id": "overlay_male_wielded_baseball", "fg": 3652 }, + { "id": "overlay_male_wielded_basketball", "fg": 3653 }, + { "id": "overlay_male_wielded_beach_volleyball", "fg": 3654 }, + { "id": "overlay_male_wielded_cigar", "fg": 3655 }, + { "id": "overlay_male_wielded_cigar_lit", "fg": 3656 }, + { "id": "overlay_male_wielded_mre_beef_box", "fg": 3657 }, + { "id": "overlay_male_wielded_puck", "fg": 3658 }, + { "id": "overlay_wielded_PR24-extended", "fg": 3659 }, + { "id": "overlay_wielded_PR24-retracted", "fg": 3660 }, + { "id": "overlay_wielded_baton-extended", "fg": 3661 }, + { "id": "overlay_wielded_baton", "fg": 3662 }, + { "id": "overlay_wielded_battery_car", "fg": 3663 }, + { "id": "overlay_wielded_bowling_ball", "fg": 3664 }, + { "id": "overlay_wielded_cell_phone", "fg": 3665 }, + { "id": "overlay_wielded_cell_phone_flashlight", "fg": 3666 }, + { "id": "overlay_wielded_codeine", "fg": 3667 }, + { "id": "overlay_wielded_flask_hip", "fg": 3668 }, + { "id": "overlay_wielded_football", "fg": 3669 }, + { "id": "overlay_wielded_golf_ball", "fg": 3670 }, + { "id": "overlay_wielded_grenade", "fg": 3671 }, + { "id": "overlay_wielded_grenade_act", "fg": 3672 }, + { "id": "overlay_wielded_grenade_emp", "fg": 3673 }, + { "id": "overlay_wielded_grenade_emp_act", "fg": 3674 }, + { "id": "overlay_wielded_grenade_inc", "fg": 3675 }, + { "id": "overlay_wielded_grenade_inc_act", "fg": 3676 }, + { "id": "overlay_wielded_indoor_volleyball", "fg": 3677 }, + { "id": "overlay_wielded_misc_repairkit", "fg": 3678 }, + { "id": "overlay_wielded_portable_game", "fg": 3679 }, + { "id": "overlay_wielded_smokebomb", "fg": 3680 }, + { "id": "overlay_wielded_smokebomb_act", "fg": 3681 }, + { "id": "overlay_wielded_two_way_radio", "fg": 3683 }, + { "id": "overlay_wielded_bokken", "fg": 3765 }, + { "id": "overlay_wielded_hoe", "fg": 3777 }, + { "id": "overlay_female_worn_aep_suit", "fg": 3891 }, + { "id": "overlay_male_worn_aep_suit", "fg": 3892 }, + { "id": "overlay_female_worn_chainmail_suit_faraday", "fg": 3907 }, + { "id": "overlay_female_worn_pot_helmet", "fg": 3908 }, + { "id": "overlay_male_worn_chainmail_suit_faraday", "fg": 3909 }, + { "id": "overlay_male_worn_pot_helmet", "fg": 3910 }, + { "id": "overlay_female_worn_duffelbag", "fg": 3931 }, + { "id": "overlay_female_worn_runner_bag", "fg": 3934 }, + { "id": "overlay_male_worn_duffelbag", "fg": 3935 }, + { "id": "overlay_male_worn_runner_bag", "fg": 3938 }, + { "id": "overlay_female_worn_chestrig", "fg": 3958 }, + { "id": "overlay_female_worn_grenadebandolier", "fg": 3959 }, + { "id": "overlay_female_worn_mbag", "fg": 3960 }, + { "id": "overlay_female_worn_slingpack", "fg": 3961 }, + { "id": "overlay_male_worn_chestrig", "fg": 3962 }, + { "id": "overlay_male_worn_grenadebandolier", "fg": 3963 }, + { "id": "overlay_male_worn_mbag", "fg": 3964 }, + { "id": "overlay_male_worn_slingpack", "fg": 3965 }, + { "id": "overlay_female_worn_scuba_tank", "fg": 4023 }, + { "id": "overlay_female_worn_scuba_tank_on", "fg": 4024 }, + { "id": "overlay_female_worn_small_scuba_tank", "fg": 4025 }, + { "id": "overlay_female_worn_small_scuba_tank_on", "fg": 4026 }, + { "id": "overlay_female_worn_wetsuit", "fg": 4027 }, + { "id": "overlay_female_worn_wetsuit_gloves", "fg": 4028 }, + { "id": "overlay_female_worn_wetsuit_hood", "fg": 4029 }, + { "id": "overlay_female_worn_wetsuit_spring", "fg": 4030 }, + { "id": "overlay_male_worn_scuba_tank", "fg": 4031 }, + { "id": "overlay_male_worn_scuba_tank_on", "fg": 4032 }, + { "id": "overlay_male_worn_small_scuba_tank", "fg": 4033 }, + { "id": "overlay_male_worn_small_scuba_tank_on", "fg": 4034 }, + { "id": "overlay_male_worn_wetsuit", "fg": 4035 }, + { "id": "overlay_male_worn_wetsuit_gloves", "fg": 4036 }, + { "id": "overlay_male_worn_wetsuit_hood", "fg": 4037 }, + { "id": "overlay_male_worn_wetsuit_spring", "fg": 4038 }, + { "id": "overlay_worn_swim_fins", "fg": 4039 }, + { "id": "overlay_worn_wetsuit_booties", "fg": 4040 }, + { "id": "overlay_female_worn_fitover_sunglasses", "fg": 4068 }, + { "id": "overlay_male_worn_fitover_sunglasses", "fg": 4069 }, + { "id": "overlay_female_worn_antarvasa", "fg": 4197 }, + { "id": "overlay_female_worn_kasaya", "fg": 4198 }, + { "id": "overlay_female_worn_samghati", "fg": 4199 }, + { "id": "overlay_female_worn_uttarasanga", "fg": 4200 }, + { "id": "overlay_male_worn_antarvasa", "fg": 4201 }, + { "id": "overlay_male_worn_kasaya", "fg": 4202 }, + { "id": "overlay_male_worn_samghati", "fg": 4203 }, + { "id": "overlay_male_worn_uttarasanga", "fg": 4204 }, + { "id": "overlay_female_worn_tourniquet_lower", "fg": 4249 }, + { "id": "overlay_female_worn_tourniquet_upper", "fg": 4250 }, + { "id": "overlay_female_worn_wristwatch", "fg": 4251 }, + { "id": "overlay_male_worn_tourniquet_lower", "fg": 4252 }, + { "id": "overlay_male_worn_tourniquet_upper", "fg": 4253 }, + { "id": "overlay_male_worn_wristwatch", "fg": 4254 }, + { "id": "overlay_worn_purse", "fg": 4255 }, + { "id": "overlay_female_worn_survivor_goggles", "fg": 4329 }, + { "id": "overlay_male_worn_survivor_goggles", "fg": 4330 }, + { "id": "overlay_female_worn_survivor_duffel_bag", "fg": 4389 }, + { "id": "overlay_female_worn_survivor_pack", "fg": 4390 }, + { "id": "overlay_female_worn_survivor_rucksack", "fg": 4391 }, + { "id": "overlay_female_worn_survivor_runner_pack", "fg": 4392 }, + { "id": "overlay_male_worn_survivor_duffel_bag", "fg": 4393 }, + { "id": "overlay_male_worn_survivor_pack", "fg": 4394 }, + { "id": "overlay_male_worn_survivor_rucksack", "fg": 4395 }, + { "id": "overlay_male_worn_survivor_runner_pack", "fg": 4396 }, + { "id": "t_window_stained_blue", "fg": 4500 }, + { "id": "t_window_stained_green", "fg": 4501 }, + { "id": "t_window_stained_red", "fg": 4502 } ] }, { "file": "centered.png", - "//": "range 4368 to 4383", + "//": "range 4512 to 4527", "sprite_width": 64, "sprite_height": 64, "sprite_offset_x": -16, "sprite_offset_y": -16, "tiles": [ - { "id": "vp_wing_mirror", "fg": [ 4377, 4379, 4378, 4376 ], "rotates": true }, - { "id": "vp_wing_mirror_left", "fg": [ 4369, 4371, 4370, 4368 ], "rotates": true }, - { "id": "vp_wing_mirror_right", "fg": [ 4373, 4375, 4374, 4372 ], "rotates": true } + { "id": "vp_wing_mirror", "fg": [ 4521, 4523, 4522, 4520 ], "rotates": true }, + { "id": "vp_wing_mirror_left", "fg": [ 4513, 4515, 4514, 4512 ], "rotates": true }, + { "id": "vp_wing_mirror_right", "fg": [ 4517, 4519, 4518, 4516 ], "rotates": true } ] }, { "file": "large.png", - "//": "range 4384 to 4495", + "//": "range 4528 to 4655", "sprite_width": 64, "sprite_height": 64, "sprite_offset_x": -16, "sprite_offset_y": -32, "tiles": [ - { "id": "f_CTscan", "fg": 4385 }, - { "id": "f_MRI", "fg": 4386 }, - { "id": "f_rotary_clothesline", "fg": 4387 }, - { "id": "mon_troll", "fg": 4388, "bg": 4472 }, - { "id": "mon_albino_penguin", "fg": 4389, "bg": 4473 }, - { "id": "mon_gelatin", "fg": 4390, "bg": 4473 }, - { "id": "mon_smoker_brute", "fg": 4391, "bg": 4473 }, + { "id": "f_CTscan", "fg": 4529 }, + { "id": "f_MRI", "fg": 4530 }, + { "id": "f_rotary_clothesline", "fg": 4531 }, + { "id": "mon_troll", "fg": 4532, "bg": 4630 }, + { "id": "mon_albino_penguin", "fg": 4533, "bg": 4631 }, + { "id": "mon_gelatin", "fg": 4534, "bg": 4631 }, + { "id": "mon_smoker_brute", "fg": 4535, "bg": 4631 }, { "id": "mon_exodii_quad", "fg": [ - { "weight": 15, "sprite": 4392 }, - { "weight": 10, "sprite": 4393 }, - { "weight": 15, "sprite": 4394 }, - { "weight": 15, "sprite": 4395 } + { "weight": 15, "sprite": 4536 }, + { "weight": 10, "sprite": 4537 }, + { "weight": 15, "sprite": 4538 }, + { "weight": 15, "sprite": 4539 } ], - "bg": 4472 + "bg": 4630 }, { "id": "mon_exodii_turret", "fg": [ - { "weight": 15, "sprite": 4396 }, - { "weight": 5, "sprite": 4397 }, - { "weight": 15, "sprite": 4398 }, - { "weight": 15, "sprite": 4399 } + { "weight": 15, "sprite": 4540 }, + { "weight": 5, "sprite": 4541 }, + { "weight": 15, "sprite": 4542 }, + { "weight": 15, "sprite": 4543 } ], - "bg": 4473 - }, - { "id": "mon_fungal_blossom", "fg": 4400, "bg": 4473 }, - { "id": "mon_gas_zombie", "fg": 4401, "bg": 4474 }, - { "id": "mon_giant_crayfish", "fg": 4402, "bg": 4474 }, - { "id": "mon_slug_giant", "fg": 4403, "bg": 4472 }, - { "id": "mon_spider_web", "fg": 4405, "bg": 4474 }, - { "id": "corpse_mon_spider_web", "fg": 4404 }, - { "id": "mon_dog_zombie_hulk", "fg": 4406, "bg": 4473 }, - { "id": "mon_zhark", "fg": 4407 }, - { "id": "mon_ant_soldier", "fg": 4415, "bg": 4472 }, - { "id": "mon_ant_acid_soldier", "fg": 4413, "bg": 4472 }, - { "id": "corpse_mon_ant_soldier", "fg": 4411 }, - { "id": "corpse_mon_ant_acid_soldier", "fg": 4409 }, - { "id": "mon_ant_queen", "fg": 4414, "bg": 4472 }, - { "id": "mon_ant_acid_queen", "fg": 4412, "bg": 4472 }, - { "id": "corpse_mon_ant_queen", "fg": 4410 }, - { "id": "corpse_mon_ant_acid_queen", "fg": 4408 }, - { "id": "mon_bear", "fg": 4416, "bg": 4473 }, - { "id": "mon_blob_large", "fg": 4417, "bg": 4472 }, - { "id": "mon_boomer", "fg": 4418, "bg": 4474 }, - { "id": "mon_boomer_huge", "fg": 4419, "bg": 4473 }, - { "id": "mon_devourer", "fg": 4420, "bg": 4473 }, + "bg": 4631 + }, + { "id": "mon_fungal_blossom", "fg": 4544, "bg": 4631 }, + { "id": "mon_gas_zombie", "fg": 4545, "bg": 4632 }, + { "id": "mon_giant_crayfish", "fg": 4546, "bg": 4632 }, + { "id": "mon_slug_giant", "fg": 4547, "bg": 4630 }, + { "id": "mon_spider_web", "fg": 4549, "bg": 4632 }, + { "id": "corpse_mon_spider_web", "fg": 4548 }, + { "id": "mon_dog_zombie_hulk", "fg": 4550, "bg": 4631 }, + { "id": "mon_zhark", "fg": 4551 }, + { "id": "mon_ant_soldier", "fg": 4559, "bg": 4630 }, + { "id": "mon_ant_acid_soldier", "fg": 4557, "bg": 4630 }, + { "id": "corpse_mon_ant_soldier", "fg": 4555 }, + { "id": "corpse_mon_ant_acid_soldier", "fg": 4553 }, + { "id": "mon_ant_queen", "fg": 4558, "bg": 4630 }, + { "id": "mon_ant_acid_queen", "fg": 4556, "bg": 4630 }, + { "id": "corpse_mon_ant_queen", "fg": 4554 }, + { "id": "corpse_mon_ant_acid_queen", "fg": 4552 }, + { "id": "mon_bear", "fg": 4560, "bg": 4631 }, + { "id": "mon_blob_large", "fg": 4561, "bg": 4630 }, + { "id": "mon_boomer", "fg": 4562, "bg": 4632 }, + { "id": "mon_boomer_huge", "fg": 4563, "bg": 4631 }, + { "id": "mon_devourer", "fg": 4564, "bg": 4631 }, { "id": "mon_flying_polyp", - "fg": [ { "weight": 1, "sprite": 4421 }, { "weight": 1, "sprite": 4422 }, { "weight": 1, "sprite": 4423 } ] - }, - { "id": "mon_gator", "fg": 4424, "bg": 4472 }, - { "id": "mon_human_snail", "fg": 4425, "bg": 4472 }, - { "id": "mon_jabberwock", "fg": 4426, "bg": 4472 }, - { "id": "mon_mi_go", "fg": 4427, "bg": 4473 }, - { "id": "mon_mi_go_slaver", "fg": 4431, "bg": 4473 }, - { "id": "mon_mi_go_surgeon", "fg": 4432, "bg": 4473 }, - { "id": "mon_mi_go_scout", "fg": 4430, "bg": 4473 }, - { "id": "mon_mi_go_guard", "fg": 4428, "bg": 4472 }, - { "id": "mon_mi_go_myrmidon", "fg": 4429, "bg": 4472 }, - { "id": "mon_moose", "fg": [ { "weight": 2, "sprite": 4433 }, { "weight": 2, "sprite": 4434 } ], "bg": 4472 }, - { "id": "mon_wasp", "fg": 4435, "bg": 4473 }, - { "id": "mon_darkman", "fg": 4436 }, - { "id": "mon_zombear", "fg": 4437, "bg": 4473 }, - { "id": "mon_zombie_biter", "fg": 4438, "bg": 4473 }, + "fg": [ { "weight": 1, "sprite": 4565 }, { "weight": 1, "sprite": 4566 }, { "weight": 1, "sprite": 4567 } ] + }, + { "id": "mon_gator", "fg": 4568, "bg": 4630 }, + { "id": "mon_human_snail", "fg": 4569, "bg": 4630 }, + { "id": "mon_jabberwock", "fg": 4570, "bg": 4630 }, + { "id": "mon_mi_go", "fg": 4571, "bg": 4631 }, + { "id": "mon_mi_go_slaver", "fg": 4575, "bg": 4631 }, + { "id": "mon_mi_go_surgeon", "fg": 4576, "bg": 4631 }, + { "id": "mon_mi_go_scout", "fg": 4574, "bg": 4631 }, + { "id": "mon_mi_go_guard", "fg": 4572, "bg": 4630 }, + { "id": "mon_mi_go_myrmidon", "fg": 4573, "bg": 4630 }, + { "id": "mon_moose", "fg": [ { "weight": 2, "sprite": 4577 }, { "weight": 2, "sprite": 4578 } ], "bg": 4630 }, + { "id": "mon_wasp", "fg": 4579, "bg": 4631 }, + { "id": "mon_darkman", "fg": 4580 }, + { "id": "mon_zombear", "fg": 4581, "bg": 4631 }, + { "id": "mon_zombie_biter", "fg": 4582, "bg": 4631 }, { "id": "mon_zombie_brute", "fg": [ - { "weight": 100, "sprite": 4439 }, - { "weight": 100, "sprite": 4440 }, - { "weight": 50, "sprite": 4441 }, - { "weight": 50, "sprite": 4442 } + { "weight": 100, "sprite": 4583 }, + { "weight": 100, "sprite": 4584 }, + { "weight": 50, "sprite": 4585 }, + { "weight": 50, "sprite": 4586 } ], - "bg": 4473 + "bg": 4631 }, - { "id": "mon_zombie_brute_winged", "fg": 4443, "bg": 4472 }, + { "id": "mon_zombie_brute_winged", "fg": 4587, "bg": 4630 }, { "id": "mon_zombie_electric", - "fg": [ { "weight": 1, "sprite": 4445 }, { "weight": 1, "sprite": 4444 } ], - "bg": 4474 + "fg": [ { "weight": 1, "sprite": 4589 }, { "weight": 1, "sprite": 4588 } ], + "bg": 4632 }, { "id": "mon_zombie_nullfield", - "fg": [ { "weight": 1, "sprite": 4447 }, { "weight": 1, "sprite": 4446 } ], - "bg": 4474 + "fg": [ { "weight": 1, "sprite": 4591 }, { "weight": 1, "sprite": 4590 } ], + "bg": 4632 }, { "id": "mon_zombie_gasbag", - "fg": [ { "weight": 1, "sprite": 4448 }, { "weight": 1, "sprite": 4449 } ], - "bg": 4474 + "fg": [ { "weight": 1, "sprite": 4592 }, { "weight": 1, "sprite": 4593 } ], + "bg": 4632 }, { "id": "mon_zombie_grappler", - "fg": [ { "weight": 1, "sprite": 4450 }, { "weight": 1, "sprite": 4451 } ], - "bg": 4474 - }, - { "id": "mon_zombie_runner", "fg": 4452, "bg": 4474 }, - { "id": "mon_zombie_shady", "fg": 4453, "bg": 4474 }, - { "id": "mon_zombie_smoker", "fg": 4454, "bg": 4474 }, - { "id": "mon_zoose", "fg": 4455, "bg": 4472 }, - { "id": "mon_nursebot_defective", "fg": 4457, "bg": 4474 }, - { "id": "mon_nursebot", "fg": 4456, "bg": 4474 }, - { "id": "mon_zombie_brute_shocker", "fg": 4458, "bg": 4473 }, - { "id": "mon_skeleton_electric", "fg": 4459, "bg": 4474 }, - { "id": "mon_sludge_crawler", "fg": 4460, "bg": 4472 }, - { "id": "mon_spider_jumping_giant", "fg": 4463, "bg": 4474 }, - { "id": "corpse_mon_spider_jumping_giant", "fg": 4461 }, - { "id": "mon_spider_wolf_giant", "fg": 4464, "bg": 4474 }, - { "id": "corpse_mon_spider_wolf_giant", "fg": 4462 }, - { "id": "mon_dog_thing", "fg": 4465, "bg": 4473 }, - { "id": "mon_headless_dog_thing", "fg": 4466, "bg": 4473 }, - { "id": "mon_thing", "fg": 4467, "bg": 4472 }, - { "id": "mon_triffid_queen", "fg": 4468, "bg": 4472 }, - { "id": "mon_vinebeast", "fg": 4469, "bg": 4472 }, - { "id": "mon_zombie_brute_ninja", "fg": 4470, "bg": 4473 }, - { "id": "mon_zombie_brute_grappler", "fg": 4471, "bg": 4473 }, - { "id": "t_tree_young", "fg": 4480, "bg": 4477 }, - { "id": "t_tree_young_season_summer", "fg": 4479, "bg": 4478, "rotates": false }, + "fg": [ { "weight": 1, "sprite": 4594 }, { "weight": 1, "sprite": 4595 } ], + "bg": 4632 + }, + { "id": "mon_zombie_runner", "fg": 4596, "bg": 4632 }, + { "id": "mon_zombie_shady", "fg": 4597, "bg": 4632 }, + { "id": "mon_zombie_smoker", "fg": 4598, "bg": 4632 }, + { "id": "mon_zoose", "fg": 4599, "bg": 4630 }, + { "id": "mon_nursebot_defective", "fg": 4601, "bg": 4632 }, + { "id": "mon_nursebot", "fg": 4600, "bg": 4632 }, + { "id": "mon_zombie_brute_shocker", "fg": 4602, "bg": 4631 }, + { "id": "mon_skeleton_electric", "fg": 4603, "bg": 4632 }, + { "id": "mon_sludge_crawler", "fg": 4604, "bg": 4630 }, + { "id": "mon_spider_jumping_giant", "fg": 4607, "bg": 4632 }, + { "id": "corpse_mon_spider_jumping_giant", "fg": 4605 }, + { "id": "mon_spider_wolf_giant", "fg": 4608, "bg": 4632 }, + { "id": "corpse_mon_spider_wolf_giant", "fg": 4606 }, + { "id": "mon_dog_thing", "fg": 4609, "bg": 4631 }, + { "id": "mon_headless_dog_thing", "fg": 4610, "bg": 4631 }, + { "id": "mon_thing", "fg": 4611, "bg": 4630 }, + { "id": "mon_triffid_queen", "fg": 4612, "bg": 4630 }, + { "id": "mon_vinebeast", "fg": 4613, "bg": 4630 }, + { "id": "mon_zombie_brute_ninja", "fg": 4614, "bg": 4631 }, + { "id": "mon_zombie_brute_grappler", "fg": 4615, "bg": 4631 }, + { "id": "forest_thick", "fg": 4617, "bg": 4616 }, + { "id": "bridgehead_ground", "fg": [ 4621, 4620, 4622, 4623 ], "bg": 4629, "rotates": true }, + { "id": "bridge", "fg": [ 4619, 4618, 4619, 4618 ], "bg": 4628, "rotates": true }, + { "id": "bridgehead_ramp", "fg": [ 4625, 4624, 4626, 4627 ], "rotates": true }, + { "id": "bridge_road", "fg": [ 4619, 4618, 4619, 4618 ], "rotates": true }, + { "id": "t_tree_young", "fg": 4638, "bg": 4635 }, + { "id": "t_tree_young_season_summer", "fg": 4637, "bg": 4636, "rotates": false }, { "id": "t_tree_young_season_autumn", - "fg": [ { "weight": 100, "sprite": 4481 }, { "weight": 100, "sprite": 4482 } ], - "bg": 4476, + "fg": [ { "weight": 100, "sprite": 4639 }, { "weight": 100, "sprite": 4640 } ], + "bg": 4634, "rotates": false }, - { "id": "t_tree_young_season_winter", "fg": 4483, "bg": 4475, "rotates": false }, - { "id": "corpse_mon_zombie_spitter", "fg": 4384 } + { "id": "t_tree_young_season_winter", "fg": 4641, "bg": 4633, "rotates": false }, + { "id": "corpse_mon_zombie_spitter", "fg": 4528 } ] }, { "file": "huge.png", - "//": "range 4496 to 4511", + "//": "range 4656 to 4671", "sprite_width": 64, "sprite_height": 96, "sprite_offset_x": -16, "sprite_offset_y": -64, "tiles": [ - { "id": "mon_flaming_eye", "fg": 4496 }, - { "id": "mon_zombie_hulk", "fg": 4498, "bg": 4501 }, - { "id": "mon_skeleton_hulk", "fg": 4497 }, - { "id": "mon_amigara_horror", "fg": 4499 }, - { "id": "mon_zombie_kevlar_2", "fg": 4500 }, - { "id": "mon_triffid_heart", "fg": 4502 } + { "id": "mon_flaming_eye", "fg": 4656 }, + { "id": "mon_zombie_hulk", "fg": 4658, "bg": 4661 }, + { "id": "mon_skeleton_hulk", "fg": 4657 }, + { "id": "mon_amigara_horror", "fg": 4659 }, + { "id": "mon_zombie_kevlar_2", "fg": 4660 }, + { "id": "mon_triffid_heart", "fg": 4662 } ] }, { "file": "giant.png", - "//": "range 4512 to 4559", + "//": "range 4672 to 4719", "sprite_width": 96, "sprite_height": 96, "sprite_offset_x": -32, "sprite_offset_y": -64, "tiles": [ - { "id": "t_tree", "fg": 4521, "bg": 4514 }, - { "id": "t_tree_season_summer", "fg": 4516, "bg": 4515 }, + { "id": "t_tree", "fg": 4681, "bg": 4674 }, + { "id": "t_tree_season_summer", "fg": 4676, "bg": 4675 }, { "id": "t_tree_season_autumn", "fg": [ - { "weight": 100, "sprite": 4517 }, - { "weight": 100, "sprite": 4518 }, - { "weight": 100, "sprite": 4519 }, - { "weight": 100, "sprite": 4520 } + { "weight": 100, "sprite": 4677 }, + { "weight": 100, "sprite": 4678 }, + { "weight": 100, "sprite": 4679 }, + { "weight": 100, "sprite": 4680 } ], - "bg": 4513 + "bg": 4673 }, - { "id": "t_tree_season_winter", "fg": 4541, "bg": 4512 }, - { "id": "t_tree_apple", "fg": 4522, "bg": 4514 }, - { "id": "t_tree_apple_season_summer", "fg": 4522, "bg": 4515 }, - { "id": "t_tree_apple_season_winter", "fg": 4527, "bg": 4512 }, + { "id": "t_tree_season_winter", "fg": 4701, "bg": 4672 }, + { "id": "t_tree_apple", "fg": 4682, "bg": 4674 }, + { "id": "t_tree_apple_season_summer", "fg": 4682, "bg": 4675 }, + { "id": "t_tree_apple_season_winter", "fg": 4687, "bg": 4672 }, { "id": "t_tree_apple_season_autumn", - "fg": [ { "weight": 1, "sprite": 4523 }, { "weight": 1, "sprite": 4524 } ], - "bg": 4513 + "fg": [ { "weight": 1, "sprite": 4683 }, { "weight": 1, "sprite": 4684 } ], + "bg": 4673 }, { "id": "t_tree_apple_harvested", - "fg": [ { "weight": 1, "sprite": 4525 }, { "weight": 1, "sprite": 4526 } ], - "bg": 4513 + "fg": [ { "weight": 1, "sprite": 4685 }, { "weight": 1, "sprite": 4686 } ], + "bg": 4673 }, - { "id": "t_tree_birch", "fg": 4528, "bg": 4514 }, - { "id": "t_tree_birch_season_summer", "fg": 4528, "bg": 4515 }, - { "id": "t_tree_birch_season_winter", "fg": 4531, "bg": 4512 }, + { "id": "t_tree_birch", "fg": 4688, "bg": 4674 }, + { "id": "t_tree_birch_season_summer", "fg": 4688, "bg": 4675 }, + { "id": "t_tree_birch_season_winter", "fg": 4691, "bg": 4672 }, { "id": "t_tree_birch_season_autumn", - "fg": [ { "weight": 1, "sprite": 4529 }, { "weight": 1, "sprite": 4530 } ], - "bg": 4513 + "fg": [ { "weight": 1, "sprite": 4689 }, { "weight": 1, "sprite": 4690 } ], + "bg": 4673 }, - { "id": "t_tree_cherry", "fg": 4532, "bg": 4514 }, - { "id": "t_tree_cherry_season_summer", "fg": 4536, "bg": 4515 }, - { "id": "t_tree_cherry_harvested", "fg": 4535, "bg": 4515 }, - { "id": "t_tree_cherry_season_winter", "fg": 4537, "bg": 4512 }, + { "id": "t_tree_cherry", "fg": 4692, "bg": 4674 }, + { "id": "t_tree_cherry_season_summer", "fg": 4696, "bg": 4675 }, + { "id": "t_tree_cherry_harvested", "fg": 4695, "bg": 4675 }, + { "id": "t_tree_cherry_season_winter", "fg": 4697, "bg": 4672 }, { "id": "t_tree_cherry_season_autumn", - "fg": [ { "weight": 1, "sprite": 4533 }, { "weight": 1, "sprite": 4534 } ], - "bg": 4513 + "fg": [ { "weight": 1, "sprite": 4693 }, { "weight": 1, "sprite": 4694 } ], + "bg": 4673 }, - { "id": "t_tree_cottonwood_season_spring", "fg": 4539, "bg": 4514 }, - { "id": "t_tree_cottonwood_season_summer", "fg": 4540, "bg": 4515 }, - { "id": "t_tree_cottonwood_season_autumn", "fg": 4540, "bg": 4513 }, - { "id": "t_tree_cottonwood_season_winter", "fg": 4541, "bg": 4512 }, + { "id": "t_tree_cottonwood_season_spring", "fg": 4699, "bg": 4674 }, + { "id": "t_tree_cottonwood_season_summer", "fg": 4700, "bg": 4675 }, + { "id": "t_tree_cottonwood_season_autumn", "fg": 4698, "bg": 4673 }, + { "id": "t_tree_cottonwood_season_winter", "fg": 4701, "bg": 4672 }, { "id": "t_tree_dead", - "fg": [ { "weight": 100, "sprite": 4541 }, { "weight": 100, "sprite": 5684 } ], - "bg": 4514 + "fg": [ { "weight": 100, "sprite": 4701 }, { "weight": 100, "sprite": 5844 } ], + "bg": 4674 }, { "id": "t_tree_dead_season_summer", - "fg": [ { "weight": 100, "sprite": 4541 }, { "weight": 100, "sprite": 5684 } ], - "bg": 4515 + "fg": [ { "weight": 100, "sprite": 4701 }, { "weight": 100, "sprite": 5844 } ], + "bg": 4675 }, { "id": "t_tree_dead_season_autumn", - "fg": [ { "weight": 100, "sprite": 4541 }, { "weight": 100, "sprite": 5684 } ], - "bg": 4513 + "fg": [ { "weight": 100, "sprite": 4701 }, { "weight": 100, "sprite": 5844 } ], + "bg": 4673 }, { "id": "t_tree_dead_season_winter", - "fg": [ { "weight": 100, "sprite": 4541 }, { "weight": 100, "sprite": 5684 } ], - "bg": 4512 - }, - { "id": "t_tree_elm_season_spring", "fg": 4543, "bg": 4514 }, - { "id": "t_tree_elm_season_summer", "fg": 4544, "bg": 4515 }, - { "id": "t_tree_elm_season_autumn", "fg": 4542, "bg": 4513 }, - { "id": "t_tree_elm_season_winter", "fg": 4545, "bg": 4512 }, - { "id": "t_tree_maple", "fg": 4547, "bg": 4514 }, - { "id": "t_tree_maple_season_summer", "fg": 4548, "bg": 4515 }, - { "id": "t_tree_maple_season_autumn", "fg": 4546, "bg": 4513 }, - { "id": "t_tree_maple_season_winter", "fg": 4549, "bg": 4512 }, - { "id": "t_tree_peach_season_spring", "fg": 4550, "bg": 4514 }, - { "id": "t_tree_peach_season_summer", "fg": 4553, "bg": 4515 }, - { "id": "t_tree_peach_harvested", "fg": 4550, "bg": 4515 }, - { "id": "t_tree_peach_season_winter", "fg": 4554, "bg": 4512 }, + "fg": [ { "weight": 100, "sprite": 4701 }, { "weight": 100, "sprite": 5844 } ], + "bg": 4672 + }, + { "id": "t_tree_elm_season_spring", "fg": 4703, "bg": 4674 }, + { "id": "t_tree_elm_season_summer", "fg": 4704, "bg": 4675 }, + { "id": "t_tree_elm_season_autumn", "fg": 4702, "bg": 4673 }, + { "id": "t_tree_elm_season_winter", "fg": 4705, "bg": 4672 }, + { "id": "t_tree_maple", "fg": 4707, "bg": 4674 }, + { "id": "t_tree_maple_season_summer", "fg": 4708, "bg": 4675 }, + { "id": "t_tree_maple_season_autumn", "fg": 4706, "bg": 4673 }, + { "id": "t_tree_maple_season_winter", "fg": 4709, "bg": 4672 }, + { "id": "t_tree_peach_season_spring", "fg": 4710, "bg": 4674 }, + { "id": "t_tree_peach_season_summer", "fg": 4713, "bg": 4675 }, + { "id": "t_tree_peach_harvested", "fg": 4710, "bg": 4675 }, + { "id": "t_tree_peach_season_winter", "fg": 4714, "bg": 4672 }, { "id": "t_tree_peach_season_autumn", - "fg": [ { "weight": 1, "sprite": 4551 }, { "weight": 1, "sprite": 4552 } ], - "bg": 4513 - }, - { "id": "t_tree_cottonwood_autumn", "fg": 4538 } + "fg": [ { "weight": 1, "sprite": 4711 }, { "weight": 1, "sprite": 4712 } ], + "bg": 4673 + } ] }, { "file": "incomplete.png", - "//": "range 4560 to 5551", + "//": "range 4720 to 5711", "tiles": [ - { "id": "unknown", "fg": 4560 }, - { "id": "fd_acid", "fg": 4561 }, + { "id": "unknown", "fg": 4720 }, + { "id": "fd_acid", "fg": 4721 }, { "id": "fd_blood", - "fg": 4593, + "fg": 4753, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 4562 }, - { "id": "corner", "fg": [ 4564, 4566, 4565, 4563 ] }, - { "id": "t_connection", "fg": [ 4590, 4592, 4591, 4589 ] }, - { "id": "edge", "fg": [ 4568, 4567 ] }, - { "id": "end_piece", "fg": [ 4570, 4572, 4571, 4569 ] }, - { "id": "unconnected", "fg": [ 4593, 4593 ] } + { "id": "center", "fg": 4722 }, + { "id": "corner", "fg": [ 4724, 4726, 4725, 4723 ] }, + { "id": "t_connection", "fg": [ 4750, 4752, 4751, 4749 ] }, + { "id": "edge", "fg": [ 4728, 4727 ] }, + { "id": "end_piece", "fg": [ 4730, 4732, 4731, 4729 ] }, + { "id": "unconnected", "fg": [ 4753, 4753 ] } ] }, { "id": [ "fd_blood_insect", "fd_blood_invertebrate" ], - "fg": 4588, + "fg": 4748, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 4573 }, - { "id": "corner", "fg": [ 4575, 4577, 4576, 4574 ] }, - { "id": "t_connection", "fg": [ 4585, 4587, 4586, 4584 ] }, - { "id": "edge", "fg": [ 4579, 4578 ] }, - { "id": "end_piece", "fg": [ 4581, 4583, 4582, 4580 ] }, - { "id": "unconnected", "fg": [ 4588, 4588 ] } + { "id": "center", "fg": 4733 }, + { "id": "corner", "fg": [ 4735, 4737, 4736, 4734 ] }, + { "id": "t_connection", "fg": [ 4745, 4747, 4746, 4744 ] }, + { "id": "edge", "fg": [ 4739, 4738 ] }, + { "id": "end_piece", "fg": [ 4741, 4743, 4742, 4740 ] }, + { "id": "unconnected", "fg": [ 4748, 4748 ] } ] }, - { "id": "fd_electricity", "fg": [ { "weight": 100, "sprite": 4595 }, { "weight": 100, "sprite": 4596 } ] }, + { "id": "fd_electricity", "fg": [ { "weight": 100, "sprite": 4755 }, { "weight": 100, "sprite": 4756 } ] }, { "id": "fd_web", "fg": [ - { "weight": 100, "sprite": 4597 }, - { "weight": 100, "sprite": 4598 }, - { "weight": 25, "sprite": 4599 }, - { "weight": 25, "sprite": 4600 } - ] - }, - { "id": "fd_sludge", "fg": 4601 }, - { "id": "fd_smoke", "fg": 4604 }, - { "id": "fd_fungal_haze", "fg": 4603 }, - { "id": "fd_nuke_gas", "fg": 4602 }, - { "id": "fd_spotlight", "fg": 4605 }, - { "id": "f_makeshift_bed", "fg": 4608 }, - { "id": "f_straw_bed", "fg": 4609 }, - { "id": "f_bed_frame", "fg": 4606 }, - { "id": "f_camp_chair", "fg": 4611 }, - { "id": "f_lane", "fg": 4612 }, - { "id": "f_piano", "fg": 4613 }, - { "id": "f_pinball_machine", "fg": 4614 }, - { "id": "f_seat_airplane", "fg": 4615 }, + { "weight": 100, "sprite": 4757 }, + { "weight": 100, "sprite": 4758 }, + { "weight": 25, "sprite": 4759 }, + { "weight": 25, "sprite": 4760 } + ] + }, + { "id": "fd_sludge", "fg": 4761 }, + { "id": "fd_smoke", "fg": 4764 }, + { "id": "fd_fungal_haze", "fg": 4763 }, + { "id": "fd_nuke_gas", "fg": 4762 }, + { "id": "fd_spotlight", "fg": 4765 }, + { "id": "f_makeshift_bed", "fg": 4768 }, + { "id": "f_straw_bed", "fg": 4769 }, + { "id": "f_bed_frame", "fg": 4766 }, + { "id": "f_camp_chair", "fg": 4771 }, + { "id": "f_lane", "fg": 4772 }, + { "id": "f_piano", "fg": 4773 }, + { "id": "f_pinball_machine", "fg": 4774 }, + { "id": "f_seat_airplane", "fg": 4775 }, { "id": "f_sink", "multitile": true, - "fg": 4631, - "additional_tiles": [ - { "id": "center", "fg": 4616 }, - { "id": "corner", "fg": [ 4618, 4620, 4619, 4617 ] }, - { "id": "t_connection", "fg": [ 4628, 4630, 4629, 4627 ] }, - { "id": "edge", "fg": [ 4622, 4621 ] }, - { "id": "end_piece", "fg": [ 4624, 4626, 4625, 4623 ] }, - { "id": "unconnected", "fg": 4631 } - ] - }, - { "id": "f_solar_unit", "fg": 4632 }, - { "id": "f_speaker_cabinet", "fg": 4633 }, - { "id": "f_water_mill", "fg": 4634 }, - { "id": "water_mill", "fg": 4635 }, - { "id": "f_water_purifier", "fg": 4636 }, - { "id": "f_wood_keg", "fg": 4791 }, - { "id": "30gal_barrel", "fg": 4637 }, - { "id": "30gal_drum", "fg": 4638 }, - { "id": "alarmclock", "fg": 4639 }, - { "id": "clock", "fg": 4639 }, - { "id": "anvil", "fg": 4643 }, - { "id": [ "autoclave", "vh_autoclave" ], "fg": 4644 }, - { "id": "bag_canvas_small", "fg": 4645 }, - { "id": "bathroom_scale", "fg": 4646 }, - { "id": "bead_necklace", "fg": 4647 }, - { "id": "brazier", "fg": 4648 }, - { "id": "bubblewrap", "fg": 4649 }, - { "id": "bucket", "fg": 4650 }, - { "id": "camera_pro", "fg": 4652 }, - { "id": "candle", "fg": 4653 }, - { "id": "colt_army", "fg": 4654 }, - { "id": "colt_lightning", "fg": 4655 }, - { "id": "colt_navy", "fg": 4656 }, - { "id": "condom", "fg": 4657 }, - { "id": "corkscrew", "fg": 4658 }, - { "id": "craft", "fg": 4659 }, - { "id": "pomegranate", "fg": 4671 }, - { "id": "peach", "fg": 4669 }, - { "id": "strawberries", "fg": 4672 }, - { "id": "cabbage", "fg": 4660 }, - { "id": "mango", "fg": 4667 }, - { "id": "kiwi", "fg": 4666 }, - { "id": "papaya", "fg": 4668 }, - { "id": "grapefruit", "fg": 4665 }, - { "id": "garlic", "fg": 4664 }, - { "id": "pineapple", "fg": 4670 }, - { "id": "celery", "fg": 4662 }, - { "id": "chili_pepper", "fg": 4663 }, - { "id": "carrot", "fg": 4661 }, - { "id": "zucchini", "fg": 4673 }, - { "id": "akmag30", "fg": 4674 }, - { "id": "duct_tape", "fg": 4675 }, - { "id": "electric_lantern", "fg": 4676 }, - { "id": "extinguisher", "fg": 4677 }, - { "id": "sm_extinguisher", "fg": 4678 }, - { "id": "fan", "fg": 4679 }, - { "id": "flaregun", "fg": 4680 }, - { "id": "signal_flare", "fg": 4681 }, + "fg": 4791, + "additional_tiles": [ + { "id": "center", "fg": 4776 }, + { "id": "corner", "fg": [ 4778, 4780, 4779, 4777 ] }, + { "id": "t_connection", "fg": [ 4788, 4790, 4789, 4787 ] }, + { "id": "edge", "fg": [ 4782, 4781 ] }, + { "id": "end_piece", "fg": [ 4784, 4786, 4785, 4783 ] }, + { "id": "unconnected", "fg": 4791 } + ] + }, + { "id": "f_solar_unit", "fg": 4792 }, + { "id": "f_speaker_cabinet", "fg": 4793 }, + { "id": "f_water_mill", "fg": 4794 }, + { "id": "water_mill", "fg": 4795 }, + { "id": "f_water_purifier", "fg": 4796 }, + { "id": "f_wood_keg", "fg": 4948 }, + { "id": "30gal_barrel", "fg": 4797 }, + { "id": "30gal_drum", "fg": 4798 }, + { "id": "alarmclock", "fg": 4799 }, + { "id": "clock", "fg": 4799 }, + { "id": "anvil", "fg": 4803 }, + { "id": [ "autoclave", "vh_autoclave" ], "fg": 4804 }, + { "id": "bag_canvas_small", "fg": 4805 }, + { "id": "bathroom_scale", "fg": 4806 }, + { "id": "bead_necklace", "fg": 4807 }, + { "id": "brazier", "fg": 4808 }, + { "id": "bubblewrap", "fg": 4809 }, + { "id": "bucket", "fg": 4810 }, + { "id": "camera_pro", "fg": 4812 }, + { "id": "colt_army", "fg": 4813 }, + { "id": "colt_lightning", "fg": 4814 }, + { "id": "colt_navy", "fg": 4815 }, + { "id": "condom", "fg": 4816 }, + { "id": "craft", "fg": 4817 }, + { "id": "pomegranate", "fg": 4829 }, + { "id": "peach", "fg": 4827 }, + { "id": "strawberries", "fg": 4830 }, + { "id": "cabbage", "fg": 4818 }, + { "id": "mango", "fg": 4825 }, + { "id": "kiwi", "fg": 4824 }, + { "id": "papaya", "fg": 4826 }, + { "id": "grapefruit", "fg": 4823 }, + { "id": "garlic", "fg": 4822 }, + { "id": "pineapple", "fg": 4828 }, + { "id": "celery", "fg": 4820 }, + { "id": "chili_pepper", "fg": 4821 }, + { "id": "carrot", "fg": 4819 }, + { "id": "zucchini", "fg": 4831 }, + { "id": "akmag30", "fg": 4832 }, + { "id": "duct_tape", "fg": 4833 }, + { "id": "electric_lantern", "fg": 4834 }, + { "id": "extinguisher", "fg": 4835 }, + { "id": "sm_extinguisher", "fg": 4836 }, + { "id": "fan", "fg": 4837 }, + { "id": "flaregun", "fg": 4838 }, + { "id": "signal_flare", "fg": 4839 }, { "id": [ "deck_of_cards", @@ -6618,42 +6822,42 @@ "battleship", "clue" ], - "fg": 4682 - }, - { "id": "fn_fal", "fg": 4683 }, - { "id": [ "birchbark_funnel", "funnel", "leather_funnel", "makeshift_funnel", "metal_funnel" ], "fg": 4684 }, - { "id": [ "tr_funnel", "tr_makeshift_funnel", "tr_raincatcher" ], "fg": 4685 }, - { "id": "garand", "fg": 4686 }, - { "id": "glock17_17", "fg": 4687 }, - { "id": "hk_mp5", "fg": 4688 }, - { "id": "holy_symbol", "fg": 4689 }, - { "id": "holy_symbol_wood", "fg": 4690 }, - { "id": "hotplate", "fg": 4691 }, - { "id": "jerrycan", "fg": 4692 }, - { "id": "jerrycan_big", "fg": 4693 }, - { "id": "keg", "fg": 4694 }, - { "id": "chopsticks", "fg": 4697 }, - { "id": "cutting_board", "fg": 4700 }, - { "id": "plastic_straw", "fg": 4707 }, - { "id": "xacto", "fg": 4714 }, - { "id": "brush", "fg": 4695 }, - { "id": "comb_pocket", "fg": 4698 }, - { "id": "curling_iron", "fg": 4699 }, - { "id": "elec_hairtrimmer", "fg": 4701 }, - { "id": "hair_dryer", "fg": 4702 }, - { "id": "hairbrush", "fg": 4703 }, - { "id": "metal_file", "fg": 4705 }, - { "id": "mobile_memory_card", "fg": 4706 }, - { "id": "razor_blade", "fg": 4708 }, - { "id": "razor_shaving", "fg": 4709 }, - { "id": "sandpaper", "fg": 4710 }, - { "id": "string_floss", "fg": 4711 }, - { "id": [ "toothbrush_plain", "toothbrush_dirty" ], "fg": 4712 }, - { "id": "tumbler_plastic", "fg": 4713 }, - { "id": "casserole", "fg": 4696 }, + "fg": 4840 + }, + { "id": "fn_fal", "fg": 4841 }, + { "id": [ "birchbark_funnel", "funnel", "leather_funnel", "makeshift_funnel", "metal_funnel" ], "fg": 4842 }, + { "id": [ "tr_funnel", "tr_makeshift_funnel", "tr_raincatcher" ], "fg": 4843 }, + { "id": "garand", "fg": 4844 }, + { "id": "glock17_17", "fg": 4845 }, + { "id": "hk_mp5", "fg": 4846 }, + { "id": "holy_symbol", "fg": 4847 }, + { "id": "holy_symbol_wood", "fg": 4848 }, + { "id": "hotplate", "fg": 4849 }, + { "id": "jerrycan", "fg": 4850 }, + { "id": "jerrycan_big", "fg": 4851 }, + { "id": "keg", "fg": 4852 }, + { "id": "chopsticks", "fg": 4855 }, + { "id": "cutting_board", "fg": 4858 }, + { "id": "plastic_straw", "fg": 4865 }, + { "id": "xacto", "fg": 4872 }, + { "id": "brush", "fg": 4853 }, + { "id": "comb_pocket", "fg": 4856 }, + { "id": "curling_iron", "fg": 4857 }, + { "id": "elec_hairtrimmer", "fg": 4859 }, + { "id": "hair_dryer", "fg": 4860 }, + { "id": "hairbrush", "fg": 4861 }, + { "id": "metal_file", "fg": 4863 }, + { "id": "mobile_memory_card", "fg": 4864 }, + { "id": "razor_blade", "fg": 4866 }, + { "id": "razor_shaving", "fg": 4867 }, + { "id": "sandpaper", "fg": 4868 }, + { "id": "string_floss", "fg": 4869 }, + { "id": [ "toothbrush_plain", "toothbrush_dirty" ], "fg": 4870 }, + { "id": "tumbler_plastic", "fg": 4871 }, + { "id": "casserole", "fg": 4854 }, { "id": [ "hairpin", "fc_hairpin", "gold_hairpin", "platinum_hairpin", "silver_hairpin", "copper_hairpin", "tieclip" ], - "fg": 4704 + "fg": 4862 }, { "id": [ @@ -6806,7 +7010,7 @@ "wine_chardonnay", "drink_martini" ], - "fg": 4715 + "fg": 4873 }, { "id": [ @@ -6847,7 +7051,7 @@ "soup_tomato", "young_yeast" ], - "fg": 4717 + "fg": 4875 }, { "id": [ @@ -6869,62 +7073,62 @@ "hi_q_distillate_tails", "hi_q_distillate" ], - "fg": 4716 - }, - { "id": "longsword", "fg": 4718 }, - { "id": "longsword_inferior", "fg": 4720 }, - { "id": "longsword_fake", "fg": 4719 }, - { "id": "m107a1", "fg": 4721 }, - { "id": "m16a4", "fg": 4722 }, - { "id": "m249", "fg": 4723 }, - { "id": "m60", "fg": 4724 }, - { "id": "mask_gas", "fg": 4725 }, - { "id": "plastic_chunk", "fg": 4726 }, - { "id": "scrap_copper", "fg": 4727 }, - { "id": "mosin91_30", "fg": 4728 }, - { "id": "oil_lamp", "fg": 4729 }, - { "id": "pickaxe", "fg": 4730 }, - { "id": "pitchfork", "fg": 4731 }, - { "id": "plunger_futuristic", "fg": 4732 }, - { "id": "plunger_toilet", "fg": 4733 }, - { "id": "pocketwatch", "fg": 4734 }, - { "id": "bacon", "fg": 4735 }, - { "id": "porkbelly", "fg": 4736 }, - { "id": "raw_cured_fatty_meat", "fg": 4737 }, - { "id": "raw_curing_fatty_meat", "fg": 4738 }, - { "id": "material_sand", "fg": 4765 }, - { "id": "material_soil", "fg": 4767 }, - { "id": "chem_aluminium_powder", "fg": 4739 }, - { "id": "chem_aluminium_sulphate", "fg": 4740 }, - { "id": "chem_ammonium_nitrate", "fg": 4741 }, - { "id": "chem_black_powder", "fg": 4742 }, - { "id": "cac2powder", "fg": 4743 }, - { "id": "chilly-p", "fg": 4744 }, - { "id": "meal_chitin_piece", "fg": 4745 }, - { "id": "chem_chromium_oxide", "fg": 4746 }, - { "id": "coffee_raw", "fg": 4747 }, - { "id": "curry_powder", "fg": 4748 }, - { "id": "powder_eggs", "fg": 4749 }, - { "id": "fungicide", "fg": 4750 }, - { "id": "insecticide", "fg": 4752 }, - { "id": "chem_hmtd", "fg": 4751 }, - { "id": "lemonade_powder", "fg": 4753 }, - { "id": "lye_powder", "fg": 4754 }, - { "id": "magnesium", "fg": 4755 }, - { "id": "chem_manganese_dioxide", "fg": 4756 }, - { "id": "chem_match_head_powder", "fg": 4757 }, - { "id": "mustard_powder", "fg": 4758 }, - { "id": "oxy_powder", "fg": 4759 }, - { "id": "chem_peptone_broth", "fg": 4760 }, - { "id": "protein_powder", "fg": 4761 }, - { "id": "material_quicklime", "fg": 4762 }, - { "id": "chem_rocket_fuel", "fg": 4763 }, - { "id": "chem_saltpetre", "fg": 4764 }, - { "id": "gunpowder", "fg": 4766 }, - { "id": "chem_thermite", "fg": 4768 }, - { "id": "tin", "fg": 4769 }, - { "id": "yeast", "fg": 4771 }, - { "id": "chem_zinc_powder", "fg": 4772 }, + "fg": 4874 + }, + { "id": "longsword", "fg": 4876 }, + { "id": "longsword_inferior", "fg": 4878 }, + { "id": "longsword_fake", "fg": 4877 }, + { "id": "m107a1", "fg": 4879 }, + { "id": "m16a4", "fg": 4880 }, + { "id": "m249", "fg": 4881 }, + { "id": "m60", "fg": 4882 }, + { "id": "mask_gas", "fg": 4883 }, + { "id": "plastic_chunk", "fg": 4884 }, + { "id": "scrap_copper", "fg": 4885 }, + { "id": "mosin91_30", "fg": 4886 }, + { "id": "oil_lamp", "fg": 4887 }, + { "id": "pickaxe", "fg": 4888 }, + { "id": "pitchfork", "fg": 4889 }, + { "id": "plunger_futuristic", "fg": 4890 }, + { "id": "plunger_toilet", "fg": 4891 }, + { "id": "pocketwatch", "fg": 4892 }, + { "id": "bacon", "fg": 4893 }, + { "id": "porkbelly", "fg": 4894 }, + { "id": "raw_cured_fatty_meat", "fg": 4895 }, + { "id": "raw_curing_fatty_meat", "fg": 4896 }, + { "id": "material_sand", "fg": 4923 }, + { "id": "material_soil", "fg": 4925 }, + { "id": "chem_aluminium_powder", "fg": 4897 }, + { "id": "chem_aluminium_sulphate", "fg": 4898 }, + { "id": "chem_ammonium_nitrate", "fg": 4899 }, + { "id": "chem_black_powder", "fg": 4900 }, + { "id": "cac2powder", "fg": 4901 }, + { "id": "chilly-p", "fg": 4902 }, + { "id": "meal_chitin_piece", "fg": 4903 }, + { "id": "chem_chromium_oxide", "fg": 4904 }, + { "id": "coffee_raw", "fg": 4905 }, + { "id": "curry_powder", "fg": 4906 }, + { "id": "powder_eggs", "fg": 4907 }, + { "id": "fungicide", "fg": 4908 }, + { "id": "insecticide", "fg": 4910 }, + { "id": "chem_hmtd", "fg": 4909 }, + { "id": "lemonade_powder", "fg": 4911 }, + { "id": "lye_powder", "fg": 4912 }, + { "id": "magnesium", "fg": 4913 }, + { "id": "chem_manganese_dioxide", "fg": 4914 }, + { "id": "chem_match_head_powder", "fg": 4915 }, + { "id": "mustard_powder", "fg": 4916 }, + { "id": "oxy_powder", "fg": 4917 }, + { "id": "chem_peptone_broth", "fg": 4918 }, + { "id": "protein_powder", "fg": 4919 }, + { "id": "material_quicklime", "fg": 4920 }, + { "id": "chem_rocket_fuel", "fg": 4921 }, + { "id": "chem_saltpetre", "fg": 4922 }, + { "id": "gunpowder", "fg": 4924 }, + { "id": "chem_thermite", "fg": 4926 }, + { "id": "tin", "fg": 4927 }, + { "id": "yeast", "fg": 4929 }, + { "id": "chem_zinc_powder", "fg": 4930 }, { "id": [ "sugar", @@ -6937,829 +7141,828 @@ "quikclot", "chem_acrylamide" ], - "fg": 4770 - }, - { "id": "radio", "fg": 4773 }, - { "id": "ref_lighter", "fg": 4774 }, - { "id": "rhubarb", "fg": 4775 }, - { "id": "rope_6", "fg": 4776 }, - { "id": "soldering_iron", "fg": 4777 }, - { "id": "spray_can", "fg": 4778 }, - { "id": "stanag30", "fg": 4779 }, - { "id": "steel_pan", "fg": 4780 }, - { "id": "stepladder", "fg": 4781 }, - { "id": "stereo", "fg": 4782 }, - { "id": "sunglasses", "fg": 4783 }, - { "id": "sw_610", "fg": 4784 }, - { "id": "toolbox", "fg": 4785 }, - { "id": "waffleiron", "fg": 4786 }, - { "id": "warhammer", "fg": 4787 }, - { "id": "welding_mask", "fg": 4788 }, - { "id": "wind_mill", "fg": 4789 }, - { "id": "wood_beam", "fg": 4790 }, - { "id": "wooden_barrel", "fg": 4791 }, - { "id": "zweihander", "fg": 4792 }, - { "id": "zweihander_inferior", "fg": 4794 }, - { "id": "zweihander_fake", "fg": 4793 }, - { "id": "mon_grenade_hack", "fg": 4801, "bg": 1273 }, - { "id": "mon_mininuke_hack", "fg": 4803, "bg": 1273 }, - { "id": "bot_grenade_hack", "fg": 4795 }, - { "id": "bot_mininuke_hack", "fg": 4796 }, - { "id": "mon_manhack", "fg": 4802, "bg": 1273 }, - { "id": "mon_gasbomb_hack", "fg": 4800, "bg": 1273 }, - { "id": "mon_flashbang_hack", "fg": 4799, "bg": 1273 }, - { "id": "mon_c4_hack", "fg": 4798, "bg": 1273 }, - { "id": "mon_EMP_hack", "fg": 4797, "bg": 1273 }, - { "id": "mon_chicken", "fg": 4804, "bg": 1273 }, - { "id": "mon_cow", "fg": 4805, "bg": 1272 }, - { "id": "mon_deer", "fg": 4806, "bg": 1272 }, - { "id": "mon_frog_giant", "fg": 4807, "bg": 1272 }, - { "id": "mon_grocerybot", "fg": 4808, "bg": 1273 }, - { "id": "mon_grocerybot_busted", "fg": 4809, "bg": 1273 }, - { "id": "mon_horse", "fg": 4810, "bg": 1272 }, - { "id": "mon_spider_widow_giant", "fg": 4811, "bg": 1272 }, - { "id": "infrared_creature", "fg": 4812 }, + "fg": 4928 + }, + { "id": "radio", "fg": 4931 }, + { "id": "ref_lighter", "fg": 4932 }, + { "id": "rhubarb", "fg": 4933 }, + { "id": "rope_6", "fg": 4934 }, + { "id": "soldering_iron", "fg": 4935 }, + { "id": "spray_can", "fg": 4936 }, + { "id": "stanag30", "fg": 4937 }, + { "id": "stepladder", "fg": 4938 }, + { "id": "stereo", "fg": 4939 }, + { "id": "sunglasses", "fg": 4940 }, + { "id": "sw_610", "fg": 4941 }, + { "id": "toolbox", "fg": 4942 }, + { "id": "waffleiron", "fg": 4943 }, + { "id": "warhammer", "fg": 4944 }, + { "id": "welding_mask", "fg": 4945 }, + { "id": "wind_mill", "fg": 4946 }, + { "id": "wood_beam", "fg": 4947 }, + { "id": "wooden_barrel", "fg": 4948 }, + { "id": "zweihander", "fg": 4949 }, + { "id": "zweihander_inferior", "fg": 4951 }, + { "id": "zweihander_fake", "fg": 4950 }, + { "id": "mon_grenade_hack", "fg": 4958, "bg": 1335 }, + { "id": "mon_mininuke_hack", "fg": 4960, "bg": 1335 }, + { "id": "bot_grenade_hack", "fg": 4952 }, + { "id": "bot_mininuke_hack", "fg": 4953 }, + { "id": "mon_manhack", "fg": 4959, "bg": 1335 }, + { "id": "mon_gasbomb_hack", "fg": 4957, "bg": 1335 }, + { "id": "mon_flashbang_hack", "fg": 4956, "bg": 1335 }, + { "id": "mon_c4_hack", "fg": 4955, "bg": 1335 }, + { "id": "mon_EMP_hack", "fg": 4954, "bg": 1335 }, + { "id": "mon_chicken", "fg": 4961, "bg": 1335 }, + { "id": "mon_cow", "fg": 4962, "bg": 1334 }, + { "id": "mon_deer", "fg": 4963, "bg": 1334 }, + { "id": "mon_frog_giant", "fg": 4964, "bg": 1334 }, + { "id": "mon_grocerybot", "fg": 4965, "bg": 1335 }, + { "id": "mon_grocerybot_busted", "fg": 4966, "bg": 1335 }, + { "id": "mon_horse", "fg": 4967, "bg": 1334 }, + { "id": "mon_spider_widow_giant", "fg": 4968, "bg": 1334 }, + { "id": "infrared_creature", "fg": 4969 }, { "id": "weather_rain_drop", "fg": [ - { "weight": 100, "sprite": 4814 }, - { "weight": 100, "sprite": 4816 }, - { "weight": 100, "sprite": 4817 }, - { "weight": 100, "sprite": 4818 }, - { "weight": 100, "sprite": 4819 }, - { "weight": 100, "sprite": 4820 }, - { "weight": 100, "sprite": 4821 }, - { "weight": 100, "sprite": 4822 }, - { "weight": 100, "sprite": 4823 }, - { "weight": 100, "sprite": 4815 } - ] - }, - { "id": "weather_snowflake", "fg": 4824 }, - { "id": "weather_acid_drop", "fg": 4813 }, - { "id": [ "t_card_science", "t_card_robofac" ], "fg": 4829 }, - { "id": "t_card_reader_broken", "fg": 4828 }, - { "id": "t_card_military", "fg": 4827 }, - { "id": "t_card_industrial", "fg": 4826 }, - { "id": "t_card_fp", "fg": 4825 }, - { "id": "t_floor_red", "fg": 4832 }, - { "id": "t_floor_green", "fg": 4831 }, - { "id": "t_floor_blue", "fg": 4830 }, - { "id": [ "t_searth_test", "t_searth" ], "fg": 4833 }, - { "id": "t_current_trans", "fg": 4834, "bg": 2478 }, - { "id": "t_potential_trans", "fg": 4835, "bg": 2478 }, - { "id": "graffiti", "fg": 4836 }, - { "id": "t_floor_olight", "fg": 4837, "bg": 1763 }, - { "id": "t_thconc_floor_olight", "fg": 4837, "bg": 2514 }, - { "id": "t_metal_floor_olight", "fg": 4837, "bg": 2097 }, - { "id": "t_pedestal_wyrm", "fg": 4839, "bg": 2287 }, + { "weight": 100, "sprite": 4971 }, + { "weight": 100, "sprite": 4973 }, + { "weight": 100, "sprite": 4974 }, + { "weight": 100, "sprite": 4975 }, + { "weight": 100, "sprite": 4976 }, + { "weight": 100, "sprite": 4977 }, + { "weight": 100, "sprite": 4978 }, + { "weight": 100, "sprite": 4979 }, + { "weight": 100, "sprite": 4980 }, + { "weight": 100, "sprite": 4972 } + ] + }, + { "id": "weather_snowflake", "fg": 4981 }, + { "id": "weather_acid_drop", "fg": 4970 }, + { "id": [ "t_card_science", "t_card_robofac" ], "fg": 4986 }, + { "id": "t_card_reader_broken", "fg": 4985 }, + { "id": "t_card_military", "fg": 4984 }, + { "id": "t_card_industrial", "fg": 4983 }, + { "id": "t_card_fp", "fg": 4982 }, + { "id": "t_floor_red", "fg": 4989 }, + { "id": "t_floor_green", "fg": 4988 }, + { "id": "t_floor_blue", "fg": 4987 }, + { "id": [ "t_searth_test", "t_searth" ], "fg": 4990 }, + { "id": "t_current_trans", "fg": 4991, "bg": 2620 }, + { "id": "t_potential_trans", "fg": 4992, "bg": 2620 }, + { "id": "graffiti", "fg": 4993 }, + { "id": "t_floor_olight", "fg": 4994, "bg": 1905 }, + { "id": "t_thconc_floor_olight", "fg": 4994, "bg": 2656 }, + { "id": "t_metal_floor_olight", "fg": 4994, "bg": 2239 }, + { "id": "t_pedestal_wyrm", "fg": 4996, "bg": 2429 }, { "id": "t_pedestal_temple", - "fg": [ { "weight": 100, "sprite": 4840 }, { "weight": 100, "sprite": 4838 } ], - "bg": 1675 + "fg": [ { "weight": 100, "sprite": 4997 }, { "weight": 100, "sprite": 4995 } ], + "bg": 1817 }, { "id": "t_pedestal_temple_season_winter", - "fg": [ { "weight": 100, "sprite": 4840 }, { "weight": 100, "sprite": 4838 } ], - "bg": 1362 + "fg": [ { "weight": 100, "sprite": 4997 }, { "weight": 100, "sprite": 4995 } ], + "bg": 1504 }, - { "id": "t_zebra", "fg": 4841 }, - { "id": "t_zebra_season_winter", "fg": 1362 }, + { "id": "t_zebra", "fg": 4998 }, + { "id": "t_zebra_season_winter", "fg": 1504 }, { "id": [ "t_metal_railing", "t_concrete_railing", "t_glass_railing" ], "multitile": true, - "fg": 2232, - "bg": 1549, + "fg": 2374, + "bg": 1691, "additional_tiles": [ - { "id": "center", "bg": 1549, "fg": 2217 }, - { "id": "corner", "bg": 1549, "fg": [ 2219, 2221, 2220, 2218 ] }, - { "id": "t_connection", "bg": 1549, "fg": [ 2229, 2231, 2230, 2228 ] }, - { "id": "edge", "bg": 1549, "fg": [ 2223, 2222 ] }, - { "id": "end_piece", "bg": 1549, "fg": [ 2225, 2227, 2226, 2224 ] }, - { "bg": 1549, "id": "unconnected", "fg": [ 2232, 2232 ] } + { "id": "center", "bg": 1691, "fg": 2359 }, + { "id": "corner", "bg": 1691, "fg": [ 2361, 2363, 2362, 2360 ] }, + { "id": "t_connection", "bg": 1691, "fg": [ 2371, 2373, 2372, 2370 ] }, + { "id": "edge", "bg": 1691, "fg": [ 2365, 2364 ] }, + { "id": "end_piece", "bg": 1691, "fg": [ 2367, 2369, 2368, 2366 ] }, + { "bg": 1691, "id": "unconnected", "fg": [ 2374, 2374 ] } ] }, { "id": "t_chainfence", "multitile": true, "rotates": false, - "fg": 4842, - "bg": 2164, + "fg": 4999, + "bg": 2306, "additional_tiles": [ - { "id": "edge", "bg": 2164, "fg": [ 4843, 4842 ] }, - { "id": "end_piece", "bg": 2164, "fg": [ 4843, 4842, 4843, 4842 ] }, - { "bg": 2164, "id": "unconnected", "fg": 4842 } + { "id": "edge", "bg": 2306, "fg": [ 5000, 4999 ] }, + { "id": "end_piece", "bg": 2306, "fg": [ 5000, 4999, 5000, 4999 ] }, + { "bg": 2306, "id": "unconnected", "fg": 4999 } ] }, { "id": "t_chainfence_season_winter", "multitile": true, "rotates": false, - "fg": 4842, - "bg": 1362, - "additional_tiles": [ - { "id": "edge", "bg": 1362, "fg": [ 4843, 4842 ] }, - { "id": "end_piece", "bg": 1362, "fg": [ 4843, 4842, 4843, 4842 ] }, - { "bg": 1362, "id": "unconnected", "fg": 4842 } - ] - }, - { "id": "t_chaingate_c", "fg": 4845, "bg": 2164 }, - { "id": "t_chaingate_l", "fg": 4846, "bg": 2164 }, - { "id": "t_chaingate_o", "fg": 4847, "bg": 2164 }, - { "id": "t_chainfence_posts", "fg": 4844, "bg": 2164 }, - { "id": "t_chaingate_c_season_winter", "fg": 4845, "bg": 1362 }, - { "id": "t_chaingate_l_season_winter", "fg": 4846, "bg": 1362 }, - { "id": "t_chaingate_o_season_winter", "fg": 4847, "bg": 1362 }, - { "id": "t_chainfence_posts_season_winter", "fg": 4844, "bg": 1362 }, - { "id": "t_console", "fg": 4848 }, - { "id": "t_console_broken", "fg": 4849 }, - { "id": "t_dirtmound", "fg": 4850, "bg": 1866 }, - { "id": "t_dirtmound_season_summer", "fg": 4850, "bg": 1876 }, - { "id": "t_dirtmound_season_autumn", "fg": 4850, "bg": 1871 }, - { "id": "t_dirtmound_season_winter", "fg": 4851 }, - { "id": "t_door_metal_c", "fg": 4852 }, - { "id": "t_door_metal_o", "fg": 4853 }, - { "id": "t_fern", "fg": 4854, "bg": 1866 }, - { "id": "t_fern_harvested", "fg": 4855, "bg": 1866 }, - { "id": "t_fern_season_summer", "fg": 4854, "bg": 1876 }, - { "id": "t_fern_harvested_season_summer", "fg": 4855, "bg": 1876 }, - { "id": "t_fern_season_autumn", "fg": 4854, "bg": 1871 }, - { "id": "t_fern_harvested_season_autumn", "fg": 4855, "bg": 1871 }, - { "id": "t_fern_season_winter", "fg": 4854, "bg": 1361 }, - { "id": "t_fern_harvested_season_winter", "fg": 4855, "bg": 1361 }, + "fg": 4999, + "bg": 1504, + "additional_tiles": [ + { "id": "edge", "bg": 1504, "fg": [ 5000, 4999 ] }, + { "id": "end_piece", "bg": 1504, "fg": [ 5000, 4999, 5000, 4999 ] }, + { "bg": 1504, "id": "unconnected", "fg": 4999 } + ] + }, + { "id": "t_chaingate_c", "fg": 5002, "bg": 2306 }, + { "id": "t_chaingate_l", "fg": 5003, "bg": 2306 }, + { "id": "t_chaingate_o", "fg": 5004, "bg": 2306 }, + { "id": "t_chainfence_posts", "fg": 5001, "bg": 2306 }, + { "id": "t_chaingate_c_season_winter", "fg": 5002, "bg": 1504 }, + { "id": "t_chaingate_l_season_winter", "fg": 5003, "bg": 1504 }, + { "id": "t_chaingate_o_season_winter", "fg": 5004, "bg": 1504 }, + { "id": "t_chainfence_posts_season_winter", "fg": 5001, "bg": 1504 }, + { "id": "t_console", "fg": 5005 }, + { "id": "t_console_broken", "fg": 5006 }, + { "id": "t_dirtmound", "fg": 5007, "bg": 2008 }, + { "id": "t_dirtmound_season_summer", "fg": 5007, "bg": 2018 }, + { "id": "t_dirtmound_season_autumn", "fg": 5007, "bg": 2013 }, + { "id": "t_dirtmound_season_winter", "fg": 5008 }, + { "id": "t_door_metal_c", "fg": 5009 }, + { "id": "t_door_metal_o", "fg": 5010 }, + { "id": "t_fern", "fg": 5011, "bg": 2008 }, + { "id": "t_fern_harvested", "fg": 5012, "bg": 2008 }, + { "id": "t_fern_season_summer", "fg": 5011, "bg": 2018 }, + { "id": "t_fern_harvested_season_summer", "fg": 5012, "bg": 2018 }, + { "id": "t_fern_season_autumn", "fg": 5011, "bg": 2013 }, + { "id": "t_fern_harvested_season_autumn", "fg": 5012, "bg": 2013 }, + { "id": "t_fern_season_winter", "fg": 5011, "bg": 1503 }, + { "id": "t_fern_harvested_season_winter", "fg": 5012, "bg": 1503 }, { "id": [ "t_junk_palisade", "t_junk_wall" ], "fg": [ - { "weight": 100, "sprite": 4856 }, - { "weight": 100, "sprite": 4857 }, - { "weight": 100, "sprite": 4858 }, - { "weight": 100, "sprite": 4859 } + { "weight": 100, "sprite": 5013 }, + { "weight": 100, "sprite": 5014 }, + { "weight": 100, "sprite": 5015 }, + { "weight": 100, "sprite": 5016 } ] }, { "id": "t_paper", - "fg": 4875, + "fg": 5032, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 4860 }, - { "id": "corner", "fg": [ 4862, 4864, 4863, 4861 ] }, - { "id": "t_connection", "fg": [ 4872, 4874, 4873, 4871 ] }, - { "id": "edge", "fg": [ 4866, 4865 ] }, - { "id": "end_piece", "fg": [ 4868, 4870, 4869, 4867 ] }, - { "id": "unconnected", "fg": [ 4875, 4875 ] } + { "id": "center", "fg": 5017 }, + { "id": "corner", "fg": [ 5019, 5021, 5020, 5018 ] }, + { "id": "t_connection", "fg": [ 5029, 5031, 5030, 5028 ] }, + { "id": "edge", "fg": [ 5023, 5022 ] }, + { "id": "end_piece", "fg": [ 5025, 5027, 5026, 5024 ] }, + { "id": "unconnected", "fg": [ 5032, 5032 ] } ] }, - { "id": "t_reinforced_glass_shutter", "fg": 4877 }, - { "id": "t_reinforced_glass_shutter_open", "fg": 4878 }, + { "id": "t_reinforced_glass_shutter", "fg": 5034 }, + { "id": "t_reinforced_glass_shutter_open", "fg": 5035 }, { "id": "t_sandbox", - "fg": 4894, + "fg": 5051, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 4879 }, - { "id": "corner", "fg": [ 4881, 4883, 4882, 4880 ] }, - { "id": "t_connection", "fg": [ 4891, 4893, 4892, 4890 ] }, - { "id": "edge", "fg": [ 4885, 4884 ] }, - { "id": "end_piece", "fg": [ 4887, 4889, 4888, 4886 ] }, - { "id": "unconnected", "fg": [ 4894, 4894 ] } + { "id": "center", "fg": 5036 }, + { "id": "corner", "fg": [ 5038, 5040, 5039, 5037 ] }, + { "id": "t_connection", "fg": [ 5048, 5050, 5049, 5047 ] }, + { "id": "edge", "fg": [ 5042, 5041 ] }, + { "id": "end_piece", "fg": [ 5044, 5046, 5045, 5043 ] }, + { "id": "unconnected", "fg": [ 5051, 5051 ] } ] }, - { "id": "t_slot_machine", "fg": 4895, "bg": 1763 }, - { "id": "t_strconc_wall", "fg": 4896 }, + { "id": "t_slot_machine", "fg": 5052, "bg": 1905 }, + { "id": "t_strconc_wall", "fg": 5053 }, { "id": "t_trunk", "multitile": true, - "fg": [ 4898, 4897 ], - "bg": [ { "weight": 100, "sprite": 1866 }, { "weight": 100, "sprite": 1868 } ] + "fg": [ 5055, 5054 ], + "bg": [ { "weight": 100, "sprite": 2008 }, { "weight": 100, "sprite": 2010 } ] }, { "id": "t_trunk_season_summer", "multitile": true, - "fg": [ 4898, 4897 ], - "bg": [ { "weight": 100, "sprite": 1876 }, { "weight": 100, "sprite": 1878 } ] + "fg": [ 5055, 5054 ], + "bg": [ { "weight": 100, "sprite": 2018 }, { "weight": 100, "sprite": 2020 } ] }, { "id": "t_trunk_season_autumn", "multitile": true, - "fg": [ 4898, 4897 ], - "bg": [ { "weight": 100, "sprite": 1871 }, { "weight": 100, "sprite": 1873 } ] + "fg": [ 5055, 5054 ], + "bg": [ { "weight": 100, "sprite": 2013 }, { "weight": 100, "sprite": 2015 } ] }, - { "id": "t_trunk_season_winter", "multitile": true, "fg": [ 4898, 4897 ], "bg": 1362 }, - { "id": "t_wall_half", "fg": 4899, "bg": 1763 }, - { "id": "t_wall_metal", "fg": 4900 }, + { "id": "t_trunk_season_winter", "multitile": true, "fg": [ 5055, 5054 ], "bg": 1504 }, + { "id": "t_wall_half", "fg": 5056, "bg": 1905 }, + { "id": "t_wall_metal", "fg": 5057 }, { "id": "t_wax", - "fg": 4916, + "fg": 5073, "multitile": true, "additional_tiles": [ - { "id": "center", "fg": 4901 }, - { "id": "corner", "fg": [ 4903, 4905, 4904, 4902 ] }, - { "id": "t_connection", "fg": [ 4913, 4915, 4914, 4912 ] }, - { "id": "edge", "fg": [ 4907, 4906 ] }, - { "id": "end_piece", "fg": [ 4909, 4911, 4910, 4908 ] }, - { "id": "unconnected", "fg": [ 4916, 4916 ] } + { "id": "center", "fg": 5058 }, + { "id": "corner", "fg": [ 5060, 5062, 5061, 5059 ] }, + { "id": "t_connection", "fg": [ 5070, 5072, 5071, 5069 ] }, + { "id": "edge", "fg": [ 5064, 5063 ] }, + { "id": "end_piece", "fg": [ 5066, 5068, 5067, 5065 ] }, + { "id": "unconnected", "fg": [ 5073, 5073 ] } ] }, - { "id": [ "t_window_boarded", "t_window_boarded_noglass" ], "fg": 4917, "bg": 2815 }, - { "id": "t_window_frame", "fg": 4918 }, - { "id": [ "t_window_reinforced", "t_window_reinforced_noglass" ], "fg": 4919, "bg": 2815 }, - { "id": "t_pit_glass", "fg": 1041, "bg": 2184 }, - { "id": "t_pit_spiked", "fg": 1117, "bg": 2184 }, - { "id": "tr_firewood_source", "fg": 4920 }, - { "id": "tr_unfinished_construction", "fg": 4921 }, + { "id": [ "t_window_boarded", "t_window_boarded_noglass" ], "fg": 5074, "bg": 2957 }, + { "id": "t_window_frame", "fg": 5075 }, + { "id": [ "t_window_reinforced", "t_window_reinforced_noglass" ], "fg": 5076, "bg": 2957 }, + { "id": "t_pit_glass", "fg": 1107, "bg": 2326 }, + { "id": "t_pit_spiked", "fg": 1177, "bg": 2326 }, + { "id": "tr_firewood_source", "fg": 5077 }, + { "id": "tr_unfinished_construction", "fg": 5078 }, { "id": "vp_board_ne", - "fg": [ 4926, 4929, 4928, 4927 ], + "fg": [ 5083, 5086, 5085, 5084 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4926, 4929, 4928, 4927 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5083, 5086, 5085, 5084 ] } ] }, { "id": "vp_board_nw", - "fg": [ 4930, 4933, 4932, 4931 ], + "fg": [ 5087, 5090, 5089, 5088 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4930, 4933, 4932, 4931 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5087, 5090, 5089, 5088 ] } ] }, { "id": "vp_board_se", - "fg": [ 4934, 4936, 4930, 4935 ], + "fg": [ 5091, 5093, 5087, 5092 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4934, 4936, 4930, 4935 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5091, 5093, 5087, 5092 ] } ] }, { "id": "vp_board_sw", - "fg": [ 4937, 4939, 4926, 4938 ], + "fg": [ 5094, 5096, 5083, 5095 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4937, 4939, 4926, 4938 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5094, 5096, 5083, 5095 ] } ] }, { "id": "vp_board_vertical_left", - "fg": [ 4940, 4942, 4943, 4941 ], + "fg": [ 5097, 5099, 5100, 5098 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4940, 4942, 4943, 4941 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5097, 5099, 5100, 5098 ] } ] }, { "id": "vp_board_vertical_right", - "fg": [ 4943, 4941, 4940, 4942 ], + "fg": [ 5100, 5098, 5097, 5099 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4943, 4941, 4940, 4942 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5100, 5098, 5097, 5099 ] } ] }, { "id": [ "vp_board_horizontal", "vp_board_horizontal_2" ], - "fg": 4922, + "fg": 5079, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 4922 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5079 } ] }, { "id": "vp_board_horizontal_front", - "fg": [ 4922, 4924, 4922, 4923 ], + "fg": [ 5079, 5081, 5079, 5080 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4922, 4924, 4922, 4923 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5079, 5081, 5079, 5080 ] } ] }, { "id": "vp_board_horizontal_rear", - "fg": [ 4925, 4923, 4922, 4924 ], + "fg": [ 5082, 5080, 5079, 5081 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4925, 4923, 4922, 4924 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5082, 5080, 5079, 5081 ] } ] }, { "id": [ "vp_board_vertical", "vp_board_vertical_2" ], - "fg": 4940, + "fg": 5097, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 4940 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5097 } ] }, { "id": "vp_hdboard_ne", - "fg": [ 5004, 5007, 5006, 5005 ], + "fg": [ 5161, 5164, 5163, 5162 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5004, 5007, 5006, 5005 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5161, 5164, 5163, 5162 ] } ] }, { "id": "vp_hdboard_nw", - "fg": [ 5008, 5011, 5010, 5009 ], + "fg": [ 5165, 5168, 5167, 5166 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5008, 5011, 5010, 5009 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5165, 5168, 5167, 5166 ] } ] }, { "id": "vp_hdboard_se", - "fg": [ 5012, 5014, 5008, 5013 ], + "fg": [ 5169, 5171, 5165, 5170 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5012, 5014, 5008, 5013 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5169, 5171, 5165, 5170 ] } ] }, { "id": "vp_hdboard_sw", - "fg": [ 5015, 5017, 5004, 5016 ], + "fg": [ 5172, 5174, 5161, 5173 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5015, 5017, 5004, 5016 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5172, 5174, 5161, 5173 ] } ] }, { "id": "vp_hdboard_vertical_left", - "fg": [ 5018, 5020, 5019, 5020 ], + "fg": [ 5175, 5177, 5176, 5177 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5018, 5020, 5019, 5020 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5175, 5177, 5176, 5177 ] } ] }, { "id": "vp_hdboard_vertical_right", - "fg": [ 5019, 5020, 5018, 5020 ], + "fg": [ 5176, 5177, 5175, 5177 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5019, 5020, 5018, 5020 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5176, 5177, 5175, 5177 ] } ] }, { "id": [ "vp_hdboard_horizontal", "vp_hdboard_horizontal_2" ], - "fg": 5000, + "fg": 5157, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5000 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5157 } ] }, { "id": "vp_hdboard_horizontal_front", - "fg": [ 5000, 5002, 5000, 5001 ], + "fg": [ 5157, 5159, 5157, 5158 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5000, 5002, 5000, 5001 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5157, 5159, 5157, 5158 ] } ] }, { "id": "vp_hdboard_horizontal_rear", - "fg": [ 5003, 5001, 5000, 5002 ], + "fg": [ 5160, 5158, 5157, 5159 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5003, 5001, 5000, 5002 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5160, 5158, 5157, 5159 ] } ] }, { "id": [ "vp_hdboard_vertical", "vp_hdboard_vertical_2" ], - "fg": 5018, + "fg": 5175, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5018 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5175 } ] }, { "id": "vp_halfboard_ne", - "fg": [ 4965, 4968, 4967, 4966 ], + "fg": [ 5122, 5125, 5124, 5123 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4965, 4968, 4967, 4966 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5122, 5125, 5124, 5123 ] } ] }, { "id": "vp_halfboard_nw", - "fg": [ 4969, 4972, 4971, 4970 ], + "fg": [ 5126, 5129, 5128, 5127 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4969, 4972, 4971, 4970 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5126, 5129, 5128, 5127 ] } ] }, { "id": "vp_halfboard_se", - "fg": [ 4973, 4976, 4975, 4974 ], + "fg": [ 5130, 5133, 5132, 5131 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4973, 4976, 4975, 4974 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5130, 5133, 5132, 5131 ] } ] }, { "id": "vp_halfboard_sw", - "fg": [ 4977, 4980, 4979, 4978 ], + "fg": [ 5134, 5137, 5136, 5135 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4977, 4980, 4979, 4978 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5134, 5137, 5136, 5135 ] } ] }, { "id": "vp_halfboard_vertical_left", - "fg": [ 4988, 4990, 4991, 4989 ], + "fg": [ 5145, 5147, 5148, 5146 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4988, 4990, 4991, 4989 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5145, 5147, 5148, 5146 ] } ] }, { "id": "vp_halfboard_vertical_2_left", - "fg": [ 4982, 4984, 4985, 4983 ], + "fg": [ 5139, 5141, 5142, 5140 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4982, 4984, 4985, 4983 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5139, 5141, 5142, 5140 ] } ] }, { "id": "vp_halfboard_vertical_right", - "fg": [ 4991, 4989, 4988, 4990 ], + "fg": [ 5148, 5146, 5145, 5147 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4991, 4989, 4988, 4990 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5148, 5146, 5145, 5147 ] } ] }, { "id": "vp_halfboard_vertical_2_right", - "fg": [ 4985, 4987, 4982, 4986 ], + "fg": [ 5142, 5144, 5139, 5143 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4985, 4987, 4982, 4986 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5142, 5144, 5139, 5143 ] } ] }, { "id": "vp_halfboard_vertical_t_left", - "fg": [ 4993, 4995, 4994, 4992 ], + "fg": [ 5150, 5152, 5151, 5149 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4993, 4995, 4994, 4992 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5150, 5152, 5151, 5149 ] } ] }, { "id": "vp_halfboard_vertical_t_right", - "fg": [ 4997, 4999, 4998, 4996 ], + "fg": [ 5154, 5156, 5155, 5153 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4997, 4999, 4998, 4996 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5154, 5156, 5155, 5153 ] } ] }, { "id": [ "vp_halfboard_horizontal", "vp_halfboard_horizontal_2" ], - "fg": 4948, + "fg": 5105, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 4948 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5105 } ] }, { "id": "vp_halfboard_horizontal_front", - "fg": [ 4957, 4960, 4959, 4958 ], + "fg": [ 5114, 5117, 5116, 5115 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4957, 4960, 4959, 4958 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5114, 5117, 5116, 5115 ] } ] }, { "id": "vp_halfboard_horizontal_2_front", - "fg": [ 4949, 4952, 4951, 4950 ], + "fg": [ 5106, 5109, 5108, 5107 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4949, 4952, 4951, 4950 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5106, 5109, 5108, 5107 ] } ] }, { "id": "vp_halfboard_horizontal_rear", - "fg": [ 4961, 4964, 4963, 4962 ], + "fg": [ 5118, 5121, 5120, 5119 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4961, 4964, 4963, 4962 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5118, 5121, 5120, 5119 ] } ] }, { "id": "vp_halfboard_horizontal_2_rear", - "fg": [ 4953, 4956, 4955, 4954 ], + "fg": [ 5110, 5113, 5112, 5111 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4953, 4956, 4955, 4954 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5110, 5113, 5112, 5111 ] } ] }, { "id": [ "vp_halfboard_vertical", "vp_halfboard_vertical_2" ], - "fg": 4981, + "fg": 5138, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 4981 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5138 } ] }, { "id": "vp_halfboard_cover", - "fg": [ 4944, 4947, 4946, 4945 ], + "fg": [ 5101, 5104, 5103, 5102 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 4944, 4947, 4946, 4945 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5101, 5104, 5103, 5102 ] } ] }, { "id": "vp_hdhalfboard_ne", - "fg": 5035, + "fg": 5192, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5035 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5192 } ] }, { "id": "vp_hdhalfboard_nw", - "fg": 5036, + "fg": 5193, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5036 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5193 } ] }, { "id": "vp_hdhalfboard_se", - "fg": 5037, + "fg": 5194, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5037 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5194 } ] }, { "id": "vp_hdhalfboard_sw", - "fg": 5038, + "fg": 5195, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5038 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5195 } ] }, { "id": "vp_hdhalfboard_vertical_left", - "fg": 5043, + "fg": 5200, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5043 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5200 } ] }, { "id": "vp_hdhalfboard_vertical_right", - "fg": 5044, + "fg": 5201, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5044 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5201 } ] }, { "id": "vp_hdhalfboard_horizontal", - "fg": 5030, + "fg": 5187, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5030 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5187 } ] }, { "id": "vp_hdhalfboard_horizontal_2", - "fg": 5025, + "fg": 5182, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5025 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5182 } ] }, { "id": "vp_hdhalfboard_horizontal_front", - "fg": [ 5030, 5033, 5032, 5031 ], + "fg": [ 5187, 5190, 5189, 5188 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5030, 5033, 5032, 5031 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5187, 5190, 5189, 5188 ] } ] }, { "id": "vp_hdhalfboard_horizontal_2_front", - "fg": [ 5025, 5028, 5027, 5026 ], + "fg": [ 5182, 5185, 5184, 5183 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5025, 5028, 5027, 5026 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5182, 5185, 5184, 5183 ] } ] }, { "id": "vp_hdhalfboard_horizontal_rear", - "fg": [ 5034, 5031, 5030, 5033 ], + "fg": [ 5191, 5188, 5187, 5190 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5034, 5031, 5030, 5033 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5191, 5188, 5187, 5190 ] } ] }, { "id": "vp_hdhalfboard_horizontal_2_rear", - "fg": [ 5029, 5026, 5025, 5028 ], + "fg": [ 5186, 5183, 5182, 5185 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5029, 5026, 5025, 5028 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5186, 5183, 5182, 5185 ] } ] }, { "id": "vp_hdhalfboard_vertical", - "fg": 5039, + "fg": 5196, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5039 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5196 } ] }, { "id": "vp_hdhalfboard_vertical_2", - "fg": 5040, + "fg": 5197, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5040 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5197 } ] }, { "id": "vp_hdhalfboard_vertical_2_left", - "fg": 5041, + "fg": 5198, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5041 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5198 } ] }, { "id": "vp_hdhalfboard_vertical_2_right", - "fg": 5042, + "fg": 5199, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5042 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5199 } ] }, { "id": "vp_hdhalfboard_cover", - "fg": [ 5021, 5024, 5023, 5022 ], + "fg": [ 5178, 5181, 5180, 5179 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5021, 5024, 5023, 5022 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5178, 5181, 5180, 5179 ] } ] }, { "id": "vp_xlhalfboard_ne", - "fg": [ 5054, 5057, 5056, 5055 ], + "fg": [ 5211, 5214, 5213, 5212 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5054, 5057, 5056, 5055 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5211, 5214, 5213, 5212 ] } ] }, { "id": "vp_xlhalfboard_nw", - "fg": [ 5058, 5061, 5060, 5059 ], + "fg": [ 5215, 5218, 5217, 5216 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5058, 5061, 5060, 5059 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5215, 5218, 5217, 5216 ] } ] }, { "id": "vp_xlhalfboard_se", - "fg": 5062, + "fg": 5219, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5062 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5219 } ] }, { "id": "vp_xlhalfboard_sw", - "fg": 5063, + "fg": 5220, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5063 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5220 } ] }, { "id": "vp_xlhalfboard_vertical_left", - "fg": 5065, + "fg": 5222, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5065 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5222 } ] }, { "id": "vp_xlhalfboard_vertical_right", - "fg": 5066, + "fg": 5223, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5066 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5223 } ] }, { "id": [ "vp_xlhalfboard_horizontal", "vp_xlhalfboard_horizontal_2" ], - "fg": 5049, + "fg": 5206, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5049 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5206 } ] }, { "id": "vp_xlhalfboard_horizontal_front", - "fg": [ 5049, 5052, 5051, 5050 ], + "fg": [ 5206, 5209, 5208, 5207 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5049, 5052, 5051, 5050 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5206, 5209, 5208, 5207 ] } ] }, { "id": "vp_xlhalfboard_horizontal_rear", - "fg": 5053, + "fg": 5210, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5053 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5210 } ] }, { "id": [ "vp_xlhalfboard_vertical", "vp_xlhalfboard_vertical_2" ], - "fg": 5064, + "fg": 5221, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5064 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5221 } ] }, { "id": "vp_xlhalfboard_cover", - "fg": [ 5045, 5048, 5047, 5046 ], + "fg": [ 5202, 5205, 5204, 5203 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5045, 5048, 5047, 5046 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5202, 5205, 5204, 5203 ] } ] }, { "id": "vp_stowboard_ne", - "fg": [ 5095, 5098, 5097, 5096 ], + "fg": [ 5252, 5255, 5254, 5253 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5095, 5098, 5097, 5096 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5252, 5255, 5254, 5253 ] } ] }, { "id": "vp_stowboard_nw", - "fg": [ 5099, 5102, 5101, 5100 ], + "fg": [ 5256, 5259, 5258, 5257 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5099, 5102, 5101, 5100 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5256, 5259, 5258, 5257 ] } ] }, { "id": "vp_stowboard_se", - "fg": [ 5103, 5105, 5099, 5104 ], + "fg": [ 5260, 5262, 5256, 5261 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5103, 5105, 5099, 5104 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5260, 5262, 5256, 5261 ] } ] }, { "id": "vp_stowboard_sw", - "fg": [ 5106, 5108, 5095, 5107 ], + "fg": [ 5263, 5265, 5252, 5264 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5106, 5108, 5095, 5107 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5263, 5265, 5252, 5264 ] } ] }, { "id": "vp_stowboard_vertical_left", - "fg": [ 5109, 5111, 5112, 5110 ], + "fg": [ 5266, 5268, 5269, 5267 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5109, 5111, 5112, 5110 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5266, 5268, 5269, 5267 ] } ] }, { "id": "vp_stowboard_vertical_right", - "fg": [ 5112, 5110, 5109, 5111 ], + "fg": [ 5269, 5267, 5266, 5268 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5112, 5110, 5109, 5111 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5269, 5267, 5266, 5268 ] } ] }, { "id": [ "vp_stowboard_horizontal", "vp_stowboard_horizontal_2" ], - "fg": 5090, + "fg": 5247, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5090 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5247 } ] }, { "id": "vp_stowboard_horizontal_front", - "fg": [ 5090, 5093, 5092, 5091 ], + "fg": [ 5247, 5250, 5249, 5248 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5090, 5093, 5092, 5091 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5247, 5250, 5249, 5248 ] } ] }, { "id": "vp_stowboard_horizontal_rear", - "fg": [ 5094, 5091, 5090, 5093 ], + "fg": [ 5251, 5248, 5247, 5250 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5094, 5091, 5090, 5093 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5251, 5248, 5247, 5250 ] } ] }, { "id": "vp_stowboard_vertical", - "fg": 5110, + "fg": 5267, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5110 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5267 } ] }, { "id": "vp_hdstowboard_ne", - "fg": [ 5072, 5075, 5074, 5073 ], + "fg": [ 5229, 5232, 5231, 5230 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5072, 5075, 5074, 5073 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5229, 5232, 5231, 5230 ] } ] }, { "id": "vp_hdstowboard_nw", - "fg": [ 5076, 5079, 5078, 5077 ], + "fg": [ 5233, 5236, 5235, 5234 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5076, 5079, 5078, 5077 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5233, 5236, 5235, 5234 ] } ] }, { "id": "vp_hdstowboard_se", - "fg": [ 5080, 5082, 5076, 5081 ], + "fg": [ 5237, 5239, 5233, 5238 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5080, 5082, 5076, 5081 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5237, 5239, 5233, 5238 ] } ] }, { "id": "vp_hdstowboard_sw", - "fg": [ 5083, 5085, 5072, 5084 ], + "fg": [ 5240, 5242, 5229, 5241 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5083, 5085, 5072, 5084 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5240, 5242, 5229, 5241 ] } ] }, { "id": "vp_hdstowboard_vertical_left", - "fg": [ 5086, 5088, 5089, 5087 ], + "fg": [ 5243, 5245, 5246, 5244 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5086, 5088, 5089, 5087 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5243, 5245, 5246, 5244 ] } ] }, { "id": "vp_hdstowboard_vertical_right", - "fg": [ 5089, 5087, 5086, 5088 ], + "fg": [ 5246, 5244, 5243, 5245 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5089, 5087, 5086, 5088 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5246, 5244, 5243, 5245 ] } ] }, { "id": [ "vp_hdstowboard_horizontal", "vp_hdstowboard_horizontal_2" ], - "fg": 5067, + "fg": 5224, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5067 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5224 } ] }, { "id": "vp_hdstowboard_horizontal_front", - "fg": [ 5067, 5070, 5069, 5068 ], + "fg": [ 5224, 5227, 5226, 5225 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5067, 5070, 5069, 5068 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5224, 5227, 5226, 5225 ] } ] }, { "id": "vp_hdstowboard_horizontal_rear", - "fg": [ 5071, 5068, 5067, 5070 ], + "fg": [ 5228, 5225, 5224, 5227 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5071, 5068, 5067, 5070 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5228, 5225, 5224, 5227 ] } ] }, { "id": "vp_hdstowboard_vertical", - "fg": 5087, + "fg": 5244, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5087 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5244 } ] }, { "id": "vp_woodboard_ne", - "fg": [ 5117, 5118, 5123, 5124 ], + "fg": [ 5274, 5275, 5280, 5281 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5117, 5118, 5123, 5124 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5274, 5275, 5280, 5281 ] } ] }, { "id": "vp_woodboard_nw", - "fg": [ 5119, 5120, 5121, 5122 ], + "fg": [ 5276, 5277, 5278, 5279 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5119, 5120, 5121, 5122 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5276, 5277, 5278, 5279 ] } ] }, { "id": "vp_woodboard_se", - "fg": [ 5121, 5122, 5119, 5120 ], + "fg": [ 5278, 5279, 5276, 5277 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5121, 5122, 5119, 5120 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5278, 5279, 5276, 5277 ] } ] }, { "id": "vp_woodboard_sw", - "fg": [ 5123, 5124, 5117, 5118 ], + "fg": [ 5280, 5281, 5274, 5275 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5123, 5124, 5117, 5118 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5280, 5281, 5274, 5275 ] } ] }, { "id": "vp_woodboard_vertical_left", - "fg": [ 5125, 5115, 5126, 5113 ], + "fg": [ 5282, 5272, 5283, 5270 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5125, 5115, 5126, 5113 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5282, 5272, 5283, 5270 ] } ] }, { "id": "vp_woodboard_vertical_right", - "fg": [ 5126, 5113, 5125, 5115 ], + "fg": [ 5283, 5270, 5282, 5272 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5126, 5113, 5125, 5115 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5283, 5270, 5282, 5272 ] } ] }, { "id": [ "vp_woodboard_horizontal", "vp_woodboard_vertical", "vp_woodboard_horizontal_front" ], - "fg": [ 5113, 5114, 5115, 5116 ], + "fg": [ 5270, 5271, 5272, 5273 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5113, 5114, 5115, 5116 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5270, 5271, 5272, 5273 ] } ] }, { "id": "vp_woodboard_horizontal_rear", - "fg": [ 5115, 5116, 5113, 5114 ], + "fg": [ 5272, 5273, 5270, 5271 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5115, 5116, 5113, 5114 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5272, 5273, 5270, 5271 ] } ] }, { "id": [ "vp_woodhalfboard_ne" ], - "fg": 5131, + "fg": 5288, "rotates": true, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5131 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5288 } ] }, { "id": "vp_woodhalfboard_nw", - "fg": 5130, + "fg": 5287, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5130 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5287 } ] }, { "id": "vp_woodhalfboard_se", - "fg": 5135, + "fg": 5292, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5135 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5292 } ] }, { "id": "vp_woodhalfboard_sw", - "fg": 5134, + "fg": 5291, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5134 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5291 } ] }, { "id": [ "vp_woodhalfboard_vertical_left", "vp_woodhalfboard_vertical_2_left", "vp_woodhalfboard_vertical_T_left" ], - "fg": 5132, + "fg": 5289, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5132 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5289 } ] }, { "id": [ "vp_woodhalfboard_vertical_right", "vp_woodhalfboard_vertical_2_right", "vp_woodhalfboard_vertical_T_right" ], - "fg": 5136, + "fg": 5293, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5136 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5293 } ] }, { "id": [ @@ -7768,934 +7971,934 @@ "vp_woodhalfboard_horizontal_front", "vp_woodhalfboard_horizontal_2_front" ], - "fg": 5129, + "fg": 5286, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5129 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5286 } ] }, { "id": [ "vp_woodhalfboard_horizontal_rear", "vp_woodhalfboard_horizontal_2_rear" ], - "fg": 5133, + "fg": 5290, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5133 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5290 } ] }, { "id": [ "vp_woodhalfboard", "vp_woodhalfboard_cross", "vp_woodhalfboard_vertical", "vp_woodhalfboard_vertical_2" ], - "fg": 5128, + "fg": 5285, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5128 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5285 } ] }, { "id": [ "vp_woodhalfboard_cover" ], - "fg": 5127, + "fg": 5284, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5127 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5284 } ] }, { "id": [ "vp_basketsm", "vp_basketsm_external" ], - "fg": [ 5148, 5147 ], + "fg": [ 5305, 5304 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5148, 5147 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5305, 5304 ] } ] }, { "id": "vp_basketsm_bike_rear", - "fg": [ 5144, 5146, 5145, 5143 ], + "fg": [ 5301, 5303, 5302, 5300 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5144, 5146, 5145, 5143 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5301, 5303, 5302, 5300 ] } ] }, { "id": [ "vp_basketlg", "vp_basketlg_external" ], - "fg": [ 5142, 5141 ], + "fg": [ 5299, 5298 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5142, 5141 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5299, 5298 ] } ] }, { "id": "vp_basketlg_cart", - "fg": [ 5138, 5140, 5139, 5137 ], + "fg": [ 5295, 5297, 5296, 5294 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5138, 5140, 5139, 5137 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5295, 5297, 5296, 5294 ] } ] }, { "id": "vp_box", - "fg": [ 5149, 5150 ], + "fg": [ 5306, 5307 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5149, 5150 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5306, 5307 ] } ] }, { "id": "vp_wood box", - "fg": [ 5159, 5158 ], + "fg": [ 5316, 5315 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5159, 5158 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5316, 5315 ] } ] }, { "id": "vp_box_wheelbarrow", - "fg": [ 5152, 5154, 5153, 5151 ], + "fg": [ 5309, 5311, 5310, 5308 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5152, 5154, 5153, 5151 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5309, 5311, 5310, 5308 ] } ] }, { "id": "vp_trunk", - "fg": 5156, + "fg": 5313, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5156 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5313 } ] }, { "id": "vp_trunk_rear_edge", - "fg": 5157, + "fg": 5314, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5157 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5314 } ] }, { "id": [ "vp_cargo_space", "animal_compartment" ], - "fg": 5155, + "fg": 5312, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5155 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5312 } ] }, { "id": "vp_door_internal", - "fg": [ 5184, 5188, 5186, 5182 ], + "fg": [ 5341, 5345, 5343, 5339 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5185, 5189, 5187, 5183 ] }, { "id": "broken", "fg": 5163, "bg": [ 5185, 5189, 5187, 5183 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5342, 5346, 5344, 5340 ] }, { "id": "broken", "fg": 5320, "bg": [ 5342, 5346, 5344, 5340 ] } ] }, { "id": [ "vp_door", "vp_door_sliding" ], - "fg": 5180, + "fg": 5337, "multitile": true, - "additional_tiles": [ { "id": "open", "fg": 5181 }, { "id": "broken", "fg": 5163, "bg": 5180 } ] + "additional_tiles": [ { "id": "open", "fg": 5338 }, { "id": "broken", "fg": 5320, "bg": 5337 } ] }, { "id": "vp_door_front", - "fg": [ 5172, 5179, 5178, 5177 ], + "fg": [ 5329, 5336, 5335, 5334 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5174, 5176, 5175, 5173 ] }, { "id": "broken", "fg": 5163, "bg": [ 5174, 5176, 5175, 5173 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5331, 5333, 5332, 5330 ] }, { "id": "broken", "fg": 5320, "bg": [ 5331, 5333, 5332, 5330 ] } ] }, { "id": "vp_door_rear", - "fg": [ 5226, 5233, 5232, 5231 ], + "fg": [ 5383, 5390, 5389, 5388 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5228, 5230, 5229, 5227 ] }, { "id": "broken", "fg": 5163, "bg": [ 5228, 5230, 5229, 5227 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5385, 5387, 5386, 5384 ] }, { "id": "broken", "fg": 5320, "bg": [ 5385, 5387, 5386, 5384 ] } ] }, { "id": [ "vp_door_left", "vp_door_vertical_left" ], - "fg": [ 5164, 5167, 5166, 5165 ], + "fg": [ 5321, 5324, 5323, 5322 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5191, 5193, 5192, 5190 ] }, { "id": "broken", "fg": 5163, "bg": [ 5191, 5193, 5192, 5190 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5348, 5350, 5349, 5347 ] }, { "id": "broken", "fg": 5320, "bg": [ 5348, 5350, 5349, 5347 ] } ] }, { "id": [ "vp_door_nw", "vp_door_front_left" ], - "fg": [ 5198, 5201, 5200, 5199 ], + "fg": [ 5355, 5358, 5357, 5356 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5191, 5193, 5192, 5190 ] }, { "id": "broken", "fg": 5163, "bg": [ 5191, 5193, 5192, 5190 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5348, 5350, 5349, 5347 ] }, { "id": "broken", "fg": 5320, "bg": [ 5348, 5350, 5349, 5347 ] } ] }, { "id": [ "vp_door_sw", "vp_door_rear_left" ], - "fg": [ 5247, 5250, 5249, 5248 ], + "fg": [ 5404, 5407, 5406, 5405 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5191, 5193, 5192, 5190 ] }, { "id": "broken", "fg": 5163, "bg": [ 5191, 5193, 5192, 5190 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5348, 5350, 5349, 5347 ] }, { "id": "broken", "fg": 5320, "bg": [ 5348, 5350, 5349, 5347 ] } ] }, { "id": [ "vp_door_right", "vp_door_vertical_right" ], - "fg": [ 5168, 5171, 5170, 5169 ], + "fg": [ 5325, 5328, 5327, 5326 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5235, 5237, 5236, 5234 ] }, { "id": "broken", "fg": 5163, "bg": [ 5235, 5237, 5236, 5234 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5392, 5394, 5393, 5391 ] }, { "id": "broken", "fg": 5320, "bg": [ 5392, 5394, 5393, 5391 ] } ] }, { "id": [ "vp_door_ne", "vp_door_front_right" ], - "fg": [ 5194, 5197, 5196, 5195 ], + "fg": [ 5351, 5354, 5353, 5352 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5235, 5237, 5236, 5234 ] }, { "id": "broken", "fg": 5163, "bg": [ 5235, 5237, 5236, 5234 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5392, 5394, 5393, 5391 ] }, { "id": "broken", "fg": 5320, "bg": [ 5392, 5394, 5393, 5391 ] } ] }, { "id": [ "vp_door_se", "vp_door_rear_right" ], - "fg": [ 5238, 5241, 5240, 5239 ], + "fg": [ 5395, 5398, 5397, 5396 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5235, 5237, 5236, 5234 ] }, { "id": "broken", "fg": 5163, "bg": [ 5235, 5237, 5236, 5234 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5392, 5394, 5393, 5391 ] }, { "id": "broken", "fg": 5320, "bg": [ 5392, 5394, 5393, 5391 ] } ] }, { "id": "vp_door_shutter", - "fg": [ 5242, 5246, 5245, 5244 ], + "fg": [ 5399, 5403, 5402, 5401 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": 5243 }, { "id": "broken", "fg": 5163, "bg": 5243 } ] + "additional_tiles": [ { "id": "open", "fg": 5400 }, { "id": "broken", "fg": 5320, "bg": 5400 } ] }, { "id": "vp_door_trunk", - "fg": [ 5251, 5258, 5257, 5256 ], + "fg": [ 5408, 5415, 5414, 5413 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5252, 5255, 5254, 5253 ] }, { "id": "broken", "fg": 5163, "bg": [ 5252, 5255, 5254, 5253 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5409, 5412, 5411, 5410 ] }, { "id": "broken", "fg": 5320, "bg": [ 5409, 5412, 5411, 5410 ] } ] }, { "id": [ "vp_hddoor_trunk", "vp_hatch", "vp_hatch_opaque", "vp_hdhatch", "vp_hdhatch_opaque" ], - "fg": [ 5307, 5314, 5313, 5312 ], + "fg": [ 5464, 5471, 5470, 5469 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5308, 5311, 5310, 5309 ] }, { "id": "broken", "fg": 5163, "bg": [ 5308, 5311, 5310, 5309 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5465, 5468, 5467, 5466 ] }, { "id": "broken", "fg": 5320, "bg": [ 5465, 5468, 5467, 5466 ] } ] }, { "id": "vp_hddoor_left", - "fg": [ 5260, 5262, 5261, 5259 ], + "fg": [ 5417, 5419, 5418, 5416 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5272, 5274, 5273, 5271 ] }, { "id": "broken", "fg": 5163, "bg": [ 5272, 5274, 5273, 5271 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5429, 5431, 5430, 5428 ] }, { "id": "broken", "fg": 5320, "bg": [ 5429, 5431, 5430, 5428 ] } ] }, { "id": "vp_hddoor_right", - "fg": [ 5264, 5266, 5265, 5263 ], + "fg": [ 5421, 5423, 5422, 5420 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5304, 5306, 5305, 5303 ] }, { "id": "broken", "fg": 5163, "bg": [ 5304, 5306, 5305, 5303 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5461, 5463, 5462, 5460 ] }, { "id": "broken", "fg": 5320, "bg": [ 5461, 5463, 5462, 5460 ] } ] }, { "id": [ "vp_hddoor", "vp_hddoor_front" ], - "fg": [ 5268, 5270, 5269, 5267 ], + "fg": [ 5425, 5427, 5426, 5424 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5174, 5176, 5175, 5173 ] }, { "id": "broken", "fg": 5163, "bg": [ 5174, 5176, 5175, 5173 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5331, 5333, 5332, 5330 ] }, { "id": "broken", "fg": 5320, "bg": [ 5331, 5333, 5332, 5330 ] } ] }, { "id": "vp_hddoor_rear", - "fg": [ 5300, 5302, 5301, 5299 ], + "fg": [ 5457, 5459, 5458, 5456 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5228, 5230, 5229, 5227 ] }, { "id": "broken", "fg": 5163, "bg": [ 5228, 5230, 5229, 5227 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5385, 5387, 5386, 5384 ] }, { "id": "broken", "fg": 5320, "bg": [ 5385, 5387, 5386, 5384 ] } ] }, { "id": "vp_door_opaque_left", - "fg": [ 5211, 5213, 5212, 5210 ], + "fg": [ 5368, 5370, 5369, 5367 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5207, 5209, 5208, 5206 ] }, { "id": "broken", "fg": 5163, "bg": [ 5207, 5209, 5208, 5206 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5364, 5366, 5365, 5363 ] }, { "id": "broken", "fg": 5320, "bg": [ 5364, 5366, 5365, 5363 ] } ] }, { "id": "vp_door_opaque_right", - "fg": [ 5223, 5225, 5224, 5222 ], + "fg": [ 5380, 5382, 5381, 5379 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5219, 5221, 5220, 5218 ] }, { "id": "broken", "fg": 5163, "bg": [ 5219, 5221, 5220, 5218 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5376, 5378, 5377, 5375 ] }, { "id": "broken", "fg": 5320, "bg": [ 5376, 5378, 5377, 5375 ] } ] }, { "id": [ "vp_door_opaque", "vp_door_opaque_front" ], - "fg": [ 5203, 5205, 5204, 5202 ], + "fg": [ 5360, 5362, 5361, 5359 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5174, 5176, 5175, 5173 ] }, { "id": "broken", "fg": 5163, "bg": [ 5174, 5176, 5175, 5173 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5331, 5333, 5332, 5330 ] }, { "id": "broken", "fg": 5320, "bg": [ 5331, 5333, 5332, 5330 ] } ] }, { "id": "vp_door_opaque_rear", - "fg": [ 5215, 5217, 5216, 5214 ], + "fg": [ 5372, 5374, 5373, 5371 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5228, 5230, 5229, 5227 ] }, { "id": "broken", "fg": 5163, "bg": [ 5228, 5230, 5229, 5227 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5385, 5387, 5386, 5384 ] }, { "id": "broken", "fg": 5320, "bg": [ 5385, 5387, 5386, 5384 ] } ] }, { "id": "vp_hddoor_opaque_left", - "fg": [ 5284, 5286, 5285, 5283 ], + "fg": [ 5441, 5443, 5442, 5440 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5280, 5282, 5281, 5279 ] }, { "id": "broken", "fg": 5163, "bg": [ 5280, 5282, 5281, 5279 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5437, 5439, 5438, 5436 ] }, { "id": "broken", "fg": 5320, "bg": [ 5437, 5439, 5438, 5436 ] } ] }, { "id": "vp_hddoor_opaque_right", - "fg": [ 5296, 5298, 5297, 5295 ], + "fg": [ 5453, 5455, 5454, 5452 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5292, 5294, 5293, 5291 ] }, { "id": "broken", "fg": 5163, "bg": [ 5292, 5294, 5293, 5291 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5449, 5451, 5450, 5448 ] }, { "id": "broken", "fg": 5320, "bg": [ 5449, 5451, 5450, 5448 ] } ] }, { "id": [ "vp_hddoor_opaque", "vp_hddoor_opaque_front" ], - "fg": [ 5276, 5278, 5277, 5275 ], + "fg": [ 5433, 5435, 5434, 5432 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5174, 5176, 5175, 5173 ] }, { "id": "broken", "fg": 5163, "bg": [ 5174, 5176, 5175, 5173 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5331, 5333, 5332, 5330 ] }, { "id": "broken", "fg": 5320, "bg": [ 5331, 5333, 5332, 5330 ] } ] }, { "id": "vp_hddoor_opaque_rear", - "fg": [ 5288, 5290, 5289, 5287 ], + "fg": [ 5445, 5447, 5446, 5444 ], "multitile": true, - "additional_tiles": [ { "id": "open", "fg": [ 5228, 5230, 5229, 5227 ] }, { "id": "broken", "fg": 5163, "bg": [ 5228, 5230, 5229, 5227 ] } ] + "additional_tiles": [ { "id": "open", "fg": [ 5385, 5387, 5386, 5384 ] }, { "id": "broken", "fg": 5320, "bg": [ 5385, 5387, 5386, 5384 ] } ] }, { "id": "vp_frame_cover", - "fg": 5315, + "fg": 5472, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5315 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5472 } ] }, { "id": "vp_frame_cross", - "fg": 5316, + "fg": 5473, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5316 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5473 } ] }, { "id": "vp_frame_cross_unconnected", - "fg": 5317, + "fg": 5474, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5317 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5474 } ] }, { "id": "vp_frame_ne", - "fg": 5330, + "fg": 5487, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5330 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5487 } ] }, { "id": "vp_frame_nw", - "fg": 5331, + "fg": 5488, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5331 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5488 } ] }, { "id": "vp_frame_se", - "fg": 5332, + "fg": 5489, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5332 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5489 } ] }, { "id": "vp_frame_sw", - "fg": 5333, + "fg": 5490, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5333 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5490 } ] }, { "id": "vp_frame_vertical_unconnected", - "fg": 5341, + "fg": 5498, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5341 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5498 } ] }, { "id": "vp_frame_vertical_2_unconnected", - "fg": 5338, + "fg": 5495, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5338 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5495 } ] }, { "id": "vp_frame_vertical_left", - "fg": 5339, + "fg": 5496, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5339 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5496 } ] }, { "id": "vp_frame_vertical_2_left", - "fg": 5336, + "fg": 5493, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5336 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5493 } ] }, { "id": "vp_frame_vertical_right", - "fg": 5340, + "fg": 5497, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5340 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5497 } ] }, { "id": "vp_frame_vertical_2_right", - "fg": 5337, + "fg": 5494, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5337 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5494 } ] }, { "id": "vp_frame_horizontal", - "fg": 5318, + "fg": 5475, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5318 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5475 } ] }, { "id": "vp_frame_horizontal_2", - "fg": 5319, + "fg": 5476, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5319 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5476 } ] }, { "id": "vp_frame_horizontal_unconnected", - "fg": 5329, + "fg": 5486, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5329 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5486 } ] }, { "id": "vp_frame_horizontal_2_unconnected", - "fg": 5322, + "fg": 5479, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5322 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5479 } ] }, { "id": "vp_frame_horizontal_front", - "fg": 5325, + "fg": 5482, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5325 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5482 } ] }, { "id": "vp_frame_horizontal_2_front", - "fg": 5320, + "fg": 5477, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5320 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5477 } ] }, { "id": "vp_frame_horizontal_rear", - "fg": 5327, + "fg": 5484, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5327 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5484 } ] }, { "id": "vp_frame_horizontal_2_rear", - "fg": 5321, + "fg": 5478, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5321 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5478 } ] }, { "id": "vp_frame_horizontal_left", - "fg": 5326, + "fg": 5483, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5326 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5483 } ] }, { "id": "vp_frame_horizontal_2_left", - "fg": 5323, + "fg": 5480, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5323 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5480 } ] }, { "id": "vp_frame_horizontal_right", - "fg": 5328, + "fg": 5485, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5328 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5485 } ] }, { "id": "vp_frame_horizontal_2_right", - "fg": 5324, + "fg": 5481, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5324 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5481 } ] }, { "id": "vp_frame_vertical", - "fg": 5334, + "fg": 5491, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5334 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5491 } ] }, { "id": "vp_frame_vertical_2", - "fg": 5335, + "fg": 5492, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5335 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5492 } ] }, { "id": "vp_hdframe_cover", - "fg": 5342, + "fg": 5499, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5342 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5499 } ] }, { "id": "vp_hdframe_cross", - "fg": 5343, + "fg": 5500, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5343 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5500 } ] }, { "id": "vp_hdframe_cross_unconnected", - "fg": 5344, + "fg": 5501, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5344 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5501 } ] }, { "id": "vp_hdframe_ne", - "fg": 5357, + "fg": 5514, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5357 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5514 } ] }, { "id": "vp_hdframe_nw", - "fg": 5358, + "fg": 5515, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5358 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5515 } ] }, { "id": "vp_hdframe_se", - "fg": 5359, + "fg": 5516, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5359 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5516 } ] }, { "id": "vp_hdframe_sw", - "fg": 5360, + "fg": 5517, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5360 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5517 } ] }, { "id": "vp_hdframe_vertical_unconnected", - "fg": 5368, + "fg": 5525, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5368 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5525 } ] }, { "id": "vp_hdframe_vertical_2_unconnected", - "fg": 5365, + "fg": 5522, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5365 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5522 } ] }, { "id": "vp_hdframe_vertical_left", - "fg": 5366, + "fg": 5523, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5366 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5523 } ] }, { "id": "vp_hdframe_vertical_2_left", - "fg": 5363, + "fg": 5520, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5363 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5520 } ] }, { "id": "vp_hdframe_vertical_right", - "fg": 5367, + "fg": 5524, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5367 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5524 } ] }, { "id": "vp_hdframe_vertical_2_right", - "fg": 5364, + "fg": 5521, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5364 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5521 } ] }, { "id": "vp_hdframe_horizontal", - "fg": 5345, + "fg": 5502, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5345 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5502 } ] }, { "id": "vp_hdframe_horizontal_2", - "fg": 5346, + "fg": 5503, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5346 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5503 } ] }, { "id": "vp_hdframe_horizontal_unconnected", - "fg": 5356, + "fg": 5513, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5356 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5513 } ] }, { "id": "vp_hdframe_horizontal_2_unconnected", - "fg": 5349, + "fg": 5506, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5349 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5506 } ] }, { "id": "vp_hdframe_horizontal_front", - "fg": 5352, + "fg": 5509, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5352 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5509 } ] }, { "id": "vp_hdframe_horizontal_2_front", - "fg": 5347, + "fg": 5504, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5347 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5504 } ] }, { "id": "vp_hdframe_horizontal_rear", - "fg": 5354, + "fg": 5511, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5354 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5511 } ] }, { "id": "vp_hdframe_horizontal_2_rear", - "fg": 5348, + "fg": 5505, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5348 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5505 } ] }, { "id": "vp_hdframe_horizontal_left", - "fg": 5353, + "fg": 5510, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5353 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5510 } ] }, { "id": "vp_hdframe_horizontal_2_left", - "fg": 5350, + "fg": 5507, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5350 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5507 } ] }, { "id": "vp_hdframe_horizontal_right", - "fg": 5355, + "fg": 5512, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5355 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5512 } ] }, { "id": "vp_hdframe_horizontal_2_right", - "fg": 5351, + "fg": 5508, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5351 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5508 } ] }, { "id": "vp_hdframe_vertical", - "fg": 5361, + "fg": 5518, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5361 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5518 } ] }, { "id": "vp_hdframe_vertical_2", - "fg": 5362, + "fg": 5519, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5362 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5519 } ] }, { "id": "vp_xlframe_cover", - "fg": 5369, + "fg": 5526, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5369 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5526 } ] }, { "id": "vp_xlframe_cross", - "fg": 5370, + "fg": 5527, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5370 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5527 } ] }, { "id": "vp_xlframe_cross_unconnected", - "fg": 5371, + "fg": 5528, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5371 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5528 } ] }, { "id": "vp_xlframe_ne", - "fg": 5384, + "fg": 5541, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5384 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5541 } ] }, { "id": "vp_xlframe_nw", - "fg": 5385, + "fg": 5542, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5385 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5542 } ] }, { "id": "vp_xlframe_se", - "fg": 5386, + "fg": 5543, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5386 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5543 } ] }, { "id": "vp_xlframe_sw", - "fg": 5387, + "fg": 5544, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5387 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5544 } ] }, { "id": "vp_xlframe_vertical_unconnected", - "fg": 5395, + "fg": 5552, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5395 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5552 } ] }, { "id": "vp_xlframe_vertical_2_unconnected", - "fg": 5392, + "fg": 5549, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5392 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5549 } ] }, { "id": "vp_xlframe_vertical_left", - "fg": 5393, + "fg": 5550, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5393 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5550 } ] }, { "id": "vp_xlframe_vertical_2_left", - "fg": 5390, + "fg": 5547, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5390 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5547 } ] }, { "id": "vp_xlframe_vertical_right", - "fg": 5394, + "fg": 5551, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5394 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5551 } ] }, { "id": "vp_xlframe_vertical_2_right", - "fg": 5391, + "fg": 5548, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5391 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5548 } ] }, { "id": "vp_xlframe_horizontal", - "fg": 5372, + "fg": 5529, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5372 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5529 } ] }, { "id": "vp_xlframe_horizontal_2", - "fg": 5373, + "fg": 5530, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5373 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5530 } ] }, { "id": "vp_xlframe_horizontal_unconnected", - "fg": 5383, + "fg": 5540, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5383 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5540 } ] }, { "id": "vp_xlframe_horizontal_2_unconnected", - "fg": 5376, + "fg": 5533, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5376 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5533 } ] }, { "id": "vp_xlframe_horizontal_front", - "fg": 5379, + "fg": 5536, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5379 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5536 } ] }, { "id": "vp_xlframe_horizontal_2_front", - "fg": 5374, + "fg": 5531, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5374 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5531 } ] }, { "id": "vp_xlframe_horizontal_rear", - "fg": 5381, + "fg": 5538, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5381 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5538 } ] }, { "id": "vp_xlframe_horizontal_2_rear", - "fg": 5375, + "fg": 5532, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5375 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5532 } ] }, { "id": "vp_xlframe_horizontal_left", - "fg": 5380, + "fg": 5537, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5380 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5537 } ] }, { "id": "vp_xlframe_horizontal_2_left", - "fg": 5377, + "fg": 5534, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5377 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5534 } ] }, { "id": "vp_xlframe_horizontal_right", - "fg": 5382, + "fg": 5539, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5382 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5539 } ] }, { "id": "vp_xlframe_horizontal_2_right", - "fg": 5378, + "fg": 5535, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5378 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5535 } ] }, { "id": "vp_xlframe_vertical", - "fg": 5388, + "fg": 5545, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5388 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5545 } ] }, { "id": "vp_xlframe_vertical_2", - "fg": 5389, + "fg": 5546, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5389 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5546 } ] }, { "id": [ "vp_headlight", "vp_headlight_reinforced", "vp_wide_headlight_reinforced", "vp_wide_headlight" ], - "fg": 5397 + "fg": 5554 }, { "id": [ "vp_headlight_ne", "vp_headlight_reinforced_ne", "vp_wide_headlight_reinforced_ne", "vp_wide_headlight_ne" ], - "fg": 5396 + "fg": 5553 }, { "id": [ "vp_headlight_nw", "vp_headlight_reinforced_nw", "vp_wide_headlight_reinforced_nw", "vp_wide_headlight_nw" ], - "fg": 5397 + "fg": 5554 }, { "id": "vp_light_blue", - "fg": [ 5412, 5413 ], + "fg": [ 5569, 5570 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5412, 5413 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5569, 5570 ] } ] }, { "id": "vp_light_red", - "fg": [ 5414, 5415 ], + "fg": [ 5571, 5572 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5414, 5415 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5571, 5572 ] } ] }, { "id": [ "vp_floodlight", "vp_directed_floodlight" ], - "fg": [ 5406, 5408, 5407, 5405 ], + "fg": [ 5563, 5565, 5564, 5562 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5406, 5408, 5407, 5405 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5563, 5565, 5564, 5562 ] } ] }, { "id": [ "vp_veh_table", "vp_veh_table_wood" ], - "fg": [ 5398, 5398 ], - "bg": [ 5425, 5424 ], + "fg": [ 5555, 5555 ], + "bg": [ 5582, 5581 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5399, "bg": [ 5425, 5424 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5556, "bg": [ 5582, 5581 ] } ] }, { "id": "vp_workbench", - "fg": [ 5426, 5426 ], - "bg": 2112, + "fg": [ 5583, 5583 ], + "bg": 2254, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5426, 5426 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5583, 5583 ] } ] }, { "id": "vp_minifridge", - "fg": [ 5419, 5419 ], + "fg": [ 5576, 5576 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5419, 5419 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5576, 5576 ] } ] }, { "id": "vp_minifreezer", - "fg": [ 5418, 5418 ], + "fg": [ 5575, 5575 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5418, 5418 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5575, 5575 ] } ] }, { "id": "vp_kitchen_unit", - "fg": [ 5411, 5411 ], + "fg": [ 5568, 5568 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5411, 5411 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5568, 5568 ] } ] }, { "id": "vp_welding_rig", - "fg": [ 5423, 5423 ], + "fg": [ 5580, 5580 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5423, 5423 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5580, 5580 ] } ] }, { "id": "vp_craft_rig", - "fg": [ 5404, 5404 ], + "fg": [ 5561, 5561 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5404, 5404 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5561, 5561 ] } ] }, { "id": "vp_washing_machine", - "fg": [ 5422, 5422 ], + "fg": [ 5579, 5579 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5422, 5422 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5579, 5579 ] } ] }, { "id": "vp_bed", - "fg": [ 5402, 5402 ], + "fg": [ 5559, 5559 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5402, 5402 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5559, 5559 ] } ] }, { "id": "vp_veh_forge", - "fg": [ 5409, 5409 ], + "fg": [ 5566, 5566 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5409, 5409 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5566, 5566 ] } ] }, { "id": "vp_veh_kiln", - "fg": [ 5410, 5410 ], + "fg": [ 5567, 5567 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5410, 5410 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5567, 5567 ] } ] }, { "id": "vp_chemlab", - "fg": [ 5403, 5403 ], + "fg": [ 5560, 5560 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5403, 5403 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5560, 5560 ] } ] }, { "id": "vp_aisle_vertical", - "fg": 5401, + "fg": 5558, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5401 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5558 } ] }, { "id": "vp_aisle_horizontal", - "fg": 5400, + "fg": 5557, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5400 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5557 } ] }, - { "id": "vp_trunk_floor", "fg": 5421, "bg": 5401 }, + { "id": "vp_trunk_floor", "fg": 5578, "bg": 5558 }, { "id": "vp_wooden_aisle_vertical", - "fg": [ 5425, 5424 ], + "fg": [ 5582, 5581 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5425, 5424 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5582, 5581 ] } ] }, { "id": "vp_wooden_aisle_horizontal", - "fg": [ 5424, 5425 ], + "fg": [ 5581, 5582 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5424, 5425 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5581, 5582 ] } ] }, { "id": "vp_lit_aisle_vertical", - "fg": 5417, + "fg": 5574, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5417 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5574 } ] }, { "id": "vp_lit_aisle_horizontal", - "fg": 5416, + "fg": 5573, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5416 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5573 } ] }, { "id": "vp_mounted_spare_tire", - "fg": 5420, + "fg": 5577, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5420 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5577 } ] }, { "id": [ "vp_folding_seat", "vp_reclining_seat", "vp_seat", "vp_seat_back" ], - "fg": [ 5440, 5438, 5433, 5439 ], + "fg": [ 5597, 5595, 5590, 5596 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5440, 5438, 5433, 5439 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5597, 5595, 5590, 5596 ] } ] }, { "id": [ "vp_seat_leather", "vp_reclining_seat_leather", "vp_seat_back_leather" ], - "fg": [ 5437, 5435, 5434, 5436 ], + "fg": [ 5594, 5592, 5591, 5593 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5437, 5435, 5434, 5436 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5594, 5592, 5591, 5593 ] } ] }, { "id": [ "vp_seat_wood", "seat_wood_bench" ], - "fg": [ 5443, 5443, 5444, 5444 ], - "bg": [ 5425, 5424 ], + "fg": [ 5600, 5600, 5601, 5601 ], + "bg": [ 5582, 5581 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5443, 5443, 5444, 5444 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5600, 5600, 5601, 5601 ] } ] }, { "id": "vp_seat_wood_flimsy", - "fg": [ 5441, 5441, 5442, 5442 ], - "bg": [ 5425, 5424 ], + "fg": [ 5598, 5598, 5599, 5599 ], + "bg": [ 5582, 5581 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5441, 5441, 5442, 5442 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5598, 5598, 5599, 5599 ] } ] }, { "id": [ "vp_saddle", "vp_saddle_pedal" ], - "fg": [ 5428, 5430, 5429, 5427 ], + "fg": [ 5585, 5587, 5586, 5584 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5428, 5430, 5429, 5427 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5585, 5587, 5586, 5584 ] } ] }, { "id": "vp_solar_panel", - "fg": 5445, + "fg": 5602, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": 5445 } ] + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": 5602 } ] }, { "id": "vp_reinforced_solar_panel", - "fg": 5448, - "bg": 5445, + "fg": 5605, + "bg": 5602, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": 5445 } ] + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": 5602 } ] }, { "id": "vp_solar_panel_v2", - "fg": 5446, + "fg": 5603, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": 5446 } ] + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": 5603 } ] }, { "id": "vp_reinforced_solar_panel_v2", - "fg": 5448, - "bg": 5446, + "fg": 5605, + "bg": 5603, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": 5446 } ] + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": 5603 } ] }, { "id": "vp_solar_panel_v3", - "fg": 5447, + "fg": 5604, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": 5447 } ] + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": 5604 } ] }, { "id": [ @@ -8712,151 +8915,151 @@ "vp_mounted_m60_semi" ], "//": "rifles and machineguns", - "fg": 5450, - "bg": 5449, + "fg": 5607, + "bg": 5606, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5450 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5607 } ] }, { "id": [ "vp_mounted_emp_gun", "vp_mounted_plasma_gun", "vp_plasma_gun", "vp_laser_rifle" ], "//": "energy weapons", - "fg": 5450, - "bg": 5449, + "fg": 5607, + "bg": 5606, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5450 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5607 } ] }, { "id": [ "vp_mounted_hk_g80", "vp_mounted_coilgun" ], "//": "railguns", - "fg": 5450, - "bg": 5449, + "fg": 5607, + "bg": 5606, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5450 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5607 } ] }, { "id": [ "vp_mounted_bigun", "vp_mounted_m134" ], "//": "multibarrel weapons", - "fg": 5450, - "bg": 5449, + "fg": 5607, + "bg": 5606, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5450 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5607 } ] }, { "id": [ "vp_watercannon", "vp_flamethrower", "vp_mounted_chemical_thrower" ], "//": "liquid sprayers", - "fg": 5450, - "bg": 5449, + "fg": 5607, + "bg": 5606, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5450 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5607 } ] }, { "id": "vp_tow_launcher", "//": "rocket tubes", - "fg": 5450, - "bg": 5449, + "fg": 5607, + "bg": 5606, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5450 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5607 } ] }, { "id": [ "vp_wheel", "vp_wheel_steerable", "vp_wheel_wide_or_steerable", "vp_wheel_wide" ], - "fg": 5451, + "fg": 5608, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5451 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5608 } ] }, { "id": [ "vp_wheel_bicycle", "vp_wheel_bicycle_steerable", "vp_wheel_bicycle_or", "vp_wheel_bicycle_or_steerable" ], - "fg": [ 5453, 5455, 5454, 5452 ], + "fg": [ 5610, 5612, 5611, 5609 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5453, 5455, 5454, 5452 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5610, 5612, 5611, 5609 ] } ] }, { "id": [ "vp_wheel_bicycle_rear", "vp_wheel_bicycle_or_rear" ], - "fg": [ 5454, 5452, 5453, 5455 ], + "fg": [ 5611, 5609, 5610, 5612 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": [ 5454, 5452, 5453, 5455 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": [ 5611, 5609, 5610, 5612 ] } ] }, { "id": [ "vp_windshield", "vp_windshield_horizontal", "vp_windshield_horizontal_front", "vp_windshield_front_edge" ], - "fg": [ 5456, 5463, 5462, 5461 ], - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": [ 5456, 5463, 5462, 5461 ] } ], + "fg": [ 5613, 5620, 5619, 5618 ], + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": [ 5613, 5620, 5619, 5618 ] } ], "multitile": true }, { "id": "vp_windshield_horizontal_rear", - "fg": [ 5484, 5491, 5490, 5489 ], - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": [ 5484, 5491, 5490, 5489 ] } ], + "fg": [ 5641, 5648, 5647, 5646 ], + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": [ 5641, 5648, 5647, 5646 ] } ], "multitile": true }, { "id": "vp_windshield_horizontal_front_edge", - "fg": [ 5458, 5460, 5459, 5457 ], - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": [ 5458, 5460, 5459, 5457 ] } ], + "fg": [ 5615, 5617, 5616, 5614 ], + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": [ 5615, 5617, 5616, 5614 ] } ], "multitile": true }, { "id": "vp_windshield_horizontal_rear_edge", - "fg": [ 5485, 5488, 5487, 5486 ], - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": [ 5485, 5488, 5487, 5486 ] } ], + "fg": [ 5642, 5645, 5644, 5643 ], + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": [ 5642, 5645, 5644, 5643 ] } ], "multitile": true }, { "id": "vp_windshield_nw", - "fg": [ 5476, 5483, 5482, 5481 ], - "additional_tiles": [ { "id": "broken", "fg": 5162, "bg": [ 5476, 5483, 5482, 5481 ] } ], + "fg": [ 5633, 5640, 5639, 5638 ], + "additional_tiles": [ { "id": "broken", "fg": 5319, "bg": [ 5633, 5640, 5639, 5638 ] } ], "multitile": true }, { "id": "vp_windshield_ne", - "fg": [ 5468, 5475, 5474, 5473 ], - "additional_tiles": [ { "id": "broken", "fg": 5161, "bg": [ 5468, 5475, 5474, 5473 ] } ], + "fg": [ 5625, 5632, 5631, 5630 ], + "additional_tiles": [ { "id": "broken", "fg": 5318, "bg": [ 5625, 5632, 5631, 5630 ] } ], "multitile": true }, { "id": "vp_windshield_sw", - "fg": [ 5509, 5511, 5510, 5508 ], - "additional_tiles": [ { "id": "broken", "fg": 5162, "bg": [ 5509, 5511, 5510, 5508 ] } ], + "fg": [ 5666, 5668, 5667, 5665 ], + "additional_tiles": [ { "id": "broken", "fg": 5319, "bg": [ 5666, 5668, 5667, 5665 ] } ], "multitile": true }, { "id": "vp_windshield_se", - "fg": [ 5501, 5503, 5502, 5500 ], - "additional_tiles": [ { "id": "broken", "fg": 5161, "bg": [ 5501, 5503, 5502, 5500 ] } ], + "fg": [ 5658, 5660, 5659, 5657 ], + "additional_tiles": [ { "id": "broken", "fg": 5318, "bg": [ 5658, 5660, 5659, 5657 ] } ], "multitile": true }, { "id": "vp_windshield_nw_edge", - "fg": [ 5478, 5480, 5479, 5477 ], - "additional_tiles": [ { "id": "broken", "fg": 5162, "bg": [ 5478, 5480, 5479, 5477 ] } ], + "fg": [ 5635, 5637, 5636, 5634 ], + "additional_tiles": [ { "id": "broken", "fg": 5319, "bg": [ 5635, 5637, 5636, 5634 ] } ], "multitile": true }, { "id": "vp_windshield_ne_edge", - "fg": [ 5470, 5472, 5471, 5469 ], - "additional_tiles": [ { "id": "broken", "fg": 5161, "bg": [ 5470, 5472, 5471, 5469 ] } ], + "fg": [ 5627, 5629, 5628, 5626 ], + "additional_tiles": [ { "id": "broken", "fg": 5318, "bg": [ 5627, 5629, 5628, 5626 ] } ], "multitile": true }, { "id": "vp_windshield_sw_edge", - "fg": [ 5504, 5507, 5506, 5505 ], - "additional_tiles": [ { "id": "broken", "fg": 5162, "bg": [ 5504, 5507, 5506, 5505 ] } ], + "fg": [ 5661, 5664, 5663, 5662 ], + "additional_tiles": [ { "id": "broken", "fg": 5319, "bg": [ 5661, 5664, 5663, 5662 ] } ], "multitile": true }, { "id": "vp_windshield_se_edge", - "fg": [ 5496, 5499, 5498, 5497 ], - "additional_tiles": [ { "id": "broken", "fg": 5161, "bg": [ 5496, 5499, 5498, 5497 ] } ], + "fg": [ 5653, 5656, 5655, 5654 ], + "additional_tiles": [ { "id": "broken", "fg": 5318, "bg": [ 5653, 5656, 5655, 5654 ] } ], "multitile": true }, { "id": [ "vp_windshield_vertical_left", "vp_windshield_left" ], - "fg": [ 5464, 5467, 5466, 5465 ], - "additional_tiles": [ { "id": "broken", "fg": 5161, "bg": [ 5464, 5467, 5466, 5465 ] } ], + "fg": [ 5621, 5624, 5623, 5622 ], + "additional_tiles": [ { "id": "broken", "fg": 5318, "bg": [ 5621, 5624, 5623, 5622 ] } ], "multitile": true }, { "id": [ "vp_windshield_vertical_right", "vp_windshield_right" ], - "fg": [ 5492, 5495, 5494, 5493 ], - "additional_tiles": [ { "id": "broken", "fg": 5162, "bg": [ 5492, 5495, 5494, 5493 ] } ], + "fg": [ 5649, 5652, 5651, 5650 ], + "additional_tiles": [ { "id": "broken", "fg": 5319, "bg": [ 5649, 5652, 5651, 5650 ] } ], "multitile": true }, { @@ -8866,752 +9069,751 @@ "vp_reinforced_windshield_horizontal_front", "vp_reinforced_windshield_front_edge" ], - "fg": 5512, + "fg": 5669, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": 5512 } ] + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": 5669 } ] }, { "id": "vp_reinforced_windshield_horizontal_rear", - "fg": 5513, + "fg": 5670, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": 5513 } ] + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": 5670 } ] }, { "id": "vp_reinforced_windshield_horizontal_rear_edge", - "fg": 5514, + "fg": 5671, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": 5514 } ] + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": 5671 } ] }, { "id": "vp_reinforced_windshield_nw", - "fg": 5516, + "fg": 5673, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": 5516 } ] + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": 5673 } ] }, { "id": "vp_reinforced_windshield_ne", - "fg": 5515, + "fg": 5672, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": 5515 } ] + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": 5672 } ] }, { "id": "vp_reinforced_windshield_sw", - "fg": 5519, + "fg": 5676, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": 5519 } ] + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": 5676 } ] }, { "id": "vp_reinforced_windshield_se", - "fg": 5517, + "fg": 5674, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": 5517 } ] + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": 5674 } ] }, { "id": "vp_reinforced_windshield_sw_edge", - "fg": 5520, + "fg": 5677, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": 5520 } ] + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": 5677 } ] }, { "id": "vp_reinforced_windshield_se_edge", - "fg": 5518, + "fg": 5675, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": 5518 } ] + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": 5675 } ] }, { "id": [ "vp_reinforced_windshield_vertical_left", "vp_reinforced_windshield_left" ], - "fg": 5521, + "fg": 5678, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": 5521 } ] + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": 5678 } ] }, { "id": [ "vp_reinforced_windshield_vertical_right", "vp_reinforced_windshield_right" ], - "fg": 5522, + "fg": 5679, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": 5522 } ] + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": 5679 } ] }, { "id": "vp_frame_wood_vertical_2", - "fg": 5543, + "fg": 5700, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5543 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5700 } ] }, { "id": "vp_frame_wood_vertical_2_unconnected", - "fg": 5546, + "fg": 5703, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5546 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5703 } ] }, { "id": "vp_frame_wood_vertical_2_right", - "fg": 5545, + "fg": 5702, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5545 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5702 } ] }, { "id": "vp_frame_wood_vertical_2_left", - "fg": 5544, + "fg": 5701, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5544 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5701 } ] }, { "id": "vp_frame_wood_vertical", - "fg": 5542, + "fg": 5699, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5542 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5699 } ] }, { "id": "vp_frame_wood_vertical_unconnected", - "fg": 5549, + "fg": 5706, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5549 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5706 } ] }, { "id": "vp_frame_wood_vertical_right", - "fg": 5548, + "fg": 5705, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5548 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5705 } ] }, { "id": "vp_frame_wood_vertical_left", - "fg": 5547, + "fg": 5704, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5547 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5704 } ] }, { "id": "vp_frame_wood_sw", - "fg": 5541, + "fg": 5698, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5541 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5698 } ] }, { "id": "vp_frame_wood_se", - "fg": 5540, + "fg": 5697, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5540 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5697 } ] }, { "id": "vp_frame_wood_nw", - "fg": 5539, + "fg": 5696, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5539 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5696 } ] }, { "id": "vp_frame_wood_ne", - "fg": 5538, + "fg": 5695, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5538 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5695 } ] }, { "id": "vp_frame_wood_horizontal_2", - "fg": 5527, + "fg": 5684, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5527 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5684 } ] }, { "id": "vp_frame_wood_horizontal_2_unconnected", - "fg": 5532, + "fg": 5689, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5532 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5689 } ] }, { "id": "vp_frame_wood_horizontal_2_right", - "fg": 5531, + "fg": 5688, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5531 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5688 } ] }, { "id": "vp_frame_wood_horizontal_2_rear", - "fg": 5530, + "fg": 5687, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5530 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5687 } ] }, { "id": "vp_frame_wood_horizontal_2_left", - "fg": 5529, + "fg": 5686, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5529 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5686 } ] }, { "id": "vp_frame_wood_horizontal_2_front", - "fg": 5528, + "fg": 5685, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5528 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5685 } ] }, { "id": "vp_frame_wood_horizontal", - "fg": 5526, + "fg": 5683, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5526 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5683 } ] }, { "id": "vp_frame_wood_horizontal_unconnected", - "fg": 5537, + "fg": 5694, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5537 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5694 } ] }, { "id": "vp_frame_wood_horizontal_right", - "fg": 5536, + "fg": 5693, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5536 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5693 } ] }, { "id": "vp_frame_wood_horizontal_rear", - "fg": 5535, + "fg": 5692, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5535 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5692 } ] }, { "id": "vp_frame_wood_horizontal_left", - "fg": 5534, + "fg": 5691, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5534 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5691 } ] }, { "id": "vp_frame_wood_horizontal_front", - "fg": 5533, + "fg": 5690, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5533 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5690 } ] }, { "id": "vp_frame_wood_cross", - "fg": 5524, + "fg": 5681, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5524 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5681 } ] }, { "id": [ "vp_frame_wood_cross_unconnected", "vp_frame_wood", "frame_wood" ], - "fg": 5525, + "fg": 5682, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5525 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5682 } ] }, { "id": "vp_frame_wood_cover", - "fg": 5523, - "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5523 } ] - }, - { "id": "fd_bile", "fg": 4594 }, - { "id": "f_floor_mattress", "fg": 4607 }, - { "id": "f_brazier", "fg": 4610 }, - { "id": "emer_blanket", "fg": 4640 }, - { "id": "emer_blanket_on", "fg": 4641 }, - { "id": "jacket_evac", "fg": 4642 }, - { "id": "55gal_drum", "fg": 4651 }, - { "id": "t_roof_paper", "fg": 4876 }, - { "id": "seat", "fg": 5431 }, - { "id": "seat_leather", "fg": 5432 } + "fg": 5680, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5680 } ] + }, + { "id": "fd_bile", "fg": 4754 }, + { "id": "f_floor_mattress", "fg": 4767 }, + { "id": "f_brazier", "fg": 4770 }, + { "id": "emer_blanket", "fg": 4800 }, + { "id": "emer_blanket_on", "fg": 4801 }, + { "id": "jacket_evac", "fg": 4802 }, + { "id": "55gal_drum", "fg": 4811 }, + { "id": "t_roof_paper", "fg": 5033 }, + { "id": "seat", "fg": 5588 }, + { "id": "seat_leather", "fg": 5589 } ] }, { "file": "incomplete_tall.png", - "//": "range 5552 to 5567", + "//": "range 5712 to 5727", "sprite_width": 32, "sprite_height": 64, "sprite_offset_x": 0, "sprite_offset_y": -32, "tiles": [ - { "id": "mon_robofac_prototype", "fg": 5552, "bg": 4331 }, - { "id": "mon_zombie_ears", "fg": 5553, "bg": 4331 }, - { "id": "overlay_female_worn_helmet_riot_raised", "fg": 5554 }, - { "id": "overlay_male_worn_helmet_riot_raised", "fg": 5555 }, - { "id": "f_street_light", "fg": 5556 }, - { "id": "f_traffic_light", "fg": 5557 } + { "id": "mon_robofac_prototype", "fg": 5712, "bg": 4485 }, + { "id": "mon_zombie_ears", "fg": 5713, "bg": 4485 }, + { "id": "overlay_female_worn_helmet_riot_raised", "fg": 5714 }, + { "id": "overlay_male_worn_helmet_riot_raised", "fg": 5715 }, + { "id": "f_street_light", "fg": 5716 }, + { "id": "f_traffic_light", "fg": 5717 } ] }, { "file": "incomplete_large.png", - "//": "range 5568 to 5583", + "//": "range 5728 to 5743", "sprite_width": 64, "sprite_height": 64, "sprite_offset_x": -16, "sprite_offset_y": -32, "tiles": [ - { "id": "mon_alpha_razorclaw", "fg": 5568, "bg": 4474 }, - { "id": "mon_chickenbot", "fg": 5569, "bg": 4474 }, - { "id": "mon_razorclaw", "fg": 5570, "bg": 4474 }, - { "id": "mon_science_bot", "fg": 5571, "bg": 4474 }, - { "id": "mon_worm", "fg": 5572 } + { "id": "mon_alpha_razorclaw", "fg": 5728, "bg": 4632 }, + { "id": "mon_chickenbot", "fg": 5729, "bg": 4632 }, + { "id": "mon_razorclaw", "fg": 5730, "bg": 4632 }, + { "id": "mon_science_bot", "fg": 5731, "bg": 4632 }, + { "id": "mon_worm", "fg": 5732 } ] }, { "file": "fillerhoder.png", - "//": "range 5584 to 5679", + "//": "range 5744 to 5839", "tiles": [ { "id": "f_sandbag_wall", - "fg": 5584, + "fg": 5744, "rotates": true, "multitile": true, "additional_tiles": [ - { "id": "unconnected", "fg": 5584 }, - { "id": "center", "fg": 5585 }, - { "id": "corner", "fg": 5586 }, - { "id": "edge", "fg": 5587 }, - { "id": "end_piece", "fg": 5588 }, - { "id": "t_connection", "fg": 5589 } + { "id": "unconnected", "fg": 5744 }, + { "id": "center", "fg": 5745 }, + { "id": "corner", "fg": 5746 }, + { "id": "edge", "fg": 5747 }, + { "id": "end_piece", "fg": 5748 }, + { "id": "t_connection", "fg": 5749 } ] }, - { "id": "f_slab", "fg": 5590 }, - { "id": "animation_bullet_flame", "fg": 5591, "rotates": false }, - { "id": "animation_bullet_normal", "fg": 5592, "rotates": false }, - { "id": "animation_bullet_shrapnel", "fg": 5593 }, + { "id": "f_slab", "fg": 5750 }, + { "id": "animation_bullet_flame", "fg": 5751, "rotates": false }, + { "id": "animation_bullet_normal", "fg": 5752, "rotates": false }, + { "id": "animation_bullet_shrapnel", "fg": 5753 }, { "id": "explosion", - "fg": 5594, + "fg": 5754, "rotates": true, "multitile": true, - "additional_tiles": [ { "id": "corner", "fg": 5594 }, { "id": "edge", "fg": 5595 } ] + "additional_tiles": [ { "id": "corner", "fg": 5754 }, { "id": "edge", "fg": 5755 } ] }, { "id": "explosion_medium", "rotates": true, "multitile": true, - "additional_tiles": [ { "id": "corner", "fg": 5594 }, { "id": "edge", "fg": 5595 } ], - "fg": 5594 + "additional_tiles": [ { "id": "corner", "fg": 5754 }, { "id": "edge", "fg": 5755 } ], + "fg": 5754 }, { "id": "explosion_weak", "rotates": true, "multitile": true, - "additional_tiles": [ { "id": "corner", "fg": 5594 }, { "id": "edge", "fg": 5595 } ], - "fg": 5594 + "additional_tiles": [ { "id": "corner", "fg": 5754 }, { "id": "edge", "fg": 5755 } ], + "fg": 5754 }, { "id": "vp_chimes", - "fg": 5596, + "fg": 5756, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5596 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5756 } ] }, { "id": "vp_robot_controls", - "fg": 5597, + "fg": 5757, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5597 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5757 } ] }, - { "id": "t_manhole", "fg": 5598, "bg": 2164, "rotates": false }, - { "id": "t_manhole_cover", "fg": 5599, "bg": 2164 }, - { "id": "manhole_cover", "fg": 5599 }, - { "id": "t_pit_corpsed", "fg": 5600, "bg": 1599 }, - { "id": "t_pit_corpsed_season_winter", "fg": 5600, "bg": 1362 }, + { "id": "t_manhole", "fg": 5758, "bg": 2306, "rotates": false }, + { "id": "t_manhole_cover", "fg": 5759, "bg": 2306 }, + { "id": "manhole_cover", "fg": 5759 }, + { "id": "t_pit_corpsed", "fg": 5760, "bg": 1741 }, + { "id": "t_pit_corpsed_season_winter", "fg": 5760, "bg": 1504 }, { "id": [ "vp_external_tank", "vp_external_tank_small" ], - "fg": 5602, + "fg": 5762, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5602 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5762 } ] }, - { "id": "vp_ram_spiked", "fg": [ 5615, 5617, 5616, 5618 ], "rotates": true }, - { "id": "vp_ram_wood", "fg": [ 5623, 5625, 5624, 5626 ], "rotates": true }, - { "id": "vp_spike_wood", "fg": [ 5627, 5629, 5628, 5630 ], "rotates": true }, - { "id": "vp_ram_military", "fg": [ 5611, 5613, 5612, 5614 ], "rotates": true }, - { "id": "vp_ram_steel", "fg": [ 5619, 5621, 5620, 5622 ], "rotates": true }, - { "id": "vp_ram_hardsteel", "fg": [ 5607, 5609, 5608, 5610 ], "rotates": true }, - { "id": "vp_ram_alloy", "fg": [ 5603, 5605, 5604, 5606 ], "rotates": true }, + { "id": "vp_ram_spiked", "fg": [ 5775, 5777, 5776, 5778 ], "rotates": true }, + { "id": "vp_ram_wood", "fg": [ 5783, 5785, 5784, 5786 ], "rotates": true }, + { "id": "vp_ram_military", "fg": [ 5771, 5773, 5772, 5774 ], "rotates": true }, + { "id": "vp_ram_steel", "fg": [ 5779, 5781, 5780, 5782 ], "rotates": true }, + { "id": "vp_ram_hardsteel", "fg": [ 5767, 5769, 5768, 5770 ], "rotates": true }, + { "id": "vp_ram_alloy", "fg": [ 5763, 5765, 5764, 5766 ], "rotates": true }, { "id": [ "vp_seed_drill" ], - "fg": [ 5632, 5634, 5633, 5631 ], + "fg": [ 5788, 5790, 5789, 5787 ], "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5601, "bg": [ 5632, 5634, 5633, 5631 ] } ] + "additional_tiles": [ { "id": "broken", "fg": 5761, "bg": [ 5788, 5790, 5789, 5787 ] } ] }, { "id": "vp_roller_drum", - "fg": 5635, + "fg": 5791, "rotates": true, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5601, "bg": 5635 } ] + "additional_tiles": [ { "id": "broken", "fg": 5761, "bg": 5791 } ] }, { "id": "vp_battery_motorbike", - "fg": 5650, + "fg": 5806, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5650 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5806 } ] }, { "id": "vp_blade_horizontal", - "fg": 5659, + "fg": 5815, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5659 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5815 } ] }, { "id": "vp_blade_vertical", - "fg": 5660, + "fg": 5816, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5660 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5816 } ] }, { "id": "vp_controls", - "fg": 5654, + "fg": 5810, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5654 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5810 } ] }, { "id": "vp_engine_1cyl", - "fg": 5642, + "fg": 5798, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5642 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5798 } ] }, { "id": "vp_engine_electric", - "fg": 5647, + "fg": 5803, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5647 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5803 } ] }, { "id": "vp_engine_electric_large", - "fg": 5648, + "fg": 5804, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5648 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5804 } ] }, { "id": "vp_engine_inline4", - "fg": 5644, + "fg": 5800, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5644 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5800 } ] }, - { "id": "vp_engine_v12", "fg": 5645, "bg": 5646 }, + { "id": "vp_engine_v12", "fg": 5801, "bg": 5802 }, { "id": "vp_engine_v6", - "fg": 5645, + "fg": 5801, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5645 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5801 } ] }, { "id": "vp_engine_v8", - "fg": 5646, + "fg": 5802, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5646 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5802 } ] }, { "id": "vp_engine_vtwin", - "fg": 5643, + "fg": 5799, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5643 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5799 } ] }, { "id": "vp_foot_pedals", - "fg": 5649, + "fg": 5805, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5649 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5805 } ] }, { "id": "vp_fusion_gun", - "fg": 5663, + "fg": 5819, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5663 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5819 } ] }, { "id": "vp_hdroof", - "fg": 5666, + "fg": 5822, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5666 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5822 } ] }, { "id": "vp_hydrogen_tank", - "fg": 5652, + "fg": 5808, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5652 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5808 } ] }, { "id": "vp_minireactor", - "fg": 5651, + "fg": 5807, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5651 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5807 } ] }, { "id": "vp_muffler", - "fg": 5653, + "fg": 5809, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5653 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5809 } ] }, { "id": "vp_omnicam", - "fg": 5665, - "bg": 5666, + "fg": 5821, + "bg": 5822, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5160, "bg": 5665 } ] + "additional_tiles": [ { "id": "broken", "fg": 5317, "bg": 5821 } ] }, { "id": "vp_plating_hard", - "fg": 5658, + "fg": 5814, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5658 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5814 } ] }, { "id": "vp_plating_military", - "fg": 5655, + "fg": 5811, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5655 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5811 } ] }, { "id": "vp_plating_spiked", - "fg": 5657, + "fg": 5813, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5657 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5813 } ] }, { "id": "vp_plating_steel", - "fg": 5655, + "fg": 5811, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5655 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5811 } ] }, { "id": "vp_plating_superalloy", - "fg": 5656, + "fg": 5812, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5656 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5812 } ] }, { "id": "vp_plating_wood", - "fg": 5669, + "fg": 5825, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5669 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5825 } ] }, { "id": "vp_roof", - "fg": 5667, + "fg": 5823, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5667 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5823 } ] }, { "id": "vp_roof_cloth", - "fg": 5668, + "fg": 5824, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5668 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5824 } ] }, { "id": "vp_seatbelt", - "fg": 5641, + "fg": 5797, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5641 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5797 } ] }, { "id": "vp_seatbelt_heavyduty", - "fg": 5641, + "fg": 5797, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5641 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5797 } ] }, { "id": "vp_small_storage_battery", - "fg": 5650, + "fg": 5806, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5650 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5806 } ] }, { "id": "vp_spike", - "fg": 5661, + "fg": 5817, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5661 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5817 } ] }, { "id": "vp_storage_battery", - "fg": 5650, + "fg": 5806, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5650 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5806 } ] }, { "id": "vp_v_curtain", - "fg": 5670, + "fg": 5826, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5670 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5826 } ] }, { "id": "vp_wheel_armor", - "fg": 5637, + "fg": 5793, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5637 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5793 } ] }, { "id": "vp_wheel_armor_steerable", - "fg": 5637, + "fg": 5793, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5637 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5793 } ] }, { "id": "vp_wheel_caster", - "fg": 5664, + "fg": 5820, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5664 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5820 } ] }, { "id": "vp_wheel_small", - "fg": 5640, + "fg": 5796, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5640 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5796 } ] }, { "id": "vp_wheel_small_steerable", - "fg": 5640, + "fg": 5796, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5640 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5796 } ] }, { "id": "vp_wheel_wheelchair", - "fg": 5639, + "fg": 5795, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5639 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5795 } ] }, { "id": "vp_wheel_wide_steerable", - "fg": 5638, + "fg": 5794, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5638 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5794 } ] }, { "id": "vp_wheel_wood", - "fg": 5672, + "fg": 5828, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5672 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5828 } ] }, { "id": [ "wheel_wood", "wheel_wood_b" ], - "fg": 5672, + "fg": 5828, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5672 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5828 } ] }, { "id": "vp_wheel_wood_b", - "fg": 5672, + "fg": 5828, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5672 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5828 } ] }, { "id": "alloy_plate", - "fg": 5656, + "fg": 5812, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5656 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5812 } ] }, { "id": "foot_crank", - "fg": 5649, + "fg": 5805, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5649 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5805 } ] }, { "id": "frame", - "fg": 5671, + "fg": 5827, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5671 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5827 } ] }, { "id": "glass_sheet", - "fg": 5636, + "fg": 5792, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5636 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5792 } ] }, { "id": "hard_plate", - "fg": 5658, + "fg": 5814, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5658 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5814 } ] }, { "id": "kitchen_unit", - "fg": 5662, + "fg": 5818, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5662 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5818 } ] }, { "id": "motor", - "fg": 5647, + "fg": 5803, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5647 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5803 } ] }, { "id": "motor_large", - "fg": 5648, + "fg": 5804, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5648 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5804 } ] }, { "id": "muffler", - "fg": 5653, + "fg": 5809, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5653 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5809 } ] }, { "id": "spiked_plate", - "fg": 5657, + "fg": 5813, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5657 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5813 } ] }, { "id": "steel_plate", - "fg": 5655, + "fg": 5811, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5655 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5811 } ] }, { "id": "storage_battery", - "fg": 5650, + "fg": 5806, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5650 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5806 } ] }, { "id": "vehicle_controls", - "fg": 5654, + "fg": 5810, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5654 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5810 } ] }, { "id": "1cyl_combustion", - "fg": 5642, + "fg": 5798, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5642 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5798 } ] }, { "id": "i4_combustion", - "fg": 5644, + "fg": 5800, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5644 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5800 } ] }, { "id": "v2_combustion", - "fg": 5643, + "fg": 5799, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5643 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5799 } ] }, { - "id": "v6_combustion", - "fg": 5645, + "id": [ "v6_combustion", "v6_diesel" ], + "fg": 5801, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5645 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5801 } ] }, { "id": "v8_combustion", - "fg": 5646, + "fg": 5802, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5646 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5802 } ] }, { "id": "wheel", - "fg": 5637, + "fg": 5793, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5637 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5793 } ] }, { "id": "wheel_bicycle", - "fg": 5639, + "fg": 5795, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5639 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5795 } ] }, { "id": "wheel_small", - "fg": 5640, + "fg": 5796, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5640 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5796 } ] }, { "id": "wheel_wide", - "fg": 5638, + "fg": 5794, "multitile": true, - "additional_tiles": [ { "id": "broken", "fg": 5163, "bg": 5638 } ] + "additional_tiles": [ { "id": "broken", "fg": 5320, "bg": 5794 } ] } ] }, { "file": "fillergiant.png", - "//": "range 5680 to 5695", + "//": "range 5840 to 5855", "sprite_width": 96, "sprite_height": 96, "sprite_offset_x": -32, @@ -9624,18 +9826,18 @@ "t_tree_pear_season_spring", "t_tree_plum_season_spring" ], - "fg": 4521, - "bg": 4514 + "fg": 4681, + "bg": 4674 }, - { "id": "t_tree_apricot_season_summer", "fg": 5680, "bg": 4515 }, - { "id": "t_tree_mulberry_season_summer", "fg": 5681, "bg": 4515 }, - { "id": "t_tree_elderberry_season_summer", "fg": 5681, "bg": 4515 }, - { "id": "t_tree_pear_season_autumn", "fg": 5682, "bg": 4515 }, - { "id": "t_tree_plum_season_summer", "fg": 5683, "bg": 4515 }, + { "id": "t_tree_apricot_season_summer", "fg": 5840, "bg": 4675 }, + { "id": "t_tree_mulberry_season_summer", "fg": 5841, "bg": 4675 }, + { "id": "t_tree_elderberry_season_summer", "fg": 5841, "bg": 4675 }, + { "id": "t_tree_pear_season_autumn", "fg": 5842, "bg": 4675 }, + { "id": "t_tree_plum_season_summer", "fg": 5843, "bg": 4675 }, { "id": [ "t_tree_apricot_harvested", "t_tree_mulberry_harvested", "t_tree_plum_harvested", "t_tree_pear_season_summer" ], - "fg": 4516, - "bg": 4515 + "fg": 4676, + "bg": 4675 }, { "id": [ @@ -9645,12 +9847,12 @@ "t_tree_pear_harvested" ], "fg": [ - { "weight": 100, "sprite": 4517 }, - { "weight": 100, "sprite": 4518 }, - { "weight": 100, "sprite": 4519 }, - { "weight": 100, "sprite": 4520 } + { "weight": 100, "sprite": 4677 }, + { "weight": 100, "sprite": 4678 }, + { "weight": 100, "sprite": 4679 }, + { "weight": 100, "sprite": 4680 } ], - "bg": 4513 + "bg": 4673 }, { "id": [ @@ -9659,29 +9861,29 @@ "t_tree_pear_season_winter", "t_tree_plum_season_winter" ], - "fg": 4541, - "bg": 4512 - }, - { "id": "t_tree_chestnut", "fg": 5685, "bg": 4514 }, - { "id": "t_tree_chestnut_season_summer", "fg": 5684, "bg": 4515 }, - { "id": "t_tree_chestnut_season_autumn", "fg": 5684, "bg": 4513 }, - { "id": "t_tree_chestnut_season_winter", "fg": 5684, "bg": 4512 }, - { "id": "t_tree_pine", "fg": 5689, "bg": 4514 }, - { "id": "t_tree_pine_season_summer", "fg": 5689, "bg": 4515 }, - { "id": "t_tree_pine_season_autumn", "fg": 5689, "bg": 4513 }, - { "id": "t_tree_pine_season_winter", "fg": 5689, "bg": 4512 }, - { "id": "t_tree_deadpine", "fg": 5686, "bg": 4514 }, - { "id": "t_tree_deadpine_season_summer", "fg": 5686, "bg": 4515 }, - { "id": "t_tree_deadpine_season_autumn", "fg": 5686, "bg": 4513 }, - { "id": "t_tree_deadpine_season_winter", "fg": 5686, "bg": 4512 }, - { "id": "t_tree_hickory", "fg": 5688, "bg": 4514 }, - { "id": "t_tree_hickory_season_summer", "fg": 5688, "bg": 4515 }, - { "id": "t_tree_hickory_season_autumn", "fg": 5688, "bg": 4513 }, - { "id": "t_tree_hickory_season_winter", "fg": 5687, "bg": 4512 }, - { "id": "t_tree_hickory_dead", "fg": 5687, "bg": 4514 }, - { "id": "t_tree_hickory_dead_season_summer", "fg": 5687, "bg": 4515 }, - { "id": "t_tree_hickory_dead_season_autumn", "fg": 5687, "bg": 4513 }, - { "id": "t_tree_hickory_dead_season_winter", "fg": 5687, "bg": 4512 } + "fg": 4701, + "bg": 4672 + }, + { "id": "t_tree_chestnut", "fg": 5845, "bg": 4674 }, + { "id": "t_tree_chestnut_season_summer", "fg": 5844, "bg": 4675 }, + { "id": "t_tree_chestnut_season_autumn", "fg": 5844, "bg": 4673 }, + { "id": "t_tree_chestnut_season_winter", "fg": 5844, "bg": 4672 }, + { "id": "t_tree_pine", "fg": 5849, "bg": 4674 }, + { "id": "t_tree_pine_season_summer", "fg": 5849, "bg": 4675 }, + { "id": "t_tree_pine_season_autumn", "fg": 5849, "bg": 4673 }, + { "id": "t_tree_pine_season_winter", "fg": 5849, "bg": 4672 }, + { "id": "t_tree_deadpine", "fg": 5846, "bg": 4674 }, + { "id": "t_tree_deadpine_season_summer", "fg": 5846, "bg": 4675 }, + { "id": "t_tree_deadpine_season_autumn", "fg": 5846, "bg": 4673 }, + { "id": "t_tree_deadpine_season_winter", "fg": 5846, "bg": 4672 }, + { "id": "t_tree_hickory", "fg": 5848, "bg": 4674 }, + { "id": "t_tree_hickory_season_summer", "fg": 5848, "bg": 4675 }, + { "id": "t_tree_hickory_season_autumn", "fg": 5848, "bg": 4673 }, + { "id": "t_tree_hickory_season_winter", "fg": 5847, "bg": 4672 }, + { "id": "t_tree_hickory_dead", "fg": 5847, "bg": 4674 }, + { "id": "t_tree_hickory_dead_season_summer", "fg": 5847, "bg": 4675 }, + { "id": "t_tree_hickory_dead_season_autumn", "fg": 5847, "bg": 4673 }, + { "id": "t_tree_hickory_dead_season_winter", "fg": 5847, "bg": 4672 } ] }, { diff --git a/src/action.cpp b/src/action.cpp index 578618cb65c7b..4e4e5b39e4ca0 100644 --- a/src/action.cpp +++ b/src/action.cpp @@ -336,6 +336,8 @@ std::string action_ident( action_id act ) return "debug_lighting"; case ACTION_DISPLAY_RADIATION: return "debug_radiation"; + case ACTION_DISPLAY_NPC_ATTACK_POTENTIAL: + return "debug_npc_attack_potential"; case ACTION_TOGGLE_HOUR_TIMER: return "debug_hour_timer"; case ACTION_TOGGLE_DEBUG_MODE: @@ -448,6 +450,7 @@ bool can_action_change_worldstate( const action_id act ) case ACTION_DISPLAY_VISIBILITY: case ACTION_DISPLAY_LIGHTING: case ACTION_DISPLAY_RADIATION: + case ACTION_DISPLAY_NPC_ATTACK_POTENTIAL: case ACTION_DISPLAY_TRANSPARENCY: case ACTION_DISPLAY_REACHABILITY_ZONES: case ACTION_ZOOM_OUT: @@ -886,6 +889,7 @@ action_id handle_action_menu() REGISTER_ACTION( ACTION_DISPLAY_TRANSPARENCY ); REGISTER_ACTION( ACTION_DISPLAY_REACHABILITY_ZONES ); REGISTER_ACTION( ACTION_DISPLAY_RADIATION ); + REGISTER_ACTION( ACTION_DISPLAY_NPC_ATTACK_POTENTIAL ); REGISTER_ACTION( ACTION_TOGGLE_DEBUG_MODE ); } else if( category == _( "Interact" ) ) { REGISTER_ACTION( ACTION_EXAMINE ); @@ -1114,8 +1118,7 @@ cata::optional choose_adjacent_highlight( const std::string &message, if( !valid.empty() ) { hilite_cb = make_shared_fast( [&]() { for( const tripoint &pos : valid ) { - here.drawsq( g->w_terrain, player_character, pos, - true, true, player_character.pos() + player_character.view_offset ); + here.drawsq( g->w_terrain, pos, drawsq_params().highlight( true ) ); } } ); g->add_draw_callback( hilite_cb ); diff --git a/src/action.h b/src/action.h index 721608c277097..b8db9c42cd158 100644 --- a/src/action.h +++ b/src/action.h @@ -322,6 +322,7 @@ enum action_id : int { ACTION_DISPLAY_TRANSPARENCY, /** Toggle reachability zones map */ ACTION_DISPLAY_REACHABILITY_ZONES, + ACTION_DISPLAY_NPC_ATTACK_POTENTIAL, /** Toggle timing of the game hours */ ACTION_TOGGLE_HOUR_TIMER, /** Not an action, serves as count of enumerated actions */ diff --git a/src/activity_actor.cpp b/src/activity_actor.cpp index 4bad4361952e1..1a9e519989a37 100644 --- a/src/activity_actor.cpp +++ b/src/activity_actor.cpp @@ -65,6 +65,7 @@ #include "requirements.h" #include "ret_val.h" #include "rng.h" +#include "shearing.h" #include "sounds.h" #include "string_formatter.h" #include "timed_event.h" @@ -77,8 +78,8 @@ #include "vpart_position.h" static const efftype_id effect_pet( "pet" ); +static const efftype_id effect_sheared( "sheared" ); static const efftype_id effect_sleep( "sleep" ); - static const efftype_id effect_tied( "tied" ); static const itype_id itype_bone_human( "bone_human" ); @@ -100,6 +101,7 @@ static const mtype_id mon_skeleton( "mon_skeleton" ); static const mtype_id mon_zombie_crawler( "mon_zombie_crawler" ); static const quality_id qual_LOCKPICK( "LOCKPICK" ); +static const quality_id qual_SHEAR( "SHEAR" ); std::string activity_actor::get_progress_message( const player_activity &act ) const { @@ -1182,6 +1184,9 @@ void lockpick_activity_actor::start( player_activity &act, Character & ) { act.moves_left = moves_total; act.moves_total = moves_total; + + const time_duration lockpicking_time = time_duration::from_moves( moves_total ); + add_msg_debug( debugmode::DF_ACT_LOCKPICK, "lockpicking time = %s", to_string( lockpicking_time ) ); } void lockpick_activity_actor::finish( player_activity &act, Character &who ) @@ -1206,30 +1211,28 @@ void lockpick_activity_actor::finish( player_activity &act, Character &who ) const furn_id furn_type = here.furn( target ); ter_id new_ter_type; furn_id new_furn_type; - std::string open_message; - if( ter_type == t_chaingate_l ) { - new_ter_type = t_chaingate_c; - open_message = _( "With a satisfying click, the lock on the gate opens." ); - } else if( ter_type == t_door_locked || ter_type == t_door_locked_alarm || - ter_type == t_door_locked_interior ) { - new_ter_type = t_door_c; - open_message = _( "With a satisfying click, the lock on the door opens." ); - } else if( ter_type == t_door_locked_peep ) { - new_ter_type = t_door_c_peep; - open_message = _( "With a satisfying click, the lock on the door opens." ); - } else if( ter_type == t_retractable_gate_l ) { - new_ter_type = t_retractable_gate_c; - open_message = _( "With a satisfying click, the lock on the gate opens." ); - } else if( ter_type == t_door_metal_pickable ) { - new_ter_type = t_door_metal_c; - open_message = _( "With a satisfying click, the lock on the door opens." ); - } else if( ter_type == t_door_bar_locked ) { - new_ter_type = t_door_bar_o; - //Bar doors auto-open (and lock if closed again) so show a different message) - open_message = _( "The door swings open…" ); - } else if( furn_type == f_gunsafe_ml ) { - new_furn_type = f_safe_o; - open_message = _( "With a satisfying click, the lock on the door opens." ); + std::string open_message = _( "The lock opens…" ); + + if( here.has_furn( target ) ) { + if( furn_type->lockpick_result.is_null() ) { + debugmsg( "%s lockpick_result is null", furn_type.id().str() ); + return; + } + + new_furn_type = furn_type->lockpick_result; + if( !furn_type->lockpick_message.empty() ) { + open_message = furn_type->lockpick_message.translated(); + } + } else { + if( ter_type->lockpick_result.is_null() ) { + debugmsg( "%s lockpick_result is null", ter_type.id().str() ); + return; + } + + new_ter_type = ter_type->lockpick_result; + if( !ter_type->lockpick_message.empty() ) { + open_message = ter_type->lockpick_message.translated(); + } } bool perfect = it->has_flag( flag_PERFECT_LOCKPICK ); @@ -1464,7 +1467,13 @@ void consume_activity_actor::start( player_activity &act, Character &guy ) int moves; Character &player_character = get_player_character(); if( consume_location ) { - const ret_val ret = player_character.will_eat( *consume_location, true ); + ret_val ret = ret_val::make_success(); + if( refuel ) { + ret = player_character.can_consume_fuel( *consume_location ); + } else { + ret = player_character.will_eat( *consume_location, true ); + } + if( !ret.success() ) { canceled = true; consume_menu_selections = std::vector(); @@ -1474,7 +1483,12 @@ void consume_activity_actor::start( player_activity &act, Character &guy ) } moves = to_moves( guy.get_consume_time( *consume_location ) ); } else if( !consume_item.is_null() ) { - const ret_val ret = player_character.will_eat( consume_item, true ); + ret_val ret = ret_val::make_success(); + if( refuel ) { + ret = player_character.can_consume_fuel( consume_item ); + } else { + ret = player_character.will_eat( consume_item, true ); + } if( !ret.success() ) { canceled = true; consume_menu_selections = std::vector(); @@ -1511,9 +1525,9 @@ void consume_activity_actor::finish( player_activity &act, Character & ) avatar &player_character = get_avatar(); if( !canceled ) { if( consume_loc ) { - player_character.consume( consume_loc, /*force=*/true ); + player_character.consume( consume_loc, /*force=*/true, refuel ); } else if( !consume_item.is_null() ) { - player_character.consume( consume_item, /*force=*/true ); + player_character.consume( consume_item, /*force=*/true, refuel ); } else { debugmsg( "Item location/name to be consumed should not be null." ); } @@ -1679,7 +1693,7 @@ void unload_activity_actor::unload( Character &who, item_location &target ) if( it.is_container() ) { contents_change_handler handler; bool changed = false; - for( item *contained : it.contents.all_items_top() ) { + for( item *contained : it.all_items_top() ) { int old_charges = contained->charges; const bool consumed = who.add_or_drop_with_msg( *contained, true, &it ); if( consumed || contained->charges != old_charges ) { @@ -1700,7 +1714,7 @@ void unload_activity_actor::unload( Character &who, item_location &target ) } std::vector remove_contained; - for( item *contained : it.contents.all_items_top() ) { + for( item *contained : it.all_items_top() ) { if( contained->ammo_type() == ammotype( "plutonium" ) ) { contained->charges /= PLUTONIUM_CHARGES; } @@ -2255,7 +2269,7 @@ static std::list obtain_activity_items( // Take off the item or remove it from the player's inventory if( who.is_worn( *loc ) ) { - who.as_player()->takeoff( *loc, &res ); + who.as_player()->takeoff( loc, &res ); } else if( loc->count_by_charges() ) { res.push_back( who.as_player()->reduce_charges( &*loc, it->count() ) ); } else { @@ -2487,7 +2501,8 @@ void insert_item_activity_actor::finish( player_activity &act, Character &who ) if( charges > 0 && holster->can_contain_partial( it ) ) { int result = holster->fill_with( it, charges, /*unseal_pockets=*/true, - /*allow_sealed=*/true ); + /*allow_sealed=*/true, + /*ignore_settings*/true ); success = result > 0; if( success ) { @@ -2763,6 +2778,161 @@ std::unique_ptr milk_activity_actor::deserialize( JsonIn &jsin ) return actor.clone(); } +void shearing_activity_actor::start( player_activity &act, Character &who ) +{ + monster *mon = g->critter_at( mon_coords ); + if( !mon ) { + debugmsg( "shearing lost monster when starting" ); + act.set_to_null(); + return; + } + + std::string pet_name_capitalized = mon->unique_name.empty() ? mon->disp_name( false, + true ) : mon->unique_name; + + if( !mon->shearable() ) { + add_msg( _( "$1%s has nothing %2$s could shear." ), pet_name_capitalized, who.disp_name() ); + if( shearing_tie ) { + mon->remove_effect( effect_tied ); + } + act.set_to_null(); + return; + } + + const int shearing_quality = who.max_quality( qual_SHEAR ); + if( !( shearing_quality > 0 ) ) { + if( who.is_player() ) { + add_msg( m_info, _( "%1$s don't have a shearing tool." ), who.disp_name( false, true ) ); + } else { // who.is_npc + // npcs can't shear monsters yet, this is for when they are able to + add_msg_if_player_sees( who, _( "%1$s doesn't have a shearing tool." ), who.disp_name(), + mon->disp_name() ); + } + if( shearing_tie ) { + mon->remove_effect( effect_tied ); + } + act.set_to_null(); + return; + } + + const time_duration shearing_time = 30_minutes / shearing_quality; + add_msg_debug( debugmode::DF_ACT_SHEARING, "shearing_time time = %s", to_string( shearing_time ) ); + + if( who.is_player() ) { + add_msg( m_info, + _( "%1$s start shearing %2$s." ), who.disp_name( false, true ), mon->disp_name() ); + } else { // who.is_npc + // npcs can't shear monsters yet, this is for when they are able to + add_msg_if_player_sees( who, _( "%1$s starts shearing %2$s." ), who.disp_name(), + mon->disp_name() ); + } + + act.moves_total = to_moves( shearing_time ); + act.moves_left = act.moves_total; +} + +void shearing_activity_actor::do_turn( player_activity &, Character &who ) +{ + if( !who.has_quality( qual_SHEAR ) ) { + if( who.is_player() ) { + add_msg( + m_bad, + _( "%1$s don't have a shearing tool anymore." ), + who.disp_name( false, true ) ); + } else { + add_msg_if_player_sees( + who, + _( "%1$s doesn't have a shearing tool anymore." ), + who.disp_name() ); + } + who.cancel_activity(); + } +} + +void shearing_activity_actor::finish( player_activity &act, Character &who ) +{ + monster *mon = g->critter_at( mon_coords ); + if( !mon ) { + debugmsg( "shearing monster at position disappeared" ); + act.set_to_null(); + return; + } + + const shearing_data &shear_data = mon->type->shearing; + if( !shear_data.valid() ) { + debugmsg( "shearing monster does not have shearing_data" ); + if( shearing_tie ) { + mon->remove_effect( effect_tied ); + } + act.set_to_null(); + return; + } + + map &mp = get_map(); + + add_msg_if_player_sees( who, + string_format( + _( "%1$s finished shearing %2$s and got:" ), + who.disp_name( false, true ), + mon->unique_name.empty() ? mon->disp_name() : mon->unique_name ) ); + + const std::vector shear_roll = shear_data.roll_all( *mon ); + for( const shearing_roll &roll : shear_roll ) { + if( roll.result->count_by_charges() ) { + item shear_item( roll.result, calendar::turn, roll.amount ); + mp.add_item_or_charges( who.pos(), shear_item ); + add_msg_if_player_sees( who, shear_item.display_name() ); + } else { + item shear_item( roll.result, calendar::turn ); + for( int i = 0; i < roll.amount; ++i ) { + mp.add_item_or_charges( who.pos(), shear_item ); + } + add_msg_if_player_sees( who, + //~ %1$s - item, %2$d - amount + string_format( _( "%1$s x%2$d" ), + shear_item.display_name(), roll.amount ) ); + } + } + + mon->add_effect( effect_sheared, calendar::season_length() ); + if( shearing_tie ) { + mon->remove_effect( effect_tied ); + } + + act.set_to_null(); +} + +void shearing_activity_actor::canceled( player_activity &, Character & ) +{ + monster *mon = g->critter_at( mon_coords ); + if( !mon ) { + return; + } + + if( shearing_tie ) { + // free the poor critter + mon->remove_effect( effect_tied ); + } +} + +void shearing_activity_actor::serialize( JsonOut &jsout ) const +{ + jsout.start_object(); + jsout.member( "mon_coords", mon_coords ); + jsout.member( "shearing_tie", shearing_tie ); + jsout.end_object(); +} + +std::unique_ptr shearing_activity_actor::deserialize( JsonIn &jsin ) +{ + shearing_activity_actor actor = shearing_activity_actor( {} ); + + JsonObject data = jsin.get_object(); + data.read( "mon_coords", actor.mon_coords ); + data.read( "shearing_tie", actor.shearing_tie ); + return actor.clone(); +} + static bool check_if_disassemble_okay( item_location target, Character &who ) { item *disassembly = target.get_item(); @@ -2852,6 +3022,110 @@ std::unique_ptr disassemble_activity_actor::deserialize( JsonIn return actor.clone(); } +void tent_placement_activity_actor::start( player_activity &act, Character & ) +{ + act.moves_total = moves_total; + act.moves_left = moves_total; +} + +void tent_placement_activity_actor::finish( player_activity &act, Character &p ) +{ + map &here = get_map(); + const tripoint center = p.pos() + tripoint( ( radius + 1 ) * target.x, ( radius + 1 ) * target.y, + 0 ); + + // Make a square of floor surrounded by wall. + for( const tripoint &dest : here.points_in_radius( center, radius ) ) { + here.furn_set( dest, wall ); + } + for( const tripoint &dest : here.points_in_radius( center, radius - 1 ) ) { + here.furn_set( dest, floor ); + } + // Place the center floor and the door. + if( floor_center ) { + here.furn_set( center, *floor_center ); + } + here.furn_set( p.pos() + target, door_closed ); + + add_msg( m_info, _( "You set up the %s on the ground." ), it.tname() ); + add_msg( m_info, _( "Examine the center square to pack it up again." ) ); + act.set_to_null(); +} + +void tent_placement_activity_actor::canceled( player_activity &, Character &p ) +{ + map &here = get_map(); + here.add_item_or_charges( p.pos() + target, it, true ); +} + +void tent_placement_activity_actor::serialize( JsonOut &jsout ) const +{ + jsout.start_object(); + jsout.member( "moves_total", moves_total ); + jsout.member( "wall", wall ); + jsout.member( "floor", floor ); + jsout.member( "floor_center", floor_center ); + jsout.member( "door_closed", door_closed ); + jsout.member( "radius", radius ); + jsout.member( "it", it ); + jsout.member( "target", target ); + jsout.end_object(); +} + +std::unique_ptr tent_placement_activity_actor::deserialize( JsonIn &jsin ) +{ + item it; + tent_placement_activity_actor actor( 0, {}, 0, it, {}, {}, {}, {} ); + JsonObject data = jsin.get_object(); + data.read( "moves_total", actor.moves_total ); + data.read( "wall", actor.wall ); + data.read( "floor", actor.floor ); + data.read( "floor_center", actor.floor_center ); + data.read( "door_closed", actor.door_closed ); + data.read( "radius", actor.radius ); + data.read( "it", actor.it ); + data.read( "target", actor.target ); + return actor.clone(); +} + +void tent_deconstruct_activity_actor::start( player_activity &act, Character & ) +{ + act.moves_total = moves_total; + act.moves_left = moves_total; +} + +void tent_deconstruct_activity_actor::finish( player_activity &act, Character & ) +{ + map &here = get_map(); + for( const tripoint &pt : here.points_in_radius( target, radius ) ) { + here.furn_set( pt, f_null ); + } + here.add_item_or_charges( target, item( tent, calendar::turn ) ); + act.set_to_null(); +} + +void tent_deconstruct_activity_actor::serialize( JsonOut &jsout ) const +{ + jsout.start_object(); + jsout.member( "moves_total", moves_total ); + jsout.member( "radius", radius ); + jsout.member( "target", target ); + jsout.member( "tent", tent ); + jsout.end_object(); +} + +std::unique_ptr tent_deconstruct_activity_actor::deserialize( JsonIn &jsin ) +{ + tent_deconstruct_activity_actor actor( 0, 0, {}, {} ); + JsonObject data = jsin.get_object(); + data.read( "moves_total", actor.moves_total ); + data.read( "radius", actor.radius ); + data.read( "target", actor.target ); + data.read( "tent", actor.tent ); + + return actor.clone(); +} + void meditate_activity_actor::start( player_activity &act, Character & ) { act.moves_total = to_moves( 20_minutes ); @@ -2905,7 +3179,6 @@ std::unique_ptr play_with_pet_activity_actor::deserialize( JsonI JsonObject data = jsin.get_object(); data.read( "pet_name", actor.pet_name ); - return actor.clone(); } @@ -2986,7 +3259,10 @@ deserialize_functions = { { activity_id( "ACT_PLAY_WITH_PET" ), &play_with_pet_activity_actor::deserialize }, { activity_id( "ACT_RELOAD" ), &reload_activity_actor::deserialize }, { activity_id( "ACT_SHAVE" ), &shave_activity_actor::deserialize }, + { activity_id( "ACT_SHEARING" ), &shearing_activity_actor::deserialize }, { activity_id( "ACT_STASH" ), &stash_activity_actor::deserialize }, + { activity_id( "ACT_TENT_DECONSTRUCT" ), &tent_deconstruct_activity_actor::deserialize }, + { activity_id( "ACT_TENT_PLACE" ), &tent_placement_activity_actor::deserialize }, { activity_id( "ACT_TRY_SLEEP" ), &try_sleep_activity_actor::deserialize }, { activity_id( "ACT_UNLOAD" ), &unload_activity_actor::deserialize }, { activity_id( "ACT_WORKOUT_HARD" ), &workout_activity_actor::deserialize }, diff --git a/src/activity_actor_definitions.h b/src/activity_actor_definitions.h index a245d29180781..6cb0c6fc7502f 100644 --- a/src/activity_actor_definitions.h +++ b/src/activity_actor_definitions.h @@ -583,6 +583,7 @@ class consume_activity_actor : public activity_actor std::string consume_menu_filter; bool canceled = false; activity_id type; + bool refuel = false; /** * @pre @p other is a consume_activity_actor */ @@ -595,11 +596,11 @@ class consume_activity_actor : public activity_actor consume_activity_actor( const item_location &consume_location, std::vector consume_menu_selections, const std::vector &consume_menu_selected_items, - const std::string &consume_menu_filter, activity_id type ) : + const std::string &consume_menu_filter, activity_id type, bool refuel = false ) : consume_location( consume_location ), consume_menu_selections( consume_menu_selections ), consume_menu_selected_items( consume_menu_selected_items ), consume_menu_filter( consume_menu_filter ), - type( type ) {} + type( type ), refuel( refuel ) {} explicit consume_activity_actor( const item_location &consume_location ) : consume_location( consume_location ), consume_menu_selections( std::vector() ) {} @@ -928,6 +929,41 @@ class milk_activity_actor : public activity_actor std::vector string_values {}; }; +class shearing_activity_actor : public activity_actor +{ + private: + tripoint mon_coords; // monster is tied for the duration + bool shearing_tie; // was the monster tied due to shearing + + public: + explicit shearing_activity_actor( + const tripoint &mon_coords, bool shearing_tie = true ) + : mon_coords( mon_coords ), shearing_tie( shearing_tie ) {}; + + activity_id get_type() const override { + return activity_id( "ACT_SHEARING" ); + } + + void start( player_activity &act, Character &who ) override; + void do_turn( player_activity &/*act*/, Character &who ) override; + void finish( player_activity &act, Character &who ) override; + void canceled( player_activity &/*act*/, Character &/*who*/ ) override; + + bool can_resume_with_internal( const activity_actor &other, + const Character &/*who*/ ) const override { + const shearing_activity_actor &actor = static_cast + ( other ); + return actor.mon_coords == mon_coords; + } + + std::unique_ptr clone() const override { + return std::make_unique( *this ); + } + + void serialize( JsonOut &jsout ) const override; + static std::unique_ptr deserialize( JsonIn &jsin ); +}; + class disassemble_activity_actor : public activity_actor { private: @@ -1011,6 +1047,41 @@ class insert_item_activity_actor : public activity_actor static std::unique_ptr deserialize( JsonIn &jsin ); }; +class tent_placement_activity_actor : public activity_actor +{ + private: + int moves_total; + tripoint target; + int radius = 1; + item it; + string_id wall; + string_id floor; + cata::optional> floor_center; + string_id door_closed; + + public: + tent_placement_activity_actor( int moves_total, tripoint target, int radius, item it, + string_id wall, string_id floor, cata::optional> floor_center, + string_id door_closed ) : moves_total( moves_total ), target( target ), radius( radius ), + it( it ), wall( wall ), floor( floor ), floor_center( floor_center ), door_closed( door_closed ) {} + + activity_id get_type() const override { + return activity_id( "ACT_TENT_PLACE" ); + } + + void start( player_activity &act, Character & ) override; + void do_turn( player_activity &, Character & ) override {} + void finish( player_activity &act, Character &p ) override; + void canceled( player_activity &, Character &p ) override; + + std::unique_ptr clone() const override { + return std::make_unique( *this ); + } + + void serialize( JsonOut &jsout ) const override; + static std::unique_ptr deserialize( JsonIn &jsin ); +}; + class meditate_activity_actor : public activity_actor { public: @@ -1055,6 +1126,34 @@ class play_with_pet_activity_actor : public activity_actor static std::unique_ptr deserialize( JsonIn &jsin ); }; +class tent_deconstruct_activity_actor : public activity_actor +{ + private: + int moves_total; + int radius; + tripoint target; + itype_id tent; + + public: + tent_deconstruct_activity_actor( int moves_total, int radius, tripoint target, + itype_id tent ) : moves_total( moves_total ), radius( radius ), target( target ), tent( tent ) {} + + activity_id get_type() const override { + return activity_id( "ACT_TENT_DECONSTRUCT" ); + } + + void start( player_activity &act, Character & ) override; + void do_turn( player_activity &, Character & ) override {} + void finish( player_activity &act, Character & ) override; + + std::unique_ptr clone() const override { + return std::make_unique( *this ); + } + + void serialize( JsonOut &jsout ) const override; + static std::unique_ptr deserialize( JsonIn &jsin ); +}; + class shave_activity_actor : public activity_actor { public: diff --git a/src/activity_handlers.cpp b/src/activity_handlers.cpp index ee852fe7136db..422f3fe4558fc 100644 --- a/src/activity_handlers.cpp +++ b/src/activity_handlers.cpp @@ -100,8 +100,6 @@ enum class creature_size : int; -static const efftype_id effect_sheared( "sheared" ); - #define dbg(x) DebugLog((x),D_GAME) << __FILE__ << ":" << __LINE__ << ": " static const activity_id ACT_ADV_INVENTORY( "ACT_ADV_INVENTORY" ); @@ -119,6 +117,7 @@ static const activity_id ACT_CLEAR_RUBBLE( "ACT_CLEAR_RUBBLE" ); static const activity_id ACT_CONSUME_DRINK_MENU( "ACT_CONSUME_DRINK_MENU" ); static const activity_id ACT_CONSUME_FOOD_MENU( "ACT_CONSUME_FOOD_MENU" ); static const activity_id ACT_CONSUME_MEDS_MENU( "ACT_CONSUME_MEDS_MENU" ); +static const activity_id ACT_CONSUME_FUEL_MENU( "ACT_CONSUME_FUEL_MENU" ); static const activity_id ACT_CRACKING( "ACT_CRACKING" ); static const activity_id ACT_DISMEMBER( "ACT_DISMEMBER" ); static const activity_id ACT_DISSECT( "ACT_DISSECT" ); @@ -274,6 +273,7 @@ activity_handlers::do_turn_functions = { { ACT_CONSUME_FOOD_MENU, consume_food_menu_do_turn }, { ACT_CONSUME_DRINK_MENU, consume_drink_menu_do_turn }, { ACT_CONSUME_MEDS_MENU, consume_meds_menu_do_turn }, + { ACT_CONSUME_FUEL_MENU, consume_fuel_menu_do_turn }, { ACT_MOVE_LOOT, move_loot_do_turn }, { ACT_ADV_INVENTORY, adv_inventory_do_turn }, { ACT_ARMOR_LAYERS, armor_layers_do_turn }, @@ -353,11 +353,11 @@ activity_handlers::finish_functions = { { ACT_CONSUME_FOOD_MENU, eat_menu_finish }, { ACT_CONSUME_DRINK_MENU, eat_menu_finish }, { ACT_CONSUME_MEDS_MENU, eat_menu_finish }, + { ACT_CONSUME_FUEL_MENU, eat_menu_finish }, { ACT_WASH, washing_finish }, { ACT_HACKSAW, hacksaw_finish }, { ACT_PRY_NAILS, pry_nails_finish }, { ACT_CHOP_TREE, chop_tree_finish }, - { activity_id( "ACT_SHEAR" ), shear_finish }, { ACT_CHOP_LOGS, chop_logs_finish }, { ACT_CHOP_PLANKS, chop_planks_finish }, { ACT_JACKHAMMER, jackhammer_finish }, @@ -1249,7 +1249,7 @@ void activity_handlers::butcher_finish( player_activity *act, player *p ) // reveal hidden items / hidden content if( action != butcher_type::FIELD_DRESS && action != butcher_type::SKIN && action != butcher_type::BLEED ) { - for( item *content : corpse_item.contents.all_items_top() ) { + for( item *content : corpse_item.all_items_top() ) { if( ( roll_butchery() + 10 ) * 5 > rng( 0, 100 ) ) { //~ %1$s - item name, %2$s - monster name p->add_msg_if_player( m_good, _( "You discover a %1$s in the %2$s!" ), content->tname(), @@ -1413,40 +1413,6 @@ void activity_handlers::butcher_finish( player_activity *act, player *p ) resume_for_multi_activities( *p ); } -void activity_handlers::shear_finish( player_activity *act, player *p ) -{ - if( act->coords.empty() ) { - debugmsg( "shearing activity with no position of monster stored" ); - return; - } - item_location &loc = act->targets[ 0 ]; - item *shears = loc.get_item(); - if( shears == nullptr ) { - debugmsg( "shearing item location lost" ); - return; - } - map &here = get_map(); - const tripoint source_pos = here.getlocal( act->coords.at( 0 ) ); - monster *source_mon = g->critter_at( source_pos ); - if( source_mon == nullptr ) { - debugmsg( "could not find source creature for shearing" ); - return; - } - // 22 wool staples corresponds to an average wool-producing sheep yield of 10 lbs or so - for( int i = 0; i != 22; ++i ) { - item wool_staple( itype_wool_staple, calendar::turn ); - here.add_item_or_charges( p->pos(), wool_staple ); - } - source_mon->add_effect( effect_sheared, calendar::season_length() ); - if( !act->str_values.empty() && act->str_values[0] == "temp_tie" ) { - source_mon->remove_effect( effect_tied ); - } - act->set_to_null(); - if( shears->type->can_have_charges() ) { - p->consume_charges( *shears, shears->type->charges_to_use() ); - } -} - void activity_handlers::fill_liquid_do_turn( player_activity *act, player *p ) { player_activity &act_ref = *act; @@ -2880,6 +2846,12 @@ void activity_handlers::consume_meds_menu_do_turn( player_activity *, player * ) avatar_action::eat( player_character, game_menus::inv::consume_meds( player_character ) ); } +void activity_handlers::consume_fuel_menu_do_turn( player_activity *, player * ) +{ + avatar &player_character = get_avatar(); + avatar_action::eat( player_character, game_menus::inv::consume_fuel( player_character ), true ); +} + void activity_handlers::move_loot_do_turn( player_activity *act, player *p ) { activity_on_turn_move_loot( *act, *p ); diff --git a/src/activity_handlers.h b/src/activity_handlers.h index bfb9ff44bd3af..2e897e4d0fe93 100644 --- a/src/activity_handlers.h +++ b/src/activity_handlers.h @@ -148,6 +148,7 @@ void eat_menu_do_turn( player_activity *act, player *p ); void consume_food_menu_do_turn( player_activity *act, player *p ); void consume_drink_menu_do_turn( player_activity *act, player *p ); void consume_meds_menu_do_turn( player_activity *act, player *p ); +void consume_fuel_menu_do_turn( player_activity *act, player *p ); void move_items_do_turn( player_activity *act, player *p ); void multiple_farm_do_turn( player_activity *act, player *p ); void multiple_fish_do_turn( player_activity *act, player *p ); diff --git a/src/advanced_inv.cpp b/src/advanced_inv.cpp index 13a3c66e58278..5c87f526a70a9 100644 --- a/src/advanced_inv.cpp +++ b/src/advanced_inv.cpp @@ -878,7 +878,7 @@ bool advanced_inventory::move_all_items() if( spane.get_area() == AIM_INVENTORY ) { //add all solid top level items for( item &cloth : player_character.worn ) { - for( item *it : cloth.contents.all_items_top( item_pocket::pocket_type::CONTAINER ) ) { + for( item *it : cloth.all_items_top( item_pocket::pocket_type::CONTAINER ) ) { if( !it->made_of_from_type( phase_id::SOLID ) ) { continue; } diff --git a/src/advanced_inv_pane.cpp b/src/advanced_inv_pane.cpp index 7a6d0396c79f2..507c2c9560a16 100644 --- a/src/advanced_inv_pane.cpp +++ b/src/advanced_inv_pane.cpp @@ -122,7 +122,7 @@ std::vector avatar::get_AIM_inventory( const advanced_inv } for( const std::vector &it_stack : item_list_to_stack( item_location( *this, &worn_item ), - worn_item.contents.all_items_top( item_pocket::pocket_type::CONTAINER ) ) ) { + worn_item.all_items_top( item_pocket::pocket_type::CONTAINER ) ) ) { advanced_inv_listitem adv_it( it_stack, item_index++, square.id, false ); if( !pane.is_filtered( *adv_it.items.front() ) ) { square.volume += adv_it.volume; @@ -135,7 +135,7 @@ std::vector avatar::get_AIM_inventory( const advanced_inv if( weapon.is_container() ) { for( const std::vector &it_stack : item_list_to_stack( item_location( *this, &weapon ), - weapon.contents.all_items_top( item_pocket::pocket_type::CONTAINER ) ) ) { + weapon.all_items_top( item_pocket::pocket_type::CONTAINER ) ) ) { advanced_inv_listitem adv_it( it_stack, item_index++, square.id, false ); if( !pane.is_filtered( *adv_it.items.front() ) ) { square.volume += adv_it.volume; diff --git a/src/animation.cpp b/src/animation.cpp index e4b59766446ed..20458301bc2ee 100644 --- a/src/animation.cpp +++ b/src/animation.cpp @@ -459,7 +459,7 @@ void draw_bullet_curses( map &m, const tripoint &t, const char bullet, const tri shared_ptr_fast bullet_cb = make_shared_fast( [&]() { if( p != nullptr && p->z == vp.z ) { - m.drawsq( g->w_terrain, player_character, *p, false, true, vp ); + m.drawsq( g->w_terrain, *p, drawsq_params().center( vp ) ); } mvwputch( g->w_terrain, t.xy() - vp.xy() + point( POSX, POSY ), c_red, bullet ); } ); @@ -628,7 +628,10 @@ namespace void draw_line_curses( game &g, const tripoint ¢er, const std::vector &ret, bool noreveal ) { + avatar &player_character = get_avatar(); + map &here = get_map(); + drawsq_params params = drawsq_params().highlight( true ).center( center ); for( const tripoint &p : ret ) { const Creature *critter = g.critter_at( p, true ); @@ -645,7 +648,7 @@ void draw_line_curses( game &g, const tripoint ¢er, const std::vector &points ) avatar &player_character = get_avatar(); map &here = get_map(); for( const tripoint &p : points ) { - here.drawsq( g.w_terrain, player_character, p, true, true ); + here.drawsq( g.w_terrain, p, drawsq_params().highlight( true ) ); } const tripoint p = points.empty() ? tripoint {POSX, POSY, 0} : diff --git a/src/armor_layers.cpp b/src/armor_layers.cpp index 65583dffff262..a1b8f8db021d6 100644 --- a/src/armor_layers.cpp +++ b/src/armor_layers.cpp @@ -877,8 +877,13 @@ void player::sort_armor() if( leftListIndex < leftListSize ) { if( player_character.query_yn( _( "Remove selected armor?" ) ) ) { do_return_entry(); + + //create an item_location for player::takeoff to handle. + item &item_for_takeoff = *tmp_worn[leftListIndex]; + item_location loc_for_takeoff = item_location( *this, &item_for_takeoff ); + // remove the item, asking to drop it if necessary - takeoff( *tmp_worn[leftListIndex] ); + takeoff( loc_for_takeoff ); if( !player_character.has_activity( ACT_ARMOR_LAYERS ) ) { // An activity has been created to take off the item; // we must surrender control until it is done. diff --git a/src/auto_note.cpp b/src/auto_note.cpp index 1badba13a2a65..b369445248b5f 100644 --- a/src/auto_note.cpp +++ b/src/auto_note.cpp @@ -15,7 +15,9 @@ #include "output.h" #include "path_info.h" #include "point.h" +#include "string_input_popup.h" #include "translations.h" +#include "ui.h" #include "ui_manager.h" namespace auto_notes @@ -57,6 +59,27 @@ bool auto_note_settings::save() } jout.end_array(); + if( !custom_symbols.empty() ) { + jout.member( "custom_symbols" ); + jout.start_array(); + for( const std::pair &, const auto_notes::custom_symbol &> symbol_entry : + custom_symbols ) { + jout.start_object(); + + jout.member( "map_extra" ); + jout.write( symbol_entry.first.str() ); + + jout.member( "symbol" ); + jout.write( symbol_entry.second.get_symbol_string() ); + + jout.member( "color" ); + jout.write( symbol_entry.second.get_color_string() ); + + jout.end_object(); + } + jout.end_array(); + } + jout.end_object(); }, _( "auto notes configuration" ) ); @@ -84,6 +107,18 @@ void auto_note_settings::load() const std::string entry = jin.get_string(); discovered.insert( string_id {entry} ); } + } else if( name == "custom_symbols" ) { + jin.start_array(); + while( !jin.end_array() ) { + JsonObject joSymbols = jin.get_object(); + const std::string entry = joSymbols.get_string( "map_extra" ); + const std::string custom_symbol_str = joSymbols.get_string( "symbol" ); + const std::string custom_color = joSymbols.get_string( "color" ); + custom_symbol sym; + sym.set_symbol( custom_symbol_str ); + sym.set_color( custom_color ); + custom_symbols.insert( std::make_pair( string_id {entry}, sym ) ); + } } else { jin.skip_value(); } @@ -143,6 +178,25 @@ void auto_note_settings::set_auto_note_status( const string_id &mapEx } } +cata::optional auto_note_settings::get_custom_symbol( + const string_id &mapExtId ) const +{ + auto entry = custom_symbols.find( mapExtId ); + return entry == custom_symbols.end() ? cata::nullopt + : cata::optional( entry->second ); +} + +void auto_note_settings::set_custom_symbol( const string_id &mapExtId, + const custom_symbol &symbol ) +{ + custom_symbols.emplace( mapExtId, symbol ); +} + +void auto_note_settings::clear_all_custom_symbols() +{ + custom_symbols.clear(); +} + auto_note_manager_gui::auto_note_manager_gui() { const auto_note_settings &settings = get_auto_notes_settings(); @@ -154,15 +208,17 @@ auto_note_manager_gui::auto_note_manager_gui() continue; } - bool isAutoNoteEnabled = settings.has_auto_note_enabled( extra.id ); + bool is_auto_note_enabled = settings.has_auto_note_enabled( extra.id ); mapExtraCache.emplace( std::make_pair( extra.id, std::make_pair( extra, - isAutoNoteEnabled ) ) ); + is_auto_note_enabled ) ) ); if( settings.was_discovered( extra.id ) ) { displayCache.push_back( extra.id ); } } + + fill_custom_symbols_cache(); } bool auto_note_manager_gui::was_changed() const @@ -170,9 +226,31 @@ bool auto_note_manager_gui::was_changed() const return wasChanged; } +void auto_note_manager_gui::fill_custom_symbols_cache() +{ + const auto_note_settings &settings = get_auto_notes_settings(); + custom_symbol_cache.clear(); + + for( const std::pair &, const auto_notes::custom_symbol &> symbol_entry : + settings.custom_symbols ) { + custom_symbol_cache.emplace( symbol_entry.first, symbol_entry.second ); + } +} + +void auto_note_manager_gui::set_cached_custom_symbol( const string_id &mapExtId, + const custom_symbol &symbol ) +{ + auto found = custom_symbol_cache.find( mapExtId ); + if( found == custom_symbol_cache.end() ) { + custom_symbol_cache.emplace( mapExtId, symbol ); + } else { + found->second = symbol; + } +} + void auto_note_manager_gui::show() { - const int iHeaderHeight = 3; + const int iHeaderHeight = 4; int iContentHeight = 0; catacurses::window w_border; catacurses::window w_header; @@ -228,8 +306,9 @@ void auto_note_manager_gui::show() ui.on_redraw( [&]( const ui_adaptor & ) { // == Draw border draw_border( w_border, BORDER_COLOR, _( " AUTO NOTES MANAGER " ) ); - mvwputch( w_border, point( 0, 2 ), c_light_gray, LINE_XXXO ); - mvwputch( w_border, point( 79, 2 ), c_light_gray, LINE_XOXX ); + mvwputch( w_border, point( 0, iHeaderHeight - 1 ), c_light_gray, LINE_XXXO ); + mvwputch( w_border, point( 79, iHeaderHeight - 1 ), c_light_gray, LINE_XOXX ); + mvwputch( w_border, point( 52, FULL_SCREEN_HEIGHT - 1 ), c_light_gray, LINE_XXOX ); mvwputch( w_border, point( 61, FULL_SCREEN_HEIGHT - 1 ), c_light_gray, LINE_XXOX ); wnoutrefresh( w_border ); @@ -242,28 +321,38 @@ void auto_note_manager_gui::show() // Draw horizontal line and corner pieces of the table for( int x = 0; x < 78; x++ ) { if( x == 51 || x == 60 ) { - mvwputch( w_header, point( x, 1 ), c_light_gray, LINE_OXXX ); - mvwputch( w_header, point( x, 2 ), c_light_gray, LINE_XOXO ); + mvwputch( w_header, point( x, iHeaderHeight - 2 ), c_light_gray, LINE_OXXX ); + mvwputch( w_header, point( x, iHeaderHeight - 1 ), c_light_gray, LINE_XOXO ); } else { - mvwputch( w_header, point( x, 1 ), c_light_gray, LINE_OXOX ); + mvwputch( w_header, point( x, iHeaderHeight - 2 ), c_light_gray, LINE_OXOX ); } } - mvwprintz( w_header, point( 1, 2 ), c_white, _( "Map Extra" ) ); - mvwprintz( w_header, point( 53, 2 ), c_white, _( "Symbol" ) ); - mvwprintz( w_header, point( 62, 2 ), c_white, _( "Enabled" ) ); + mvwprintz( w_header, point( 1, iHeaderHeight - 1 ), c_white, _( "Map Extra" ) ); + mvwprintz( w_header, point( 53, iHeaderHeight - 1 ), c_white, _( "Symbol" ) ); + mvwprintz( w_header, point( 62, iHeaderHeight - 1 ), c_white, _( "Enabled" ) ); wnoutrefresh( w_header ); - mvwprintz( w_header, point( 39, 0 ), c_white, _( "Auto notes enabled:" ) ); + // TODO: Show info about custom symbols (hotkey, hint, state) + std::string header_info_custom_symbols = string_format( _( "%1$s %2$s" ), + ctx.get_desc( "CHANGE_MAPEXTRA_CHARACTER" ), _( "Change a symbol for map extra" ) ); + // NOLINTNEXTLINE(cata-use-named-point-constants) + fold_and_print( w_header, point( 0, 1 ), FULL_SCREEN_WIDTH - 2, c_white, + header_info_custom_symbols ); + + mvwprintz( w_header, point( 39, 1 ), c_white, _( "Auto notes enabled:" ) ); int currentX = 60; - currentX += shortcut_print( w_header, point( currentX, 0 ), - get_option( "AUTO_NOTES" ) ? c_light_green : c_light_red, c_white, - get_option( "AUTO_NOTES" ) ? _( "True" ) : _( "False" ) ); + mvwprintz( w_header, point( currentX, 1 ), c_white, + std::string( FULL_SCREEN_WIDTH - 2 - currentX, ' ' ) ); + const bool enabled_auto_notes_ME = get_option( "AUTO_NOTES_MAP_EXTRAS" ); + currentX += shortcut_print( w_header, point( currentX, 1 ), + enabled_auto_notes_ME ? c_light_green : c_light_red, c_white, + enabled_auto_notes_ME ? _( "True" ) : _( "False" ) ); - currentX += shortcut_print( w_header, point( currentX, 0 ), c_white, c_light_green, " " ); - shortcut_print( w_header, point( currentX, 0 ), c_white, c_light_green, _( "witch " ) ); + currentX += shortcut_print( w_header, point( currentX, 1 ), c_white, c_light_green, " " ); + shortcut_print( w_header, point( currentX, 1 ), c_white, c_light_green, _( "witch " ) ); // Clear table for( int y = 0; y < iContentHeight; y++ ) { @@ -277,7 +366,7 @@ void auto_note_manager_gui::show() } } - draw_scrollbar( w_border, currentLine, iContentHeight, cacheSize, point( 0, 4 ) ); + draw_scrollbar( w_border, currentLine, iContentHeight, cacheSize, point( 0, iHeaderHeight + 1 ) ); if( emptyMode ) { // NOLINTNEXTLINE(cata-use-named-point-constants) @@ -292,10 +381,16 @@ void auto_note_manager_gui::show() const auto &cacheEntry = mapExtraCache[displayCacheEntry]; const nc_color lineColor = ( i == currentLine ) ? hilite( c_white ) : c_white; - const nc_color statusColor = cacheEntry.second ? c_green : c_red; + const nc_color statusColor = enabled_auto_notes_ME ? ( cacheEntry.second ? c_green : c_red ) : + c_dark_gray; const std::string statusString = cacheEntry.second ? _( "yes" ) : _( "no" ); - const nc_color charColor = cacheEntry.first.color; - const std::string displayChar = cacheEntry.first.get_symbol(); + auto found_custom_symbol = custom_symbol_cache.find( displayCacheEntry ); + const bool has_custom_symbol = ( found_custom_symbol != custom_symbol_cache.end() ); + const nc_color charColor = has_custom_symbol ? found_custom_symbol->second.get_color() : + cacheEntry.first.color; + const std::string displayChar = has_custom_symbol ? found_custom_symbol->second.get_symbol_string() + : + cacheEntry.first.get_symbol(); mvwprintz( w, point( 1, i - startPosition ), lineColor, "" ); @@ -309,6 +404,9 @@ void auto_note_manager_gui::show() // Print the character this map extra is indicated by on the map mvwprintz( w, point( 55, i - startPosition ), charColor, "%s", displayChar ); + if( has_custom_symbol ) { + mvwprintz( w, point( 56, i - startPosition ), c_white, "*" ); + } // Since yes is longer than no, we need to clear the space for the status string before // displaying the current text. Otherwise artifacts might occur. mvwprintz( w, point( 64, i - startPosition ), statusColor, " " ); @@ -328,12 +426,7 @@ void auto_note_manager_gui::show() // Actions that also work with no items to display if( currentAction == "SWITCH_AUTO_NOTE_OPTION" ) { - get_options().get_option( "AUTO_NOTES" ).setNext(); - - if( get_option( "AUTO_NOTES" ) && !get_option( "AUTO_NOTES_MAP_EXTRAS" ) ) { - get_options().get_option( "AUTO_NOTES_MAP_EXTRAS" ).setNext(); - } - + get_options().get_option( "AUTO_NOTES_MAP_EXTRAS" ).setNext(); get_options().save(); } else if( currentAction == "QUIT" ) { break; @@ -381,12 +474,68 @@ void auto_note_manager_gui::show() } else if( currentAction == "DISABLE_MAPEXTRA_NOTE" ) { entry.second = false; wasChanged = true; + } else if( currentAction == "CHANGE_MAPEXTRA_CHARACTER" ) { + string_input_popup custom_symbol_popup; + custom_symbol_popup + .title( _( "Enter a map extra custom symbol (empty to unset):" ) ) + .width( 2 ) + .query_string(); + + if( !custom_symbol_popup.canceled() ) { + std::string custom_symbol_str = custom_symbol_popup.text(); + if( custom_symbol_str.empty() ) { + custom_symbol_cache.erase( currentItem ); + } else { + uilist ui_colors; + ui_colors.text = _( "Pick a color:" ); + int i = 0; + const std::unordered_map ¬e_color_names = get_note_color_names(); + for( const std::pair &color_pair : note_color_names ) { + ui_colors.addentry( string_format( pgettext( "note color", "%1$s:%2$s, " ), color_pair.first, + colorize( color_pair.second.name, color_pair.second.color ) ) ); + if( entry.first.color == color_pair.second.color ) { + ui_colors.selected = i; + } + i++; + } + // Default note color is the last one + const nc_color color_default = c_yellow; + const color_manager &colors = get_all_colors(); + const std::string color_default_name = colors.get_name( color_default ); + const translation color_yellow = to_translation( "color", "yellow" ); + ui_colors.addentry( string_format( _( "Default: %s" ), + colorize( color_yellow.translated(), color_default ) ) ); + + ui_colors.query(); + std::string custom_symbol_color; + if( ui_colors.ret >= 0 && static_cast( ui_colors.ret ) < note_color_names.size() ) { + auto iter = note_color_names.begin(); + std::advance( iter, ui_colors.ret ); + + // selected color + custom_symbol_color = colors.get_name( iter->second.color ); + } + + custom_symbol value_to_set; + value_to_set.set_symbol( custom_symbol_str ); + value_to_set.set_color( custom_symbol_color ); + set_cached_custom_symbol( currentItem, value_to_set ); + } + wasChanged = true; + } } else if( currentAction == "CONFIRM" ) { entry.second = !entry.second; wasChanged = true; } } + if( !get_option( "AUTO_NOTES" ) && + get_option( "AUTO_NOTES_MAP_EXTRAS" ) && + query_yn( _( "Auto notes are disabled globally.\nDo you want to enable?" ) ) ) { + get_options().get_option( "AUTO_NOTES" ).setNext(); + get_options().save(); + } + if( !was_changed() ) { return; } @@ -397,6 +546,10 @@ void auto_note_manager_gui::show() for( const auto &entry : mapExtraCache ) { settings.set_auto_note_status( entry.second.first.id, entry.second.second ); } + settings.clear_all_custom_symbols(); + for( const auto &entry : custom_symbol_cache ) { + settings.set_custom_symbol( entry.first, entry.second ); + } } } } // namespace auto_notes diff --git a/src/auto_note.h b/src/auto_note.h index 8597a2e490a64..b59bd1ce45b0f 100644 --- a/src/auto_note.h +++ b/src/auto_note.h @@ -13,6 +13,48 @@ namespace auto_notes { + +class custom_symbol +{ + private: + cata::optional symbol; + + cata::optional color; + + public: + std::string get_symbol_string() const { + return symbol ? utf32_to_utf8( *symbol ) : ""; + }; + + std::string get_color_string() const { + return color ? get_all_colors().get_name( *color ) : ""; + }; + + uint32_t get_symbol() const { + return symbol ? *symbol : UTF8_getch( "N" ); + }; + + nc_color get_color() const { + return color ? *color : c_yellow; + }; + + void set_symbol( const std::string &str ) { + if( !str.empty() ) { + symbol = UTF8_getch( str ); + } else { + symbol.reset(); + } + }; + + void set_color( const std::string &col ) { + if( !col.empty() ) { + color = get_all_colors().name_to_color( col ); + } else { + color.reset(); + } + }; +}; + /** * Class implementing the user interface for the auto note configuration. */ @@ -25,6 +67,8 @@ class auto_note_manager_gui bool was_changed() const; + void set_cached_custom_symbol( const string_id &mapExtId, const custom_symbol &symbol ); + private: /// The map extra type cache. This is initialized with all known map extra types /// and their auto note status with every call of initialize(). All changes to this @@ -35,6 +79,10 @@ class auto_note_manager_gui /// All map extra types that will be displayed in the GUI. std::vector> displayCache; + std::unordered_map, custom_symbol> custom_symbol_cache; + + void fill_custom_symbols_cache(); + bool wasChanged{false}; }; @@ -59,6 +107,13 @@ class auto_note_settings bool was_discovered( const string_id &mapExtId ) const; + public: + cata::optional get_custom_symbol( const string_id &mapExtId ) const; + + void set_custom_symbol( const string_id &mapExtId, const custom_symbol &symbol ); + + void clear_all_custom_symbols(); + public: void load(); @@ -83,6 +138,9 @@ class auto_note_settings /// This set contains the ID strings of all map extras that were already encountered by the player. /// This is used in order to avoid spoilers in the GUI. std::unordered_set> discovered; + + /// User-defined symbols and colors for the auto notes. + std::unordered_map, custom_symbol> custom_symbols; }; } // namespace auto_notes diff --git a/src/avatar.cpp b/src/avatar.cpp index a3e5fc1738786..3ee818c40f342 100644 --- a/src/avatar.cpp +++ b/src/avatar.cpp @@ -41,7 +41,9 @@ #include "iuse.h" #include "kill_tracker.h" #include "make_static.h" +#include "magic_enchantment.h" #include "map.h" +#include "map_memory.h" #include "martialarts.h" #include "messages.h" #include "mission.h" @@ -75,7 +77,6 @@ static const activity_id ACT_READ( "ACT_READ" ); static const bionic_id bio_cloak( "bio_cloak" ); -static const bionic_id bio_memory( "bio_memory" ); static const efftype_id effect_alarm_clock( "alarm_clock" ); static const efftype_id effect_boomered( "boomered" ); @@ -117,12 +118,17 @@ static const json_character_flag json_flag_ALARMCLOCK( "ALARMCLOCK" ); avatar::avatar() { + player_map_memory = std::make_unique(); show_map_memory = true; active_mission = nullptr; grab_type = object_type::NONE; calorie_diary.push_front( daily_calories{} ); } +avatar::~avatar() = default; +avatar::avatar( avatar && ) = default; +avatar &avatar::operator=( avatar && ) = default; + void avatar::toggle_map_memory() { show_map_memory = !show_map_memory; @@ -133,55 +139,45 @@ bool avatar::should_show_map_memory() return show_map_memory; } -void avatar::serialize_map_memory( JsonOut &jsout ) const +bool avatar::save_map_memory() { - player_map_memory.store( jsout ); + return player_map_memory->save( get_map().getabs( pos() ) ); } -void avatar::deserialize_map_memory( JsonIn &jsin ) +void avatar::load_map_memory() { - player_map_memory.load( jsin ); + player_map_memory->load( get_map().getabs( pos() ) ); } -memorized_terrain_tile avatar::get_memorized_tile( const tripoint &pos ) const +void avatar::prepare_map_memory_region( const tripoint &p1, const tripoint &p2 ) { - return player_map_memory.get_tile( pos ); + player_map_memory->prepare_region( p1, p2 ); +} + +const memorized_terrain_tile &avatar::get_memorized_tile( const tripoint &pos ) const +{ + return player_map_memory->get_tile( pos ); } void avatar::memorize_tile( const tripoint &pos, const std::string &ter, const int subtile, const int rotation ) { - player_map_memory.memorize_tile( max_memorized_tiles(), pos, ter, subtile, rotation ); + player_map_memory->memorize_tile( pos, ter, subtile, rotation ); } void avatar::memorize_symbol( const tripoint &pos, const int symbol ) { - player_map_memory.memorize_symbol( max_memorized_tiles(), pos, symbol ); + player_map_memory->memorize_symbol( pos, symbol ); } int avatar::get_memorized_symbol( const tripoint &p ) const { - return player_map_memory.get_symbol( p ); -} - -size_t avatar::max_memorized_tiles() const -{ - // Only check traits once a turn since this is called a huge number of times. - if( current_map_memory_turn != calendar::turn ) { - current_map_memory_turn = calendar::turn; - float map_memory_capacity_multiplier = - mutation_value( "map_memory_capacity_multiplier" ); - if( has_active_bionic( bio_memory ) ) { - map_memory_capacity_multiplier = 50; - } - current_map_memory_capacity = 2 * SEEX * 2 * SEEY * 100 * map_memory_capacity_multiplier; - } - return current_map_memory_capacity; + return player_map_memory->get_symbol( p ); } void avatar::clear_memorized_tile( const tripoint &pos ) { - player_map_memory.clear_memorized_tile( pos ); + player_map_memory->clear_memorized_tile( pos ); } std::vector avatar::get_active_missions() const @@ -653,9 +649,7 @@ void avatar::do_read( item &book ) // Enhanced Memory Banks modestly boosts experience int min_ex = std::max( 1, reading->time / 10 + learner->get_int() / 4 ); int max_ex = reading->time / 5 + learner->get_int() / 2 - originalSkillLevel; - if( has_active_bionic( bio_memory ) ) { - min_ex += 2; - } + min_ex = enchantment_cache->modify_value( enchant_vals::mod::READING_EXP, min_ex ); min_ex = adjust_for_focus( min_ex ) / 100; max_ex = adjust_for_focus( max_ex ) / 100; diff --git a/src/avatar.h b/src/avatar.h index c0fc49681fe76..0bc9de8946a7b 100644 --- a/src/avatar.h +++ b/src/avatar.h @@ -18,7 +18,6 @@ #include "game_constants.h" #include "json.h" #include "magic_teleporter_list.h" -#include "map_memory.h" #include "memory_fast.h" #include "player.h" #include "point.h" @@ -42,6 +41,8 @@ namespace catacurses class window; } // namespace catacurses enum class character_type : int; +class map_memory; +struct memorized_terrain_tile; namespace debug_menu { @@ -60,7 +61,7 @@ struct monster_visible_info { // 6 8 2 0-7 are provide by direction_from() // 5 4 3 8 is used for local monsters (for when we explain them below) std::vector unique_types[9]; - std::vector unique_mons[9]; + std::vector> unique_mons[9]; // If the monster visible in this direction is dangerous bool dangerous[8] = {}; @@ -70,13 +71,18 @@ class avatar : public player { public: avatar(); + avatar( const avatar & ) = delete; + avatar( avatar && ); + ~avatar(); + avatar &operator=( const avatar & ) = delete; + avatar &operator=( avatar && ); void store( JsonOut &json ) const; void load( const JsonObject &data ); void serialize( JsonOut &json ) const override; void deserialize( JsonIn &jsin ) override; - void serialize_map_memory( JsonOut &jsout ) const; - void deserialize_map_memory( JsonIn &jsin ); + bool save_map_memory(); + void load_map_memory(); // newcharacter.cpp bool create( character_type type, const std::string &tempname = "" ); @@ -97,17 +103,16 @@ class avatar : public player void toggle_map_memory(); bool should_show_map_memory(); + void prepare_map_memory_region( const tripoint &p1, const tripoint &p2 ); /** Memorizes a given tile in tiles mode; finalize_tile_memory needs to be called after it */ void memorize_tile( const tripoint &pos, const std::string &ter, int subtile, int rotation ); /** Returns last stored map tile in given location in tiles mode */ - memorized_terrain_tile get_memorized_tile( const tripoint &p ) const; + const memorized_terrain_tile &get_memorized_tile( const tripoint &p ) const; /** Memorizes a given tile in curses mode; finalize_terrain_memory_curses needs to be called after it */ void memorize_symbol( const tripoint &pos, int symbol ); /** Returns last stored map tile in given location in curses mode */ int get_memorized_symbol( const tripoint &p ) const; - /** Returns the amount of tiles survivor can remember. */ - size_t max_memorized_tiles() const; void clear_memorized_tile( const tripoint &pos ); nc_color basic_symbol_color() const override; @@ -290,11 +295,8 @@ class avatar : public player std::string total_daily_calories_string() const; private: - map_memory player_map_memory; + std::unique_ptr player_map_memory; bool show_map_memory; - /** Used in max_memorized_tiles to cache memory capacity. **/ - mutable time_point current_map_memory_turn = calendar::before_time_starts; - mutable size_t current_map_memory_capacity = 0; friend class debug_menu::mission_debug; /** diff --git a/src/avatar_action.cpp b/src/avatar_action.cpp index cb9b324efde4c..ccc0986c6ffb7 100644 --- a/src/avatar_action.cpp +++ b/src/avatar_action.cpp @@ -830,21 +830,21 @@ bool avatar_action::eat_here( avatar &you ) return false; } -void avatar_action::eat( avatar &you, const item_location &loc ) +void avatar_action::eat( avatar &you, const item_location &loc, bool refuel ) { std::string filter; if( !you.activity.str_values.empty() ) { filter = you.activity.str_values.back(); } avatar_action::eat( you, loc, you.activity.values, you.activity.targets, filter, - you.activity.id() ); + you.activity.id(), refuel ); } void avatar_action::eat( avatar &you, const item_location &loc, const std::vector &consume_menu_selections, const std::vector &consume_menu_selected_items, const std::string &consume_menu_filter, - activity_id type ) + activity_id type, bool refuel ) { if( !loc ) { you.cancel_activity(); @@ -852,7 +852,7 @@ void avatar_action::eat( avatar &you, const item_location &loc, return; } you.assign_activity( player_activity( consume_activity_actor( loc, consume_menu_selections, - consume_menu_selected_items, consume_menu_filter, type ) ) ); + consume_menu_selected_items, consume_menu_filter, type, refuel ) ) ); } void avatar_action::plthrow( avatar &you, item_location loc, diff --git a/src/avatar_action.h b/src/avatar_action.h index 149f55135d14c..cdc27d95f70d3 100644 --- a/src/avatar_action.h +++ b/src/avatar_action.h @@ -21,11 +21,11 @@ namespace avatar_action { /** Eat food or fuel 'E' (or 'a') */ -void eat( avatar &you, const item_location &loc ); +void eat( avatar &you, const item_location &loc, bool refuel = false ); void eat( avatar &you, const item_location &loc, const std::vector &consume_menu_selections, const std::vector &consume_menu_selected_items, - const std::string &consume_menu_filter, activity_id type ); + const std::string &consume_menu_filter, activity_id type, bool refuel = false ); // special rules for eating: grazing etc // returns false if no rules are needed bool eat_here( avatar &you ); diff --git a/src/bionics.cpp b/src/bionics.cpp index 49407f2d0b3d6..d13b1cedd372a 100644 --- a/src/bionics.cpp +++ b/src/bionics.cpp @@ -146,7 +146,6 @@ static const skill_id skill_mechanics( "mechanics" ); static const bionic_id bio_adrenaline( "bio_adrenaline" ); static const bionic_id bio_blade_weapon( "bio_blade_weapon" ); -static const bionic_id bio_blaster( "bio_blaster" ); static const bionic_id bio_blood_anal( "bio_blood_anal" ); static const bionic_id bio_blood_filter( "bio_blood_filter" ); static const bionic_id bio_claws_weapon( "bio_claws_weapon" ); @@ -155,7 +154,6 @@ static const bionic_id bio_earplugs( "bio_earplugs" ); static const bionic_id bio_ears( "bio_ears" ); static const bionic_id bio_emp( "bio_emp" ); static const bionic_id bio_evap( "bio_evap" ); -static const bionic_id bio_eye_optic( "bio_eye_optic" ); static const bionic_id bio_flashbang( "bio_flashbang" ); static const bionic_id bio_geiger( "bio_geiger" ); static const bionic_id bio_gills( "bio_gills" ); @@ -167,8 +165,6 @@ static const bionic_id bio_magnet( "bio_magnet" ); static const bionic_id bio_meteorologist( "bio_meteorologist" ); static const bionic_id bio_nanobots( "bio_nanobots" ); static const bionic_id bio_painkiller( "bio_painkiller" ); -static const bionic_id bio_power_storage( "bio_power_storage" ); -static const bionic_id bio_power_storage_mkII( "bio_power_storage_mkII" ); static const bionic_id bio_radscrubber( "bio_radscrubber" ); static const bionic_id bio_remote( "bio_remote" ); static const bionic_id bio_resonator( "bio_resonator" ); @@ -295,6 +291,7 @@ void bionic_data::load( const JsonObject &jsobj, const std::string & ) assign( jsobj, "weight_capacity_bonus", weight_capacity_bonus, false ); assign( jsobj, "act_cost", power_activate, false, 0_kJ ); assign( jsobj, "deact_cost", power_deactivate, false, 0_kJ ); + assign( jsobj, "trigger_cost", power_trigger, false, 0_kJ ); optional( jsobj, was_loaded, "time", charge_time, 0 ); @@ -331,6 +328,8 @@ void bionic_data::load( const JsonObject &jsobj, const std::string & ) optional( jsobj, was_loaded, "vitamin_absorb_mod", vitamin_absorb_mod, 1.0f ); + optional( jsobj, was_loaded, "dupes_allowed", dupes_allowed, false ); + int enchant_num = 0; for( JsonValue jv : jsobj.get_array( "enchantments" ) ) { std::string enchant_name = "INLINE_ENCH_" + name + "_" + std::to_string( enchant_num++ ); @@ -1726,10 +1725,11 @@ void Character::process_bionic( const int b ) } else if( bio.id == bio_painkiller ) { const int pkill = get_painkiller(); const int pain = get_pain(); + const units::energy trigger_cost = bio.info().power_trigger; int max_pkill = std::min( 150, pain ); if( pkill < max_pkill ) { mod_painkiller( 1 ); - mod_power_level( -2_kJ ); + mod_power_level( -trigger_cost ); } // Only dull pain so extreme that we can't pkill it safely @@ -1737,7 +1737,7 @@ void Character::process_bionic( const int b ) mod_pain( -1 ); // Negative side effect: negative stim mod_stim( -1 ); - mod_power_level( -2_kJ ); + mod_power_level( -trigger_cost ); } } else if( bio.id == bio_gills ) { if( has_effect( effect_asthma ) ) { @@ -2341,7 +2341,7 @@ ret_val Character::is_installable( const item_location &loc, const bool by return ret_val::make_failure( msg ); } else if( it->has_fault( fault_id( "fault_bionic_salvaged" ) ) ) { return ret_val::make_failure( _( "CBM already deployed. Please reset to factory state." ) ); - } else if( has_bionic( bid ) ) { + } else if( has_bionic( bid ) && !bid->dupes_allowed ) { return ret_val::make_failure( _( "CBM is already installed." ) ); } else if( !can_install_cbm_on_bp( get_occupied_bodyparts( bid ) ) ) { return ret_val::make_failure( _( "CBM not compatible with patient's body." ) ); @@ -2705,18 +2705,16 @@ int Character::get_free_bionics_slots( const bodypart_id &bp ) const void Character::add_bionic( const bionic_id &b ) { - if( has_bionic( b ) ) { + if( has_bionic( b ) && !b->dupes_allowed ) { debugmsg( "Tried to install bionic %s that is already installed!", b.c_str() ); return; } const units::energy pow_up = b->capacity; mod_max_power_level( pow_up ); - if( b == bio_power_storage || b == bio_power_storage_mkII ) { + if( pow_up > 0_J ) { add_msg_if_player( m_good, _( "Increased storage capacity by %i." ), units::to_kilojoule( pow_up ) ); - // Power Storage CBMs are not real bionic units, so return without adding it to my_bionics - return; } my_bionics->push_back( bionic( b, get_free_invlet( *this ) ) ); @@ -2767,8 +2765,11 @@ void Character::remove_bionic( const bionic_id &b ) bionic_collection new_my_bionics; // any spells you should not forget due to still having a bionic installed that has it. std::set cbm_spells; + bool skipped_installed = false; for( bionic &i : *my_bionics ) { - if( b == i.id ) { + // if we have multiples of the same bionic only remove one + if( b == i.id && !skipped_installed ) { + skipped_installed = true; continue; } @@ -2809,39 +2810,6 @@ int Character::num_bionics() const return my_bionics->size(); } -std::pair Character::amount_of_storage_bionics() const -{ - units::energy lvl = get_max_power_level(); - - // exclude amount of power capacity obtained via non-power-storage CBMs - for( const bionic &it : *my_bionics ) { - lvl -= it.info().capacity; - } - - std::pair results( 0, 0 ); - if( lvl <= 0_kJ ) { - return results; - } - - const units::energy pow_mkI = bio_power_storage->capacity; - const units::energy pow_mkII = bio_power_storage_mkII->capacity; - - while( lvl >= std::min( pow_mkI, pow_mkII ) ) { - if( one_in( 2 ) ) { - if( lvl >= pow_mkI ) { - results.first++; - lvl -= pow_mkI; - } - } else { - if( lvl >= pow_mkII ) { - results.second++; - lvl -= pow_mkII; - } - } - } - return results; -} - bionic &Character::bionic_at_index( int i ) { return ( *my_bionics )[i]; diff --git a/src/bionics.h b/src/bionics.h index e059a913fd769..0170cd740d9ae 100644 --- a/src/bionics.h +++ b/src/bionics.h @@ -41,10 +41,14 @@ struct bionic_data { units::energy power_deactivate = 0_kJ; /** Power cost over time, does nothing without a non-zero charge_time */ units::energy power_over_time = 0_kJ; + /** Power cost when the bionic's special effect is triggered */ + units::energy power_trigger = 0_kJ; /** How often a bionic draws or produces power while active in turns */ int charge_time = 0; /** Power bank size **/ units::energy capacity = 0_kJ; + /** If true multiples of this can be installed */ + bool dupes_allowed = false; /** Is true if a bionic is an active instead of a passive bionic */ bool activated = false; /** diff --git a/src/bionics_ui.cpp b/src/bionics_ui.cpp index 96c6b08f17428..5fd87546e2ba1 100644 --- a/src/bionics_ui.cpp +++ b/src/bionics_ui.cpp @@ -7,6 +7,7 @@ #include #include "avatar.h" +#include "avatar_action.h" #include "bionics.h" #include "bodypart.h" #include "calendar.h" @@ -17,6 +18,7 @@ #include "enums.h" #include "flat_set.h" #include "game.h" +#include "game_inventory.h" #include "input.h" #include "inventory.h" #include "material.h" @@ -268,9 +270,10 @@ static void draw_bionics_titlebar( const catacurses::window &window, avatar *p, std::string desc_append = string_format( _( "[%s] Reassign, [%s] Switch tabs, " "[%s] Toggle fuel saving mode, " - "[%s] Toggle auto start mode." ), + "[%s] Toggle auto start mode, " + "[%s] Open refueling menu." ), ctxt.get_desc( "REASSIGN" ), ctxt.get_desc( "NEXT_TAB" ), ctxt.get_desc( "TOGGLE_SAFE_FUEL" ), - ctxt.get_desc( "TOGGLE_AUTO_START" ) ); + ctxt.get_desc( "TOGGLE_AUTO_START" ), ctxt.get_desc( "REFUEL" ) ); desc_append += string_format( _( " [%s] Sort: %s" ), ctxt.get_desc( "SORT" ), sort_mode_str( uistate.bionic_sort_mode ) ); std::string desc; @@ -307,6 +310,10 @@ static std::string build_bionic_poweronly_string( const bionic &bio ) properties.push_back( string_format( _( "%s deact" ), units::display( bio_data.power_deactivate ) ) ); } + if( bio_data.power_trigger > 0_kJ ) { + properties.push_back( string_format( _( "%s trigger" ), + units::display( bio_data.power_trigger ) ) ); + } if( bio_data.charge_time > 0 && bio_data.power_over_time > 0_kJ ) { properties.push_back( bio_data.charge_time == 1 ? string_format( _( "%s/turn" ), units::display( bio_data.power_over_time ) ) @@ -632,6 +639,7 @@ void avatar::power_bionics() ctxt.register_action( "QUIT" ); ctxt.register_action( "HELP_KEYBINDINGS" ); ctxt.register_action( "TOGGLE_SAFE_FUEL" ); + ctxt.register_action( "REFUEL" ); ctxt.register_action( "TOGGLE_AUTO_START" ); ctxt.register_action( "SORT" ); @@ -831,6 +839,9 @@ void avatar::power_bionics() popup( _( "You can't toggle fuel saving mode on a non-fueled CBM." ) ); } } + } else if( action == "REFUEL" ) { + avatar_action::eat( get_avatar(), game_menus::inv::consume_fuel( get_avatar() ), true ); + break; } else if( action == "TOGGLE_AUTO_START" ) { auto &bio_list = tab_mode == TAB_ACTIVE ? active : passive; if( !current_bionic_list->empty() ) { diff --git a/src/cached_options.cpp b/src/cached_options.cpp index 3f87c82385472..7dfca47e66b92 100644 --- a/src/cached_options.cpp +++ b/src/cached_options.cpp @@ -9,6 +9,7 @@ int message_cooldown; bool test_mode; bool tile_iso; bool use_tiles; +bool use_tiles_overmap; test_mode_spilling_action_t test_mode_spilling_action = test_mode_spilling_action_t::spill_all; bool direct3d_mode; bool pixel_minimap_option; diff --git a/src/cached_options.h b/src/cached_options.h index e6ac4695eae5e..f89b4fd4677f8 100644 --- a/src/cached_options.h +++ b/src/cached_options.h @@ -14,6 +14,7 @@ extern int message_ttl; extern int message_cooldown; extern bool tile_iso; extern bool use_tiles; +extern bool use_tiles_overmap; extern bool pixel_minimap_option; // test_mode is not a regular game option; it's true when we are running unit diff --git a/src/cata_tiles.cpp b/src/cata_tiles.cpp index 97a06aaa47e3e..2bf90a6a703e4 100644 --- a/src/cata_tiles.cpp +++ b/src/cata_tiles.cpp @@ -1055,6 +1055,30 @@ struct tile_render_info { } }; +static std::map display_npc_attack_potential() +{ + avatar &you = get_avatar(); + npc avatar_as_npc; + std::ostringstream os; + JsonOut jsout( os ); + jsout.write( you ); + std::istringstream is( os.str() ); + JsonIn jsin( is ); + jsin.read( avatar_as_npc ); + avatar_as_npc.regen_ai_cache(); + avatar_as_npc.evaluate_best_weapon( nullptr ); + std::map effectiveness_map; + std::vector effectiveness = + avatar_as_npc.get_current_attack()->all_evaluations( avatar_as_npc, nullptr ); + for( const npc_attack_rating &effectiveness_at_point : effectiveness ) { + if( !effectiveness_at_point.value() ) { + continue; + } + effectiveness_map[effectiveness_at_point.target()] = *effectiveness_at_point.value(); + } + return effectiveness_map; +} + void cata_tiles::draw( const point &dest, const tripoint ¢er, int width, int height, std::multimap &overlay_strings, color_block_overlay_container &color_blocks ) @@ -1110,6 +1134,22 @@ void cata_tiles::draw( const point &dest, const tripoint ¢er, int width, int const level_cache &ch = here.access_cache( center.z ); + // Map memory should be at least the size of the view range + // so that new tiles can be memorized, and at least the size of the display + // since at farthest zoom displayed area may be bigger than view range. + const point min_mm_reg = point( + std::min( o.x, min_visible.x ), + std::min( o.y, min_visible.y ) + ); + const point max_mm_reg = point( + std::max( s.x + o.x, max_visible.x ), + std::max( s.y + o.y, max_visible.y ) + ); + you.prepare_map_memory_region( + here.getabs( tripoint( min_mm_reg, center.z ) ), + here.getabs( tripoint( max_mm_reg, center.z ) ) + ); + //set up a default tile for the edges outside the render area visibility_type offscreen_type = visibility_type::DARK; if( cache.u_is_boomered ) { @@ -1165,7 +1205,14 @@ void cata_tiles::draw( const point &dest, const tripoint ¢er, int width, int would_apply_vision_effects( here.get_visibility( ch.visibility_cache[np.x][np.y], cache ) ); }; - + std::map npc_attack_rating_map; + int max_npc_effectiveness = 0; + if( g->display_overlay_state( ACTION_DISPLAY_NPC_ATTACK_POTENTIAL ) ) { + npc_attack_rating_map = display_npc_attack_potential(); + for( const std::pair &pair : npc_attack_rating_map ) { + max_npc_effectiveness = std::max( pair.second, max_npc_effectiveness ); + } + } for( int row = min_row; row < max_row; row ++ ) { std::vector draw_points; draw_points.reserve( max_col ); @@ -1248,6 +1295,23 @@ void cata_tiles::draw( const point &dest, const tripoint ¢er, int width, int } } + if( g->display_overlay_state( ACTION_DISPLAY_NPC_ATTACK_POTENTIAL ) ) { + if( npc_attack_rating_map.count( pos ) ) { + const int val = npc_attack_rating_map.at( pos ); + short color; + if( val <= 0 ) { + color = catacurses::red; + } else if( val == max_npc_effectiveness ) { + color = catacurses::cyan; + } else { + color = catacurses::white; + } + overlay_strings.emplace( player_to_screen( point( x, y ) ) + half_tile, + formatted_text( std::to_string( val ), color, + direction::NORTH ) ); + } + } + // Add temperature value to the overlay_strings list for every visible tile when // displaying temperature if( g->display_overlay_state( ACTION_DISPLAY_TEMPERATURE ) && !invisible[0] ) { @@ -1475,7 +1539,7 @@ void cata_tiles::draw( const point &dest, const tripoint ¢er, int width, int do_draw_cursor || do_draw_highlight || do_draw_weather || do_draw_sct || do_draw_zones; - draw_footsteps_frame(); + draw_footsteps_frame( center ); if( in_animation ) { if( do_draw_explosion ) { draw_explosion_frame(); @@ -1812,9 +1876,13 @@ bool cata_tiles::draw_from_id_string( const std::string &id, TILE_CATEGORY categ col = tmp.color(); } else if( category == C_OVERMAP_TERRAIN ) { const oter_str_id tmp( id ); + const oter_type_str_id type_tmp( id ); if( tmp.is_valid() ) { - sym = tmp->get_symbol().front(); + sym = tmp->get_uint32_symbol(); col = tmp->get_color(); + } else if( type_tmp.is_valid() ) { + sym = type_tmp->get_symbol().front(); + col = type_tmp->color; } } else if( category == C_OVERMAP_NOTE ) { sym = id[5]; @@ -1823,42 +1891,54 @@ bool cata_tiles::draw_from_id_string( const std::string &id, TILE_CATEGORY categ // Special cases for walls switch( sym ) { case LINE_XOXO: + case LINE_XOXO_UNICODE: sym = LINE_XOXO_C; break; case LINE_OXOX: + case LINE_OXOX_UNICODE: sym = LINE_OXOX_C; break; case LINE_XXOO: + case LINE_XXOO_UNICODE: sym = LINE_XXOO_C; break; case LINE_OXXO: + case LINE_OXXO_UNICODE: sym = LINE_OXXO_C; break; case LINE_OOXX: + case LINE_OOXX_UNICODE: sym = LINE_OOXX_C; break; case LINE_XOOX: + case LINE_XOOX_UNICODE: sym = LINE_XOOX_C; break; case LINE_XXXO: + case LINE_XXXO_UNICODE: sym = LINE_XXXO_C; break; case LINE_XXOX: + case LINE_XXOX_UNICODE: sym = LINE_XXOX_C; break; case LINE_XOXX: + case LINE_XOXX_UNICODE: sym = LINE_XOXX_C; break; case LINE_OXXX: + case LINE_OXXX_UNICODE: sym = LINE_OXXX_C; break; case LINE_XXXX: + case LINE_XXXX_UNICODE: sym = LINE_XXXX_C; break; default: // sym goes unchanged break; } + if( sym != 0 && sym < 256 ) { // see cursesport.cpp, function wattron const int pairNumber = col.to_color_pair_index(); @@ -1872,7 +1952,6 @@ bool cata_tiles::draw_from_id_string( const std::string &id, TILE_CATEGORY categ if( sym != LINE_XOXO_C && sym != LINE_OXOX_C ) { rota = 0; } - if( tileset_ptr->find_tile_type( generic_id ) ) { return draw_from_id_string( generic_id, pos, subtile, rota, ll, apply_night_vision_goggles ); @@ -3579,11 +3658,25 @@ void cata_tiles::draw_zones_frame() } } -void cata_tiles::draw_footsteps_frame() + +void cata_tiles::draw_footsteps_frame( const tripoint ¢er ) { - static const std::string footstep_tilestring = "footstep"; - for( const auto &footstep : sounds::get_footstep_markers() ) { - draw_from_id_string( footstep_tilestring, footstep, 0, 0, lit_level::LIT, false ); + static const std::string id_footstep = "footstep"; + static const std::string id_footstep_above = "footstep_above"; + static const std::string id_footstep_below = "footstep_below"; + + + const tile_type *tl_above = tileset_ptr->find_tile_type( id_footstep_above ); + const tile_type *tl_below = tileset_ptr->find_tile_type( id_footstep_below ); + + for( const tripoint &pos : sounds::get_footstep_markers() ) { + if( pos.z > center.z && tl_above ) { + draw_from_id_string( id_footstep_above, pos, 0, 0, lit_level::LIT, false ); + } else if( pos.z < center.z && tl_below ) { + draw_from_id_string( id_footstep_below, pos, 0, 0, lit_level::LIT, false ); + } else { + draw_from_id_string( id_footstep, pos, 0, 0, lit_level::LIT, false ); + } } } /* END OF ANIMATION FUNCTIONS */ diff --git a/src/cata_tiles.h b/src/cata_tiles.h index f5fe31e75a727..cc99a4d0dd562 100644 --- a/src/cata_tiles.h +++ b/src/cata_tiles.h @@ -444,7 +444,7 @@ class cata_tiles void draw_hit_frame(); void void_hit(); - void draw_footsteps_frame(); + void draw_footsteps_frame( const tripoint ¢er ); // pseudo-animated layer, not really though. void init_draw_line( const tripoint &p, std::vector trajectory, diff --git a/src/character.cpp b/src/character.cpp index 0b20b5ad2ad50..1a136908876c5 100644 --- a/src/character.cpp +++ b/src/character.cpp @@ -20,6 +20,7 @@ #include "anatomy.h" #include "avatar.h" #include "bionics.h" +#include "cached_options.h" #include "cata_utility.h" #include "catacharset.h" #include "character_martial_arts.h" @@ -237,6 +238,8 @@ static const skill_id skill_smg( "smg" ); static const skill_id skill_swimming( "swimming" ); static const skill_id skill_throw( "throw" ); +static const proficiency_id proficiency_prof_spotting( "prof_spotting" ); + static const species_id species_HUMAN( "HUMAN" ); static const species_id species_ROBOT( "ROBOT" ); @@ -274,16 +277,12 @@ static const trait_id trait_WOOLALLERGY( "WOOLALLERGY" ); static const bionic_id bio_ads( "bio_ads" ); static const bionic_id bio_blaster( "bio_blaster" ); static const bionic_id bio_voice( "bio_voice" ); -static const bionic_id bio_flashlight( "bio_flashlight" ); static const bionic_id bio_gills( "bio_gills" ); static const bionic_id bio_ground_sonar( "bio_ground_sonar" ); static const bionic_id bio_hydraulics( "bio_hydraulics" ); -static const bionic_id bio_jointservo( "bio_jointservo" ); -static const bionic_id bio_leukocyte( "bio_leukocyte" ); static const bionic_id bio_memory( "bio_memory" ); static const bionic_id bio_railgun( "bio_railgun" ); static const bionic_id bio_shock_absorber( "bio_shock_absorber" ); -static const bionic_id bio_tattoo_led( "bio_tattoo_led" ); static const bionic_id bio_ups( "bio_ups" ); // Aftershock stuff! static const bionic_id afs_bio_linguistic_coprocessor( "afs_bio_linguistic_coprocessor" ); @@ -308,7 +307,6 @@ static const trait_id trait_DOWN( "DOWN" ); static const trait_id trait_ELECTRORECEPTORS( "ELECTRORECEPTORS" ); static const trait_id trait_ELFA_FNV( "ELFA_FNV" ); static const trait_id trait_ELFA_NV( "ELFA_NV" ); -static const trait_id trait_FASTLEARNER( "FASTLEARNER" ); static const trait_id trait_FAST_REFLEXES( "FAST_REFLEXES" ); static const trait_id trait_FEL_NV( "FEL_NV" ); static const trait_id trait_GILLS( "GILLS" ); @@ -352,7 +350,6 @@ static const trait_id trait_SHOUT2( "SHOUT2" ); static const trait_id trait_SHOUT3( "SHOUT3" ); static const trait_id trait_SLIMESPAWNER( "SLIMESPAWNER" ); static const trait_id trait_SLIMY( "SLIMY" ); -static const trait_id trait_SLOWLEARNER( "SLOWLEARNER" ); static const trait_id trait_STRONGSTOMACH( "STRONGSTOMACH" ); static const trait_id trait_THRESH_CEPHALOPOD( "THRESH_CEPHALOPOD" ); static const trait_id trait_THRESH_INSECT( "THRESH_INSECT" ); @@ -504,6 +501,15 @@ character_id Character::getID() const return this->id; } +void Character::randomize_height() +{ + // Height distribution data is taken from CDC distributes statistics for the US population + // https://github.com/CleverRaven/Cataclysm-DDA/pull/49270#issuecomment-861339732 + const int x = std::round( normal_roll( 168.35, 15.50 ) ); + // clamping to 145..200 because this is the bounds of what player can set, see newplayer.cpp + init_height = clamp( x, 145, 200 ); +} + void Character::randomize_blood() { // Blood type distribution data is taken from this study on blood types of @@ -1420,13 +1426,15 @@ float Character::get_melee() const bool Character::uncanny_dodge() { - bool is_u = is_avatar(); bool seen = get_player_view().sees( *this ); - const bool can_dodge_bio = get_power_level() >= 75_kJ && has_active_bionic( bio_uncanny_dodge ); + const units::energy trigger_cost = bio_uncanny_dodge->power_trigger; + + const bool can_dodge_bio = get_power_level() >= trigger_cost && + has_active_bionic( bio_uncanny_dodge ); const bool can_dodge_mut = get_stamina() >= 300 && has_trait_flag( json_flag_UNCANNY_DODGE ); - const bool can_dodge_both = get_power_level() >= 37500_J && + const bool can_dodge_both = get_power_level() >= ( trigger_cost / 2 ) && has_active_bionic( bio_uncanny_dodge ) && get_stamina() >= 150 && has_trait_flag( json_flag_UNCANNY_DODGE ); @@ -1436,10 +1444,10 @@ bool Character::uncanny_dodge() tripoint adjacent = adjacent_tile(); if( can_dodge_both ) { - mod_power_level( -37500_J ); + mod_power_level( -trigger_cost / 2 ); mod_stamina( -150 ); } else if( can_dodge_bio ) { - mod_power_level( -75_kJ ); + mod_power_level( -trigger_cost ); } else if( can_dodge_mut ) { mod_stamina( -300 ); } @@ -2252,6 +2260,18 @@ bool Character::has_any_bionic() const return !get_bionics().empty(); } +std::vector Character::get_pseudo_items() const +{ + std::vector result; + for( const bionic &bio : *my_bionics ) { + const bionic_data &bid = bio.info(); + if( bid.fake_item && ( !bid.activated || bio.powered ) ) { + result.emplace_back( item( bid.fake_item ) ); + } + } + return result; +} + bionic_id Character::get_remote_fueled_bionic() const { for( const bionic_id &bid : get_bionics() ) { @@ -2348,8 +2368,8 @@ void Character::practice( const skill_id &id, int amount, int cap, bool suppress static const int INTMAX_SQRT = std::floor( std::sqrt( std::numeric_limits::max() ) ); SkillLevel &level = get_skill_level_object( id ); const Skill &skill = id.obj(); - if( !level.can_train() && !in_sleep_state() ) { - // If leveling is disabled, don't train, don't drain focus, don't print anything + if( !level.can_train() || in_sleep_state() || ( get_skill_level( id ) >= MAX_SKILL ) ) { + // Do not practice if: cannot train, asleep, or at effective skill cap // Leaving as a skill method rather than global for possible future skill cap setting return; } @@ -2937,7 +2957,7 @@ std::list Character::remove_worn_items_with( const std::function &list ) { - for( item *it : parent->contents.all_items_top( item_pocket::pocket_type::CONTAINER ) ) { + for( item *it : parent->all_items_top( item_pocket::pocket_type::CONTAINER ) ) { item_location child( parent, it ); recur_internal_locations( child, list ); } @@ -3566,7 +3586,7 @@ units::mass Character::weight_carried_with_tweaks( const item_tweaks &tweaks ) c units::mass ret = 0_gram; for( const item &i : worn ) { if( !without.count( &i ) ) { - for( const item *j : i.contents.all_items_ptr( item_pocket::pocket_type::CONTAINER ) ) { + for( const item *j : i.all_items_ptr( item_pocket::pocket_type::CONTAINER ) ) { if( j->count_by_charges() ) { ret -= get_selected_stack_weight( j, without ); } else if( without.count( j ) ) { @@ -3581,7 +3601,7 @@ units::mass Character::weight_carried_with_tweaks( const item_tweaks &tweaks ) c units::mass weaponweight = 0_gram; if( !without.count( &weapon ) ) { weaponweight += weapon.weight(); - for( const item *i : weapon.contents.all_items_ptr( item_pocket::pocket_type::CONTAINER ) ) { + for( const item *i : weapon.all_items_ptr( item_pocket::pocket_type::CONTAINER ) ) { if( i->count_by_charges() ) { weaponweight -= get_selected_stack_weight( i, without ); } else if( without.count( i ) ) { @@ -4334,12 +4354,12 @@ void Character::do_skill_rust() continue; } - const bool charged_bio_mem = get_power_level() > 25_J && has_active_bionic( bio_memory ); + const int rust_resist = enchantment_cache->modify_value( enchant_vals::mod::READING_EXP, 0 ); const int oldSkillLevel = skill_level_obj.level(); - if( skill_level_obj.rust( charged_bio_mem, rust_rate_tmp ) ) { + if( skill_level_obj.rust( rust_resist, rust_rate_tmp ) ) { add_msg_if_player( m_warning, _( "Your knowledge of %s begins to fade, but your memory banks retain it!" ), aSkill.name() ); - mod_power_level( -25_J ); + mod_power_level( -bio_memory->power_trigger ); } const int newSkill = skill_level_obj.level(); if( newSkill < oldSkillLevel ) { @@ -4923,6 +4943,12 @@ int Character::get_speed() const return Creature::get_speed() + get_speedydex_bonus( get_dex() ); } +int Character::get_eff_per() const +{ + return Character::get_per() + int( Character::has_proficiency( proficiency_prof_spotting ) ) * + Character::get_per_base(); +} + int Character::ranged_dex_mod() const { ///\EFFECT_DEX <20 increases ranged penalty @@ -5521,12 +5547,14 @@ void Character::update_health( int external_modifiers ) } // Active leukocyte breeder will keep your health near 100 - int effective_healthy_mod = get_healthy_mod(); - if( has_active_bionic( bio_leukocyte ) ) { - // Side effect: dependency - mod_healthy_mod( -50, -200 ); - effective_healthy_mod = 100; + int effective_healthy_mod = enchantment_cache->modify_value( + enchant_vals::mod::EFFECTIVE_HEALTH_MOD, 0 ); + if( effective_healthy_mod == 0 ) { + effective_healthy_mod = get_healthy_mod(); } + int healthy_mod = enchantment_cache->modify_value( enchant_vals::mod::MOD_HEALTH, 0 ); + int healthy_mod_cap = enchantment_cache->modify_value( enchant_vals::mod::MOD_HEALTH_CAP, 0 ); + mod_healthy_mod( healthy_mod, healthy_mod_cap ); // Health tends toward healthy_mod. // For small differences, it changes 4 points per day @@ -6990,7 +7018,7 @@ Character::comfort_response_t Character::base_comfort_value( const tripoint &p ) // Only one item is allowed, so we don't fill our pillowcase with nails continue; } - for( const item *it : items_it.contents.all_items_top() ) { + for( const item *it : items_it.all_items_top() ) { if( it->has_flag( flag_SLEEP_AID ) ) { // Note: BED + SLEEP_AID = 9 pts, or 1 pt below very_comfortable comfort += 1 + static_cast( comfort_level::slightly_comfortable ); @@ -7047,7 +7075,7 @@ Character::comfort_response_t Character::base_comfort_value( const tripoint &p ) // Only one item is allowed, so we don't fill our pillowcase with nails continue; } - for( const item *it : items_it.contents.all_items_top() ) { + for( const item *it : items_it.all_items_top() ) { if( it->has_flag( flag_SLEEP_AID ) ) { // Note: BED + SLEEP_AID = 9 pts, or 1 pt below very_comfortable comfort += 1 + static_cast( comfort_level::slightly_comfortable ); @@ -7719,11 +7747,10 @@ float Character::active_light() const lumination = std::max( lumination, mut_lum ); - if( lumination < 60 && has_active_bionic( bio_flashlight ) ) { - lumination = 60; - } else if( lumination < 5 && ( has_effect( effect_glowing ) || - ( has_active_bionic( bio_tattoo_led ) || - has_effect( effect_glowy_led ) ) ) ) { + lumination = std::max( lumination, + static_cast( enchantment_cache->modify_value( enchant_vals::mod::LUMINATION, 0 ) ) ); + + if( lumination < 5 && ( has_effect( effect_glowing ) || has_effect( effect_glowy_led ) ) ) { lumination = 5; } return lumination; @@ -8066,7 +8093,6 @@ mutation_value_map = { { "mana_regen_multiplier", calc_mutation_value_multiplicative<&mutation_branch::mana_regen_multiplier> }, { "bionic_mana_penalty", calc_mutation_value_multiplicative<&mutation_branch::bionic_mana_penalty> }, { "casting_time_multiplier", calc_mutation_value_multiplicative<&mutation_branch::casting_time_multiplier> }, - { "speed_modifier", calc_mutation_value_multiplicative<&mutation_branch::speed_modifier> }, { "movecost_modifier", calc_mutation_value_multiplicative<&mutation_branch::movecost_modifier> }, { "movecost_flatground_modifier", calc_mutation_value_multiplicative<&mutation_branch::movecost_flatground_modifier> }, { "movecost_obstacle_modifier", calc_mutation_value_multiplicative<&mutation_branch::movecost_obstacle_modifier> }, @@ -8078,7 +8104,6 @@ mutation_value_map = { { "noise_modifier", calc_mutation_value_multiplicative<&mutation_branch::noise_modifier> }, { "overmap_sight", calc_mutation_value_additive<&mutation_branch::overmap_sight> }, { "overmap_multiplier", calc_mutation_value_multiplicative<&mutation_branch::overmap_multiplier> }, - { "map_memory_capacity_multiplier", calc_mutation_value_multiplicative<&mutation_branch::map_memory_capacity_multiplier> }, { "reading_speed_multiplier", calc_mutation_value_multiplicative<&mutation_branch::reading_speed_multiplier> }, { "skill_rust_multiplier", calc_mutation_value_multiplicative<&mutation_branch::skill_rust_multiplier> }, { "crafting_speed_multiplier", calc_mutation_value_multiplicative<&mutation_branch::crafting_speed_multiplier> }, @@ -9577,7 +9602,7 @@ void Character::absorb_hit( const bodypart_id &bp, damage_instance &dam ) } else if( elem.type == damage_type::STAB || elem.type == damage_type::BULLET ) { elem.amount -= rng( 1, 8 ); } - mod_power_level( -25_kJ ); + mod_power_level( -bio_ads->power_trigger ); } if( elem.amount < 0 ) { elem.amount = 0; @@ -9627,7 +9652,7 @@ void Character::absorb_hit( const bodypart_id &bp, damage_instance &dam ) destroyed_armor_msg( *this, pre_damage_name ); armor_destroyed = true; armor.on_takeoff( *this ); - for( const item *it : armor.contents.all_items_top( item_pocket::pocket_type::CONTAINER ) ) { + for( const item *it : armor.all_items_top( item_pocket::pocket_type::CONTAINER ) ) { worn_remains.push_back( *it ); } // decltype is the type name of the iterator, note that reverse_iterator::base returns the @@ -9851,7 +9876,7 @@ std::string Character::weapname() const const item *mag = weapon.magazine_current(); mag_ammo = string_format( " (0/%d)", mag->ammo_capacity( item( mag->ammo_default() ).ammo_type() ) ); - } else { + } else if( weapon.is_reloadable() ) { mag_ammo = _( " (empty)" ); } } @@ -9875,7 +9900,8 @@ void Character::on_hit( Creature *source, bodypart_id bp_hit, } bool u_see = get_player_view().sees( *this ); - if( has_active_bionic( bionic_id( "bio_ods" ) ) && get_power_level() > 5_kJ ) { + const units::energy trigger_cost_base = bionic_id( "bio_ods" )->power_trigger; + if( has_active_bionic( bionic_id( "bio_ods" ) ) && get_power_level() > ( 5 * trigger_cost_base ) ) { if( is_player() ) { add_msg( m_good, _( "Your offensive defense system shocks %s in mid-attack!" ), source->disp_name() ); @@ -9885,7 +9911,7 @@ void Character::on_hit( Creature *source, bodypart_id bp_hit, source->disp_name() ); } int shock = rng( 1, 4 ); - mod_power_level( units::from_kilojoule( -shock ) ); + mod_power_level( -shock * trigger_cost_base ); damage_instance ods_shock_damage; ods_shock_damage.add_damage( damage_type::ELECTRIC, shock * 5 ); // Should hit body part used for attack @@ -11689,15 +11715,8 @@ bool Character::has_opposite_trait( const trait_id &flag ) const int Character::adjust_for_focus( int amount ) const { int effective_focus = get_focus(); - if( has_trait( trait_FASTLEARNER ) ) { - effective_focus += 15; - } - if( has_active_bionic( bio_memory ) ) { - effective_focus += 10; - } - if( has_trait( trait_SLOWLEARNER ) ) { - effective_focus -= 15; - } + effective_focus = enchantment_cache->modify_value( enchant_vals::mod::LEARNING_FOCUS, + effective_focus ); effective_focus += ( get_int() - get_option( "INT_BASED_LEARNING_BASE_VALUE" ) ) * get_option( "INT_BASED_LEARNING_FOCUS_ADJUSTMENT" ); effective_focus = std::max( effective_focus, 1 ); @@ -11837,15 +11856,6 @@ int Character::run_cost( int base_cost, bool diag ) const if( has_trait( trait_PADDED_FEET ) && !footwear_factor() ) { movecost *= .9f; } - if( has_active_bionic( bio_jointservo ) ) { - if( is_running() ) { - movecost *= 0.85f; - } else { - movecost *= 0.95f; - } - } else if( has_bionic( bio_jointservo ) ) { - movecost *= 1.1f; - } if( worn_with_flag( flag_SLOWS_MOVEMENT ) ) { movecost *= 1.1f; @@ -11934,14 +11944,6 @@ void Character::place_corpse() } } - // Restore amount of installed pseudo-modules of Power Storage Units - std::pair storage_modules = amount_of_storage_bionics(); - for( int i = 0; i < storage_modules.first; ++i ) { - body.put_in( item( "bio_power_storage" ), item_pocket::pocket_type::CORPSE ); - } - for( int i = 0; i < storage_modules.second; ++i ) { - body.put_in( item( "bio_power_storage_mkII" ), item_pocket::pocket_type::CORPSE ); - } here.add_item_or_charges( pos(), body ); } @@ -11977,14 +11979,6 @@ void Character::place_corpse( const tripoint_abs_omt &om_target ) } } - // Restore amount of installed pseudo-modules of Power Storage Units - std::pair storage_modules = amount_of_storage_bionics(); - for( int i = 0; i < storage_modules.first; ++i ) { - body.put_in( item( "bio_power_storage" ), item_pocket::pocket_type::CORPSE ); - } - for( int i = 0; i < storage_modules.second; ++i ) { - body.put_in( item( "bio_power_storage_mkII" ), item_pocket::pocket_type::CORPSE ); - } bay.add_item_or_charges( fin, body ); } @@ -12756,6 +12750,11 @@ bool Character::has_proficiency( const proficiency_id &prof ) const return _proficiencies->has_learned( prof ); } +float Character::get_proficiency_practice( const proficiency_id &prof ) const +{ + return _proficiencies->pct_practiced( prof ); +} + bool Character::has_prof_prereqs( const proficiency_id &prof ) const { return _proficiencies->has_prereqs( prof ); @@ -12817,6 +12816,15 @@ std::vector Character::learning_proficiencies() const return _proficiencies->learning_profs(); } +void Character::set_proficiency_practice( const proficiency_id &id, const time_duration &amount ) +{ + if( !test_mode ) { + return; + } + + _proficiencies->practice( id, amount, cata::nullopt ); +} + bool Character::defer_move( const tripoint &next ) { // next must be adjacent to current pos @@ -12846,7 +12854,7 @@ bool Character::add_or_drop_with_msg( item &it, const bool /*unloading*/, const bool wielded_has_it = false; // Cannot use weapon.has_item(it) because it skips any pockets that // are not containers such as magazines and magazine wells. - for( const item *scan_contents : weapon.contents.all_items_top() ) { + for( const item *scan_contents : weapon.all_items_top() ) { if( scan_contents == &it ) { wielded_has_it = true; break; @@ -12886,7 +12894,7 @@ bool Character::unload( item_location &loc, bool bypass_activity ) } int moves = 0; - for( item *contained : it.contents.all_items_top() ) { + for( item *contained : it.all_items_top() ) { moves += this->item_handling_cost( *contained ); } assign_activity( player_activity( unload_activity_actor( moves, loc ) ) ); @@ -12959,7 +12967,7 @@ bool Character::unload( item_location &loc, bool bypass_activity ) unload_activity_actor::unload( *this, targloc ); } else { int mv = 0; - for( const item *content : target->contents.all_items_top() ) { + for( const item *content : target->all_items_top() ) { // We use the same cost for both reloading and unloading mv += this->item_reload_cost( it, *content, content->charges ); } @@ -13190,3 +13198,9 @@ bool Character::has_flag( const json_character_flag &flag ) const // If this is a performance problem create a map of flags stored for a character and updated on trait, mutation, bionic add/remove, activate/deactivate, effect gain/loss return has_trait_flag( flag ) || has_bionic_with_flag( flag ) || has_effect_with_flag( flag ); } + +bool Character::is_driving() const +{ + const optional_vpart_position vp = get_map().veh_at( pos() ); + return vp && vp->vehicle().is_moving() && vp->vehicle().player_in_control( *this ); +} diff --git a/src/character.h b/src/character.h index 3784c49fd0760..148ed686285be 100644 --- a/src/character.h +++ b/src/character.h @@ -428,6 +428,7 @@ class Character : public Creature, public visitable virtual int get_int_bonus() const; int get_speed() const override; + int get_eff_per() const override; // Penalty modifiers applied for ranged attacks due to low stats virtual int ranged_dex_mod() const; @@ -1234,6 +1235,7 @@ class Character : public Creature, public visitable /** Handles bionic activation effects of the entered bionic, returns if anything activated */ bool activate_bionic( int b, bool eff_only = false, bool *close_bionics_ui = nullptr ); std::vector get_bionics() const; + std::vector get_pseudo_items() const; /** Returns amount of Storage CBMs in the corpse **/ std::pair amount_of_storage_bionics() const; /** Returns true if the player has the entered bionic id */ @@ -1833,6 +1835,7 @@ class Character : public Creature, public visitable // --------------- Proficiency Stuff ---------------- bool has_proficiency( const proficiency_id &prof ) const; + float get_proficiency_practice( const proficiency_id &prof ) const; bool has_prof_prereqs( const proficiency_id &prof ) const; void add_proficiency( const proficiency_id &prof, bool ignore_requirements = false ); void lose_proficiency( const proficiency_id &prof, bool ignore_requirements = false ); @@ -1843,6 +1846,9 @@ class Character : public Creature, public visitable std::vector known_proficiencies() const; std::vector learning_proficiencies() const; + // tests only! + void set_proficiency_practice( const proficiency_id &id, const time_duration &amount ); + // --------------- Other Stuff --------------- /** return the calendar::turn the character expired */ @@ -1864,7 +1870,7 @@ class Character : public Creature, public visitable bool cast_spell( spell &sp, bool fake_spell, cata::optional target ); void make_bleed( const effect_source &source, const bodypart_id &bp, time_duration duration, - int intensity = 1, bool permanent = false, bool force = false, bool defferred = false ); + int intensity = 1, bool permanent = false, bool force = false, bool defferred = false ) override; /** Calls Creature::normalize() * nulls out the player's weapon @@ -2136,6 +2142,8 @@ class Character : public Creature, public visitable std::string height_string() const; // returns the height of the player character in cm int height() const; + // Randomizes characters' height + void randomize_height(); // returns bodyweight of the Character units::mass bodyweight() const; // returns total weight of installed bionics @@ -2361,6 +2369,8 @@ class Character : public Creature, public visitable int nutrition_for( const item &comest ) const; /** Can the food be [theoretically] eaten no matter the consequences? */ ret_val can_eat( const item &food ) const; + /** Can the fuel be [theoretically] eaten? */ + ret_val can_consume_fuel( const item &fuel ) const; /** * Same as @ref can_eat, but takes consequences into account. * Asks about them if @param interactive is true, refuses otherwise. @@ -2655,6 +2665,9 @@ class Character : public Creature, public visitable /** Creates an auditory hallucination */ void sound_hallu(); + /** Checks if a Character is driving */ + bool is_driving() const; + /** Drenches the player with water, saturation is the percent gotten wet */ void drench( int saturation, const body_part_set &flags, bool ignore_waterproof ); /** Recalculates morale penalty/bonus from wetness based on mutations, equipment and temperature */ @@ -2905,9 +2918,6 @@ class Character : public Creature, public visitable */ void burn_fuel( int b, const auto_toggle_bionic_result &result ); - // a cache of all active enchantment values. - // is recalculated every turn in Character::recalculate_enchantment_cache - pimpl enchantment_cache; player_activity destination_activity; /// A unique ID number, assigned by the game class. Values should never be reused. character_id id; @@ -2967,6 +2977,10 @@ class Character : public Creature, public visitable public: time_point next_climate_control_check; bool last_climate_control_ret; + + // a cache of all active enchantment values. + // is recalculated every turn in Character::recalculate_enchantment_cache + pimpl enchantment_cache; }; Character &get_player_character(); diff --git a/src/condition.cpp b/src/condition.cpp index e454446372227..2d96ca862cd39 100644 --- a/src/condition.cpp +++ b/src/condition.cpp @@ -929,6 +929,14 @@ void conditional_t::set_has_power( const JsonObject &jo, const std::string &m }; } +template +void conditional_t::set_can_see( bool is_npc ) +{ + condition = [is_npc]( const T & d ) { + return d.actor( is_npc )->can_see(); + }; +} + template conditional_t::conditional_t( const JsonObject &jo ) { @@ -1234,6 +1242,8 @@ conditional_t::conditional_t( const std::string &type ) set_has_reason(); } else if( type == "mission_has_generic_rewards" ) { set_mission_has_generic_rewards(); + } else if( type == "u_can_see" || type == "npc_can_see" ) { + set_can_see( is_npc ); } else { condition = []( const T & ) { return false; diff --git a/src/condition.h b/src/condition.h index 6c72715de9b9c..0751b667f30d2 100644 --- a/src/condition.h +++ b/src/condition.h @@ -154,6 +154,7 @@ struct conditional_t { void set_has_skill( const JsonObject &jo, const std::string &member, bool is_npc = false ); void set_u_know_recipe( const JsonObject &jo, const std::string &member ); void set_mission_has_generic_rewards(); + void set_can_see( bool is_npc = false ); bool operator()( const T &d ) const { if( !condition ) { diff --git a/src/construction.cpp b/src/construction.cpp index 1da0ae0440230..4bffe44e529c7 100644 --- a/src/construction.cpp +++ b/src/construction.cpp @@ -949,8 +949,7 @@ void place_construction( const construction_group_str_id &group ) shared_ptr_fast draw_valid = make_shared_fast( [&]() { map &here = get_map(); for( auto &elem : valid ) { - here.drawsq( g->w_terrain, player_character, elem.first, true, false, - player_character.pos() + player_character.view_offset ); + here.drawsq( g->w_terrain, elem.first, drawsq_params().highlight( true ).show_items( true ) ); } } ); g->add_draw_callback( draw_valid ); diff --git a/src/consumption.cpp b/src/consumption.cpp index 430a46e02fb17..55102d8e10f29 100644 --- a/src/consumption.cpp +++ b/src/consumption.cpp @@ -635,22 +635,8 @@ morale_type Character::allergy_type( const item &food ) const ret_val Character::can_eat( const item &food ) const { - bool can_fuel_cbm = can_fuel_bionic_with( food ); - if( !food.is_comestible() && !can_fuel_cbm ) { + if( !food.is_comestible() ) { return ret_val::make_failure( _( "That doesn't look edible." ) ); - } else if( can_fuel_cbm ) { - std::string item_name = food.tname(); - material_id mat_type = food.get_base_material().id; - if( food.type->magazine ) { - const item ammo = item( food.ammo_current() ); - item_name = ammo.tname(); - mat_type = ammo.get_base_material().id; - } - if( get_fuel_capacity( mat_type ) <= 0 ) { - return ret_val::make_failure( _( "No space to store more %s" ), item_name ); - } else { - return ret_val::make_success(); - } } const auto &comest = food.get_comestible(); @@ -768,6 +754,26 @@ ret_val Character::can_eat( const item &food ) const return ret_val::make_success(); } +ret_val Character::can_consume_fuel( const item &fuel ) const +{ + if( !can_fuel_bionic_with( fuel ) ) { + return ret_val::make_failure( _( "That doesn't look useable as fuel." ) ); + } else { + std::string item_name = fuel.tname(); + material_id mat_type = fuel.get_base_material().id; + if( fuel.type->magazine ) { + const item ammo = item( fuel.ammo_current() ); + item_name = ammo.tname(); + mat_type = ammo.get_base_material().id; + } + if( get_fuel_capacity( mat_type ) <= 0 ) { + return ret_val::make_failure( _( "No space to store more %s" ), item_name ); + } + + } + return ret_val::make_success(); +} + ret_val Character::will_eat( const item &food, bool interactive ) const { const auto ret = can_eat( food ); @@ -778,7 +784,7 @@ ret_val Character::will_eat( const item &food, bool interactive ) return ret; } - // exit early for cbm fuel as we've already tested everything in can_eat + // exit early as we've already tested everything in can_eat if( !food.is_comestible() ) { return ret_val::make_success(); } @@ -1528,7 +1534,7 @@ bool Character::fuel_bionic_with( item &it ) ngettext( " load %1$i charge of %2$s in their %3$s.", " load %1$i charges of %2$s in their %3$s.", loadable ), loadable, mat->name(), bio->name ); - mod_moves( -250 ); + // Return false for magazines because only their ammo is consumed return !is_magazine; } @@ -1730,18 +1736,7 @@ static bool consume_med( item &target, player &you ) return true; } -static bool cbm_is_full( const player &guy, const item &fuel ) -{ - material_id fuel_mat; - if( fuel.is_magazine() ) { - fuel_mat = item( fuel.ammo_current() ).get_base_material().id; - } else { - fuel_mat = fuel.get_base_material().id; - } - return guy.get_fuel_capacity( fuel_mat ) > 0; -} - -trinary player::consume( item &target, bool force ) +trinary player::consume( item &target, bool force, bool refuel ) { if( target.is_null() ) { add_msg_if_player( m_info, _( "You do not have that item." ) ); @@ -1762,10 +1757,13 @@ trinary player::consume( item &target, bool force ) if( is_player() && !query_consume_ownership( target, *this ) ) { return trinary::NONE; } - if( consume_med( target, *this ) || - ( has_max_power() && get_power_level() < get_max_power_level() && - cbm_is_full( *this, target ) && fuel_bionic_with( target ) ) || - eat( target, *this, force ) ) { + + if( refuel ) { + fuel_bionic_with( target ); + return target.charges <= 0 ? trinary::ALL : trinary::SOME; + } + + if( consume_med( target, *this ) || eat( target, *this, force ) ) { get_event_bus().send( getID(), target.typeId() ); @@ -1776,7 +1774,7 @@ trinary player::consume( item &target, bool force ) return trinary::NONE; } -trinary player::consume( item_location loc, bool force ) +trinary player::consume( item_location loc, bool force, bool refuel ) { if( !loc ) { debugmsg( "Null loc to consume." ); @@ -1784,7 +1782,7 @@ trinary player::consume( item_location loc, bool force ) } contents_change_handler handler; item &target = *loc; - trinary result = consume( target, force ); + trinary result = consume( target, force, refuel ); if( result != trinary::NONE ) { handler.unseal_pocket_containing( loc ); } diff --git a/src/coordinate_conversions.cpp b/src/coordinate_conversions.cpp index 04227c08a9466..1a46a16ccb9e7 100644 --- a/src/coordinate_conversions.cpp +++ b/src/coordinate_conversions.cpp @@ -184,3 +184,13 @@ tripoint omt_to_seg_copy( const tripoint &p ) { return tripoint( divide( p.x, SEG_SIZE ), divide( p.y, SEG_SIZE ), p.z ); } + +point sm_to_mmr_remain( int &x, int &y ) +{ + return point( divide( x, MM_REG_SIZE, x ), divide( y, MM_REG_SIZE, y ) ); +} + +tripoint mmr_to_sm_copy( const tripoint &p ) +{ + return tripoint( p.x * MM_REG_SIZE, p.y * MM_REG_SIZE, p.z ); +} diff --git a/src/coordinate_conversions.h b/src/coordinate_conversions.h index ffd55c898871c..5dc3bc3a56f4e 100644 --- a/src/coordinate_conversions.h +++ b/src/coordinate_conversions.h @@ -11,6 +11,7 @@ * For documentation on coordinate systems in general see * doc/POINTS_COORDINATES.md. * + * This file provides static translation functions, named like this: @code static point _to__copy(int x, int y); @@ -165,5 +166,10 @@ inline point ms_to_omt_remain( point &p ) } // overmap terrain to map segment. tripoint omt_to_seg_copy( const tripoint &p ); +// Submap to memory map region. +point sm_to_mmr_remain( int &x, int &y ); +// Memory map region to submap. +// Note: this produces sm coords of top-left corner of the region. +tripoint mmr_to_sm_copy( const tripoint &p ); #endif // CATA_SRC_COORDINATE_CONVERSIONS_H diff --git a/src/crafting.cpp b/src/crafting.cpp index 7df0ffe241c0f..74d0251c00c41 100644 --- a/src/crafting.cpp +++ b/src/crafting.cpp @@ -453,7 +453,7 @@ static std::vector get_eligible_containers_recursive( const item & if( is_container_eligible_for_crafting( cont, allow_bucket ) ) { ret.push_back( &cont ); } - for( const item *it : cont.contents.all_items_top( item_pocket::pocket_type::CONTAINER ) ) { + for( const item *it : cont.all_items_top( item_pocket::pocket_type::CONTAINER ) ) { //buckets are never allowed when inside another container std::vector inside = get_eligible_containers_recursive( *it, false ); ret.insert( ret.end(), inside.begin(), inside.end() ); @@ -1658,7 +1658,7 @@ static void empty_buckets( Character &p ) return it.is_bucket_nonempty() && &it != &p.weapon; }, INT_MAX ); for( auto &it : buckets ) { - for( const item *in : it.contents.all_items_top() ) { + for( const item *in : it.all_items_top() ) { drop_or_handle( *in, p ); } diff --git a/src/crafting_gui.cpp b/src/crafting_gui.cpp index dc8ea31b791f0..5c6c48cc25b36 100644 --- a/src/crafting_gui.cpp +++ b/src/crafting_gui.cpp @@ -27,6 +27,7 @@ #include "json.h" #include "optional.h" #include "output.h" +#include "panels.h" #include "point.h" #include "popup.h" #include "recipe.h" @@ -227,6 +228,9 @@ static std::vector recipe_info( oss << string_format( _( "Batch time savings: %s\n" ), recp.batch_savings_string() ); + oss << string_format( _( "Activity level: %s\n" ), + activity_level::activity_level_str( recp.exertion_level() ) ); + const int makes = recp.makes_amount(); if( makes > 1 ) { oss << string_format( _( "Recipe makes: %d\n" ), makes ); @@ -816,8 +820,15 @@ const recipe *select_crafting_recipe( int &batch_size_out ) if( subtab.cur() != "CSC_*_RECENT" ) { std::stable_sort( current.begin(), current.end(), - []( const recipe * a, const recipe * b ) { - return b->difficulty < a->difficulty; + [&player_character]( const recipe * a, const recipe * b ) { + if( b->difficulty != a->difficulty ) { + return b->difficulty < a->difficulty; + } + if( a->result_name() != b->result_name() ) { + return localized_compare( a->result_name(), b->result_name() ); + } + return b->time_to_craft( player_character ) < + a->time_to_craft( player_character ); } ); std::stable_sort( current.begin(), current.end(), diff --git a/src/creature.cpp b/src/creature.cpp index 380a482f6e94d..85414aefc2863 100644 --- a/src/creature.cpp +++ b/src/creature.cpp @@ -57,11 +57,9 @@ struct mutation_branch; static const anatomy_id anatomy_human_anatomy( "human_anatomy" ); -static const efftype_id effect_bleed( "bleed" ); static const efftype_id effect_blind( "blind" ); static const efftype_id effect_bounced( "bounced" ); static const efftype_id effect_downed( "downed" ); -static const efftype_id effect_dripping_mechanical_fluid( "dripping_mechanical_fluid" ); static const efftype_id effect_foamcrete_slow( "foamcrete_slow" ); static const efftype_id effect_lying_down( "lying_down" ); static const efftype_id effect_no_sight( "no_sight" ); @@ -79,6 +77,8 @@ static const efftype_id effect_zapped( "zapped" ); static const species_id species_ROBOT( "ROBOT" ); +static const proficiency_id proficiency_prof_spotting( "prof_spotting" ); + const std::map Creature::size_map = { {"TINY", creature_size::tiny}, {"SMALL", creature_size::small}, @@ -274,6 +274,7 @@ bool Creature::sees( const Creature &critter ) const return visible( ch ); } else if( ( wanted_range > 1 && critter.digging() && here.has_flag( TFLAG_DIGGABLE, critter.pos() ) ) || + ( critter.has_flag( MF_CAMOUFLAGE ) && wanted_range > this->get_eff_per() ) || ( critter.has_flag( MF_NIGHT_INVISIBILITY ) && here.light_at( critter.pos() ) <= lit_level::LOW ) || ( critter.is_underwater() && !is_underwater() && here.is_divable( critter.pos() ) ) || ( here.has_flag_ter_or_furn( TFLAG_HIDE_PLACE, critter.pos() ) && @@ -1068,13 +1069,7 @@ void Creature::deal_damage_handle_type( const effect_source &source, const damag case damage_type::STAB: case damage_type::BULLET: // these are bleed inducing damage types - if( is_avatar() || is_npc() ) { - as_character()->make_bleed( source, bp, 1_minutes * rng( 1, adjusted_damage ) ); - } else if( in_species( species_ROBOT ) ) { - add_effect( source, effect_dripping_mechanical_fluid, 1_seconds * rng( 1, adjusted_damage ), bp ); - } else { - add_effect( source, effect_bleed, 1_minutes * rng( 1, adjusted_damage ), bp ); - } + make_bleed( source, bp, 1_minutes * rng( 1, adjusted_damage ) ); default: break; @@ -1656,6 +1651,12 @@ int Creature::get_speed() const { return get_speed_base() + get_speed_bonus(); } + +int Creature::get_eff_per() const +{ + return 0; +} + float Creature::get_dodge() const { return get_dodge_base() + get_dodge_bonus(); diff --git a/src/creature.h b/src/creature.h index 18277686792f7..1f0895b25fadf 100644 --- a/src/creature.h +++ b/src/creature.h @@ -265,7 +265,7 @@ class Creature : public location, public viewer virtual const avatar *as_avatar() const { return nullptr; } - virtual const npc *as_npc() { + virtual npc *as_npc() { return nullptr; } virtual const npc *as_npc() const { @@ -438,6 +438,11 @@ class Creature : public location, public viewer // accrue? mutates damage and pain virtual void deal_damage_handle_type( const effect_source &source, const damage_unit &du, bodypart_id bp, int &damage, int &pain ); + + // Pass handling bleed to creature/character + virtual void make_bleed( const effect_source &source, const bodypart_id &bp, time_duration duration, + int intensity = 1, bool permanent = false, bool force = false, bool defferred = false ) = 0; + // directly decrements the damage. ONLY handles damage, doesn't // increase pain, apply effects, etc virtual void apply_damage( Creature *source, bodypart_id bp, int amount, @@ -631,6 +636,7 @@ class Creature : public location, public viewer virtual float get_hit() const; virtual int get_speed() const; + virtual int get_eff_per() const; virtual creature_size get_size() const = 0; virtual int get_hp( const bodypart_id &bp ) const; virtual int get_hp() const; diff --git a/src/cuboid_rectangle.h b/src/cuboid_rectangle.h index 5179333c0d104..507059aad2fdc 100644 --- a/src/cuboid_rectangle.h +++ b/src/cuboid_rectangle.h @@ -33,6 +33,13 @@ struct half_open_rectangle : rectangle { return Traits::x( p ) >= Traits::x( p_min ) && Traits::x( p ) < Traits::x( p_max ) && Traits::y( p ) >= Traits::y( p_min ) && Traits::y( p ) < Traits::y( p_max ); } + constexpr bool overlaps( const rectangle &r ) const { + using Traits = point_traits; + return !( Traits::x( r.p_min ) >= Traits::x( p_max ) || + Traits::y( r.p_min ) >= Traits::y( p_max ) || + Traits::x( p_min ) >= Traits::x( r.p_max ) || + Traits::y( p_min ) >= Traits::y( r.p_max ) ); + } }; template>(), int() ) = 0> @@ -47,6 +54,13 @@ struct inclusive_rectangle : rectangle { return Traits::x( p ) >= Traits::x( p_min ) && Traits::x( p ) <= Traits::x( p_max ) && Traits::y( p ) >= Traits::y( p_min ) && Traits::y( p ) <= Traits::y( p_max ); } + constexpr bool overlaps( const rectangle &r ) const { + using Traits = point_traits; + return !( Traits::x( r.p_min ) > Traits::x( p_max ) || + Traits::y( r.p_min ) > Traits::y( p_max ) || + Traits::x( p_min ) > Traits::x( r.p_max ) || + Traits::y( p_min ) > Traits::y( r.p_max ) ); + } }; // Clamp p to the rectangle r. diff --git a/src/debug.cpp b/src/debug.cpp index 173e6ceaf2129..712b316df5d9c 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -164,6 +164,7 @@ std::string filter_name( debug_filter value ) // *INDENT-OFF* case DF_ACT_BUTCHER: return "DF_ACT_BUTCHER"; case DF_ACT_LOCKPICK: return "DF_ACT_LOCKPICK"; + case DF_ACT_SHEARING: return "DF_ACT_SHEARING"; case DF_ACT_WORKOUT: return "DF_ACT_WORKOUT"; case DF_ANATOMY_BP: return "DF_ANATOMY_BP"; case DF_AVATAR: return "DF_AVATAR"; @@ -643,6 +644,9 @@ static std::ostream &operator<<( std::ostream &out, DebugClass cl ) if( cl & D_SDL ) { out << "SDL "; } + if( cl & D_MMAP ) { + out << "MMAP "; + } } return out; } diff --git a/src/debug.h b/src/debug.h index b5cc4bfb5cca6..cf40d076d4c83 100644 --- a/src/debug.h +++ b/src/debug.h @@ -162,6 +162,8 @@ enum DebugClass { D_NPC = 1 << 5, /** SDL & tiles & anything graphical */ D_SDL = 1 << 6, + /** Related to tile memory (map_memory.cpp) */ + D_MMAP = 1 << 7, DC_ALL = ( 1 << 30 ) - 1 }; @@ -228,6 +230,7 @@ namespace debugmode enum debug_filter : int { DF_ACT_BUTCHER = 0, // butcher activity handler DF_ACT_LOCKPICK, // lockpicking activity actor + DF_ACT_SHEARING, // shearing activity actor DF_ACT_WORKOUT, // workout activity actor DF_ANATOMY_BP, // anatomy::select_body_part() DF_AVATAR, // avatar generic diff --git a/src/debug_menu.cpp b/src/debug_menu.cpp index ff26a6bef399e..faf08c216ffea 100644 --- a/src/debug_menu.cpp +++ b/src/debug_menu.cpp @@ -173,6 +173,7 @@ std::string enum_to_string( debug_menu::debug_menu case debug_menu::debug_menu_index::CRASH_GAME: return "CRASH_GAME"; case debug_menu::debug_menu_index::MAP_EXTRA: return "MAP_EXTRA"; case debug_menu::debug_menu_index::DISPLAY_NPC_PATH: return "DISPLAY_NPC_PATH"; + case debug_menu::debug_menu_index::DISPLAY_NPC_ATTACK: return "DISPLAY_NPC_ATTACK"; case debug_menu::debug_menu_index::PRINT_FACTION_INFO: return "PRINT_FACTION_INFO"; case debug_menu::debug_menu_index::PRINT_NPC_MAGIC: return "PRINT_NPC_MAGIC"; case debug_menu::debug_menu_index::QUIT_NOSAVE: return "QUIT_NOSAVE"; @@ -272,6 +273,7 @@ static int info_uilist( bool display_all_entries = true ) { uilist_entry( debug_menu_index::HOUR_TIMER, true, 'E', _( "Toggle hour timer" ) ) }, { uilist_entry( debug_menu_index::TRAIT_GROUP, true, 't', _( "Test trait group" ) ) }, { uilist_entry( debug_menu_index::DISPLAY_NPC_PATH, true, 'n', _( "Toggle NPC pathfinding on map" ) ) }, + { uilist_entry( debug_menu_index::DISPLAY_NPC_ATTACK, true, 'A', _( "Toggle NPC attack potential values on map" ) ) }, { uilist_entry( debug_menu_index::PRINT_FACTION_INFO, true, 'f', _( "Print faction info to console" ) ) }, { uilist_entry( debug_menu_index::PRINT_NPC_MAGIC, true, 'M', _( "Print NPC magic info to console" ) ) }, { uilist_entry( debug_menu_index::TEST_WEATHER, true, 'W', _( "Test weather" ) ) }, @@ -2546,6 +2548,9 @@ void debug() case debug_menu_index::DISPLAY_SCENTS_TYPE_LOCAL: g->display_toggle_overlay( ACTION_DISPLAY_SCENT_TYPE ); break; + case debug_menu_index::DISPLAY_NPC_ATTACK: + g->display_toggle_overlay( ACTION_DISPLAY_NPC_ATTACK_POTENTIAL ); + break; case debug_menu_index::DISPLAY_TEMP: g->display_toggle_overlay( ACTION_DISPLAY_TEMPERATURE ); break; diff --git a/src/debug_menu.h b/src/debug_menu.h index 66498bbd88328..a0088a8ed3435 100644 --- a/src/debug_menu.h +++ b/src/debug_menu.h @@ -65,6 +65,7 @@ enum class debug_menu_index : int { CRASH_GAME, MAP_EXTRA, DISPLAY_NPC_PATH, + DISPLAY_NPC_ATTACK, PRINT_FACTION_INFO, PRINT_NPC_MAGIC, QUIT_NOSAVE, diff --git a/src/descriptions.cpp b/src/descriptions.cpp index 4e82010dc3a21..bd99641573f83 100644 --- a/src/descriptions.cpp +++ b/src/descriptions.cpp @@ -14,6 +14,7 @@ #include "input.h" #include "map.h" #include "mapdata.h" +#include "mod_manager.h" #include "output.h" #include "string_formatter.h" #include "translations.h" @@ -108,7 +109,11 @@ void game::extended_description( const tripoint &p ) desc = _( "You do not see any furniture here." ); } else { const furn_id fid = m.furn( p ); - desc = fid.obj().extended_description(); + const std::string mod_src = enumerate_as_string( fid->src.begin(), + fid->src.end(), []( const std::pair &source ) { + return string_format( "'%s'", source.second->name() ); + }, enumeration_conjunction::arrow ); + desc = string_format( _( "Origin: %s\n%s" ), mod_src, fid->extended_description() ); } break; case description_target::terrain: @@ -116,7 +121,11 @@ void game::extended_description( const tripoint &p ) desc = _( "You can't see the terrain here." ); } else { const ter_id tid = m.ter( p ); - desc = tid.obj().extended_description(); + const std::string mod_src = enumerate_as_string( tid->src.begin(), + tid->src.end(), []( const std::pair &source ) { + return string_format( "'%s'", source.second->name() ); + }, enumeration_conjunction::arrow ); + desc = string_format( _( "Origin: %s\n%s" ), mod_src, tid->extended_description() ); } break; } diff --git a/src/dialogue.h b/src/dialogue.h index 0ea3acb49d395..9af83557f172d 100644 --- a/src/dialogue.h +++ b/src/dialogue.h @@ -103,7 +103,9 @@ struct talk_effect_fun_t { void set_mod_pain( const JsonObject &jo, const std::string &member, bool is_npc ); void set_add_wet( const JsonObject &jo, const std::string &member, bool is_npc ); void set_add_power( const JsonObject &jo, const std::string &member, bool is_npc ); + void set_assign_mission( const JsonObject &jo, const std::string &member ); void set_sound_effect( const JsonObject &jo, const std::string &member ); + void set_mod_fatigue( const JsonObject &jo, const std::string &member, bool is_npc = false ); void set_add_var( const JsonObject &jo, const std::string &member, bool is_npc = false ); void set_remove_var( const JsonObject &jo, const std::string &member, bool is_npc = false ); void set_adjust_var( const JsonObject &jo, const std::string &member, bool is_npc = false ); diff --git a/src/editmap.cpp b/src/editmap.cpp index 8c420e6a0bc32..57dd5b5cf4471 100644 --- a/src/editmap.cpp +++ b/src/editmap.cpp @@ -461,13 +461,13 @@ void editmap::uber_draw_ter( const catacurses::window &w, map *m ) bool draw_fld=true; bool draw_veh=true; */ - bool draw_itm = true; + bool game_map = m == &get_map() || w == g->w_terrain; const int msize = MAPSIZE_X; if( refresh_mplans ) { hilights["mplan"].points.clear(); } - avatar &player_character = get_avatar(); + drawsq_params params = drawsq_params().center( center ); for( const tripoint &p : tripoint_range( start, end ) ) { int sym = game_map ? '%' : ' '; if( p.x >= 0 && p.x < msize && p.y >= 0 && p.y < msize ) { @@ -476,7 +476,7 @@ void editmap::uber_draw_ter( const catacurses::window &w, map *m ) if( critter != nullptr ) { critter->draw( w, center.xy(), false ); } else { - m->drawsq( w, player_character, p, false, draw_itm, center, false, true ); + m->drawsq( w, p, params ); } if( refresh_mplans ) { monster *mon = dynamic_cast( critter ); @@ -487,7 +487,7 @@ void editmap::uber_draw_ter( const catacurses::window &w, map *m ) } } } else { - m->drawsq( w, player_character, p, false, draw_itm, center, false, true ); + m->drawsq( w, p, params ); } } else { mvwputch( w, p.xy() - start.xy(), c_dark_gray, sym ); @@ -509,8 +509,6 @@ void editmap::do_ui_invalidation() void editmap::draw_main_ui_overlay() { const Creature *critter = g->critter_at( target ); - - avatar &player_character = get_avatar(); map &here = get_map(); #if !defined( TILES ) if( uberdraw ) { @@ -522,7 +520,7 @@ void editmap::draw_main_ui_overlay() if( critter != nullptr ) { critter->draw( g->w_terrain, target, true ); } else { - here.drawsq( g->w_terrain, player_character, target, true, true, target ); + here.drawsq( g->w_terrain, target, drawsq_params().highlight( true ).center( target ) ); } #ifdef TILES // give some visual indication of different cursor moving modes @@ -616,6 +614,7 @@ void editmap::draw_main_ui_overlay() tinymap &tmpmap = *tmpmap_ptr; #ifdef TILES if( use_tiles ) { + const tripoint &player_location = get_player_location().pos(); const point origin_p = target.xy() + point( 1 - SEEX, 1 - SEEY ); for( int x = 0; x < SEEX * 2; x++ ) { for( int y = 0; y < SEEY * 2; y++ ) { @@ -632,7 +631,7 @@ void editmap::draw_main_ui_overlay() g->draw_trap_override( map_p, tmpmap.tr_at( tmp_p ).loadid ); g->draw_field_override( map_p, tmpmap.field_at( tmp_p ).displayed_field_type() ); const maptile &tile = tmpmap.maptile_at( tmp_p ); - if( tmpmap.sees_some_items( tmp_p, player_character.pos() - origin_p ) ) { + if( tmpmap.sees_some_items( tmp_p, player_location - origin_p ) ) { const item &itm = tile.get_uppermost_item(); const mtype *const mon = itm.get_mtype(); g->draw_item_override( map_p, itm.typeId(), mon ? mon->id : mtype_id::NULL_ID(), @@ -687,9 +686,9 @@ void editmap::draw_main_ui_overlay() } else { #endif hilights["mapgentgt"].draw( *this, true ); - const tripoint center( SEEX - 1, SEEY - 1, target.z ); + drawsq_params params = drawsq_params().center( tripoint( SEEX - 1, SEEY - 1, target.z ) ); for( const tripoint &p : tmpmap.points_on_zlevel() ) { - tmpmap.drawsq( g->w_terrain, player_character, p, false, true, center, false, true ); + tmpmap.drawsq( g->w_terrain, p, params ); } tmpmap.rebuild_vehicle_level_caches(); #ifdef TILES diff --git a/src/game.cpp b/src/game.cpp index 8562426aa3f74..c009bd26ecc02 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -743,11 +743,18 @@ bool game::start_game() //Load NPCs. Set nearby npcs to active. load_npcs(); // Spawn the monsters - const bool spawn_near = - get_option( "BLACK_ROAD" ) || get_scenario()->has_flag( "SUR_START" ); // Surrounded start ones + std::vector> surround_groups = get_scenario()->surround_groups(); + const bool surrounded_start_scenario = !surround_groups.empty(); + const bool surrounded_start_options = get_option( "BLACK_ROAD" ); + if( surrounded_start_options && !surrounded_start_scenario ) { + surround_groups.emplace_back( mongroup_id( "GROUP_BLACK_ROAD" ), 70.0f ); + } + const bool spawn_near = surrounded_start_options || surrounded_start_scenario; if( spawn_near ) { - start_loc.surround_with_monsters( omtstart, mongroup_id( "GROUP_ZOMBIE" ), 70 ); + for( const std::pair &sg : surround_groups ) { + start_loc.surround_with_monsters( omtstart, sg.first, sg.second ); + } } m.spawn_monsters( !spawn_near ); // Static monsters @@ -2223,7 +2230,7 @@ int game::inventory_item_menu( item_location locThisItem, addentry( 'p', pgettext( "action", "part reload" ), u.rate_action_reload( oThisItem ) ); addentry( 'm', pgettext( "action", "mend" ), rate_action_mend( u, oThisItem ) ); addentry( 'D', pgettext( "action", "disassemble" ), rate_action_disassemble( u, oThisItem ) ); - if( oThisItem.has_pockets() ) { + if( oThisItem.is_container() ) { addentry( 'i', pgettext( "action", "insert" ), rate_action_insert( u, locThisItem ) ); if( oThisItem.contents.num_item_stacks() > 0 ) { addentry( 'o', pgettext( "action", "open" ), hint_rating::good ); @@ -2355,7 +2362,7 @@ int game::inventory_item_menu( item_location locThisItem, u.change_side( locThisItem ); break; case 'T': - u.takeoff( oThisItem ); + u.takeoff( locThisItem ); break; case 'd': u.drop( locThisItem, u.pos() ); @@ -2391,17 +2398,17 @@ int game::inventory_item_menu( item_location locThisItem, } break; case 'v': - if( oThisItem.has_pockets() ) { + if( oThisItem.is_container() ) { oThisItem.contents.favorite_settings_menu( oThisItem.tname( 1, false ) ); } break; case 'i': - if( oThisItem.has_pockets() ) { + if( oThisItem.is_container() ) { game_menus::inv::insert_items( u, locThisItem ); } break; case 'o': - if( oThisItem.has_pockets() && oThisItem.contents.num_item_stacks() > 0 ) { + if( oThisItem.is_container() && oThisItem.contents.num_item_stacks() > 0 ) { game_menus::inv::common( locThisItem, u ); } break; @@ -2950,9 +2957,7 @@ bool game::load( const save_t &name ) return false; } - read_from_file_optional_json( playerpath + SAVE_EXTENSION_MAP_MEMORY, [&]( JsonIn & jsin ) { - u.deserialize_map_memory( jsin ); - } ); + u.load_map_memory(); const std::string log_filename = worldpath + name.base_path() + SAVE_EXTENSION_LOG; read_from_file_optional( log_filename, @@ -3150,11 +3155,7 @@ bool game::save_player_data() const bool saved_data = write_to_file( playerfile + SAVE_EXTENSION, [&]( std::ostream & fout ) { serialize( fout ); }, _( "player data" ) ); - const bool saved_map_memory = write_to_file( playerfile + SAVE_EXTENSION_MAP_MEMORY, [&]( - std::ostream & fout ) { - JsonOut jsout( fout ); - u.serialize_map_memory( jsout ); - }, _( "player map memory" ) ); + const bool saved_map_memory = u.save_map_memory(); const bool saved_log = write_to_file( playerfile + SAVE_EXTENSION_LOG, [&]( std::ostream & fout ) { memorial().save( fout ); @@ -4279,7 +4280,7 @@ void game::mon_info( const catacurses::window &w, int hor_padding ) } sym = "@"; } else { - const mtype &mt = *unique_mons[i][j - typeshere_npc]; + const mtype &mt = *unique_mons[i][j - typeshere_npc].first; c = mt.color; sym = mt.sym; } @@ -4290,8 +4291,27 @@ void game::mon_info( const catacurses::window &w, int hor_padding ) } // Now we print their full names! - - std::set listed_mons; + struct nearest_loc_and_cnt { + int nearest_loc; + int cnt; + }; + std::map all_mons; + for( int loc = 0; loc < 9; loc++ ) { + for( const std::pair &mon : unique_mons[loc] ) { + const auto mon_it = all_mons.find( mon.first ); + if( mon_it == all_mons.end() ) { + all_mons.emplace( mon.first, nearest_loc_and_cnt{ loc, mon.second } ); + } else { + // 8 being the nearest location (local monsters) + mon_it->second.nearest_loc = std::max( mon_it->second.nearest_loc, loc ); + mon_it->second.cnt += mon.second; + } + } + } + std::vector> mons_at[9]; + for( const std::pair &mon : all_mons ) { + mons_at[mon.second.nearest_loc].emplace_back( mon.first, mon.second.cnt ); + } // Start printing monster names on row 4. Rows 0-2 are for labels, and row 3 // is blank. @@ -4301,19 +4321,22 @@ void game::mon_info( const catacurses::window &w, int hor_padding ) for( int j = 8; j >= 0 && pr.y < maxheight; j-- ) { // Separate names by some number of spaces (more for local monsters). int namesep = ( j == 8 ? 2 : 1 ); - for( const mtype *type : unique_mons[j] ) { + for( const std::pair &mon : mons_at[j] ) { + const mtype *const type = mon.first; + const int count = mon.second; if( pr.y >= maxheight ) { // no space to print to anyway break; } - if( listed_mons.count( type ) > 0 ) { - // this type is already printed. - continue; - } - listed_mons.insert( type ); const mtype &mt = *type; - const std::string name = mt.nname(); + std::string name = mt.nname( count ); + // Some languages don't have plural forms, but we want to always + // omit 1. + if( count != 1 ) { + name = string_format( pgettext( "monster count and name", "%1$d %2$s" ), + count, name ); + } // Move to the next row if necessary. (The +2 is for the "Z "). if( pr.x + 2 + utf8_width( name ) >= width ) { @@ -4473,9 +4496,15 @@ void game::mon_info_update( ) } } - std::vector &vec = unique_mons[index]; - if( std::find( vec.begin(), vec.end(), critter.type ) == vec.end() ) { - vec.push_back( critter.type ); + std::vector> &vec = unique_mons[index]; + const auto mon_it = std::find_if( vec.begin(), vec.end(), + [&]( const std::pair &elem ) { + return elem.first == critter.type; + } ); + if( mon_it == vec.end() ) { + vec.emplace_back( critter.type, 1 ); + } else { + mon_it->second++; } } else if( p != nullptr ) { //Safe mode NPC check @@ -4635,12 +4664,13 @@ void game::monmove() m.creature_in_field( critter ); } + const bionic_id bio_alarm( "bio_alarm" ); if( !critter.is_dead() && - u.has_active_bionic( bionic_id( "bio_alarm" ) ) && - u.get_power_level() >= 25_kJ && + u.has_active_bionic( bio_alarm ) && + u.get_power_level() >= bio_alarm->power_trigger && rl_dist( u.pos(), critter.pos() ) <= 5 && !critter.is_hallucination() ) { - u.mod_power_level( -25_kJ ); + u.mod_power_level( -bio_alarm->power_trigger ); add_msg( m_warning, _( "Your motion alarm goes off!" ) ); cancel_activity_or_ignore_query( distraction_type::motion_alarm, _( "Your motion alarm goes off!" ) ); @@ -6110,7 +6140,7 @@ void game::pickup( const tripoint &p ) { // Highlight target shared_ptr_fast hilite_cb = make_shared_fast( [&]() { - m.drawsq( w_terrain, u, p, true, true, u.pos() + u.view_offset ); + m.drawsq( w_terrain, p, drawsq_params().highlight( true ) ); } ); add_draw_callback( hilite_cb ); @@ -6204,7 +6234,7 @@ void game::draw_look_around_cursor( const tripoint &lp, const visibility_variabl if( creature != nullptr && u.sees( *creature ) ) { creature->draw( w_terrain, view_center, true ); } else { - m.drawsq( w_terrain, u, lp, true, true, view_center ); + m.drawsq( w_terrain, lp, drawsq_params().highlight( true ).center( view_center ) ); } } else { std::string visibility_indicator; @@ -7563,6 +7593,27 @@ void game::reset_zoom() #endif // TILES } +void game::set_zoom( const int level ) +{ +#if defined(TILES) + if( tileset_zoom != level ) { + tileset_zoom = level; + rescale_tileset( tileset_zoom ); + } +#else + static_cast( level ); +#endif // TILES +} + +int game::get_zoom() const +{ +#if defined(TILES) + return tileset_zoom; +#else + return DEFAULT_TILESET_ZOOM; +#endif +} + int game::get_moves_since_last_save() const { return moves_since_last_save; @@ -10324,8 +10375,11 @@ void game::place_player_overmap( const tripoint_abs_omt &om_dest ) bool game::phasing_move( const tripoint &dest_loc, const bool via_ramp ) { - if( !u.has_active_bionic( bionic_id( "bio_probability_travel" ) ) || - u.get_power_level() < 250_kJ ) { + const bionic_id bio_probability_travel( "bio_probability_travel" ); + const units::energy trigger_cost = bio_probability_travel->power_trigger; + + if( !u.has_active_bionic( bio_probability_travel ) || + u.get_power_level() < trigger_cost ) { return false; } @@ -10347,19 +10401,18 @@ bool game::phasing_move( const tripoint &dest_loc, const bool via_ramp ) if( u.worn_with_flag( flag_DIMENSIONAL_ANCHOR ) || u.has_flag( flag_DIMENSIONAL_ANCHOR ) ) { u.add_msg_if_player( m_info, _( "You are repelled by the barrier!" ) ); - u.mod_power_level( -250_kJ ); //cost of tunneling one tile. + u.mod_power_level( -trigger_cost ); //cost of tunneling one tile. return false; } - if( tunneldist * 250_kJ > + if( tunneldist * trigger_cost > u.get_power_level() ) { //oops, not enough energy! Tunneling costs 250 bionic power per impassable tile add_msg( _( "You try to quantum tunnel through the barrier but are reflected! Try again with more energy!" ) ); - u.mod_power_level( -250_kJ ); + u.mod_power_level( -trigger_cost ); return false; } - if( tunneldist > 24 ) { add_msg( m_info, _( "It's too dangerous to tunnel that far!" ) ); - u.mod_power_level( -250_kJ ); + u.mod_power_level( -trigger_cost ); return false; } @@ -10374,7 +10427,7 @@ bool game::phasing_move( const tripoint &dest_loc, const bool via_ramp ) add_msg( _( "You quantum tunnel through the %d-tile wide barrier!" ), tunneldist ); //tunneling costs 250 bionic power per impassable tile - u.mod_power_level( -( tunneldist * 250_kJ ) ); + u.mod_power_level( -( tunneldist * trigger_cost ) ); u.moves -= 100; //tunneling costs 100 moves u.setpos( dest ); @@ -10687,12 +10740,12 @@ void game::on_move_effects() u.mod_power_level( units::from_kilojoule( muscle.fuel_energy() ) * bid->passive_fuel_efficiency ); } } - - if( u.has_active_bionic( bionic_id( "bio_jointservo" ) ) ) { + const bionic_id bio_jointservo( "bio_jointservo" ); + if( u.has_active_bionic( bio_jointservo ) ) { if( u.is_running() ) { - u.mod_power_level( -55_J ); + u.mod_power_level( -bio_jointservo->power_trigger * 1.55 ); } else { - u.mod_power_level( -35_J ); + u.mod_power_level( -bio_jointservo->power_trigger ); } } } diff --git a/src/game.h b/src/game.h index 7be7ef04ecda7..331824ef48c27 100644 --- a/src/game.h +++ b/src/game.h @@ -629,6 +629,8 @@ class game void zoom_in(); void zoom_out(); void reset_zoom(); + void set_zoom( int level ); + int get_zoom() const; int get_moves_since_last_save() const; int get_user_action_counter() const; diff --git a/src/game_constants.h b/src/game_constants.h index 7f9469ebc5281..825d2081fda82 100644 --- a/src/game_constants.h +++ b/src/game_constants.h @@ -55,6 +55,9 @@ static constexpr int OMAPY = OMAPX; // Size of a square unit of terrain saved to a directory. static constexpr int SEG_SIZE = 32; +// Size of a square unit of tile memory saved in a single file, in mm_submaps. +static constexpr int MM_REG_SIZE = 8; + /** * Items on the map with at most this distance to the player are considered available for crafting, * see inventory::form_from_map diff --git a/src/game_inventory.cpp b/src/game_inventory.cpp index ede5ced8f52ce..0af7c740a3a54 100644 --- a/src/game_inventory.cpp +++ b/src/game_inventory.cpp @@ -62,6 +62,7 @@ static const activity_id ACT_EAT_MENU( "ACT_EAT_MENU" ); static const activity_id ACT_CONSUME_FOOD_MENU( "ACT_CONSUME_FOOD_MENU" ); static const activity_id ACT_CONSUME_DRINK_MENU( "ACT_CONSUME_DRINK_MENU" ); static const activity_id ACT_CONSUME_MEDS_MENU( "ACT_CONSUME_MEDS_MENU" ); +static const activity_id ACT_CONSUME_FUEL_MENU( "ACT_CONSUME_FUEL_MENU" ); static const quality_id qual_ANESTHESIA( "ANESTHESIA" ); @@ -72,6 +73,8 @@ static const trait_id trait_NOPAIN( "NOPAIN" ); static const trait_id trait_SAPROPHAGE( "SAPROPHAGE" ); static const trait_id trait_SAPROVORE( "SAPROVORE" ); +static const std::string flag_LIQUIDCONT( "LIQUIDCONT" ); + using item_filter = std::function; using item_location_filter = std::function; @@ -131,7 +134,8 @@ static item_location inv_internal( Character &u, const inventory_selector_preset ACT_EAT_MENU, ACT_CONSUME_FOOD_MENU, ACT_CONSUME_DRINK_MENU, - ACT_CONSUME_MEDS_MENU }; + ACT_CONSUME_MEDS_MENU, + ACT_CONSUME_FUEL_MENU }; u.inv->restack( u ); @@ -655,26 +659,7 @@ class comestible_inventory_preset : public inventory_selector_preset } return std::string(); }, _( "SPOILS IN" ) ); - append_cell( [&p]( const item_location & loc ) { - std::string cbm_name; - if( p.can_fuel_bionic_with( *loc ) ) { - std::vector bids = p.get_bionic_fueled_with( *loc ); - if( !bids.empty() ) { - bionic_id bid = p.get_most_efficient_bionic( bids ); - cbm_name = bid->name.translated(); - } - } - if( !cbm_name.empty() ) { - return string_format( "%s", cbm_name ); - } - - return std::string(); - }, _( "CBM" ) ); - - append_cell( [&p]( const item_location & loc ) { - return good_bad_none( p.get_acquirable_energy( *loc ) ); - }, _( "ENERGY (kJ)" ) ); } bool is_shown( const item_location &loc ) const override { @@ -684,7 +669,10 @@ class comestible_inventory_preset : public inventory_selector_preset std::string get_denial( const item_location &loc ) const override { const item &med = *loc; - if( loc->made_of_from_type( phase_id::LIQUID ) && loc.where() != item_location::type::container ) { + if( + ( loc->made_of_from_type( phase_id::LIQUID ) && + loc.where() != item_location::type::container ) && + !get_map().has_flag_furn( flag_LIQUIDCONT, loc.position() ) ) { return _( "Can't drink spilt liquids." ); } @@ -791,6 +779,181 @@ class comestible_inventory_preset : public inventory_selector_preset const player &p; }; +class fuel_inventory_preset : public inventory_selector_preset +{ + public: + explicit fuel_inventory_preset( const player &p ) : p( p ) { + + _indent_entries = false; + + append_cell( []( const item_location & loc ) { + const time_duration spoils = loc->is_comestible() ? loc->get_comestible()->spoils : + calendar::INDEFINITELY_LONG_DURATION; + if( spoils > 0_turns ) { + return to_string_clipped( spoils ); + } + //~ Used for permafood shelf life in the Eat menu + return std::string( _( "indefinite" ) ); + }, _( "SHELF LIFE" ) ); + + append_cell( []( const item_location & loc ) { + const item &it = *loc; + + int converted_volume_scale = 0; + const int charges = std::max( it.charges, 1 ); + const double converted_volume = round_up( convert_volume( it.volume().value() / charges, + &converted_volume_scale ), 2 ); + + //~ Eat menu Volume: + return string_format( _( "%.2f%s" ), converted_volume, volume_units_abbr() ); + }, _( "VOLUME" ) ); + + Character &player_character = get_player_character(); + append_cell( [&player_character]( const item_location & loc ) { + time_duration time = player_character.get_consume_time( *loc ); + return string_format( "%s", to_string( time, true ) ); + }, _( "CONSUME TIME" ) ); + + append_cell( [this, &player_character]( const item_location & loc ) { + std::string sealed; + if( loc.has_parent() ) { + item_pocket *pocket = loc.parent_item()->contained_where( *loc.get_item() ); + sealed = pocket->sealed() ? _( "sealed" ) : std::string(); + } + if( player_character.can_estimate_rot() ) { + if( loc->is_comestible() && loc->get_comestible()->spoils > 0_turns ) { + return sealed + ( sealed.empty() ? "" : " " ) + get_freshness( loc ); + } + return std::string( "---" ); + } + return sealed; + }, _( "FRESHNESS" ) ); + + append_cell( [this, &player_character]( const item_location & loc ) { + if( player_character.can_estimate_rot() ) { + if( loc->is_comestible() && loc->get_comestible()->spoils > 0_turns ) { + if( !loc->rotten() ) { + return get_time_left_rounded( loc ); + } + } + return std::string( "---" ); + } + return std::string(); + }, _( "SPOILS IN" ) ); + append_cell( [&p]( const item_location & loc ) { + std::string cbm_name; + + std::vector bids = p.get_bionic_fueled_with( *loc ); + if( !bids.empty() ) { + bionic_id bid = p.get_most_efficient_bionic( bids ); + cbm_name = bid->name.translated(); + } + + if( !cbm_name.empty() ) { + return string_format( "%s", cbm_name ); + } + + return std::string(); + }, _( "CBM" ) ); + + append_cell( [&p]( const item_location & loc ) { + return good_bad_none( p.get_acquirable_energy( *loc ) ); + }, _( "ENERGY (kJ)" ) ); + } + + bool is_shown( const item_location &loc ) const override { + return p.can_fuel_bionic_with( *loc ); + } + + std::string get_denial( const item_location &loc ) const override { + + if( loc->made_of_from_type( phase_id::LIQUID ) && loc.where() != item_location::type::container ) { + return _( "Can't use spilt liquids." ); + } + + if( p.get_fuel_capacity( loc->get_base_material().id ) <= 0 ) { + return ( _( "No space to store more" ) ); + } + + return inventory_selector_preset::get_denial( loc ); + } + + bool sort_compare( const inventory_entry &lhs, const inventory_entry &rhs ) const override { + time_duration time_a = get_time_left( lhs.any_item() ); + time_duration time_b = get_time_left( rhs.any_item() ); + int order_a = get_order( lhs.any_item(), time_a ); + int order_b = get_order( rhs.any_item(), time_b ); + + return order_a < order_b + || ( order_a == order_b && time_a < time_b ) + || ( order_a == order_b && time_a == time_b && + inventory_selector_preset::sort_compare( lhs, rhs ) ); + } + + protected: + int get_order( const item_location &loc, const time_duration &time ) const { + if( loc->rotten() ) { + return 2; + } else if( time == 0_turns ) { + return 2; + } else { + return 1; + } + } + + time_duration get_time_left( const item_location &loc ) const { + time_duration time_left = 0_turns; + const time_duration shelf_life = loc->is_comestible() ? loc->get_comestible()->spoils : + calendar::INDEFINITELY_LONG_DURATION; + if( shelf_life > 0_turns ) { + const item &it = *loc; + const double relative_rot = it.get_relative_rot(); + time_left = shelf_life - shelf_life * relative_rot; + + // Correct for an estimate that exceeds shelf life -- this happens especially with + // fresh items. + if( time_left > shelf_life ) { + time_left = shelf_life; + } + } + + return time_left; + } + + std::string get_time_left_rounded( const item_location &loc ) const { + const item &it = *loc; + if( it.is_going_bad() ) { + return _( "soon!" ); + } + + time_duration time_left = get_time_left( loc ); + return to_string_approx( time_left ); + } + + std::string get_freshness( const item_location &loc ) { + const item &it = *loc; + const double rot_progress = it.get_relative_rot(); + if( it.is_fresh() ) { + return _( "fresh" ); + } else if( rot_progress < 0.3 ) { + return _( "quite fresh" ); + } else if( rot_progress < 0.5 ) { + return _( "near midlife" ); + } else if( rot_progress < 0.7 ) { + return _( "past midlife" ); + } else if( rot_progress < 0.9 ) { + return _( "getting older" ); + } else if( !it.rotten() ) { + return _( "old" ); + } else { + return _( "rotten" ); + } + } + + private: + const player &p; +}; + static std::string get_consume_needs_hint( player &p ) { auto hint = std::string(); @@ -839,6 +1002,21 @@ class comestible_filtered_inventory_preset : public comestible_inventory_preset bool( *predicate )( const item &it ); }; +class fuel_filtered_inventory_preset : public fuel_inventory_preset +{ + public: + fuel_filtered_inventory_preset( const player &p, bool( *predicate )( const item &it ) ) : + fuel_inventory_preset( p ), predicate( predicate ) {} + + bool is_shown( const item_location &loc ) const override { + return fuel_inventory_preset::is_shown( loc ) && + predicate( *loc ); + } + + private: + bool( *predicate )( const item &it ); +}; + item_location game_menus::inv::consume_food( player &p ) { Character &player_character = get_player_character(); @@ -889,6 +1067,21 @@ item_location game_menus::inv::consume_meds( player &p ) get_consume_needs_hint( p ) ); } +item_location game_menus::inv::consume_fuel( player &p ) +{ + Character &player_character = get_player_character(); + if( !player_character.has_activity( ACT_CONSUME_FUEL_MENU ) ) { + player_character.assign_activity( ACT_CONSUME_FUEL_MENU ); + } + std::string none_message = player_character.activity.str_values.size() == 2 ? + _( "You have no more fuel to consume." ) : _( "You have no fuel to consume." ); + return inv_internal( p, fuel_filtered_inventory_preset( p, []( const item & it ) { + return it.is_fuel(); + } ), + _( "Consume fuel" ), 1, + none_message ); +} + class activatable_inventory_preset : public pickup_inventory_preset { public: @@ -1794,6 +1987,7 @@ class bionic_install_preset: public inventory_selector_preset } std::string get_denial( const item_location &loc ) const override { + const ret_val installable = pa.is_installable( loc, true ); if( installable.success() && !p.has_enough_anesth( *loc.get_item()->type, pa ) ) { const int weight = units::to_kilogram( pa.bodyweight() ) / 10; diff --git a/src/game_inventory.h b/src/game_inventory.h index 765150402e419..e8d37cc5305a9 100644 --- a/src/game_inventory.h +++ b/src/game_inventory.h @@ -94,6 +94,8 @@ item_location consume_food( player &p ); item_location consume_drink( player &p ); /** Consuming a medication item via a custom menu. */ item_location consume_meds( player &p ); +/** Consuming fuel item via a custom menu. */ +item_location consume_fuel( player &p ); /** Choosing a container for liquid. */ item_location container_for( Character &you, const item &liquid, int radius = 0, const item *avoid = nullptr ); diff --git a/src/generic_factory.h b/src/generic_factory.h index 8fdf757e52186..b5c6a4be49bbb 100644 --- a/src/generic_factory.h +++ b/src/generic_factory.h @@ -16,6 +16,7 @@ #include "init.h" #include "int_id.h" #include "json.h" +#include "mod_tracker.h" #include "output.h" #include "string_id.h" #include "units.h" @@ -264,6 +265,7 @@ class generic_factory } if( jo.has_string( id_member_name ) ) { def.id = string_id( jo.get_string( id_member_name ) ); + assign_src( def, src ); def.load( jo, src ); insert( def ); @@ -284,6 +286,7 @@ class generic_factory break; } def.id = string_id( e ); + assign_src( def, src ); def.load( jo, src ); insert( def ); } @@ -294,6 +297,7 @@ class generic_factory } else if( jo.has_string( legacy_id_member_name ) ) { def.id = string_id( jo.get_string( legacy_id_member_name ) ); + assign_src( def, src ); def.load( jo, src ); insert( def ); @@ -314,6 +318,7 @@ class generic_factory break; } def.id = string_id( e ); + assign_src( def, src ); def.load( jo, src ); insert( def ); } diff --git a/src/handle_action.cpp b/src/handle_action.cpp index 20fc452179b53..91c7d1f8f2e8d 100644 --- a/src/handle_action.cpp +++ b/src/handle_action.cpp @@ -1034,7 +1034,6 @@ static void sleep() // some bionics // bio_alarm is useful for waking up during sleeping - // turning off bio_leukocyte has 'unpleasant side effects' if( bio.info().has_flag( STATIC( json_character_flag( "BIONIC_SLEEP_FRIENDLY" ) ) ) ) { continue; } @@ -1286,7 +1285,7 @@ static void takeoff() item_location loc = game_menus::inv::take_off( player_character ); if( loc ) { - player_character.takeoff( *loc.obtain( player_character ) ); + player_character.takeoff( loc.obtain( player_character ) ); } else { add_msg( _( "Never mind." ) ); } @@ -1545,6 +1544,7 @@ void game::open_consume_item_menu() as_m.entries.emplace_back( 0, true, 'f', _( "Food" ) ); as_m.entries.emplace_back( 1, true, 'd', _( "Drink" ) ); as_m.entries.emplace_back( 2, true, 'm', _( "Medication" ) ); + as_m.entries.emplace_back( 3, true, 'u', _( "Fuel" ) ); as_m.query(); avatar &player_character = get_avatar(); @@ -1558,6 +1558,9 @@ void game::open_consume_item_menu() case 2: avatar_action::eat( player_character, game_menus::inv::consume_meds( player_character ) ); break; + case 3: + avatar_action::eat( player_character, game_menus::inv::consume_fuel( get_avatar() ), true ); + break; default: break; } diff --git a/src/handle_liquid.cpp b/src/handle_liquid.cpp index 310f29bca0f49..1bfda01f6002d 100644 --- a/src/handle_liquid.cpp +++ b/src/handle_liquid.cpp @@ -147,7 +147,7 @@ bool handle_liquid_from_container( item &container, int radius ) { std::vector remove; bool handled = false; - for( item *contained : container.contents.all_items_top() ) { + for( item *contained : container.all_items_top() ) { if( handle_liquid_from_container( contained, container, radius ) ) { remove.push_back( contained ); handled = true; diff --git a/src/iexamine.cpp b/src/iexamine.cpp index 940a8123af914..43a7835752a05 100644 --- a/src/iexamine.cpp +++ b/src/iexamine.cpp @@ -209,8 +209,6 @@ static const mtype_id mon_spider_widow_giant_s( "mon_spider_widow_giant_s" ); static const bionic_id bio_lighter( "bio_lighter" ); static const bionic_id bio_lockpick( "bio_lockpick" ); static const bionic_id bio_painkiller( "bio_painkiller" ); -static const bionic_id bio_power_storage( "bio_power_storage" ); -static const bionic_id bio_power_storage_mkII( "bio_power_storage_mkII" ); static const std::string flag_AUTODOC_COUCH( "AUTODOC_COUCH" ); static const std::string flag_BARRICADABLE_WINDOW_CURTAINS( "BARRICADABLE_WINDOW_CURTAINS" ); @@ -1310,7 +1308,6 @@ void iexamine::portable_structure( player &p, const tripoint &examp ) name = string_format( _( "damaged %s" ), name ); } radius = actor.radius; - } else { radius = std::max( 1, fid->bash.collapse_radius ); } @@ -1320,12 +1317,9 @@ void iexamine::portable_structure( player &p, const tripoint &examp ) return; } - p.moves -= to_moves( 2_seconds ); - for( const tripoint &pt : here.points_in_radius( examp, radius ) ) { - here.furn_set( pt, f_null ); - } - - here.add_item_or_charges( examp, item( dropped, calendar::turn ) ); + player_activity new_act = player_activity( tent_deconstruct_activity_actor( to_moves + ( 20_minutes ), radius, examp, dropped ) ); + p.assign_activity( new_act, false ); } /** @@ -4866,11 +4860,8 @@ void iexamine::autodoc( player &p, const tripoint &examp ) std::vector bio_list; std::vector bionic_names; for( const bionic &bio : installed_bionics ) { - if( bio.id != bio_power_storage || - bio.id != bio_power_storage_mkII ) { - bio_list.emplace_back( bio.id ); - bionic_names.emplace_back( bio.info().name.translated() ); - } + bio_list.emplace_back( bio.id ); + bionic_names.emplace_back( bio.info().name.translated() ); } int bionic_index = uilist( _( "Choose bionic to uninstall" ), bionic_names ); if( bionic_index < 0 ) { diff --git a/src/inventory_ui.cpp b/src/inventory_ui.cpp index a0de6ee2ca11b..1cc2fd3387c56 100644 --- a/src/inventory_ui.cpp +++ b/src/inventory_ui.cpp @@ -354,7 +354,7 @@ bool inventory_holster_preset::is_shown( const item_location &contained ) const } //only hide if it is in the toplevel of holster (to allow shuffling of items inside a bag) - for( const item *it : holster->contents.all_items_top() ) { + for( const item *it : holster->all_items_top() ) { if( it == contained.get_item() ) { return false; } @@ -1349,7 +1349,7 @@ void inventory_selector::add_item( inventory_column &target_column, add_entry( target_column, std::vector( 1, location ), custom_category ); - for( item *it : location->contents.all_items_top( item_pocket::pocket_type::CONTAINER ) ) { + for( item *it : location->all_items_top( item_pocket::pocket_type::CONTAINER ) ) { add_item( target_column, item_location( location, it ), custom_category ); } } @@ -1388,7 +1388,7 @@ void inventory_selector::add_contained_items( item_location &container, inventor return; } - for( item *it : container->contents.all_items_top() ) { + for( item *it : container->all_items_top() ) { item_location child( container, it ); add_contained_items( child, column, custom_category ); const item_category *nat_category = nullptr; @@ -2618,7 +2618,7 @@ void inventory_drop_selector::deselect_contained_items() if( !selected->is_item() ) { continue; } - for( item *item_contained : loc_container->contents.all_items_top() ) { + for( item *item_contained : loc_container->all_items_top() ) { for( const item_location &selected_loc : selected->locations ) { if( selected_loc.get_item() == item_contained ) { set_chosen_count( *selected, 0 ); diff --git a/src/item.cpp b/src/item.cpp index cf07f0693ca0d..00b9bdb70a1bd 100644 --- a/src/item.cpp +++ b/src/item.cpp @@ -68,6 +68,7 @@ #include "martialarts.h" #include "material.h" #include "messages.h" +#include "mod_manager.h" #include "monster.h" #include "mtype.h" #include "npc.h" @@ -308,7 +309,7 @@ item::item( const itype *type, time_point turn, int qty ) : type( type ), bday( item_pocket::pocket_type::MAGAZINE ); } - } else if( has_temperature() || goes_bad() ) { + } else if( has_temperature() ) { active = true; last_temp_check = bday; @@ -377,7 +378,7 @@ item::item( const recipe *rec, int qty, std::list items, std::vectorcomps_used = selections; - if( is_food() ) { + if( has_temperature() ) { active = true; last_temp_check = bday; if( goes_bad() ) { @@ -411,7 +412,7 @@ item::item( const recipe *rec, item &component ) std::listitems( { component } ); components = items; - if( is_food() ) { + if( has_temperature() ) { active = true; last_temp_check = bday; if( goes_bad() ) { @@ -890,7 +891,7 @@ item item::in_container( const itype_id &cont, const int qty, const bool sealed return *this; } item container( cont, birthday() ); - if( container.has_pockets() ) { + if( container.is_container() ) { if( count_by_charges() ) { container.fill_with( *this, qty ); } else { @@ -1697,6 +1698,14 @@ double item::average_dps( const Character &guy ) const void item::basic_info( std::vector &info, const iteminfo_query *parts, int batch, bool /* debug */ ) const { + if( parts->test( iteminfo_parts::BASE_MOD_SRC ) ) { + info.emplace_back( "BASE", string_format( _( "Origin: %s" ), enumerate_as_string( type->src.begin(), + type->src.end(), []( const std::pair &source ) { + return string_format( "'%s'", source.second->name() ); + }, enumeration_conjunction::arrow ) ) ); + insert_separation_line( info ); + } + const std::string space = " "; if( parts->test( iteminfo_parts::BASE_MATERIAL ) ) { const std::vector mat_types = made_of_types(); @@ -4428,14 +4437,14 @@ nc_color item::color_in_inventory() const } else if( is_filthy() || has_own_flag( flag_DIRTY ) ) { ret = c_brown; } else if( is_bionic() ) { - if( !player_character.has_bionic( type->bionic->id ) ) { + if( !player_character.has_bionic( type->bionic->id ) || type->bionic->id->dupes_allowed ) { ret = player_character.bionic_installation_issues( type->bionic->id ).empty() ? c_green : c_red; } else if( !has_flag( flag_NO_STERILE ) ) { ret = c_dark_gray; } } else if( has_flag( flag_LEAK_DAM ) && has_flag( flag_RADIOACTIVE ) && damage() > 0 ) { ret = c_light_green; - } else if( active && !is_food() && !is_corpse() ) { + } else if( active && !has_temperature() && !is_corpse() ) { // Active items show up as yellow ret = c_yellow; } else if( is_corpse() && can_revive() ) { @@ -4974,7 +4983,7 @@ std::string item::tname( unsigned int quantity, bool with_prefix, unsigned int t tagtext += _( " (lit)" ); } else if( has_flag( flag_IS_UPS ) && get_var( "cable" ) == "plugged_in" ) { tagtext += _( " (plugged in)" ); - } else if( active && !is_food() && !is_corpse() && + } else if( active && !has_temperature() && !is_corpse() && !string_ends_with( typeId().str(), "_on" ) ) { // Usually the items whose ids end in "_on" have the "active" or "on" string already contained // in their name, also food is active while it rots. @@ -5207,7 +5216,7 @@ int item::price( bool practical ) const } // TODO: MATERIALS add a density field to materials.json -units::mass item::weight( bool, bool integral ) const +units::mass item::weight( bool include_contents, bool integral ) const { if( is_null() ) { return 0_gram; @@ -5267,13 +5276,10 @@ units::mass item::weight( bool, bool integral ) const ret *= 0.85; } - } else if( magazine_integral() && ( !is_magazine() || is_gun() ) ) { - if( ammo_current() == itype_plut_cell ) { - ret += ammo_remaining() * find_type( ammotype( - *ammo_types().begin() )->default_ammotype() )->weight / PLUTONIUM_CHARGES; - } else if( ammo_data() ) { - ret += ammo_remaining() * ammo_data()->weight; - } + } + + if( include_contents ) { + ret += contents.item_weight_modifier(); } // if this is an ammo belt add the weight of any implicitly contained linkages @@ -5292,17 +5298,6 @@ units::mass item::weight( bool, bool integral ) const ret -= std::min( max_barrel_weight, barrel_weight ); } - if( is_gun() ) { - for( const item *elem : gunmods() ) { - ret += elem->weight( true, true ); - } - if( magazine_current() ) { - ret += magazine_current()->weight(); - } - } else { - ret += contents.item_weight_modifier(); - } - return ret; } @@ -5830,13 +5825,13 @@ bool item::goes_bad() const // Corpses rot only if they are made of rotting materials return made_of_any( materials::get_rotting() ); } - return is_food() && get_comestible()->spoils != 0_turns; + return is_comestible() && get_comestible()->spoils != 0_turns; } time_duration item::get_shelf_life() const { if( goes_bad() ) { - if( is_food() ) { + if( is_comestible() ) { return get_comestible()->spoils; } else if( is_corpse() ) { return 24_hours; @@ -6852,11 +6847,6 @@ bool item::reinforceable() const } ); } -bool item::destroyed_at_zero_charges() const -{ - return ( is_ammo() || is_food() ); -} - bool item::is_gun() const { return !!type->gun; @@ -7033,7 +7023,7 @@ bool item::is_food_container() const bool item::has_temperature() const { - return is_food() || is_corpse(); + return is_comestible() || is_corpse(); } bool item::is_corpse() const @@ -7519,16 +7509,15 @@ bool item::can_contain_partial( const item &it ) const } std::pair item::best_pocket( const item &it, item_location &parent, - const bool allow_sealed ) + const bool allow_sealed, const bool ignore_settings ) { item_location nested_location( parent, this ); - return contents.best_pocket( it, nested_location, false, - /*allow_sealed=*/allow_sealed ); + return contents.best_pocket( it, nested_location, false, allow_sealed, ignore_settings ); } bool item::spill_contents( Character &c ) { - if( !has_pockets() || is_container_empty() ) { + if( !is_container() || is_container_empty() ) { return true; } @@ -7544,7 +7533,7 @@ bool item::spill_contents( Character &c ) bool item::spill_contents( const tripoint &pos ) { - if( !has_pockets() || is_container_empty() ) { + if( !is_container() || is_container_empty() ) { return true; } return contents.spill_contents( pos ); @@ -8929,7 +8918,7 @@ bool item::use_amount( const itype_id &it, int &quantity, std::list &used, // Remember quantity so that we can unseal self int old_quantity = quantity; std::vector removed_items; - for( item *contained : contents.all_items_ptr( item_pocket::pocket_type::CONTAINER ) ) { + for( item *contained : all_items_ptr( item_pocket::pocket_type::CONTAINER ) ) { if( contained->use_amount_internal( it, quantity, used, filter ) ) { removed_items.push_back( contained ); } @@ -9128,7 +9117,8 @@ void item::set_item_temperature( float new_temperature ) int item::fill_with( const item &contained, const int amount, const bool unseal_pockets, - const bool allow_sealed ) + const bool allow_sealed, + const bool ignore_settings ) { if( amount <= 0 ) { return 0; @@ -9147,8 +9137,7 @@ int item::fill_with( const item &contained, const int amount, if( count_by_charges ) { contained_item.charges = 1; } - pocket = best_pocket( contained_item, loc, - /*allow_sealed=*/allow_sealed ).second; + pocket = best_pocket( contained_item, loc, allow_sealed, ignore_settings ).second; } if( pocket == nullptr ) { break; @@ -9417,7 +9406,7 @@ bool item::has_rotten_away() const if( is_corpse() && !can_revive() ) { return get_rot() > 10_days; } else { - return is_food() && get_relative_rot() > 2.0; + return get_relative_rot() > 2.0; } } @@ -9527,7 +9516,7 @@ bool item::needs_processing() const bool need_process = false; visit_items( [&need_process]( const item * it, item * ) { if( it->active || it->ethereal || it->has_flag( flag_RADIO_ACTIVATION ) || - it->is_food() || it->has_relic_recharge() ) { + it->has_relic_recharge() ) { need_process = true; return VisitResponse::ABORT; } @@ -9538,7 +9527,7 @@ bool item::needs_processing() const int item::processing_speed() const { - if( is_corpse() || is_food() ) { + if( is_corpse() || is_comestible() ) { return to_turns( 10_minutes ); } // Unless otherwise indicated, update every turn. @@ -10983,3 +10972,71 @@ int item::get_recursive_disassemble_moves( const Character &guy ) const } return moves; } + +std::list item::all_items_top() const +{ + return contents.all_items_top(); +} + +std::list item::all_items_top() +{ + return contents.all_items_top(); +} + +std::list item::all_items_top( item_pocket::pocket_type pk_type ) const +{ + return contents.all_items_top( pk_type ); +} + +std::list item::all_items_top( item_pocket::pocket_type pk_type ) +{ + return contents.all_items_top( pk_type ); +} + +std::list item::all_items_ptr() const +{ + std::list all_items_internal; + for( int i = static_cast( item_pocket::pocket_type::CONTAINER ); + i < static_cast( item_pocket::pocket_type::LAST ); i++ ) { + std::list inserted{ all_items_top_recursive( static_cast( i ) ) }; + all_items_internal.insert( all_items_internal.end(), inserted.begin(), inserted.end() ); + } + return all_items_internal; +} + +std::list item::all_items_ptr( item_pocket::pocket_type pk_type ) const +{ + return all_items_top_recursive( pk_type ); +} + +std::list item::all_items_ptr( item_pocket::pocket_type pk_type ) +{ + return all_items_top_recursive( pk_type ); +} + +std::list item::all_items_top_recursive( item_pocket::pocket_type pk_type ) +const +{ + std::list contained = contents.all_items_top( pk_type ); + std::list all_items_internal{ contained }; + for( const item *it : contained ) { + std::list recursion_items = it->all_items_top_recursive( pk_type ); + all_items_internal.insert( all_items_internal.end(), recursion_items.begin(), + recursion_items.end() ); + } + + return all_items_internal; +} + +std::list item::all_items_top_recursive( item_pocket::pocket_type pk_type ) +{ + std::list contained = contents.all_items_top( pk_type ); + std::list all_items_internal{ contained }; + for( item *it : contained ) { + std::list recursion_items = it->all_items_top_recursive( pk_type ); + all_items_internal.insert( all_items_internal.end(), recursion_items.begin(), + recursion_items.end() ); + } + + return all_items_internal; +} diff --git a/src/item.h b/src/item.h index 04f86a447f481..1816d470cb09b 100644 --- a/src/item.h +++ b/src/item.h @@ -569,6 +569,11 @@ class item : public visitable */ bool merge_charges( const item &rhs ); + /** + * Total weight of an item accounting for all contained/integrated items + * @param include_contents if true include weight of contained items + * @param integral if true return effective weight if this item was integrated into another + */ units::mass weight( bool include_contents = true, bool integral = false ) const; /** @@ -758,7 +763,8 @@ class item : public visitable */ int fill_with( const item &contained, int amount = INFINITE_CHARGES, bool unseal_pockets = false, - bool allow_sealed = false ); + bool allow_sealed = false, + bool ignore_settings = false ); /** * How much more of this liquid (in charges) can be put in this container. @@ -783,11 +789,6 @@ class item : public visitable // recursive function that checks pockets for remaining free space units::volume check_for_free_space() const; units::volume get_selected_stack_volume( const std::map &without ) const; - // checks if the item can have things placed in it - bool has_pockets() const { - // what has it gots in them, precious - return contents.has_pocket_type( item_pocket::pocket_type::CONTAINER ); - } /** * Puts the given item into this one. */ @@ -1198,7 +1199,6 @@ class item : public visitable void overwrite_relic( const relic &nrelic ); - bool destroyed_at_zero_charges() const; // Most of the is_whatever() functions call the same function in our itype bool is_null() const; // True if type is NULL, or points to the null item (id == 0) bool is_comestible() const; @@ -1282,7 +1282,7 @@ class item : public visitable bool can_contain_partial( const item &it ) const; /*@}*/ std::pair best_pocket( const item &it, item_location &parent, - bool allow_sealed = false ); + bool allow_sealed = false, bool ignore_settings = false ); units::length max_containable_length() const; units::volume max_containable_volume() const; @@ -2247,6 +2247,26 @@ class item : public visitable std::list remove_items_with( const std::function &filter, int count = INT_MAX ) override; + /** returns a list of pointers to all top-level items that are not mods */ + std::list all_items_top() const; + /** returns a list of pointers to all top-level items that are not mods */ + std::list all_items_top(); + /** returns a list of pointers to all top-level items */ + std::list all_items_top( item_pocket::pocket_type pk_type ) const; + /** returns a list of pointers to all top-level items */ + std::list all_items_top( item_pocket::pocket_type pk_type ); + + /** + * returns a list of pointers to all items inside recursively + * includes mods. used for item_location::unpack() + */ + std::list all_items_ptr() const; + /** returns a list of pointers to all items inside recursively */ + std::list all_items_ptr( item_pocket::pocket_type pk_type ) const; + /** returns a list of pointers to all items inside recursively */ + std::list all_items_ptr( item_pocket::pocket_type pk_type ); + + private: /** migrates an item into this item. */ void migrate_content_item( const item &contained ); @@ -2277,6 +2297,9 @@ class item : public visitable /** Helper for checking reloadability. **/ bool is_reloadable_helper( const itype_id &ammo, bool now ) const; + std::list all_items_top_recursive( item_pocket::pocket_type pk_type ); + std::list all_items_top_recursive( item_pocket::pocket_type pk_type ) const; + void armor_encumbrance_info( std::vector &info, int reduce_encumbrance_by = 0 ) const; public: diff --git a/src/item_action.cpp b/src/item_action.cpp index 14bdf91ef9eb7..2e332be0888de 100644 --- a/src/item_action.cpp +++ b/src/item_action.cpp @@ -40,10 +40,6 @@ class Character; static const std::string errstring( "ERROR" ); -static const bionic_id bio_tools( "bio_tools" ); -static const bionic_id bio_claws( "bio_claws" ); -static const bionic_id bio_claws_weapon( "bio_claws_weapon" ); - static const itype_id itype_UPS( "UPS" ); struct tripoint; @@ -254,17 +250,11 @@ void game::item_action_menu() const auto &gen = item_action_generator::generator(); const action_map &item_actions = gen.get_item_action_map(); - // HACK: A bit of a hack for now. If more pseudos get implemented, this should be un-hacked - std::vector pseudos; - item toolset( "toolset", calendar::turn ); - if( u.has_active_bionic( bio_tools ) ) { - pseudos.push_back( &toolset ); - } - item bio_claws_item( static_cast( bio_claws_weapon ), calendar::turn ); - if( u.has_active_bionic( bio_claws ) ) { - pseudos.push_back( &bio_claws_item ); + std::vector pseudo_items = get_player_character().get_pseudo_items(); + std::vector pseudos( pseudo_items.size() ); + for( item &pseudo : pseudo_items ) { + pseudos.push_back( &pseudo ); } - item_action_map iactions = gen.map_actions_to_items( u, pseudos ); if( iactions.empty() ) { popup( _( "You don't have any items with registered uses" ) ); diff --git a/src/item_contents.cpp b/src/item_contents.cpp index 0030f1f022c84..4cbf0c9102270 100644 --- a/src/item_contents.cpp +++ b/src/item_contents.cpp @@ -31,12 +31,6 @@ #include "ui.h" #include "units.h" -static const std::vector avail_types{ - item_pocket::pocket_type::CONTAINER, - item_pocket::pocket_type::MAGAZINE, - item_pocket::pocket_type::MAGAZINE_WELL -}; - class pocket_favorite_callback : public uilist_callback { private: @@ -524,7 +518,7 @@ void item_contents::force_insert_item( const item &it, item_pocket::pocket_type } std::pair item_contents::best_pocket( const item &it, - item_location &parent, bool nested, const bool allow_sealed ) + item_location &parent, bool nested, const bool allow_sealed, const bool ignore_settings ) { if( !can_contain( it ).success() ) { return { item_location(), nullptr }; @@ -548,7 +542,7 @@ std::pair item_contents::best_pocket( const item & if( !pocket.can_contain( it ).success() ) { continue; } - if( !pocket.settings.accepts_item( it ) ) { + if( !ignore_settings && !pocket.settings.accepts_item( it ) ) { // Item forbidden by whitelist / blacklist continue; } @@ -1060,11 +1054,11 @@ void item_contents::remove_items_if( const std::function &filter } } -std::list item_contents::all_items_top( item_pocket::pocket_type pk_type ) +std::list item_contents::all_items_top( const std::function &filter ) { std::list all_items_internal; for( item_pocket &pocket : contents ) { - if( pocket.is_type( pk_type ) ) { + if( filter( pocket ) ) { std::list contained_items = pocket.all_items_top(); all_items_internal.insert( all_items_internal.end(), contained_items.begin(), contained_items.end() ); @@ -1073,24 +1067,19 @@ std::list item_contents::all_items_top( item_pocket::pocket_type pk_type return all_items_internal; } -std::list item_contents::all_items_top( item_pocket::pocket_type pk_type ) const +std::list item_contents::all_items_top( item_pocket::pocket_type pk_type ) { - std::list all_items_internal; - for( const item_pocket &pocket : contents ) { - if( pocket.is_type( pk_type ) ) { - std::list contained_items = pocket.all_items_top(); - all_items_internal.insert( all_items_internal.end(), contained_items.begin(), - contained_items.end() ); - } - } - return all_items_internal; + return all_items_top( [pk_type]( item_pocket & pocket ) { + return pocket.is_type( pk_type ); + } ); } -std::list item_contents::all_standard_items_top() const +std::list item_contents::all_items_top( const + std::function &filter ) const { std::list all_items_internal; for( const item_pocket &pocket : contents ) { - if( pocket.is_standard_type() ) { + if( filter( pocket ) ) { std::list contained_items = pocket.all_items_top(); all_items_internal.insert( all_items_internal.end(), contained_items.begin(), contained_items.end() ); @@ -1099,86 +1088,25 @@ std::list item_contents::all_standard_items_top() const return all_items_internal; } -std::list item_contents::all_items_top() -{ - std::list ret; - for( const item_pocket::pocket_type pk_type : avail_types ) { - std::list top{ all_items_top( pk_type ) }; - ret.insert( ret.end(), top.begin(), top.end() ); - } - return ret; -} - -std::list item_contents::all_items_top() const -{ - std::list ret; - for( const item_pocket::pocket_type pk_type : avail_types ) { - std::list top{ all_items_top( pk_type ) }; - ret.insert( ret.end(), top.begin(), top.end() ); - } - return ret; -} - -std::list item_contents::all_items_ptr( item_pocket::pocket_type pk_type ) -{ - return all_items_top_recursive( pk_type ); -} - -std::list item_contents::all_items_ptr( item_pocket::pocket_type pk_type ) const -{ - return all_items_top_recursive( pk_type ); -} - -std::list item_contents::all_items_ptr() const +std::list item_contents::all_items_top( item_pocket::pocket_type pk_type ) const { - std::list all_items_internal; - for( int i = static_cast( item_pocket::pocket_type::CONTAINER ); - i < static_cast( item_pocket::pocket_type::LAST ); i++ ) { - std::list inserted{ all_items_top_recursive( static_cast( i ) ) }; - all_items_internal.insert( all_items_internal.end(), inserted.begin(), inserted.end() ); - } - return all_items_internal; + return all_items_top( [pk_type]( const item_pocket & pocket ) { + return pocket.is_type( pk_type ); + } ); } -std::list item_contents::all_items_top_recursive( item_pocket::pocket_type pk_type ) -const +std::list item_contents::all_items_top() { - std::list all_items_internal; - for( const item_pocket &pocket : contents ) { - if( pocket.is_type( pk_type ) ) { - std::list contained_items = pocket.all_items_top(); - all_items_internal.insert( all_items_internal.end(), contained_items.begin(), - contained_items.end() ); - std::list recursion_items; - for( const item *it : contained_items ) { - recursion_items = it->contents.all_items_top_recursive( pk_type ); - all_items_internal.insert( all_items_internal.end(), recursion_items.begin(), - recursion_items.end() ); - } - } - } - - return all_items_internal; + return all_items_top( []( const item_pocket & pocket ) { + return pocket.is_standard_type(); + } ); } -std::list item_contents::all_items_top_recursive( item_pocket::pocket_type pk_type ) +std::list item_contents::all_items_top() const { - std::list< item *> all_items_internal; - for( item_pocket &pocket : contents ) { - if( pocket.is_type( pk_type ) ) { - std::list< item *> contained_items = pocket.all_items_top(); - all_items_internal.insert( all_items_internal.end(), contained_items.begin(), - contained_items.end() ); - std::list< item *> recursion_items; - for( item *it : contained_items ) { - recursion_items = it->contents.all_items_top_recursive( pk_type ); - all_items_internal.insert( all_items_internal.end(), recursion_items.begin(), - recursion_items.end() ); - } - } - } - - return all_items_internal; + return all_items_top( []( const item_pocket & pocket ) { + return pocket.is_standard_type(); + } ); } item &item_contents::legacy_front() diff --git a/src/item_contents.h b/src/item_contents.h index 331cc3a9567bd..9af28c85971e3 100644 --- a/src/item_contents.h +++ b/src/item_contents.h @@ -41,7 +41,7 @@ class item_contents * only checks CONTAINER pocket type */ std::pair best_pocket( const item &it, item_location &parent, - bool nested, bool allow_sealed = false ); + bool nested, bool allow_sealed = false, bool ignore_settings = false ); units::length max_containable_length() const; units::volume max_containable_volume() const; @@ -65,27 +65,24 @@ class item_contents // number of pockets size_t size() const; + private: + /** returns a list of pointers to all top-level items from pockets that match the predicate */ + std::list all_items_top( const std::function &filter ); + /** returns a list of pointers to all top-level items from pockets that match the predicate */ + std::list all_items_top( const std::function &filter ) + const; + + public: /** returns a list of pointers to all top-level items */ std::list all_items_top( item_pocket::pocket_type pk_type ); /** returns a list of pointers to all top-level items */ std::list all_items_top( item_pocket::pocket_type pk_type ) const; - // returns a list of pointers to all top level items that pass is_standard_type - std::list all_standard_items_top() const; - /** returns a list of pointers to all top-level items that are not mods */ std::list all_items_top(); /** returns a list of pointers to all top-level items that are not mods */ std::list all_items_top() const; - // returns a list of pointers to all items inside recursively - std::list all_items_ptr( item_pocket::pocket_type pk_type ); - // returns a list of pointers to all items inside recursively - std::list all_items_ptr( item_pocket::pocket_type pk_type ) const; - // returns a list of pointers to all items inside recursively - // includes mods. used for item_location::unpack() - std::list all_items_ptr() const; - /** gets all gunmods in the item */ std::vector gunmods(); /** gets all gunmods in the item */ @@ -283,11 +280,6 @@ class item_contents ret_val find_pocket_for( const item &it, item_pocket::pocket_type pk_type = item_pocket::pocket_type::CONTAINER ) const; - //called by all_items_ptr to recursively get all items without duplicating items in nested pockets - std::list all_items_top_recursive( item_pocket::pocket_type pk_type ) const; - //called by all_items_ptr to recursively get all items without duplicating items in nested pockets - std::list all_items_top_recursive( item_pocket::pocket_type pk_type ); - std::list contents; struct item_contents_helper; diff --git a/src/item_factory.cpp b/src/item_factory.cpp index dd7ecebfc358a..03d64a5df9b3c 100644 --- a/src/item_factory.cpp +++ b/src/item_factory.cpp @@ -1012,7 +1012,6 @@ void Item_factory::init() add_iuse( "SHOCKTONFA_OFF", &iuse::shocktonfa_off ); add_iuse( "SHOCKTONFA_ON", &iuse::shocktonfa_on ); add_iuse( "SIPHON", &iuse::siphon ); - add_iuse( "SLEEP", &iuse::sleep ); add_iuse( "SMOKING", &iuse::smoking ); add_iuse( "SOLARPACK", &iuse::solarpack ); add_iuse( "SOLARPACK_OFF", &iuse::solarpack_off ); @@ -1080,6 +1079,7 @@ void Item_factory::init() add_actor( std::make_unique() ); add_actor( std::make_unique() ); add_actor( std::make_unique() ); + add_actor( std::make_unique() ); // An empty dummy group, it will not spawn anything. However, it makes that item group // id valid, so it can be used all over the place without need to explicitly check for it. m_template_groups[item_group_id( "EMPTY_GROUP" )] = @@ -1163,7 +1163,9 @@ void Item_factory::check_definitions() const for( const bodypart_str_id &bp : *portion.covers ) { if( portion.covers->test( bp ) ) { if( observed_bps.count( bp ) ) { - msg += "multiple portions with same body_part defined\n"; + msg += string_format( + "multiple portions with same body_part %s defined\n", + bp.str() ); } observed_bps.insert( bp ); } @@ -1779,6 +1781,7 @@ void gun_variant_data::deserialize( JsonIn &jsin ) void gun_variant_data::load( const JsonObject &jo ) { + brand_name.make_plural(); mandatory( jo, false, "id", id ); mandatory( jo, false, "name", brand_name ); mandatory( jo, false, "description", alt_description ); @@ -1905,51 +1908,15 @@ std::string enum_to_string( layer_level data ) void islot_armor::load( const JsonObject &jo ) { - if( jo.has_array( "armor_portion_data" ) ) { - bool dont_add_first = false; - if( !data.empty() ) { // Uses copy-from - dont_add_first = true; - const JsonObject &obj = *jo.get_array( "armor_portion_data" ).begin(); - armor_portion_data tempData; - - if( obj.has_array( "encumbrance" ) ) { - tempData.encumber = obj.get_array( "encumbrance" ).get_int( 0 ); - tempData.max_encumber = obj.get_array( "encumbrance" ).get_int( 1 ); - } else if( obj.has_int( "encumbrance" ) ) { - tempData.encumber = obj.get_int( "encumbrance" ); - tempData.max_encumber = -1; - } - if( obj.has_int( "coverage" ) ) { - tempData.coverage = obj.get_int( "coverage" ); - } - if( tempData.encumber != data[0].encumber ) { - data[0].encumber = tempData.encumber; - } - if( tempData.max_encumber != data[0].max_encumber ) { - data[0].max_encumber = tempData.max_encumber; - } - if( tempData.coverage != data[0].coverage ) { - data[0].coverage = tempData.coverage; - } - body_part_set temp_cover_data; - assign_coverage_from_json( obj, "covers", temp_cover_data ); - optional( obj, was_loaded, "sided", sided, false ); - if( temp_cover_data.any() ) { - data[0].covers = temp_cover_data; - } - } + if( jo.has_array( "armor_portion_data" ) || jo.has_array( "armor" ) ) { + const JsonArray &arr = jo.has_array( "armor" ) ? jo.get_array( "armor" ) : + jo.get_array( "armor_portion_data" ); - for( const JsonObject obj : jo.get_array( "armor_portion_data" ) ) { - // If this item used copy-from, data[0] is already set, so skip adding first data - if( dont_add_first ) { - obj.allow_omitted_members(); - dont_add_first = false; - continue; - } + data.clear(); + for( const JsonObject obj : arr ) { armor_portion_data tempData; body_part_set temp_cover_data; assign_coverage_from_json( obj, "covers", temp_cover_data ); - optional( obj, was_loaded, "sided", sided, false ); tempData.covers = temp_cover_data; if( obj.has_array( "encumbrance" ) ) { @@ -1985,7 +1952,6 @@ void islot_armor::load( const JsonObject &jo ) optional( jo, was_loaded, "coverage", data[0].coverage, 0 ); body_part_set temp_cover_data; assign_coverage_from_json( jo, "covers", temp_cover_data ); - optional( jo, was_loaded, "sided", sided, false ); data[0].covers = temp_cover_data; } else { // This item has copy-from and already has taken data from parent armor_portion_data child_data; @@ -2012,13 +1978,14 @@ void islot_armor::load( const JsonObject &jo ) } body_part_set temp_cover_data; assign_coverage_from_json( jo, "covers", temp_cover_data ); - optional( jo, was_loaded, "sided", sided, false ); if( temp_cover_data.any() ) { data[0].covers = temp_cover_data; } } } + optional( jo, was_loaded, "sided", sided, false ); + optional( jo, was_loaded, "material_thickness", thickness, 0.0f ); optional( jo, was_loaded, "environmental_protection", env_resist, 0 ); optional( jo, was_loaded, "environmental_protection_with_filter", env_resist_w_filter, 0 ); @@ -2631,7 +2598,7 @@ void Item_factory::check_and_create_magazine_pockets( itype &def ) return; } // the item we're trying to migrate must actually have data for ammo - if( def.magazines.empty() && !( def.gun || def.magazine || def.tool ) ) { + if( def.magazines.empty() && !( def.magazine || def.tool ) ) { return; } if( def.tool && def.tool->ammo_id.empty() ) { @@ -2678,11 +2645,6 @@ void Item_factory::check_and_create_magazine_pockets( itype &def ) mag_data.ammo_restriction.emplace( amtype, def.magazine->capacity ); } } - if( def.gun ) { - for( const ammotype &amtype : def.gun->ammo ) { - mag_data.ammo_restriction.emplace( amtype, def.gun->clip ); - } - } if( def.tool ) { for( const ammotype &amtype : def.tool->ammo_id ) { mag_data.ammo_restriction.emplace( amtype, def.tool->max_charges ); @@ -3119,6 +3081,11 @@ void Item_factory::load_basic_info( const JsonObject &jo, itype &def, const std: jo.read( "id", def.id, true ); } + if( !def.src.empty() && def.src.back().first != def.id ) { + def.src.clear(); + } + def.src.emplace_back( def.id, mod_id( src ) ); + if( def.magazines.empty() ) { migrate_mag_from_pockets( def ); } diff --git a/src/item_location.cpp b/src/item_location.cpp index 7b0022cb3795f..ebe8f6046f60c 100644 --- a/src/item_location.cpp +++ b/src/item_location.cpp @@ -546,7 +546,7 @@ class item_location::impl::item_in_container : public item_location::impl // note: could be a better way of handling this? int calc_index() const { int idx = 0; - for( const item *it : container->contents.all_items_top() ) { + for( const item *it : container->all_items_top() ) { if( target() == it ) { return idx; } @@ -577,7 +577,7 @@ class item_location::impl::item_in_container : public item_location::impl if( idx < 0 || static_cast( idx ) >= target()->contents.num_item_stacks() ) { return nullptr; } - std::list all_items = container->contents.all_items_ptr(); + std::list all_items = container->all_items_ptr(); auto iter = all_items.begin(); std::advance( iter, idx ); if( iter != all_items.end() ) { @@ -783,7 +783,7 @@ void item_location::deserialize( JsonIn &js ) ptr.reset( new impl::item_on_map( map_cursor( pos ), idx ) ); // drop on ground return; } - const std::list parent_contents = parent->contents.all_items_top(); + const std::list parent_contents = parent->all_items_top(); if( idx > -1 && idx < static_cast( parent_contents.size() ) ) { auto iter = parent_contents.begin(); std::advance( iter, idx ); diff --git a/src/item_pocket.cpp b/src/item_pocket.cpp index 6b2245b37dec7..fa7eb4b8a8f96 100644 --- a/src/item_pocket.cpp +++ b/src/item_pocket.cpp @@ -375,7 +375,7 @@ std::list item_pocket::all_items_ptr( item_pocket::pocket_type pk_type ) } std::list all_items_top_level{ all_items_top() }; for( item *it : all_items_top_level ) { - std::list all_items_internal{ it->contents.all_items_ptr( pk_type ) }; + std::list all_items_internal{ it->all_items_ptr( pk_type ) }; all_items_top_level.insert( all_items_top_level.end(), all_items_internal.begin(), all_items_internal.end() ); } @@ -389,7 +389,7 @@ std::list item_pocket::all_items_ptr( item_pocket::pocket_type pk_ } std::list all_items_top_level{ all_items_top() }; for( const item *it : all_items_top_level ) { - std::list all_items_internal{ it->contents.all_items_ptr( pk_type ) }; + std::list all_items_internal{ it->all_items_ptr( pk_type ) }; all_items_top_level.insert( all_items_top_level.end(), all_items_internal.begin(), all_items_internal.end() ); } diff --git a/src/iteminfo_query.h b/src/iteminfo_query.h index 895527ad29d59..15de86340f66b 100644 --- a/src/iteminfo_query.h +++ b/src/iteminfo_query.h @@ -9,6 +9,7 @@ enum class iteminfo_parts : size_t { BASE_CATEGORY = 0, + BASE_MOD_SRC, BASE_PRICE, BASE_BARTER, BASE_OWNER, diff --git a/src/itype.h b/src/itype.h index 35c5f3e1ba2c1..c6e67c0251678 100644 --- a/src/itype.h +++ b/src/itype.h @@ -216,7 +216,7 @@ struct armor_portion_data { int encumber = 0; // When storage is full, how much it encumbers the player. - int max_encumber = 0; + int max_encumber = -1; // Percentage of the body part that this item covers. // This determines how likely it is to hit the item instead of the player. @@ -849,6 +849,8 @@ struct itype { using FlagsSetType = std::set; + std::vector> src; + /** * Slots for various item type properties. Each slot may contain a valid pointer or null, check * this before using it. diff --git a/src/iuse.cpp b/src/iuse.cpp index cf1367c264456..865e6d310599a 100644 --- a/src/iuse.cpp +++ b/src/iuse.cpp @@ -23,6 +23,7 @@ #include "activity_actor_definitions.h" #include "activity_type.h" #include "avatar.h" +#include "bionics.h" #include "bodypart.h" #include "calendar.h" #include "cata_utility.h" @@ -998,13 +999,6 @@ cata::optional iuse::prozac( player *p, item *it, bool, const tripoint & ) return it->type->charges_to_use(); } -cata::optional iuse::sleep( player *p, item *it, bool, const tripoint & ) -{ - p->mod_fatigue( 40 ); - p->add_msg_if_player( m_warning, _( "You feel very sleepy…" ) ); - return it->type->charges_to_use(); -} - cata::optional iuse::datura( player *p, item *it, bool, const tripoint & ) { if( p->is_npc() ) { @@ -4759,8 +4753,7 @@ cata::optional iuse::blood_draw( player *p, item *it, bool, const tripoint if( acid_blood ) { item acid( "chem_sulphuric_acid", calendar::turn ); - // Acid should have temperature. But it currently does not. So trying to set it crashes the game. - // When acid gets temperature just add acid.set_item_temperature( blood_temp ); here + acid.set_item_temperature( blood_temp ); it->put_in( acid, item_pocket::pocket_type::CONTAINER ); if( one_in( 3 ) ) { if( it->inc_damage( damage_type::ACID ) ) { @@ -7774,9 +7767,9 @@ cata::optional iuse::ehandcuffs( player *p, item *it, bool t, const tripoin } if( p->has_item( *it ) ) { - if( p->has_active_bionic( bio_shock ) && p->get_power_level() >= 2_kJ && + if( p->has_active_bionic( bio_shock ) && p->get_power_level() >= bio_shock->power_trigger && one_in( 5 ) ) { - p->mod_power_level( -2_kJ ); + p->mod_power_level( -bio_shock->power_trigger ); it->unset_flag( flag_NO_UNWIELD ); it->ammo_unset(); diff --git a/src/iuse.h b/src/iuse.h index 0803ae5071716..c666280836376 100644 --- a/src/iuse.h +++ b/src/iuse.h @@ -63,7 +63,6 @@ cata::optional purifier( player *, item *, bool, const tripoint & ); cata::optional purify_iv( player *, item *, bool, const tripoint & ); cata::optional purify_smart( player *, item *, bool, const tripoint & ); cata::optional sewage( player *, item *, bool, const tripoint & ); -cata::optional sleep( player *, item *, bool, const tripoint & ); cata::optional smoking( player *, item *, bool, const tripoint & ); cata::optional thorazine( player *, item *, bool, const tripoint & ); cata::optional vaccine( player *, item *, bool, const tripoint & ); diff --git a/src/iuse_actor.cpp b/src/iuse_actor.cpp index 01fba89c81ce6..6aa820c3e4466 100644 --- a/src/iuse_actor.cpp +++ b/src/iuse_actor.cpp @@ -76,6 +76,7 @@ #include "sounds.h" #include "string_formatter.h" #include "string_input_popup.h" +#include "talker.h" #include "translations.h" #include "trap.h" #include "ui.h" @@ -2386,7 +2387,7 @@ cata::optional holster_actor::use( player &p, item &it, bool, const tripoin std::string prompt = holster_prompt.empty() ? _( "Holster item" ) : holster_prompt.translated(); opts.push_back( prompt ); pos = -1; - std::list all_items = it.contents.all_items_top( + std::list all_items = it.all_items_top( item_pocket::pocket_type::CONTAINER ); std::transform( all_items.begin(), all_items.end(), std::back_inserter( opts ), []( const item * elem ) { @@ -2911,7 +2912,7 @@ static bool damage_item( player &pl, item_location &fix ) if( fix.where() == item_location::type::character ) { pl.i_rem_keep_contents( fix.get_item() ); } else { - for( const item *it : fix->contents.all_items_top() ) { + for( const item *it : fix->all_items_top() ) { if( it->has_flag( flag_NO_DROP ) ) { continue; } @@ -4164,20 +4165,12 @@ cata::optional deploy_tent_actor::use( player &p, item &it, bool, const tri return cata::nullopt; } } - // Make a square of floor surrounded by wall. - for( const tripoint &dest : here.points_in_radius( center, radius ) ) { - here.furn_set( dest, wall ); - } - for( const tripoint &dest : here.points_in_radius( center, radius - 1 ) ) { - here.furn_set( dest, floor ); - } - // Place the center floor and the door. - if( floor_center ) { - here.furn_set( center, *floor_center ); - } - here.furn_set( p.pos() + direction, door_closed ); - add_msg( m_info, _( "You set up the %s on the ground." ), it.tname() ); - add_msg( m_info, _( "Examine the center square to pack it up again." ) ); + + //checks done start activity: + player_activity new_act = player_activity( tent_placement_activity_actor( to_moves + ( 20_minutes ), direction, radius, it, wall, floor, floor_center, door_closed ) ); + get_player_character().assign_activity( new_act, false ); + return 1; } @@ -4516,3 +4509,40 @@ std::unique_ptr change_scent_iuse::clone() const { return std::make_unique( *this ); } + +std::unique_ptr effect_on_conditons_actor::clone() const +{ + return std::make_unique( *this ); +} + +void effect_on_conditons_actor::load( const JsonObject &obj ) +{ + description = obj.get_string( "description" ); + for( const std::string &eoc : obj.get_string_array( "effect_on_conditions" ) ) { + eocs.emplace_back( effect_on_condition_id( eoc ) ); + } +} + +void effect_on_conditons_actor::info( const item &, std::vector &dump ) const +{ + dump.emplace_back( "DESCRIPTION", description ); +} + +cata::optional effect_on_conditons_actor::use( player &p, item &it, bool, + const tripoint & ) const +{ + dialogue d; + standard_npc default_npc( "Default" ); + if( avatar *u = p.as_avatar() ) { + d.alpha = get_talker_for( u ); + } else if( npc *n = p.as_npc() ) { + d.alpha = get_talker_for( n ); + } + ///TODO make this talker item + d.beta = get_talker_for( default_npc ); + + for( const effect_on_condition_id &eoc : eocs ) { + eoc->activate( d ); + } + return it.type->charges_to_use(); +} diff --git a/src/iuse_actor.h b/src/iuse_actor.h index 031eee1b704c5..767e215d8c810 100644 --- a/src/iuse_actor.h +++ b/src/iuse_actor.h @@ -1113,4 +1113,23 @@ class sew_advanced_actor : public iuse_actor cata::optional use( player &, item &, bool, const tripoint & ) const override; std::unique_ptr clone() const override; }; + + +/** + * Activate an array of effect_on_conditions + */ +class effect_on_conditons_actor : public iuse_actor +{ + public: + std::vector eocs; + std::string description; + explicit effect_on_conditons_actor( const std::string &type = "effect_on_conditions" ) : iuse_actor( + type ) {} + + ~effect_on_conditons_actor() override = default; + void load( const JsonObject &obj ) override; + cata::optional use( player &p, item &it, bool, const tripoint & ) const override; + std::unique_ptr clone() const override; + void info( const item &, std::vector & ) const override; +}; #endif // CATA_SRC_IUSE_ACTOR_H diff --git a/src/json.cpp b/src/json.cpp index b6657d2301cc6..335e59c97d35a 100644 --- a/src/json.cpp +++ b/src/json.cpp @@ -539,6 +539,12 @@ void JsonArray::verify_index( const size_t i ) const /* iterative access */ +JsonValue JsonArray::next() +{ + verify_index( index ); + return JsonValue( *jsin, positions[index++] ); +} + bool JsonArray::next_bool() { verify_index( index ); diff --git a/src/json.h b/src/json.h index f192a81828c87..72b43490c1c4c 100644 --- a/src/json.h +++ b/src/json.h @@ -1172,6 +1172,7 @@ class JsonArray [[noreturn]] void string_error( const std::string &err, int idx, int offset ); // iterative access + JsonValue next(); bool next_bool(); int next_int(); double next_float(); diff --git a/src/lru_cache.cpp b/src/lru_cache.cpp index 6038ca7ba3cd2..112eeaad841cc 100644 --- a/src/lru_cache.cpp +++ b/src/lru_cache.cpp @@ -6,7 +6,6 @@ #include #include -#include "map_memory.h" #include "memory_fast.h" #include "point.h" @@ -73,7 +72,6 @@ const std::list::Pair> &lru_cache::li } // explicit template initialization for lru_cache of all types -template class lru_cache; template class lru_cache; template class lru_cache; template class lru_cache>; diff --git a/src/magic.cpp b/src/magic.cpp index 46aed434905b3..452fd99a44ac5 100644 --- a/src/magic.cpp +++ b/src/magic.cpp @@ -2350,6 +2350,11 @@ void spellbook_callback::refresh( uilist *menu ) wnoutrefresh( menu->window ); } +bool fake_spell::is_valid() const +{ + return id.is_valid() && !id.is_empty(); +} + void fake_spell::load( const JsonObject &jo ) { mandatory( jo, false, "id", id ); diff --git a/src/magic.h b/src/magic.h index de1cf0ad4b2c9..0388917ab8b7a 100644 --- a/src/magic.h +++ b/src/magic.h @@ -169,6 +169,7 @@ struct fake_spell { // gets the spell with an additional override for minimum level (default 0) spell get_spell( int min_level_override = 0 ) const; + bool is_valid() const; void load( const JsonObject &jo ); void serialize( JsonOut &json ) const; void deserialize( JsonIn &jsin ); @@ -697,6 +698,14 @@ void mutate( const spell &sp, Creature &caster, const tripoint &target ); void bash( const spell &sp, Creature &caster, const tripoint &target ); void dash( const spell &sp, Creature &caster, const tripoint &target ); void banishment( const spell &sp, Creature &caster, const tripoint &target ); +// revives a monster into some kind of zombie if the monster has the revives flag +void revive( const spell &sp, Creature &caster, const tripoint &target ); +void upgrade( const spell &sp, Creature &caster, const tripoint &target ); +// causes guilt to the target as if it killed the caster +void guilt( const spell &sp, Creature &caster, const tripoint &target ); +void remove_effect( const spell &sp, Creature &caster, const tripoint &target ); +void emit( const spell &sp, Creature &caster, const tripoint &target ); +void fungalize( const spell &sp, Creature &caster, const tripoint &target ); void none( const spell &sp, Creature &, const tripoint &target ); static const std::map @@ -735,6 +744,12 @@ effect_map{ { "bash", spell_effect::bash }, { "dash", spell_effect::dash }, { "banishment", spell_effect::banishment }, + { "revive", spell_effect::revive }, + { "upgrade", spell_effect::upgrade }, + { "guilt", spell_effect::guilt }, + { "remove_effect", spell_effect::remove_effect }, + { "emit", spell_effect::emit }, + { "fungalize", spell_effect::fungalize }, { "none", spell_effect::none } }; } // namespace spell_effect diff --git a/src/magic_enchantment.cpp b/src/magic_enchantment.cpp index 8c178db71af55..4e562ce0145f7 100644 --- a/src/magic_enchantment.cpp +++ b/src/magic_enchantment.cpp @@ -41,6 +41,7 @@ namespace io case enchantment::condition::UNDERGROUND: return "UNDERGROUND"; case enchantment::condition::UNDERWATER: return "UNDERWATER"; case enchantment::condition::ACTIVE: return "ACTIVE"; + case enchantment::condition::INACTIVE: return "INACTIVE"; case enchantment::condition::NUM_CONDITION: break; } debugmsg( "Invalid enchantment::condition" ); @@ -79,10 +80,19 @@ namespace io case enchant_vals::mod::FOOTSTEP_NOISE: return "FOOTSTEP_NOISE"; case enchant_vals::mod::SIGHT_RANGE: return "SIGHT_RANGE"; case enchant_vals::mod::CARRY_WEIGHT: return "CARRY_WEIGHT"; + case enchant_vals::mod::WEAPON_DISPERSION: return "WEAPON_DISPERSION"; case enchant_vals::mod::SOCIAL_LIE: return "SOCIAL_LIE"; case enchant_vals::mod::SOCIAL_PERSUADE: return "SOCIAL_PERSUADE"; case enchant_vals::mod::SOCIAL_INTIMIDATE: return "SOCIAL_INTIMIDATE"; case enchant_vals::mod::SLEEPY: return "SLEEPY"; + case enchant_vals::mod::LUMINATION: return "LUMINATION"; + case enchant_vals::mod::EFFECTIVE_HEALTH_MOD: return "EFFECTIVE_HEALTH_MOD"; + case enchant_vals::mod::MOD_HEALTH: return "MOD_HEALTH"; + case enchant_vals::mod::MOD_HEALTH_CAP: return "MOD_HEALTH_CAP"; + case enchant_vals::mod::MAP_MEMORY: return "MAP_MEMORY"; + case enchant_vals::mod::READING_EXP: return "READING_EXP"; + case enchant_vals::mod::SKILL_RUST_RESIST: return "SKILL_RUST_RESIST"; + case enchant_vals::mod::LEARNING_FOCUS: return "LEARNING_FOCUS"; case enchant_vals::mod::ARMOR_ACID: return "ARMOR_ACID"; case enchant_vals::mod::ARMOR_BASH: return "ARMOR_BASH"; case enchant_vals::mod::ARMOR_BIO: return "ARMOR_BIO"; @@ -202,6 +212,10 @@ bool enchantment::is_active( const Character &guy, const bool active ) const return active; } + if( active_conditions.second == condition::INACTIVE ) { + return !active; + } + if( active_conditions.second == condition::ALWAYS ) { return true; } @@ -489,9 +503,6 @@ void enchantment::activate_passive( Character &guy ) const guy.mod_int_bonus( get_value_add( enchant_vals::mod::INTELLIGENCE ) ); guy.mod_int_bonus( mult_bonus( enchant_vals::mod::INTELLIGENCE, guy.get_int_base() ) ); - guy.mod_speed_bonus( get_value_add( enchant_vals::mod::SPEED ) ); - guy.mod_speed_bonus( mult_bonus( enchant_vals::mod::SPEED, guy.get_speed_base() ) ); - guy.mod_num_dodges_bonus( get_value_add( enchant_vals::mod::BONUS_DODGE ) ); guy.mod_num_dodges_bonus( mult_bonus( enchant_vals::mod::BONUS_DODGE, guy.get_num_dodges_base() ) ); diff --git a/src/magic_enchantment.h b/src/magic_enchantment.h index f731fcef204e6..e8f76e177e90d 100644 --- a/src/magic_enchantment.h +++ b/src/magic_enchantment.h @@ -55,10 +55,19 @@ enum class mod : int { FOOTSTEP_NOISE, SIGHT_RANGE, CARRY_WEIGHT, + WEAPON_DISPERSION, SOCIAL_LIE, SOCIAL_PERSUADE, SOCIAL_INTIMIDATE, SLEEPY, + LUMINATION, + EFFECTIVE_HEALTH_MOD, + MOD_HEALTH, + MOD_HEALTH_CAP, + MAP_MEMORY, + READING_EXP, + SKILL_RUST_RESIST, + LEARNING_FOCUS, ARMOR_BASH, ARMOR_CUT, ARMOR_STAB, @@ -117,6 +126,7 @@ class enchantment UNDERGROUND, UNDERWATER, ACTIVE, // the item, mutation, etc. is active + INACTIVE, // the item, mutation, etc. is inactive NUM_CONDITION }; diff --git a/src/magic_spell_effect.cpp b/src/magic_spell_effect.cpp index 20da42d70dd54..0409308ed17d6 100644 --- a/src/magic_spell_effect.cpp +++ b/src/magic_spell_effect.cpp @@ -29,8 +29,10 @@ #include "explosion.h" #include "field.h" #include "field_type.h" +#include "fungal_effects.h" #include "game.h" #include "item.h" +#include "kill_tracker.h" #include "line.h" #include "magic.h" #include "magic_spell_effect_helpers.h" @@ -42,6 +44,7 @@ #include "mongroup.h" #include "monster.h" #include "monstergenerator.h" +#include "morale.h" #include "mtype.h" #include "npc.h" #include "optional.h" @@ -61,8 +64,17 @@ #include "vehicle.h" #include "vpart_position.h" +static const json_character_flag json_flag_PRED1( "PRED1" ); +static const json_character_flag json_flag_PRED2( "PRED2" ); +static const json_character_flag json_flag_PRED3( "PRED3" ); +static const json_character_flag json_flag_PRED4( "PRED4" ); + static const mtype_id mon_generator( "mon_generator" ); +static const trait_id trait_KILLER( "KILLER" ); +static const trait_id trait_PACIFIST( "PACIFIST" ); +static const trait_id trait_PSYCHOPATH( "PSYCHOPATH" ); + namespace spell_detail { struct line_iterable { @@ -1180,6 +1192,142 @@ void spell_effect::charm_monster( const spell &sp, Creature &caster, const tripo } } +void spell_effect::revive( const spell &sp, Creature &caster, const tripoint &target ) +{ + const std::set area = spell_effect_area( sp, target, caster ); + ::map &here = get_map(); + const species_id spec( sp.effect_data() ); + for( const tripoint &aoe : area ) { + for( item &corpse : here.i_at( aoe ) ) { + const mtype *mt = corpse.get_mtype(); + if( !( corpse.is_corpse() && corpse.can_revive() && corpse.active && + mt->has_flag( MF_REVIVES ) && mt->in_species( spec ) && + !mt->has_flag( MF_NO_NECRO ) ) ) { + continue; + } + if( g->revive_corpse( aoe, corpse ) ) { + here.i_rem( aoe, &corpse ); + break; + } + } + } +} + +void spell_effect::upgrade( const spell &sp, Creature &caster, const tripoint &target ) +{ + const std::set area = spell_effect_area( sp, target, caster ); + for( const tripoint &aoe : area ) { + monster *mon = g->critter_at( aoe ); + if( mon != nullptr && rng( 1, 10000 ) < sp.damage() ) { + mon->allow_upgrade(); + mon->try_upgrade( false ); + } + } +} + +void spell_effect::guilt( const spell &sp, Creature &caster, const tripoint &target ) +{ + const std::set area = spell_effect_area( sp, target, caster ); + if( !caster.is_monster() ) { + // only monsters cause the guilt morale effect + return; + } + for( const tripoint &aoe : area ) { + Character *guilt_target = g->critter_at( aoe ); + if( guilt_target == nullptr ) { + continue; + } + // there used to be a MAX_GUILT_DISTANCE here, but the spell's range will do this instead. + monster &z = *caster.as_monster(); + const int kill_count = g->get_kill_tracker().kill_count( z.type->id ); + // this is when the player stops caring altogether. + const int max_kills = sp.damage(); + + // different message as we kill more of the same monster + std::string msg = _( "You feel guilty for killing %s." ); // default guilt message + game_message_type msgtype = m_bad; // default guilt message type + std::map guilt_thresholds; + guilt_thresholds[75] = _( "You feel ashamed for killing %s." ); + guilt_thresholds[50] = _( "You regret killing %s." ); + guilt_thresholds[25] = _( "You feel remorse for killing %s." ); + + Character &guy = *guilt_target; + if( guy.has_trait( trait_PSYCHOPATH ) || guy.has_trait( trait_KILLER ) || + guy.has_trait_flag( json_flag_PRED3 ) || guy.has_trait_flag( json_flag_PRED4 ) ) { + // specially immune. + return; + } + + if( kill_count >= max_kills ) { + // player no longer cares + if( kill_count == max_kills ) { + //~ Message after killing a lot of monsters which would normally affect the morale negatively. %s is the monster name, it most likely will be pluralized. + add_msg( m_good, _( "After killing so many bloody %s you no longer care " + "about their deaths anymore." ), z.name( max_kills ) ); + } + return; + } else if( ( guy.has_trait_flag( json_flag_PRED1 ) ) || + ( guy.has_trait_flag( json_flag_PRED2 ) ) ) { + msg = ( _( "Culling the weak is distasteful, but necessary." ) ); + msgtype = m_neutral; + } else { + for( const std::pair &guilt_threshold : guilt_thresholds ) { + if( kill_count >= guilt_threshold.first ) { + msg = guilt_threshold.second; + break; + } + } + } + + add_msg( msgtype, msg, z.name() ); + + int moraleMalus = -50 * ( 1.0 - ( static_cast( kill_count ) / max_kills ) ); + const int maxMalus = -250 * ( 1.0 - ( static_cast( kill_count ) / max_kills ) ); + const time_duration duration = sp.duration_turns() * + ( 1.0 - ( static_cast( kill_count ) / max_kills ) ); + const time_duration decayDelay = 3_minutes * + ( 1.0 - ( static_cast( kill_count ) / max_kills ) ); + if( z.type->in_species( species_id( sp.effect_data() ) ) ) { + moraleMalus /= 10; + if( guy.has_trait( trait_PACIFIST ) ) { + moraleMalus *= 5; + } else if( guy.has_trait_flag( json_flag_PRED1 ) ) { + moraleMalus /= 4; + } else if( guy.has_trait_flag( json_flag_PRED2 ) ) { + moraleMalus /= 5; + } + } + guy.add_morale( MORALE_KILLED_MONSTER, moraleMalus, maxMalus, duration, decayDelay ); + } +} + +void spell_effect::remove_effect( const spell &sp, Creature &caster, const tripoint &target ) +{ + const std::set area = spell_effect_area( sp, target, caster ); + for( const tripoint &aoe : area ) { + if( Creature *critter = g->critter_at( aoe ) ) { + critter->remove_effect( efftype_id( sp.effect_data() ) ); + } + } +} + +void spell_effect::emit( const spell &sp, Creature &caster, const tripoint &target ) +{ + const std::set area = spell_effect_area( sp, target, caster ); + for( const tripoint &aoe : area ) { + get_map().emit_field( aoe, emit_id( sp.effect_data() ) ); + } +} + +void spell_effect::fungalize( const spell &sp, Creature &caster, const tripoint &target ) +{ + const std::set area = spell_effect_area( sp, target, caster ); + fungal_effects fe( *g, get_map() ); + for( const tripoint &aoe : area ) { + fe.fungalize( aoe, &caster, sp.damage() / 10000.0 ); + } +} + void spell_effect::mutate( const spell &sp, Creature &caster, const tripoint &target ) { const std::set area = spell_effect_area( sp, target, caster ); diff --git a/src/magic_ter_fur_transform.cpp b/src/magic_ter_fur_transform.cpp index bcba357af1724..fede13ce565a1 100644 --- a/src/magic_ter_fur_transform.cpp +++ b/src/magic_ter_fur_transform.cpp @@ -64,14 +64,7 @@ static void load_transform_results( const JsonObject &jsi, const std::string &js list.add( T( jsi.get_string( json_key ) ), 1 ); return; } - for( const JsonValue entry : jsi.get_array( json_key ) ) { - if( entry.test_array() ) { - JsonArray inner = entry.get_array(); - list.add( T( inner.get_string( 0 ) ), inner.get_int( 1 ) ); - } else { - list.add( T( entry.get_string() ), 1 ); - } - } + load_weighted_list( jsi.get_member( json_key ), list, 1 ); } template diff --git a/src/map.cpp b/src/map.cpp index 3b0eef110e97d..cffa18ff5a79a 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -59,6 +59,7 @@ #include "line.h" #include "location.h" #include "map_iterator.h" +#include "map_memory.h" #include "map_selector.h" #include "mapbuffer.h" #include "mapgen.h" @@ -3075,7 +3076,7 @@ void map::smash_items( const tripoint &p, const int power, const std::string &ca // Remove them if they were damaged too much if( i->damage() == i->max_damage() || ( by_charges && i->charges == 0 ) ) { // But save the contents, except for irremovable gunmods - for( item *elem : i->contents.all_items_top() ) { + for( item *elem : i->all_items_top() ) { if( !elem->is_irremovable() ) { contents.emplace_back( *elem ); } @@ -3489,7 +3490,7 @@ void map::bash_items( const tripoint &p, bash_params ¶ms ) if( bashed_item->made_of( material_id( "glass" ) ) && !bashed_item->active && one_in( 2 ) ) { params.did_bash = true; smashed_glass = true; - for( const item *bashed_content : bashed_item->contents.all_items_top() ) { + for( const item *bashed_content : bashed_item->all_items_top() ) { smashed_contents.emplace_back( *bashed_content ); } bashed_item = bashed_items.erase( bashed_item ); @@ -4460,7 +4461,7 @@ item &map::add_item( const tripoint &p, item new_item ) // Process foods and temperature tracked items when they are added to the map, here instead of add_item_at() // to avoid double processing food and corpses during active item processing. - if( new_item.is_food() || new_item.has_temperature() ) { + if( new_item.has_temperature() ) { new_item.process( nullptr, p ); } @@ -5700,53 +5701,23 @@ visibility_type map::get_visibility( const lit_level ll, return visibility_type::HIDDEN; } -bool map::apply_vision_effects( const catacurses::window &w, const visibility_type vis ) const +static bool has_memory_at( const tripoint &p ) { - int symbol = ' '; - nc_color color = c_black; - - switch( vis ) { - case visibility_type::CLEAR: - // Drew the tile, so bail out now. - return false; - case visibility_type::LIT: - // can only tell that this square is bright - symbol = '#'; - color = c_light_gray; - break; - case visibility_type::BOOMER: - symbol = '#'; - color = c_pink; - break; - case visibility_type::BOOMER_DARK: - symbol = '#'; - color = c_magenta; - break; - case visibility_type::DARK: - // can't see this square at all - case visibility_type::HIDDEN: - break; + avatar &you = get_avatar(); + if( you.should_show_map_memory() ) { + int t = you.get_memorized_symbol( get_map().getabs( p ) ); + return t != 0; } - wputch( w, color, symbol ); - return true; + return false; } -bool map::draw_maptile_from_memory( const catacurses::window &w, const tripoint &p, - const tripoint &view_center, bool move_cursor ) const +static int get_memory_at( const tripoint &p ) { - int sym = get_avatar().get_memorized_symbol( getabs( p ) ); - if( sym == 0 ) { - return true; + avatar &you = get_avatar(); + if( you.should_show_map_memory() ) { + return you.get_memorized_symbol( get_map().getabs( p ) ); } - if( move_cursor ) { - const int k = p.x + getmaxx( w ) / 2 - view_center.x; - const int j = p.y + getmaxy( w ) / 2 - view_center.y; - - mvwputch( w, point( k, j ), c_brown, sym ); - } else { - wputch( w, c_brown, sym ); - } - return false; + return ' '; } void map::draw( const catacurses::window &w, const tripoint ¢er ) @@ -5763,100 +5734,127 @@ void map::draw( const catacurses::window &w, const tripoint ¢er ) const auto &visibility_cache = get_cache_ref( center.z ).visibility_cache; - // X and y are in map coordinates, but might be out of range of the map. - // When they are out of range, we just draw '#'s. - tripoint p; - p.z = center.z; - int &x = p.x; - int &y = p.y; + int wnd_h = getmaxy( w ); + int wnd_w = getmaxx( w ); + const tripoint offs = center - tripoint( wnd_w / 2, wnd_h / 2, 0 ); + + // Map memory should be at least the size of the view range + // so that new tiles can be memorized, and at least the size of the terminal + // since displayed area may be bigger than view range. + const point min_mm_reg = point( + std::min( 0, offs.x ), + std::min( 0, offs.y ) + ); + const point max_mm_reg = point( + std::max( MAPSIZE_X, offs.x + wnd_w ), + std::max( MAPSIZE_Y, offs.y + wnd_h ) + ); avatar &player_character = get_avatar(); - const bool do_map_memory = player_character.should_show_map_memory(); - for( y = center.y - getmaxy( w ) / 2; y <= center.y + getmaxy( w ) / 2; y++ ) { - if( y - center.y + getmaxy( w ) / 2 >= getmaxy( w ) ) { - continue; + player_character.prepare_map_memory_region( + getabs( tripoint( min_mm_reg, center.z ) ), + getabs( tripoint( max_mm_reg, center.z ) ) + ); + + const auto draw_background = [&]( const tripoint & p ) { + int sym = ' '; + nc_color col = c_black; + if( has_memory_at( p ) ) { + sym = get_memory_at( p ); + col = c_brown; } + wputch( w, col, sym ); + }; - wmove( w, point( 0, y - center.y + getmaxy( w ) / 2 ) ); + const auto draw_vision_effect = [&]( const visibility_type vis ) -> bool { + int sym = '#'; + nc_color col; + switch( vis ) + { + case visibility_type::LIT: + // can only tell that this square is bright + col = c_light_gray; + break; + case visibility_type::BOOMER: + col = c_pink; + break; + case visibility_type::BOOMER_DARK: + col = c_magenta; + break; + default: + return false; + } + wputch( w, col, sym ); + return true; + }; - const int maxxrender = center.x - getmaxx( w ) / 2 + getmaxx( w ); - x = center.x - getmaxx( w ) / 2; - if( y < 0 || y >= MAPSIZE_Y ) { - for( ; x < maxxrender; x++ ) { - if( !do_map_memory || draw_maptile_from_memory( w, p, center, false ) ) { - wputch( w, c_black, ' ' ); - } + drawsq_params params = drawsq_params().memorize( true ); + for( int wy = 0; wy < wnd_h; wy++ ) { + for( int wx = 0; wx < wnd_w; wx++ ) { + wmove( w, point( wx, wy ) ); + const tripoint p = offs + tripoint( wx, wy, 0 ); + if( !inbounds( p ) ) { + draw_background( p ); + continue; } - continue; - } - while( x < 0 ) { - if( !do_map_memory || draw_maptile_from_memory( w, p, center, false ) ) { - wputch( w, c_black, ' ' ); + const lit_level lighting = visibility_cache[p.x][p.y]; + const visibility_type vis = get_visibility( lighting, cache ); + + if( draw_vision_effect( vis ) ) { + continue; } - x++; - } - point l; - const int maxx = std::min( MAPSIZE_X, maxxrender ); - while( x < maxx ) { - submap *cur_submap = get_submap_at( p, l ); - submap *sm_below = p.z > -OVERMAP_DEPTH ? - get_submap_at( {p.xy(), p.z - 1}, l ) : cur_submap; - if( cur_submap == nullptr || sm_below == nullptr ) { - debugmsg( "Tried to draw map at (%d,%d) but the submap is not loaded", l.x, l.y ); - x++; + if( vis == visibility_type::HIDDEN || vis == visibility_type::DARK ) { + draw_background( p ); continue; } - while( l.x < SEEX && x < maxx ) { - const lit_level lighting = visibility_cache[x][y]; - const visibility_type vis = get_visibility( lighting, cache ); - if( !apply_vision_effects( w, vis ) ) { - const maptile curr_maptile = maptile( cur_submap, l ); - const bool draw_lower_zlevel = - draw_maptile( w, player_character, p, curr_maptile, - false, true, center, - lighting == lit_level::LOW, - lighting == lit_level::BRIGHT, true ); - if( draw_lower_zlevel ) { - p.z--; - const maptile tile_below = maptile( sm_below, l ); - draw_from_above( w, player_character, p, tile_below, false, center, - lighting == lit_level::LOW, - lighting == lit_level::BRIGHT, false ); - p.z++; - } - } else if( do_map_memory && ( vis == visibility_type::HIDDEN || vis == visibility_type::DARK ) ) { - draw_maptile_from_memory( w, p, center ); - } - l.x++; - x++; + const maptile curr_maptile = maptile_at_internal( p ); + params + .low_light( lighting == lit_level::LOW ) + .bright_light( lighting == lit_level::BRIGHT ); + if( draw_maptile( w, p, curr_maptile, params ) ) { + continue; } + const maptile tile_below = maptile_at_internal( p - tripoint( 0, 0, 1 ) ); + draw_from_above( w, tripoint( p.xy(), p.z - 1 ), tile_below, params ); } + } - while( x < maxxrender ) { - if( !do_map_memory || draw_maptile_from_memory( w, p, center, false ) ) { - wputch( w, c_black, ' ' ); + // Memorize off-screen tiles + half_open_rectangle display( offs.xy(), offs.xy() + point( wnd_w, wnd_h ) ); + drawsq_params mm_params = drawsq_params().memorize( true ).output( false ); + for( int y = 0; y < MAPSIZE_Y; y++ ) { + for( int x = 0; x < MAPSIZE_X; x++ ) { + const tripoint p( x, y, center.z ); + if( display.contains( p.xy() ) ) { + // Have been memorized during display loop + continue; + } + + const lit_level lighting = visibility_cache[p.x][p.y]; + const visibility_type vis = get_visibility( lighting, cache ); + + if( vis != visibility_type::CLEAR ) { + continue; } - x++; + + const maptile curr_maptile = maptile_at_internal( p ); + mm_params + .low_light( lighting == lit_level::LOW ) + .bright_light( lighting == lit_level::BRIGHT ); + + draw_maptile( w, p, curr_maptile, mm_params ); } } } -void map::drawsq( const catacurses::window &w, player &u, const tripoint &p, - bool invert, bool show_items ) const -{ - drawsq( w, u, p, invert, show_items, u.pos() + u.view_offset, false, false, false ); -} - -void map::drawsq( const catacurses::window &w, player &u, const tripoint &p, - const bool invert_arg, - const bool show_items_arg, const tripoint &view_center, - const bool low_light, const bool bright_light, const bool inorder ) const +void map::drawsq( const catacurses::window &w, const tripoint &p, + const drawsq_params ¶ms ) const { // If we are in tiles mode, the only thing we want to potentially draw is a highlight if( is_draw_tiles_mode() ) { - if( invert_arg ) { + if( params.highlight() ) { g->draw_highlight( p ); } return; @@ -5866,16 +5864,19 @@ void map::drawsq( const catacurses::window &w, player &u, const tripoint &p, return; } + const tripoint view_center = params.center(); + const int k = p.x + getmaxx( w ) / 2 - view_center.x; + const int j = p.y + getmaxy( w ) / 2 - view_center.y; + wmove( w, point( k, j ) ); + const maptile tile = maptile_at( p ); - const bool more = draw_maptile( w, u, p, tile, invert_arg, show_items_arg, - view_center, low_light, bright_light, inorder ); - if( more ) { - tripoint below( p.xy(), p.z - 1 ); - const maptile tile_below = maptile_at( below ); - draw_from_above( w, u, below, tile_below, - invert_arg, view_center, - low_light, bright_light, false ); + if( draw_maptile( w, p, tile, params ) ) { + return; } + + tripoint below( p.xy(), p.z - 1 ); + const maptile tile_below = maptile_at( below ); + draw_from_above( w, below, tile_below, params ); } // a check to see if the lower floor needs to be rendered in tiles @@ -5885,13 +5886,10 @@ bool map::dont_draw_lower_floor( const tripoint &p ) !( has_flag( TFLAG_NO_FLOOR, p ) || has_flag( TFLAG_Z_TRANSPARENT, p ) ); } -// returns true if lower z-level needs to be drawn, false otherwise -bool map::draw_maptile( const catacurses::window &w, const player &u, const tripoint &p, - const maptile &curr_maptile, - bool invert, bool show_items, - const tripoint &view_center, - const bool low_light, const bool bright_light, const bool inorder ) const +bool map::draw_maptile( const catacurses::window &w, const tripoint &p, + const maptile &curr_maptile, const drawsq_params ¶ms ) const { + drawsq_params param = params; nc_color tercol; const ter_t &curr_ter = curr_maptile.get_ter_t(); const furn_t &curr_furn = curr_maptile.get_furn_t(); @@ -5921,8 +5919,8 @@ bool map::draw_maptile( const catacurses::window &w, const player &u, const trip } } if( curr_ter.has_flag( TFLAG_SWIMMABLE ) && curr_ter.has_flag( TFLAG_DEEP_WATER ) && - !u.is_underwater() ) { - show_items = false; // Can only see underwater items if WE are underwater + !player_character.is_underwater() ) { + param.show_items( false ); // Can only see underwater items if WE are underwater } // If there's a trap here, and we have sufficient perception, draw that instead if( curr_trap.can_see( p, player_character ) ) { @@ -6004,7 +6002,7 @@ bool map::draw_maptile( const catacurses::window &w, const player &u, const trip std::string item_sym; // If there are items here, draw those instead - if( show_items && curr_maptile.get_item_count() > 0 && + if( param.show_items() && curr_maptile.get_item_count() > 0 && sees_some_items( p, player_character ) ) { // if there's furniture/terrain/trap/fields (sym!='.') // and we should not override it, then only highlight the square @@ -6017,7 +6015,7 @@ bool map::draw_maptile( const catacurses::window &w, const player &u, const trip tercol = curr_maptile.get_uppermost_item().color(); } if( curr_maptile.get_item_count() > 1 ) { - invert = !invert; + param.highlight( !param.highlight() ); } } } @@ -6036,7 +6034,7 @@ bool map::draw_maptile( const catacurses::window &w, const player &u, const trip } } - if( check_and_set_seen_cache( p ) ) { + if( param.memorize() && check_and_set_seen_cache( p ) ) { player_character.memorize_symbol( getabs( p ), memory_sym ); } @@ -6045,18 +6043,18 @@ bool map::draw_maptile( const catacurses::window &w, const player &u, const trip graf = true; } - const auto u_vision = u.get_vision_modes(); + const auto u_vision = player_character.get_vision_modes(); if( u_vision[BOOMERED] ) { tercol = c_magenta; } else if( u_vision[NV_GOGGLES] ) { - tercol = ( bright_light ) ? c_white : c_light_green; - } else if( low_light ) { + tercol = param.bright_light() ? c_white : c_light_green; + } else if( param.low_light() ) { tercol = c_dark_gray; } else if( u_vision[DARKNESS] ) { tercol = c_dark_gray; } - if( invert ) { + if( param.highlight() ) { tercol = invert_color( tercol ); } else if( hi ) { tercol = hilite( tercol ); @@ -6064,34 +6062,29 @@ bool map::draw_maptile( const catacurses::window &w, const player &u, const trip tercol = red_background( tercol ); } - if( inorder ) { - // Rastering the whole map, take advantage of automatically moving the cursor. - if( item_sym.empty() ) { - wputch( w, tercol, sym ); + if( item_sym.empty() && sym == ' ' ) { + if( !zlevels || p.z <= -OVERMAP_DEPTH || !curr_ter.has_flag( TFLAG_NO_FLOOR ) ) { + // Print filler symbol + sym = ' '; + tercol = c_black; } else { - wprintz( w, tercol, item_sym ); + // Draw tile underneath this one instead + return false; } - } else { - // Otherwise move the cursor before drawing. - const int k = p.x + getmaxx( w ) / 2 - view_center.x; - const int j = p.y + getmaxy( w ) / 2 - view_center.y; + } + + if( params.output() ) { if( item_sym.empty() ) { - mvwputch( w, point( k, j ), tercol, sym ); + wputch( w, tercol, sym ); } else { - mvwprintz( w, point( k, j ), tercol, item_sym ); + wprintz( w, tercol, item_sym ); } } - - return zlevels && item_sym.empty() && p.z > -OVERMAP_DEPTH && - ( curr_ter.has_flag( TFLAG_Z_TRANSPARENT ) || - ( sym == ' ' && curr_ter.has_flag( TFLAG_NO_FLOOR ) ) ); + return true; } -void map::draw_from_above( const catacurses::window &w, const player &u, const tripoint &p, - const maptile &curr_tile, - const bool invert, - const tripoint &view_center, - bool low_light, bool bright_light, bool inorder ) const +void map::draw_from_above( const catacurses::window &w, const tripoint &p, + const maptile &curr_tile, const drawsq_params ¶ms ) const { static const int AUTO_WALL_PLACEHOLDER = 2; // this should never appear as a real symbol! @@ -6144,27 +6137,23 @@ void map::draw_from_above( const catacurses::window &w, const player &u, const t sym = determine_wall_corner( p ); } - const auto u_vision = u.get_vision_modes(); + const std::bitset &u_vision = get_player_character().get_vision_modes(); if( u_vision[BOOMERED] ) { tercol = c_magenta; } else if( u_vision[NV_GOGGLES] ) { - tercol = ( bright_light ) ? c_white : c_light_green; - } else if( low_light ) { + tercol = params.bright_light() ? c_white : c_light_green; + } else if( params.low_light() ) { tercol = c_dark_gray; } else if( u_vision[DARKNESS] ) { tercol = c_dark_gray; } - if( invert ) { + if( params.highlight() ) { tercol = invert_color( tercol ); } - if( inorder ) { + if( params.output() ) { wputch( w, tercol, sym ); - } else { - const int k = p.x + getmaxx( w ) / 2 - view_center.x; - const int j = p.y + getmaxy( w ) / 2 - view_center.y; - mvwputch( w, point( k, j ), tercol, sym ); } } @@ -6884,6 +6873,8 @@ void map::loadn( const tripoint &grid, const bool update_vehicles, bool _actuali // Cache empty overmap types static const oter_str_id rock( "empty_rock" ); static const oter_str_id air( "open_air" ); + static const oter_str_id earth( "solid_earth" ); + static const ter_str_id t_soil( "t_soil" ); dbg( D_INFO ) << "map::loadn(game[" << g.get() << "], worldx[" << abs_sub.x << "], worldy[" << abs_sub.y << "], grid " << grid << ")"; @@ -6915,6 +6906,8 @@ void map::loadn( const tripoint &grid, const bool update_vehicles, bool _actuali generate_uniform( grid_abs_sub_rounded, t_open_air ); } else if( terrain_type == rock ) { generate_uniform( grid_abs_sub_rounded, t_rock ); + } else if( terrain_type == earth ) { + generate_uniform( grid_abs_sub_rounded, t_soil ); } else { tinymap tmp_map; tmp_map.generate( grid_abs_sub_rounded, calendar::turn ); @@ -8905,3 +8898,13 @@ std::vector map::get_haulable_items( const tripoint &pos ) } return target_items; } + +tripoint drawsq_params::center() const +{ + if( view_center == tripoint_min ) { + avatar &player_character = get_avatar(); + return player_character.pos() + player_character.view_offset; + } else { + return view_center; + } +} diff --git a/src/map.h b/src/map.h index e6116f5a4cdb8..2b65f3f6b5d72 100644 --- a/src/map.h +++ b/src/map.h @@ -157,6 +157,122 @@ struct bash_params { bool bashing_from_above = false; }; +/** Draw parameters used by map::drawsq() and similar methods. */ +struct drawsq_params { + private: + tripoint view_center = tripoint_min; + bool do_highlight = false; + bool do_show_items = true; + bool do_low_light = false; + bool do_bright_light = false; + bool do_memorize = false; + bool do_output = true; + + public: + constexpr drawsq_params() = default; + + /** + * Highlight the tile. On TILES, draws an overlay; on CURSES, inverts color. + * Default: false. + */ + //@{ + constexpr drawsq_params &highlight( bool v ) { + do_highlight = v; + return *this; + } + constexpr bool highlight() const { + return do_highlight; + } + //@} + + /** + * Whether to draw items on the tile. + * Default: true. + */ + //@{ + constexpr drawsq_params &show_items( bool v ) { + do_show_items = v; + return *this; + } + constexpr bool show_items() const { + return do_show_items; + } + //@} + + /** + * Whether tile is low light, and should be drawn with muted color. + * Default: false. + */ + //@{ + constexpr drawsq_params &low_light( bool v ) { + do_low_light = v; + return *this; + } + constexpr bool low_light() const { + return do_low_light; + } + //@} + + /** + * Whether tile is in bright light. Affects NV overlay, and nothing else. + * Default: false; + */ + //@{ + constexpr drawsq_params &bright_light( bool v ) { + do_bright_light = v; + return *this; + } + constexpr bool bright_light() const { + return do_bright_light; + } + //@} + + /** + * Whether the tile should be memorized. Used only in map::draw(). + * Default: false. + */ + //@{ + constexpr drawsq_params &memorize( bool v ) { + do_memorize = v; + return *this; + } + constexpr bool memorize() const { + return do_memorize; + } + //@} + + /** + * HACK: Whether the tile should be printed. Used only in map::draw() + * as a hack for memorizing off-screen tiles. + * Default: true. + */ + //@{ + constexpr drawsq_params &output( bool v ) { + do_output = v; + return *this; + } + constexpr bool output() const { + return do_output; + } + //@} + + /** + * Set view center. + * Default: uses avatar's current view center. + */ + //@{ + constexpr drawsq_params ¢er( const tripoint &p ) { + view_center = p; + return *this; + } + constexpr drawsq_params ¢er_at_avatar() { + view_center = tripoint_min; + return *this; + } + tripoint center() const; + //@} +}; + /** * Manage and cache data about a part of the map. * @@ -362,8 +478,6 @@ class map visibility_type get_visibility( lit_level ll, const visibility_variables &cache ) const; - bool apply_vision_effects( const catacurses::window &w, visibility_type vis ) const; - // See field.cpp std::tuple get_wind_blockers( const int &winddirection, const tripoint &pos ); @@ -381,21 +495,14 @@ class map */ void draw( const catacurses::window &w, const tripoint ¢er ); - /** Draw the map tile at the given coordinate. Called by `map::draw()`. - * - * @param w The window we are drawing in - * @param u The player - * @param p The tile on this map to draw. - * @param invert Invert colors if this flag is true - * @param show_items Draw items in tile if this flag is true see `center` in `map::draw()` - */ - void drawsq( const catacurses::window &w, player &u, const tripoint &p, - bool invert, bool show_items, - const tripoint &view_center, - bool low_light = false, bool bright_light = false, - bool inorder = false ) const; - void drawsq( const catacurses::window &w, player &u, const tripoint &p, - bool invert = false, bool show_items = true ) const; + /** + * Draw the map tile at the given coordinate. Called by `map::draw()`. + * + * @param w The window we are drawing in + * @param p The tile on this map to draw. + * @param params Draw parameters. + */ + void drawsq( const catacurses::window &w, const tripoint &p, const drawsq_params ¶ms ) const; /** * Add currently loaded submaps (in @ref grid) to the @ref mapbuffer. @@ -1651,7 +1758,6 @@ class map void draw_anthill( const mapgendata &dat ); void draw_slimepit( const mapgendata &dat ); void draw_spider_pit( const mapgendata &dat ); - void draw_triffid( const mapgendata &dat ); void draw_connections( const mapgendata &dat ); // Builds a transparency cache and returns true if the cache was invalidated. @@ -1781,21 +1887,13 @@ class map * Internal version of the drawsq. Keeps a cached maptile for less re-getting. * Returns false if it has drawn all it should, true if `draw_from_above` should be called after. */ - bool draw_maptile( const catacurses::window &w, const player &u, const tripoint &p, - const maptile &tile, - bool invert, bool show_items, - const tripoint &view_center, - bool low_light, bool bright_light, bool inorder ) const; - bool draw_maptile_from_memory( const catacurses::window &w, const tripoint &p, - const tripoint &view_center, - bool move_cursor = true ) const; + bool draw_maptile( const catacurses::window &w, const tripoint &p, + const maptile &tile, const drawsq_params ¶ms ) const; /** * Draws the tile as seen from above. */ - void draw_from_above( const catacurses::window &w, const player &u, const tripoint &p, - const maptile &tile, bool invert, - const tripoint &view_center, - bool low_light, bool bright_light, bool inorder ) const; + void draw_from_above( const catacurses::window &w, const tripoint &p, + const maptile &tile, const drawsq_params ¶ms ) const; int determine_wall_corner( const tripoint &p ) const; // apply a circular light pattern immediately, however it's best to use... diff --git a/src/map_extras.cpp b/src/map_extras.cpp index ec74562b4fea2..3d31042f2fd6e 100644 --- a/src/map_extras.cpp +++ b/src/map_extras.cpp @@ -78,7 +78,7 @@ static const itype_id itype_223_casing( "223_casing" ); static const itype_id itype_762_51_casing( "762_51_casing" ); static const itype_id itype_9mm_casing( "9mm_casing" ); static const itype_id itype_acoustic_guitar( "acoustic_guitar" ); -static const itype_id itype_anbc_suit( "anbc_suit" ); +static const itype_id itype_hazmat_suit( "hazmat_suit" ); static const itype_id itype_ash( "ash" ); static const itype_id itype_bag_canvas( "bag_canvas" ); static const itype_id itype_bottle_glass( "bottle_glass" ); @@ -2867,7 +2867,7 @@ static bool mx_grave( map &m, const tripoint &abs_sub ) case 2: { m.ter_set( point( SEEX, SEEY ), t_grave_new ); m.spawn_item( point( SEEX, SEEY ), itype_glasses_eye ); - m.spawn_item( point( SEEX, SEEY ), itype_anbc_suit ); + m.spawn_item( point( SEEX, SEEY ), itype_hazmat_suit ); m.spawn_item( point( SEEX, SEEY ), itype_crowbar ); m.furn_set( point( SEEX, SEEY - 1 ), f_sign ); m.set_signage( tripoint( SEEX, SEEY - 1, abs_sub.z ), @@ -3075,24 +3075,30 @@ void apply_function( const string_id &id, map &m, const tripoint &abs // TODO: fix point types overmap_buffer.add_extra( tripoint_abs_omt( sm_to_omt_copy( abs_sub ) ), id ); - auto_notes::auto_note_settings &autoNoteSettings = get_auto_notes_settings(); + auto_notes::auto_note_settings &auto_note_settings = get_auto_notes_settings(); // The player has discovered a map extra of this type. - autoNoteSettings.set_discovered( id ); + auto_note_settings.set_discovered( id ); if( get_option( "AUTO_NOTES" ) && get_option( "AUTO_NOTES_MAP_EXTRAS" ) ) { // Only place note if the user has not disabled it via the auto note manager - if( autoNoteSettings.has_auto_note_enabled( id ) ) { - const std::string mx_note = - string_format( "%s:%s;%s: %s", - extra.get_symbol(), - get_note_string_from_color( extra.color ), - extra.name(), - extra.description() ); - // TODO: fix point types - overmap_buffer.add_note( tripoint_abs_omt( sm_to_omt_copy( abs_sub ) ), mx_note ); - } + if( !auto_note_settings.has_auto_note_enabled( id ) ) { + return; + } + + const cata::optional &symbol = + auto_note_settings.get_custom_symbol( extra.id ); + const std::string note_symbol = symbol ? ( *symbol ).get_symbol_string() : extra.get_symbol(); + const nc_color note_color = symbol ? ( *symbol ).get_color() : extra.color; + const std::string mx_note = + string_format( "%s:%s;%s: %s", + note_symbol, + get_note_string_from_color( note_color ), + extra.name(), + extra.description() ); + // TODO: fix point types + overmap_buffer.add_note( tripoint_abs_omt( sm_to_omt_copy( abs_sub ) ), mx_note ); } } diff --git a/src/map_field.cpp b/src/map_field.cpp index 59d7b0e00f42e..b4534c20dd602 100644 --- a/src/map_field.cpp +++ b/src/map_field.cpp @@ -976,7 +976,7 @@ void field_processor_fd_fire( const tripoint &p, field_entry &cur, field_proc_da if( destroyed ) { // If we decided the item was destroyed by fire, remove it. // But remember its contents, except for irremovable mods, if any - const std::list content_list = fuel->contents.all_items_top(); + const std::list content_list = fuel->all_items_top(); for( item *it : content_list ) { if( !it->is_irremovable() ) { new_content.emplace_back( *it ); diff --git a/src/map_memory.cpp b/src/map_memory.cpp index ce5f1a1c65ad6..afe54a4ae84df 100644 --- a/src/map_memory.cpp +++ b/src/map_memory.cpp @@ -1,30 +1,368 @@ +#include "cata_assert.h" +#include "cached_options.h" +#include "cata_utility.h" +#include "coordinate_conversions.h" +#include "cuboid_rectangle.h" +#include "filesystem.h" +#include "game.h" +#include "line.h" #include "map_memory.h" +#include "path_info.h" -static const memorized_terrain_tile default_tile{ "", 0, 0 }; +const memorized_terrain_tile mm_submap::default_tile{ "", 0, 0 }; +const int mm_submap::default_symbol = 0; -memorized_terrain_tile map_memory::get_tile( const tripoint &pos ) const +#define MM_SIZE (MAPSIZE * 2) + +#define dbg(x) DebugLog((x),D_MMAP) << __FILE__ << ":" << __LINE__ << ": " + +static std::string find_legacy_mm_file() +{ + return PATH_INFO::player_base_save_path() + SAVE_EXTENSION_MAP_MEMORY; +} + +static std::string find_mm_dir() +{ + return string_format( "%s.mm1", PATH_INFO::player_base_save_path() ); +} + +static std::string find_region_path( const std::string &dirname, const tripoint &p ) +{ + return string_format( "%s/%d.%d.%d.mmr", dirname, p.x, p.y, p.z ); +} + +/** + * Helper class for converting global sm coord into + * global mm_region coord + sm coord within the region. + */ +struct reg_coord_pair { + tripoint reg; + point sm_loc; + + reg_coord_pair( const tripoint &p ) : sm_loc( p.xy() ) { + reg = tripoint( sm_to_mmr_remain( sm_loc.x, sm_loc.y ), p.z ); + } +}; + +mm_submap::mm_submap() {} + +mm_region::mm_region() : submaps {{ nullptr }} {} + +bool mm_region::is_empty() const { - return tile_cache.get( pos, default_tile ); + for( size_t y = 0; y < MM_REG_SIZE; y++ ) { + for( size_t x = 0; x < MM_REG_SIZE; x++ ) { + if( !submaps[x][y]->is_empty() ) { + return false; + } + } + } + return true; } -void map_memory::memorize_tile( int limit, const tripoint &pos, const std::string &ter, +map_memory::coord_pair::coord_pair( const tripoint &p ) : loc( p.xy() ) +{ + sm = tripoint( ms_to_sm_remain( loc.x, loc.y ), p.z ); +} + +map_memory::map_memory() +{ + clear_cache(); +} + +const memorized_terrain_tile &map_memory::get_tile( const tripoint &pos ) const +{ + coord_pair p( pos ); + const mm_submap &sm = get_submap( p.sm ); + return sm.tile( p.loc ); +} + +void map_memory::memorize_tile( const tripoint &pos, const std::string &ter, const int subtile, const int rotation ) { - tile_cache.insert( limit, pos, memorized_terrain_tile{ ter, subtile, rotation } ); + coord_pair p( pos ); + mm_submap &sm = get_submap( p.sm ); + sm.set_tile( p.loc, memorized_terrain_tile{ ter, subtile, rotation } ); } int map_memory::get_symbol( const tripoint &pos ) const { - return symbol_cache.get( pos, 0 ); + coord_pair p( pos ); + const mm_submap &sm = get_submap( p.sm ); + return sm.symbol( p.loc ); } -void map_memory::memorize_symbol( int limit, const tripoint &pos, const int symbol ) +void map_memory::memorize_symbol( const tripoint &pos, const int symbol ) { - symbol_cache.insert( limit, pos, symbol ); + coord_pair p( pos ); + mm_submap &sm = get_submap( p.sm ); + sm.set_symbol( p.loc, symbol ); } void map_memory::clear_memorized_tile( const tripoint &pos ) { - tile_cache.remove( pos ); - symbol_cache.remove( pos ); + coord_pair p( pos ); + mm_submap &sm = get_submap( p.sm ); + sm.set_symbol( p.loc, mm_submap::default_symbol ); + sm.set_tile( p.loc, mm_submap::default_tile ); +} + +bool map_memory::prepare_region( const tripoint &p1, const tripoint &p2 ) +{ + cata_assert( p1.z == p2.z ); + cata_assert( p1.x <= p2.x && p1.y <= p2.y ); + + tripoint sm_p1 = coord_pair( p1 ).sm - point( 1, 1 ); + tripoint sm_p2 = coord_pair( p2 ).sm + point( 1, 1 ); + + tripoint sm_pos = sm_p1; + point sm_size = sm_p2.xy() - sm_p1.xy(); + + if( sm_pos.z == cache_pos.z ) { + inclusive_rectangle rect( cache_pos.xy(), cache_pos.xy() + cache_size ); + if( rect.contains( sm_p1.xy() ) && rect.contains( sm_p2.xy() ) ) { + return false; + } + } + + dbg( D_INFO ) << "Preparing memory map for area: pos: " << sm_pos << " size: " << sm_size; + + cache_pos = sm_pos; + cache_size = sm_size; + cached.clear(); + cached.reserve( static_cast( cache_size.x ) * cache_size.y ); + for( int dy = 0; dy < cache_size.y; dy++ ) { + for( int dx = 0; dx < cache_size.x; dx++ ) { + cached.push_back( fetch_submap( cache_pos + point( dx, dy ) ) ); + } + } + return true; +} + +shared_ptr_fast map_memory::fetch_submap( const tripoint &sm_pos ) +{ + shared_ptr_fast sm = find_submap( sm_pos ); + if( sm ) { + return sm; + } + sm = load_submap( sm_pos ); + if( sm ) { + return sm; + } + return allocate_submap( sm_pos ); +} + +shared_ptr_fast map_memory::allocate_submap( const tripoint &sm_pos ) +{ + // Since all save/load operations are done on regions of submaps, + // we need to allocate the whole region at once. + shared_ptr_fast ret; + tripoint reg = reg_coord_pair( sm_pos ).reg; + + dbg( D_INFO ) << "Allocated mm_region " << reg << " [" << mmr_to_sm_copy( reg ) << "]"; + + for( size_t y = 0; y < MM_REG_SIZE; y++ ) { + for( size_t x = 0; x < MM_REG_SIZE; x++ ) { + tripoint pos = mmr_to_sm_copy( reg ) + tripoint( x, y, 0 ); + shared_ptr_fast sm = make_shared_fast(); + if( pos == sm_pos ) { + ret = sm; + } + submaps.insert( std::make_pair( pos, sm ) ); + } + } + + return ret; +} + +shared_ptr_fast map_memory::find_submap( const tripoint &sm_pos ) +{ + auto sm = submaps.find( sm_pos ); + if( sm == submaps.end() ) { + return nullptr; + } else { + return sm->second; + } +} + +shared_ptr_fast map_memory::load_submap( const tripoint &sm_pos ) +{ + if( test_mode ) { + return nullptr; + } + + const std::string dirname = find_mm_dir(); + reg_coord_pair p( sm_pos ); + const std::string path = find_region_path( dirname, p.reg ); + + if( !dir_exist( dirname ) ) { + // Old saves don't have [plname].mm1 folder + return nullptr; + } + + mm_region mmr; + const auto loader = [&]( JsonIn & jsin ) { + mmr.deserialize( jsin ); + }; + + try { + if( !read_from_file_optional_json( path, loader ) ) { + // Region not found + return nullptr; + } + } catch( const std::exception &err ) { + debugmsg( "Failed to load memory map region (%d,%d,%d): %s", + p.reg.x, p.reg.y, p.reg.z, err.what() ); + return nullptr; + } + + dbg( D_INFO ) << "Loaded mm_region " << p.reg << " [" << mmr_to_sm_copy( p.reg ) << "]"; + + shared_ptr_fast ret; + + for( size_t y = 0; y < MM_REG_SIZE; y++ ) { + for( size_t x = 0; x < MM_REG_SIZE; x++ ) { + tripoint pos = mmr_to_sm_copy( p.reg ) + tripoint( x, y, 0 ); + shared_ptr_fast &sm = mmr.submaps[x][y]; + if( pos == sm_pos ) { + ret = sm; + } + submaps.insert( std::make_pair( pos, sm ) ); + } + } + + return ret; +} + +static mm_submap null_mz_submap; + +const mm_submap &map_memory::get_submap( const tripoint &sm_pos ) const +{ + point idx = ( sm_pos - cache_pos ).xy(); + if( idx.x > 0 && idx.y > 0 && idx.x < cache_size.x && idx.y < cache_size.y ) { + return *cached[idx.y * cache_size.x + idx.x]; + } else { + return null_mz_submap; + } +} + +mm_submap &map_memory::get_submap( const tripoint &sm_pos ) +{ + point idx = ( sm_pos - cache_pos ).xy(); + if( idx.x > 0 && idx.y > 0 && idx.x < cache_size.x && idx.y < cache_size.y ) { + return *cached[idx.y * cache_size.x + idx.x]; + } else { + return null_mz_submap; + } +} + +void map_memory::load( const tripoint &pos ) +{ + const std::string dirname = find_mm_dir(); + + clear_cache(); + + if( !dir_exist( dirname ) ) { + // Old saves have [plname].mm file and no [plname].mm1 folder + const std::string legacy_file = find_legacy_mm_file(); + if( file_exist( legacy_file ) ) { + try { + read_from_file_optional_json( legacy_file, [&]( JsonIn & jsin ) { + this->load_legacy( jsin ); + } ); + } catch( const std::exception &err ) { + debugmsg( "Failed to load legacy memory map file: %s", err.what() ); + } + } + return; + } + + coord_pair p( pos ); + tripoint start = p.sm - tripoint( MM_SIZE / 2, MM_SIZE / 2, 0 ); + dbg( D_INFO ) << "[LOAD] Loading memory map around " << p.sm << ". Loading submaps within " << start + << "->" << start + tripoint( MM_SIZE, MM_SIZE, 0 ); + for( int dy = 0; dy < MM_SIZE; dy++ ) { + for( int dx = 0; dx < MM_SIZE; dx++ ) { + fetch_submap( start + tripoint( dx, dy, 0 ) ); + } + } + dbg( D_INFO ) << "[LOAD] Done."; +} + +bool map_memory::save( const tripoint &pos ) +{ + tripoint sm_center = coord_pair( pos ).sm; + const std::string dirname = find_mm_dir(); + assure_dir_exist( dirname ); + + clear_cache(); + + dbg( D_INFO ) << "N submaps before save: " << submaps.size(); + + // Since mm_submaps are always allocated in regions, + // we are certain that each region will be filled. + std::map regions; + for( auto &it : submaps ) { + const reg_coord_pair p( it.first ); + regions[p.reg].submaps[p.sm_loc.x][p.sm_loc.y] = it.second; + } + submaps.clear(); + + constexpr point MM_HSIZE_P = point( MM_SIZE / 2, MM_SIZE / 2 ); + rectangle rect_keep( sm_center.xy() - MM_HSIZE_P, sm_center.xy() + MM_HSIZE_P ); + + dbg( D_INFO ) << "[SAVE] Saving memory map around " << sm_center << ". Keeping submaps within " << + rect_keep.p_min << "->" << rect_keep.p_max; + + bool result = true; + + for( auto &it : regions ) { + const tripoint ®p = it.first; + mm_region ® = it.second; + if( !reg.is_empty() ) { + const std::string path = find_region_path( dirname, regp ); + const std::string descr = string_format( + _( "memory map region for (%d,%d,%d)" ), + regp.x, regp.y, regp.z + ); + + const auto writer = [&]( std::ostream & fout ) -> void { + fout << serialize_wrapper( [&]( JsonOut & jsout ) + { + reg.serialize( jsout ); + } ); + }; + + const bool res = write_to_file( path, writer, descr.c_str() ); + result = result & res; + } + tripoint regp_sm = mmr_to_sm_copy( regp ); + half_open_rectangle rect_reg( regp_sm.xy(), regp_sm.xy() + point( MM_REG_SIZE, + MM_REG_SIZE ) ); + if( rect_reg.overlaps( rect_keep ) ) { + dbg( D_INFO ) << "Keeping mm_region " << regp << " [" << regp_sm << "]"; + // Put submaps back + for( size_t y = 0; y < MM_REG_SIZE; y++ ) { + for( size_t x = 0; x < MM_REG_SIZE; x++ ) { + tripoint p = regp_sm + tripoint( x, y, 0 ); + shared_ptr_fast &sm = reg.submaps[x][y]; + submaps.insert( std::make_pair( p, sm ) ); + } + } + } else { + dbg( D_INFO ) << "Dropping mm_region " << regp << " [" << regp_sm << "]"; + } + } + + dbg( D_INFO ) << "[SAVE] Done."; + dbg( D_INFO ) << "N submaps after save: " << submaps.size(); + + return result; +} + +void map_memory::clear_cache() +{ + cached.clear(); + cache_pos = tripoint_min; + cache_size = point_zero; } diff --git a/src/map_memory.h b/src/map_memory.h index d5912169a1e19..406d653f45aed 100644 --- a/src/map_memory.h +++ b/src/map_memory.h @@ -4,9 +4,11 @@ #include -#include "lru_cache.h" +#include "game_constants.h" +#include "memory_fast.h" #include "point.h" // IWYU pragma: keep +class JsonOut; class JsonIn; class JsonObject; class JsonOut; @@ -15,28 +17,182 @@ struct memorized_terrain_tile { std::string tile; int subtile; int rotation; + + inline bool operator==( const memorized_terrain_tile &rhs ) const { + return ( rotation == rhs.rotation ) && ( subtile == rhs.subtile ) && ( tile == rhs.tile ); + } + + inline bool operator!=( const memorized_terrain_tile &rhs ) const { + return !( *this == rhs ); + } }; +/** Represent a submap-sized chunk of tile memory. */ +struct mm_submap { + public: + static const memorized_terrain_tile default_tile; + static const int default_symbol; + + mm_submap(); + + /** Whether this mm_submap is empty. Empty submaps are skipped during saving. */ + bool is_empty() const { + return tiles.empty() && symbols.empty(); + } + + inline const memorized_terrain_tile &tile( const point &p ) const { + if( tiles.empty() ) { + return default_tile; + } else { + return tiles[p.y * SEEX + p.x]; + } + } + + inline void set_tile( const point &p, const memorized_terrain_tile &value ) { + if( tiles.empty() ) { + // call 'reserve' first to force allocation of exact size + tiles.reserve( SEEX * SEEY ); + tiles.resize( SEEX * SEEY, default_tile ); + } + tiles[p.y * SEEX + p.x] = value; + } + + inline int symbol( const point &p ) const { + if( symbols.empty() ) { + return default_symbol; + } else { + return symbols[p.y * SEEX + p.x]; + } + } + + inline void set_symbol( const point &p, int value ) { + if( symbols.empty() ) { + // call 'reserve' first to force allocation of exact size + symbols.reserve( SEEX * SEEY ); + symbols.resize( SEEX * SEEY, default_symbol ); + } + symbols[p.y * SEEX + p.x] = value; + } + + void serialize( JsonOut &jsout ) const; + void deserialize( JsonIn &jsin ); + + private: + std::vector tiles; // holds either 0 or SEEX*SEEY elements + std::vector symbols; // holds either 0 or SEEX*SEEY elements +}; + +/** + * Represents a square of mm_submaps. + * For faster save/load, submaps are collected into regions + * and each region is saved in its own file. + */ +struct mm_region { + shared_ptr_fast submaps[MM_REG_SIZE][MM_REG_SIZE]; + + mm_region(); + + bool is_empty() const; + + void serialize( JsonOut &jsout ) const; + void deserialize( JsonIn &jsin ); +}; + +/** + * Manages map tiles memorized by the avatar. + * Note that there are 2 separate memories in here: + * 1. memorized graphic tiles (for TILES with a tileset) + * 2. memorized symbols (for CURSES or TILES in ascii mode) + * TODO: combine tiles and curses. Also, split map memory into layers (terrain/furn/vpart/...)? + */ class map_memory { + private: + /** + * Helper class for converting global ms coord into + * global sm coord + ms coord within the submap. + */ + struct coord_pair { + tripoint sm; + point loc; + + coord_pair( const tripoint &p ); + }; + public: - void store( JsonOut &jsout ) const; - void load( JsonIn &jsin ); - void load( const JsonObject &jsin ); + map_memory(); + + /** Load memorized submaps around given global map square pos. */ + void load( const tripoint &pos ); + + /** Load legacy memory file. TODO: remove after 0.F (or whatever BN will have instead). */ + void load_legacy( JsonIn &jsin ); - /** Memorizes a given tile; finalize_tile_memory needs to be called after it */ - void memorize_tile( int limit, const tripoint &pos, const std::string &ter, + /** Save memorized submaps to disk, drop ones far from given global map square pos. */ + bool save( const tripoint &pos ); + + /** + * Prepares map memory for rendering and/or memorization of given region. + * @param p1 top-left corner of the region, in global ms coords + * @param p2 bottom-right corner of the region, in global ms coords + * Both coords are inclusive and should be on the same Z level. + * @return whether the region was re-cached + */ + bool prepare_region( const tripoint &p1, const tripoint &p2 ); + + /** + * Memorizes given tile, overwriting old value. + * @param pos tile position, in global ms coords. + */ + void memorize_tile( const tripoint &pos, const std::string &ter, int subtile, int rotation ); - /** Returns last stored map tile in given location */ - memorized_terrain_tile get_tile( const tripoint &pos ) const; + /** + * Returns memorized tile. + * @param pos tile position, in global ms coords. + */ + const memorized_terrain_tile &get_tile( const tripoint &pos ) const; - void memorize_symbol( int limit, const tripoint &pos, int symbol ); + /** + * Memorizes given symbol, overwriting old value. + * @param pos tile position, in global ms coords. + */ + void memorize_symbol( const tripoint &pos, int symbol ); + + /** + * Returns memorized symbol. + * @param pos tile position, in global ms coords. + */ int get_symbol( const tripoint &pos ) const; + /** + * Clears memorized tile and symbol. + * @param pos tile position, in global ms coords. + */ void clear_memorized_tile( const tripoint &pos ); + private: - lru_cache tile_cache; - lru_cache symbol_cache; + std::map> submaps; + + std::vector> cached; + tripoint cache_pos; + point cache_size; + + /** Find, load or allocate a submap. @returns the submap. */ + shared_ptr_fast fetch_submap( const tripoint &sm_pos ); + /** Find submap amongst the loaded submaps. @returns nullptr if failed. */ + shared_ptr_fast find_submap( const tripoint &sm_pos ); + /** Load submap from disk. @returns nullptr if failed. */ + shared_ptr_fast load_submap( const tripoint &sm_pos ); + /** Allocate empty submap. @returns the submap. */ + shared_ptr_fast allocate_submap( const tripoint &sm_pos ); + + /** Get submap from within the cache */ + //@{ + const mm_submap &get_submap( const tripoint &sm_pos ) const; + mm_submap &get_submap( const tripoint &sm_pos ); + //@} + + void clear_cache(); }; #endif // CATA_SRC_MAP_MEMORY_H diff --git a/src/mapdata.cpp b/src/mapdata.cpp index 6bbbffebf27a3..1e6b493c46c4b 100644 --- a/src/mapdata.cpp +++ b/src/mapdata.cpp @@ -411,7 +411,7 @@ bool map_data_common_t::has_examine( iexamine_function_ref func ) const bool map_data_common_t::has_examine( const std::string &action ) const { - return examine_actor->type == action; + return examine_actor && examine_actor->type == action; } void map_data_common_t::set_examine( iexamine_function_ref func ) @@ -1253,6 +1253,9 @@ void ter_t::load( const JsonObject &jo, const std::string &src ) optional( jo, was_loaded, "transforms_into", transforms_into, ter_str_id::NULL_ID() ); optional( jo, was_loaded, "roof", roof, ter_str_id::NULL_ID() ); + optional( jo, was_loaded, "lockpick_result", lockpick_result, ter_str_id::NULL_ID() ); + optional( jo, was_loaded, "lockpick_message", lockpick_message, translation() ); + optional( jo, was_loaded, "emissions", emissions ); bash.load( jo, "bash", map_bash_info::terrain, "terrain " + id.str() ); @@ -1393,6 +1396,10 @@ void furn_t::load( const JsonObject &jo, const std::string &src ) optional( jo, was_loaded, "open", open, string_id_reader {}, furn_str_id::NULL_ID() ); optional( jo, was_loaded, "close", close, string_id_reader {}, furn_str_id::NULL_ID() ); + optional( jo, was_loaded, "lockpick_result", lockpick_result, string_id_reader {}, + furn_str_id::NULL_ID() ); + optional( jo, was_loaded, "lockpick_message", lockpick_message, translation() ); + bash.load( jo, "bash", map_bash_info::furniture, "furniture " + id.str() ); deconstruct.load( jo, "deconstruct", true, "furniture " + id.str() ); diff --git a/src/mapdata.h b/src/mapdata.h index ade8b739e37a1..bf727d4d5c438 100644 --- a/src/mapdata.h +++ b/src/mapdata.h @@ -367,10 +367,16 @@ struct map_data_common_t { * Short for terrain type. This struct defines all of the metadata for a given terrain id (an enum below). */ struct ter_t : map_data_common_t { + + std::vector> src; + ter_str_id id; // The terrain's ID. Must be set, must be unique. ter_str_id open; // Open action: transform into terrain with matching id ter_str_id close; // Close action: transform into terrain with matching id + ter_str_id lockpick_result; // Lockpick action: transform when successfully lockpicked + translation lockpick_message; // Lockpick action: message when successfully lockpicked + std::string trap_id_str; // String storing the id string of the trap. ter_str_id transforms_into; // Transform into what terrain? ter_str_id roof; // What will be the floor above this terrain @@ -397,9 +403,14 @@ void reset_furn_ter(); */ struct furn_t : map_data_common_t { + + std::vector> src; + furn_str_id id; furn_str_id open; // Open action: transform into furniture with matching id furn_str_id close; // Close action: transform into furniture with matching id + furn_str_id lockpick_result; // Lockpick action: transform when successfully lockpicked + translation lockpick_message; // Lockpick action: message when successfully lockpicked itype_id crafting_pseudo_item; units::volume keg_capacity = 0_ml; int comfort = 0; diff --git a/src/mapgen.cpp b/src/mapgen.cpp index e7405294ad912..b0faf9718836b 100644 --- a/src/mapgen.cpp +++ b/src/mapgen.cpp @@ -67,6 +67,7 @@ #include "submap.h" #include "text_snippets.h" #include "tileray.h" +#include "to_string_id.h" #include "translations.h" #include "trap.h" #include "units.h" @@ -90,10 +91,6 @@ static const mongroup_id GROUP_NETHER( "GROUP_NETHER" ); static const mongroup_id GROUP_ROBOT_SECUBOT( "GROUP_ROBOT_SECUBOT" ); static const mongroup_id GROUP_SEWER( "GROUP_SEWER" ); static const mongroup_id GROUP_SLIME( "GROUP_SLIME" ); -static const mongroup_id GROUP_SPIDER( "GROUP_SPIDER" ); -static const mongroup_id GROUP_TRIFFID( "GROUP_TRIFFID" ); -static const mongroup_id GROUP_TRIFFID_HEART( "GROUP_TRIFFID_HEART" ); -static const mongroup_id GROUP_TRIFFID_OUTER( "GROUP_TRIFFID_OUTER" ); static const mongroup_id GROUP_TURRET( "GROUP_TURRET" ); static const trait_id trait_NPC_STATIC_NPC( "NPC_STATIC_NPC" ); @@ -783,6 +780,16 @@ void mapgen_function_json_base::setup_setmap( const JsonArray &parray ) } +std::unordered_map +mapgen_function_json_base::get_param_values( const mapgendata &md ) const +{ + std::unordered_map result; + for( const std::pair ¶m : parameters ) { + result.emplace( param.first, param.second.get( md ) ); + } + return result; +} + jmapgen_place::jmapgen_place( const JsonObject &jsi ) : x( jsi, "x" ) , y( jsi, "y" ) @@ -812,6 +819,168 @@ map_key::map_key( const JsonMember &member ) : str( member.name() ) } } +template +static bool is_null_helper( const string_id &id ) +{ + return id.is_null(); +} + +template +static bool is_null_helper( const int_id &id ) +{ + return id.id().is_null(); +} + +static bool is_null_helper( const std::string & ) +{ + return false; +} + +template +static bool is_valid_helper( const string_id &id ) +{ + return id.is_valid(); +} + +static bool is_valid_helper( const std::string & ) +{ + return true; +} + +// Mapgen often uses various id values. Usually these are specified verbatim +// as strings, but they can also be parameterized. This class encapsulates +// such a value. It records how the value was specified so that it can be +// calculated later based on the parameters chosen for a particular instance of +// the mapgen. +template +class mapgen_value +{ + public: + using StringId = to_string_id_t; + + struct value_source { + virtual ~value_source() = default; + virtual Id get( const mapgendata & ) const = 0; + virtual void check( const std::string &/*oter_name*/, + const std::unordered_map & + ) const {}; + }; + + struct id_source : value_source { + Id id; + + explicit id_source( const std::string &s ) : + id( s ) { + } + + Id get( const mapgendata & ) const override { + return id; + } + }; + + struct param_source : value_source { + std::string param_name; + + explicit param_source( const JsonObject &jo ) : + param_name( jo.get_string( "param" ) ) { + } + + Id get( const mapgendata &dat ) const override { + return Id( dat.get_param( param_name ) ); + } + + void check( const std::string &oter_name, + const std::unordered_map ¶meters + ) const override { + auto param = parameters.find( param_name ); + if( param == parameters.end() ) { + debugmsg( "mapgen '%s' uses undefined parameter '%s'", oter_name, param_name ); + } else { + constexpr cata_variant_type req_type = cata_variant_type_for(); + cata_variant_type param_type = param->second.type(); + if( param_type != req_type ) { + debugmsg( "mapgen '%s' uses parameter '%s' of type '%s' in a context " + "expecting type '%s'", oter_name, param_name, + io::enum_to_string( param_type ), + io::enum_to_string( req_type ) ); + } + } + } + }; + + struct distribution_source : value_source { + weighted_int_list list; + + explicit distribution_source( const JsonObject &jo ) { + load_weighted_list( jo.get_member( "distribution" ), list, 1 ); + } + + Id get( const mapgendata & ) const override { + return *list.pick(); + } + + void check( const std::string &oter_name, + const std::unordered_map & ) const override { + for( const weighted_object &wo : list ) { + if( !is_valid_helper( wo.obj ) ) { + debugmsg( "mapgen '%s' uses invalid entry '%s' in weighted list", + oter_name, cata_variant( wo.obj ).get_string() ); + } + } + } + }; + + explicit mapgen_value( const JsonValue &jv ) { + if( jv.test_string() ) { + std::string id = jv.get_string(); + source_ = make_shared_fast( id ); + is_null_ = is_null_helper( id ); + } else { + JsonObject jo = jv.get_object(); + if( jo.has_member( "param" ) ) { + source_ = make_shared_fast( jo ); + } else if( jo.has_member( "distribution" ) ) { + source_ = make_shared_fast( jo ); + } else { + jo.throw_error( R"(Expected member "param" or "distribution" in object)" ); + } + } + } + + bool is_null() const { + return is_null_; + } + + void check( const std::string &oter_name, + const std::unordered_map ¶ms ) const { + source_->check( oter_name, params ); + } + + Id get( const mapgendata &dat ) const { + return source_->get( dat ); + } + private: + bool is_null_ = false; + shared_ptr_fast source_; +}; + +void mapgen_parameter::deserialize( JsonIn &jsin ) +{ + JsonObject jo = jsin.get_object(); + jo.read( "type", type_, true ); + default_ = std::make_unique>( jo.get_member( "default" ) ); +} + +cata_variant_type mapgen_parameter::type() const +{ + return type_; +} + +cata_variant mapgen_parameter::get( const mapgendata &md ) const +{ + return cata_variant::from_string( type_, default_->get( md ) ); +} + /** * This is a generic mapgen piece, the template parameter PieceType should be another specific * type of jmapgen_piece. This class contains a vector of those objects and will chose one of @@ -1485,16 +1654,19 @@ class jmapgen_trap : public jmapgen_piece trap_id id; jmapgen_trap( const JsonObject &jsi, const std::string &/*context*/ ) : id( 0 ) { - const trap_str_id sid( jsi.get_string( "trap" ) ); - if( !sid.is_valid() ) { - set_mapgen_defer( jsi, "trap", "no such trap" ); - } - id = sid.id(); + init( jsi ); } - explicit jmapgen_trap( const std::string &tid ) : + explicit jmapgen_trap( const JsonValue &tid ) : id( 0 ) { - const trap_str_id sid( tid ); + if( tid.test_object() ) { + JsonObject jo = tid.get_object(); + if( jo.has_member( "trap" ) ) { + init( jo ); + return; + } + } + const trap_str_id sid( tid.get_string() ); if( !sid.is_valid() ) { throw std::runtime_error( "unknown trap type" ); } @@ -1508,6 +1680,14 @@ class jmapgen_trap : public jmapgen_piece bool has_vehicle_collision( const mapgendata &dat, const point &p ) const override { return dat.m.veh_at( tripoint( p, dat.zlevel() ) ).has_value(); } + private: + void init( const JsonObject &jsi ) { + const trap_str_id sid( jsi.get_string( "trap" ) ); + if( !sid.is_valid() ) { + set_mapgen_defer( jsi, "trap", "no such trap" ); + } + id = sid.id(); + } }; /** * Place a furniture. @@ -1518,8 +1698,8 @@ class jmapgen_furniture : public jmapgen_piece public: furn_id id; jmapgen_furniture( const JsonObject &jsi, const std::string &/*context*/ ) : - jmapgen_furniture( jsi.get_string( "furn" ) ) {} - explicit jmapgen_furniture( const std::string &fid ) : id( furn_id( fid ) ) {} + jmapgen_furniture( jsi.get_member( "furn" ) ) {} + explicit jmapgen_furniture( const JsonValue &fid ) : id( furn_id( fid.get_string() ) ) {} void apply( const mapgendata &dat, const jmapgen_int &x, const jmapgen_int &y ) const override { dat.m.furn_set( point( x.get(), y.get() ), id ); @@ -1535,18 +1715,22 @@ class jmapgen_furniture : public jmapgen_piece class jmapgen_terrain : public jmapgen_piece { public: - ter_id id; + mapgen_value id; jmapgen_terrain( const JsonObject &jsi, const std::string &/*context*/ ) : - jmapgen_terrain( jsi.get_string( "ter" ) ) {} - explicit jmapgen_terrain( const std::string &tid ) : id( ter_id( tid ) ) {} + jmapgen_terrain( jsi.get_member( "ter" ) ) {} + explicit jmapgen_terrain( const JsonValue &tid ) : id( mapgen_value( tid ) ) {} bool is_nop() const override { - return id.id().is_null(); + return id.is_null(); } void apply( const mapgendata &dat, const jmapgen_int &x, const jmapgen_int &y ) const override { - dat.m.ter_set( point( x.get(), y.get() ), id ); + ter_id chosen_id = id.get( dat ); + if( chosen_id.id().is_null() ) { + return; + } + dat.m.ter_set( point( x.get(), y.get() ), chosen_id ); // Delete furniture if a wall was just placed over it. TODO: need to do anything for fluid, monsters? if( dat.m.has_flag_ter( "WALL", point( x.get(), y.get() ) ) ) { dat.m.furn_set( point( x.get(), y.get() ), f_null ); @@ -1559,6 +1743,12 @@ class jmapgen_terrain : public jmapgen_piece bool has_vehicle_collision( const mapgendata &dat, const point &p ) const override { return dat.m.veh_at( tripoint( p, dat.zlevel() ) ).has_value(); } + + void check( const std::string &oter_name, + const std::unordered_map ¶meters + ) const override { + id.check( oter_name, parameters ); + } }; /** * Run a transformation. @@ -1687,7 +1877,8 @@ class jmapgen_sealed_item : public jmapgen_piece } } - void check( const std::string &context ) const override { + void check( const std::string &context, + const std::unordered_map & ) const override { const furn_t &furn = furniture.obj(); std::string summary = string_format( @@ -1838,19 +2029,6 @@ class jmapgen_zone : public jmapgen_piece } }; -static void load_weighted_entries( const JsonObject &jsi, const std::string &json_key, - weighted_int_list &list ) -{ - for( const JsonValue entry : jsi.get_array( json_key ) ) { - if( entry.test_array() ) { - JsonArray inner = entry.get_array(); - list.add( inner.get_string( 0 ), inner.get_int( 1 ) ); - } else { - list.add( entry.get_string(), 100 ); - } - } -} - /** * Calls another mapgen call inside the current one. * Note: can't use regular overmap ids. @@ -1918,8 +2096,12 @@ class jmapgen_nested : public jmapgen_piece neighborhood_check neighbors; jmapgen_nested( const JsonObject &jsi, const std::string &/*context*/ ) : neighbors( jsi.get_object( "neighbors" ) ) { - load_weighted_entries( jsi, "chunks", entries ); - load_weighted_entries( jsi, "else_chunks", else_entries ); + if( jsi.has_member( "chunks" ) ) { + load_weighted_list( jsi.get_member( "chunks" ), entries, 100 ); + } + if( jsi.has_member( "else_chunks" ) ) { + load_weighted_list( jsi.get_member( "else_chunks" ), else_entries, 100 ); + } } void apply( const mapgendata &dat, const jmapgen_int &x, const jmapgen_int &y ) const override { @@ -2078,20 +2260,18 @@ void load_place_mapings_string( const JsonValue &value, mapgen_palette::placing_map::mapped_type &vect, const std::string &context ) { - if( value.test_string() ) { + if( value.test_string() || value.test_object() ) { try { - vect.push_back( make_shared_fast( value.get_string() ) ); + vect.push_back( make_shared_fast( value ) ); } catch( const std::runtime_error &err ) { // Using the json object here adds nice formatting and context information value.throw_error( err.what() ); } - } else if( value.test_object() ) { - load_place_mapings( value.get_object(), vect, context ); } else { for( const JsonValue entry : value.get_array() ) { if( entry.test_string() ) { try { - vect.push_back( make_shared_fast( entry.get_string() ) ); + vect.push_back( make_shared_fast( entry ) ); } catch( const std::runtime_error &err ) { // Using the json object here adds nice formatting and context information entry.throw_error( err.what() ); @@ -2119,7 +2299,7 @@ void load_place_mapings_alternatively( for( const JsonValue entry : value.get_array() ) { if( entry.test_string() ) { try { - alter->alternatives.emplace_back( entry.get_string() ); + alter->alternatives.emplace_back( entry ); } catch( const std::runtime_error &err ) { // Using the json object here adds nice formatting and context information entry.throw_error( err.what() ); @@ -2135,15 +2315,12 @@ void load_place_mapings_alternatively( } // Test if this is a string or object, and then just emplace it. - if( piece_and_count_jarr.test_string() ) { + if( piece_and_count_jarr.test_string() || piece_and_count_jarr.test_object() ) { try { - alter->alternatives.emplace_back( piece_and_count_jarr.next_string() ); + alter->alternatives.emplace_back( piece_and_count_jarr.next() ); } catch( const std::runtime_error &err ) { piece_and_count_jarr.throw_error( err.what() ); } - } else if( piece_and_count_jarr.test_object() ) { - JsonObject jsi = piece_and_count_jarr.next_object(); - alter->alternatives.emplace_back( jsi, context ); } else { piece_and_count_jarr.throw_error( "First entry must be a string or object." ); } @@ -2223,7 +2400,9 @@ void mapgen_palette::check() for( const std::pair>> &p : format_placings ) { for( const shared_ptr_fast &j : p.second ) { - j->check( context ); + // TODO: palettes should have their own parameters, but don't as + // yet + j->check( context, {} ); } } } @@ -2275,7 +2454,9 @@ void mapgen_palette::add( const palette_id &rh ) void mapgen_palette::add( const mapgen_palette &rh ) { for( const auto &placing : rh.format_placings ) { - format_placings[ placing.first ] = placing.second; + std::vector> &these_placings = + format_placings[placing.first]; + these_placings.insert( these_placings.end(), placing.second.begin(), placing.second.end() ); } for( const auto &placing : rh.keys_with_terrain ) { keys_with_terrain.insert( placing ); @@ -2450,6 +2631,8 @@ bool mapgen_function_json_base::setup_common( const JsonObject &jo ) JsonArray sparray; JsonObject pjo; + jo.read( "parameters", parameters ); + // just like mapf::basic_bind("stuff",blargle("foo", etc) ), only json input and faster when applying if( jo.has_array( "rows" ) ) { mapgen_palette palette = mapgen_palette::load_temp( jo, "dda" ); @@ -2602,13 +2785,14 @@ void mapgen_function_json_base::check_common() const } } - objects.check( context_ ); + objects.check( context_, parameters ); } -void jmapgen_objects::check( const std::string &context ) const +void jmapgen_objects::check( const std::string &context, + const std::unordered_map ¶meters ) const { for( const jmapgen_obj &obj : objects ) { - obj.second->check( context ); + obj.second->check( context, parameters ); } } @@ -2769,8 +2953,8 @@ bool jmapgen_setmap::has_vehicle_collision( const mapgendata &dat, const point & return false; } -bool mapgen_function_json_base::has_vehicle_collision( const mapgendata &dat, - const point &offset ) const +bool mapgen_function_json_base::has_vehicle_collision( + const mapgendata &dat, const point &offset ) const { for( const jmapgen_setmap &elem : setmap_points ) { if( elem.has_vehicle_collision( dat, offset ) ) { @@ -2808,13 +2992,16 @@ void mapgen_function_json::generate( mapgendata &md ) m->rotate( ( -static_cast( md.terrain_type()->get_dir() ) + 4 ) % 4 ); } } + + mapgendata md_with_params( md, get_param_values( md ) ); + for( auto &elem : setmap_points ) { - elem.apply( md, point_zero ); + elem.apply( md_with_params, point_zero ); } - objects.apply( md, point_zero ); + objects.apply( md_with_params, point_zero ); - resolve_regional_terrain_and_furniture( md ); + resolve_regional_terrain_and_furniture( md_with_params ); m->rotate( rotation.get() ); @@ -2823,18 +3010,20 @@ void mapgen_function_json::generate( mapgendata &md ) } } -void mapgen_function_json_nested::nest( const mapgendata &dat, const point &offset ) const +void mapgen_function_json_nested::nest( const mapgendata &md, const point &offset ) const { // TODO: Make rotation work for submaps, then pass this value into elem & objects apply. //int chosen_rotation = rotation.get() % 4; + mapgendata md_with_params( md, get_param_values( md ) ); + for( const jmapgen_setmap &elem : setmap_points ) { - elem.apply( dat, offset ); + elem.apply( md, offset ); } - objects.apply( dat, offset ); + objects.apply( md, offset ); - resolve_regional_terrain_and_furniture( dat ); + resolve_regional_terrain_and_furniture( md ); } /* @@ -2902,8 +3091,6 @@ void map::draw_map( mapgendata &dat ) if( is_ot_match( "slimepit", terrain_type, ot_match_type::prefix ) || is_ot_match( "slime_pit", terrain_type, ot_match_type::prefix ) ) { draw_slimepit( dat ); - } else if( is_ot_match( "triffid", terrain_type, ot_match_type::prefix ) ) { - draw_triffid( dat ); } else if( is_ot_match( "spider", terrain_type, ot_match_type::prefix ) ) { draw_spider_pit( dat ); } else if( is_ot_match( "temple", terrain_type, ot_match_type::prefix ) ) { @@ -4626,6 +4813,9 @@ void map::draw_slimepit( const mapgendata &dat ) case 4: ter_set( point( SEEX * 2 - rng( 1, 3 ), SEEY * 2 - rng( 1, 3 ) ), t_slope_up ); } + } else if( dat.above() == "slimepit_bottom" ) { + // Align the stairs + ter_set( point( 7, 9 ), t_slope_up ); } place_spawns( GROUP_SLIME, 1, point( SEEX, SEEY ), point( SEEX, SEEY ), 0.15 ); place_items( item_group_id( "sewer" ), 40, point_zero, point( EAST_EDGE, SOUTH_EDGE ), true, @@ -4633,153 +4823,6 @@ void map::draw_slimepit( const mapgendata &dat ) } } -void map::draw_triffid( const mapgendata &dat ) -{ - const oter_id &terrain_type = dat.terrain_type(); - if( terrain_type == "triffid_roots" ) { - fill_background( this, t_root_wall ); - int node = 0; - int step = 0; - bool node_built[16]; - bool done = false; - for( auto &elem : node_built ) { - elem = false; - } - do { - node_built[node] = true; - step++; - point node2( 1 + 6 * ( node % 4 ), 1 + 6 * static_cast( node / 4 ) ); - // Clear a 4x4 dirt square - square( this, t_dirt, node2, node2 + point( 3, 3 ) ); - // Spawn a monster in there - if( step > 2 ) { // First couple of chambers are safe - int monrng = rng( 1, 25 ); - point spawn( node2 + point( rng( 0, 3 ), rng( 0, 3 ) ) ); - if( monrng <= 24 ) { - place_spawns( GROUP_TRIFFID_OUTER, 1, node2, - node2 + point( 3, 3 ), 1, true ); - } else { - for( int webx = node2.x; webx <= node2.x + 3; webx++ ) { - for( int weby = node2.y; weby <= node2.y + 3; weby++ ) { - add_field( {webx, weby, abs_sub.z}, fd_web, rng( 1, 3 ) ); - } - } - place_spawns( GROUP_SPIDER, 1, spawn, spawn, 1, true ); - } - } - // TODO: Non-monster hazards? - // Next, pick a cell to move to - std::vector move; - if( node % 4 > 0 && !node_built[node - 1] ) { - move.push_back( direction::WEST ); - } - if( node % 4 < 3 && !node_built[node + 1] ) { - move.push_back( direction::EAST ); - } - if( static_cast( node / 4 ) > 0 && !node_built[node - 4] ) { - move.push_back( direction::NORTH ); - } - if( static_cast( node / 4 ) < 3 && !node_built[node + 4] ) { - move.push_back( direction::SOUTH ); - } - - if( move.empty() ) { // Nowhere to go! - square( this, t_slope_down, node2 + point_south_east, node2 + point( 2, 2 ) ); - done = true; - } else { - switch( random_entry( move ) ) { - case direction::NORTH: - square( this, t_dirt, node2 + point( 1, -2 ), node2 + point( 2, -1 ) ); - node -= 4; - break; - case direction::EAST: - square( this, t_dirt, node2 + point( 4, 1 ), node2 + point( 5, 2 ) ); - node++; - break; - case direction::SOUTH: - square( this, t_dirt, node2 + point( 1, 4 ), node2 + point( 2, 5 ) ); - node += 4; - break; - case direction::WEST: - square( this, t_dirt, node2 + point( -2, 1 ), node2 + point( -1, 2 ) ); - node--; - break; - default: - break; - } - } - } while( !done ); - square( this, t_slope_up, point( 2, 2 ), point( 3, 3 ) ); - rotate( rng( 0, 3 ) ); - } else if( terrain_type == "triffid_finale" ) { - fill_background( this, t_root_wall ); - // NOLINTNEXTLINE(cata-use-named-point-constants) - square( this, t_dirt, point( 1, 1 ), point( 4, 4 ) ); - square( this, t_dirt, point( 19, 19 ), point( 22, 22 ) ); - // Drunken walk until we reach the heart (lower right, [19, 19]) - // Chance increases by 1 each turn, and gives the % chance of forcing a move - // to the right or down. - int chance = 0; - point p( 4, 4 ); - do { - ter_set( p, t_dirt ); - - if( chance >= 10 && one_in( 10 ) ) { // Add a spawn - place_spawns( GROUP_TRIFFID, 1, p, p, 1, true ); - } - - if( rng( 0, 99 ) < chance ) { // Force movement down or to the right - if( p.x >= 19 ) { - p.y++; - } else if( p.y >= 19 ) { - p.x++; - } else { - if( one_in( 2 ) ) { - p.x++; - } else { - p.y++; - } - } - } else { - chance++; // Increase chance of forced movement down/right - // Weigh movement towards directions with lots of existing walls - int chance_west = 0; - int chance_east = 0; - int chance_north = 0; - int chance_south = 0; - for( int dist = 1; dist <= 5; dist++ ) { - if( ter( p + point( -dist, 0 ) ) == t_root_wall ) { - chance_west++; - } - if( ter( p + point( dist, 0 ) ) == t_root_wall ) { - chance_east++; - } - if( ter( p + point( 0, -dist ) ) == t_root_wall ) { - chance_north++; - } - if( ter( p + point( 0, dist ) ) == t_root_wall ) { - chance_south++; - } - } - int roll = rng( 0, chance_west + chance_east + chance_north + chance_south ); - if( roll < chance_west && p.x > 0 ) { - p.x--; - } else if( roll < chance_west + chance_east && p.x < EAST_EDGE ) { - p.x++; - } else if( roll < chance_west + chance_east + chance_north && p.y > 0 ) { - p.y--; - } else if( p.y < SOUTH_EDGE ) { - p.y++; - } - } // Done with drunken walk - } while( p.x < 19 || p.y < 19 ); - // NOLINTNEXTLINE(cata-use-named-point-constants) - square( this, t_slope_up, point( 1, 1 ), point( 2, 2 ) ); - place_spawns( GROUP_TRIFFID_HEART, 1, point( 21, 21 ), point( 21, 21 ), 1, true ); - - } -} - void map::draw_connections( const mapgendata &dat ) { const oter_id &terrain_type = dat.terrain_type(); @@ -4896,7 +4939,7 @@ void map::draw_connections( const mapgendata &dat ) } else if( is_ot_match( "ants", terrain_type, ot_match_type::type ) ) { if( dat.above() == "anthill" ) { if( const auto p = random_point( *this, [this]( const tripoint & n ) { - return ter( n ) == t_rock_floor; + return ter( n ) == t_dirt; } ) ) { ter_set( *p, t_slope_up ); } @@ -6144,6 +6187,8 @@ bool update_mapgen_function_json::update_map( const tripoint_abs_omt &omt_pos, c bool update_mapgen_function_json::update_map( const mapgendata &md, const point &offset, const bool verify ) const { + mapgendata md_with_params( md, get_param_values( md ) ); + class rotation_guard { public: @@ -6167,21 +6212,21 @@ bool update_mapgen_function_json::update_map( const mapgendata &md, const point const mapgendata &md; const int rotation; }; - rotation_guard rot( md ); + rotation_guard rot( md_with_params ); for( const jmapgen_setmap &elem : setmap_points ) { - if( verify && elem.has_vehicle_collision( md, offset ) ) { + if( verify && elem.has_vehicle_collision( md_with_params, offset ) ) { return false; } - elem.apply( md, offset ); + elem.apply( md_with_params, offset ); } - if( verify && objects.has_vehicle_collision( md, offset ) ) { + if( verify && objects.has_vehicle_collision( md_with_params, offset ) ) { return false; } - objects.apply( md, offset ); + objects.apply( md_with_params, offset ); - resolve_regional_terrain_and_furniture( md ); + resolve_regional_terrain_and_furniture( md_with_params ); return true; } diff --git a/src/mapgen.h b/src/mapgen.h index 34616459af352..6ee65da7a95ce 100644 --- a/src/mapgen.h +++ b/src/mapgen.h @@ -12,6 +12,7 @@ #include #include +#include "cata_variant.h" #include "coordinates.h" #include "json.h" #include "memory_fast.h" @@ -21,6 +22,7 @@ #include "weighted_list.h" class map; +template class mapgen_value; class mapgendata; class mission; @@ -134,6 +136,20 @@ struct spawn_data { std::vector patrol_points_rel_ms; }; +class mapgen_parameter +{ + public: + void deserialize( JsonIn & ); + + cata_variant_type type() const; + cata_variant get( const mapgendata &md ) const; + private: + cata_variant_type type_; + // Using a pointer here mostly to move the definition of mapgen_value to the + // cpp file + std::shared_ptr> default_; +}; + /** * Basic mapgen object. It is supposed to place or do something on a specific square on the map. * Inherit from this class and implement the @ref apply function. @@ -164,7 +180,8 @@ class jmapgen_piece return false; } /** Sanity-check this piece */ - virtual void check( const std::string &/*context*/ ) const { } + virtual void check( const std::string &/*context*/, + const std::unordered_map & ) const { } /** Place something on the map from mapgendata &dat, at (x,y). */ virtual void apply( const mapgendata &dat, const jmapgen_int &x, const jmapgen_int &y ) const = 0; @@ -222,6 +239,7 @@ class mapgen_palette { public: palette_id id; + /** * The mapping from character (key) to a list of things that should be placed. This is * similar to objects, but it uses key to get the actual position where to place things @@ -296,7 +314,8 @@ struct jmapgen_objects { void load_objects( const JsonObject &jsi, const std::string &member_name, const std::string &context ); - void check( const std::string &context ) const; + void check( const std::string &context, + const std::unordered_map & ) const; void apply( const mapgendata &dat ) const; void apply( const mapgendata &dat, const point &offset ) const; @@ -328,6 +347,7 @@ class mapgen_function_json_base json_source_location jsrcloc; std::string context_; + std::unordered_map parameters; protected: mapgen_function_json_base( const json_source_location &jsrcloc, const std::string &context ); virtual ~mapgen_function_json_base(); @@ -341,6 +361,9 @@ class mapgen_function_json_base void check_common() const; + std::unordered_map + get_param_values( const mapgendata &md ) const; + bool is_ready; point mapgensize; @@ -397,7 +420,7 @@ class mapgen_function_json_nested : public mapgen_function_json_base mapgen_function_json_nested( const json_source_location &jsrcloc, const std::string &context ); ~mapgen_function_json_nested() override = default; - void nest( const mapgendata &dat, const point &offset ) const; + void nest( const mapgendata &md, const point &offset ) const; protected: bool setup_internal( const JsonObject &jo ) override; diff --git a/src/mapgen_functions.cpp b/src/mapgen_functions.cpp index a2fc728ac5a8d..f6390f6226c2e 100644 --- a/src/mapgen_functions.cpp +++ b/src/mapgen_functions.cpp @@ -1395,11 +1395,12 @@ void mapgen_subway( mapgendata &dat ) void mapgen_sewer_straight( mapgendata &dat ) { + static const ter_str_id t_soil( "t_soil" ); map *const m = &dat.m; for( int i = 0; i < SEEX * 2; i++ ) { for( int j = 0; j < SEEY * 2; j++ ) { if( i < SEEX - 2 || i > SEEX + 1 ) { - m->ter_set( point( i, j ), t_rock ); + m->ter_set( point( i, j ), t_soil ); } else { m->ter_set( point( i, j ), t_sewage ); } @@ -1414,11 +1415,12 @@ void mapgen_sewer_straight( mapgendata &dat ) void mapgen_sewer_curved( mapgendata &dat ) { + static const ter_str_id t_soil( "t_soil" ); map *const m = &dat.m; for( int i = 0; i < SEEX * 2; i++ ) { for( int j = 0; j < SEEY * 2; j++ ) { if( ( i > SEEX + 1 && j < SEEY - 2 ) || i < SEEX - 2 || j > SEEY + 1 ) { - m->ter_set( point( i, j ), t_rock ); + m->ter_set( point( i, j ), t_soil ); } else { m->ter_set( point( i, j ), t_sewage ); } @@ -1439,11 +1441,12 @@ void mapgen_sewer_curved( mapgendata &dat ) void mapgen_sewer_tee( mapgendata &dat ) { + static const ter_str_id t_soil( "t_soil" ); map *const m = &dat.m; for( int i = 0; i < SEEX * 2; i++ ) { for( int j = 0; j < SEEY * 2; j++ ) { if( i < SEEX - 2 || ( i > SEEX + 1 && ( j < SEEY - 2 || j > SEEY + 1 ) ) ) { - m->ter_set( point( i, j ), t_rock ); + m->ter_set( point( i, j ), t_soil ); } else { m->ter_set( point( i, j ), t_sewage ); } @@ -1464,12 +1467,13 @@ void mapgen_sewer_tee( mapgendata &dat ) void mapgen_sewer_four_way( mapgendata &dat ) { + static const ter_str_id t_soil( "t_soil" ); map *const m = &dat.m; int rn = rng( 0, 3 ); for( int i = 0; i < SEEX * 2; i++ ) { for( int j = 0; j < SEEY * 2; j++ ) { if( ( i < SEEX - 2 || i > SEEX + 1 ) && ( j < SEEY - 2 || j > SEEY + 1 ) ) { - m->ter_set( point( i, j ), t_rock ); + m->ter_set( point( i, j ), t_soil ); } else { m->ter_set( point( i, j ), t_sewage ); } @@ -2248,25 +2252,26 @@ void mapgen_hellmouth( mapgendata &dat ) void mapgen_ants_curved( mapgendata &dat ) { + static const ter_str_id t_soil( "t_soil" ); map *const m = &dat.m; point p( SEEX, 1 ); int rn = 0; // First, set it all to rock - fill_background( m, t_rock ); + fill_background( m, t_soil ); for( int i = SEEX - 2; i <= SEEX + 3; i++ ) { - m->ter_set( point( i, 0 ), t_rock_floor ); - m->ter_set( point( i, 1 ), t_rock_floor ); - m->ter_set( point( i, 2 ), t_rock_floor ); - m->ter_set( point( SEEX * 2 - 1, i ), t_rock_floor ); - m->ter_set( point( SEEX * 2 - 2, i ), t_rock_floor ); - m->ter_set( point( SEEX * 2 - 3, i ), t_rock_floor ); + m->ter_set( point( i, 0 ), t_dirt ); + m->ter_set( point( i, 1 ), t_dirt ); + m->ter_set( point( i, 2 ), t_dirt ); + m->ter_set( point( SEEX * 2 - 1, i ), t_dirt ); + m->ter_set( point( SEEX * 2 - 2, i ), t_dirt ); + m->ter_set( point( SEEX * 2 - 3, i ), t_dirt ); } do { for( int i = p.x - 2; i <= p.x + 3; i++ ) { for( int j = p.y - 2; j <= p.y + 3; j++ ) { if( i > 0 && i < SEEX * 2 - 1 && j > 0 && j < SEEY * 2 - 1 ) { - m->ter_set( point( i, j ), t_rock_floor ); + m->ter_set( point( i, j ), t_dirt ); } } } @@ -2288,7 +2293,7 @@ void mapgen_ants_curved( mapgendata &dat ) for( int i = p.x - 2; i <= p.x + 3; i++ ) { for( int j = p.y - 2; j <= p.y + 3; j++ ) { if( i > 0 && i < SEEX * 2 - 1 && j > 0 && j < SEEY * 2 - 1 ) { - m->ter_set( point( i, j ), t_rock_floor ); + m->ter_set( point( i, j ), t_dirt ); } } } @@ -2306,13 +2311,14 @@ void mapgen_ants_curved( mapgendata &dat ) void mapgen_ants_four_way( mapgendata &dat ) { + static const ter_str_id t_soil( "t_soil" ); map *const m = &dat.m; - fill_background( m, t_rock ); + fill_background( m, t_soil ); int x = SEEX; for( int j = 0; j < SEEY * 2; j++ ) { for( int i = x - 2; i <= x + 3; i++ ) { if( i >= 1 && i < SEEX * 2 - 1 ) { - m->ter_set( point( i, j ), t_rock_floor ); + m->ter_set( point( i, j ), t_dirt ); } } x += rng( -1, 1 ); @@ -2330,7 +2336,7 @@ void mapgen_ants_four_way( mapgendata &dat ) for( int i = 0; i < SEEX * 2; i++ ) { for( int j = y - 2; j <= y + 3; j++ ) { if( j >= 1 && j < SEEY * 2 - 1 ) { - m->ter_set( point( i, j ), t_rock_floor ); + m->ter_set( point( i, j ), t_dirt ); } } y += rng( -1, 1 ); @@ -2348,13 +2354,14 @@ void mapgen_ants_four_way( mapgendata &dat ) void mapgen_ants_straight( mapgendata &dat ) { + static const ter_str_id t_soil( "t_soil" ); map *const m = &dat.m; int x = SEEX; - fill_background( m, t_rock ); + fill_background( m, t_soil ); for( int j = 0; j < SEEY * 2; j++ ) { for( int i = x - 2; i <= x + 3; i++ ) { if( i >= 1 && i < SEEX * 2 - 1 ) { - m->ter_set( point( i, j ), t_rock_floor ); + m->ter_set( point( i, j ), t_dirt ); } } x += rng( -1, 1 ); @@ -2375,13 +2382,14 @@ void mapgen_ants_straight( mapgendata &dat ) void mapgen_ants_tee( mapgendata &dat ) { + static const ter_str_id t_soil( "t_soil" ); map *const m = &dat.m; - fill_background( m, t_rock ); + fill_background( m, t_soil ); int x = SEEX; for( int j = 0; j < SEEY * 2; j++ ) { for( int i = x - 2; i <= x + 3; i++ ) { if( i >= 1 && i < SEEX * 2 - 1 ) { - m->ter_set( point( i, j ), t_rock_floor ); + m->ter_set( point( i, j ), t_dirt ); } } x += rng( -1, 1 ); @@ -2398,7 +2406,7 @@ void mapgen_ants_tee( mapgendata &dat ) for( int i = SEEX; i < SEEX * 2; i++ ) { for( int j = y - 2; j <= y + 3; j++ ) { if( j >= 1 && j < SEEY * 2 - 1 ) { - m->ter_set( point( i, j ), t_rock_floor ); + m->ter_set( point( i, j ), t_dirt ); } } y += rng( -1, 1 ); @@ -2425,14 +2433,15 @@ void mapgen_ants_tee( mapgendata &dat ) static void mapgen_ants_generic( mapgendata &dat ) { + static const ter_str_id t_soil( "t_soil" ); map *const m = &dat.m; for( int i = 0; i < SEEX * 2; i++ ) { for( int j = 0; j < SEEY * 2; j++ ) { if( i < SEEX - 4 || i > SEEX + 5 || j < SEEY - 4 || j > SEEY + 5 ) { - m->ter_set( point( i, j ), t_rock ); + m->ter_set( point( i, j ), t_soil ); } else { - m->ter_set( point( i, j ), t_rock_floor ); + m->ter_set( point( i, j ), t_dirt ); } } } @@ -2443,11 +2452,11 @@ static void mapgen_ants_generic( mapgendata &dat ) do { p.x = rng( 1 + cw, SEEX * 2 - 2 - cw ); p.y = rng( 1 + cw, SEEY * 2 - 2 - cw ); - } while( m->ter( p ) == t_rock ); + } while( m->ter( p ) == t_soil ); for( int i = p.x - cw; i <= p.x + cw; i++ ) { for( int j = p.y - cw; j <= p.y + cw; j++ ) { if( trig_dist( p, point( i, j ) ) <= cw ) { - m->ter_set( point( i, j ), t_rock_floor ); + m->ter_set( point( i, j ), t_dirt ); } } } @@ -2456,7 +2465,7 @@ static void mapgen_ants_generic( mapgendata &dat ) is_ot_match( "ants_lab", dat.north(), ot_match_type::contains ) ) { for( int i = SEEX - 2; i <= SEEX + 3; i++ ) { for( int j = 0; j <= SEEY; j++ ) { - m->ter_set( point( i, j ), t_rock_floor ); + m->ter_set( point( i, j ), t_dirt ); } } } @@ -2464,7 +2473,7 @@ static void mapgen_ants_generic( mapgendata &dat ) is_ot_match( "ants_lab", dat.east(), ot_match_type::contains ) ) { for( int i = SEEX; i <= SEEX * 2 - 1; i++ ) { for( int j = SEEY - 2; j <= SEEY + 3; j++ ) { - m->ter_set( point( i, j ), t_rock_floor ); + m->ter_set( point( i, j ), t_dirt ); } } } @@ -2472,7 +2481,7 @@ static void mapgen_ants_generic( mapgendata &dat ) is_ot_match( "ants_lab", dat.south(), ot_match_type::contains ) ) { for( int i = SEEX - 2; i <= SEEX + 3; i++ ) { for( int j = SEEY; j <= SEEY * 2 - 1; j++ ) { - m->ter_set( point( i, j ), t_rock_floor ); + m->ter_set( point( i, j ), t_dirt ); } } } @@ -2480,7 +2489,7 @@ static void mapgen_ants_generic( mapgendata &dat ) is_ot_match( "ants_lab", dat.west(), ot_match_type::contains ) ) { for( int i = 0; i <= SEEX; i++ ) { for( int j = SEEY - 2; j <= SEEY + 3; j++ ) { - m->ter_set( point( i, j ), t_rock_floor ); + m->ter_set( point( i, j ), t_dirt ); } } } diff --git a/src/mapgendata.cpp b/src/mapgendata.cpp index 461111506954a..3610e4fa759fe 100644 --- a/src/mapgendata.cpp +++ b/src/mapgendata.cpp @@ -46,6 +46,13 @@ mapgendata::mapgendata( const mapgendata &other, const oter_id &other_id ) : map terrain_type_ = other_id; } +mapgendata::mapgendata( const mapgendata &other, + const std::unordered_map &mapgen_params ) : + mapgendata( other ) +{ + mapgen_params_ = mapgen_params; +} + void mapgendata::set_dir( int dir_in, int val ) { switch( dir_in ) { diff --git a/src/mapgendata.h b/src/mapgendata.h index 19d8973412078..c109aa3228d86 100644 --- a/src/mapgendata.h +++ b/src/mapgendata.h @@ -3,7 +3,9 @@ #define CATA_SRC_MAPGENDATA_H #include "calendar.h" +#include "cata_variant.h" #include "coordinates.h" +#include "json.h" #include "type_id.h" #include "weighted_list.h" @@ -40,6 +42,7 @@ class mapgendata time_point when_; ::mission *mission_; int zlevel_; + std::unordered_map mapgen_params_; public: oter_id t_nesw[8]; @@ -84,6 +87,12 @@ class mapgendata */ mapgendata( const mapgendata &other, const oter_id &other_id ); + /** + * Creates a copy of this mapgendata, but stores new parameter values. + */ + mapgendata( const mapgendata &other, + const std::unordered_map & ); + const oter_id &terrain_type() const { return terrain_type_; } @@ -139,6 +148,16 @@ class mapgendata void square_groundcover( const point &p1, const point &p2 ) const; ter_id groundcover() const; bool is_groundcover( const ter_id &iid ) const; + + template + Result get_param( const std::string &name ) const { + auto it = mapgen_params_.find( name ); + if( it == mapgen_params_.end() ) { + debugmsg( "No such parameter \"%s\"", name ); + return Result(); + } + return it->second.get(); + } }; #endif // CATA_SRC_MAPGENDATA_H diff --git a/src/mattack_actors.cpp b/src/mattack_actors.cpp index a54ebc7400933..6e4da2281c579 100644 --- a/src/mattack_actors.cpp +++ b/src/mattack_actors.cpp @@ -219,6 +219,8 @@ void melee_actor::load_internal( const JsonObject &obj, const std::string & ) max_mul = obj.get_float( "max_mul", 1.0f ); move_cost = obj.get_int( "move_cost", 100 ); accuracy = obj.get_int( "accuracy", INT_MIN ); + dodgeable = obj.get_bool( "dodgeable", true ); + blockable = obj.get_bool( "blockable", true ); optional( obj, was_loaded, "miss_msg_u", miss_msg_u, to_translation( "The %s lunges at you, but you dodge!" ) ); @@ -274,29 +276,42 @@ bool melee_actor::call( monster &z ) const add_msg_debug( debugmode::DF_MATTACK, "%s attempting to melee_attack %s", z.name(), target->disp_name() ); + // Dodge check const int acc = accuracy >= 0 ? accuracy : z.type->melee_skill; int hitspread = target->deal_melee_attack( &z, dice( acc, 10 ) ); - - if( hitspread < 0 ) { - game_message_type msg_type = target->is_avatar() ? m_warning : m_info; - sfx::play_variant_sound( "mon_bite", "bite_miss", sfx::get_heard_volume( z.pos() ), - sfx::get_heard_angle( z.pos() ) ); - target->add_msg_player_or_npc( msg_type, miss_msg_u, miss_msg_npc, z.name() ); - return true; + if( dodgeable ) { + if( hitspread < 0 ) { + game_message_type msg_type = target->is_avatar() ? m_warning : m_info; + sfx::play_variant_sound( "mon_bite", "bite_miss", sfx::get_heard_volume( z.pos() ), + sfx::get_heard_angle( z.pos() ) ); + target->add_msg_player_or_npc( msg_type, miss_msg_u, miss_msg_npc, z.name() ); + return true; + } } + // Damage instance calculation damage_instance damage = damage_max_instance; - double multiplier = rng_float( min_mul, max_mul ); damage.mult_damage( multiplier ); + // Pick body part bodypart_str_id bp_hit = body_parts.empty() ? target->select_body_part( &z, hitspread ).id() : *body_parts.pick(); - target->on_hit( &z, bp_hit.id() ); - dealt_damage_instance dealt_damage = target->deal_damage( &z, bp_hit.id(), damage ); - dealt_damage.bp_hit = bp_hit.id(); + bodypart_id bp_id = bodypart_id( bp_hit ); + + // Block our hit + if( blockable ) { + target->block_hit( &z, bp_id, damage ); + } + + // Take damage + dealt_damage_instance dealt_damage = target->deal_damage( &z, bp_id, damage ); + dealt_damage.bp_hit = bp_id; + + // On hit effects + target->on_hit( &z, bp_id ); int damage_total = dealt_damage.total_damage(); add_msg_debug( debugmode::DF_MATTACK, "%s's melee_attack did %d damage", z.name(), damage_total ); @@ -306,7 +321,7 @@ bool melee_actor::call( monster &z ) const sfx::play_variant_sound( "mon_bite", "bite_miss", sfx::get_heard_volume( z.pos() ), sfx::get_heard_angle( z.pos() ) ); target->add_msg_player_or_npc( m_neutral, no_dmg_msg_u, no_dmg_msg_npc, z.name(), - body_part_name_accusative( bp_hit.id() ) ); + body_part_name_accusative( bp_id ) ); } return true; diff --git a/src/mattack_actors.h b/src/mattack_actors.h index 575e16cc13aa1..fdb0f09262a97 100644 --- a/src/mattack_actors.h +++ b/src/mattack_actors.h @@ -71,6 +71,10 @@ class melee_actor : public mattack_actor // If non-negative, the attack will use a different accuracy from mon's // regular melee attack. int accuracy = INT_MIN; + // Determines if a special attack can be dodged + bool dodgeable = true; + // Determines if a special attack can be blocked + bool blockable = true; /** * If empty, regular melee roll body part selection is used. diff --git a/src/melee.cpp b/src/melee.cpp index 5a2aee40555ce..c4a6eea52d49e 100644 --- a/src/melee.cpp +++ b/src/melee.cpp @@ -17,6 +17,7 @@ #include "avatar.h" #include "bodypart.h" +#include "bionics.h" #include "cached_options.h" #include "calendar.h" #include "cata_utility.h" @@ -68,7 +69,6 @@ #include "weighted_list.h" static const bionic_id bio_cqb( "bio_cqb" ); -static const bionic_id bio_memory( "bio_memory" ); static const itype_id itype_fur( "fur" ); static const itype_id itype_leather( "leather" ); @@ -103,6 +103,7 @@ static const efftype_id effect_venom_weaken( "venom_weaken" ); static const efftype_id effect_venom_player1( "venom_player1" ); static const efftype_id effect_venom_player2( "venom_player2" ); +static const json_character_flag json_flag_CBQ_LEARN_BONUS( "CBQ_LEARN_BONUS" ); static const json_character_flag json_flag_NEED_ACTIVE_TO_MELEE( "NEED_ACTIVE_TO_MELEE" ); static const json_character_flag json_flag_UNARMED_BONUS( "UNARMED_BONUS" ); @@ -535,11 +536,13 @@ bool Character::melee_attack_abstract( Creature &t, bool allow_special, } } - if( cur_weapon->attack_time() > attack_speed( *cur_weapon ) * 20 ) { + int move_cost = attack_speed( cur_weapon->has_flag( flag_UNARMED_WEAPON ) ? + null_item_reference() : *cur_weapon ); + + if( cur_weapon->attack_time() > move_cost * 20 ) { add_msg( m_bad, _( "This weapon is too unwieldy to attack with!" ) ); return false; } - int move_cost = attack_speed( *cur_weapon ); if( is_avatar() && move_cost > 1000 && calendar::turn > melee_warning_turn ) { const auto &action = query_popup() @@ -670,8 +673,8 @@ bool Character::melee_attack_abstract( Creature &t, bool allow_special, if( has_active_bionic( bio_cqb ) && !martial_arts_data->knows_selected_style() ) { /** @EFFECT_INT slightly increases chance to learn techniques when using CQB bionic */ // Enhanced Memory Banks bionic doubles chance to learn martial art - const int bionic_boost = has_active_bionic( bionic_id( bio_memory ) ) ? 2 : 1; - if( one_in( ( 1400 - ( get_int() * 50 ) ) / bionic_boost ) ) { + const int learn_boost = has_flag( json_flag_CBQ_LEARN_BONUS ) ? 2 : 1; + if( one_in( ( 1400 - ( get_int() * 50 ) ) / learn_boost ) ) { martial_arts_data->learn_current_style_CQB( is_player() ); } } @@ -976,7 +979,7 @@ float Character::get_dodge() const { //If we're asleep or busy we can't dodge if( in_sleep_state() || has_effect( effect_narcosis ) || - has_effect( efftype_id( "winded" ) ) ) { + has_effect( efftype_id( "winded" ) ) || is_driving() ) { return 0.0f; } @@ -1774,7 +1777,7 @@ bool Character::block_hit( Creature *source, bodypart_id &bp_hit, damage_instanc // Shouldn't block if player is asleep or winded if( in_sleep_state() || has_effect( effect_narcosis ) || - has_effect( efftype_id( "winded" ) ) ) { + has_effect( efftype_id( "winded" ) ) || is_driving() ) { return false; } @@ -2016,9 +2019,10 @@ std::string Character::melee_special_effects( Creature &t, damage_instance &d, i std::string target = t.disp_name(); - if( has_active_bionic( bionic_id( "bio_shock" ) ) && get_power_level() >= 2_kJ && + const bionic_id bio_shock( "bio_shock" ); + if( has_active_bionic( bio_shock ) && get_power_level() >= bio_shock->power_trigger && ( !is_armed() || weapon.conductive() ) ) { - mod_power_level( -2_kJ ); + mod_power_level( -bio_shock->power_trigger ); d.add_damage( damage_type::ELECTRIC, rng( 2, 10 ) ); if( is_player() ) { @@ -2028,8 +2032,9 @@ std::string Character::melee_special_effects( Creature &t, damage_instance &d, i } } - if( has_active_bionic( bionic_id( "bio_heat_absorb" ) ) && !is_armed() && t.is_warm() ) { - mod_power_level( 3_kJ ); + const bionic_id bio_heat_absorb( "bio_heat_absorb" ); + if( has_active_bionic( bio_heat_absorb ) && !is_armed() && t.is_warm() ) { + mod_power_level( bio_heat_absorb->power_trigger ); d.add_damage( damage_type::COLD, 3 ); if( is_player() ) { dump += string_format( _( "You drain %s's body heat." ), target ) + "\n"; diff --git a/src/mission.cpp b/src/mission.cpp index 5df75c4ecfa90..5900447a30f31 100644 --- a/src/mission.cpp +++ b/src/mission.cpp @@ -597,7 +597,7 @@ void mission::get_all_item_group_matches( std::vector &items, //recursively check item contents for target if( itm->is_container() && !itm->is_container_empty() ) { - std::list content_list = itm->contents.all_items_top(); + std::list content_list = itm->all_items_top(); std::vector content = std::vector(); //list of item into list item* diff --git a/src/mission_end.cpp b/src/mission_end.cpp index 3f62fda6af581..db6b474a09486 100644 --- a/src/mission_end.cpp +++ b/src/mission_end.cpp @@ -24,7 +24,7 @@ void mission_end::deposit_box( mission *miss ) if( one_in( 4 ) ) { itemName = "katana"; } else if( one_in( 3 ) ) { - itemName = "m4a1"; + itemName = "nato_assault_rifle"; } get_player_character().i_add( item( itemName, calendar::turn_zero ) ); add_msg( m_good, _( "%s gave you an item from the deposit box." ), p->name ); diff --git a/src/mod_tracker.h b/src/mod_tracker.h new file mode 100644 index 0000000000000..ef7671730641d --- /dev/null +++ b/src/mod_tracker.h @@ -0,0 +1,51 @@ +#pragma once +#ifndef CATA_SRC_MOD_TRACKER_H +#define CATA_SRC_MOD_TRACKER_H + +#include + +#include "cata_void.h" +#include "type_id.h" + +/** + * Mod Tracking: + * + * These functions live here to provide various JSON-loaded entities + * with the ids of the mods that they are from. + * + * To subscribe, a JSON-loaded entity simply needs to have a + * 'std::vector, mod_id> src;' member. + * (As well as storing their id in an 'id' member of either string or int id type) + * + * If the entity is loaded with generic_factory, no further changes are needed. + * If the entity is not loaded with generic_factory, 'assign_src()' must be called sometime + * after the 'id' member has been assigned. + */ + +/** Template magic to determine if the conditions above are satisfied */ +template> +struct has_src_member : std::false_type {}; + +template +struct has_src_member().src.emplace_back( std::declval().id, mod_id() ) )>> : +std::true_type {}; + +/** Dummy function, for if those conditions are not satisfied */ +template < typename T, typename std::enable_if_t < !has_src_member::value > * = nullptr > +void assign_src( T &, const std::string & ) +{ +} + +/** If those conditions are satisfied, keep track of where this item has been modified */ +template::value > * = nullptr> +void assign_src( T &def, const std::string &src ) +{ + // We need to make sure we're keeping where this entity has been loaded + // If the id this was last loaded with is not this one, discard the history and start again + if( !def.src.empty() && def.src.back().first != def.id ) { + def.src.clear(); + } + def.src.emplace_back( def.id, mod_id( src ) ); +} + +#endif // CATA_SRC_MOD_TRACKER_H diff --git a/src/monattack.cpp b/src/monattack.cpp index 7b8af4eb154e8..ff945c4eb997b 100644 --- a/src/monattack.cpp +++ b/src/monattack.cpp @@ -18,6 +18,7 @@ #include "activity_type.h" #include "ballistics.h" +#include "bionics.h" #include "bodypart.h" #include "calendar.h" #include "cata_assert.h" @@ -629,25 +630,25 @@ bool mattack::acid_barf( monster *z ) z->moves -= 80; // Make sure it happens before uncanny dodge get_map().add_field( target->pos(), fd_acid, 1 ); - bool uncanny = target->uncanny_dodge(); + // Can we dodge the attack? Uses player dodge function % chance (melee.cpp) - if( uncanny || dodge_check( z, target ) ) { + if( dodge_check( z, target ) ) { game_message_type msg_type = target->is_avatar() ? m_warning : m_info; target->add_msg_player_or_npc( msg_type, _( "The %s barfs acid at you, but you dodge!" ), _( "The %s barfs acid at , but they dodge!" ), z->name() ); - if( !uncanny ) { - target->on_dodge( z, z->type->melee_skill ); - } + target->on_dodge( z, z->type->melee_skill ); return true; } - const bodypart_id &hit = target->get_random_body_part(); - int dam = rng( 5, 12 ); - dam = target->deal_damage( z, hit, damage_instance( damage_type::ACID, - dam ) ).total_damage(); + bodypart_id hit = target->get_random_body_part(); + damage_instance dam_inst = damage_instance( damage_type::ACID, rng( 5, 12 ) ); + target->block_hit( z, hit, dam_inst ); + + int dam = target->deal_damage( z, hit, dam_inst ).total_damage(); + target->add_env_effect( effect_corroding, hit, 5, time_duration::from_turns( dam / 2 + 5 ), hit ); if( dam > 0 ) { @@ -1098,15 +1099,12 @@ bool mattack::smash( monster *z ) // Costs lots of moves to give you a little bit of a chance to get away. z->moves -= 400; - if( target->uncanny_dodge() ) { - return true; - } - // Can we dodge the attack? Uses player dodge function % chance (melee.cpp) if( dodge_check( z, target ) ) { target->add_msg_player_or_npc( _( "The %s takes a powerful swing at you, but you dodge it!" ), _( "The %s takes a powerful swing at , who dodges it!" ), z->name() ); + target->on_dodge( z, z->type->melee_skill ); return true; } @@ -1805,10 +1803,6 @@ bool mattack::fungus_inject( monster *z ) add_msg( m_warning, _( "The %s jabs at you with a needlelike point!" ), z->name() ); z->moves -= 150; - if( player_character.uncanny_dodge() ) { - return true; - } - // Can we dodge the attack? Uses player dodge function % chance (melee.cpp) if( dodge_check( z, target ) ) { target->add_msg_player_or_npc( _( "You dodge it!" ), @@ -1817,11 +1811,11 @@ bool mattack::fungus_inject( monster *z ) return true; } - const bodypart_id hit = target->get_random_body_part(); - int dam = rng( 5, 11 ); - dam = player_character.deal_damage( z, hit, damage_instance( damage_type::CUT, - dam ) ).total_damage(); + bodypart_id hit = target->get_random_body_part(); + damage_instance dam_inst = damage_instance( damage_type::CUT, rng( 5, 11 ) ); + target->block_hit( z, hit, dam_inst ); + int dam = player_character.deal_damage( z, hit, dam_inst ).total_damage(); if( dam > 0 ) { //~ 1$s is monster name, 2$s bodypart in accusative add_msg( m_bad, _( "The %1$s sinks its point into your %2$s!" ), z->name(), @@ -1863,10 +1857,6 @@ bool mattack::fungus_bristle( monster *z ) target->disp_name() ); z->moves -= 150; - if( target->uncanny_dodge() ) { - return true; - } - // Can we dodge the attack? Uses player dodge function % chance (melee.cpp) if( dodge_check( z, target ) ) { target->add_msg_player_or_npc( _( "You dodge it!" ), @@ -1875,10 +1865,11 @@ bool mattack::fungus_bristle( monster *z ) return true; } - const bodypart_id hit = target->get_random_body_part(); - int dam = rng( 7, 16 ); - dam = target->deal_damage( z, hit, damage_instance( damage_type::CUT, dam ) ).total_damage(); + bodypart_id hit = target->get_random_body_part(); + damage_instance dam_inst = damage_instance( damage_type::CUT, rng( 7, 16 ) ); + target->block_hit( z, hit, dam_inst ); + int dam = target->deal_damage( z, hit, dam_inst ).total_damage(); if( dam > 0 ) { //~ 1$s is monster name, 2$s bodypart in accusative target->add_msg_if_player( m_bad, _( "The %1$s sinks several needlelike barbs into your %2$s!" ), @@ -2033,9 +2024,6 @@ bool mattack::fungus_fortify( monster *z ) z->name() ); z->moves -= 150; - if( player_character.uncanny_dodge() ) { - return true; - } // Can we dodge the attack? Uses player dodge function % chance (melee.cpp) if( dodge_check( z, target ) ) { target->add_msg_player_or_npc( _( "You dodge it!" ), @@ -2044,12 +2032,11 @@ bool mattack::fungus_fortify( monster *z ) return true; } - // TODO: 21 damage with no chance to critical isn't scary - const bodypart_id hit = target->get_random_body_part(); - int dam = rng( 15, 21 ); - dam = player_character.deal_damage( z, hit, damage_instance( damage_type::STAB, - dam ) ).total_damage(); + bodypart_id hit = target->get_random_body_part(); + damage_instance dam_inst = damage_instance( damage_type::STAB, rng( 15, 21 ) ); + target->block_hit( z, hit, dam_inst ); + int dam = player_character.deal_damage( z, hit, dam_inst ).total_damage(); if( dam > 0 ) { //~ 1$s is monster name, 2$s bodypart in accusative add_msg( m_bad, _( "The %1$s sinks its point into your %2$s!" ), z->name(), @@ -2078,23 +2065,22 @@ bool mattack::impale( monster *z ) } z->moves -= 80; - bool uncanny = target->uncanny_dodge(); - if( uncanny || dodge_check( z, target ) ) { + + if( dodge_check( z, target ) ) { game_message_type msg_type = target->is_avatar() ? m_warning : m_info; target->add_msg_player_or_npc( msg_type, _( "The %s lunges at you, but you dodge!" ), _( "The %s lunges at , but they dodge!" ), z->name() ); - if( !uncanny ) { - target->on_dodge( z, z->type->melee_skill ); - } + target->on_dodge( z, z->type->melee_skill ); return true; } - int dam = target->deal_damage( z, bodypart_id( "torso" ), damage_instance( damage_type::STAB, - rng( 10, 20 ), - rng( 5, 15 ), - .5 ) ).total_damage(); + bodypart_id hit = bodypart_id( "torso" ); + damage_instance dam_inst = damage_instance( damage_type::STAB, rng( 10, 20 ), rng( 5, 15 ), .5 ); + target->block_hit( z, hit, dam_inst ); + + int dam = target->deal_damage( z, hit, dam_inst ).total_damage(); if( dam > 0 ) { game_message_type msg_type = target->is_avatar() ? m_bad : m_info; target->add_msg_player_or_npc( msg_type, @@ -2134,13 +2120,11 @@ bool mattack::dermatik( monster *z ) return false; } - if( target->uncanny_dodge() ) { - return true; - } player *foe = dynamic_cast< player * >( target ); if( foe == nullptr ) { return true; // No implanting monsters for now } + // Can we dodge the attack? Uses player dodge function % chance (melee.cpp) if( dodge_check( z, target ) ) { if( target->is_avatar() ) { @@ -2535,9 +2519,6 @@ bool mattack::tentacle( monster *z ) z->name() ); z->moves -= 100; - if( target->uncanny_dodge() ) { - return true; - } // Can we dodge the attack? Uses player dodge function % chance (melee.cpp) if( dodge_check( z, target ) ) { target->add_msg_player_or_npc( _( "You dodge it!" ), @@ -2546,10 +2527,11 @@ bool mattack::tentacle( monster *z ) return true; } - const bodypart_id hit = target->get_random_body_part(); - int dam = rng( 10, 20 ); - dam = target->deal_damage( z, hit, damage_instance( damage_type::BASH, dam ) ).total_damage(); + bodypart_id hit = target->get_random_body_part(); + damage_instance dam_inst = damage_instance( damage_type::BASH, rng( 10, 20 ) ); + target->block_hit( z, hit, dam_inst ); + int dam = target->deal_damage( z, hit, dam_inst ).total_damage(); if( dam > 0 ) { target->add_msg_player_or_npc( msg_type, //~ 1$s is bodypart name, 2$d is damage value. @@ -2596,18 +2578,14 @@ bool mattack::ranged_pull( monster *z ) z->moves -= 150; - const bool uncanny = target->uncanny_dodge(); - if( uncanny || dodge_check( z, target ) ) { + if( dodge_check( z, target ) ) { z->moves -= 200; game_message_type msg_type = foe && foe->is_avatar() ? m_warning : m_info; target->add_msg_player_or_npc( msg_type, _( "The %s's arms fly out at you, but you dodge!" ), _( "The %s's arms fly out at , but they dodge!" ), z->name() ); - if( !uncanny ) { - target->on_dodge( z, z->type->melee_skill ); - } - + target->on_dodge( z, z->type->melee_skill ); return true; } @@ -2678,17 +2656,14 @@ bool mattack::grab( monster *z ) } z->moves -= 80; - const bool uncanny = target->uncanny_dodge(); + const game_message_type msg_type = target->is_avatar() ? m_warning : m_info; - if( uncanny || dodge_check( z, target ) ) { + if( dodge_check( z, target ) ) { target->add_msg_player_or_npc( msg_type, _( "The %s gropes at you, but you dodge!" ), _( "The %s gropes at , but they dodge!" ), z->name() ); - if( !uncanny ) { - target->on_dodge( z, z->type->melee_skill ); - } - + target->on_dodge( z, z->type->melee_skill ); return true; } @@ -3341,7 +3316,7 @@ void mattack::rifle( monster *z, Creature *target ) } add_msg_if_player_sees( *z, m_warning, _( "The %s opens up with its rifle!" ), z->name() ); - tmp.weapon = item( "m4a1" ).ammo_set( ammo_type, z->ammo[ ammo_type ] ); + tmp.weapon = item( "nato_assault_rifle" ).ammo_set( ammo_type, z->ammo[ ammo_type ] ); int burst = std::max( tmp.weapon.gun_get_mode( gun_mode_id( "AUTO" ) ).qty, 1 ); z->ammo[ ammo_type ] -= tmp.fire_gun( target->pos(), burst ) * tmp.weapon.ammo_required(); @@ -4114,9 +4089,9 @@ bool mattack::stretch_bite( monster *z ) return true; } } - bool uncanny = target->uncanny_dodge(); + // Can we dodge the attack? Uses player dodge function % chance (melee.cpp) - if( uncanny || dodge_check( z, target ) ) { + if( dodge_check( z, target ) ) { z->moves -= 150; z->add_effect( effect_stunned, 3_turns ); game_message_type msg_type = target->is_avatar() ? m_warning : m_info; @@ -4124,17 +4099,16 @@ bool mattack::stretch_bite( monster *z ) _( "The %s's head extends to bite you, but you dodge and the head sails past!" ), _( "The %s's head extends to bite , but they dodge and the head sails past!" ), z->name() ); - if( !uncanny ) { - target->on_dodge( z, z->type->melee_skill ); - } + + target->on_dodge( z, z->type->melee_skill ); return true; } - const bodypart_id hit = target->get_random_body_part(); - // More damage due to the speed of the moving head - int dam = rng( 5, 15 ); - dam = target->deal_damage( z, hit, damage_instance( damage_type::STAB, dam ) ).total_damage(); + bodypart_id hit = target->get_random_body_part(); + damage_instance dam_inst = damage_instance( damage_type::STAB, rng( 5, 15 ) ); + target->block_hit( z, hit, dam_inst ); + int dam = target->deal_damage( z, hit, dam_inst ).total_damage(); if( dam > 0 ) { game_message_type msg_type = target->is_avatar() ? m_bad : m_info; target->add_msg_player_or_npc( msg_type, @@ -4217,10 +4191,6 @@ bool mattack::flesh_golem( monster *z ) z->name(), target->disp_name() ); z->moves -= 100; - if( target->uncanny_dodge() ) { - return true; - } - // Can we dodge the attack? Uses player dodge function % chance (melee.cpp) if( dodge_check( z, target ) ) { target->add_msg_player_or_npc( _( "You dodge it!" ), @@ -4228,10 +4198,12 @@ bool mattack::flesh_golem( monster *z ) target->on_dodge( z, z->type->melee_skill ); return true; } - const bodypart_id hit = target->get_random_body_part(); - // TODO: 10 bashing damage doesn't sound like a "massive claw" but a mediocre punch - int dam = rng( 5, 10 ); - target->deal_damage( z, hit, damage_instance( damage_type::BASH, dam ) ); + + bodypart_id hit = target->get_random_body_part(); + damage_instance dam_inst = damage_instance( damage_type::BASH, rng( 5, 10 ) ); + target->block_hit( z, hit, dam_inst ); + + int dam = target->deal_damage( z, hit, dam_inst ).total_damage(); if( one_in( 6 ) ) { target->add_effect( effect_downed, 3_minutes ); } @@ -4340,10 +4312,6 @@ bool mattack::lunge( monster *z ) z->moves -= 100; - if( target->uncanny_dodge() ) { - return true; - } - // Can we dodge the attack? Uses player dodge function % chance (melee.cpp) if( dodge_check( z, target ) ) { target->add_msg_player_or_npc( _( "The %1$s lunges at you, but you sidestep it!" ), @@ -4351,9 +4319,12 @@ bool mattack::lunge( monster *z ) target->on_dodge( z, z->type->melee_skill ); return true; } - const bodypart_id hit = target->get_random_body_part(); - int dam = rng( 3, 7 ); - dam = target->deal_damage( z, hit, damage_instance( damage_type::BASH, dam ) ).total_damage(); + + bodypart_id hit = target->get_random_body_part(); + damage_instance dam_inst = damage_instance( damage_type::BASH, rng( 3, 7 ) ); + target->block_hit( z, hit, dam_inst ); + + int dam = target->deal_damage( z, hit, dam_inst ).total_damage(); if( dam > 0 ) { game_message_type msg_type = target->is_avatar() ? m_bad : m_warning; target->add_msg_player_or_npc( msg_type, @@ -4414,9 +4385,6 @@ bool mattack::longswipe( monster *z ) z->moves -= 150; - if( target->uncanny_dodge() ) { - return true; - } // Can we dodge the attack? Uses player dodge function % chance (melee.cpp) if( dodge_check( z, target ) ) { target->add_msg_player_or_npc( _( "The %s thrusts a claw at you, but you evade it!" ), @@ -4425,9 +4393,12 @@ bool mattack::longswipe( monster *z ) target->on_dodge( z, z->type->melee_skill ); return true; } - const bodypart_id hit = target->get_random_body_part(); - int dam = rng( 3, 7 ); - dam = target->deal_damage( z, hit, damage_instance( damage_type::CUT, dam ) ).total_damage(); + + bodypart_id hit = target->get_random_body_part(); + damage_instance dam_inst = damage_instance( damage_type::CUT, rng( 3, 7 ) ); + target->block_hit( z, hit, dam_inst ); + + int dam = target->deal_damage( z, hit, dam_inst ).total_damage(); if( dam > 0 ) { game_message_type msg_type = target->is_avatar() ? m_bad : m_warning; target->add_msg_player_or_npc( msg_type, @@ -4450,10 +4421,6 @@ bool mattack::longswipe( monster *z ) } z->moves -= 100; - if( target->uncanny_dodge() ) { - return true; - } - // Can we dodge the attack? Uses player dodge function % chance (melee.cpp) if( dodge_check( z, target ) ) { target->add_msg_player_or_npc( _( "The %s slashes at your neck! You duck!" ), @@ -4462,21 +4429,18 @@ bool mattack::longswipe( monster *z ) return true; } - int dam = rng( 6, 10 ); - dam = target->deal_damage( z, bodypart_id( "head" ), damage_instance( damage_type::CUT, - dam ) ).total_damage(); + bodypart_id hit = bodypart_id( "head" ); + damage_instance dam_inst = damage_instance( damage_type::CUT, rng( 6, 10 ) ); + target->block_hit( z, hit, dam_inst ); + + int dam = target->deal_damage( z, hit, dam_inst ).total_damage(); if( dam > 0 ) { game_message_type msg_type = target->is_avatar() ? m_bad : m_warning; target->add_msg_player_or_npc( msg_type, _( "The %1$s slashes at your neck, cutting your throat for %2$d damage!" ), _( "The %1$s slashes at 's neck, cutting their throat for %2$d damage!" ), z->name(), dam ); - if( target->is_player() || target->is_npc() ) { - target->as_character()->make_bleed( effect_source( z ), bodypart_id( "head" ), 15_minutes ); - } else { - target->add_effect( effect_source( z ), effect_bleed, 15_minutes, bodypart_id( "head" ) ); - } - + target->make_bleed( effect_source( z ), bodypart_id( "head" ), 15_minutes ); } else { target->add_msg_player_or_npc( _( "The %1$s slashes at your %2$s, but glances off your armor!" ), _( "The %1$s slashes at 's %2$s, but glances off armor!" ), @@ -4777,7 +4741,7 @@ bool mattack::riotbot( monster *z ) handcuffs.set_var( "HANDCUFFS_Y", foe->posy() ); const bool is_uncanny = foe->has_active_bionic( bio_uncanny_dodge ) && - foe->get_power_level() > 74_kJ && + foe->get_power_level() > bio_uncanny_dodge.obj().power_trigger && !one_in( 3 ); ///\EFFECT_DEX >13 allows and increases chance to slip out of riot bot handcuffs const bool is_dex = foe->dex_cur > 13 && !one_in( foe->dex_cur - 11 ); @@ -4785,7 +4749,7 @@ bool mattack::riotbot( monster *z ) if( is_uncanny || is_dex ) { if( is_uncanny ) { - foe->mod_power_level( -75_kJ ); + foe->mod_power_level( -bio_uncanny_dodge->power_trigger ); } add_msg( m_good, @@ -4901,18 +4865,17 @@ bool mattack::evolve_kill_strike( monster *z ) } z->moves -= 100; - const bool uncanny = target->uncanny_dodge(); - if( uncanny || dodge_check( z, target ) ) { + + if( dodge_check( z, target ) ) { game_message_type msg_type = target->is_avatar() ? m_warning : m_info; target->add_msg_player_or_npc( msg_type, _( "The %s lunges at you, but you dodge!" ), _( "The %s lunges at , but they dodge!" ), z->name() ); - if( !uncanny ) { - target->on_dodge( z, z->type->melee_skill ); - target->add_msg_player_or_npc( msg_type, _( "The %s lunges at you, but you dodge!" ), - _( "The %s lunges at , but they dodge!" ), - z->name() ); - } + + target->on_dodge( z, z->type->melee_skill ); + target->add_msg_player_or_npc( msg_type, _( "The %s lunges at you, but you dodge!" ), + _( "The %s lunges at , but they dodge!" ), + z->name() ); return true; } tripoint const target_pos = target->pos(); @@ -5171,10 +5134,6 @@ bool mattack::bio_op_takedown( monster *z ) } z->moves -= 100; - if( target->uncanny_dodge() ) { - return true; - } - // Can we dodge the attack? Uses player dodge function % chance (melee.cpp) if( dodge_check( z, target ) ) { target->add_msg_player_or_npc( _( "You dodge it!" ), @@ -5265,10 +5224,6 @@ bool mattack::bio_op_impale( monster *z ) } z->moves -= 100; - if( target->uncanny_dodge() ) { - return true; - } - // Can we dodge the attack? Uses player dodge function % chance (melee.cpp) if( dodge_check( z, target ) ) { target->add_msg_player_or_npc( _( "You dodge it!" ), @@ -5291,7 +5246,7 @@ bool mattack::bio_op_impale( monster *z ) // Handle mons earlier - less to check for target->deal_damage( z, bodypart_id( "torso" ), damage_instance( damage_type::STAB, dam ) ); if( do_bleed ) { - target->add_effect( effect_bleed, rng( 3_minutes, 10_minutes ), bodypart_id( "torso" ), true ); + target->make_bleed( effect_source( z ), bodypart_id( "torso" ), rng( 3_minutes, 10_minutes ) ); } if( seen ) { add_msg( _( "The %1$s impales %2$s!" ), z->name(), target->disp_name() ); @@ -5312,7 +5267,7 @@ bool mattack::bio_op_impale( monster *z ) target->add_msg_if_player( m_bad, _( "and deals %d damage!" ), t_dam ); if( do_bleed ) { - target->as_character()->make_bleed( effect_source( z ), hit, rng( 75_turns, 125_turns ), 1, true ); + target->make_bleed( effect_source( z ), hit, rng( 75_turns, 125_turns ) ); } } else { target->add_msg_player_or_npc( _( "but fails to penetrate your armor!" ), @@ -5352,10 +5307,6 @@ bool mattack::bio_op_disarm( monster *z ) } z->moves -= 100; - if( target->uncanny_dodge() ) { - return true; - } - // Can we dodge the attack? Uses player dodge function % chance (melee.cpp) if( dodge_check( z, target ) ) { target->add_msg_player_or_npc( _( "You dodge it!" ), @@ -5706,7 +5657,6 @@ bool mattack::stretch_attack( monster *z ) return false; } - int dam = rng( 5, 10 ); z->moves -= 100; map &here = get_map(); for( auto &pnt : here.find_clear_path( z->pos(), target->pos() ) ) { @@ -5723,7 +5673,8 @@ bool mattack::stretch_attack( monster *z ) _( "The %s thrusts its arm at you, stretching to reach you from afar." ), _( "The %s thrusts its arm at ." ), z->name() ); - if( dodge_check( z, target ) || target->uncanny_dodge() ) { + + if( dodge_check( z, target ) ) { target->add_msg_player_or_npc( msg_type, _( "You evade the stretched arm and it sails past you!" ), _( " evades the stretched arm!" ) ); target->on_dodge( z, z->type->melee_skill ); @@ -5732,9 +5683,11 @@ bool mattack::stretch_attack( monster *z ) return true; } - const bodypart_id hit = target->get_random_body_part(); - dam = target->deal_damage( z, hit, damage_instance( damage_type::STAB, dam ) ).total_damage(); + bodypart_id hit = target->get_random_body_part(); + damage_instance dam_inst = damage_instance( damage_type::STAB, rng( 5, 10 ) ); + target->block_hit( z, hit, dam_inst ); + int dam = target->deal_damage( z, hit, dam_inst ).total_damage(); if( dam > 0 ) { game_message_type msg_type = target->is_avatar() ? m_bad : m_info; target->add_msg_player_or_npc( msg_type, @@ -5819,6 +5772,11 @@ bool mattack::doot( monster *z ) bool mattack::dodge_check( monster *z, Creature *target ) { + // If successfully uncanny dodged, no need to calculate dodge chance + if( target->uncanny_dodge() ) { + return true; + } + ///\EFFECT_DODGE increases chance of dodging, vs their melee skill float dodge = std::max( target->get_dodge() - rng( 0, z->get_hit() ), 0.0f ); return dodge > 0.0 && rng( 0, 10000 ) < 10000 / ( 1 + 99 * std::exp( -.6 * dodge ) ); diff --git a/src/mondeath.cpp b/src/mondeath.cpp index a23e51f0b22d3..1d07aa007599d 100644 --- a/src/mondeath.cpp +++ b/src/mondeath.cpp @@ -49,42 +49,10 @@ #include "value_ptr.h" #include "viewer.h" -static const efftype_id effect_amigara( "amigara" ); -static const efftype_id effect_boomered( "boomered" ); -static const efftype_id effect_controlled( "controlled" ); -static const efftype_id effect_darkness( "darkness" ); -static const efftype_id effect_glowing( "glowing" ); static const efftype_id effect_no_ammo( "no_ammo" ); -static const efftype_id effect_rat( "rat" ); -static const json_character_flag json_flag_PRED1( "PRED1" ); -static const json_character_flag json_flag_PRED2( "PRED2" ); -static const json_character_flag json_flag_PRED3( "PRED3" ); -static const json_character_flag json_flag_PRED4( "PRED4" ); - -static const itype_id itype_processor( "processor" ); - -static const species_id species_SLIME( "SLIME" ); static const species_id species_ZOMBIE( "ZOMBIE" ); -static const mtype_id mon_blob( "mon_blob" ); -static const mtype_id mon_blob_brain( "mon_blob_brain" ); -static const mtype_id mon_blob_small( "mon_blob_small" ); -static const mtype_id mon_breather( "mon_breather" ); -static const mtype_id mon_breather_hub( "mon_breather_hub" ); -static const mtype_id mon_creeper_hub( "mon_creeper_hub" ); -static const mtype_id mon_creeper_vine( "mon_creeper_vine" ); -static const mtype_id mon_giant_cockroach_nymph( "mon_giant_cockroach_nymph" ); -static const mtype_id mon_halfworm( "mon_halfworm" ); -static const mtype_id mon_sewer_rat( "mon_sewer_rat" ); -static const mtype_id mon_thing( "mon_thing" ); -static const mtype_id mon_zombie_dancer( "mon_zombie_dancer" ); -static const mtype_id mon_zombie_hulk( "mon_zombie_hulk" ); - -static const trait_id trait_KILLER( "KILLER" ); -static const trait_id trait_PACIFIST( "PACIFIST" ); -static const trait_id trait_PSYCHOPATH( "PSYCHOPATH" ); - void mdeath::normal( monster &z ) { if( z.no_corpse_quiet ) { @@ -108,18 +76,10 @@ void mdeath::normal( monster &z ) z.bleed(); // leave some blood if we have to - if( !pulverized ) { - make_mon_corpse( z, static_cast( std::floor( corpse_damage * itype::damage_scale ) ) ); - } - // if mdeath::splatter was set along normal makes sure it is not called twice - bool splatt = false; - for( const auto &deathfunction : z.type->dies ) { - if( deathfunction == mdeath::splatter ) { - splatt = true; - } - } - if( !splatt ) { + if( pulverized ) { splatter( z ); + } else { + make_mon_corpse( z, static_cast( std::floor( corpse_damage * itype::damage_scale ) ) ); } } } @@ -174,13 +134,6 @@ void mdeath::splatter( monster &z ) const int max_hp = std::max( z.get_hp_max(), 1 ); const float overflow_damage = std::max( -z.get_hp(), 0 ); const float corpse_damage = 2.5 * overflow_damage / max_hp; - bool pulverized = corpse_damage > 5 && overflow_damage > z.get_hp_max(); - // make sure that full splatter happens when this is a set death function, not part of normal - for( const auto &deathfunction : z.type->dies ) { - if( deathfunction == mdeath::splatter ) { - pulverized = true; - } - } const field_type_id type_blood = z.bloodType(); const field_type_id type_gib = z.gibType(); @@ -190,7 +143,7 @@ void mdeath::splatter( monster &z ) const auto area = here.points_in_radius( z.pos(), 1 ); int number_of_gibs = std::min( std::floor( corpse_damage ) - 1, 1 + max_hp / 5.0f ); - if( pulverized && z.type->size >= creature_size::medium ) { + if( z.type->size >= creature_size::medium ) { number_of_gibs += rng( 1, 6 ); sfx::play_variant_sound( "mon_death", "zombie_gibbed", sfx::get_heard_volume( z.pos() ) ); } @@ -207,7 +160,7 @@ void mdeath::splatter( monster &z ) // limit gibbing to 15% gibbed_weight = std::min( gibbed_weight, z_weight * 15 / 100 ); - if( pulverized && gibbable ) { + if( gibbable ) { float overflow_ratio = overflow_damage / max_hp + 1.0f; int gib_distance = std::round( rng( 2, 4 ) ); for( const auto &entry : *z.type->harvest ) { @@ -241,388 +194,11 @@ void mdeath::splatter( monster &z ) } } -void mdeath::acid( monster &z ) -{ - if( get_player_view().sees( z ) ) { - if( z.type->dies.size() == - 1 ) { //If this death function is the only function. The corpse gets dissolved. - add_msg( m_mixed, _( "The %s's body dissolves into acid." ), z.name() ); - } else { - add_msg( m_warning, _( "The %s's body leaks acid." ), z.name() ); - } - } - get_map().add_field( z.pos(), fd_acid, 3 ); -} - -void mdeath::boomer( monster &z ) -{ - map &here = get_map(); - std::string explode = string_format( _( "a %s explode!" ), z.name() ); - sounds::sound( z.pos(), 24, sounds::sound_t::combat, explode, false, "explosion", "small" ); - for( const tripoint &dest : here.points_in_radius( z.pos(), 1 ) ) { // *NOPAD* - here.bash( dest, 10 ); - if( monster *const target = g->critter_at( dest ) ) { - target->stumble(); - target->moves -= 250; - } - } - - Character &player_character = get_player_character(); - if( rl_dist( z.pos(), player_character.pos() ) == 1 ) { - player_character.add_env_effect( effect_boomered, bodypart_id( "eyes" ), 2, 24_turns ); - } - - here.propagate_field( z.pos(), fd_bile, 15, 1 ); -} - -void mdeath::boomer_glow( monster &z ) -{ - std::string explode = string_format( _( "a %s explode!" ), z.name() ); - sounds::sound( z.pos(), 24, sounds::sound_t::combat, explode, false, "explosion", "small" ); - map &here = get_map(); - - for( const tripoint &dest : here.points_in_radius( z.pos(), 1 ) ) { // *NOPAD* - here.bash( dest, 10 ); - if( monster *const target = g->critter_at( dest ) ) { - target->stumble(); - target->moves -= 250; - } - if( Creature *const critter = g->critter_at( dest ) ) { - critter->add_env_effect( effect_boomered, bodypart_id( "eyes" ), 5, 25_turns ); - for( int i = 0; i < rng( 2, 4 ); i++ ) { - const bodypart_id &bp = critter->random_body_part(); - critter->add_env_effect( effect_glowing, bp, 4, 4_minutes ); - if( critter->has_effect( effect_glowing ) ) { - break; - } - } - } - } - - here.propagate_field( z.pos(), fd_bile, 30, 2 ); -} - -void mdeath::kill_vines( monster &z ) -{ - const std::vector vines = g->get_creatures_if( [&]( const Creature & critter ) { - const monster *const mon = dynamic_cast( &critter ); - return mon && mon->type->id == mon_creeper_vine; - } ); - const std::vector hubs = g->get_creatures_if( [&]( const Creature & critter ) { - const monster *const mon = dynamic_cast( &critter ); - return mon && mon != &z && mon->type->id == mon_creeper_hub; - } ); - - for( Creature *const vine : vines ) { - int dist = rl_dist( vine->pos(), z.pos() ); - bool closer = false; - for( const Creature *j : hubs ) { - if( rl_dist( vine->pos(), j->pos() ) < dist ) { - break; - } - } - if( !closer ) { // TODO: closer variable is not being updated and is always false! - vine->die( &z ); - } - } -} - -void mdeath::vine_cut( monster &z ) -{ - map &here = get_map(); - std::vector vines; - for( const tripoint &tmp : here.points_in_radius( z.pos(), 1 ) ) { - if( tmp == z.pos() ) { - continue; // Skip ourselves - } - if( monster *const neighbor = g->critter_at( tmp ) ) { - if( neighbor->type->id == mon_creeper_vine ) { - vines.push_back( neighbor ); - } - } - } - - for( auto &vine : vines ) { - bool found_neighbor = false; - for( const tripoint &dest : here.points_in_radius( vine->pos(), 1 ) ) { - if( dest != z.pos() ) { - // Not the dying vine - if( monster *const v = g->critter_at( dest ) ) { - if( v->type->id == mon_creeper_hub || v->type->id == mon_creeper_vine ) { - found_neighbor = true; - break; - } - } - } - } - if( !found_neighbor ) { - vine->die( &z ); - } - } -} - -void mdeath::triffid_heart( monster &z ) -{ - add_msg_if_player_sees( z, m_warning, _( "The surrounding roots begin to crack and crumble." ) ); - get_timed_events().add( timed_event_type::ROOTS_DIE, calendar::turn + 10_minutes ); -} - -void mdeath::fungus( monster &z ) -{ - //~ the sound of a fungus dying - sounds::sound( z.pos(), 10, sounds::sound_t::combat, _( "Pouf!" ), false, "misc", "puff" ); - - map &here = get_map(); - fungal_effects fe( *g, here ); - for( const tripoint &sporep : here.points_in_radius( z.pos(), 1 ) ) { // *NOPAD* - if( here.impassable( sporep ) ) { - continue; - } - // z is dead, don't credit it with the kill - // Maybe credit z's killer? - fe.fungalize( sporep, nullptr, 0.25 ); - } -} - -void mdeath::disintegrate( monster &z ) -{ - add_msg_if_player_sees( z, m_good, _( "The %s disintegrates!" ), z.name() ); -} - -void mdeath::worm( monster &z ) -{ - if( z.type->dies.size() == 1 ) { - add_msg_if_player_sees( z, m_good, _( "The %s splits in two!" ), z.name() ); - } else { - add_msg_if_player_sees( z, m_warning, _( "Two worms crawl out of the %s's corpse." ), z.name() ); - } - - int worms = 2; - while( worms > 0 && g->place_critter_around( mon_halfworm, z.pos(), 1 ) ) { - worms--; - } -} - void mdeath::disappear( monster &z ) { add_msg_if_player_sees( z, m_good, _( "The %s disappears." ), z.name() ); } -void mdeath::guilt( monster &z ) -{ - const int MAX_GUILT_DISTANCE = 5; - int kill_count = g->get_kill_tracker().kill_count( z.type->id ); - int maxKills = 100; // this is when the player stop caring altogether. - - // different message as we kill more of the same monster - std::string msg = _( "You feel guilty for killing %s." ); // default guilt message - game_message_type msgtype = m_bad; // default guilt message type - std::map guilt_tresholds; - guilt_tresholds[75] = _( "You feel ashamed for killing %s." ); - guilt_tresholds[50] = _( "You regret killing %s." ); - guilt_tresholds[25] = _( "You feel remorse for killing %s." ); - - Character &player_character = get_player_character(); - if( player_character.has_trait( trait_PSYCHOPATH ) || - player_character.has_trait_flag( json_flag_PRED3 ) || - player_character.has_trait_flag( json_flag_PRED4 ) || player_character.has_trait( trait_KILLER ) ) { - return; - } - if( rl_dist( z.pos(), player_character.pos() ) > MAX_GUILT_DISTANCE ) { - // Too far away, we can deal with it. - return; - } - if( z.get_hp() >= 0 ) { - // We probably didn't kill it - return; - } - if( kill_count >= maxKills ) { - // player no longer cares - if( kill_count == maxKills ) { - //~ Message after killing a lot of monsters which would normally affect the morale negatively. %s is the monster name, it will be pluralized with a number of 100. - add_msg( m_good, _( "After killing so many bloody %s you no longer care " - "about their deaths anymore." ), z.name( maxKills ) ); - } - return; - } else if( ( player_character.has_trait_flag( json_flag_PRED1 ) ) || - ( player_character.has_trait_flag( json_flag_PRED2 ) ) ) { - msg = ( _( "Culling the weak is distasteful, but necessary." ) ); - msgtype = m_neutral; - } else { - for( auto &guilt_treshold : guilt_tresholds ) { - if( kill_count >= guilt_treshold.first ) { - msg = guilt_treshold.second; - break; - } - } - } - - add_msg( msgtype, msg, z.name() ); - - int moraleMalus = -50 * ( 1.0 - ( static_cast( kill_count ) / maxKills ) ); - int maxMalus = -250 * ( 1.0 - ( static_cast( kill_count ) / maxKills ) ); - time_duration duration = 30_minutes * ( 1.0 - ( static_cast( kill_count ) / maxKills ) ); - time_duration decayDelay = 3_minutes * ( 1.0 - ( static_cast( kill_count ) / maxKills ) ); - if( z.type->in_species( species_ZOMBIE ) ) { - moraleMalus /= 10; - if( player_character.has_trait( trait_PACIFIST ) ) { - moraleMalus *= 5; - } else if( player_character.has_trait_flag( json_flag_PRED1 ) ) { - moraleMalus /= 4; - } else if( player_character.has_trait_flag( json_flag_PRED2 ) ) { - moraleMalus /= 5; - } - } - player_character.add_morale( MORALE_KILLED_MONSTER, moraleMalus, maxMalus, duration, decayDelay ); - -} - -void mdeath::blobsplit( monster &z ) -{ - int speed = z.get_speed() - rng( 30, 50 ); - get_map().spawn_item( z.pos(), "slime_scrap", 1, 0, calendar::turn ); - bool sees_blob = get_player_view().sees( z ); - if( z.get_speed() <= 0 && sees_blob ) { - // TODO: Add vermin-tagged tiny versions of the splattered blob :) - add_msg( m_good, _( "The %s splatters apart." ), z.name() ); - return; - } - if( sees_blob ) { - if( z.type->dies.size() == 1 ) { - add_msg( m_good, _( "The %s splits in two!" ), z.name() ); - } else { - add_msg( m_bad, _( "Two small slimes slither out of the corpse." ) ); - } - } - - const mtype_id &child = speed < 50 ? mon_blob_small : mon_blob; - for( int s = 0; s < 2; s++ ) { - if( monster *const blob = g->place_critter_around( child, z.pos(), 1 ) ) { - blob->make_ally( z ); - blob->set_speed_base( speed ); - blob->set_hp( speed ); - } - } -} - -void mdeath::brainblob( monster &z ) -{ - for( monster &critter : g->all_monsters() ) { - if( critter.type->in_species( species_SLIME ) && critter.type->id != mon_blob_brain ) { - critter.remove_effect( effect_controlled ); - } - } - blobsplit( z ); -} - -void mdeath::jackson( monster &z ) -{ - bool music_stopped = false; - for( monster &critter : g->all_monsters() ) { - if( critter.type->id == mon_zombie_dancer ) { - critter.poly( mon_zombie_hulk ); - critter.remove_effect( effect_controlled ); - } - music_stopped = true; - } - if( music_stopped ) { - add_msg_if_player_sees( z, m_warning, _( "The music stops!" ) ); - } -} - -void mdeath::melt( monster &z ) -{ - add_msg_if_player_sees( z, m_good, _( "The %s melts away." ), z.name() ); -} - -void mdeath::amigara( monster &z ) -{ - const bool has_others = g->get_creature_if( [&]( const Creature & critter ) { - if( const monster *const candidate = dynamic_cast( &critter ) ) { - return candidate->type == z.type; - } - return false; - } ); - if( has_others ) { - return; - } - - // We were the last! - Character &player_character = get_player_character(); - if( player_character.has_effect( effect_amigara ) ) { - player_character.remove_effect( effect_amigara ); - add_msg( _( "Your obsession with the fault fades away…" ) ); - } - - get_map().spawn_artifact( z.pos(), relic_procgen_id( "netherum_tunnels" ) ); -} - -void mdeath::thing( monster &z ) -{ - g->place_critter_at( mon_thing, z.pos() ); -} - -void mdeath::explode( monster &z ) -{ - int size = 0; - switch( z.type->size ) { - case creature_size::tiny: - size = 4; - break; - case creature_size::small: - size = 8; - break; - case creature_size::medium: - size = 14; - break; - case creature_size::large: - size = 20; - break; - case creature_size::huge: - size = 26; - break; - case creature_size::num_sizes: - debugmsg( "ERROR: Invalid Creature size class." ); - break; - } - explosion_handler::explosion( z.pos(), size ); -} - -void mdeath::focused_beam( monster &z ) -{ - map &here = get_map(); - map_stack items = here.i_at( z.pos() ); - for( map_stack::iterator it = items.begin(); it != items.end(); ) { - if( it->typeId() == itype_processor ) { - it = items.erase( it ); - } else { - ++it; - } - } - - if( !z.inv.empty() ) { - add_msg_if_player_sees( z, m_warning, - _( "As the final light is destroyed, it erupts in a blinding flare!" ) ); - item &settings = z.inv[0]; - - point p2( z.posx() + settings.get_var( "SL_SPOT_X", 0 ), z.posy() + settings.get_var( "SL_SPOT_Y", - 0 ) ); - tripoint p( p2, z.posz() ); - - std::vector traj = line_to( z.pos(), p, 0, 0 ); - for( auto &elem : traj ) { - if( !here.is_transparent( elem ) ) { - break; - } - here.add_field( elem, fd_dazzling, 2 ); - } - } - - z.inv.clear(); - - explosion_handler::explosion( z.pos(), 8 ); -} - void mdeath::broken( monster &z ) { // Bail out if flagged (simulates eyebot flying away) @@ -688,105 +264,6 @@ void mdeath::broken( monster &z ) } } -void mdeath::ratking( monster &z ) -{ - Character &player_character = get_player_character(); - player_character.remove_effect( effect_rat ); - add_msg_if_player_sees( z, m_warning, _( "Rats suddenly swarm into view." ) ); - - for( int rats = 0; rats < 7; rats++ ) { - g->place_critter_around( mon_sewer_rat, z.pos(), 1 ); - } -} - -void mdeath::darkman( monster &z ) -{ - Character &player_character = get_player_character(); - player_character.remove_effect( effect_darkness ); - add_msg_if_player_sees( z, m_good, _( "The %s melts away." ), z.name() ); -} - -void mdeath::gas( monster &z ) -{ - std::string explode = string_format( _( "a %s explode!" ), z.name() ); - sounds::sound( z.pos(), 24, sounds::sound_t::combat, explode, false, "explosion", "small" ); - get_map().emit_field( z.pos(), emit_id( "emit_toxic_blast" ) ); -} - -void mdeath::smokeburst( monster &z ) -{ - std::string explode = string_format( _( "a %s explode!" ), z.name() ); - sounds::sound( z.pos(), 24, sounds::sound_t::combat, explode, false, "explosion", "small" ); - get_map().emit_field( z.pos(), emit_id( "emit_smoke_blast" ) ); -} - -void mdeath::tearburst( monster &z ) -{ - std::string explode = string_format( _( "a %s explode!" ), z.name() ); - sounds::sound( z.pos(), 24, sounds::sound_t::combat, explode, false, "explosion", "small" ); - get_map().emit_field( z.pos(), emit_id( "emit_tear_gas_blast" ) ); -} - -void mdeath::fungalburst( monster &z ) -{ - map &here = get_map(); - // If the fungus died from anti-fungal poison, don't pouf - if( here.get_field_intensity( z.pos(), fd_fungicidal_gas ) ) { - add_msg_if_player_sees( z, m_good, _( "The %s inflates and melts away." ), z.name() ); - return; - } - - std::string explode = string_format( _( "a %s explodes!" ), z.name() ); - sounds::sound( z.pos(), 24, sounds::sound_t::combat, explode, false, "explosion", "small" ); - here.emit_field( z.pos(), emit_id( "emit_fungal_blast" ) ); -} - -void mdeath::jabberwock( monster &z ) -{ - Character *ch = dynamic_cast( z.get_killer() ); - - bool vorpal = ch && ch->is_player() && - ch->weapon.has_flag( STATIC( flag_id( "DIAMOND" ) ) ) && - ch->weapon.volume() > 750_ml; - - if( vorpal && !ch->weapon.has_technique( matec_id( "VORPAL" ) ) ) { - if( ch->sees( z ) ) { - ch->add_msg_if_player( m_info, - //~ %s is the possessive form of the monster's name - _( "As the flames in %s eyes die out, your weapon seems to shine slightly brighter." ), - z.disp_name( true ) ); - } - ch->weapon.add_technique( matec_id( "VORPAL" ) ); - } - - mdeath::normal( z ); -} - -void mdeath::gameover( monster &z ) -{ - add_msg( m_bad, _( "The %s was destroyed! GAME OVER!" ), z.name() ); - get_player_character().set_part_hp_cur( bodypart_id( "torso" ), 0 ); -} - -void mdeath::kill_breathers( monster &/*z*/ ) -{ - for( monster &critter : g->all_monsters() ) { - const mtype_id &monID = critter.type->id; - if( monID == mon_breather_hub || monID == mon_breather ) { - critter.die( nullptr ); - } - } -} - -void mdeath::broken_ammo( monster &z ) -{ - add_msg_if_player_sees( z.pos(), m_info, - //~ %s is the possessive form of the monster's name - _( "The %s's interior compartment sizzles with destructive energy." ), - z.name() ); - mdeath::broken( z ); -} - void make_mon_corpse( monster &z, int damageLvl ) { item corpse = item::make_corpse( z.type->id, calendar::turn, z.unique_name, z.get_upgrade_time() ); @@ -801,65 +278,3 @@ void make_mon_corpse( monster &z, int damageLvl ) } get_map().add_item_or_charges( z.pos(), corpse ); } - -void mdeath::preg_roach( monster &z ) -{ - int num_roach = rng( 1, 3 ); - while( num_roach > 0 && g->place_critter_around( mon_giant_cockroach_nymph, z.pos(), 1 ) ) { - num_roach--; - add_msg_if_player_sees( z, m_warning, - _( "A cockroach nymph crawls out of the pregnant giant cockroach corpse." ) ); - } -} - -void mdeath::fireball( monster &z ) -{ - if( one_in( 10 ) ) { - get_map().propagate_field( z.pos(), fd_fire, 15, 3 ); - std::string explode = string_format( _( "an explosion of tank of the %s's flamethrower!" ), - z.name() ); - sounds::sound( z.pos(), 24, sounds::sound_t::combat, explode, false, "explosion", "default" ); - add_msg( m_good, _( "I love the smell of burning zed in the morning." ) ); - } else { - normal( z ); - } -} - -void mdeath::conflagration( monster &z ) -{ - map &here = get_map(); - for( const auto &dest : here.points_in_radius( z.pos(), 1 ) ) { - here.propagate_field( dest, fd_fire, 18, 3 ); - } - const std::string explode = string_format( _( "a %s explode!" ), z.name() ); - sounds::sound( z.pos(), 24, sounds::sound_t::combat, explode, false, "explosion", "small" ); - -} - -void mdeath::necro_boomer( monster &z ) -{ - map &here = get_map(); - std::string explode = string_format( _( "a %s explode!" ), z.name() ); - sounds::sound( z.pos(), 24, sounds::sound_t::combat, explode, false, "explosion", "small" ); - for( const tripoint &aoe : here.points_in_radius( z.pos(), 10 ) ) { - for( item &corpse : here.i_at( aoe ) ) { - const mtype *mt = corpse.get_mtype(); - if( !( corpse.is_corpse() && corpse.can_revive() && corpse.active && - mt->has_flag( MF_REVIVES ) && mt->in_species( species_ZOMBIE ) && - !mt->has_flag( MF_NO_NECRO ) ) ) { - continue; - } - if( g->revive_corpse( aoe, corpse ) ) { - here.i_rem( aoe, &corpse ); - break; - } - } - } - for( const tripoint &aoe : here.points_in_radius( z.pos(), 10 ) ) { - monster *mon = g->critter_at( aoe ); - if( mon != nullptr && one_in( 10 ) ) { - mon->allow_upgrade(); - mon->try_upgrade( false ); - } - } -} diff --git a/src/mondeath.h b/src/mondeath.h index a34c3b67088f4..a92d38f4d21da 100644 --- a/src/mondeath.h +++ b/src/mondeath.h @@ -10,81 +10,10 @@ namespace mdeath void normal( monster &z ); // Overkill splatter (also part of normal under conditions) void splatter( monster &z ); -// Acid instead of a body -void acid( monster &z ); -// Explodes in vomit :3 -void boomer( monster &z ); -// Explodes in vomit :3 -void boomer_glow( monster &z ); -// Kill all nearby vines -void kill_vines( monster &z ); -// Kill adjacent vine if it's cut -void vine_cut( monster &z ); -// Destroy all roots -void triffid_heart( monster &z ); -// Explodes in spores D: -void fungus( monster &z ); -// Falls apart -void disintegrate( monster &z ); -// Screams loudly -void shriek( monster &z ); -// Wolf's howling -void howl( monster &z ); -// Rattles like a rattlesnake -void rattle( monster &z ); -// Spawns 2 half-worms -void worm( monster &z ); // Hallucination disappears void disappear( monster &z ); -// Morale penalty -void guilt( monster &z ); -// Frees blobs, redirects to blobsplit -void brainblob( monster &z ); -// Creates more blobs -void blobsplit( monster &z ); -// Reverts dancers -void jackson( monster &z ); -// Normal death, but melts -void melt( monster &z ); -// Removes hypnosis if last one -void amigara( monster &z ); -// Turn into a full thing -void thing( monster &z ); -// Damaging explosion -void explode( monster &z ); -// Blinding ray -void focused_beam( monster &z ); // Broken robot drop void broken( monster &z ); -// Cure verminitis -void ratking( monster &z ); -// Sight returns to normal -void darkman( monster &z ); -// Explodes in toxic gas -void gas( monster &z ); -// All breathers die -void kill_breathers( monster &z ); -// Explode like a huge smoke bomb. -void smokeburst( monster &z ); -// Explode like a huge tear gas bomb. -void tearburst( monster &z ); -// Explode releasing fungal haze. -void fungalburst( monster &z ); -// Snicker-snack! -void jabberwock( monster &z ); -// Breaks ammo and then itself -void broken_ammo( monster &z ); -// Spawns 1-3 roach nymphs -void preg_roach( monster &z ); -// Explodes in fire -void fireball( monster &z ); -// Similar to above but bigger and guaranteed. -void conflagration( monster &z ); -// raises and then upgrades all zombies in a radius -void necro_boomer( monster &z ); - -// Game over! Defense mode -void gameover( monster &z ); } //namespace mdeath void make_mon_corpse( monster &z, int damageLvl ); diff --git a/src/monexamine.cpp b/src/monexamine.cpp index 29aa3a909ef21..4067d7a4ee665 100644 --- a/src/monexamine.cpp +++ b/src/monexamine.cpp @@ -143,7 +143,7 @@ bool monexamine::pet_menu( monster &z ) if( z.has_flag( MF_MILKABLE ) ) { amenu.addentry( milk, true, 'm', _( "Milk %s" ), pet_name ); } - if( z.has_flag( MF_SHEARABLE ) ) { + if( z.shearable() ) { bool available = true; if( season_of_year( calendar::turn ) == WINTER ) { amenu.addentry( shear, false, 'S', @@ -157,7 +157,7 @@ bool monexamine::pet_menu( monster &z ) if( player_character.has_quality( qual_SHEAR, 1 ) ) { amenu.addentry( shear, true, 'S', _( "Shear %s." ), pet_name ); } else { - amenu.addentry( shear, false, 'S', _( "You cannot shear this animal without shears." ) ); + amenu.addentry( shear, false, 'S', _( "You cannot shear this animal without a shearing tool." ) ); } } } @@ -293,20 +293,20 @@ bool monexamine::pet_menu( monster &z ) void monexamine::shear_animal( monster &z ) { - Character &player_character = get_player_character(); - const int moves = to_moves( time_duration::from_minutes( 30 / player_character.max_quality( - qual_SHEAR ) ) ); + Character &guy = get_player_character(); + if( !guy.has_quality( qual_SHEAR ) ) { + add_msg( _( "You don't have a shearing tool." ) ); + } - player_character.assign_activity( activity_id( "ACT_SHEAR" ), moves, -1 ); - player_character.activity.coords.push_back( get_map().getabs( z.pos() ) ); - // pin the sheep in place if it isn't already - if( !z.has_effect( effect_tied ) ) { + // was monster already tied before shearing + const bool monster_tied = z.has_effect( effect_tied ); + + // tie the critter so it doesn't move while being sheared + if( !monster_tied ) { z.add_effect( effect_tied, 1_turns, true ); - player_character.activity.str_values.emplace_back( "temp_tie" ); } - player_character.activity.targets.emplace_back( player_character, - player_character.best_quality_item( qual_SHEAR ) ); - add_msg( _( "You start shearing the %s." ), z.get_name() ); + + guy.assign_activity( player_activity( shearing_activity_actor( z.pos(), !monster_tied ) ) ); } static item_location pet_armor_loc( monster &z ) diff --git a/src/monmove.cpp b/src/monmove.cpp index aae3f1882c41d..4893fd7b667e4 100644 --- a/src/monmove.cpp +++ b/src/monmove.cpp @@ -73,8 +73,6 @@ static const species_id species_ZOMBIE( "ZOMBIE" ); static const std::string flag_AUTODOC_COUCH( "AUTODOC_COUCH" ); static const std::string flag_LIQUID( "LIQUID" ); -static constexpr int MONSTER_FOLLOW_DIST = 8; - bool monster::wander() { return ( goal == pos() && patrol_route_abs_ms.empty() ); @@ -853,7 +851,9 @@ void monster::move() } if( ( current_attitude == MATT_IGNORE && patrol_route_abs_ms.empty() ) || - ( current_attitude == MATT_FOLLOW && rl_dist( pos(), goal ) <= MONSTER_FOLLOW_DIST ) ) { + ( ( current_attitude == MATT_FOLLOW || + ( has_flag( MF_KEEP_DISTANCE ) && !( current_attitude == MATT_FLEE ) ) ) + && rl_dist( pos(), goal ) <= type->tracking_distance ) ) { moves = 0; stumble(); return; @@ -2018,14 +2018,14 @@ void monster::knock_back_to( const tripoint &to ) } map &here = get_map(); + // It's some kind of wall. if( here.impassable( to ) ) { - - // It's some kind of wall. - apply_damage( nullptr, bodypart_id( "torso" ), static_cast( type->size ) ); + const int dam = static_cast( type->size ); + apply_damage( nullptr, bodypart_id( "torso" ), dam ); add_effect( effect_stunned, 2_turns ); if( u_see ) { - add_msg( _( "The %1$s bounces off a %2$s." ), name(), - here.obstacle_name( to ) ); + add_msg( _( "The %1$s bounces off a %2$s and takes %3$d damage." ), name(), + here.obstacle_name( to ), dam ); } } else { // It's no wall diff --git a/src/monster.cpp b/src/monster.cpp index b2dc062840bce..d9d1fb68faa5d 100644 --- a/src/monster.cpp +++ b/src/monster.cpp @@ -87,6 +87,7 @@ static const efftype_id effect_onfire( "onfire" ); static const efftype_id effect_pacified( "pacified" ); static const efftype_id effect_paralyzepoison( "paralyzepoison" ); static const efftype_id effect_poison( "poison" ); +static const efftype_id effect_tpollen( "tpollen" ); static const efftype_id effect_ridden( "ridden" ); static const efftype_id effect_run( "run" ); static const efftype_id effect_stunned( "stunned" ); @@ -109,6 +110,7 @@ static const species_id species_MAMMAL( "MAMMAL" ); static const species_id species_MOLLUSK( "MOLLUSK" ); static const species_id species_NETHER( "NETHER" ); static const species_id species_ROBOT( "ROBOT" ); +static const species_id species_PLANT( "PLANT" ); static const species_id species_ZOMBIE( "ZOMBIE" ); static const trait_id trait_ANIMALDISCORD( "ANIMALDISCORD" ); @@ -119,7 +121,6 @@ static const trait_id trait_BEE( "BEE" ); static const trait_id trait_FLOWERS( "FLOWERS" ); static const trait_id trait_KILLER( "KILLER" ); static const trait_id trait_MYCUS_FRIEND( "MYCUS_FRIEND" ); -static const trait_id trait_PACIFIST( "PACIFIST" ); static const trait_id trait_PHEROMONE_INSECT( "PHEROMONE_INSECT" ); static const trait_id trait_PHEROMONE_MAMMAL( "PHEROMONE_MAMMAL" ); static const trait_id trait_TERRIFYING( "TERRIFYING" ); @@ -1256,6 +1257,10 @@ monster_attitude monster::attitude( const Character *u ) const return MATT_FOLLOW; } + if( has_flag( MF_KEEP_DISTANCE ) && rl_dist( pos(), goal ) < type->tracking_distance ) { + return MATT_FLEE; + } + return MATT_ATTACK; } @@ -1264,6 +1269,11 @@ int monster::hp_percentage() const return get_hp( bodypart_id( "torso" ) ) * 100 / get_hp_max(); } +int monster::get_eff_per() const +{ + return std::min( type->vision_night, type->vision_day ); +} + void monster::process_triggers() { process_trigger( mon_trigger::STALK, [this]() { @@ -1376,7 +1386,7 @@ bool monster::is_immune_effect( const efftype_id &effect ) const } if( effect == effect_bleed ) { - return type->bloodType() == fd_null; + return ( type->bloodType() == fd_null || type->bleed_rate == 0 ); } if( effect == effect_venom_dmg || @@ -1394,6 +1404,10 @@ bool monster::is_immune_effect( const efftype_id &effect ) const !made_of_any( Creature::cmat_flesh ) || type->in_species( species_LEECH_PLANT ); } + if( effect == effect_tpollen ) { + return type->in_species( species_PLANT ); + } + if( effect == effect_stunned ) { return has_flag( MF_STUN_IMMUNE ); } @@ -1441,6 +1455,21 @@ bool monster::is_immune_damage( const damage_type dt ) const } } +void monster::make_bleed( const effect_source &source, const bodypart_id &bp, + time_duration duration, int intensity, bool permanent, bool force, bool defferred ) +{ + if( type->bleed_rate == 0 ) { + return; + } + + duration = ( duration * type->bleed_rate ) / 100; + if( type->in_species( species_ROBOT ) ) { + add_effect( source, effect_dripping_mechanical_fluid, duration, bp ); + } else { + add_effect( source, effect_bleed, duration, bp, permanent, intensity, force, defferred ); + } +} + bool monster::is_dead_state() const { return hp <= 0; @@ -1497,6 +1526,8 @@ bool monster::melee_attack( Creature &target, float accuracy ) } const bool u_see_me = player_character.sees( *this ); + const bool u_see_my_spot = player_character.sees( this->pos() ); + const bool u_see_target = player_character.sees( target ); damage_instance damage = !is_hallucination() ? type->melee_damage : damage_instance(); if( !is_hallucination() && type->melee_dice > 0 ) { @@ -1513,32 +1544,32 @@ bool monster::melee_attack( Creature &target, float accuracy ) if( hitspread < 0 ) { bool target_dodging = target.dodge_roll() > 0.0; // Miss - if( u_see_me && !target.in_sleep_state() ) { + if( u_see_my_spot && !target.in_sleep_state() ) { if( target.is_player() ) { if( target_dodging ) { - add_msg( _( "You dodge %s." ), disp_name() ); + add_msg( _( "You dodge %s." ), u_see_me ? disp_name() : "something" ); } else { - add_msg( _( "The %s misses you." ), name() ); + add_msg( _( "%s misses you." ), u_see_me ? disp_name( false, true ) : "Something" ); } } else if( target.is_npc() && target_dodging ) { add_msg( _( "%1$s dodges %2$s attack." ), - target.disp_name(), name() ); + target.disp_name(), u_see_me ? name() : "something" ); } else { - add_msg( _( "The %1$s misses %2$s!" ), - name(), target.disp_name() ); + add_msg( _( "%1$s misses %2$s!" ), + u_see_me ? disp_name( false, true ) : "Something", target.disp_name() ); } } else if( target.is_player() ) { add_msg( _( "You dodge an attack from an unseen source." ) ); } } else if( is_hallucination() || total_dealt > 0 ) { // Hallucinations always produce messages but never actually deal damage - if( u_see_me ) { + if( u_see_my_spot ) { if( target.is_player() ) { sfx::play_variant_sound( "melee_attack", "monster_melee_hit", sfx::get_heard_volume( target.pos() ) ); sfx::do_player_death_hurt( dynamic_cast( target ), false ); //~ 1$s is attacker name, 2$s is bodypart name in accusative. - add_msg( m_bad, _( "The %1$s hits your %2$s." ), name(), + add_msg( m_bad, _( "%1$s hits your %2$s." ), u_see_me ? disp_name( false, true ) : "Something", body_part_name_accusative( dealt_dam.bp_hit ) ); } else if( target.is_npc() ) { if( has_effect( effect_ridden ) && has_flag( MF_RIDEABLE_MECH ) && @@ -1548,7 +1579,7 @@ bool monster::melee_attack( Creature &target, float accuracy ) total_dealt ); } else { //~ %1$s: attacker name, %2$s: target NPC name, %3$s: bodypart name in accusative - add_msg( _( "The %1$s hits %2$s %3$s." ), name(), + add_msg( _( "%1$s hits %2$s %3$s." ), u_see_me ? disp_name( false, true ) : "Something", target.disp_name( true ), body_part_name_accusative( dealt_dam.bp_hit ) ); } @@ -1558,6 +1589,11 @@ bool monster::melee_attack( Creature &target, float accuracy ) //~ %1$s: name of your mount, %2$s: target creature name, %3$d: damage value add_msg( m_good, _( "Your %1$s hits %2$s for %3$d damage!" ), get_name(), target.disp_name(), total_dealt ); + } + if( !u_see_me && u_see_target ) { + add_msg( _( "Something hits the %1$s!" ), target.disp_name() ); + } else if( !u_see_target ) { + add_msg( _( "The %1$s hits something!" ), name() ); } else { //~ %1$s: attacker name, %2$s: target creature name add_msg( _( "The %1$s hits %2$s!" ), name(), target.disp_name() ); @@ -1570,16 +1606,18 @@ bool monster::melee_attack( Creature &target, float accuracy ) } } else { // No damage dealt - if( u_see_me ) { + if( u_see_my_spot ) { if( target.is_player() ) { //~ 1$s is attacker name, 2$s is bodypart name in accusative, 3$s is armor name - add_msg( _( "The %1$s hits your %2$s, but your %3$s protects you." ), name(), + add_msg( _( "%1$s hits your %2$s, but your %3$s protects you." ), u_see_me ? disp_name( false, + true ) : "Something", body_part_name_accusative( dealt_dam.bp_hit ), target.skin_name() ); } else if( target.is_npc() ) { //~ $1s is monster name, %2$s is that monster target name, //~ $3s is target bodypart name in accusative, $4s is the monster target name, //~ 5$s is target armor name. - add_msg( _( "The %1$s hits %2$s %3$s but is stopped by %4$s %5$s." ), name(), + add_msg( _( "%1$s hits %2$s %3$s but is stopped by %4$s %5$s." ), u_see_me ? disp_name( false, + true ) : "Something", target.disp_name( true ), body_part_name_accusative( dealt_dam.bp_hit ), target.disp_name( true ), @@ -1587,8 +1625,8 @@ bool monster::melee_attack( Creature &target, float accuracy ) } else { //~ $1s is monster name, %2$s is that monster target name, //~ $3s is target armor name. - add_msg( _( "The %1$s hits %2$s but is stopped by its %3$s." ), - name(), + add_msg( _( "%1$s hits %2$s but is stopped by its %3$s." ), + u_see_me ? disp_name( false, true ) : "Something", target.disp_name(), target.skin_name() ); } @@ -2313,22 +2351,19 @@ void monster::die( Creature *nkiller ) if( death_drops && !no_extra_death_drops ) { drop_items_on_death(); } - // TODO: should actually be class Character - player *ch = dynamic_cast( get_killer() ); - if( !is_hallucination() && ch != nullptr ) { - if( ( has_flag( MF_GUILT ) && ch->is_player() ) || ( ch->has_trait( trait_PACIFIST ) && - has_flag( MF_HUMAN ) ) ) { - // has guilt flag or player is pacifist && monster is humanoid - mdeath::guilt( *this ); - } - get_event_bus().send( ch->getID(), type->id ); - if( ch->is_player() && ch->has_trait( trait_KILLER ) ) { - if( one_in( 4 ) ) { - const translation snip = SNIPPET.random_from_category( "killer_on_kill" ).value_or( translation() ); - ch->add_msg_if_player( m_good, "%s", snip ); + if( nkiller != nullptr ) { + // TODO: should actually be class Character + Character *ch = get_killer()->as_character(); + if( !is_hallucination() && ch != nullptr ) { + get_event_bus().send( ch->getID(), type->id ); + if( ch->is_player() && ch->has_trait( trait_KILLER ) ) { + if( one_in( 4 ) ) { + const translation snip = SNIPPET.random_from_category( "killer_on_kill" ).value_or( translation() ); + ch->add_msg_if_player( m_good, "%s", snip ); + } + ch->add_morale( MORALE_KILLER_HAS_KILLED, 5, 10, 6_hours, 4_hours ); + ch->rem_morale( MORALE_KILLER_NEED_TO_KILL ); } - ch->add_morale( MORALE_KILLER_HAS_KILLED, 5, 10, 6_hours, 4_hours ); - ch->rem_morale( MORALE_KILLER_NEED_TO_KILL ); } } if( death_drops ) { @@ -2395,6 +2430,7 @@ void monster::die( Creature *nkiller ) } } mission::on_creature_death( *this ); + // Also, perform our death function if( is_hallucination() || summon_time_limit ) { //Hallucinations always just disappear @@ -2402,9 +2438,32 @@ void monster::die( Creature *nkiller ) return; } - //Not a hallucination, go process the death effects. - for( const auto &deathfunction : type->dies ) { - deathfunction( *this ); + add_msg_if_player_sees( *this, m_good, type->mdeath_effect.death_message.translated(), name() ); + + // drop a corpse, or not + switch( type->mdeath_effect.corpse_type ) { + case mdeath_type::NORMAL: + mdeath::normal( *this ); + break; + case mdeath_type::BROKEN: + mdeath::broken( *this ); + break; + case mdeath_type::SPLATTER: + mdeath::splatter( *this ); + break; + default: + break; + } + + if( type->mdeath_effect.has_effect ) { + //Not a hallucination, go process the death effects. + spell death_spell = type->mdeath_effect.sp.get_spell(); + if( killer != nullptr && type->mdeath_effect.sp.self && + death_spell.is_target_in_range( *this, killer->pos() ) ) { + death_spell.cast_all_effects( *this, killer->pos() ); + } else if( type->mdeath_effect.sp.self ) { + death_spell.cast_all_effects( *this, pos() ); + } } // If our species fears seeing one of our own die, process that diff --git a/src/monster.h b/src/monster.h index 9eaab5efe7168..df063b58ca7d2 100644 --- a/src/monster.h +++ b/src/monster.h @@ -125,6 +125,7 @@ class monster : public Creature int get_hp_max( const bodypart_id & ) const override; int get_hp_max() const override; int hp_percentage() const override; + int get_eff_per() const override; float get_mountable_weight_ratio() const; @@ -168,6 +169,10 @@ class monster : public Creature bool made_of_any( const std::set &ms ) const override; bool made_of( phase_id p ) const; // Returns true if its phase is p + bool shearable() const { + return type->shearing.valid(); + } + bool avoid_trap( const tripoint &pos, const trap &tr ) const override; void serialize( JsonOut &json ) const; @@ -315,6 +320,9 @@ class monster : public Creature bool is_immune_effect( const efftype_id & ) const override; bool is_immune_damage( damage_type ) const override; + void make_bleed( const effect_source &source, const bodypart_id &bp, time_duration duration, + int intensity = 1, bool permanent = false, bool force = false, bool defferred = false ) override; + void absorb_hit( const bodypart_id &bp, damage_instance &dam ) override; bool block_hit( Creature *source, bodypart_id &bp_hit, damage_instance &d ) override; bool melee_attack( Creature &target ); diff --git a/src/monstergenerator.cpp b/src/monstergenerator.cpp index 92cef866b1c4f..352c976c45909 100644 --- a/src/monstergenerator.cpp +++ b/src/monstergenerator.cpp @@ -68,6 +68,25 @@ std::string enum_to_string( mon_trigger data ) abort(); } +template<> +std::string enum_to_string( mdeath_type data ) +{ + switch( data ) { + case mdeath_type::NORMAL: + return "NORMAL"; + case mdeath_type::SPLATTER: + return "SPLATTER"; + case mdeath_type::BROKEN: + return "BROKEN"; + case mdeath_type::NO_CORPSE: + return "NO_CORPSE"; + case mdeath_type::LAST: + break; + } + debugmsg( "Invalid mdeath_type" ); + abort(); +} + template<> std::string enum_to_string( m_flag data ) { @@ -158,6 +177,7 @@ std::string enum_to_string( m_flag data ) case MF_REVIVES_HEALTHY: return "REVIVES_HEALTHY"; case MF_NO_NECRO: return "NO_NECRO"; case MF_PACIFIST: return "PACIFIST"; + case MF_KEEP_DISTANCE: return "KEEP_DISTANCE"; case MF_PUSH_MON: return "PUSH_MON"; case MF_PUSH_VEH: return "PUSH_VEH"; case MF_AVOID_DANGER_1: return "PATH_AVOID_DANGER_1"; @@ -186,6 +206,7 @@ std::string enum_to_string( m_flag data ) case MF_DROPS_AMMO: return "DROPS_AMMO"; case MF_INSECTICIDEPROOF: return "INSECTICIDEPROOF"; case MF_RANGED_ATTACKER: return "RANGED_ATTACKER"; + case MF_CAMOUFLAGE: return "CAMOUFLAGE"; // *INDENT-ON* case m_flag::MF_MAX: break; @@ -242,7 +263,6 @@ MonsterGenerator::MonsterGenerator() init_phases(); init_attack(); init_defense(); - init_death(); } MonsterGenerator::~MonsterGenerator() = default; @@ -471,90 +491,6 @@ void MonsterGenerator::init_phases() phase_map["PLASMA"] = phase_id::PLASMA; } -void MonsterGenerator::init_death() -{ - // Drop a body - death_map["NORMAL"] = &mdeath::normal; - // Explodes in gibs and chunks - death_map["SPLATTER"] = &mdeath::splatter; - // Acid instead of a body - death_map["ACID"] = &mdeath::acid; - // Explodes in vomit :3 - death_map["BOOMER"] = &mdeath::boomer; - // Explodes in glowing vomit :3 - death_map["BOOMER_GLOW"] = &mdeath::boomer_glow; - // Kill all nearby vines - death_map["KILL_VINES"] = &mdeath::kill_vines; - // Kill adjacent vine if it's cut - death_map["VINE_CUT"] = &mdeath::vine_cut; - // Destroy all roots - death_map["TRIFFID_HEART"] = &mdeath::triffid_heart; - // Explodes in spores D: - death_map["FUNGUS"] = &mdeath::fungus; - // Falls apart - death_map["DISINTEGRATE"] = &mdeath::disintegrate; - // Spawns 2 half-worms - death_map["WORM"] = &mdeath::worm; - // Hallucination disappears - death_map["DISAPPEAR"] = &mdeath::disappear; - // Morale penalty - death_map["GUILT"] = &mdeath::guilt; - // Frees blobs, redirects to brainblob() - death_map["BRAINBLOB"] = &mdeath::brainblob; - // Creates more blobs - death_map["BLOBSPLIT"] = &mdeath::blobsplit; - // Reverts dancers - death_map["JACKSON"] = &mdeath::jackson; - // Normal death, but melts - death_map["MELT"] = &mdeath::melt; - // Removes hypnosis if last one - death_map["AMIGARA"] = &mdeath::amigara; - // Turn into a full thing - death_map["THING"] = &mdeath::thing; - // Damaging explosion - death_map["EXPLODE"] = &mdeath::explode; - // Blinding ray - death_map["FOCUSEDBEAM"] = &mdeath::focused_beam; - // Spawns a broken robot. - death_map["BROKEN"] = &mdeath::broken; - // Cure verminitis - death_map["RATKING"] = &mdeath::ratking; - // Sight returns to normal - death_map["DARKMAN"] = &mdeath::darkman; - // Explodes in toxic gas - death_map["GAS"] = &mdeath::gas; - // All breathers die - death_map["KILL_BREATHERS"] = &mdeath::kill_breathers; - // Gives a message about destroying ammo and then calls "BROKEN" - death_map["BROKEN_AMMO"] = &mdeath::broken_ammo; - // Explode like a huge smoke bomb. - death_map["SMOKEBURST"] = &mdeath::smokeburst; - // Explode like a huge tear gas bomb. - death_map["TEARBURST"] = &mdeath::tearburst; - // Explode with a cloud of fungal haze. - death_map["FUNGALBURST"] = &mdeath::fungalburst; - // Snicker-snack! - death_map["JABBERWOCKY"] = &mdeath::jabberwock; - // Game over! Defense mode - death_map["GAMEOVER"] = &mdeath::gameover; - // Spawn some cockroach nymphs - death_map["PREG_ROACH"] = &mdeath::preg_roach; - // Explode in a fireball - death_map["FIREBALL"] = &mdeath::fireball; - // Explode in a huge fireball - death_map["CONFLAGRATION"] = &mdeath::conflagration; - // resurrect all zombies in the area and upgrade all zombies in the area - death_map["NECRO_BOOMER"] = &mdeath::necro_boomer; - - /* Currently Unimplemented */ - // Screams loudly - //death_map["SHRIEK"] = &mdeath::shriek; - // Wolf's howling - //death_map["HOWL"] = &mdeath::howl; - // Rattles like a rattlesnake - //death_map["RATTLE"] = &mdeath::rattle; -} - void MonsterGenerator::init_attack() { add_hardcoded_attack( "NONE", mattack::none ); @@ -759,6 +695,8 @@ void mtype::load( const JsonObject &jo, const std::string &src ) assign( jo, "aggression", agro, strict, -100, 100 ); assign( jo, "morale", morale, strict ); + assign( jo, "tracking_distance", tracking_distance, strict, 8 ); + assign( jo, "mountable_weight_ratio", mountable_weight_ratio, strict ); assign( jo, "attack_cost", attack_cost, strict, 0 ); @@ -776,6 +714,8 @@ void mtype::load( const JsonObject &jo, const std::string &src ) assign( jo, "armor_acid", armor_acid, strict, 0 ); assign( jo, "armor_fire", armor_fire, strict, 0 ); + optional( jo, was_loaded, "bleed_rate", bleed_rate, 100 ); + assign( jo, "vision_day", vision_day, strict, 0 ); assign( jo, "vision_night", vision_night, strict, 0 ); @@ -829,13 +769,18 @@ void mtype::load( const JsonObject &jo, const std::string &src ) assign( jo, "harvest", harvest ); - const auto death_reader = make_flag_reader( gen.death_map, "monster death function" ); - optional( jo, was_loaded, "death_function", dies, death_reader ); - if( dies.empty() ) { - // TODO: really needed? Is an empty `dies` container not allowed? - dies.push_back( mdeath::normal ); + if( jo.has_array( "shearing" ) ) { + std::vector entries; + for( JsonObject shearing_entry : jo.get_array( "shearing" ) ) { + struct shearing_entry entry {}; + entry.load( shearing_entry ); + entries.emplace_back( entry ); + } + shearing = shearing_data( entries ); } + optional( jo, was_loaded, "death_function", mdeath_effect ); + if( jo.has_array( "emit_fields" ) ) { JsonArray jar = jo.get_array( "emit_fields" ); if( jar.has_string( 0 ) ) { // TEMPORARY until 0.F @@ -1335,3 +1280,17 @@ void MonsterGenerator::check_monster_definitions() const } } } + +void monster_death_effect::load( const JsonObject &jo ) +{ + optional( jo, was_loaded, "message", death_message, to_translation( "The %s dies!" ) ); + optional( jo, was_loaded, "effect", sp ); + has_effect = sp.is_valid(); + optional( jo, was_loaded, "corpse_type", corpse_type, mdeath_type::NORMAL ); +} + +void monster_death_effect::deserialize( JsonIn &jsin ) +{ + JsonObject data = jsin.get_object(); + load( data ); +} diff --git a/src/monstergenerator.h b/src/monstergenerator.h index 06a29d39ee0b6..83ff673550924 100644 --- a/src/monstergenerator.h +++ b/src/monstergenerator.h @@ -84,7 +84,6 @@ class MonsterGenerator // Init functions void init_phases(); - void init_death(); void init_attack(); void init_defense(); diff --git a/src/mtype.cpp b/src/mtype.cpp index 2c39c0e81b80c..cf45b2938957b 100644 --- a/src/mtype.cpp +++ b/src/mtype.cpp @@ -53,7 +53,6 @@ mtype::mtype() biosig_item = itype_id::NULL_ID(); burn_into = mtype_id::NULL_ID(); - dies.push_back( &mdeath::normal ); sp_defense = nullptr; harvest = harvest_id( "human" ); luminance = 0; diff --git a/src/mtype.h b/src/mtype.h index 96392f9002e52..09d71eba54263 100644 --- a/src/mtype.h +++ b/src/mtype.h @@ -14,9 +14,11 @@ #include "damage.h" #include "enum_bitset.h" #include "enums.h" +#include "magic.h" #include "mattack_common.h" #include "optional.h" #include "pathfinding.h" +#include "shearing.h" #include "translations.h" #include "type_id.h" #include "units.h" // IWYU pragma: keep @@ -144,6 +146,7 @@ enum m_flag : int { MF_INTERIOR_AMMO, // Monster contain's its ammo inside itself, no need to load on launch. Prevents ammo from being dropped on disable. MF_CLIMBS, // Monsters that can climb certain terrain and furniture MF_PACIFIST, // Monsters that will never use melee attack, useful for having them use grab without attacking the player + MF_KEEP_DISTANCE, // Attempts to keep a short distance (tracking_distance) from its current target. The default tracking distance is 8 tiles MF_PUSH_MON, // Monsters that can push creatures out of their way MF_PUSH_VEH, // Monsters that can push vehicles out of their way MF_NIGHT_INVISIBILITY, // Monsters that are invisible in poor light conditions @@ -176,6 +179,7 @@ enum m_flag : int { MF_DROPS_AMMO, // This monster drops ammo. Should not be set for monsters that use pseudo ammo. MF_INSECTICIDEPROOF, // This monster is immune to insecticide, even though it's made of bug flesh MF_RANGED_ATTACKER, // This monster has any sort of ranged attack + MF_CAMOUFLAGE, // This monster is hard to spot, even in broad daylight MF_MAX // Sets the length of the flags - obviously must be LAST }; @@ -199,6 +203,30 @@ struct mon_effect_data { chance( nchance ) {} }; +enum class mdeath_type { + NORMAL, + SPLATTER, + BROKEN, + NO_CORPSE, + LAST +}; + +template<> +struct enum_traits { + static constexpr mdeath_type last = mdeath_type::LAST; +}; + +struct monster_death_effect { + bool was_loaded = false; + bool has_effect = false; + fake_spell sp; + translation death_message; + mdeath_type corpse_type = mdeath_type::NORMAL; + + void load( const JsonObject &jo ); + void deserialize( JsonIn &jsin ); +}; + struct mtype { private: friend class MonsterGenerator; @@ -256,6 +284,9 @@ struct mtype { int agro = 0; /** chance will attack [-100,100] */ int morale = 0; /** initial morale level at spawn */ + // how close the monster is willing to approach its target while under the MATT_FOLLOW attitude + int tracking_distance = 8; + // Number of hitpoints regenerated per turn. int regenerates = 0; // Monster regenerates very quickly in poorly lit tiles. @@ -286,12 +317,16 @@ struct mtype { int armor_acid = -1; /** innate armor vs. acid */ int armor_fire = -1; /** innate armor vs. fire */ + // Bleed rate in percent, 0 makes the monster immune to bleeding + int bleed_rate = 100; + // Vision range is linearly scaled depending on lighting conditions int vision_day = 40; /** vision range in bright light */ int vision_night = 1; /** vision range in total darkness */ damage_instance melee_damage; // Basic melee attack damage harvest_id harvest; + shearing_data shearing; float luminance; // 0 is default, >0 gives luminance to lightmap unsigned int def_chance; // How likely a special "defensive" move is to trigger (0-100%, default 0) @@ -299,7 +334,7 @@ struct mtype { std::map special_attacks; std::vector special_attacks_names; // names of attacks, in json load order - std::vector dies; // What happens when this monster dies + monster_death_effect mdeath_effect; // This monster's special "defensive" move that may trigger when the monster is attacked. // Note that this can be anything, and is not necessarily beneficial to the monster diff --git a/src/mutation.h b/src/mutation.h index 9357baf48434d..6a844b9fa0ec1 100644 --- a/src/mutation.h +++ b/src/mutation.h @@ -189,7 +189,6 @@ struct mutation_branch { std::pair rand_bash_bonus; // Additional bonuses cata::optional dodge_modifier = cata::nullopt; - cata::optional speed_modifier = cata::nullopt; cata::optional movecost_modifier = cata::nullopt; cata::optional movecost_flatground_modifier = cata::nullopt; cata::optional movecost_obstacle_modifier = cata::nullopt; @@ -257,9 +256,6 @@ struct mutation_branch { // Multiplier for sight range, defaulting to 1. cata::optional overmap_multiplier = cata::nullopt; - // Multiplier for map memory capacity, defaulting to 1. - cata::optional map_memory_capacity_multiplier = cata::nullopt; - // Multiplier for reading speed, defaulting to 1. cata::optional reading_speed_multiplier = cata::nullopt; diff --git a/src/mutation_data.cpp b/src/mutation_data.cpp index 2600d3de911a1..dc6b52f7d3cee 100644 --- a/src/mutation_data.cpp +++ b/src/mutation_data.cpp @@ -423,7 +423,6 @@ void mutation_branch::load( const JsonObject &jo, const std::string & ) optional( jo, was_loaded, "pierce_dmg_bonus", pierce_dmg_bonus, 0.0f ); optional( jo, was_loaded, "bash_dmg_bonus", bash_dmg_bonus, 0 ); optional( jo, was_loaded, "dodge_modifier", dodge_modifier, cata::nullopt ); - optional( jo, was_loaded, "speed_modifier", speed_modifier, cata::nullopt ); optional( jo, was_loaded, "movecost_modifier", movecost_modifier, cata::nullopt ); optional( jo, was_loaded, "movecost_flatground_modifier", movecost_flatground_modifier, cata::nullopt ); @@ -445,8 +444,6 @@ void mutation_branch::load( const JsonObject &jo, const std::string & ) optional( jo, was_loaded, "vomit_multiplier", vomit_multiplier, cata::nullopt ); optional( jo, was_loaded, "overmap_sight", overmap_sight, cata::nullopt ); optional( jo, was_loaded, "overmap_multiplier", overmap_multiplier, cata::nullopt ); - optional( jo, was_loaded, "map_memory_capacity_multiplier", map_memory_capacity_multiplier, - cata::nullopt ); optional( jo, was_loaded, "reading_speed_multiplier", reading_speed_multiplier, cata::nullopt ); optional( jo, was_loaded, "skill_rust_multiplier", skill_rust_multiplier, cata::nullopt ); optional( jo, was_loaded, "consume_time_modifier", consume_time_modifier, cata::nullopt ); diff --git a/src/newcharacter.cpp b/src/newcharacter.cpp index d53e725ce3d19..c8e80598dae39 100644 --- a/src/newcharacter.cpp +++ b/src/newcharacter.cpp @@ -199,8 +199,7 @@ void avatar::randomize( const bool random_scenario, points_left &points, bool pl } // if adjusting min and max age from 16 and 55, make sure to see set_description() init_age = rng( 16, 55 ); - // if adjusting min and max height from 145 and 200, make sure to see set_description() - init_height = rng( 145, 200 ); + randomize_height(); randomize_blood(); bool cities_enabled = world_generator->active_world->WORLD_OPTIONS["CITY_SIZE"].getValue() != "0"; if( random_scenario ) { @@ -3306,7 +3305,7 @@ tab_direction set_description( avatar &you, const bool allow_reroll, no_name_entered = you.name.empty(); } you.set_base_age( rng( 16, 55 ) ); - you.set_base_height( rng( 145, 200 ) ); + you.randomize_height(); you.randomize_blood(); } else if( action == "CHANGE_GENDER" ) { you.male = !you.male; diff --git a/src/npc.cpp b/src/npc.cpp index 55884b707aeb3..a2a8ca3a0b66d 100644 --- a/src/npc.cpp +++ b/src/npc.cpp @@ -110,8 +110,6 @@ static const skill_id skill_speech( "speech" ); static const skill_id skill_stabbing( "stabbing" ); static const skill_id skill_throw( "throw" ); -static const bionic_id bio_memory( "bio_memory" ); - static const trait_id trait_BEE( "BEE" ); static const trait_id trait_CANNIBAL( "CANNIBAL" ); static const trait_id trait_DEBUG_MIND_CONTROL( "DEBUG_MIND_CONTROL" ); @@ -969,9 +967,8 @@ void npc::finish_read( item &book ) // Enhanced Memory Banks modestly boosts experience int min_ex = std::max( 1, reading->time / 10 + get_int() / 4 ); int max_ex = reading->time / 5 + get_int() / 2 - originalSkillLevel; - if( has_active_bionic( bio_memory ) ) { - min_ex += 2; - } + min_ex = enchantment_cache->modify_value( enchant_vals::mod::READING_EXP, min_ex ); + if( max_ex < 2 ) { max_ex = 2; } @@ -1126,7 +1123,9 @@ bool npc::wear_if_wanted( const item &it, std::string &reason ) return armor.covers( bp ); } ); if( iter != worn.end() && !( is_limb_broken( bp ) && iter->has_flag( flag_SPLINT ) ) ) { - took_off = takeoff( *iter ); + //create an item_location for player::takeoff to handle. + item_location loc_for_takeoff = item_location( *this, &*iter ); + took_off = takeoff( loc_for_takeoff ); break; } } diff --git a/src/npc.h b/src/npc.h index d613904b8c431..19c095946acde 100644 --- a/src/npc.h +++ b/src/npc.h @@ -35,6 +35,7 @@ #include "line.h" #include "lru_cache.h" #include "memory_fast.h" +#include "npc_attack.h" #include "optional.h" #include "pimpl.h" #include "player.h" @@ -573,6 +574,9 @@ struct npc_short_term_cache { cata::optional guard_pos; double my_weapon_value = 0; + npc_attack_rating current_attack_evaluation; + std::shared_ptr current_attack; + // Use weak_ptr to avoid circular references between Creatures // attitude of creatures the npc can see std::vector> hostile_guys; @@ -773,7 +777,7 @@ class npc : public player bool is_npc() const override { return true; } - const npc *as_npc() override { + npc *as_npc() override { return this; } const npc *as_npc() const override { @@ -1068,6 +1072,10 @@ class npc : public player // Functions which choose an action for a particular goal npc_action method_of_fleeing(); npc_action method_of_attack(); + // among the different attack methods the npc has available, what's the best one in the current situation? + // picks among melee, guns, spells, etc. + // updates the ai_cache + void evaluate_best_weapon( const Creature *target ); static std::array, npc_need::num_needs> need_data; @@ -1281,6 +1289,9 @@ class npc : public player npc_short_term_cache ai_cache; public: + const std::shared_ptr &get_current_attack() const { + return ai_cache.current_attack; + } /** * Global position, expressed in map square coordinate system * (the most detailed coordinate system), used by the @ref map. diff --git a/src/npc_attack.cpp b/src/npc_attack.cpp new file mode 100644 index 0000000000000..c7edaf31daa69 --- /dev/null +++ b/src/npc_attack.cpp @@ -0,0 +1,518 @@ +#include "npc_attack.h" + +#include "character.h" +#include "flag.h" +#include "game.h" +#include "item.h" +#include "map.h" +#include "messages.h" +#include "npc.h" +#include "point.h" +#include "projectile.h" +#include "ranged.h" + +namespace npc_attack_constants +{ +const std::map attitude_multiplier = { + { Creature::Attitude::FRIENDLY, -10 }, + { Creature::Attitude::HOSTILE, 3 }, + { Creature::Attitude::NEUTRAL, -1 } +}; +// if you are attacking your target, multiply potential by this number +const int target_modifier = 3; +// if you kill the creature, multiply the potential by this number +const int kill_modifier = 2; +// the amount of penalty if the npc has to change what it's wielding +// update this number and comment when that is no longer a flat -15 moves +const int base_time_penalty = 3; +// we want this out of our hands, pronto. +// give a large buff to the attack value so it prioritizes this +const int base_throw_now = 10'000; +} // namespace npc_attack_constants + +// TODO: make a better, more generic "check if this projectile is blocked" function +// TODO: put this in a namespace for reuse +static bool has_obstruction( const tripoint &from, const tripoint &to ) +{ + std::vector line = line_to( from, to ); + // @to is what we want to hit. we don't need to check for obstruction there. + line.pop_back(); + const map &here = get_map(); + for( const tripoint &line_point : line ) { + if( here.impassable( line_point ) ) { + return true; + } + } + return false; +} + +bool npc_attack_rating::operator>( const npc_attack_rating &rhs ) const +{ + if( !rhs._value ) { + return true; + } + if( !_value ) { + return false; + } + return *_value > *rhs._value; +} + +bool npc_attack_rating::operator>( const int rhs ) const +{ + if( !_value ) { + return false; + } + return *_value > rhs; +} + +bool npc_attack_rating::operator<( const int rhs ) const +{ + if( !_value ) { + return true; + } + return *_value < rhs; +} + +npc_attack_rating npc_attack_rating::operator-=( const int rhs ) +{ + if( _value ) { + *_value -= rhs; + } + return *this; +} + +void npc_attack_melee::use( npc &source, const tripoint &location ) const +{ + if( !source.wield( weapon ) ) { + debugmsg( "ERROR: npc tried to melee monster with weapon it couldn't wield" ); + return; + } + Creature *critter = g->critter_at( location ); + if( !critter ) { + debugmsg( "ERROR: npc tried to attack null critter" ); + return; + } + if( !source.is_adjacent( critter, true ) ) { + add_msg_debug( debugmode::debug_filter::DF_NPC, "%s is attempting a reach attack", + source.disp_name() ); + source.reach_attack( location ); + } else { + add_msg_debug( debugmode::debug_filter::DF_NPC, "%s is attempting a melee attack", + source.disp_name() ); + source.melee_attack( *critter, true ); + } +} + +tripoint_range npc_attack_melee::targetable_points( const npc &source ) const +{ + const int reach_range{ weapon.reach_range( source ) }; + return get_map().points_in_radius( source.pos(), reach_range ); +} + +npc_attack_rating npc_attack_melee::evaluate( const npc &source, + const Creature *target ) const +{ + npc_attack_rating effectiveness( cata::nullopt, source.pos() ); + if( !can_use( source ) ) { + return effectiveness; + } + const int time_penalty = base_time_penalty( source ); + for( const tripoint &targetable_point : targetable_points( source ) ) { + if( Creature *critter = g->critter_at( targetable_point ) ) { + if( source.attitude_to( *critter ) != Creature::Attitude::HOSTILE ) { + // no point in swinging a sword at a friendly! + continue; + } + npc_attack_rating effectiveness_at_point = evaluate_critter( source, target, critter ); + effectiveness_at_point -= time_penalty; + if( effectiveness_at_point > effectiveness ) { + effectiveness = effectiveness_at_point; + } + } + } + return effectiveness; +} + +std::vector npc_attack_melee::all_evaluations( const npc &source, + const Creature *target ) const +{ + std::vector effectiveness; + if( !can_use( source ) ) { + return effectiveness; + } + const int time_penalty = base_time_penalty( source ); + for( const tripoint &targetable_point : targetable_points( source ) ) { + if( Creature *critter = g->critter_at( targetable_point ) ) { + if( source.attitude_to( *critter ) != Creature::Attitude::HOSTILE ) { + // no point in swinging a sword at a friendly! + continue; + } + npc_attack_rating effectiveness_at_point = evaluate_critter( source, target, critter ); + effectiveness_at_point -= time_penalty; + effectiveness.push_back( effectiveness_at_point ); + } + } + return effectiveness; +} + +bool npc_attack_melee::can_use( const npc &source ) const +{ + // can't attack with something you can't wield + return source.can_wield( weapon ).success(); +} + +int npc_attack_melee::base_time_penalty( const npc &source ) const +{ + return source.is_wielding( weapon ) ? 0 : npc_attack_constants::base_time_penalty; +} + +npc_attack_rating npc_attack_melee::evaluate_critter( const npc &source, + const Creature *target, Creature *critter ) const +{ + if( !critter ) { + return npc_attack_rating{}; + } + const int distance_to_me = rl_dist( source.pos(), critter->pos() ); + const double damage{ weapon.effective_dps( source, *critter ) }; + const Creature::Attitude att = source.attitude_to( *critter ); + double potential = damage * npc_attack_constants::attitude_multiplier.at( att ) - + ( distance_to_me - 1 ); + if( damage >= critter->get_hp() ) { + potential *= npc_attack_constants::kill_modifier; + } + if( target && target->pos() == critter->pos() ) { + potential *= npc_attack_constants::target_modifier; + } + return npc_attack_rating( std::round( potential ), critter->pos() ); +} + +void npc_attack_gun::use( npc &source, const tripoint &location ) const +{ + const item &weapon = *gunmode; + if( !weapon.ammo_sufficient() ) { + source.do_reload( weapon ); + add_msg_debug( debugmode::debug_filter::DF_NPC, "%s is reloading %s", source.disp_name(), + weapon.display_name() ); + return; + } + + const int dist = rl_dist( source.pos(), location ); + + if( source.aim_per_move( weapon, source.recoil ) > 0 && + source.confident_shoot_range( weapon, source.get_most_accurate_sight( weapon ) ) >= dist ) { + add_msg_debug( debugmode::debug_filter::DF_NPC, "%s is aiming", source.disp_name() ); + source.aim(); + } else { + source.fire_gun( location ); + add_msg_debug( debugmode::debug_filter::DF_NPC, "%s fires %s", source.disp_name(), + weapon.display_name() ); + } +} + +bool npc_attack_gun::can_use( const npc &source ) const +{ + // can't attack with something you can't wield + return source.can_wield( *gunmode ).success(); +} + +int npc_attack_gun::base_time_penalty( const npc &source ) const +{ + const item &weapon = *gunmode; + int time_penalty = 0; + if( source.is_wielding( weapon ) ) { + time_penalty += npc_attack_constants::base_time_penalty; + } + // we want the need to reload a gun cumulative with needing to wield the gun + if( !weapon.ammo_sufficient() ) { + time_penalty += npc_attack_constants::base_time_penalty; + } + int recoil_penalty = 0; + if( source.is_wielding( weapon ) ) { + recoil_penalty = source.recoil; + } else { + recoil_penalty = MAX_RECOIL; + } + recoil_penalty /= 100; + return time_penalty + recoil_penalty; +} + +tripoint_range npc_attack_gun::targetable_points( const npc &source ) const +{ + const item &weapon = *gunmode; + return get_map().points_in_radius( source.pos(), weapon.gun_range() ); +} + +npc_attack_rating npc_attack_gun::evaluate( + const npc &source, const Creature *target ) const +{ + npc_attack_rating effectiveness( cata::nullopt, source.pos() ); + if( !can_use( source ) ) { + return effectiveness; + } + const int time_penalty = base_time_penalty( source ); + for( const tripoint &targetable_point : targetable_points( source ) ) { + if( g->critter_at( targetable_point ) ) { + npc_attack_rating effectiveness_at_point = evaluate_tripoint( source, target, + targetable_point ); + effectiveness_at_point -= time_penalty; + if( effectiveness_at_point > effectiveness ) { + effectiveness = effectiveness_at_point; + } + } + } + return effectiveness; +} + +std::vector npc_attack_gun::all_evaluations( const npc &source, + const Creature *target ) const +{ + std::vector effectiveness; + if( !can_use( source ) ) { + return effectiveness; + } + const int time_penalty = base_time_penalty( source ); + for( const tripoint &targetable_point : targetable_points( source ) ) { + if( g->critter_at( targetable_point ) ) { + npc_attack_rating effectiveness_at_point = evaluate_tripoint( source, target, + targetable_point ); + effectiveness_at_point -= time_penalty; + effectiveness.push_back( effectiveness_at_point ); + } + } + return effectiveness; +} + +npc_attack_rating npc_attack_gun::evaluate_tripoint( + const npc &source, const Creature *target, const tripoint &location ) const +{ + const item &gun = *gunmode.target; + const int damage = gun.gun_damage().total_damage() * gunmode.qty; + if( has_obstruction( source.pos(), location ) ) { + return npc_attack_rating( cata::nullopt, location ); + } + + const Creature *critter = g->critter_at( location ); + if( !critter ) { + // TODO: AOE ammo effects + return npc_attack_rating( cata::nullopt, location ); + } + const int distance_to_me = rl_dist( location, source.pos() ); + const Creature::Attitude att = source.attitude_to( *critter ); + const bool friendly_fire = att == Creature::Attitude::FRIENDLY && + !source.rules.has_flag( ally_rule::avoid_friendly_fire ); + int attitude_mult = npc_attack_constants::attitude_multiplier.at( att ); + if( friendly_fire ) { + // hitting a neutral creature isn't exactly desired, but it's a lot less than a friendly. + // if friendly fire is on, we don't care too much, though if an available hit doesn't damage them it would be better. + attitude_mult = npc_attack_constants::attitude_multiplier.at( Creature::Attitude::NEUTRAL ); + } + const int distance_penalty = std::max( distance_to_me - 1, + ( source.closest_enemy_to_friendly_distance() - 1 ) * 2 ); + double potential = damage * attitude_mult - distance_penalty; + if( damage >= critter->get_hp() ) { + potential *= npc_attack_constants::kill_modifier; + } + if( target && target->pos() == critter->pos() ) { + potential *= npc_attack_constants::target_modifier; + } + return npc_attack_rating( std::round( potential ), location ); +} + +void npc_attack_activate_item::use( npc &source, const tripoint &/*location*/ ) const +{ + if( !source.wield( activatable_item ) ) { + debugmsg( "%s can't wield %s it tried to activate", source.disp_name(), + activatable_item.display_name() ); + } + source.activate_item( activatable_item ); +} + +bool npc_attack_activate_item::can_use( const npc &source ) const +{ + const bool can_use_grenades = ( source.is_player_ally() && + !source.rules.has_flag( ally_rule::use_grenades ) ) || source.is_hallucination(); + //TODO: make this more complete. only does BOMB type items + return can_use_grenades && activatable_item.has_flag( flag_NPC_ACTIVATE ); +} + +npc_attack_rating npc_attack_activate_item::evaluate( + const npc &source, const Creature * /*target*/ ) const +{ + if( !can_use( source ) ) { + return npc_attack_rating( cata::nullopt, source.pos() ); + } + // until we have better logic for grenades it's better to keep this as a last resort... + const int emergency = source.emergency() ? 1 : 0; + return npc_attack_rating( emergency, source.pos() ); +} + +std::vector npc_attack_activate_item::all_evaluations( const npc &source, + const Creature * /*target*/ ) const +{ + std::vector effectiveness; + if( !can_use( source ) ) { + return effectiveness; + } + // until we have better logic for grenades it's better to keep this as a last resort... + const int emergency = source.emergency() ? 1 : 0; + effectiveness.emplace_back( npc_attack_rating( emergency, source.pos() ) ); + return effectiveness; +} + +void npc_attack_throw::use( npc &source, const tripoint &location ) const +{ + // WARNING! wielding the item invalidates the reference! + if( source.wield( thrown_item ) ) { + add_msg_debug( debugmode::debug_filter::DF_NPC, "%s throws the %s", source.disp_name(), + source.weapon.display_name() ); + item thrown( source.weapon ); + if( source.weapon.count_by_charges() && source.weapon.charges > 1 ) { + source.weapon.mod_charges( -1 ); + thrown.charges = 1; + } else { + source.remove_weapon(); + } + source.throw_item( location, thrown ); + } else { + debugmsg( "%s couldn't wield %s to throw it", source.disp_name(), thrown_item.display_name() ); + } +} + +bool npc_attack_throw::can_use( const npc &source ) const +{ + item single_item( thrown_item ); + if( single_item.count_by_charges() ) { + single_item.charges = 1; + } + // please don't throw your pants... + return !source.is_worn( thrown_item ) && + // we would rather throw than activate this. unless we need to throw it now. + !( thrown_item.has_flag( flag_NPC_THROW_NOW ) || thrown_item.has_flag( flag_NPC_ACTIVATE ) ) && + // i don't trust you as far as i can throw you. + source.throw_range( single_item ) != 0; +} + +int npc_attack_throw::base_penalty( const npc &source ) const +{ + // hot potato! HOT POTATO! + int throw_now = 0; + if( thrown_item.has_flag( flag_NPC_THROW_NOW ) ) { + throw_now = npc_attack_constants::base_throw_now; + } + + item single_item( thrown_item ); + if( single_item.count_by_charges() ) { + single_item.charges = 1; + } + const int time_penalty = source.is_wielding( single_item ) ? 0 : + npc_attack_constants::base_time_penalty; + + return time_penalty - throw_now; +} + +tripoint_range npc_attack_throw::targetable_points( const npc &source ) const +{ + item single_item( thrown_item ); + if( single_item.count_by_charges() ) { + single_item.charges = 1; + } + const int range = source.throw_range( single_item ); + return get_map().points_in_radius( source.pos(), range ); +} + +npc_attack_rating npc_attack_throw::evaluate( + const npc &source, const Creature *target ) const +{ + npc_attack_rating effectiveness( cata::nullopt, source.pos() ); + if( !can_use( source ) ) { + // please don't throw your pants... + return effectiveness; + } + const int penalty = base_penalty( source ); + for( const tripoint &potential : targetable_points( source ) ) { + if( Creature *critter = g->critter_at( potential ) ) { + if( source.attitude_to( *critter ) != Creature::Attitude::HOSTILE ) { + // no point in friendly fire! + continue; + } + npc_attack_rating effectiveness_at_point = evaluate_tripoint( source, target, + potential ); + effectiveness_at_point -= penalty; + if( effectiveness_at_point > effectiveness ) { + effectiveness = effectiveness_at_point; + } + } + } + return effectiveness; +} + +std::vector npc_attack_throw::all_evaluations( const npc &source, + const Creature *target ) const +{ + std::vector effectiveness; + if( !can_use( source ) ) { + // please don't throw your pants... + return effectiveness; + } + const int penalty = base_penalty( source ); + for( const tripoint &potential : targetable_points( source ) ) { + if( Creature *critter = g->critter_at( potential ) ) { + if( source.attitude_to( *critter ) != Creature::Attitude::HOSTILE ) { + // no point in friendly fire! + continue; + } + npc_attack_rating effectiveness_at_point = evaluate_tripoint( source, target, + potential ); + effectiveness_at_point -= penalty; + effectiveness.push_back( effectiveness_at_point ); + } + } + return effectiveness; +} + +npc_attack_rating npc_attack_throw::evaluate_tripoint( + const npc &source, const Creature *target, const tripoint &location ) const +{ + if( has_obstruction( source.pos(), location ) ) { + return npc_attack_rating( cata::nullopt, location ); + } + item single_item( thrown_item ); + if( single_item.count_by_charges() ) { + single_item.charges = 1; + } + + Creature::Attitude att = Creature::Attitude::NEUTRAL; + const Creature *critter = g->critter_at( location ); + if( critter ) { + att = source.attitude_to( *critter ); + } + const bool friendly_fire = att == Creature::Attitude::FRIENDLY && + !source.rules.has_flag( ally_rule::avoid_friendly_fire ); + int attitude_mult = npc_attack_constants::attitude_multiplier.at( att ); + if( friendly_fire ) { + // hitting a neutral creature isn't exactly desired, but it's a lot less than a friendly. + // if friendly fire is on, we don't care too much, though if an available hit doesn't damage them it would be better. + attitude_mult = npc_attack_constants::attitude_multiplier.at( Creature::Attitude::NEUTRAL ); + } + + const float throw_mult = throw_cost( source, single_item ) * source.speed_rating() / 100.0f; + const int damage = source.thrown_item_total_damage_raw( single_item ); + float dps = damage / throw_mult; + const int distance_to_me = rl_dist( location, source.pos() ); + const int distance_penalty = std::max( distance_to_me - 1, + ( source.closest_enemy_to_friendly_distance() - 1 ) * 2 ); + + double potential = dps * attitude_mult - distance_penalty; + if( critter && damage >= critter->get_hp() ) { + potential *= npc_attack_constants::kill_modifier; + } + if( !target || !critter ) { + // not great to throw here but if we have a grenade... + potential = -100; + // ... we'd rather throw it farther away from ourselves. + potential += distance_to_me; + } else if( target->pos() == critter->pos() ) { + potential *= npc_attack_constants::target_modifier; + } + return npc_attack_rating( std::round( potential ), location ); +} diff --git a/src/npc_attack.h b/src/npc_attack.h new file mode 100644 index 0000000000000..cd3ad361dcb6b --- /dev/null +++ b/src/npc_attack.h @@ -0,0 +1,125 @@ +#pragma once +#ifndef CATA_SRC_NPC_ATTACK_H +#define CATA_SRC_NPC_ATTACK_H + +#include + +#include "gun_mode.h" +#include "item.h" +#include "map_iterator.h" +#include "optional.h" +#include "point.h" +#include "type_id.h" + +class Creature; +class item; +class npc; + +class npc_attack_rating +{ + // the total calculated effectiveness of this attack. no value means this attack is not possible. + cata::optional _value = cata::nullopt; + // the target tile of the attack + tripoint _target; + public: + npc_attack_rating() = default; + npc_attack_rating( const cata::optional &_value, + const tripoint &_target ) : _value( _value ), _target( _target ) {} + cata::optional value() const { + return _value; + } + tripoint target() const { + return _target; + } + bool operator>( const npc_attack_rating &rhs ) const; + bool operator>( int rhs ) const; + bool operator<( int rhs ) const; + npc_attack_rating operator-=( int rhs ); +}; + +class npc_attack +{ + public: + /** + * Parameters: + * source - the npc making the attack + * target - the desired target of the npc. valued at 100% + */ + virtual npc_attack_rating evaluate( const npc &source, const Creature *target ) const = 0; + virtual void use( npc &source, const tripoint &location ) const = 0; + /** + * For debug information. returns all evaluated effectivenesses. + * This is abstracted out in evaluate() as it's faster to not use a container + */ + virtual std::vector all_evaluations( const npc &source, + const Creature *target ) const = 0; + + virtual ~npc_attack() = default; +}; + +class npc_attack_melee : public npc_attack +{ + item &weapon; + public: + explicit npc_attack_melee( item &weapon ) : weapon( weapon ) {} + npc_attack_rating evaluate( const npc &source, const Creature *target ) const override; + std::vector all_evaluations( const npc &source, + const Creature *target ) const override; + void use( npc &source, const tripoint &location ) const override; + private: + tripoint_range targetable_points( const npc &source ) const; + bool can_use( const npc &source ) const; + int base_time_penalty( const npc &source ) const; + npc_attack_rating evaluate_critter( const npc &source, const Creature *target, + Creature *critter ) const; +}; + +class npc_attack_gun : public npc_attack +{ + const gun_mode gunmode; + public: + explicit npc_attack_gun( const gun_mode &gunmode ) : gunmode( gunmode ) {} + npc_attack_rating evaluate( const npc &source, const Creature *target ) const override; + std::vector all_evaluations( const npc &source, + const Creature *target ) const override; + void use( npc &source, const tripoint &location ) const override; + private: + tripoint_range targetable_points( const npc &source ) const; + bool can_use( const npc &source ) const; + int base_time_penalty( const npc &source ) const; + npc_attack_rating evaluate_tripoint( + const npc &source, const Creature *target, const tripoint &location ) const; +}; + +class npc_attack_throw : public npc_attack +{ + item &thrown_item; + public: + explicit npc_attack_throw( item &thrown_item ) : thrown_item( thrown_item ) {} + npc_attack_rating evaluate( const npc &source, const Creature *target ) const override; + std::vector all_evaluations( const npc &source, + const Creature *target ) const override; + void use( npc &source, const tripoint &location ) const override; + private: + tripoint_range targetable_points( const npc &source ) const; + bool can_use( const npc &source ) const; + int base_penalty( const npc &source ) const; + npc_attack_rating evaluate_tripoint( + const npc &source, const Creature *target, const tripoint &location ) const; +}; + +class npc_attack_activate_item : public npc_attack +{ + item &activatable_item; + public: + explicit npc_attack_activate_item( item &activatable_item ) : + activatable_item( activatable_item ) {} + npc_attack_rating evaluate( const npc &source, const Creature *target ) const override; + std::vector all_evaluations( const npc &source, + const Creature *target ) const override; + void use( npc &source, const tripoint &location ) const override; + private: + bool can_use( const npc &source ) const; +}; + +#endif // CATA_SRC_NPC_ATTACK_H diff --git a/src/npcmove.cpp b/src/npcmove.cpp index 2f3aa940d2244..fee237dd311f0 100644 --- a/src/npcmove.cpp +++ b/src/npcmove.cpp @@ -52,6 +52,7 @@ #include "mission.h" #include "monster.h" #include "mtype.h" +#include "npc_attack.h" #include "npctalk.h" #include "omdata.h" #include "options.h" @@ -149,6 +150,7 @@ enum npc_action : int { npc_escape_explosion, npc_noop, npc_reach_attack, + npc_do_attack, npc_aim, npc_investigate_sound, npc_return_to_guard_pos, @@ -770,7 +772,7 @@ void npc::move() } regen_ai_cache(); // NPCs under operation should just stay still - if( activity.id() == ACT_OPERATION ) { + if( activity.id() == ACT_OPERATION || activity.id() == activity_id( "ACT_SPELLCASTING" ) ) { execute_action( npc_player_activity ); return; } @@ -1023,6 +1025,11 @@ void npc::execute_action( npc_action action ) Character &player_character = get_player_character(); map &here = get_map(); switch( action ) { + case npc_do_attack: + ai_cache.current_attack->use( *this, ai_cache.current_attack_evaluation.target() ); + ai_cache.current_attack.reset(); + ai_cache.current_attack_evaluation = npc_attack_rating{}; + break; case npc_pause: move_pause(); break; @@ -1383,131 +1390,59 @@ npc_action npc::method_of_attack() return npc_pause; } - tripoint tar = critter->pos(); - int dist = rl_dist( pos(), tar ); - double danger = evaluate_enemy( *critter ); - const bool has_los = clear_shot_reach( pos(), tar, false ); - const bool same_z = tar.z == pos().z; - - // TODO: Change the in_vehicle check to actual "are we driving" check - const bool dont_move = in_vehicle || rules.engagement == combat_engagement::NO_MOVE || - rules.engagement == combat_engagement::FREE_FIRE; - // NPCs engage in free fire can move to avoid allies, but not if they're in a vehicle - const bool dont_move_ff = in_vehicle || rules.engagement == combat_engagement::NO_MOVE; - // if there's enough of a threat to be here, power up the combat CBMs activate_combat_cbms(); - int ups_charges = charges_of( itype_UPS ); - - // get any suitable modes excluding melee, any forbidden to NPCs and those without ammo - // if we require a silent weapon inappropriate modes are also removed - // except in emergency only fire bursts if danger > 0.5 and don't shoot at all at harmless targets - std::vector> modes; - if( rules.has_flag( ally_rule::use_guns ) || !is_player_ally() ) { - for( const auto &e : weapon.gun_all_modes() ) { - modes.emplace_back( e ); - } - - modes.erase( std::remove_if( modes.begin(), modes.end(), - [&]( const std::pair &e ) { - - const auto &m = e.second; - return m.melee() || m.flags.count( "NPC_AVOID" ) || - !m->ammo_sufficient( m.qty ) || !can_use( *m.target ) || - m->get_gun_ups_drain() > ups_charges || - ( ( danger <= ( m.qty == 1 ? 0.0 : 15 ) ) && !emergency() ) || - ( rules.has_flag( ally_rule::use_silent ) && is_player_ally() && - !m.target->is_silent() ); - - } ), modes.end() ); - } - - // prefer modes that result in more total damage - std::stable_sort( modes.begin(), - modes.end(), [&]( const std::pair &lhs, - const std::pair &rhs ) { - return ( lhs.second->gun_damage().total_damage() * lhs.second.qty ) > - ( rhs.second->gun_damage().total_damage() * rhs.second.qty ); - } ); - - const int cur_recoil = recoil_total(); - // modes outside confident range should always be the last option(s) - std::stable_sort( modes.begin(), - modes.end(), [&]( const std::pair &lhs, - const std::pair &rhs ) { - return ( confident_gun_mode_range( lhs.second, cur_recoil ) >= dist ) > - ( confident_gun_mode_range( rhs.second, cur_recoil ) >= dist ); - } ); - - if( emergency() && alt_attack() ) { - add_msg_debug( debugmode::DF_NPC, "%s is trying an alternate attack", disp_name() ); - return npc_noop; - } + evaluate_best_weapon( critter ); - // reach attacks are silent and consume no ammo so prefer these if available - int reach_range = weapon.reach_range( *this ); - if( !trigdist ) { - if( reach_range > 1 && reach_range >= dist && clear_shot_reach( pos(), tar ) ) { - add_msg_debug( debugmode::DF_NPC, "%s is trying a reach attack", disp_name() ); - return npc_reach_attack; - } + cata::optional potential = ai_cache.current_attack_evaluation.value(); + if( potential && *potential > 0 ) { + return npc_do_attack; } else { - if( reach_range > 1 && reach_range >= std::round( trig_dist( pos(), tar ) ) && - clear_shot_reach( pos(), tar ) ) { - add_msg_debug( debugmode::DF_NPC, "%s is trying a reach attack", disp_name() ); - return npc_reach_attack; - } + add_msg_debug( debugmode::debug_filter::DF_NPC, "%s can't figure out what to do", disp_name() ); + return npc_undecided; } +} - // if the best mode is within the confident range try for a shot - if( !modes.empty() && sees( *critter ) && has_los && - confident_gun_mode_range( modes[ 0 ].second, cur_recoil ) >= dist ) { - if( cbm_weapon_index > 0 && !weapon.ammo_sufficient() && can_reload_current() ) { - add_msg_debug( debugmode::DF_NPC, "%s is reloading", disp_name() ); - return npc_reload; +void npc::evaluate_best_weapon( const Creature *target ) +{ + std::shared_ptr best_attack; + npc_attack_rating best_evaluated_attack; + const auto compare = [&best_attack, &best_evaluated_attack, this, &target] + ( const std::shared_ptr &potential_attack ) { + const npc_attack_rating evaluated = potential_attack->evaluate( *this, target ); + if( evaluated > best_evaluated_attack ) { + best_attack = potential_attack; + best_evaluated_attack = evaluated; } + }; - if( wont_hit_friend( tar, weapon, false ) ) { - weapon.gun_set_mode( modes[ 0 ].first ); - add_msg_debug( debugmode::DF_NPC, "%s is trying to shoot someone", disp_name() ); - return npc_shoot; - - } else { - if( !dont_move_ff ) { - add_msg_debug( debugmode::DF_NPC, "%s is trying to avoid friendly fire", disp_name() ); - return npc_avoid_friendly_fire; + // punching things is always available + compare( std::make_shared( null_item_reference() ) ); + const int ups_charges = charges_of( itype_UPS ); + visit_items( [&compare, &ups_charges, this]( item * it, item * ) { + // you can theoretically melee with anything. + compare( std::make_shared( *it ) ); + // ... you can also throw anything + compare( std::make_shared( *it ) ); + if( !it->type->use_methods.empty() ) { + compare( std::make_shared( *it ) ); + } + if( rules.has_flag( ally_rule::use_guns ) ) { + for( const std::pair &mode : it->gun_all_modes() ) { + if( !( mode.second.melee() || mode.second.flags.count( "NPC_AVOID" ) || + !can_use( *mode.second.target ) || mode.second->get_gun_ups_drain() > ups_charges || + ( rules.has_flag( ally_rule::use_silent ) && is_player_ally() && + !mode.second->is_silent() ) ) ) { + compare( std::make_shared( mode.second ) ); + } } } - } - - if( dist == 1 && same_z ) { - add_msg_debug( debugmode::DF_NPC, "%s is trying a melee attack", disp_name() ); - return npc_melee; - } - - // don't mess with CBM weapons - if( cbm_weapon_index < 0 ) { - // TODO: Add a time check now that wielding takes a lot of time - if( wield_better_weapon() ) { - add_msg_debug( debugmode::DF_NPC, "%s is changing weapons", disp_name() ); - return npc_noop; - } - - if( !weapon.ammo_sufficient() && can_reload_current() ) { - add_msg_debug( debugmode::DF_NPC, "%s is reloading", disp_name() ); - return npc_reload; - } - } + return VisitResponse::NEXT; + } ); - // TODO: Needs a check for transparent but non-passable tiles on the way - if( !modes.empty() && sees( *critter ) && aim_per_move( weapon, recoil ) > 0 && - confident_shoot_range( weapon, get_most_accurate_sight( weapon ) ) >= dist ) { - add_msg_debug( debugmode::DF_NPC, "%s is aiming" ); - return npc_aim; - } - add_msg_debug( debugmode::DF_NPC, "%s can't figure out what to do", disp_name() ); - return ( dont_move || !same_z ) ? npc_undecided : npc_melee; + ai_cache.current_attack = best_attack; + ai_cache.current_attack_evaluation = best_evaluated_attack; } npc_action npc::address_needs() @@ -4655,8 +4590,10 @@ bool npc::adjust_worn() if( !covers_broken( elem, elem.get_side() ) ) { const bool needs_change = covers_broken( elem, opposite_side( elem.get_side() ) ); + //create an item_location for takeoff() to handle. + item_location loc_for_takeoff = item_location( *this, &elem ); // Try to change side (if it makes sense), or take off. - if( ( needs_change && change_side( elem ) ) || takeoff( elem ) ) { + if( ( needs_change && change_side( elem ) ) || takeoff( loc_for_takeoff ) ) { return true; } } diff --git a/src/npctalk.cpp b/src/npctalk.cpp index 7a7b671266463..484de5201d005 100644 --- a/src/npctalk.cpp +++ b/src/npctalk.cpp @@ -2192,6 +2192,28 @@ void talk_effect_fun_t::set_add_power( const JsonObject &jo, const std::string & }; } +void talk_effect_fun_t::set_assign_mission( const JsonObject &jo, const std::string &member ) +{ + std::string mission_name = jo.get_string( member ); + function = [mission_name]( const dialogue & ) { + avatar &player_character = get_avatar(); + + const mission_type_id &mission_type = mission_type_id( mission_name ); + std::vector missions = player_character.get_active_missions(); + mission *new_mission = mission::reserve_new( mission_type, character_id() ); + new_mission->assign( player_character ); + }; +} + +void talk_effect_fun_t::set_mod_fatigue( const JsonObject &jo, const std::string &member, + bool is_npc ) +{ + int amount = jo.get_int( member ); + function = [is_npc, amount]( const dialogue & d ) { + d.actor( is_npc )->mod_fatigue( amount ); + }; +} + void talk_effect_t::set_effect_consequence( const talk_effect_fun_t &fun, dialogue_consequence con ) { @@ -2445,6 +2467,12 @@ void talk_effect_t::parse_sub_effect( const JsonObject &jo ) subeffect_fun.set_add_power( jo, "u_add_power", false ); } else if( jo.has_member( "npc_add_power" ) ) { subeffect_fun.set_add_power( jo, "npc_add_power", true ); + } else if( jo.has_member( "assign_mission" ) ) { + subeffect_fun.set_assign_mission( jo, "assign_mission" ); + } else if( jo.has_int( "u_mod_fatigue" ) ) { + subeffect_fun.set_mod_fatigue( jo, "u_mod_fatigue", false ); + } else if( jo.has_int( "npc_mod_fatigue" ) ) { + subeffect_fun.set_mod_fatigue( jo, "npc_mod_fatigue", true ); } else { jo.throw_error( "invalid sub effect syntax: " + jo.str() ); } diff --git a/src/npctalk_funcs.cpp b/src/npctalk_funcs.cpp index fe2ab3eb640f4..4fdd63f2b1e3c 100644 --- a/src/npctalk_funcs.cpp +++ b/src/npctalk_funcs.cpp @@ -92,9 +92,6 @@ static const mtype_id mon_chicken( "mon_chicken" ); static const mtype_id mon_cow( "mon_cow" ); static const mtype_id mon_horse( "mon_horse" ); -static const bionic_id bio_power_storage( "bio_power_storage" ); -static const bionic_id bio_power_storage_mkII( "bio_power_storage_mkII" ); - struct itype; static void spawn_animal( npc &p, const mtype_id &mon ); @@ -493,15 +490,12 @@ void talk_function::bionic_remove( npc &p ) for( const bionic &bio : all_bio ) { if( std::find( bionic_types.begin(), bionic_types.end(), bio.info().itype() ) == bionic_types.end() ) { - if( bio.id != bio_power_storage || - bio.id != bio_power_storage_mkII ) { - bionic_types.push_back( bio.info().itype() ); - if( item::type_is_defined( bio.info().itype() ) ) { - item tmp = item( bio.id.str(), calendar::turn_zero ); - bionic_names.push_back( tmp.tname() + " - " + format_money( 50000 + ( tmp.price( true ) / 4 ) ) ); - } else { - bionic_names.push_back( bio.id.str() + " - " + format_money( 50000 ) ); - } + bionic_types.push_back( bio.info().itype() ); + if( item::type_is_defined( bio.info().itype() ) ) { + item tmp = item( bio.id.str(), calendar::turn_zero ); + bionic_names.push_back( tmp.tname() + " - " + format_money( 50000 + ( tmp.price( true ) / 4 ) ) ); + } else { + bionic_names.push_back( bio.id.str() + " - " + format_money( 50000 ) ); } } } @@ -861,7 +855,7 @@ bool talk_function::drop_stolen_item( item &cur_item, npc &p ) dropped = true; } else if( cur_item.is_container() ) { bool changed = false; - for( item *contained : cur_item.contents.all_items_top() ) { + for( item *contained : cur_item.all_items_top() ) { changed |= drop_stolen_item( *contained, p ); } if( changed ) { diff --git a/src/omdata.h b/src/omdata.h index 3d1fefe43f0d8..342da3096ef87 100644 --- a/src/omdata.h +++ b/src/omdata.h @@ -281,6 +281,10 @@ struct oter_t { return utf32_to_utf8( from_land_use_code ? symbol_alt : symbol ); } + uint32_t get_uint32_symbol() const { + return symbol; + } + nc_color get_color( const bool from_land_use_code = false ) const { return from_land_use_code ? type->land_use_code->color : type->color; } diff --git a/src/options.cpp b/src/options.cpp index 856479c33e2ab..10da65b59273b 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -1865,6 +1865,13 @@ void options_manager::add_options_graphics() get_option( "TILES" ).setPrerequisite( "USE_TILES" ); + add( "USE_TILES_OVERMAP", "graphics", to_translation( "Use tiles to display overmap" ), + to_translation( "If true, replaces some TTF-rendered text with tiles for overmap display." ), + false, COPT_CURSES_HIDE + ); + + get_option( "USE_TILES_OVERMAP" ).setPrerequisite( "USE_TILES" ); + add_empty_line(); add( "MEMORY_MAP_MODE", "graphics", to_translation( "Memory map overlay preset" ), @@ -2553,6 +2560,7 @@ static void refresh_tiles( bool used_tiles_changed, bool pixel_minimap_height_ch } catch( const std::exception &err ) { popup( _( "Loading the tileset failed: %s" ), err.what() ); use_tiles = false; + use_tiles_overmap = false; } } else if( ingame && pixel_minimap_option && pixel_minimap_height_changed ) { g->mark_main_ui_adaptor_resize(); @@ -3125,6 +3133,7 @@ static void update_options_cache() // cache to global due to heavy usage. trigdist = ::get_option( "CIRCLEDIST" ); use_tiles = ::get_option( "USE_TILES" ); + use_tiles_overmap = ::get_option( "USE_TILES_OVERMAP" ); log_from_top = ::get_option( "LOG_FLOW" ) == "new_top"; message_ttl = ::get_option( "MESSAGE_TTL" ); message_cooldown = ::get_option( "MESSAGE_COOLDOWN" ); @@ -3155,7 +3164,6 @@ void options_manager::load() } ); update_global_locale(); - update_options_cache(); #if defined(SDL_SOUND) diff --git a/src/output.h b/src/output.h index f4732ae2cc447..131fc5d75ce92 100644 --- a/src/output.h +++ b/src/output.h @@ -672,7 +672,8 @@ inline std::string get_labeled_bar( const double val, const int width, const std enum class enumeration_conjunction : int { none, and_, - or_ + or_, + arrow }; /** @@ -692,18 +693,29 @@ std::string enumerate_as_string( const _Container &values, return ( values.size() > 2 ? _( ", and " ) : _( " and " ) ); case enumeration_conjunction::or_: return ( values.size() > 2 ? _( ", or " ) : _( " or " ) ); + case enumeration_conjunction::arrow: + return _( " > " ); } debugmsg( "Unexpected conjunction" ); return _( ", " ); } (); + const std::string separator = [&conj]() { + switch( conj ) { + case enumeration_conjunction::arrow: + return _( " > " ); + default: + return _( ", " ); + } + } + (); std::string res; for( auto iter = values.begin(); iter != values.end(); ++iter ) { if( iter != values.begin() ) { if( std::next( iter ) == values.end() ) { res += final_separator; } else { - res += _( ", " ); + res += separator; } } res += *iter; diff --git a/src/overmap.cpp b/src/overmap.cpp index 8014b33cc6528..5090fb35ab842 100644 --- a/src/overmap.cpp +++ b/src/overmap.cpp @@ -78,10 +78,10 @@ using oter_type_str_id = string_id; //////////////// static oter_id ot_null; -static const oter_str_id ot_forest( "ot_forest" ); -static const oter_str_id ot_forest_thick( "ot_forest_thick" ); -static const oter_str_id ot_forest_water( "ot_forest_water" ); -static const oter_str_id ot_river_center( "ot_river_center" ); +static const oter_str_id forest( "forest" ); +static const oter_str_id forest_thick( "forest_thick" ); +static const oter_str_id forest_water( "forest_water" ); +static const oter_str_id river_center( "river_center" ); const oter_type_t oter_type_t::null_type{}; @@ -744,9 +744,7 @@ bool oter_t::is_hardcoded() const "spider_pit_under", "temple", "temple_finale", - "temple_stairs", - "triffid_finale", - "triffid_roots" + "temple_stairs" }; return hardcoded_mapgen.find( get_mapgen_id() ) != hardcoded_mapgen.end(); @@ -1093,15 +1091,7 @@ void overmap::populate() oter_id overmap::get_default_terrain( int z ) const { - if( z == 0 ) { - return settings.default_oter.id(); - } else { - // // TODO: Get rid of the hard-coded ids. - static const oter_str_id open_air( "open_air" ); - static const oter_str_id empty_rock( "empty_rock" ); - - return z > 0 ? open_air.id() : empty_rock.id(); - } + return settings.default_oter[OVERMAP_DEPTH + z].id(); } void overmap::init_layers() @@ -1501,9 +1491,9 @@ bool overmap::generate_sub( const int z ) std::vector central_lab_train_points; std::vector mine_points; // These are so common that it's worth checking first as int. - const oter_id skip_above[5] = { + const oter_id skip_above[6] = { oter_id( "empty_rock" ), oter_id( "forest" ), oter_id( "field" ), - oter_id( "forest_thick" ), oter_id( "forest_water" ) + oter_id( "forest_thick" ), oter_id( "forest_water" ), oter_id( "solid_earth" ) }; for( int i = 0; i < OMAPX; i++ ) { @@ -1546,7 +1536,7 @@ bool overmap::generate_sub( const int z ) } else if( oter_above == "anthill" || oter_above == "acid_anthill" ) { const int size = rng( MIN_ANT_SIZE, MAX_ANT_SIZE ); ant_points.emplace_back( p.xy(), size ); - } else if( oter_above == "slimepit_down" ) { + } else if( oter_above == "slimepit_down" || oter_above == "slimepit_bottom" ) { const int size = rng( MIN_GOO_SIZE, MAX_GOO_SIZE ); goo_points.emplace_back( p.xy(), size ); } else if( oter_above == "forest_water" ) { @@ -1640,12 +1630,19 @@ bool overmap::generate_sub( const int z ) // mark tile to prevent subway gen ter_set( nearby_loc, oter_id( "open_air" ) ); } + if( is_ot_match( "solid_earth", ter( nearby_loc ), ot_match_type::contains ) ) { + // mark tile to prevent subway gen + ter_set( nearby_loc, oter_id( "field" ) ); + } } } else { // change train connection point back to rock to allow gen if( is_ot_match( "open_air", ter( i ), ot_match_type::contains ) ) { ter_set( i, oter_id( "empty_rock" ) ); } + if( is_ot_match( "field", ter( i ), ot_match_type::contains ) ) { + ter_set( i, oter_id( "solid_earth" ) ); + } real_train_points.push_back( i.xy() ); } is_first_in_pair = !is_first_in_pair; @@ -1697,6 +1694,10 @@ bool overmap::generate_sub( const int z ) ot_match_type::contains ) ) { // clear marked ter_set( subway_loc, oter_id( "empty_rock" ) ); + } else if( is_ot_match( "field", ter( subway_loc ), + ot_match_type::contains ) ) { + // clear marked + ter_set( subway_loc, oter_id( "solid_earth" ) ); } } } @@ -1711,13 +1712,13 @@ bool overmap::generate_sub( const int z ) tripoint_om_sm sm_pos = project_to( omt_pos ); // Sewers and city subways are present at z == -1 and z == -2. Don't spawn CHUD on other z-levels. if( ( z == -1 || z == -2 ) && one_in( 3 ) ) { - add_mon_group( mongroup( GROUP_CHUD, - sm_pos, i.size, i.size * 20 ) ); + spawn_mon_group( mongroup( GROUP_CHUD, + sm_pos, i.size, i.size * 20 ) ); } // Sewers are present at z == -1. Don't spawn sewer monsters on other z-levels. if( z == -1 && !one_in( 8 ) ) { - add_mon_group( mongroup( GROUP_SEWER, - sm_pos, ( i.size * 7 ) / 2, i.size * 70 ) ); + spawn_mon_group( mongroup( GROUP_SEWER, + sm_pos, ( i.size * 7 ) / 2, i.size * 70 ) ); } } @@ -1727,12 +1728,12 @@ bool overmap::generate_sub( const int z ) for( auto &i : ant_points ) { const tripoint_om_omt p_loc( i.pos, z ); - if( ter( p_loc ) != "empty_rock" ) { + if( ter( p_loc ) != "empty_rock" && ter( p_loc ) != "solid_earth" ) { continue; } mongroup_id ant_group( ter( p_loc + tripoint_above ) == "anthill" ? "GROUP_ANT" : "GROUP_ANT_ACID" ); - add_mon_group( + spawn_mon_group( mongroup( ant_group, tripoint_om_sm( project_to( i.pos ), z ), ( i.size * 3 ) / 2, rng( 6000, 8000 ) ) ); build_anthill( p_loc, i.size, ter( p_loc + tripoint_above ) == "anthill" ); @@ -1749,7 +1750,7 @@ bool overmap::generate_over( const int z ) // These are so common that it's worth checking first as int. const std::set skip_below = { oter_id( "empty_rock" ), oter_id( "forest" ), oter_id( "field" ), - oter_id( "forest_thick" ), oter_id( "forest_water" ) + oter_id( "forest_thick" ), oter_id( "forest_water" ), oter_id( "solid_earth" ) }; if( z == 1 ) { @@ -1904,7 +1905,7 @@ void overmap::place_special_forced( const overmap_special_id &special_id, const om_direction::type dir ) { static city invalid_city; - place_special( *special_id, p, dir, invalid_city, false, false ); + place_special( *special_id, p, dir, invalid_city, false, true ); } void mongroup::wander( const overmap &om ) @@ -1965,11 +1966,11 @@ void overmap::move_hordes() // Decrease movement chance according to the terrain we're currently on. const oter_id &walked_into = ter( project_to( mg.pos ) ); int movement_chance = 1; - if( walked_into == ot_forest || walked_into == ot_forest_water ) { + if( walked_into == forest || walked_into == forest_water ) { movement_chance = 3; - } else if( walked_into == ot_forest_thick ) { + } else if( walked_into == forest_thick ) { movement_chance = 6; - } else if( walked_into == ot_river_center ) { + } else if( walked_into == river_center ) { movement_chance = 10; } @@ -2339,9 +2340,7 @@ void overmap::place_forest_trailheads() void overmap::place_forests() { - const oter_id default_oter_id( settings.default_oter ); - const oter_id forest( "forest" ); - const oter_id forest_thick( "forest_thick" ); + const oter_id default_oter_id( settings.default_oter[OVERMAP_DEPTH] ); const om_noise::om_noise_layer_forest f( global_base_point(), g->get_seed() ); @@ -2520,7 +2519,6 @@ void overmap::place_rivers( const overmap *north, const overmap *east, const ove // Determine points where rivers & roads should connect w/ adjacent maps // optimized comparison. - const oter_id river_center( "river_center" ); if( north != nullptr ) { for( int i = 2; i < OMAPX - 2; i++ ) { @@ -2684,8 +2682,6 @@ void overmap::place_swamps() } } - const oter_id forest_water( "forest_water" ); - // Get a layer of noise to use in conjunction with our river buffered floodplain. const om_noise::om_noise_layer_floodplain f( global_base_point(), g->get_seed() ); @@ -2797,7 +2793,6 @@ void overmap::place_roads( const overmap *north, const overmap *east, const over void overmap::place_river( const point_om_omt &pa, const point_om_omt &pb ) { - const oter_id river_center( "river_center" ); int river_chance = static_cast( std::max( 1.0, 1.0 / settings.river_scale ) ); int river_scale = static_cast( std::max( 1.0, settings.river_scale ) ); point_om_omt p2( pa ); @@ -2950,7 +2945,7 @@ void overmap::place_cities() point_om_omt c( rng( size - 1, OMAPX - size ), rng( size - 1, OMAPY - size ) ); const tripoint_om_omt p( c, 0 ); - if( ter( p ) == settings.default_oter ) { + if( ter( p ) == settings.default_oter[OVERMAP_DEPTH] ) { placement_attempts = 0; ter_set( p, oter_id( "road_nesw" ) ); // every city starts with an intersection city tmp; @@ -3318,7 +3313,8 @@ void overmap::build_tunnel( const tripoint_om_omt &p, int s, om_direction::type if( check_ot( "ants", ot_match_type::type, p ) ) { return; } - if( !is_ot_match( "empty_rock", ter( p ), ot_match_type::type ) ) { + if( !is_ot_match( "empty_rock", ter( p ), ot_match_type::type ) && + !is_ot_match( "solid_earth", ter( p ), ot_match_type::type ) ) { return; } } @@ -3329,8 +3325,9 @@ void overmap::build_tunnel( const tripoint_om_omt &p, int s, om_direction::type valid.reserve( om_direction::size ); for( om_direction::type r : om_direction::all ) { const tripoint_om_omt cand = p + om_direction::displace( r ); - if( !check_ot( "ants", ot_match_type::type, cand ) && - is_ot_match( "empty_rock", ter( cand ), ot_match_type::type ) ) { + if( !check_ot( "ants", ot_match_type::type, cand ) && ( + is_ot_match( "empty_rock", ter( cand ), ot_match_type::type ) || + is_ot_match( "solid_earth", ter( cand ), ot_match_type::type ) ) ) { valid.push_back( r ); } } @@ -4074,6 +4071,7 @@ void overmap::place_special( } const bool blob = special.flags.count( "BLOB" ) > 0; + const bool is_safe_zone = special.flags.count( "SAFE_AT_WORLDGEN" ) > 0; for( const auto &elem : special.terrains ) { const tripoint_om_omt location = p + om_direction::rotate( elem.p, dir ); @@ -4081,6 +4079,9 @@ void overmap::place_special( overmap_special_placements[location] = special.id; ter_set( location, tid ); + if( is_safe_zone ) { + safe_at_worldgen.emplace( location ); + } if( blob ) { for( int x = -2; x <= 2; x++ ) { @@ -4125,7 +4126,18 @@ void overmap::place_special( const overmap_special_spawns &spawns = special.spawns; const int pop = rng( spawns.population.min, spawns.population.max ); const int rad = rng( spawns.radius.min, spawns.radius.max ); - add_mon_group( mongroup( spawns.group, project_to( p ), rad, pop ) ); + spawn_mon_group( mongroup( spawns.group, project_to( p ), rad, pop ) ); + } + // If it's a safe zone, remove existing spawns + if( is_safe_zone ) { + for( auto it = zg.begin(); it != zg.end(); ) { + tripoint_om_omt pos = project_to( it->second.pos ); + if( safe_at_worldgen.find( pos ) != safe_at_worldgen.end() ) { + zg.erase( it++ ); + } else { + ++it; + } + } } } @@ -4348,22 +4360,6 @@ void overmap::place_specials( overmap_special_batch &enabled_specials ) void overmap::place_mongroups() { - // Cities are full of zombies - for( city &elem : cities ) { - if( get_option( "WANDER_SPAWNS" ) ) { - if( !one_in( 16 ) || elem.size > 5 ) { - mongroup m( GROUP_ZOMBIE, - tripoint_om_sm( project_to( elem.pos ), 0 ), - static_cast( elem.size * 2.5 ), - elem.size * 80 ); - // m.set_target( zg.back().posx, zg.back().posy ); - m.horde = true; - m.wander( *this ); - add_mon_group( m ); - } - } - } - if( get_option( "DISABLE_ANIMAL_CLASH" ) ) { // Figure out where swamps are, and place swamp monsters for( int x = 3; x < OMAPX - 3; x += 7 ) { @@ -4377,8 +4373,8 @@ void overmap::place_mongroups() } } if( swamp_count >= 25 ) { - add_mon_group( mongroup( GROUP_SWAMP, tripoint( x * 2, y * 2, 0 ), 3, - rng( swamp_count * 8, swamp_count * 25 ) ) ); + spawn_mon_group( mongroup( GROUP_SWAMP, tripoint( x * 2, y * 2, 0 ), 3, + rng( swamp_count * 8, swamp_count * 25 ) ) ); } } } @@ -4396,8 +4392,8 @@ void overmap::place_mongroups() } } if( river_count >= 25 ) { - add_mon_group( mongroup( GROUP_RIVER, tripoint( x * 2, y * 2, 0 ), 3, - rng( river_count * 8, river_count * 25 ) ) ); + spawn_mon_group( mongroup( GROUP_RIVER, tripoint( x * 2, y * 2, 0 ), 3, + rng( river_count * 8, river_count * 25 ) ) ); } } } @@ -4405,9 +4401,9 @@ void overmap::place_mongroups() // Place the "put me anywhere" groups int numgroups = rng( 0, 3 ); for( int i = 0; i < numgroups; i++ ) { - add_mon_group( mongroup( GROUP_WORM, tripoint( rng( 0, OMAPX * 2 - 1 ), rng( 0, - OMAPY * 2 - 1 ), 0 ), - rng( 20, 40 ), rng( 30, 50 ) ) ); + spawn_mon_group( mongroup( GROUP_WORM, tripoint( rng( 0, OMAPX * 2 - 1 ), rng( 0, + OMAPY * 2 - 1 ), 0 ), + rng( 20, 40 ), rng( 30, 50 ) ) ); } } @@ -4485,6 +4481,15 @@ void overmap::save() const } ); } +void overmap::spawn_mon_group( const mongroup &group ) +{ + tripoint_om_omt pos = project_to( group.pos ); + if( safe_at_worldgen.find( pos ) != safe_at_worldgen.end() ) { + return; + } + add_mon_group( group ); +} + void overmap::add_mon_group( const mongroup &group ) { // Monster groups: the old system had large groups (radius > 1), diff --git a/src/overmap.h b/src/overmap.h index e1b64da5cfb50..7050a3cf3ad97 100644 --- a/src/overmap.h +++ b/src/overmap.h @@ -365,6 +365,8 @@ class overmap // can be used after placement to lookup whether a given location was created // as part of a special. std::unordered_map overmap_special_placements; + // Records location where mongroups are not allowed to spawn during worldgen. + std::unordered_set safe_at_worldgen; regional_settings settings; @@ -509,6 +511,8 @@ class overmap void place_radios(); void add_mon_group( const mongroup &group ); + // Spawns a new mongroup (to be called by worldgen code) + void spawn_mon_group( const mongroup &group ); void load_monster_groups( JsonIn &jsin ); void load_legacy_monstergroups( JsonIn &jsin ); diff --git a/src/overmap_ui.cpp b/src/overmap_ui.cpp index 8a29ac4c1b97e..d40225d3c003b 100644 --- a/src/overmap_ui.cpp +++ b/src/overmap_ui.cpp @@ -1139,7 +1139,7 @@ void draw( input_context *inp_ctxt, const draw_data_t &data ) { draw_om_sidebar( wbar, center, orig, blink, fast_scroll, inp_ctxt, data ); - if( !use_tiles ) { + if( !use_tiles || !use_tiles_overmap ) { draw_ascii( w, center, orig, blink, show_explored, fast_scroll, inp_ctxt, data ); } else { #ifdef TILES @@ -1513,9 +1513,18 @@ static void place_ter_or_special( const ui_adaptor &om_ui, tripoint_abs_omt &cur } } +static int overmap_zoom_level = DEFAULT_TILESET_ZOOM; + static tripoint_abs_omt display( const tripoint_abs_omt &orig, const draw_data_t &data = draw_data_t() ) { + const int previous_zoom = g->get_zoom(); + g->set_zoom( overmap_zoom_level ); + on_out_of_scope reset_zoom( [&]() { + overmap_zoom_level = g->get_zoom(); + g->set_zoom( previous_zoom ); + } ); + background_pane bg_pane; ui_adaptor ui; diff --git a/src/overmapbuffer.cpp b/src/overmapbuffer.cpp index e021bbc878cb9..d91439c85466c 100644 --- a/src/overmapbuffer.cpp +++ b/src/overmapbuffer.cpp @@ -136,7 +136,7 @@ void overmapbuffer::fix_mongroups( overmap &new_overmap ) } overmap &om = get( omp ); mg.pos = tripoint_om_sm( sm_rem, mg.pos.z() ); - om.add_mon_group( mg ); + om.spawn_mon_group( mg ); new_overmap.zg.erase( it++ ); } } diff --git a/src/panels.cpp b/src/panels.cpp index 96569b066cf2b..dd45ac491dd4f 100644 --- a/src/panels.cpp +++ b/src/panels.cpp @@ -34,6 +34,7 @@ #include "input.h" #include "item.h" #include "json.h" +#include "make_static.h" #include "magic.h" #include "map.h" #include "messages.h" @@ -470,7 +471,7 @@ static std::string get_temp( const avatar &u ) { std::string temp; if( u.has_item_with_flag( json_flag_THERMOMETER ) || - u.has_bionic( bionic_id( "bio_meteorologist" ) ) ) { + u.has_flag( STATIC( json_character_flag( "THERMOMETER" ) ) ) ) { temp = print_temperature( get_weather().get_temperature( u.pos() ) ); } if( temp.empty() ) { @@ -1011,7 +1012,7 @@ static std::pair weariness_description( size_t weariness return weary_descriptions[weariness]; } -static std::string activity_level_str( float level ) +std::string activity_level::activity_level_str( float level ) { static const std::array activity_descriptions { { to_translation( "activity description", "None" ), @@ -1073,7 +1074,8 @@ static void draw_stats( avatar &u, const catacurses::window &w ) mvwprintz( w, point_south, c_light_gray, _( weary_label ) ); mvwprintz( w, point( wlabel_len + 1, 1 ), weary.second, weary.first.translated() ); mvwprintz( w, point( act_start, 1 ), c_light_gray, _( activity_label ) ); - mvwprintz( w, point( act_start + alabel_len + 1, 1 ), act_color, activity_level_str( activity ) ); + mvwprintz( w, point( act_start + alabel_len + 1, 1 ), act_color, + activity_level::activity_level_str( activity ) ); wnoutrefresh( w ); } @@ -1390,7 +1392,8 @@ static void draw_stat_narrow( avatar &u, const catacurses::window &w ) mvwprintz( w, point( 1, 3 ), c_light_gray, _( weary_label ) ); mvwprintz( w, point( wlabel_len + 2, 3 ), weary.second, weary.first.translated() ); mvwprintz( w, point( act_start, 3 ), c_light_gray, _( activity_label ) ); - mvwprintz( w, point( act_start + alabel_len + 1, 3 ), act_color, activity_level_str( activity ) ); + mvwprintz( w, point( act_start + alabel_len + 1, 3 ), act_color, + activity_level::activity_level_str( activity ) ); wnoutrefresh( w ); } @@ -1440,7 +1443,8 @@ static void draw_stat_wide( avatar &u, const catacurses::window &w ) mvwprintz( w, point( 1, 2 ), c_light_gray, _( weary_label ) ); mvwprintz( w, point( wlabel_len + 2, 2 ), weary.second, weary.first.translated() ); mvwprintz( w, point( act_start, 2 ), c_light_gray, _( activity_label ) ); - mvwprintz( w, point( act_start + alabel_len + 1, 2 ), act_color, activity_level_str( activity ) ); + mvwprintz( w, point( act_start + alabel_len + 1, 2 ), act_color, + activity_level::activity_level_str( activity ) ); wnoutrefresh( w ); } @@ -1676,7 +1680,7 @@ static void draw_env_compact( avatar &u, const catacurses::window &w ) get_wind_desc( windpower ) + " " + get_wind_arrow( g->weather.winddirection ) ); if( u.has_item_with_flag( json_flag_THERMOMETER ) || - u.has_bionic( bionic_id( "bio_meteorologist" ) ) ) { + u.has_flag( STATIC( json_character_flag( "THERMOMETER" ) ) ) ) { std::string temp = print_temperature( g->weather.get_temperature( u.pos() ) ); mvwprintz( w, point( 31 - utf8_width( temp ), 5 ), c_light_gray, temp ); } @@ -2058,7 +2062,7 @@ static void draw_time_classic( const avatar &u, const catacurses::window &w ) } if( u.has_item_with_flag( json_flag_THERMOMETER ) || - u.has_bionic( bionic_id( "bio_meteorologist" ) ) ) { + u.has_flag( STATIC( json_character_flag( "THERMOMETER" ) ) ) ) { std::string temp = print_temperature( get_weather().get_temperature( u.pos() ) ); mvwprintz( w, point( 31, 0 ), c_light_gray, _( "Temp : " ) + temp ); } @@ -2208,7 +2212,8 @@ static void draw_weariness_classic( const avatar &u, const catacurses::window &w mvwprintz( w, point_zero, c_light_gray, _( weary_label ) ); mvwprintz( w, point( wlabel_len + 1, 0 ), weary.second, weary.first.translated() ); mvwprintz( w, point( act_start, 0 ), c_light_gray, _( activity_label ) ); - mvwprintz( w, point( act_start + alabel_len + 1, 0 ), act_color, activity_level_str( activity ) ); + mvwprintz( w, point( act_start + alabel_len + 1, 0 ), act_color, + activity_level::activity_level_str( activity ) ); std::pair bar = u.weariness_transition_progress(); std::pair weary_bar = get_hp_bar( bar.first, bar.second ); diff --git a/src/panels.h b/src/panels.h index cba5614e27643..4c0a91b86eef2 100644 --- a/src/panels.h +++ b/src/panels.h @@ -16,6 +16,11 @@ class JsonOut; class avatar; struct point; +namespace activity_level +{ +const std::string activity_level_str( float level ); +} // namespace activity_level + namespace catacurses { class window; diff --git a/src/player.cpp b/src/player.cpp index f9e089e514cff..56fedd5b84d7b 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -142,7 +142,6 @@ static const proficiency_id proficiency_prof_spotting( "prof_spotting" ); static const bionic_id bio_cqb( "bio_cqb" ); static const bionic_id bio_ground_sonar( "bio_ground_sonar" ); static const bionic_id bio_soporific( "bio_soporific" ); -static const bionic_id bio_speed( "bio_speed" ); static const json_character_flag json_flag_FEATHER_FALL( "FEATHER_FALL" ); @@ -468,13 +467,10 @@ void player::recalc_speed_bonus() } } - float speed_modifier = Character::mutation_value( "speed_modifier" ); + float speed_modifier = static_cast( enchantment_cache->modify_value( + enchant_vals::mod::SPEED, 1 ) ); set_speed_bonus( static_cast( get_speed() * speed_modifier ) - get_speed_base() ); - if( has_bionic( bio_speed ) ) { // multiply by 1.1 - set_speed_bonus( static_cast( get_speed() * 1.1 ) - get_speed_base() ); - } - // Speed cannot be less than 25% of base speed, so minimal speed bonus is -75% base speed. const int min_speed_bonus = static_cast( -0.75 * get_speed_base() ); if( get_speed_bonus() < min_speed_bonus ) { @@ -1096,7 +1092,7 @@ void player::siphon( vehicle &veh, const itype_id &desired_liquid ) } item liquid( desired_liquid, calendar::turn, qty ); - if( liquid.is_food() ) { + if( liquid.has_temperature() ) { liquid.set_item_specific_energy( veh.fuel_specific_energy( desired_liquid ) ); } if( liquid_handler::handle_liquid( liquid, nullptr, 1, nullptr, &veh ) ) { @@ -1968,8 +1964,11 @@ ret_val player::can_takeoff( const item &it, const std::list *res ) return ret_val::make_success(); } -bool player::takeoff( item &it, std::list *res ) +bool player::takeoff( item_location loc, std::list *res ) { + item &it = *loc; + + const auto ret = can_takeoff( it, res ); if( !ret.success() ) { add_msg( m_info, "%s", ret.c_str() ); @@ -2002,9 +2001,11 @@ bool player::takeoff( item &it, std::list *res ) return true; } + bool player::takeoff( int pos ) { - return takeoff( i_at( pos ) ); + item_location loc = item_location( *this, &i_at( pos ) ); + return takeoff( loc ); } void player::use_wielded() @@ -2417,7 +2418,7 @@ bool player::wield_contents( item &container, item *internal_item, bool penaltie // if index not specified and container has multiple items then ask the player to choose one if( internal_item == nullptr ) { std::vector opts; - std::list container_contents = container.contents.all_items_top(); + std::list container_contents = container.all_items_top(); std::transform( container_contents.begin(), container_contents.end(), std::back_inserter( opts ), []( const item * elem ) { return elem->display_name(); diff --git a/src/player.h b/src/player.h index 0f6a92e52a3db..240cc74650761 100644 --- a/src/player.h +++ b/src/player.h @@ -213,12 +213,12 @@ class player : public Character /** Used for eating object at a location. Removes item if all of it was consumed. * @returns trinary enum NONE, SOME or ALL amount consumed. */ - trinary consume( item_location loc, bool force = false ); + trinary consume( item_location loc, bool force = false, bool refuel = false ); /** Used for eating a particular item that doesn't need to be in inventory. * @returns trinary enum NONE, SOME or ALL (doesn't remove). */ - trinary consume( item &target, bool force = false ); + trinary consume( item &target, bool force = false, bool refuel = false ); int get_lift_assist() const; @@ -266,9 +266,10 @@ class player : public Character wear( item_location item_wear, bool interactive = true ); /** Takes off an item, returning false on fail. The taken off item is processed in the interact */ - bool takeoff( item &it, std::list *res = nullptr ); + bool takeoff( item_location loc, std::list *res = nullptr ); bool takeoff( int pos ); + /** * Try to wield a contained item consuming moves proportional to weapon skill and volume. * @param container Container containing the item to be wielded diff --git a/src/player_activity.h b/src/player_activity.h index d9811ef6d3dda..5eec6174d07df 100644 --- a/src/player_activity.h +++ b/src/player_activity.h @@ -12,6 +12,7 @@ #include "activity_actor.h" #include "clone_ptr.h" +#include "compatibility.h" #include "enums.h" #include "item_location.h" #include "memory_fast.h" @@ -87,7 +88,7 @@ class player_activity player_activity( player_activity && ) noexcept = default; player_activity( const player_activity & ) = default; - player_activity &operator=( player_activity && ) noexcept = default; + player_activity &operator=( player_activity && ) noexcept( list_is_noexcept ) = default; player_activity &operator=( const player_activity & ) = default; explicit operator bool() const { diff --git a/src/player_display.cpp b/src/player_display.cpp index cc403e8e0c21b..22f63abaf37bb 100644 --- a/src/player_display.cpp +++ b/src/player_display.cpp @@ -937,20 +937,13 @@ static void draw_speed_tab( const catacurses::window &w_speed, } } - int quick_bonus = static_cast( newmoves - ( newmoves / 1.1 ) ); - int bio_speed_bonus = quick_bonus; - if( you.has_trait( trait_id( "QUICK" ) ) && you.has_bionic( bionic_id( "bio_speed" ) ) ) { - bio_speed_bonus = static_cast( newmoves / 1.1 - ( newmoves / 1.1 / 1.1 ) ); - std::swap( quick_bonus, bio_speed_bonus ); - } - if( you.has_trait( trait_id( "QUICK" ) ) ) { - mvwprintz( w_speed, point( 1, line ), c_green, - pgettext( "speed bonus", "Quick +%2d%%" ), quick_bonus ); - line++; - } - if( you.has_bionic( bionic_id( "bio_speed" ) ) ) { + float speed_modifier = static_cast( you.enchantment_cache->modify_value( + enchant_vals::mod::SPEED, 1 ) ); + + if( speed_modifier != 1.0f ) { + int misc_bonus = static_cast( newmoves - ( newmoves / speed_modifier ) ); mvwprintz( w_speed, point( 1, line ), c_green, - pgettext( "speed bonus", "Bionic Speed +%2d%%" ), bio_speed_bonus ); + pgettext( "speed bonus", "Bio/Mut/Effects +%2d%%" ), misc_bonus ); line++; } diff --git a/src/point.h b/src/point.h index dbcb3ec56e82f..4f4d93cc6ddb8 100644 --- a/src/point.h +++ b/src/point.h @@ -244,6 +244,7 @@ struct tripoint { friend inline constexpr bool operator!=( const tripoint &a, const tripoint &b ) { return !( a == b ); } + friend inline bool operator<( const tripoint &a, const tripoint &b ) { if( a.x != b.x ) { return a.x < b.x; diff --git a/src/profession.cpp b/src/profession.cpp index 92f84f13f2139..32c26e8ac1b10 100644 --- a/src/profession.cpp +++ b/src/profession.cpp @@ -679,7 +679,7 @@ std::vector json_item_substitution::get_substitution( const item &it, auto iter = substitutions.find( it.typeId() ); std::vector ret; if( iter == substitutions.end() ) { - for( const item *con : it.contents.all_items_top() ) { + for( const item *con : it.all_items_top() ) { const auto sub = get_substitution( *con, traits ); ret.insert( ret.end(), sub.begin(), sub.end() ); } diff --git a/src/ranged.cpp b/src/ranged.cpp index 7966a97f9e30f..5379b3539d157 100644 --- a/src/ranged.cpp +++ b/src/ranged.cpp @@ -107,7 +107,6 @@ static const skill_id skill_launcher( "launcher" ); static const skill_id skill_throw( "throw" ); static const bionic_id bio_railgun( "bio_railgun" ); -static const bionic_id bio_targeting( "bio_targeting" ); static const bionic_id bio_ups( "bio_ups" ); static const std::string flag_MOUNTABLE( "MOUNTABLE" ); @@ -1778,12 +1777,6 @@ item::sound_data item::gun_noise( const bool burst ) const return { 0, "" }; // silent weapons } -static bool is_driving( const Character &p ) -{ - const optional_vpart_position vp = get_map().veh_at( p.pos() ); - return vp && vp->vehicle().is_moving() && vp->vehicle().player_in_control( p ); -} - static double dispersion_from_skill( double skill, double weapon_dispersion ) { if( skill >= MAX_SKILL ) { @@ -1823,7 +1816,7 @@ dispersion_sources Character::get_weapon_dispersion( const item &obj ) const } dispersion.add_range( arm_encumb / 5.0 ); - if( is_driving( *this ) ) { + if( is_driving() ) { // get volume of gun (or for auxiliary gunmods the parent gun) const item *parent = has_item( obj ) ? find_parent( obj ) : nullptr; const int vol = ( parent ? parent->volume() : obj.volume() ) / 250_ml; @@ -1839,8 +1832,10 @@ dispersion_sources Character::get_weapon_dispersion( const item &obj ) const dispersion.add_range( dispersion_from_skill( avgSkill, weapon_dispersion ) ); - if( has_bionic( bio_targeting ) ) { - dispersion.add_multiplier( 0.75 ); + float disperation_mod = enchantment_cache->modify_value( enchant_vals::mod::WEAPON_DISPERSION, + 1.0f ); + if( disperation_mod != 1.0f ) { + dispersion.add_multiplier( disperation_mod ); } // Range is effectively four times longer when shooting unflagged/flagged guns underwater/out of water. @@ -2085,6 +2080,7 @@ target_handler::trajectory target_ui::run() } } + // Event loop! ExitCode loop_exit_code; std::string timed_out_action; @@ -3003,6 +2999,7 @@ void target_ui::draw_terrain_overlay() // Draw spell AOE if( mode == TargetMode::Spell ) { + drawsq_params params; for( const tripoint &tile : spell_aoe ) { if( tile.z != center.z ) { continue; @@ -3012,7 +3009,7 @@ void target_ui::draw_terrain_overlay() g->draw_highlight( tile ); } else { #endif - get_map().drawsq( g->w_terrain, *you, tile, true, true, center ); + get_map().drawsq( g->w_terrain, tile, params ); #ifdef TILES } #endif diff --git a/src/recipe.cpp b/src/recipe.cpp index 12d05a400c797..deee47ea8fa32 100644 --- a/src/recipe.cpp +++ b/src/recipe.cpp @@ -614,15 +614,15 @@ static std::string profstring( const prof_penalty &prof, } if( prof.time_mult == 1.0f ) { - return string_format( _( "%s (%gx\u00a0failure%s)" ), + return string_format( _( "%s (%.1fx\u00a0failure%s)" ), name_color, prof.id->name(), color, prof.failure_mult, mitigated_str ); } else if( prof.failure_mult == 1.0f ) { - return string_format( _( "%s (%gx\u00a0time%s)" ), + return string_format( _( "%s (%.1fx\u00a0time%s)" ), name_color, prof.id->name(), color, prof.time_mult, mitigated_str ); } return string_format( - _( "%s (%gx\u00a0time, %gx\u00a0failure%s)" ), + _( "%s (%.1fx\u00a0time, %.1fx\u00a0failure%s)" ), name_color, prof.id->name(), color, prof.time_mult, prof.failure_mult, mitigated_str ); } @@ -650,39 +650,6 @@ std::string recipe::used_proficiencies_string( const Character *c ) const return used; } -std::string recipe::missing_proficiencies_string( const Character *c ) const -{ - if( c == nullptr ) { - return { }; - } - std::vector missing_profs; - - const book_proficiency_bonuses book_bonuses = - c->crafting_inventory().get_book_proficiency_bonuses(); - for( const recipe_proficiency &rec : proficiencies ) { - if( !rec.required ) { - if( !( c->has_proficiency( rec.id ) || helpers_have_proficiencies( *c, rec.id ) ) ) { - prof_penalty pen = { rec.id, rec.time_multiplier, rec.fail_multiplier }; - if( book_bonuses.time_factor( pen.id ) != 0.0f || book_bonuses.fail_factor( pen.id ) != 0.0f ) { - pen.time_mult = 1.0f + ( pen.time_mult - 1.0f ) * ( 1.0f - book_bonuses.time_factor( pen.id ) ); - pen.failure_mult = 1.0f + ( pen.failure_mult - 1.0f ) * ( 1.0f - book_bonuses.fail_factor( - pen.id ) ); - pen.mitigated = true; - } - missing_profs.push_back( pen ); - } - } - } - - std::string color = "yellow"; - std::string missing = enumerate_as_string( missing_profs.begin(), - missing_profs.end(), [&]( const prof_penalty & prof ) { - return profstring( prof, color, c->has_prof_prereqs( prof.id ) ? "cyan" : "red" ); - } ); - - return missing; -} - std::string recipe::recipe_proficiencies_string() const { std::vector profs; @@ -730,34 +697,95 @@ std::set recipe::assist_proficiencies() const return ret; } -float recipe::proficiency_time_maluses( const Character &guy ) const +static float get_aided_proficiency_level( const Character &crafter, proficiency_id prof ) +{ + float max_prof = crafter.get_proficiency_practice( prof ); + for( const npc *helper : crafter.get_crafting_helpers() ) { + max_prof = std::max( max_prof, helper->get_proficiency_practice( prof ) ); + } + return max_prof; +} + +static float proficiency_time_malus( const Character &crafter, const recipe_proficiency &prof ) +{ + if( !crafter.has_proficiency( prof.id ) && + !helpers_have_proficiencies( crafter, prof.id ) && prof.time_multiplier > 1.0f ) { + double malus = prof.time_multiplier - 1.0; + malus *= 1.0 - crafter.crafting_inventory().get_book_proficiency_bonuses().time_factor( prof.id ); + double pl = get_aided_proficiency_level( crafter, prof.id ); + // Sigmoid function that mitigates 100% of the time malus as pl approaches 1.0 + // but has little effect at pl < 0.5. See #49198 + malus *= 1.0 - std::pow( 0.5 - 0.5 * std::cos( pl * M_PI ), 2 ); + return static_cast( 1.0 + malus ); + } + return 1.0f; +} + +float recipe::proficiency_time_maluses( const Character &crafter ) const { float total_malus = 1.0f; for( const recipe_proficiency &prof : proficiencies ) { - if( !guy.has_proficiency( prof.id ) && - !helpers_have_proficiencies( guy, prof.id ) && prof.time_multiplier > 1.0f ) { - float malus = 1.0f + ( prof.time_multiplier - 1.0f ) * - ( 1.0f - guy.crafting_inventory().get_book_proficiency_bonuses().time_factor( prof.id ) ); - total_malus *= malus; - } + total_malus *= proficiency_time_malus( crafter, prof ); } return total_malus; } -float recipe::proficiency_failure_maluses( const Character &guy ) const +static float proficiency_failure_malus( const Character &crafter, const recipe_proficiency &prof ) +{ + if( !crafter.has_proficiency( prof.id ) && + !helpers_have_proficiencies( crafter, prof.id ) && prof.fail_multiplier > 1.0f ) { + double malus = prof.fail_multiplier - 1.0f; + malus *= 1.0 - crafter.crafting_inventory().get_book_proficiency_bonuses().fail_factor( prof.id ); + double pl = get_aided_proficiency_level( crafter, prof.id ); + // The failure malus is not completely eliminated until the proficiency is mastered. + // Most of the mitigation happens at higher pl. See #49198 + malus *= 1.0 - ( 0.75 * std::pow( pl, 3 ) ); + return static_cast( 1.0 + malus ); + } + return 1.0f; +} + +float recipe::proficiency_failure_maluses( const Character &crafter ) const { float total_malus = 1.0f; for( const recipe_proficiency &prof : proficiencies ) { - if( !guy.has_proficiency( prof.id ) && - !helpers_have_proficiencies( guy, prof.id ) && prof.fail_multiplier > 1.0f ) { - float malus = 1.0f + ( prof.fail_multiplier - 1.0f ) * - ( 1.0f - guy.crafting_inventory().get_book_proficiency_bonuses().fail_factor( prof.id ) ); - total_malus *= malus; - } + total_malus *= proficiency_failure_malus( crafter, prof ); } return total_malus; } +std::string recipe::missing_proficiencies_string( const Character *crafter ) const +{ + if( crafter == nullptr ) { + return { }; + } + std::vector missing_profs; + + const book_proficiency_bonuses book_bonuses = + crafter->crafting_inventory().get_book_proficiency_bonuses(); + for( const recipe_proficiency &prof : proficiencies ) { + if( !prof.required ) { + if( !( crafter->has_proficiency( prof.id ) || helpers_have_proficiencies( *crafter, prof.id ) ) ) { + prof_penalty pen = { prof.id, + proficiency_time_malus( *crafter, prof ), + proficiency_failure_malus( *crafter, prof ) + }; + pen.mitigated = book_bonuses.time_factor( pen.id ) != 0.0f || + book_bonuses.fail_factor( pen.id ) != 0.0f; + missing_profs.push_back( pen ); + } + } + } + + std::string color = "yellow"; + std::string missing = enumerate_as_string( missing_profs.begin(), + missing_profs.end(), [&]( const prof_penalty & prof ) { + return profstring( prof, color, crafter->has_prof_prereqs( prof.id ) ? "cyan" : "red" ); + } ); + + return missing; +} + float recipe::exertion_level() const { return exertion; @@ -890,7 +918,7 @@ std::function recipe::get_component_filter( // EDIBLE_FROZEN components ( e.g. flour, chocolate ) are allowed as well // Otherwise forbid them std::function frozen_filter = return_true; - if( result.is_food() && !hot_result() ) { + if( result.has_temperature() && !hot_result() ) { frozen_filter = []( const item & component ) { return !component.has_flag( flag_FROZEN ) || component.has_flag( flag_EDIBLE_FROZEN ); }; @@ -1029,7 +1057,7 @@ bool recipe::hot_result() const // the check includes this tool in addition to the hotplate. // // TODO: Make this less of a hack - if( create_result().is_food() ) { + if( create_result().has_temperature() ) { const requirement_data::alter_tool_comp_vector &tool_lists = simple_requirements().get_tools(); for( const std::vector &tools : tool_lists ) { for( const tool_comp &t : tools ) { diff --git a/src/recipe.h b/src/recipe.h index 5799fe6d27a20..0624bd160af05 100644 --- a/src/recipe.h +++ b/src/recipe.h @@ -184,9 +184,9 @@ class recipe // Helpful proficiencies std::set assist_proficiencies() const; // The time malus due to proficiencies lacking - float proficiency_time_maluses( const Character &guy ) const; + float proficiency_time_maluses( const Character &crafter ) const; // The failure malus due to proficiencies lacking - float proficiency_failure_maluses( const Character &guy ) const; + float proficiency_failure_maluses( const Character &crafter ) const; // How active of exercise this recipe is float exertion_level() const; diff --git a/src/regional_settings.cpp b/src/regional_settings.cpp index 87598ef911d07..eb7902ae1440c 100644 --- a/src/regional_settings.cpp +++ b/src/regional_settings.cpp @@ -9,6 +9,7 @@ #include "debug.h" #include "enum_conversions.h" +#include "generic_factory.h" #include "json.h" #include "options.h" #include "output.h" @@ -436,9 +437,9 @@ void load_region_settings( const JsonObject &jo ) jo.throw_error( "No 'id' field." ); } bool strict = new_region.id == "default"; - if( !jo.read( "default_oter", new_region.default_oter ) && strict ) { - jo.throw_error( "default_oter required for default ( though it should probably remain 'field' )" ); - } + mandatory( jo, false, "default_oter", new_region.default_oter ); + // So the data definition goes from z = OVERMAP_HEIGHT to z = OVERMAP_DEPTH + std::reverse( new_region.default_oter.begin(), new_region.default_oter.end() ); if( !jo.read( "river_scale", new_region.river_scale ) && strict ) { jo.throw_error( "river_scale required for default" ); } @@ -602,7 +603,7 @@ void check_region_settings() const std::string ®ion_name = p.first; const regional_settings ®ion = p.second; for( const std::pair &p2 : region.region_extras ) { - const std::string extras_name = p.first; + const std::string extras_name = p2.first; const map_extras &extras = p2.second; if( extras.chance == 0 ) { continue; @@ -734,17 +735,25 @@ void apply_region_overlay( const JsonObject &jo, regional_settings ®ion ) continue; } JsonObject zonejo = zone.get_object(); + map_extras &extras = region.region_extras[zone.name()]; int tmpval = 0; if( zonejo.read( "chance", tmpval ) ) { - region.region_extras[zone.name()].chance = tmpval; + extras.chance = tmpval; } for( const JsonMember member : zonejo.get_object( "extras" ) ) { if( member.is_comment() ) { continue; } - region.region_extras[zone.name()].values.add_or_replace( member.name(), member.get_int() ); + extras.values.add_or_replace( member.name(), member.get_int() ); + } + + // It's possible that all the entries of the weighted list have their + // weights set to zero by this overlay. In that case we want to reset + // the chance to zero. + if( !extras.values.is_valid() ) { + extras.chance = 0; } } diff --git a/src/regional_settings.h b/src/regional_settings.h index 9335ff13f3760..e3dcd29015d04 100644 --- a/src/regional_settings.h +++ b/src/regional_settings.h @@ -238,7 +238,7 @@ struct region_terrain_and_furniture_settings { */ struct regional_settings { std::string id; // - oter_str_id default_oter; // 'field' + std::array default_oter; double river_scale = 1; weighted_int_list default_groundcover; // i.e., 'grass_or_dirt' shared_ptr_fast> default_groundcover_str; @@ -256,7 +256,7 @@ struct regional_settings { std::unordered_map region_extras; - regional_settings() : id( "null" ), default_oter( "field" ) { + regional_settings() : id( "null" ) { default_groundcover.add( t_null, 0 ); } void finalize(); diff --git a/src/requirements.cpp b/src/requirements.cpp index b93d9293562b9..9df8d3aeabee3 100644 --- a/src/requirements.cpp +++ b/src/requirements.cpp @@ -745,17 +745,21 @@ bool requirement_data::has_comps( const read_only_visitable &crafting_inv, { bool retval = true; int total_UPS_charges_used = 0; - for( const auto &set_of_tools : vec ) { + for( const std::vector &set_of_tools : vec ) { bool has_tool_in_set = false; int UPS_charges_used = std::numeric_limits::max(); const std::function use_ups = [ &UPS_charges_used ]( int charges ) { UPS_charges_used = std::min( UPS_charges_used, charges ); }; - for( const auto &tool : set_of_tools ) { + for( const T &tool : set_of_tools ) { if( tool.has( crafting_inv, filter, batch, flags, use_ups ) ) { tool.available = available_status::a_true; } else { + // Trying to track down why the crafting tests are failing? + // Uncomment the below to see the group of requirements that are lacking satisfaction + // Add a printf("\n") to the loop above this to separate different groups onto a separate line + // printf( "T: %s ", tool.type.str().c_str() ); tool.available = available_status::a_false; } has_tool_in_set = has_tool_in_set || tool.available == available_status::a_true; diff --git a/src/savegame.cpp b/src/savegame.cpp index 86d99ff82e023..b62647049deab 100644 --- a/src/savegame.cpp +++ b/src/savegame.cpp @@ -386,7 +386,7 @@ void overmap::convert_terrain( if( old == "fema" || old == "fema_entrance" || old == "fema_1_3" || old == "fema_2_1" || old == "fema_2_2" || old == "fema_2_3" || old == "fema_3_1" || old == "fema_3_2" || old == "fema_3_3" || - old == "s_lot" || old == "mine_entrance" ) { + old == "s_lot" || old == "mine_entrance" || old == "triffid_finale" ) { ter_set( pos, oter_id( old + "_north" ) ); } else if( old.compare( 0, 6, "bridge" ) == 0 ) { ter_set( pos, oter_id( old ) ); @@ -397,6 +397,33 @@ void overmap::convert_terrain( ter_set( pos + tripoint_above, oter_id( "bridge_road" + oter_get_rotation_string( oter_ground ) ) ); bridge_points.emplace_back( pos.xy() ); } + } else if( old == "triffid_grove" ) { + { + ter_set( pos, oter_id( "triffid_grove_north" ) ); + ter_set( pos + point_north, oter_id( "triffid_field_north" ) ); + ter_set( pos + point_north_east, oter_id( "triffid_field_north" ) ); + ter_set( pos + point_east, oter_id( "triffid_field_north" ) ); + ter_set( pos + point_south_east, oter_id( "triffid_field_north" ) ); + ter_set( pos + point_south, oter_id( "triffid_field_north" ) ); + ter_set( pos + point_south_west, oter_id( "triffid_field_north" ) ); + ter_set( pos + point_west, oter_id( "triffid_field_north" ) ); + ter_set( pos + point_north_west, oter_id( "triffid_field_north" ) ); + ter_set( pos + tripoint_above, oter_id( "triffid_grove_z2_north" ) ); + ter_set( pos + tripoint( 0, 0, 2 ), oter_id( "triffid_grove_z3_north" ) ); + ter_set( pos + tripoint( 0, 0, 3 ), oter_id( "triffid_grove_roof_north" ) ); + } + } else if( old == "triffid_roots" ) { + { + ter_set( pos, oter_id( "triffid_roots_north" ) ); + ter_set( pos + point_south, oter_id( "triffid_rootsn_north" ) ); + ter_set( pos + point_south_east, oter_id( "triffid_rootsen_north" ) ); + ter_set( pos + point_east, oter_id( "triffid_rootse_north" ) ); + ter_set( pos + point_north_east, oter_id( "triffid_rootsse_north" ) ); + ter_set( pos + point_north, oter_id( "triffid_rootss_north" ) ); + ter_set( pos + point_north_west, oter_id( "triffid_rootssw_north" ) ); + ter_set( pos + point_west, oter_id( "triffid_rootsw_north" ) ); + ter_set( pos + point_south_west, oter_id( "triffid_rootsnw_north" ) ); + } } else if( old.compare( 0, 10, "mass_grave" ) == 0 ) { ter_set( pos, oter_id( "field" ) ); } else if( old == "mine_shaft" ) { diff --git a/src/savegame_json.cpp b/src/savegame_json.cpp index 349829f22488e..ceeeb47ba1b28 100644 --- a/src/savegame_json.cpp +++ b/src/savegame_json.cpp @@ -1432,10 +1432,6 @@ void avatar::load( const JsonObject &data ) } } - //Load from legacy map_memory save location (now in its own file .mm) - if( data.has_member( "map_memory_tiles" ) || data.has_member( "map_memory_curses" ) ) { - player_map_memory.load( data ); - } data.read( "show_map_memory", show_map_memory ); for( JsonArray pair : data.get_array( "assigned_invlet" ) ) { @@ -2548,7 +2544,9 @@ void item::io( Archive &archive ) if( count_by_charges() && charges <= 0 ) { charges = item( type, calendar::turn_zero ).charges; } - if( is_food() ) { + + // Items from old saves before those items were temperature tracked need activating. + if( has_temperature() ) { active = true; } if( !active && ( has_own_flag( flag_HOT ) || has_own_flag( flag_COLD ) || @@ -2714,61 +2712,65 @@ void vehicle_part::deserialize( JsonIn &jsin ) vpart_id pid; data.read( "id", pid ); - std::map> deprecated = { - { "laser_gun", { "laser_rifle", "none" } }, - { "seat_nocargo", { "seat", "none" } }, - { "engine_plasma", { "minireactor", "none" } }, - { "battery_truck", { "battery_car", "battery" } }, - - { "diesel_tank_little", { "tank_little", "diesel" } }, - { "diesel_tank_small", { "tank_small", "diesel" } }, - { "diesel_tank_medium", { "tank_medium", "diesel" } }, - { "diesel_tank", { "tank", "diesel" } }, - { "external_diesel_tank_small", { "external_tank_small", "diesel" } }, - { "external_diesel_tank", { "external_tank", "diesel" } }, - - { "gas_tank_little", { "tank_little", "gasoline" } }, - { "gas_tank_small", { "tank_small", "gasoline" } }, - { "gas_tank_medium", { "tank_medium", "gasoline" } }, - { "gas_tank", { "tank", "gasoline" } }, - { "external_gas_tank_small", { "external_tank_small", "gasoline" } }, - { "external_gas_tank", { "external_tank", "gasoline" } }, - - { "water_dirty_tank_little", { "tank_little", "water" } }, - { "water_dirty_tank_small", { "tank_small", "water" } }, - { "water_dirty_tank_medium", { "tank_medium", "water" } }, - { "water_dirty_tank", { "tank", "water" } }, - { "external_water_dirty_tank_small", { "external_tank_small", "water" } }, - { "external_water_dirty_tank", { "external_tank", "water" } }, - { "dirty_water_tank_barrel", { "tank_barrel", "water" } }, - - { "water_tank_little", { "tank_little", "water_clean" } }, - { "water_tank_small", { "tank_small", "water_clean" } }, - { "water_tank_medium", { "tank_medium", "water_clean" } }, - { "water_tank", { "tank", "water_clean" } }, - { "external_water_tank_small", { "external_tank_small", "water_clean" } }, - { "external_water_tank", { "external_tank", "water_clean" } }, - { "water_tank_barrel", { "tank_barrel", "water_clean" } }, - - { "napalm_tank", { "tank", "napalm" } }, - - { "hydrogen_tank", { "tank", "none" } } + std::map deprecated = { + { "laser_gun", "laser_rifle" }, + { "seat_nocargo", "seat" }, + { "engine_plasma", "minireactor" }, + { "battery_truck", "battery_car" }, + + { "diesel_tank_little", "tank_little" }, + { "diesel_tank_small", "tank_small" }, + { "diesel_tank_medium", "tank_medium" }, + { "diesel_tank", "tank" }, + { "external_diesel_tank_small", "external_tank_small" }, + { "external_diesel_tank", "external_tank" }, + { "gas_tank_little", "tank_little" }, + { "gas_tank_small", "tank_small" }, + { "gas_tank_medium", "tank_medium" }, + { "gas_tank", "tank" }, + { "external_gas_tank_small", "external_tank_small" }, + { "external_gas_tank", "external_tank" }, + { "water_dirty_tank_little", "tank_little" }, + { "water_dirty_tank_small", "tank_small" }, + { "water_dirty_tank_medium", "tank_medium" }, + { "water_dirty_tank", "tank" }, + { "external_water_dirty_tank_small", "external_tank_small" }, + { "external_water_dirty_tank", "external_tank" }, + { "dirty_water_tank_barrel", "tank_barrel" }, + { "water_tank_little", "tank_little" }, + { "water_tank_small", "tank_small" }, + { "water_tank_medium", "tank_medium" }, + { "water_tank", "tank" }, + { "external_water_tank_small", "external_tank_small" }, + { "external_water_tank", "external_tank" }, + { "water_tank_barrel", "tank_barrel" }, + { "napalm_tank", "tank" }, + { "hydrogen_tank", "tank" }, + + { "wheel_underbody", "wheel_wide" }, + { "wheel_steerable", "wheel" }, + { "wheel_slick_steerable", "wheel_slick" }, + { "wheel_armor_steerable", "wheel_armor" }, + { "wheel_bicycle_steerable", "wheel_bicycle" }, + { "wheel_bicycle_or_steerable", "wheel_bicycle_or" }, + { "wheel_motorbike_steerable", "wheel_motorbike" }, + { "wheel_motorbike_or_steerable", "wheel_motorbike_or" }, + { "wheel_small_steerable", "wheel_small" }, + { "wheel_wide_steerable", "wheel_wide" }, + { "wheel_wide_or_steerable", "wheel_wide_or" } }; auto dep = deprecated.find( pid.str() ); if( dep != deprecated.end() ) { - pid = vpart_id( dep->second.first ); + DebugLog( D_INFO, D_GAME ) << "Replacing vpart " << pid.str() << " with " << dep->second; + pid = vpart_id( dep->second ); } std::tie( pid, variant ) = get_vpart_id_variant( pid ); // if we don't know what type of part it is, it'll cause problems later. if( !pid.is_valid() ) { - if( pid.str() == "wheel_underbody" ) { - pid = vpart_id( "wheel_wide" ); - } else { - data.throw_error( "bad vehicle part", "id" ); - } + data.throw_error( "bad vehicle part", "id" ); } id = pid; if( variant.empty() ) { @@ -2972,7 +2974,17 @@ void vehicle::deserialize( JsonIn &jsin ) } data.read( "theft_time", theft_time ); - data.read( "parts", parts ); + parts.clear(); + for( const JsonValue val : data.get_array( "parts" ) ) { + vehicle_part part; + try { + val.read( part, true ); + parts.emplace_back( std::move( part ) ); + } catch( const JsonError &err ) { + debugmsg( err.what() ); + } + } + // we persist the pivot anchor so that if the rules for finding // the pivot change, existing vehicles do not shift around. // Loading vehicles that predate the pivot logic is a special @@ -3477,94 +3489,174 @@ void player_morale::load( const JsonObject &jsin ) jsin.read( "morale", points ); } -void map_memory::store( JsonOut &jsout ) const +struct mm_elem { + memorized_terrain_tile tile; + int symbol; + + bool operator==( const mm_elem &rhs ) const { + return symbol == rhs.symbol && tile == rhs.tile; + } +}; + +void mm_submap::serialize( JsonOut &jsout ) const { jsout.start_array(); - jsout.start_array(); - for( const auto &elem : tile_cache.list() ) { + + // Uses RLE for compression. + + mm_elem last; + int num_same = 1; + + const auto write_seq = [&]() { jsout.start_array(); - jsout.write( elem.first.x ); - jsout.write( elem.first.y ); - jsout.write( elem.first.z ); - jsout.write( elem.second.tile ); - jsout.write( elem.second.subtile ); - jsout.write( elem.second.rotation ); + jsout.write( last.tile.tile ); + jsout.write( last.tile.subtile ); + jsout.write( last.tile.rotation ); + jsout.write( last.symbol ); + if( num_same != 1 ) { + jsout.write( num_same ); + } jsout.end_array(); + }; + + for( size_t y = 0; y < SEEY; y++ ) { + for( size_t x = 0; x < SEEX; x++ ) { + point p( x, y ); + const mm_elem elem = { tile( p ), symbol( p ) }; + if( x == 0 && y == 0 ) { + last = elem; + continue; + } + if( last == elem ) { + num_same += 1; + continue; + } + write_seq(); + num_same = 1; + last = elem; + } } + write_seq(); + jsout.end_array(); +} + +void mm_submap::deserialize( JsonIn &jsin ) +{ + jsin.start_array(); + + // Uses RLE for compression. + mm_elem elem; + size_t remaining = 0; + + for( size_t y = 0; y < SEEY; y++ ) { + for( size_t x = 0; x < SEEX; x++ ) { + if( remaining > 0 ) { + remaining -= 1; + } else { + jsin.start_array(); + elem.tile.tile = jsin.get_string(); + elem.tile.subtile = jsin.get_int(); + elem.tile.rotation = jsin.get_int(); + elem.symbol = jsin.get_int(); + if( jsin.test_int() ) { + remaining = jsin.get_int() - 1; + } + jsin.end_array(); + } + point p( x, y ); + // Try to avoid assigning to save up on memory + if( elem.tile != mm_submap::default_tile ) { + set_tile( p, elem.tile ); + } + if( elem.symbol != mm_submap::default_symbol ) { + set_symbol( p, elem.symbol ); + } + } + } + jsin.end_array(); +} + +void mm_region::serialize( JsonOut &jsout ) const +{ jsout.start_array(); - for( const auto &elem : symbol_cache.list() ) { - jsout.start_array(); - jsout.write( elem.first.x ); - jsout.write( elem.first.y ); - jsout.write( elem.first.z ); - jsout.write( elem.second ); - jsout.end_array(); + for( size_t y = 0; y < MM_REG_SIZE; y++ ) { + for( size_t x = 0; x < MM_REG_SIZE; x++ ) { + const shared_ptr_fast &sm = submaps[x][y]; + if( sm->is_empty() ) { + jsout.write_null(); + } else { + sm->serialize( jsout ); + } + } } jsout.end_array(); - jsout.end_array(); } -void map_memory::load( JsonIn &jsin ) +void mm_region::deserialize( JsonIn &jsin ) { - // Legacy loading of object version. - if( jsin.test_object() ) { - JsonObject jsobj = jsin.get_object(); - jsobj.allow_omitted_members(); - load( jsobj ); - } else { - // This file is large enough that it's more than called for to minimize the - // amount of data written and read and make it a bit less "friendly", - // and use the streaming interface. - jsin.start_array(); - tile_cache.clear(); - jsin.start_array(); - while( !jsin.end_array() ) { - jsin.start_array(); - tripoint p; - p.x = jsin.get_int(); - p.y = jsin.get_int(); - p.z = jsin.get_int(); - const std::string tile = jsin.get_string(); - const int subtile = jsin.get_int(); - const int rotation = jsin.get_int(); - memorize_tile( std::numeric_limits::max(), p, - tile, subtile, rotation ); - jsin.end_array(); - } - symbol_cache.clear(); - jsin.start_array(); - while( !jsin.end_array() ) { - jsin.start_array(); - tripoint p; - p.x = jsin.get_int(); - p.y = jsin.get_int(); - p.z = jsin.get_int(); - const int symbol = jsin.get_int(); - memorize_symbol( std::numeric_limits::max(), p, symbol ); - jsin.end_array(); + jsin.start_array(); + for( size_t y = 0; y < MM_REG_SIZE; y++ ) { + for( size_t x = 0; x < MM_REG_SIZE; x++ ) { + shared_ptr_fast &sm = submaps[x][y]; + sm = make_shared_fast(); + if( jsin.test_null() ) { + jsin.skip_null(); + } else { + sm->deserialize( jsin ); + } } - jsin.end_array(); } + jsin.end_array(); } -// Deserializer for legacy object-based memory map. -void map_memory::load( const JsonObject &jsin ) +void map_memory::load_legacy( JsonIn &jsin ) { - tile_cache.clear(); - for( JsonObject pmap : jsin.get_array( "map_memory_tiles" ) ) { - pmap.allow_omitted_members(); - const tripoint p( pmap.get_int( "x" ), pmap.get_int( "y" ), pmap.get_int( "z" ) ); - memorize_tile( std::numeric_limits::max(), p, pmap.get_string( "tile" ), - pmap.get_int( "subtile" ), pmap.get_int( "rotation" ) ); + struct mig_elem { + int symbol; + memorized_terrain_tile tile; + }; + std::map elems; + + jsin.start_array(); + jsin.start_array(); + while( !jsin.end_array() ) { + jsin.start_array(); + tripoint p; + p.x = jsin.get_int(); + p.y = jsin.get_int(); + p.z = jsin.get_int(); + mig_elem &elem = elems[p]; + elem.tile.tile = jsin.get_string(); + elem.tile.subtile = jsin.get_int(); + elem.tile.rotation = jsin.get_int(); + jsin.end_array(); } + jsin.start_array(); + while( !jsin.end_array() ) { + jsin.start_array(); + tripoint p; + p.x = jsin.get_int(); + p.y = jsin.get_int(); + p.z = jsin.get_int(); + elems[p].symbol = jsin.get_int(); + jsin.end_array(); + } + jsin.end_array(); - symbol_cache.clear(); - for( JsonObject pmap : jsin.get_array( "map_memory_curses" ) ) { - pmap.allow_omitted_members(); - const tripoint p( pmap.get_int( "x" ), pmap.get_int( "y" ), pmap.get_int( "z" ) ); - memorize_symbol( std::numeric_limits::max(), p, pmap.get_int( "symbol" ) ); + for( const std::pair &elem : elems ) { + coord_pair cp( elem.first ); + shared_ptr_fast sm = find_submap( cp.sm ); + if( !sm ) { + sm = allocate_submap( cp.sm ); + } + if( elem.second.tile != mm_submap::default_tile ) { + sm->set_tile( cp.loc, elem.second.tile ); + } + if( elem.second.symbol != mm_submap::default_symbol ) { + sm->set_symbol( cp.loc, elem.second.symbol ); + } } } @@ -4345,8 +4437,12 @@ void submap::load( JsonIn &jsin, const std::string &member_name, int version ) jsin.start_array(); while( !jsin.end_array() ) { std::unique_ptr tmp = std::make_unique(); - jsin.read( *tmp ); - vehicles.push_back( std::move( tmp ) ); + try { + jsin.read( *tmp, true ); + vehicles.push_back( std::move( tmp ) ); + } catch( const JsonError &err ) { + debugmsg( err.what() ); + } } } else if( member_name == "partial_constructions" ) { jsin.start_array(); diff --git a/src/scenario.cpp b/src/scenario.cpp index 16a7caf257484..03833dded73e5 100644 --- a/src/scenario.cpp +++ b/src/scenario.cpp @@ -120,6 +120,10 @@ void scenario::load( const JsonObject &jo, const std::string & ) if( jo.has_string( "vehicle" ) ) { _starting_vehicle = vproto_id( jo.get_string( "vehicle" ) ); } + + for( JsonArray ja : jo.get_array( "surround_groups" ) ) { + _surround_groups.emplace_back( mongroup_id( ja.get_string( 0 ) ), ja.get_float( 1 ) ); + } } const scenario *scenario::generic() @@ -541,4 +545,8 @@ const std::vector &scenario::missions() const { return _missions; } +const std::vector> &scenario::surround_groups() const +{ + return _surround_groups; +} // vim:ts=4:sw=4:et:tw=0:fdm=marker: diff --git a/src/scenario.h b/src/scenario.h index cfada3918d41d..e08bb0f5e62fa 100644 --- a/src/scenario.h +++ b/src/scenario.h @@ -56,6 +56,8 @@ class scenario vproto_id _starting_vehicle = vproto_id::NULL_ID(); + std::vector> _surround_groups; + void load( const JsonObject &jo, const std::string &src ); bool scenario_traits_conflict_with_profession_traits( const profession &p ) const; @@ -128,6 +130,7 @@ class scenario bool can_pick( const scenario ¤t_scenario, int points ) const; const std::vector &missions() const; + const std::vector> &surround_groups() const; }; diff --git a/src/sdltiles.cpp b/src/sdltiles.cpp index b0452d5d0241e..72fe41e46a538 100644 --- a/src/sdltiles.cpp +++ b/src/sdltiles.cpp @@ -886,7 +886,7 @@ void cata_tiles::draw_om( const point &dest, const tripoint_abs_omt ¢er_abs_ const lit_level ll = overmap_buffer.is_explored( omp ) ? lit_level::LOW : lit_level::LIT; // light level is now used for choosing between grayscale filter and normal lit tiles. - draw_from_id_string( id, TILE_CATEGORY::C_OVERMAP_TERRAIN, "overmap_terrain", pos, 0, rotation, + draw_from_id_string( id, TILE_CATEGORY::C_OVERMAP_TERRAIN, "overmap_terrain", pos, -1, rotation, ll, false, height_3d ); if( see ) { diff --git a/src/shearing.cpp b/src/shearing.cpp new file mode 100644 index 0000000000000..4bf5ecdfe0abc --- /dev/null +++ b/src/shearing.cpp @@ -0,0 +1,76 @@ +#include "shearing.h" + +#include + +#include "generic_factory.h" +#include "monster.h" +#include "rng.h" +#include "units.h" + + +shearing_roll shearing_entry::roll( const monster &mon ) const +{ + shearing_roll roll; + roll.result = result; + + roll.amount += amount; + + if( random_max ) { + roll.amount += rng( random_min, random_max ); + } + + if( ratio_mass ) { + float weight = units::to_kilogram( mon.get_weight() ); + roll.amount += static_cast( ratio_mass * weight ); + } + + if( ratio_volume ) { + float volume = units::to_liter( mon.get_volume() ); + roll.amount += static_cast( ratio_volume * volume ); + } + + return roll; +} + +void shearing_entry::load( const JsonObject &jo ) +{ + mandatory( jo, was_loaded, "result", result ); + + optional( jo, was_loaded, "ratio_mass", ratio_mass ); + ratio_mass = std::max( 0.00f, ratio_mass ); + + optional( jo, was_loaded, "ratio_volume", ratio_volume ); + ratio_volume = std::max( 0.00f, ratio_volume ); + + if( jo.has_int( "amount" ) ) { + mandatory( jo, was_loaded, "amount", amount ); + amount = std::max( 0, amount ); + } else if( jo.has_array( "amount" ) ) { + std::vector amount_random = jo.get_int_array( "amount" ); + random_min = std::max( 0, amount_random[0] ); + random_max = std::max( 0, amount_random[1] ); + if( random_min > random_max ) { + std::swap( random_min, random_max ); + } + } +} + +shearing_data::shearing_data( std::vector &shearing_entries ) +{ + if( !shearing_entries.empty() ) { + entries_ = shearing_entries; + valid_ = true; + } +} + +std::vector shearing_data::roll_all( const monster &mon ) const +{ + std::vector rolls; + rolls.reserve( entries_.size() ); + + for( const shearing_entry &entry : entries_ ) { + rolls.push_back( entry.roll( mon ) ); + } + + return rolls; +} diff --git a/src/shearing.h b/src/shearing.h new file mode 100644 index 0000000000000..b0e93ee82852a --- /dev/null +++ b/src/shearing.h @@ -0,0 +1,53 @@ +#pragma once +#include "damage.h" +#ifndef CATA_SRC_SHEARING_H +#define CATA_SRC_SHEARING_H + +#include + +#include "itype.h" + +class monster; + +struct shearing_roll { + itype_id result; + int amount = 0; +}; + +struct shearing_entry { + itype_id result; + int amount = 0; + int random_min = 0; + int random_max = 0; + float ratio_mass = 0.0f; + float ratio_volume = 0.0f; + + shearing_roll roll( const monster &mon ) const; + + bool was_loaded = false; + void load( const JsonObject &jo ); + //void deserialize( JsonIn &jsin ); +}; + +class shearing_data +{ + public: + shearing_data() = default; + explicit shearing_data( std::vector &shearing_entries ); + + bool valid() const { + return valid_; + } + + const std::vector &entries() const { + return entries_; + } + + std::vector roll_all( const monster &mon ) const; + + private: + bool valid_ = false; + std::vector entries_; +}; + +#endif // CATA_SRC_SHEARING_H diff --git a/src/skill.cpp b/src/skill.cpp index ad8c151a6947d..4112c7ef1051e 100644 --- a/src/skill.cpp +++ b/src/skill.cpp @@ -249,7 +249,7 @@ bool SkillLevel::isRusting() const calendar::turn - _lastPracticed > rustRate( _level ); } -bool SkillLevel::rust( bool charged_bio_mem, int character_rate ) +bool SkillLevel::rust( int rust_resist, int character_rate ) { const time_duration delta = calendar::turn - _lastPracticed; const float char_rate = character_rate / 100.0f; @@ -259,8 +259,8 @@ bool SkillLevel::rust( bool charged_bio_mem, int character_rate ) return false; } - if( charged_bio_mem ) { - return one_in( 5 ); + if( rust_resist > 0 ) { + return x_in_y( rust_resist, 100 ); } _exercise -= _level * 100; diff --git a/src/skill.h b/src/skill.h index c2a04c11e1e5a..82b7a117ef550 100644 --- a/src/skill.h +++ b/src/skill.h @@ -155,7 +155,7 @@ class SkillLevel void train( int amount, bool skip_scaling = false ); bool isRusting() const; - bool rust( bool charged_bio_mem, int character_rate ); + bool rust( int rust_resist, int character_rate ); void practice(); bool can_train() const; diff --git a/src/suffer.cpp b/src/suffer.cpp index 009baadf566a1..aed3d0b979d63 100644 --- a/src/suffer.cpp +++ b/src/suffer.cpp @@ -14,6 +14,7 @@ #include "activity_handlers.h" #include "addiction.h" +#include "bionics.h" #include "bodypart.h" #include "calendar.h" #include "cata_utility.h" @@ -247,9 +248,9 @@ void Character::suffer_while_underwater() oxygen += 12; } if( oxygen <= 5 ) { - if( has_bionic( bio_gills ) && get_power_level() >= 25_kJ ) { + if( has_bionic( bio_gills ) && get_power_level() >= bio_gills->power_trigger ) { oxygen += 5; - mod_power_level( -25_kJ ); + mod_power_level( -bio_gills->power_trigger ); } else { add_msg_if_player( m_bad, _( "You're drowning!" ) ); apply_damage( nullptr, bodypart_id( "torso" ), rng( 1, 4 ) ); @@ -615,7 +616,7 @@ void Character::suffer_from_asthma( const int current_stim ) } bool auto_use = has_charges( itype_inhaler, 1 ) || has_charges( itype_oxygen_tank, 1 ) || has_charges( itype_smoxygen_tank, 1 ); - bool oxygenator = has_bionic( bio_gills ) && get_power_level() >= 3_kJ; + bool oxygenator = has_bionic( bio_gills ) && get_power_level() >= ( bio_gills->power_trigger / 8 ); if( underwater ) { oxygen = oxygen / 2; auto_use = false; @@ -635,7 +636,7 @@ void Character::suffer_from_asthma( const int current_stim ) map_inv.has_charges( itype_smoxygen_tank, 1 ); // check if character has an oxygenator first if( oxygenator ) { - mod_power_level( -3_kJ ); + mod_power_level( -bio_gills->power_trigger / 8 ); add_msg_if_player( m_info, _( "You use your Oxygenator to clear it up, " "then go back to sleep." ) ); } else if( auto_use ) { @@ -1161,7 +1162,8 @@ void Character::suffer_from_radiation() void Character::suffer_from_bad_bionics() { // Negative bionics effects - if( has_bionic( bio_dis_shock ) && get_power_level() > 9_kJ && one_turn_in( 2_hours ) && + if( has_bionic( bio_dis_shock ) && get_power_level() > bio_dis_shock->power_trigger && + one_turn_in( 2_hours ) && !has_effect( effect_narcosis ) ) { if( !has_trait( trait_NOPAIN ) ) { add_msg_if_player( m_bad, _( "You suffer a painful electrical discharge!" ) ); @@ -1170,7 +1172,7 @@ void Character::suffer_from_bad_bionics() add_msg_if_player( m_bad, _( "You experience an electrical discharge!" ) ); } moves -= 150; - mod_power_level( -10_kJ ); + mod_power_level( -bio_dis_shock->power_trigger ); if( weapon.typeId() == itype_e_handcuffs && weapon.charges > 0 ) { weapon.charges -= rng( 1, 3 ) * 50; @@ -1225,9 +1227,10 @@ void Character::suffer_from_bad_bionics() add_effect( effect_downed, 1_turns, false, 0, true ); sfx::play_variant_sound( "bionics", "elec_crackle_high", 100 ); } - if( has_bionic( bio_shakes ) && get_power_level() > 24_kJ && one_turn_in( 2_hours ) ) { + if( has_bionic( bio_shakes ) && get_power_level() > bio_shakes->power_trigger && + one_turn_in( 2_hours ) ) { add_msg_if_player( m_bad, _( "Your bionics short-circuit, causing you to tremble and shiver." ) ); - mod_power_level( -25_kJ ); + mod_power_level( -bio_shakes->power_trigger ); add_effect( effect_shakes, 5_minutes ); sfx::play_variant_sound( "bionics", "elec_crackle_med", 100 ); } @@ -1244,10 +1247,10 @@ void Character::suffer_from_bad_bionics() add_effect( effect_formication, 10_minutes, bp ); } if( has_bionic( bio_glowy ) && !has_effect( effect_glowy_led ) && one_turn_in( 50_minutes ) && - get_power_level() > 1_kJ ) { + get_power_level() > bio_glowy->power_trigger ) { add_msg_if_player( m_bad, _( "Your malfunctioning bionic starts to glow!" ) ); add_effect( effect_glowy_led, 5_minutes ); - mod_power_level( -1_kJ ); + mod_power_level( -bio_glowy->power_trigger ); } } diff --git a/src/talker.h b/src/talker.h index a548cc95274d7..3aac08c43e2c4 100644 --- a/src/talker.h +++ b/src/talker.h @@ -96,6 +96,7 @@ class talker } virtual void set_mutation( const trait_id & ) {} virtual void unset_mutation( const trait_id & ) {} + virtual void mod_fatigue( int ) {} virtual bool has_trait_flag( const json_character_flag & ) const { return false; } @@ -152,6 +153,9 @@ class talker virtual bool is_deaf() const { return false; } + virtual bool can_see() const { + return false; + } virtual bool is_mute() const { return false; } diff --git a/src/talker_character.cpp b/src/talker_character.cpp index b233df97b98a0..d57de16fc17f4 100644 --- a/src/talker_character.cpp +++ b/src/talker_character.cpp @@ -12,6 +12,7 @@ #include "vehicle.h" class time_duration; +static const trait_id trait_SEESLEEP( "SEESLEEP" ); std::string talker_character::disp_name() const { @@ -318,3 +319,12 @@ units::energy talker_character::power_cur() const return me_chr->get_power_level(); } +bool talker_character::can_see() const +{ + return !me_chr->is_blind() && ( !me_chr->in_sleep_state() || me_chr->has_trait( trait_SEESLEEP ) ); +} + +void talker_character::mod_fatigue( int amount ) +{ + me_chr->mod_fatigue( amount ); +} diff --git a/src/talker_character.h b/src/talker_character.h index 782c0ca41483b..a81ccca1c3a6d 100644 --- a/src/talker_character.h +++ b/src/talker_character.h @@ -113,8 +113,10 @@ class talker_character: public talker bool worn_with_flag( const flag_id &flag ) const override; bool wielded_with_flag( const flag_id &flag ) const override; - void mod_pain( int amount ) override; + void mod_fatigue( int amount ) override; + void mod_pain( int amount ) override; + bool can_see() const override; protected: talker_character() = default; player *me_chr; diff --git a/src/veh_interact.cpp b/src/veh_interact.cpp index 8c207deaf0172..0d898ab17b410 100644 --- a/src/veh_interact.cpp +++ b/src/veh_interact.cpp @@ -235,6 +235,7 @@ veh_interact::veh_interact( vehicle &veh, const point &p ) main_context.register_action( "RENAME" ); main_context.register_action( "SIPHON" ); main_context.register_action( "UNLOAD" ); + main_context.register_action( "CHANGE_SHAPE" ); main_context.register_action( "ASSIGN_CREW" ); main_context.register_action( "RELABEL" ); main_context.register_action( "PREV_TAB" ); @@ -495,6 +496,9 @@ void veh_interact::do_main_loop() if( veh->handle_potential_theft( dynamic_cast( player_character ) ) ) { finish = do_unload(); } + } else if( action == "CHANGE_SHAPE" ) { + // purely comestic + do_change_shape(); } else if( action == "ASSIGN_CREW" ) { if( owned_by_player ) { do_assign_crew(); @@ -670,6 +674,9 @@ task_reason veh_interact::cant_do( char mode ) return e.part().is_seat(); } ) ? task_reason::CAN_DO : task_reason::INVALID_TARGET; + case 'p': + // change part shape + // intentional fall-through case 'a': // relabel valid_target = cpart >= 0; @@ -1937,6 +1944,110 @@ bool veh_interact::do_unload() return true; } +void veh_interact::do_change_shape() +{ + if( cant_do( 'p' ) == task_reason::INVALID_TARGET ) { + msg = _( "No valid vehicle parts here." ); + return; + } + + restore_on_out_of_scope> prev_title( title ); + title = _( "Choose part to change shape:" ); + + shared_ptr_fast current_ui = create_or_get_ui_adaptor(); + restore_on_out_of_scope prev_hilight_part( highlight_part ); + + int part_selected = 0; + + while( true ) { + vehicle_part &part = veh->part( parts_here[part_selected] ); + sel_vpart_info = &part.info(); + + highlight_part = part_selected; + overview_enable = [this, part_selected]( const vehicle_part & pt ) { + return &pt == &veh->part( part_selected ); + }; + + ui_manager::redraw(); + const std::string action = main_context.handle_input(); + + if( action == "QUIT" ) { + break; + } else if( action == "CONFIRM" || action == "CHANGE_SHAPE" ) { + using v_shapes = std::vector>; + const v_shapes &shapes = vpart_shapes[ sel_vpart_info->name() + sel_vpart_info->base_item.str() ]; + if( shapes.empty() ) { + break; + } + + uilist smenu; + smenu.text = _( "Choose shape:" ); + smenu.w_width_setup = [this]() { + return getmaxx( w_list ); + }; + smenu.w_x_setup = [this]( const int ) { + return getbegx( w_list ); + }; + smenu.w_y_setup = [this]( const int ) { + return getbegy( w_list ); + }; + + int ret_code = 0; + int default_selection = 0; + std::vector variants; + for( const vpart_info *const shape : shapes ) { + uilist_entry entry( shape->name() ); + entry.retval = ret_code++; + entry.extratxt.left = 1; + entry.extratxt.sym = special_symbol( shape->sym ); + entry.extratxt.color = shape->color; + variants.emplace_back( std::string() ); + smenu.entries.emplace_back( entry ); + } + + for( const std::pair &vp_variant : sel_vpart_info->symbols ) { + std::string disp_name = sel_vpart_info->name(); + // getting all the available shape variants from vpart_variants + std::size_t variants_offset = 0; + for( const std::pair &vp_variant_pair : vpart_variants ) { + if( vp_variant_pair.first == vp_variant.first ) { + disp_name += " " + vp_variant_pair.second; + variants.emplace_back( vp_variant.first ); + if( vp_variant.first == part.variant ) { + default_selection = ret_code; + } + break; + } + variants_offset += 1; + } + uilist_entry entry( disp_name ); + entry.retval = ret_code++; + entry.extratxt.left = 1; + entry.extratxt.sym = special_symbol( vp_variant.second ); + entry.extratxt.color = sel_vpart_info->color; + smenu.entries.emplace_back( entry ); + } + sort_uilist_entries_by_line_drawing( smenu.entries ); + + // get default selection after sorting + for( std::size_t i = 0; i < smenu.entries.size(); ++i ) { + if( smenu.entries[i].retval == default_selection ) { + default_selection = i; + break; + } + } + + smenu.selected = default_selection; + smenu.query(); + if( smenu.ret >= 0 ) { + part.variant = variants[smenu.ret]; + } + } else { + move_in_list( part_selected, action, parts_here.size() ); + } + } +} + void veh_interact::do_assign_crew() { if( cant_do( 'w' ) != task_reason::CAN_DO ) { @@ -2629,7 +2740,7 @@ void veh_interact::display_mode() // NOLINTNEXTLINE(cata-use-named-point-constants) print_colored_text( w_mode, point( 1, 0 ), title_col, title_col, title.value() ); } else { - constexpr size_t action_cnt = 11; + constexpr size_t action_cnt = 12; const std::array actions = { { veh_act_desc( main_context, "INSTALL", pgettext( "veh_interact", "install" ), @@ -2655,6 +2766,9 @@ void veh_interact::display_mode() veh_act_desc( main_context, "ASSIGN_CREW", pgettext( "veh_interact", "crew" ), cant_do( 'w' ) ), + veh_act_desc( main_context, "CHANGE_SHAPE", + pgettext( "veh_interact", "shape" ), + cant_do( 'p' ) ), veh_act_desc( main_context, "RENAME", pgettext( "veh_interact", "rename" ), task_reason::CAN_DO ), diff --git a/src/veh_interact.h b/src/veh_interact.h index d1f76d1aad1ef..2c0fc2daf2c88 100644 --- a/src/veh_interact.h +++ b/src/veh_interact.h @@ -162,6 +162,7 @@ class veh_interact void do_siphon(); // Returns true if exiting the screen bool do_unload(); + void do_change_shape(); void do_assign_crew(); void do_relabel(); /*@}*/ diff --git a/src/vehicle.h b/src/vehicle.h index 673db9febd9bf..8e02f878f8d27 100644 --- a/src/vehicle.h +++ b/src/vehicle.h @@ -459,9 +459,11 @@ struct vehicle_part { private: /** What type of part is this? */ vpart_id id; + public: /** If it's a part with variants, which variant it is */ std::string variant; + private: /** As a performance optimization we cache the part information here on first lookup */ mutable const vpart_info *info_cache = nullptr; diff --git a/src/visitable.cpp b/src/visitable.cpp index c4969073b901f..45fb6c6f1fe68 100644 --- a/src/visitable.cpp +++ b/src/visitable.cpp @@ -749,7 +749,7 @@ static int charges_of_internal( const T &self, const M &main, const itype_id &id found_tool_with_UPS = true; } } - if( !e->has_pockets() ) { + if( !e->is_container() ) { return qty < limit ? VisitResponse::SKIP : VisitResponse::ABORT; } diff --git a/src/weighted_list.h b/src/weighted_list.h index 228cf3a519b9b..a8594303a65cf 100644 --- a/src/weighted_list.h +++ b/src/weighted_list.h @@ -2,6 +2,7 @@ #ifndef CATA_SRC_WEIGHTED_LIST_H #define CATA_SRC_WEIGHTED_LIST_H +#include "json.h" #include "rng.h" #include @@ -178,8 +179,6 @@ template struct weighted_list { return objects.empty(); } - void precalc(); - protected: W total_weight; std::vector > objects; @@ -255,4 +254,20 @@ template struct weighted_float_list : public weighted_list +void load_weighted_list( const JsonValue &jsv, weighted_list &list, W default_weight ) +{ + for( const JsonValue entry : jsv.get_array() ) { + if( entry.test_array() ) { + std::pair p; + entry.read( p, true ); + list.add( p.first, p.second ); + } else { + T val; + entry.read( val ); + list.add( val, default_weight ); + } + } +} + #endif // CATA_SRC_WEIGHTED_LIST_H diff --git a/tests/crafting_test.cpp b/tests/crafting_test.cpp index 9a0a6c99cedfc..ab3c775839648 100644 --- a/tests/crafting_test.cpp +++ b/tests/crafting_test.cpp @@ -424,13 +424,16 @@ TEST_CASE( "tools use charge to craft", "[crafting][charge]" ) // Tools needed: tools.emplace_back( "screwdriver" ); - tools.emplace_back( "mold_plastic" ); + tools.emplace_back( "vac_mold" ); + // Materials needed tools.insert( tools.end(), 10, item( "solder_wire" ) ); tools.insert( tools.end(), 6, item( "plastic_chunk" ) ); tools.insert( tools.end(), 2, item( "blade" ) ); tools.insert( tools.end(), 5, item( "cable" ) ); + tools.insert( tools.end(), 2, item( "polycarbonate_sheet" ) ); + tools.insert( tools.end(), 1, item( "knife_paring" ) ); tools.emplace_back( "motor_tiny" ); tools.emplace_back( "power_supply" ); tools.emplace_back( "scrap" ); @@ -440,12 +443,15 @@ TEST_CASE( "tools use charge to craft", "[crafting][charge]" ) // - 10 charges of surface heat WHEN( "each tool has enough charges" ) { - item hotplate = tool_with_ammo( "hotplate", 20 ); - REQUIRE( hotplate.ammo_remaining() == 20 ); + item hotplate = tool_with_ammo( "hotplate", 30 ); + REQUIRE( hotplate.ammo_remaining() == 30 ); tools.push_back( hotplate ); item soldering = tool_with_ammo( "soldering_iron", 20 ); REQUIRE( soldering.ammo_remaining() == 20 ); tools.push_back( soldering ); + item plastic_molding = tool_with_ammo( "vac_mold", 4 ); + REQUIRE( plastic_molding.ammo_remaining() == 4 ); + tools.push_back( plastic_molding ); THEN( "crafting succeeds, and uses charges from each tool" ) { prep_craft( recipe_id( "carver_off" ), tools, true ); @@ -459,6 +465,7 @@ TEST_CASE( "tools use charge to craft", "[crafting][charge]" ) WHEN( "multiple tools have enough combined charges" ) { tools.insert( tools.end(), 2, tool_with_ammo( "hotplate", 5 ) ); tools.insert( tools.end(), 2, tool_with_ammo( "soldering_iron", 5 ) ); + tools.insert( tools.end(), 1, tool_with_ammo( "vac_mold", 4 ) ); THEN( "crafting succeeds, and uses charges from multiple tools" ) { prep_craft( recipe_id( "carver_off" ), tools, true ); @@ -477,9 +484,10 @@ TEST_CASE( "tools use charge to craft", "[crafting][charge]" ) tools.push_back( soldering_iron ); item UPS( "UPS_off" ); item UPS_mag( UPS.magazine_default() ); - UPS_mag.ammo_set( UPS_mag.ammo_default(), 500 ); + UPS_mag.ammo_set( UPS_mag.ammo_default(), 510 ); UPS.put_in( UPS_mag, item_pocket::pocket_type::MAGAZINE_WELL ); tools.emplace_back( UPS ); + tools.push_back( tool_with_ammo( "vac_mold", 4 ) ); THEN( "crafting succeeds, and uses charges from the UPS" ) { prep_craft( recipe_id( "carver_off" ), tools, true ); @@ -753,141 +761,111 @@ TEST_CASE( "crafting_skill_gain", "[skill],[crafting],[slow]" ) { SECTION( "lvl 0 -> 1" ) { GIVEN( "nominal morale" ) { - test_skill_progression( recipe_id( "blanket" ), 175, 0, false ); test_skill_progression( recipe_id( "blanket" ), 175, 0, true ); } GIVEN( "high morale" ) { - test_skill_progression( recipe_id( "blanket" ), 173, 50, false ); test_skill_progression( recipe_id( "blanket" ), 173, 50, true ); } GIVEN( "very high morale" ) { - test_skill_progression( recipe_id( "blanket" ), 173, 100, false ); test_skill_progression( recipe_id( "blanket" ), 173, 100, true ); } } SECTION( "lvl 1 -> 2" ) { GIVEN( "nominal morale" ) { - test_skill_progression( recipe_id( "2byarm_guard" ), 2140, 0, false ); test_skill_progression( recipe_id( "2byarm_guard" ), 2140, 0, true ); } GIVEN( "high morale" ) { - test_skill_progression( recipe_id( "2byarm_guard" ), 1842, 50, false ); test_skill_progression( recipe_id( "2byarm_guard" ), 1842, 50, true ); } GIVEN( "very high morale" ) { - test_skill_progression( recipe_id( "2byarm_guard" ), 1737, 100, false ); test_skill_progression( recipe_id( "2byarm_guard" ), 1737, 100, true ); } } SECTION( "lvl 2 -> lvl 3" ) { GIVEN( "nominal morale" ) { - test_skill_progression( recipe_id( "vambrace_larmor" ), 12127, 0, false ); test_skill_progression( recipe_id( "vambrace_larmor" ), 6291, 0, true ); } GIVEN( "high morale" ) { - test_skill_progression( recipe_id( "vambrace_larmor" ), 9919, 50, false ); test_skill_progression( recipe_id( "vambrace_larmor" ), 5230, 50, true ); } GIVEN( "very high morale" ) { - test_skill_progression( recipe_id( "vambrace_larmor" ), 9160, 100, false ); test_skill_progression( recipe_id( "vambrace_larmor" ), 4836, 100, true ); } } SECTION( "lvl 3 -> lvl 4" ) { GIVEN( "nominal morale" ) { - test_skill_progression( recipe_id( "armguard_larmor" ), 22711, 0, false ); test_skill_progression( recipe_id( "armguard_larmor" ), 12138, 0, true ); } GIVEN( "high morale" ) { - test_skill_progression( recipe_id( "armguard_larmor" ), 18436, 50, false ); test_skill_progression( recipe_id( "armguard_larmor" ), 10003, 50, true ); } GIVEN( "very high morale" ) { - test_skill_progression( recipe_id( "armguard_larmor" ), 16951, 100, false ); test_skill_progression( recipe_id( "armguard_larmor" ), 9203, 100, true ); } } SECTION( "lvl 4 -> 5" ) { GIVEN( "nominal morale" ) { - test_skill_progression( recipe_id( "armguard_metal" ), 37537, 0, false ); test_skill_progression( recipe_id( "armguard_metal" ), 19638, 0, true ); } GIVEN( "high morale" ) { - test_skill_progression( recipe_id( "armguard_metal" ), 29872, 50, false ); test_skill_progression( recipe_id( "armguard_metal" ), 16125, 50, true ); } GIVEN( "very high morale" ) { - test_skill_progression( recipe_id( "armguard_metal" ), 27472, 100, false ); test_skill_progression( recipe_id( "armguard_metal" ), 14805, 100, true ); } } SECTION( "lvl 5 -> 6" ) { GIVEN( "nominal morale" ) { - test_skill_progression( recipe_id( "armguard_chitin" ), 100755, 0, false ); test_skill_progression( recipe_id( "armguard_chitin" ), 28817, 0, true ); } GIVEN( "high morale" ) { - test_skill_progression( recipe_id( "armguard_chitin" ), 79969, 50, false ); test_skill_progression( recipe_id( "armguard_chitin" ), 23613, 50, true ); } GIVEN( "very high morale" ) { - test_skill_progression( recipe_id( "armguard_chitin" ), 73091, 100, false ); test_skill_progression( recipe_id( "armguard_chitin" ), 21651, 100, true ); } } SECTION( "lvl 6 -> 7" ) { GIVEN( "nominal morale" ) { - test_skill_progression( recipe_id( "armguard_acidchitin" ), 137741, 0, false ); test_skill_progression( recipe_id( "armguard_acidchitin" ), 39651, 0, true ); } GIVEN( "high morale" ) { - test_skill_progression( recipe_id( "armguard_acidchitin" ), 109241, 50, false ); test_skill_progression( recipe_id( "armguard_acidchitin" ), 32470, 50, true ); } GIVEN( "very high morale" ) { - test_skill_progression( recipe_id( "armguard_acidchitin" ), 99810, 100, false ); test_skill_progression( recipe_id( "armguard_acidchitin" ), 29755, 100, true ); } } SECTION( "lvl 7 -> 8" ) { GIVEN( "nominal morale" ) { - test_skill_progression( recipe_id( "armguard_lightplate" ), 227023, 0, false ); test_skill_progression( recipe_id( "armguard_lightplate" ), 52138, 0, true ); } GIVEN( "high morale" ) { - test_skill_progression( recipe_id( "armguard_lightplate" ), 178077, 50, false ); test_skill_progression( recipe_id( "armguard_lightplate" ), 42656, 50, true ); } GIVEN( "very high morale" ) { - test_skill_progression( recipe_id( "armguard_lightplate" ), 162603, 100, false ); test_skill_progression( recipe_id( "armguard_lightplate" ), 39078, 100, true ); } } SECTION( "lvl 8 -> 9" ) { GIVEN( "nominal morale" ) { - test_skill_progression( recipe_id( "helmet_scavenger" ), 143457, 0, false ); test_skill_progression( recipe_id( "helmet_scavenger" ), 66243, 0, true ); } GIVEN( "high morale" ) { - test_skill_progression( recipe_id( "helmet_scavenger" ), 114137, 50, false ); test_skill_progression( recipe_id( "helmet_scavenger" ), 54170, 50, true ); } GIVEN( "very high morale" ) { - test_skill_progression( recipe_id( "helmet_scavenger" ), 105128, 100, false ); test_skill_progression( recipe_id( "helmet_scavenger" ), 49609, 100, true ); } } SECTION( "lvl 9 -> 10" ) { GIVEN( "nominal morale" ) { - test_skill_progression( recipe_id( "helmet_kabuto" ), 280299, 0, false ); test_skill_progression( recipe_id( "helmet_kabuto" ), 82489, 0, true ); } GIVEN( "high morale" ) { - test_skill_progression( recipe_id( "helmet_kabuto" ), 221512, 50, false ); test_skill_progression( recipe_id( "helmet_kabuto" ), 67364, 50, true ); } GIVEN( "very high morale" ) { - test_skill_progression( recipe_id( "helmet_kabuto" ), 202846, 100, false ); test_skill_progression( recipe_id( "helmet_kabuto" ), 61584, 100, true ); } } @@ -907,15 +885,12 @@ TEST_CASE( "crafting_skill_gain", "[skill],[crafting],[slow]" ) } SECTION( "extremely short craft" ) { GIVEN( "nominal morale" ) { - test_skill_progression( recipe_id( "fishing_hook_basic" ), 174, 0, false ); test_skill_progression( recipe_id( "fishing_hook_basic" ), 174, 0, true ); } GIVEN( "high morale" ) { - test_skill_progression( recipe_id( "fishing_hook_basic" ), 172, 50, false ); test_skill_progression( recipe_id( "fishing_hook_basic" ), 172, 50, true ); } GIVEN( "very high morale" ) { - test_skill_progression( recipe_id( "fishing_hook_basic" ), 172, 100, false ); test_skill_progression( recipe_id( "fishing_hook_basic" ), 172, 100, true ); } } @@ -933,7 +908,7 @@ TEST_CASE( "book_proficiency_mitigation", "[crafting][proficiency]" ) GIVEN( "a recipe with required proficiencies" ) { clear_avatar(); clear_map(); - const recipe &test_recipe = recipe_id( "leather_belt" ).obj(); + const recipe &test_recipe = *recipe_id( "leather_belt" ); grant_skills_to_character( get_player_character(), test_recipe ); int unmitigated_time_taken = test_recipe.batch_time( get_player_character(), 1, 1, 0 ); @@ -957,3 +932,35 @@ TEST_CASE( "book_proficiency_mitigation", "[crafting][proficiency]" ) } } } + +TEST_CASE( "partial_proficiency_mitigation", "[crafting][proficiency]" ) +{ + GIVEN( "a recipe with required proficiencies" ) { + clear_avatar(); + clear_map(); + Character &tester = get_player_character(); + const recipe &test_recipe = *recipe_id( "leather_belt" ); + + grant_skills_to_character( tester, test_recipe ); + int unmitigated_time_taken = test_recipe.batch_time( tester, 1, 1, 0 ); + + WHEN( "player acquires partial proficiency" ) { + int np = 0; + for( const proficiency_id &prof : test_recipe.assist_proficiencies() ) { + np++; + tester.set_proficiency_practice( prof, tester.proficiency_training_needed( prof ) / 2 ); + } + int mitigated_time_taken = test_recipe.batch_time( tester, 1, 1, 0 ); + THEN( "it takes less time to craft the recipe" ) { + CHECK( mitigated_time_taken < unmitigated_time_taken ); + } + AND_WHEN( "player acquires missing proficiencies" ) { + grant_proficiencies_to_character( tester, test_recipe, true ); + int proficient_time_taken = test_recipe.batch_time( tester, 1, 1, 0 ); + THEN( "it takes even less time to craft the recipe" ) { + CHECK( proficient_time_taken < mitigated_time_taken ); + } + } + } + } +} diff --git a/tests/creature_effect_test.cpp b/tests/creature_effect_test.cpp index fa15b090bec9f..4ba584f555609 100644 --- a/tests/creature_effect_test.cpp +++ b/tests/creature_effect_test.cpp @@ -455,9 +455,10 @@ TEST_CASE( "monster is_immune_effect", "[creature][monster][effect][immune]" ) fungaloid.clear_effects(); REQUIRE_FALSE( fungaloid.made_of_any( Creature::cmat_flesh ) ); REQUIRE( fungaloid.type->in_species( species_FUNGUS ) ); + REQUIRE( fungaloid.type->bleed_rate == 0 ); - THEN( "they bleed plant sap for now" ) { - CHECK_FALSE( fungaloid.is_immune_effect( effect_bleed ) ); + THEN( "their zero bleed rate makes them immune to bleed" ) { + CHECK( fungaloid.is_immune_effect( effect_bleed ) ); } THEN( "they can't be poisoned" ) { diff --git a/tests/effective_dps_test.cpp b/tests/effective_dps_test.cpp index 6050f1713a318..fa1aceb1bb8bf 100644 --- a/tests/effective_dps_test.cpp +++ b/tests/effective_dps_test.cpp @@ -267,11 +267,12 @@ TEST_CASE( "expected weapon dps", "[expected][dps]" ) make_experienced_tester( test_guy ); SECTION( "staves" ) { // typical value around 18 - calc_expected_dps( test_guy, "i_staff", 18.0 ); - calc_expected_dps( test_guy, "q_staff", 17.0 ); + calc_expected_dps( test_guy, "i_staff", 22.75 ); + calc_expected_dps( test_guy, "staff_sling", 15 ); + calc_expected_dps( test_guy, "q_staff", 20.75 ); calc_expected_dps( test_guy, "l-stick_on", 17.5 ); calc_expected_dps( test_guy, "l-stick", 17.5 ); - calc_expected_dps( test_guy, "shock_staff", 17.0 ); + calc_expected_dps( test_guy, "shock_staff", 21.75 ); calc_expected_dps( test_guy, "hockey_stick", 13.75 ); calc_expected_dps( test_guy, "pool_cue", 10.0 ); calc_expected_dps( test_guy, "broom", 3.25 ); diff --git a/tests/invlet_test.cpp b/tests/invlet_test.cpp index bb8aaf0db7dde..88bf2fa90c1f6 100644 --- a/tests/invlet_test.cpp +++ b/tests/invlet_test.cpp @@ -397,7 +397,7 @@ static void move_item( player &p, const int id, const inventory_location from, drop_at_feet( p, id ); break; case INVENTORY: - p.takeoff( item_at( p, id, from ) ); + p.takeoff( item_location( p, &item_at( p, id, from ) ) );; break; case WORN: case WIELDED_OR_WORN: @@ -419,7 +419,7 @@ static void move_item( player &p, const int id, const inventory_location from, if( p.is_wielding( item_at( p, id, from ) ) ) { p.i_add( p.i_rem( &item_at( p, id, from ) ) ); } else { - p.takeoff( item_at( p, id, from ) ); + p.takeoff( item_location( p, &item_at( p, id, from ) ) ); } if( !p.is_armed() && !p.worn.empty() ) { // wield the first worn item diff --git a/tests/item_contents_test.cpp b/tests/item_contents_test.cpp index 17cf135c4a004..b967ac2b01d20 100644 --- a/tests/item_contents_test.cpp +++ b/tests/item_contents_test.cpp @@ -18,6 +18,10 @@ TEST_CASE( "item_contents" ) const units::volume tool_belt_vol = tool_belt.volume(); const units::mass tool_belt_weight = tool_belt.weight(); + //check empty weight is consistent + CHECK( tool_belt.weight( true ) == tool_belt.type->weight ); + CHECK( tool_belt.weight( false ) == tool_belt.type->weight ); + item hammer( "hammer" ); item tongs( "tongs" ); item wrench( "wrench" ); @@ -53,6 +57,8 @@ TEST_CASE( "item_contents" ) // check that the tool belt's weight adds up all its contents properly CHECK( tool_belt.weight() == tool_belt_weight + hammer.weight() + tongs.weight() + wrench.weight() + crowbar.weight() ); + // check that individual (not including contained items) weight is correct + CHECK( tool_belt.weight( false ) == tool_belt.type->weight ); // check that the tool belt is "full" CHECK( !tool_belt.contents.can_contain( crowbar ).success() ); diff --git a/tests/item_group_test.cpp b/tests/item_group_test.cpp index 9ffa89d7d6704..769354264d18f 100644 --- a/tests/item_group_test.cpp +++ b/tests/item_group_test.cpp @@ -25,7 +25,7 @@ TEST_CASE( "truncate_spawn_when_items_dont_fit", "[item_group]" ) const item_group::ItemList items = item_group::items_from( truncate_test_id ); REQUIRE( items.size() == 1 ); REQUIRE( items[0].typeId().str() == "test_balloon" ); - std::list contents = items[0].contents.all_items_top(); + std::list contents = items[0].all_items_top(); REQUIRE( contents.size() == 2 ); observed_pairs.emplace( contents.front()->typeId(), contents.back()->typeId() ); } @@ -57,7 +57,7 @@ TEST_CASE( "spill_when_items_dont_fit", "[item_group]" ) other = &items[0]; } REQUIRE( container->typeId().str() == "test_balloon" ); - std::list contents = container->contents.all_items_top(); + std::list contents = container->all_items_top(); REQUIRE( contents.size() == 2 ); observed_pairs_inside.emplace( contents.front()->typeId(), contents.back()->typeId() ); observed_outside.emplace( other->typeId() ); diff --git a/tests/item_test.cpp b/tests/item_test.cpp index 0c7614ebf5308..8aa058395c9aa 100644 --- a/tests/item_test.cpp +++ b/tests/item_test.cpp @@ -45,7 +45,7 @@ TEST_CASE( "simple_item_layers", "[item]" ) CHECK( item( "arm_warmers" ).get_layer() == layer_level::UNDERWEAR ); CHECK( item( "10gal_hat" ).get_layer() == layer_level::REGULAR ); CHECK( item( "baldric" ).get_layer() == layer_level::WAIST ); - CHECK( item( "aep_suit" ).get_layer() == layer_level::OUTER ); + CHECK( item( "armor_lightplate" ).get_layer() == layer_level::OUTER ); CHECK( item( "2byarm_guard" ).get_layer() == layer_level::BELTED ); } diff --git a/tests/map_memory_test.cpp b/tests/map_memory_test.cpp index fcc28128043ea..c294e0fdf463a 100644 --- a/tests/map_memory_test.cpp +++ b/tests/map_memory_test.cpp @@ -11,13 +11,33 @@ #include "map_memory.h" #include "point.h" -static constexpr tripoint p1{ tripoint_above }; -static constexpr tripoint p2{ 0, 0, 2 }; -static constexpr tripoint p3{ 0, 0, 3 }; +static constexpr tripoint p1{ -SEEX - 2, -SEEY - 3, -1 }; +static constexpr tripoint p2{ 5, 7, -1 }; +static constexpr tripoint p3{ SEEX * 2 + 5, SEEY + 7, -1 }; +static constexpr tripoint p4{ SEEX * 3 + 2, SEEY * 7 + 1, -1 }; + +TEST_CASE( "map_memory_keeps_region", "[map_memory]" ) +{ + map_memory memory; + CHECK( memory.prepare_region( p1, p2 ) ); + CHECK( !memory.prepare_region( p1, p2 ) ); + CHECK( !memory.prepare_region( p1 + tripoint_east, p2 + tripoint_east ) ); + CHECK( memory.prepare_region( p2, p3 ) ); + CHECK( memory.prepare_region( p1, p3 ) ); + CHECK( !memory.prepare_region( p1, p3 ) ); + CHECK( !memory.prepare_region( p2, p3 ) ); + CHECK( memory.prepare_region( p1, p4 ) ); + CHECK( !memory.prepare_region( p2, p3 ) ); + CHECK( memory.prepare_region( + tripoint( p2.x, p2.y, -p2.z ), + tripoint( p3.x, p3.y, -p3.z ) + ) ); +} TEST_CASE( "map_memory_defaults", "[map_memory]" ) { map_memory memory; + memory.prepare_region( p1, p2 ); CHECK( memory.get_symbol( p1 ) == 0 ); memorized_terrain_tile default_tile = memory.get_tile( p1 ); CHECK( default_tile.tile.empty() ); @@ -28,66 +48,25 @@ TEST_CASE( "map_memory_defaults", "[map_memory]" ) TEST_CASE( "map_memory_remembers", "[map_memory]" ) { map_memory memory; - memory.memorize_symbol( 2, p1, 1 ); - memory.memorize_symbol( 2, p2, 2 ); + memory.prepare_region( p1, p2 ); + memory.memorize_symbol( p1, 1 ); + memory.memorize_symbol( p2, 2 ); CHECK( memory.get_symbol( p1 ) == 1 ); CHECK( memory.get_symbol( p2 ) == 2 ); } -TEST_CASE( "map_memory_limited", "[map_memory]" ) -{ - lru_cache symbol_cache; - symbol_cache.insert( 2, p1, 1 ); - symbol_cache.insert( 2, p2, 1 ); - symbol_cache.insert( 2, p3, 1 ); - CHECK( symbol_cache.get( p1, 0 ) == 0 ); -} - TEST_CASE( "map_memory_overwrites", "[map_memory]" ) { map_memory memory; - memory.memorize_symbol( 2, p1, 1 ); - memory.memorize_symbol( 2, p2, 2 ); - memory.memorize_symbol( 2, p2, 3 ); + memory.prepare_region( p1, p2 ); + memory.memorize_symbol( p1, 1 ); + memory.memorize_symbol( p2, 2 ); + memory.memorize_symbol( p2, 3 ); CHECK( memory.get_symbol( p1 ) == 1 ); CHECK( memory.get_symbol( p2 ) == 3 ); } -TEST_CASE( "map_memory_erases_lru", "[map_memory]" ) -{ - lru_cache symbol_cache; - symbol_cache.insert( 2, p1, 1 ); - symbol_cache.insert( 2, p2, 2 ); - symbol_cache.insert( 2, p1, 1 ); - symbol_cache.insert( 2, p3, 3 ); - CHECK( symbol_cache.get( p1, 0 ) == 1 ); - CHECK( symbol_cache.get( p2, 0 ) == 0 ); - CHECK( symbol_cache.get( p3, 0 ) == 3 ); -} - -TEST_CASE( "map_memory_survives_save_lod", "[map_memory]" ) -{ - map_memory memory; - memory.memorize_symbol( 2, p1, 1 ); - memory.memorize_symbol( 2, p2, 2 ); - - // Save and reload - std::ostringstream jsout_s; - JsonOut jsout( jsout_s ); - memory.store( jsout ); - - INFO( "Json was: " << jsout_s.str() ); - std::istringstream jsin_s( jsout_s.str() ); - JsonIn jsin( jsin_s ); - map_memory memory2; - memory2.load( jsin ); - - memory.memorize_symbol( 2, p3, 3 ); - memory2.memorize_symbol( 2, p3, 3 ); - CHECK( memory.get_symbol( p1 ) == memory2.get_symbol( p1 ) ); - CHECK( memory.get_symbol( p2 ) == memory2.get_symbol( p2 ) ); - CHECK( memory.get_symbol( p3 ) == memory2.get_symbol( p3 ) ); -} +// TODO: map memory save / load #include diff --git a/tests/melee_dodge_hit_test.cpp b/tests/melee_dodge_hit_test.cpp index 679ef342bdec3..0f148fead708c 100644 --- a/tests/melee_dodge_hit_test.cpp +++ b/tests/melee_dodge_hit_test.cpp @@ -56,8 +56,19 @@ static float dodge_with_effect( Creature &critter, const std::string &effect_nam static float dodge_wearing_item( avatar &dummy, item &clothing ) { // Get nekkid and wear just this one item + std::list temp; - while( dummy.takeoff( dummy.i_at( -2 ), &temp ) ) {} + while( true ) { + item &it = dummy.i_at( -2 ); + + if( it.is_null() ) { + break; + } + if( !dummy.takeoff( item_location( *dummy.as_character(), &it ), &temp ) ) { + break; + } + } + dummy.wear_item( clothing ); return dummy.get_dodge(); diff --git a/tests/mondefense_test.cpp b/tests/mondefense_test.cpp index fcc2691daf582..5071af65fcdfd 100644 --- a/tests/mondefense_test.cpp +++ b/tests/mondefense_test.cpp @@ -97,7 +97,7 @@ TEST_CASE( "zapback_npc_electricity_immune", "[mondefense]" ) // Don't forget to turn it on... test_zapback( attacker, true ); // Wow this is a raw index? - attacker.activate_bionic( 0 ); + attacker.activate_bionic( 1 ); test_zapback( attacker, false ); } diff --git a/tests/monster_test.cpp b/tests/monster_test.cpp index 68983eeb63016..02c1ba8ecd532 100644 --- a/tests/monster_test.cpp +++ b/tests/monster_test.cpp @@ -361,12 +361,8 @@ TEST_CASE( "monster_broken_verify", "[monster]" ) // verify monsters with death_function = BROKEN // actually have appropriate broken_name items const MonsterGenerator &generator = MonsterGenerator::generator(); - const mon_action_death func = generator.get_death_function( "BROKEN" ).value(); for( const mtype &montype : generator.get_all_mtypes() ) { - const std::vector &die_funcs = montype.dies; - const auto broken_func_it = std::find( die_funcs.cbegin(), die_funcs.cend(), func ); - - if( broken_func_it == die_funcs.cend() ) { + if( montype.mdeath_effect.corpse_type != mdeath_type::BROKEN ) { continue; } diff --git a/tests/npc_attack_test.cpp b/tests/npc_attack_test.cpp new file mode 100644 index 0000000000000..c092f691a280e --- /dev/null +++ b/tests/npc_attack_test.cpp @@ -0,0 +1,286 @@ +#include "catch/catch.hpp" + +#include "game.h" +#include "map.h" +#include "map_helpers.h" +#include "npc.h" +#include "npc_attack.h" +#include "npc_class.h" +#include "options_helpers.h" +#include "player_helpers.h" + +static const mtype_id mon_zombie( "mon_zombie" ); + +static constexpr point main_npc_start{ 50, 50 }; +static constexpr tripoint main_npc_start_tripoint{ main_npc_start, 0 }; + +namespace npc_attack_setup +{ +static void spawn_main_npc() +{ + const string_id blank_template( "test_talker" ); + const character_id model_id = get_map().place_npc( main_npc_start, blank_template ); + + npc &model_npc = *g->find_npc( model_id ); + clear_character( model_npc ); + model_npc.setpos( main_npc_start_tripoint ); + + g->load_npcs(); +} + +static void respawn_main_npc() +{ + npc *guy = g->critter_at( main_npc_start_tripoint ); + guy->die( nullptr ); + spawn_main_npc(); +} + +// will seg fault if the main npc wasn't spawned yet +static npc &get_main_npc() +{ + return *g->critter_at( main_npc_start_tripoint ); +} + +static void spawn_zombie_at_range( const int range ) +{ + g->place_critter_at( mon_zombie, main_npc_start_tripoint + tripoint( range, 0, 0 ) ); +} +} // namespace npc_attack_setup + +struct npc_attack_melee_test_data { + itype_id weapon_id; + // base effectiveness against the zombie + int base_effectiveness; + // effectiveness skyrockets when the zombie will die in one hit + int deathblow; + // the effectiveness value if the zombie is not the main target + int not_main_target; + // the effectiveness value of a farther zombie if it's the target + int reach_far_target; + // the effectiveness value of a farther zombie if it's not the target but nearly dead + int reach_far_deathblow; + // effectiveness value of a farther zombie if it's nearly dead and is the target + int reach_far_target_deathblow; +}; + +static void test_melee_attacks( const npc_attack_melee_test_data &data ) +{ + CAPTURE( data.weapon_id.c_str() ); + clear_map_and_put_player_underground(); + clear_vehicles(); + scoped_weather_override sunny_weather( weather_type_id( "sunny" ) ); + g->weather.set_nextweather( calendar::turn ); + npc_attack_setup::spawn_main_npc(); + npc_attack_setup::spawn_zombie_at_range( 1 ); + monster *zomble = g->critter_at( main_npc_start_tripoint + tripoint_east ); + npc_attack_setup::respawn_main_npc(); + npc &main_npc = npc_attack_setup::get_main_npc(); + item weapon( data.weapon_id ); + main_npc.weapon = weapon; + const npc_attack_melee wep( main_npc.weapon ); + npc_attack_rating wep_effectiveness = wep.evaluate( main_npc, zomble ); + // base effectiveness against the zombie + CHECK( *wep_effectiveness.value() == data.base_effectiveness ); + zomble->set_hp( 1 ); + wep_effectiveness = wep.evaluate( main_npc, zomble ); + // effectiveness skyrockets when the zombie will die in one hit + CHECK( *wep_effectiveness.value() == data.deathblow ); + + npc_attack_setup::spawn_zombie_at_range( 4 ); + monster *dist_target = g->critter_at( main_npc_start_tripoint + tripoint( 4, 0, 0 ) ); + wep_effectiveness = wep.evaluate( main_npc, dist_target ); + // even if the distant target is the npc's actual target, + // the nearly dead zombie we actually can hit is the (only) choice + CHECK( wep_effectiveness.target() == main_npc_start_tripoint + tripoint_east ); + // but the actual effectiveness value is lower because it is not the main target + CHECK( *wep_effectiveness.value() == data.not_main_target ); + zomble->die( nullptr ); + wep_effectiveness = wep.evaluate( main_npc, dist_target ); + // we can't reach the only alive zombie, so there's no valid attack to make + CHECK( !wep_effectiveness.value() ); + dist_target->die( nullptr ); + +} + +static void test_reach_attacks( const npc_attack_melee_test_data &data ) +{ + test_melee_attacks( data ); + + npc &main_npc = npc_attack_setup::get_main_npc(); + const npc_attack_melee wep( main_npc.weapon ); + CAPTURE( data.weapon_id.c_str() ); + + npc_attack_setup::spawn_zombie_at_range( 1 ); + npc_attack_setup::spawn_zombie_at_range( 2 ); + + monster *mon_close = g->critter_at( main_npc_start_tripoint + tripoint_east ); + monster *mon_far = g->critter_at( main_npc_start_tripoint + tripoint( 2, 0, 0 ) ); + + // if the farther zombie is our target, prefer it + npc_attack_rating wep_effectiveness = wep.evaluate( main_npc, mon_far ); + CHECK( wep_effectiveness.target() == main_npc_start_tripoint + tripoint( 2, 0, 0 ) ); + CHECK( *wep_effectiveness.value() == data.reach_far_target ); + + mon_far->set_hp( 1 ); + wep_effectiveness = wep.evaluate( main_npc, mon_close ); + // if the farther zombie is nearly dead but the close one is our target, we still want to fight the closer one + CHECK( wep_effectiveness.target() == main_npc_start_tripoint + tripoint_east ); + CHECK( *wep_effectiveness.value() == data.reach_far_deathblow ); + + mon_close->set_hp( 1 ); + wep_effectiveness = wep.evaluate( main_npc, mon_far ); + // if both zombies are nearly dead, the far target should still be preferred + CHECK( wep_effectiveness.target() == main_npc_start_tripoint + tripoint( 2, 0, 0 ) ); + CHECK( *wep_effectiveness.value() == data.reach_far_target_deathblow ); +} + +struct npc_attack_gun_test_data { + std::string weapon_id; + // default gunmode against a zombie point-blank at MAX_RECOIL + int point_blank_hip_shot_default; + // default gunmode against a zombie point-blank at full aim + int point_blank_full_aim_default; +}; + +static void test_gun_attacks( const npc_attack_gun_test_data &data ) +{ + + clear_map_and_put_player_underground(); + clear_vehicles(); + scoped_weather_override sunny_weather( weather_type_id( "sunny" ) ); + g->weather.set_nextweather( calendar::turn ); + npc_attack_setup::spawn_main_npc(); + npc &main_npc = npc_attack_setup::get_main_npc(); + arm_shooter( main_npc, data.weapon_id ); + + npc_attack_setup::spawn_zombie_at_range( 1 ); + monster *near_zombie = g->critter_at( main_npc_start_tripoint + tripoint_east ); + + const npc_attack_gun gun_default( main_npc.weapon.gun_get_mode( gun_mode_id( "DEFAULT" ) ) ); + npc_attack_rating gun_effectiveness = gun_default.evaluate( main_npc, near_zombie ); + CHECK( *gun_effectiveness.value() == data.point_blank_hip_shot_default ); + main_npc.recoil = main_npc.aim_cap_from_volume( main_npc.weapon ); + gun_effectiveness = gun_default.evaluate( main_npc, near_zombie ); + CHECK( *gun_effectiveness.value() == data.point_blank_full_aim_default ); +} + +TEST_CASE( "Test NPC attack variants' potential", "[npc_attack]" ) +{ + SECTION( "melee" ) { + SECTION( "2x4" ) { + const npc_attack_melee_test_data twobyfour{ + itype_id( "test_2x4" ), + 35, 71, 24, + -1, -1, -1 + }; + test_melee_attacks( twobyfour ); + } + SECTION( "pipe" ) { + const npc_attack_melee_test_data pipe{ + itype_id( "test_pipe" ), + 68, 136, 45, + -1, -1, -1 + }; + test_melee_attacks( pipe ); + } + SECTION( "fire_ax" ) { + const npc_attack_melee_test_data fire_ax{ + itype_id( "test_fire_ax" ), + 141, 283, 94, + -1, -1, -1 + }; + test_melee_attacks( fire_ax ); + } + SECTION( "clumsy_sword" ) { + const npc_attack_melee_test_data clumsy_sword{ + itype_id( "test_clumsy_sword" ), + 227, 454, 151, + -1, -1, -1 + }; + test_melee_attacks( clumsy_sword ); + } + SECTION( "normal_sword" ) { + const npc_attack_melee_test_data normal_sword{ + itype_id( "test_normal_sword" ), + 291, 582, 194, + -1, -1, -1 + }; + test_melee_attacks( normal_sword ); + } + SECTION( "balanced_sword" ) { + const npc_attack_melee_test_data balanced_sword{ + itype_id( "test_balanced_sword" ), + 346, 692, 231, + -1, -1, -1 + }; + test_melee_attacks( balanced_sword ); + } + SECTION( "whip" ) { + const npc_attack_melee_test_data whip{ + itype_id( "test_bullwhip" ), + 22, 43, 14, + 19, 22, 37 + }; + test_reach_attacks( whip ); + } + SECTION( "glaive" ) { + const npc_attack_melee_test_data glaive{ + itype_id( "test_glaive" ), + 192, 384, 128, + 189, 192, 378 + }; + test_reach_attacks( glaive ); + } + } + SECTION( "ranged" ) { + SECTION( "glock" ) { + const npc_attack_gun_test_data glock{ + "test_glock", + 192, 222 + }; + test_gun_attacks( glock ); + } + SECTION( "longbow" ) { + const npc_attack_gun_test_data bow{ + "test_compbow", + 210, 240 + }; + test_gun_attacks( bow ); + } + SECTION( "m1911" ) { + const npc_attack_gun_test_data gun{ + "m1911", + 210, 240 + }; + test_gun_attacks( gun ); + } + SECTION( "remington_870" ) { + const npc_attack_gun_test_data gun{ + "remington_870", + 471, 501 + }; + test_gun_attacks( gun ); + } + SECTION( "browning_blr" ) { + const npc_attack_gun_test_data gun{ + "browning_blr", + 516, 546 + }; + test_gun_attacks( gun ); + } + SECTION( "shotgun_d" ) { + const npc_attack_gun_test_data gun{ + "shotgun_d", + 417, 447 + }; + test_gun_attacks( gun ); + } + SECTION( "m16a4" ) { + const npc_attack_gun_test_data gun{ + "m16a4", + 345, 375 + }; + test_gun_attacks( gun ); + } + } +} diff --git a/tests/player_activities_test.cpp b/tests/player_activities_test.cpp new file mode 100644 index 0000000000000..c089104c9c7da --- /dev/null +++ b/tests/player_activities_test.cpp @@ -0,0 +1,280 @@ +#include "catch/catch.hpp" +#include "map_helpers.h" +#include "player_helpers.h" +#include "activity_scheduling_helper.h" + +#include "map.h" +#include "character.h" +#include "monster.h" +#include "avatar.h" +#include "calendar.h" +#include "iuse_actor.h" +#include "game.h" +#include "flag.h" +#include "point.h" +#include "activity_actor_definitions.h" + +static const activity_id ACT_NULL( "ACT_NULL" ); +static const activity_id ACT_SHEARING( "ACT_SHEARING" ); + +static const efftype_id effect_pet( "pet" ); +static const efftype_id effect_tied( "tied" ); + +static const itype_id itype_test_battery_disposable( "test_battery_disposable" ); +static const itype_id itype_test_shears( "test_shears" ); +static const itype_id itype_test_shears_off( "test_shears_off" ); +static const itype_id itype_test_shears_on( "test_shears_on" ); + +static const mtype_id mon_test_shearable( "mon_test_shearable" ); +static const mtype_id mon_test_non_shearable( "mon_test_non_shearable" ); + +static const quality_id qual_SHEAR( "SHEAR" ); + +TEST_CASE( "shearing", "[activity][shearing][animals]" ) +{ + avatar &dummy = get_avatar(); + clear_avatar(); + clear_map(); + + auto test_monster = [&dummy]( bool mon_shearable ) -> monster & { + monster *mon; + if( mon_shearable ) + { + mon = &spawn_test_monster( mon_test_shearable.str(), dummy.pos() + tripoint_north ); + } else + { + mon = &spawn_test_monster( mon_test_non_shearable.str(), dummy.pos() + tripoint_north ); + } + + mon->friendly = -1; + mon->add_effect( effect_pet, 1_turns, true ); + mon->add_effect( effect_tied, 1_turns, true ); + return *mon; + }; + + + SECTION( "shearing testing time" ) { + + GIVEN( "player without shearing quality" ) { + clear_avatar(); + clear_map(); + monster &mon = test_monster( true ); + + REQUIRE( dummy.max_quality( qual_SHEAR ) <= 0 ); + dummy.activity = player_activity( shearing_activity_actor( mon.pos(), false ) ); + dummy.activity.start_or_resume( dummy, false ); + + THEN( "shearing can't start" ) { + CHECK( dummy.activity.id() == ACT_NULL ); + } + } + + GIVEN( "a tool with shearing quality one" ) { + clear_avatar(); + clear_map(); + monster &mon = test_monster( true ); + + dummy.i_add( item( itype_test_shears ) ); + REQUIRE( dummy.max_quality( qual_SHEAR ) == 1 ); + + dummy.activity = player_activity( shearing_activity_actor( mon.pos(), false ) ); + dummy.activity.start_or_resume( dummy, false ); + REQUIRE( dummy.activity.id() == ACT_SHEARING ); + + THEN( "shearing time is 30 minutes" ) { + CHECK( dummy.activity.moves_total == to_moves( 30_minutes ) ); + } + } + + GIVEN( "an electric tool with shearing quality three" ) { + clear_avatar(); + clear_map(); + monster &mon = test_monster( true ); + + item battery( itype_test_battery_disposable ); + battery.ammo_set( battery.ammo_default(), 300 ); + + item elec_shears( itype_test_shears_off ); + elec_shears.put_in( battery, item_pocket::pocket_type::MAGAZINE_WELL ); + + const use_function *use = elec_shears.type->get_use( "transform" ); + REQUIRE( use != nullptr ); + const iuse_transform *actor = dynamic_cast( use->get_actor_ptr() ); + actor->use( dummy, elec_shears, false, dummy.pos() ); + + dummy.i_add( elec_shears ); + REQUIRE( dummy.max_quality( qual_SHEAR ) == 3 ); + + dummy.activity = player_activity( shearing_activity_actor( mon.pos(), false ) ); + dummy.activity.start_or_resume( dummy, false ); + REQUIRE( dummy.activity.id() == ACT_SHEARING ); + + THEN( "shearing time is 10 minutes" ) { + CHECK( dummy.activity.moves_total == to_moves( 10_minutes ) ); + } + } + + GIVEN( "a non shearable animal" ) { + clear_avatar(); + clear_map(); + monster &mon = test_monster( false ); + + dummy.i_add( item( itype_test_shears ) ); + REQUIRE( dummy.max_quality( qual_SHEAR ) == 1 ); + + dummy.activity = player_activity( shearing_activity_actor( mon.pos(), false ) ); + dummy.activity.start_or_resume( dummy, false ); + + THEN( "shearing can't start" ) { + CHECK( dummy.activity.id() == ACT_NULL ); + } + } + } + + SECTION( "shearing losing tool" ) { + GIVEN( "an electric tool with shearing quality three" ) { + clear_avatar(); + clear_map(); + monster &mon = test_monster( true ); + + item battery( itype_test_battery_disposable ); + battery.ammo_set( battery.ammo_default(), 5 ); + + item elec_shears( itype_test_shears_off ); + elec_shears.put_in( battery, item_pocket::pocket_type::MAGAZINE_WELL ); + + const use_function *use = elec_shears.type->get_use( "transform" ); + REQUIRE( use != nullptr ); + const iuse_transform *actor = dynamic_cast( use->get_actor_ptr() ); + actor->use( dummy, elec_shears, false, dummy.pos() ); + + dummy.i_add( elec_shears ); + REQUIRE( dummy.max_quality( qual_SHEAR ) == 3 ); + + dummy.activity = player_activity( shearing_activity_actor( mon.pos(), false ) ); + dummy.activity.start_or_resume( dummy, false ); + REQUIRE( dummy.activity.id() == ACT_SHEARING ); + + dummy.moves += dummy.get_speed(); + for( int i = 0; i < 100; ++i ) { + dummy.activity.do_turn( dummy ); + } + + WHEN( "tool runs out of charges mid activity" ) { + for( int i = 0; i < 10000; ++i ) { + dummy.process_items(); + } + + CHECK( dummy.weapon.ammo_remaining() == 0 ); + REQUIRE( dummy.weapon.typeId().str() == itype_test_shears_off.str() ); + + CHECK( dummy.max_quality( qual_SHEAR ) <= 0 ); + + THEN( "activity stops without completing" ) { + CHECK( dummy.activity.id() == ACT_SHEARING ); + CHECK( dummy.activity.moves_left > 0 ); + dummy.activity.do_turn( dummy ); + CHECK( dummy.activity.id() == ACT_NULL ); + } + } + } + } + + SECTION( "shearing testing result" ) { + + GIVEN( "a shearable monster" ) { + + clear_avatar(); + clear_map(); + monster &mon = test_monster( true ); + + dummy.i_add( item( itype_test_shears ) ); + REQUIRE( dummy.max_quality( qual_SHEAR ) == 1 ); + + dummy.activity = player_activity( shearing_activity_actor( mon.pos(), false ) ); + dummy.activity.start_or_resume( dummy, false ); + REQUIRE( dummy.activity.id() == ACT_SHEARING ); + + const itype_id test_amount( "test_rock" ); + const itype_id test_random( "test_2x4" ); + const itype_id test_mass( "test_rag" ); + const itype_id test_volume( "test_pipe" ); + + process_activity( dummy ); + WHEN( "shearing finishes" ) { + CHECK( dummy.activity.id() == ACT_NULL ); + THEN( "player receives the items" ) { + const map_stack items = get_map().i_at( dummy.pos() ); + int count_amount = 0; + int count_random = 0; + int count_mass = 0; + int count_volume = 0; + for( const item &it : items ) { + // can't use switch here + const itype_id it_id = it.typeId(); + if( it_id == test_amount ) { + count_amount += it.charges; + } else if( it_id == test_random ) { + count_random += 1; + } else if( it_id == test_mass ) { + count_mass += 1; + } else if( it_id == test_volume ) { + count_volume += 1; + } + } + + CHECK( count_amount == 30 ); + CHECK( ( 5 <= count_random && count_random <= 10 ) ); + + float weight = units::to_kilogram( mon.get_weight() ); + CHECK( count_mass == static_cast( 0.5f * weight ) ); + + float volume = units::to_liter( mon.get_volume() ); + CHECK( count_volume == static_cast( 0.3f * volume ) ); + } + } + } + + GIVEN( "an previously tied shearable monster" ) { + clear_avatar(); + clear_map(); + monster &mon = test_monster( true ); + + dummy.i_add( item( itype_test_shears ) ); + REQUIRE( dummy.max_quality( qual_SHEAR ) == 1 ); + + dummy.activity = player_activity( shearing_activity_actor( mon.pos(), false ) ); + dummy.activity.start_or_resume( dummy, false ); + REQUIRE( dummy.activity.id() == ACT_SHEARING ); + + process_activity( dummy ); + WHEN( "player is done shearing" ) { + REQUIRE( dummy.activity.id() == ACT_NULL ); + THEN( "monster is tied" ) { + CHECK( mon.has_effect( effect_tied ) ); + } + } + } + + GIVEN( "a previously untied shearable monster" ) { + clear_avatar(); + clear_map(); + monster &mon = test_monster( true ); + + dummy.i_add( item( itype_test_shears ) ); + REQUIRE( dummy.max_quality( qual_SHEAR ) == 1 ); + + dummy.activity = player_activity( shearing_activity_actor( mon.pos(), true ) ); + dummy.activity.start_or_resume( dummy, false ); + REQUIRE( dummy.activity.id() == ACT_SHEARING ); + + process_activity( dummy ); + WHEN( "player is done shearing" ) { + REQUIRE( dummy.activity.id() == ACT_NULL ); + THEN( "monster is untied" ) { + CHECK_FALSE( mon.has_effect( effect_tied ) ); + } + } + } + } +} diff --git a/tests/pocket_test.cpp b/tests/pocket_test.cpp index e97efc2e7b938..ba0c26cdfdff6 100644 --- a/tests/pocket_test.cpp +++ b/tests/pocket_test.cpp @@ -1090,7 +1090,7 @@ TEST_CASE( "best pocket in item contents", "[pocket][item][best]" ) SECTION( "item with one watertight pocket has best_pocket for liquid" ) { // Must have a CONTAINER pocket, first and foremost item skin( "test_waterskin" ); - REQUIRE( skin.has_pockets() ); + REQUIRE( skin.is_container() ); REQUIRE( skin.contents.has_pocket_type( item_pocket::pocket_type::CONTAINER ) ); // Prerequisite: It can contain water item liquid( "test_liquid" ); @@ -1104,7 +1104,7 @@ TEST_CASE( "best pocket in item contents", "[pocket][item][best]" ) SECTION( "item with many different pockets can have best_pocket for different items" ) { // Utility belt has CONTAINER pockets item util_belt( "test_utility_belt" ); - REQUIRE( util_belt.has_pockets() ); + REQUIRE( util_belt.is_container() ); REQUIRE( util_belt.contents.has_pocket_type( item_pocket::pocket_type::CONTAINER ) ); // It can contain small and large tools item screwdriver( "test_screwdriver" ); @@ -1153,7 +1153,7 @@ TEST_CASE( "best pocket in item contents", "[pocket][item][best]" ) SECTION( "sealed pockets cannot be best_pocket" ) { // Regular aluminum beverage can and something to fill it with item can( "test_can_drink" ); - REQUIRE( can.has_pockets() ); + REQUIRE( can.is_container() ); REQUIRE( can.contents.has_pocket_type( item_pocket::pocket_type::CONTAINER ) ); item liquid( "test_liquid" ); REQUIRE( can.can_contain( liquid ) ); diff --git a/tests/point_test.cpp b/tests/point_test.cpp index 355e0cfa3adf4..10ae9fee70903 100644 --- a/tests/point_test.cpp +++ b/tests/point_test.cpp @@ -26,6 +26,78 @@ TEST_CASE( "rectangle_containment_raw", "[point]" ) CHECK( !r2.contains( point( 0, 3 ) ) ); } +TEST_CASE( "rectangle_overlapping_inclusive", "[point]" ) +{ + inclusive_rectangle r1( point( 0, 0 ), point( 2, + 2 ) ); // NOLINT(cata-use-named-point-constants) + inclusive_rectangle r2( point( 2, 2 ), point( 3, 3 ) ); + inclusive_rectangle r3( point( 0, 0 ), point( 2, + 1 ) ); // NOLINT(cata-use-named-point-constants) + inclusive_rectangle r4( point( -2, -4 ), point( 4, -1 ) ); + inclusive_rectangle r5( point( -1, -3 ), point( 0, -2 ) ); + + CHECK( r1.overlaps( r1 ) ); + CHECK( r1.overlaps( r2 ) ); + CHECK( r1.overlaps( r3 ) ); + CHECK( !r1.overlaps( r4 ) ); + CHECK( !r1.overlaps( r5 ) ); + + CHECK( r2.overlaps( r1 ) ); + CHECK( r2.overlaps( r2 ) ); + CHECK( !r2.overlaps( r3 ) ); + CHECK( !r2.overlaps( r4 ) ); + CHECK( !r2.overlaps( r5 ) ); + + CHECK( r3.overlaps( r1 ) ); + CHECK( !r3.overlaps( r2 ) ); + CHECK( r3.overlaps( r3 ) ); + CHECK( !r3.overlaps( r4 ) ); + CHECK( !r3.overlaps( r5 ) ); + + CHECK( !r4.overlaps( r1 ) ); + CHECK( !r4.overlaps( r2 ) ); + CHECK( !r4.overlaps( r3 ) ); + CHECK( r4.overlaps( r4 ) ); + CHECK( r4.overlaps( r5 ) ); + CHECK( r5.overlaps( r4 ) ); +} + +TEST_CASE( "rectangle_overlapping_half_open", "[point]" ) +{ + half_open_rectangle r1( point( 0, 0 ), point( 2, + 2 ) ); // NOLINT(cata-use-named-point-constants) + half_open_rectangle r2( point( 2, 2 ), point( 3, 3 ) ); + half_open_rectangle r3( point( 0, 0 ), point( 2, + 1 ) ); // NOLINT(cata-use-named-point-constants) + half_open_rectangle r4( point( -2, -4 ), point( 4, -1 ) ); + half_open_rectangle r5( point( -1, -3 ), point( 0, -2 ) ); + + CHECK( r1.overlaps( r1 ) ); + CHECK( !r1.overlaps( r2 ) ); + CHECK( r1.overlaps( r3 ) ); + CHECK( !r1.overlaps( r4 ) ); + CHECK( !r1.overlaps( r5 ) ); + + CHECK( !r2.overlaps( r1 ) ); + CHECK( r2.overlaps( r2 ) ); + CHECK( !r2.overlaps( r3 ) ); + CHECK( !r2.overlaps( r4 ) ); + CHECK( !r2.overlaps( r5 ) ); + + CHECK( r3.overlaps( r1 ) ); + CHECK( !r3.overlaps( r2 ) ); + CHECK( r3.overlaps( r3 ) ); + CHECK( !r3.overlaps( r4 ) ); + CHECK( !r3.overlaps( r5 ) ); + + CHECK( !r4.overlaps( r1 ) ); + CHECK( !r4.overlaps( r2 ) ); + CHECK( !r4.overlaps( r3 ) ); + CHECK( r4.overlaps( r4 ) ); + CHECK( r4.overlaps( r5 ) ); + CHECK( r5.overlaps( r4 ) ); +} + TEST_CASE( "rectangle_containment_coord", "[point]" ) { // NOLINTNEXTLINE(cata-use-named-point-constants) diff --git a/tests/ranged_balance_test.cpp b/tests/ranged_balance_test.cpp index bc27c11728a90..e9567914456c7 100644 --- a/tests/ranged_balance_test.cpp +++ b/tests/ranged_balance_test.cpp @@ -327,7 +327,7 @@ TEST_CASE( "expert_shooter_accuracy", "[ranged] [balance]" ) test_fast_shooting( shooter, 50, 0.4 ); } SECTION( "an expert shooter with an excellent shotgun" ) { - arm_shooter( shooter, "m1014", { "holo_sight" } ); + arm_shooter( shooter, "mossberg_930", { "holo_sight" } ); test_shooting_scenario( shooter, 18, 24, 124 ); test_fast_shooting( shooter, 60, 0.5 ); } diff --git a/tests/unseal_and_spill_test.cpp b/tests/unseal_and_spill_test.cpp index a3cd35838942c..697eaad287c7b 100644 --- a/tests/unseal_and_spill_test.cpp +++ b/tests/unseal_and_spill_test.cpp @@ -150,7 +150,7 @@ class test_scenario void unseal_items_containing( contents_change_handler &handler, item_location &root, const std::set &types ) { - for( item *it : root->contents.all_items_top( item_pocket::pocket_type::CONTAINER ) ) { + for( item *it : root->all_items_top( item_pocket::pocket_type::CONTAINER ) ) { if( it ) { item_location content( root, it ); if( types.count( it->typeId() ) ) { @@ -267,7 +267,7 @@ void match( item_location loc, const final_result &result ) REQUIRE( loc->typeId() == result.id ); CHECK( result.sealed == ( loc->contents.get_sealed_summary() != item_contents::sealed_summary::unsealed ) ); - match( loc, loc->contents.all_items_top( item_pocket::pocket_type::CONTAINER ), result.contents ); + match( loc, loc->all_items_top( item_pocket::pocket_type::CONTAINER ), result.contents ); } void test_scenario::run() diff --git a/tools/gfx_tools/tileset_coverage.py b/tools/gfx_tools/tileset_coverage.py new file mode 100644 index 0000000000000..ffe99e8bdef41 --- /dev/null +++ b/tools/gfx_tools/tileset_coverage.py @@ -0,0 +1,224 @@ +#!/usr/bin/env python3 +""" +Outer join game IDs with overlay IDs and tileset IDs + + +cd Cataclysm-DDA + +python3 tools/json_tools/table.py -f csv --nonestring ""\ + --tileset type id name description color looks_like "copy-from" longest_side \ + > all_game_ids.csv + +python3 tools/gfx_tools/list_tileset_ids.py gfx/UltimateCataclysm \ + > tileset_ids.csv + +python3 tools/json_tools/generate_overlay_ids.py \ + > all_overlay_ids.csv + +python3 tools/gfx_tools/tileset_coverage.py \ + all_game_ids.csv all_overlay_ids.csv tileset_ids.csv \ + tileset_coverage_output.csv +""" +import argparse +import re +import sys + +from typing import Union + +import pandas + + +REPLACEMENTS = ( + r'^overlay_(.+)_sees_player$', +) + +DELETION_RE = ( + r'_season_(spring|summer|autumn|winter)|' + r'^\[|' + r'\]$|' + r'^overlay(_(male|female))?_(effect|mutation|worn|wielded(_corpse)?)_|' + r'^overlay_|' + r'^corpse_|' + r'^vp_|' + r'(_(' + r'cover|cross|horizontal|horizontal_2|vertical|vertical_2|ne|nw|se|sw' + r'))?' + r'(_(' + r'unconnected|left|right|rear|front' + r'))?' + r'(_edge)?' + r'$' +) + + +def strip_overlay_id(overlay_id: str) -> str: + """ + Extract game ID from an overlay ID string + + >>> strip_overlay_id('vp_wheel_wood') + 'wheel_wood' + >>> strip_overlay_id('vp_reinforced_windshield_front_edge') + 'reinforced_windshield' + >>> strip_overlay_id('vp_wheel_wheelchair') + 'wheel_wheelchair' + >>> strip_overlay_id('vp_frame_wood_vertical_2_unconnected') + 'frame_wood' + + """ + stripped_id = overlay_id + + for pattern in REPLACEMENTS: + stripped_id = re.sub( + pattern, + r'\g<1>', + overlay_id, + ) + + stripped_id = re.sub( + DELETION_RE, + '', + stripped_id, + ) + + return stripped_id + + +def get_data( + all_game_ids_filename: str, + overlay_ids_filename: str, + tileset_ids_filename: str)\ + -> tuple: + """ + Load datasets with game IDs, tileset IDs and overlay IDs + """ + all_game_ids = pandas.read_csv( + all_game_ids_filename, + warn_bad_lines=True, + ) + overlay_ids = pandas.read_csv( + overlay_ids_filename, + header=None, + names=('overlay_id',), + warn_bad_lines=True, + ) + tileset_ids = pandas.read_csv( + tileset_ids_filename, + header=None, + names=('tileset_id',), + warn_bad_lines=True, + ) + return all_game_ids, overlay_ids, tileset_ids + + +def merge_datasets( + all_game_ids: Union[dict, pandas.DataFrame], + overlay_ids: Union[dict, pandas.DataFrame], + tileset_ids: Union[dict, pandas.DataFrame])\ + -> pandas.DataFrame: + """ + Match IDs between game data, overlays and tileset + + >>> merge_datasets({ + ... 'type': ['ARMOR', 'TOOL', 'BOOK'], + ... 'id': ['a', 'b', 'c'], + ... 'description': ['desc a', 'desc b', 'desc c'], + ... 'color': ['red', 'green', 'blue'] + ... }, { + ... 'overlay_id': [ + ... 'overlay_worn_a', 'overlay_worn_b', 'overlay_worn_c', + ... 'overlay_wielded_a', 'overlay_wielded_b', 'overlay_wielded_c', + ... ], + ... }, { + ... 'tileset_id': ['a', 'b', 'overlay_worn_a', 'overlay_wielded_b'], + ... }) + type id description color overlay_id tileset_id + 0 ARMOR a desc a red NaN a + 1 ARMOR a desc a red overlay_worn_a overlay_worn_a + 7 NaN a NaN NaN overlay_wielded_a NaN + 2 TOOL b desc b green NaN b + 3 TOOL b desc b green overlay_wielded_b overlay_wielded_b + 5 NaN b NaN NaN overlay_worn_b NaN + 4 BOOK c desc c blue NaN NaN + 6 NaN c NaN NaN overlay_worn_c NaN + 8 NaN c NaN NaN overlay_wielded_c NaN + + # TODO: + type id description color overlay_id tileset_id + 0 ARMOR a desc a red NaN a + 1 ARMOR a NaN NaN overlay_worn_a overlay_worn_a + 2 ARMOR a NaN NaN overlay_wielded_a NaN + 3 TOOL b desc b green NaN b + 4 TOOL b NaN NaN overlay_worn_b NaN + 5 TOOL b NaN NaN overlay_wielded_b overlay_wielded_b + 6 BOOK c desc c blue NaN NaN + 7 BOOK c NaN NaN overlay_worn_c NaN + 8 BOOK c NaN NaN overlay_wielded_c NaN + """ + all_game_ids = pandas.DataFrame(all_game_ids) + overlay_ids = pandas.DataFrame(overlay_ids) + tileset_ids = pandas.DataFrame(tileset_ids) + + tileset_ids['id'] = tileset_ids['tileset_id'].apply(strip_overlay_id) + + # TODO: output the original ID and type in the generate_overlay_ids.py + overlay_ids['id'] = overlay_ids['overlay_id'].apply(strip_overlay_id) + # game_data = pandas.merge(all_game_ids, overlay_ids, on=['type', 'id']) + + # match tileset with game data + result = all_game_ids.merge( + tileset_ids, + how='outer', + on='id', + sort=False, + ) + # match overlays + result = result.merge( + overlay_ids, + how='outer', + left_on=['id', 'tileset_id'], + right_on=['id', 'overlay_id'], + sort=False, + ) + # rearrange columns + overlay_id_column = result.pop('overlay_id') + result.insert( + result.columns.get_loc('tileset_id'), + overlay_id_column.name, + overlay_id_column, + ) + return result.sort_values('id') + + +def write_output(data: pandas.DataFrame, output_filename: str) -> int: + """ + Write the resulting DataFrame to a file + """ + result = data.to_csv(output_filename) + if result is None: + # error + return 1 + + return 0 + + +if __name__ == '__main__': + arg_parser = argparse.ArgumentParser( + description=__doc__, + formatter_class=argparse.RawDescriptionHelpFormatter, + ) + arg_parser.add_argument('all_game_ids.csv') + arg_parser.add_argument('all_overlay_ids.csv') + arg_parser.add_argument('tileset_ids.csv') + arg_parser.add_argument('tileset_coverage_output.csv') + args_dict = vars(arg_parser.parse_args()) + + sys.exit(write_output( + merge_datasets( + *get_data( + args_dict.get('all_game_ids.csv'), + args_dict.get('all_overlay_ids.csv'), + args_dict.get('tileset_ids.csv'), + ) + ), + args_dict.get('tileset_coverage_output.csv'), + )) diff --git a/tools/json_tools/convert_to_portions.py b/tools/json_tools/convert_to_portions.py index 2a039bfbd3ae1..bb864459b8a60 100755 --- a/tools/json_tools/convert_to_portions.py +++ b/tools/json_tools/convert_to_portions.py @@ -9,69 +9,28 @@ args_dict = vars(args.parse_args()) -class portion_data: - encumbrance = -1 - max_encumbrance = -1 - coverage = -1 - covers = [] - sided = False - - -def portion_null(dat): - ret = dat.encumbrance == -1 - ret = ret and dat.max_encumbrance == -1 - ret = ret and dat.coverage == -1 - ret = ret and len(dat.covers) == 0 - ret = ret and not dat.sided - return ret - - -def gen_entry(dat): - added = dict() - - if dat.encumbrance != -1: - added["encumbrance"] = dat.encumbrance - if dat.max_encumbrance != -1: - added["encumbrance"] = [dat.encumbrance, dat.max_encumbrance] - if dat.coverage != -1: - added["coverage"] = dat.coverage - if len(dat.covers) != 0: - added["covers"] = dat.covers - if dat.sided: - added["sided"] = True - - return added +def portionize(jo): + dat = dict() + for member in ["encumbrance", "max_encumbrance", + "coverage", "covers"]: + if member in jo: + dat[member] = jo.pop(member) -def portionize(jo): - dat = portion_data() - if "encumbrance" in jo: - dat.encumbrance = jo["encumbrance"] - del jo["encumbrance"] - if "max_encumbrance" in jo: - dat.max_encumbrance = jo["max_encumbrance"] - del jo["max_encumbrance"] - if "coverage" in jo: - dat.coverage = jo["coverage"] - del jo["coverage"] - if "covers" in jo: - dat.covers = jo["covers"] - del jo["covers"] - if "sided" in jo: - dat.sided = jo["sided"] - del jo["sided"] - - if portion_null(dat): + if not dat: return None - if "armor_portion_data" not in jo: - added = gen_entry(dat) - jo["armor_portion_data"] = [added] + if "max_encumbrance" in dat: + if "encumbrance" not in dat: + dat["encumbrance"] = 0 + dat["encumbrance"] = [dat["encumbrance"], dat.pop("max_encumbrance")] + + if "armor" not in jo: + jo["armor"] = [dat] else: - added = gen_entry(dat) - added["//0"] = "Autogenned for item with non-portion and portion data" - added["//1"] = "Ensure that this works correctly!" - jo["armor_portion_data"].insert(0, added) + dat["//0"] = "Autogenned for item with non-portion and portion data" + dat["//1"] = "Ensure that this works correctly!" + jo["armor"].insert(0, dat) return jo @@ -82,11 +41,23 @@ def gen_new(path): # Uncomment below to find the file it's halting on #print(path) with open(path, "r") as json_file: - json_data = json.load(json_file) + try: + json_data = json.load(json_file) + except json.JSONDecodeError: + print(f"Json Decode Error at {path}") + print("Ensure that the file is a JSON file consisting of" + " an array of objects!") + return None + for jo in json_data: - if "type" not in jo: - continue - if (jo["type"] != "ARMOR" and + if type(jo) is not dict: + print(f"Incorrectly formatted JSON data at {path}") + print("Ensure that the file is a JSON file consisting" + " of an array of objects!") + break + + if ("type" not in jo or + jo["type"] != "ARMOR" and jo["type"] != "TOOL_ARMOR" and "armor_data" not in jo): continue @@ -109,10 +80,12 @@ def gen_new(path): for root, directories, filenames in os.walk(args_dict["dir"]): for filename in filenames: + if not filename.endswith(".json"): + continue + path = os.path.join(root, filename) - if path.endswith(".json"): - new = gen_new(path) - if new is not None: - with open(path, "w") as jf: - json.dump(new, jf, ensure_ascii=False) - os.system(f"./tools/format/json_formatter.cgi {path}") + new = gen_new(path) + if new is not None: + with open(path, "w") as jf: + json.dump(new, jf, ensure_ascii=False) + os.system(f"./tools/format/json_formatter.cgi {path}")