diff --git a/data/json/itemgroups/Food/food.json b/data/json/itemgroups/Food/food.json index ff94b16c8a035..6ae9338b06500 100644 --- a/data/json/itemgroups/Food/food.json +++ b/data/json/itemgroups/Food/food.json @@ -317,7 +317,7 @@ { "item": "wheat", "prob": 3 }, { "item": "onion", "prob": 3 }, { "item": "garlic", "prob": 3 }, - { "item": "pine_nuts", "prob": 2 }, + { "item": "pine_nuts", "prob": 10 }, { "item": "carrot", "prob": 3 } ] }, @@ -385,7 +385,7 @@ { "item": "blackberries", "prob": 7 }, { "item": "cholla_bud", "prob": 3 }, { "item": "garlic", "prob": 3 }, - { "item": "pine_nuts", "prob": 2 } + { "item": "pine_nuts", "prob": 10 } ] }, { @@ -460,7 +460,7 @@ { "item": "coffee_syrup", "prob": 10 }, { "item": "fruit_leather", "prob": 25 }, { "item": "kernels", "prob": 25 }, - { "item": "pine_nuts", "prob": 5 }, + { "item": "pine_nuts", "prob": 20 }, { "group": "teabag_box", "prob": 10 } ] }, @@ -476,7 +476,7 @@ { "item": "mintpatties", "prob": 8 }, { "item": "choco_coffee_beans", "prob": 8 }, { "item": "fruit_leather", "prob": 15 }, - { "item": "pine_nuts", "prob": 4 } + { "item": "pine_nuts", "prob": 20 } ] }, { diff --git a/data/json/itemgroups/military.json b/data/json/itemgroups/military.json index 3eea4a5a0eefc..d8ee6133d259c 100644 --- a/data/json/itemgroups/military.json +++ b/data/json/itemgroups/military.json @@ -402,6 +402,25 @@ { "item": "20x66_inc", "prob": 2 } ] }, + { + "type": "item_group", + "id": "mil_bulk", + "//": "A bulk of uniform goods all of the same type likely found in a shipping crate", + "subtype": "distribution", + "entries": [ + { "item": "mil_mess_kit", "prob": 10, "count": 32 }, + { "item": "voltmeter", "prob": 10, "count": 32 }, + { "item": "drivebelt", "prob": 10, "count": 64 }, + { "item": "grapnel", "prob": 10, "count": 32 }, + { "item": "string_floss", "prob": 5, "count": 128 }, + { "item": "toothbrush_plain", "prob": 5, "count": 128 }, + { "item": "sm_extinguisher", "prob": 5, "count": 16 }, + { "item": "fire_ax", "prob": 5, "count": 16 }, + { "item": "manual_stabbing", "prob": 5, "count": 64 }, + { "item": "manual_rifle", "prob": 5, "count": 64 }, + { "item": "m17", "prob": 3, "count": 32 } + ] + }, { "type": "item_group", "id": "mil_food", diff --git a/data/json/items/comestibles/nuts.json b/data/json/items/comestibles/nuts.json index b025cc3547fb0..4615559db30c5 100644 --- a/data/json/items/comestibles/nuts.json +++ b/data/json/items/comestibles/nuts.json @@ -3,23 +3,23 @@ "type": "COMESTIBLE", "id": "pine_nuts", "name": { "str_sp": "pine nuts" }, - "weight": "30 g", + "weight": "15 g", "color": "brown", "spoils_in": 1080, "container": "bag_plastic", "comestible_type": "FOOD", "symbol": "%", - "quench": -2, + "quench": -1, "healthy": 1, - "calories": 202, + "calories": 101, "description": "A handful of tasty crunchy nuts from a pinecone.", - "price": 136, - "price_postapoc": 600, + "price": 68, + "price_postapoc": 300, "material": "nut", - "volume": "250 ml", + "volume": "125 ml", "flags": [ "EDIBLE_FROZEN", "NUTRIENT_OVERRIDE" ], "charges": 4, - "vitamins": [ [ "iron", 9 ] ], + "vitamins": [ [ "iron", 5 ] ], "fun": 2 }, { diff --git a/data/json/items/generic/bathroom_house.json b/data/json/items/generic/bathroom_house.json index dba9eb592f686..5392981b56c6d 100644 --- a/data/json/items/generic/bathroom_house.json +++ b/data/json/items/generic/bathroom_house.json @@ -96,6 +96,7 @@ "name": { "str": "dental floss", "str_pl": "rolls of dental floss" }, "type": "GENERIC", "description": "Twenty-five yards of finely waxed thread wound up inside a plastic container. Perfect for picking bits of smoked meat out of your teeth. Disassemble to use the thread for something else.", + "weight": "28 g", "copy-from": "base_toiletries", "symbol": "~", "material": [ "plastic", "cotton" ] diff --git a/data/json/items/tool_armor.json b/data/json/items/tool_armor.json index cc76c9e79f770..3c093c871706b 100644 --- a/data/json/items/tool_armor.json +++ b/data/json/items/tool_armor.json @@ -835,7 +835,6 @@ "CLIMATE_CONTROL" ], "turns_per_charge": 18, - "charges_per_use": 0, "revert_to": "rm13_armor", "use_action": "RM13ARMOR_ON", "environmental_protection": 40, diff --git a/data/json/obsolete.json b/data/json/obsolete.json index 257582ac5e71a..60c37c2d9621a 100644 --- a/data/json/obsolete.json +++ b/data/json/obsolete.json @@ -35,6 +35,7 @@ "description": "This stripped down mini-reactor generates impressive amounts of bionic power. There is no way to shut it down, but you can toggle additional fuel intake. Irradiates your body when active.", "occupied_bodyparts": [ [ "TORSO", 55 ] ], "flags": [ "BIONIC_POWER_SOURCE", "BIONIC_TOGGLED", "BIONIC_NPC_USABLE" ], + "available_upgrades": [ "bio_advreactor" ], "included_bionics": [ "bio_plutdump" ] }, { diff --git a/data/json/recipes/recipe_food.json b/data/json/recipes/recipe_food.json index 63e18123d5a27..9d23eb355adf5 100644 --- a/data/json/recipes/recipe_food.json +++ b/data/json/recipes/recipe_food.json @@ -2834,21 +2834,6 @@ "tools": [ [ [ "surface_heat", 2, "LIST" ] ] ], "components": [ [ [ "buckwheat", 1 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ] }, - { - "type": "recipe", - "result": "pine_nuts", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_VEGGI", - "skill_used": "cooking", - "skills_required": [ "survival", 2 ], - "difficulty": 1, - "charges": 1, - "time": "1 m 30 s", - "autolearn": true, - "batch_time_factors": [ 80, 1 ], - "tools": [ [ [ "surface_heat", 5, "LIST" ] ] ], - "components": [ [ [ "pinecone", 1 ] ] ] - }, { "type": "recipe", "result": "walnut_roasted", diff --git a/data/json/recipes/recipe_obsolete.json b/data/json/recipes/recipe_obsolete.json index ac0c3679e755c..4b70ca936cc6e 100644 --- a/data/json/recipes/recipe_obsolete.json +++ b/data/json/recipes/recipe_obsolete.json @@ -2459,5 +2459,10 @@ "type": "recipe", "result": "shotcanister_pebble", "obsolete": true + }, + { + "type": "recipe", + "result": "pine_nuts", + "obsolete": true } ] diff --git a/data/mods/CRT_EXPANSION/constructions/crt_constructions.json b/data/mods/CRT_EXPANSION/constructions/crt_constructions.json index 3c6dc3aea4631..84fd60e199740 100644 --- a/data/mods/CRT_EXPANSION/constructions/crt_constructions.json +++ b/data/mods/CRT_EXPANSION/constructions/crt_constructions.json @@ -6,7 +6,7 @@ "category": "OTHER", "required_skills": [ [ "survival", 0 ] ], "time": "6 m", - "byproducts": [ { "item": "withered", "charges": [ 1, 3 ] } ], + "byproducts": [ { "item": "withered", "count": [ 1, 3 ] } ], "pre_terrain": "t_grass_long", "post_terrain": "t_grass", "tools": [ [ [ "scythe", -1 ], [ "sickle", -1 ] ] ] @@ -18,7 +18,7 @@ "category": "OTHER", "required_skills": [ [ "survival", 0 ] ], "time": "6 m", - "byproducts": [ { "item": "withered", "charges": [ 1, 3 ] } ], + "byproducts": [ { "item": "withered", "count": [ 1, 3 ] } ], "pre_terrain": "t_grass_tall", "post_terrain": "t_grass", "tools": [ [ [ "scythe", -1 ], [ "sickle", -1 ] ] ] @@ -31,7 +31,7 @@ "required_skills": [ [ "survival", 0 ] ], "time": "6 m", "qualities": [ [ { "id": "DIG", "level": 1 } ] ], - "byproducts": [ { "item": "withered", "charges": [ 2, 3 ] } ], + "byproducts": [ { "item": "withered", "count": [ 2, 3 ] } ], "pre_terrain": "t_grass", "post_terrain": "t_dirt" }, @@ -43,7 +43,7 @@ "required_skills": [ [ "survival", 0 ] ], "time": "9 m", "qualities": [ [ { "id": "DIG", "level": 1 } ] ], - "byproducts": [ { "item": "withered_bundle", "charges": [ 2, 3 ] } ], + "byproducts": [ { "item": "withered_bundle", "count": [ 2, 3 ] } ], "pre_terrain": "t_grass_long", "post_terrain": "t_dirt" }, @@ -55,7 +55,7 @@ "required_skills": [ [ "survival", 0 ] ], "time": "9 m", "qualities": [ [ { "id": "DIG", "level": 1 } ] ], - "byproducts": [ { "item": "withered_bundle", "charges": [ 3, 4 ] } ], + "byproducts": [ { "item": "withered_bundle", "count": [ 3, 4 ] } ], "pre_terrain": "t_grass_tall", "post_terrain": "t_dirt" }, @@ -67,7 +67,7 @@ "required_skills": [ [ "survival", 0 ] ], "time": "6 m", "qualities": [ [ { "id": "DIG", "level": 1 } ] ], - "byproducts": [ { "item": "withered", "charges": [ 1, 2 ] } ], + "byproducts": [ { "item": "withered", "count": [ 1, 2 ] } ], "pre_terrain": "t_grass_dead", "post_terrain": "t_dirt" }, @@ -101,9 +101,9 @@ "description": "Chop Tree Trunk Into Logs", "category": "FARM_WOOD", "required_skills": [ [ "survival", 2 ] ], - "time": "50 m", - "qualities": [ [ { "id": "AXE", "level": 2 }, { "id": "SAW_W", "level": 1 } ] ], - "byproducts": [ { "item": "log", "count": [ 2, 3 ] } ], + "time": "45 m", + "qualities": [ [ { "id": "AXE", "level": 3 }, { "id": "SAW_W", "level": 1 } ] ], + "byproducts": [ { "item": "log", "count": [ 1, 3 ] } ], "pre_terrain": "t_trunk", "post_terrain": "t_dirt" }, diff --git a/data/mods/CRT_EXPANSION/constructions/crt_terrain.json b/data/mods/CRT_EXPANSION/constructions/crt_terrain.json index 83b21d2c9f94a..04d57a51c5a07 100644 --- a/data/mods/CRT_EXPANSION/constructions/crt_terrain.json +++ b/data/mods/CRT_EXPANSION/constructions/crt_terrain.json @@ -10,14 +10,15 @@ "flags": [ "FLAMMABLE_HARD", "NOITEM", "SUPPORTS_ROOF", "WALL", "AUTO_WALL_SYMBOL" ], "connects_to": "WALL", "bash": { - "str_min": 6, - "str_max": 15, + "str_min": 4, + "str_max": 12, "sound": "crunch!", "sound_fail": "krick!", "ter_set": "t_null", "items": [ { "item": "stick", "count": [ 0, 1 ] }, - { "item": "pebble", "charges": [ 1, 5 ] }, + { "item": "pebble", "charges": [ 3, 5 ] }, + { "item": "material_soil", "charges": [ 10, 30 ] }, { "item": "splinter", "count": [ 1, 6 ] } ] } diff --git a/data/mods/CRT_EXPANSION/deadspace/deadspaceitems.json b/data/mods/CRT_EXPANSION/deadspace/deadspaceitems.json new file mode 100644 index 0000000000000..0d6c3b51b0f3c --- /dev/null +++ b/data/mods/CRT_EXPANSION/deadspace/deadspaceitems.json @@ -0,0 +1,47 @@ +[ + { + "id": "ds_monitor", + "type": "TOOL_ARMOR", + "category": "armor", + "name": "CRIT S-I G.E.A.R", + "description": "C.R.I.T standard issue General Engineering Assistance Rig. Plugged into your spinal cord, this device improves your overall physique and provides basic information on your surroundings.", + "weight": "500 g", + "volume": "0 L", + "price": 25000000, + "to_hit": -3, + "material": [ "plastic", "steel" ], + "symbol": "[", + "color": "light_green", + "coverage": 0, + "encumbrance": 0, + "warmth": 0, + "artifact_data": { "charge_type": "ARTC_NULL", "effects_worn": [ "AEP_ALL_UP" ] }, + "material_thickness": 10, + "environmental_protection": 0, + "flags": [ "ONLY_ONE", "TRADER_AVOID", "BELTED", "NO_TAKEOFF" ] + }, + { + "id": "ds_armor", + "type": "ARMOR", + "category": "armor", + "name": "CRIT Engineering Suit", + "description": "An airtight, flexible suit of woven composite fibers complete with segmented plates of armor. A complex system digitizes items in an individual pocket universe for storage while built in joint-torsion ratchets generate the neccessary energy required to power the interface.", + "weight": "13460 g", + "volume": "14 L", + "price": 900000000, + "to_hit": -5, + "bashing": 8, + "material": [ "superalloy", "nomex", "kevlar" ], + "symbol": "[", + "color": "light_gray", + "covers": [ "HEAD", "EYES", "MOUTH", "TORSO", "LEGS", "ARMS", "HANDS", "FEET" ], + "coverage": 100, + "encumbrance": 25, + "warmth": 15, + "storage": 50, + "material_thickness": 3, + "environmental_protection": 18, + "use_action": "WEATHER_TOOL", + "flags": [ "ELECTRIC_IMMUNE", "GAS_PROOF", "VARSIZE", "OVERSIZE", "STURDY", "ONLY_ONE", "WATERPROOF", "CLIMATE_CONTROL" ] + } +] diff --git a/data/mods/CRT_EXPANSION/items/crt_armor.json b/data/mods/CRT_EXPANSION/items/crt_armor.json index 87460932e554e..feec0920c22a6 100644 --- a/data/mods/CRT_EXPANSION/items/crt_armor.json +++ b/data/mods/CRT_EXPANSION/items/crt_armor.json @@ -4,7 +4,7 @@ "type": "ARMOR", "category": "armor", "name": "CRIT face mask", - "description": "This is the C.R.I.T standard issue face mask, lined with Kevlar for extra protection. A few filters provide decent environmental safety, but it was not intended for extended use. It has a basic integrated HUD.", + "description": "A standard issue face mask, lined with Kevlar for extra protection. A few filters provide decent environmental safety, but it was not intended for extended use. It has a basic integrated HUD.", "weight": "5 kg", "volume": "1 L", "price": 2500000, @@ -26,7 +26,7 @@ "copy-from": "crt_la_boots", "type": "ARMOR", "name": { "str": "pair of CRIT boots", "str_pl": "pairs of CRIT boots" }, - "description": "C.R.I.T standard-issue boots. Next-gen gels keep feet comfortable and hygienic during long-term missions while absorbing shock and heat from outside-sources. Superalloy mesh and rubber offer quite a bit of chemical protection as well. Decently heavy though", + "description": "A pair of standard-issue boots. Next-gen gels keep feet comfortable and hygienic during long-term missions while absorbing shock and heat from outside-sources. Superalloy mesh and rubber offer quite a bit of chemical protection as well. Decently heavy though", "color": "dark_gray", "weight": "1500 g", "price": 250000, @@ -40,7 +40,7 @@ "type": "ARMOR", "category": "armor", "name": { "str": "pair of CRIT LA boots", "str_pl": "pairs of CRIT LA boots" }, - "description": "C.R.I.T skeletonized boots. Based off of C.R.I.T boots, the light-armor variant was created for missions in warmer climates. The LA boots keep most of the old features of the standard issue boots but trade in protection for easier movement.", + "description": "A pair of skeletonized boots. Based off of C.R.I.T boots, the light-armor variant was created for missions in warmer climates. The LA boots keep most of the old features of the standard issue boots but trade in protection for easier movement.", "weight": "1060 g", "volume": "1500 ml", "price": 100000, @@ -62,7 +62,7 @@ "copy-from": "gloves_tactical", "type": "ARMOR", "name": { "str": "pair of CRIT fingertip-less gloves", "str_pl": "pairs of CRIT fingertip-less gloves" }, - "description": "C.R.I.T 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.", + "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, @@ -75,7 +75,7 @@ "copy-from": "crt_gloves", "type": "ARMOR", "name": { "str": "pair of CRIT fingertip-less liners", "str_pl": "pairs of CRIT fingertip-less liners" }, - "description": "C.R.I.T 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.", + "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, @@ -88,11 +88,11 @@ "copy-from": "molle_pack", "type": "ARMOR", "name": "CRIT backpack", - "description": "C.R.I.T 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.", + "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": 7, - "material_thickness": 2, + "material_thickness": 3, "material": [ "leather", "kevlar" ], "flags": [ "BELTED", "OVERSIZE", "NO_QUICKDRAW", "STURDY", "WATERPROOF" ] }, @@ -101,7 +101,7 @@ "copy-from": "chestrig", "type": "ARMOR", "name": "CRIT chestrig", - "description": "C.R.I.T standard-issue chestrig, has mesh and MOLLE loops for gear and slots with light-armor padding.", + "description": "A slightly modified chestrig, has mesh and MOLLE loops for gear and slots with light-armor padding.", "color": "dark_gray", "material": [ "kevlar", "plastic" ], "flags": [ "STURDY", "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS" ] @@ -111,7 +111,7 @@ "copy-from": "legguard_hard", "type": "ARMOR", "name": { "str": "pair of CRIT leg guards", "str_pl": "pairs of CRIT leg guards" }, - "description": "C.R.I.T standard-issue leg armor. Simple design and durable material allows for easy movement and the padding keeps the legs safe and warm in colder conditions.", + "description": "Leg armor for those who fight. Simple design and durable material allows for easy movement and the padding keeps the legs safe and warm in colder conditions.", "color": "dark_gray", "material": [ "superalloy", "rubber", "neoprene" ], "weight": "1300 g", @@ -125,7 +125,7 @@ "id": "crt_armguard", "type": "ARMOR", "category": "armor", - "name": { "str": "pair of CRIT arm guards", "str_pl": "pairs of C.R.I.T arm guards" }, + "name": { "str": "pair of CRIT arm guards", "str_pl": "pairs of CRIT arm guards" }, "description": "A pair of arm guards made from superalloy molded upon neoprene, and then insulated with rubber. They are sturdy and will block attacks, but they are ridiculously heavy.", "weight": "1820 g", "volume": "3 L", @@ -147,7 +147,7 @@ "copy-from": "survivor_belt_notools", "type": "ARMOR", "name": "CRIT web belt", - "description": "C.R.I.T standard-issue belt. Keeps your trousers up and your weapons on your hip.", + "description": "CRIT standard-issue belt. Keeps your trousers up and your weapons on your hip.", "color": "dark_gray", "material": [ "leather", "brass" ], "flags": [ "WATER_FRIENDLY" ] @@ -179,54 +179,6 @@ "environmental_protection": 9, "flags": [ "POCKETS", "OUTER", "COLLAR", "STURDY", "WATERPROOF", "RAINPROOF" ] }, - { - "id": "ds_monitor", - "type": "TOOL_ARMOR", - "category": "armor", - "name": "CRIT S-I G.E.A.R", - "description": "C.R.I.T standard issue General Engineering Assistance Rig. Plugged into your spinal cord, this device improves your overall physique and provides basic information on your surroundings.", - "weight": "500 g", - "volume": 0, - "price": 25000000, - "to_hit": -3, - "material": [ "plastic", "steel" ], - "symbol": "[", - "color": "light_green", - "coverage": 0, - "encumbrance": 0, - "warmth": 0, - "artifact_data": { "charge_type": "ARTC_NULL", "effects_worn": [ "AEP_ALL_UP" ] }, - "material_thickness": 10, - "environmental_protection": 0, - "flags": [ "ONLY_ONE", "TRADER_AVOID", "BELTED", "NO_TAKEOFF" ] - }, - { - "id": "ds_armor", - "type": "ARMOR", - "category": "armor", - "name": "CRIT Engineering Suit", - "description": "An airtight, flexible suit of woven composite fibers complete with segmented plates of armor. A complex system digitizes items in an individual pocket universe for storage while built in joint-torsion ratchets generate the necessary energy required to power the interface.", - "weight": "13460 g", - "volume": "14250 ml", - "price": 900000000, - "to_hit": -5, - "bashing": 8, - "material": [ "superalloy", "nomex", "kevlar" ], - "symbol": "[", - "color": "light_gray", - "covers": [ "HEAD", "EYES", "MOUTH", "TORSO", "LEGS", "ARMS", "HANDS", "FEET" ], - "coverage": 100, - "encumbrance": 25, - "warmth": 15, - "pocket_data": [ - { "pocket_type": "CONTAINER", "max_contains_volume": "8 L", "max_contains_weight": "30 kg", "moves": 80 }, - { "pocket_type": "CONTAINER", "max_contains_volume": "8 L", "max_contains_weight": "30 kg", "moves": 80 } - ], - "material_thickness": 3, - "environmental_protection": 18, - "use_action": "WEATHER_TOOL", - "flags": [ "ELECTRIC_IMMUNE", "GAS_PROOF", "VARSIZE", "OVERSIZE", "STURDY", "ONLY_ONE", "WATERPROOF", "CLIMATE_CONTROL" ] - }, { "id": "crt_aarmor", "type": "ARMOR", @@ -256,7 +208,7 @@ { "id": "crt_legrig", "type": "ARMOR", - "name": { "str": "CRIT drop leg pouch", "str_pl": "C.R.I.T drop leg pouches" }, + "name": { "str": "CRIT drop leg pouch", "str_pl": "CRIT drop leg pouches" }, "description": "A set of pouches that can be worn on the thighs using buckled straps. This variety is more compact and is favored by the C.R.I.T for its ease of use.", "weight": "255 g", "volume": "500 ml", @@ -305,7 +257,7 @@ "type": "ARMOR", "category": "armor", "name": { "str": "pair of CRIT Enforcer docks", "str_pl": "pairs of CRIT Enforcer docks" }, - "description": "C.R.I.T Enforcer docks. Metal plates vaguely molded into the shape of oversized feet which clamp down onto your own footwear keep your feet out of harms way. It looks terrible and feels clunky unlike most of C.R.I.T's designs, but they do seem to be worth using if you were to be in the middle of a warzone.", + "description": "CRIT Enforcer docks. Metal plates vaguely molded into the shape of oversized feet which clamp down onto your own footwear keep your feet out of harms way. It looks terrible and feels clunky unlike most of C.R.I.T's designs, but they do seem to be worth using if you were to be in the middle of a warzone.", "weight": "2060 g", "volume": "1500 ml", "price": 100000, @@ -355,7 +307,7 @@ "weight": "42563 g", "volume": "12500 ml", "price": 100000000, - "material": [ "hardsteel", "steel", "kevlar" ], + "material": [ "hardsteel", "kevlar" ], "symbol": "[", "color": "light_green", "covers": [ "TORSO", "LEGS", "ARMS" ], diff --git a/data/mods/CRT_EXPANSION/items/crt_clothes.json b/data/mods/CRT_EXPANSION/items/crt_clothes.json index a24b8ccd2ab1f..a16f4614a03db 100644 --- a/data/mods/CRT_EXPANSION/items/crt_clothes.json +++ b/data/mods/CRT_EXPANSION/items/crt_clothes.json @@ -3,8 +3,8 @@ "id": "crt_jacket", "copy-from": "jacket_army", "type": "ARMOR", - "name": "C.R.I.T blouse", - "description": "C.R.I.T standard-issue blouse. Durable, lightweight, and has ample storage. Super-flex neoprene keeps one warm in moderately cold weather while a sleek design keeps it from being too flashy. A zipper at the back and front allows for quick donning and doffing.", + "name": "CRIT blouse", + "description": "A standard-issue military jacket. Durable, lightweight, and has ample storage. Super-flex neoprene keeps one warm in moderately cold weather while a sleek design keeps it from being too flashy. A zipper at the back and front allows for quick donning and doffing.", "flags": [ "COLLAR", "VARSIZE", "WATERPROOF", "STURDY", "FANCY", "ALLOWS_NATURAL_ATTACKS" ], "color": "light_gray", "material": [ "neoprene", "kevlar" ], @@ -14,8 +14,8 @@ "id": "crt_pants", "copy-from": "pants_army", "type": "ARMOR", - "name": { "str_sp": "C.R.I.T trousers" }, - "description": "C.R.I.T standard-issue trousers. Durable, lightweight and has ample storage. Super-flex neoprene keeps one warm in moderately cold weather.", + "name": { "str_sp": "CRIT trousers" }, + "description": "A pair of standard-issue cargo pants. Durable, lightweight and has ample storage. Super-flex neoprene keeps one warm in moderately cold weather.", "color": "light_gray", "material": [ "neoprene", "kevlar" ], "warmth": 35, @@ -25,8 +25,8 @@ { "id": "crt_dress_pants", "type": "ARMOR", - "name": { "str_sp": "C.R.I.T trousers" }, - "description": "C.R.I.T dress pants. A minimalist sleek design makes the pants lightweight and it offers ok pockets. Super-flex neoprene keeps one warm in moderately cold weather.", + "name": { "str_sp": "CRIT pants" }, + "description": "A pair of dress pants. A minimalist sleek design makes the pants lightweight and it offers ok pockets. Super-flex neoprene keeps one warm in moderately cold weather.", "color": "light_gray", "symbol": "[", "material": [ "cotton", "neoprene" ], @@ -41,8 +41,8 @@ "id": "crt_helmet_liner", "copy-from": "helmet_liner", "type": "ARMOR", - "name": "C.R.I.T helmet liner", - "description": "C.R.I.T standard-issue helmet liner. Keeps the noggin warm.", + "name": "CRIT helmet liner", + "description": "A standard-issue helmet liner. Keeps the noggin warm.", "color": "light_gray", "material": [ "neoprene" ], "material_thickness": 1, @@ -51,7 +51,7 @@ { "id": "crt_dress_shoes", "type": "ARMOR", - "name": { "str": "pair of C.R.I.T shoes", "str_pl": "pairs of C.R.I.T dress shoes" }, + "name": { "str": "pair of CRIT shoes", "str_pl": "pairs of CRIT dress shoes" }, "description": "A sleek pair of dress shoes. Fancy but easy on the eyes.", "weight": "1060 g", "volume": "1500 ml", @@ -72,8 +72,8 @@ { "id": "crt_rec_gloves", "type": "ARMOR", - "name": { "str": "pair of C.R.I.T rec gloves", "str_pl": "pairs of C.R.I.T rec gloves" }, - "description": "C.R.I.T standard-issue rec gloves. Skin-hugging and sleek, these gloves are made with cotton with a neoprene lining for grip-pads and warmth. ", + "name": { "str": "pair of CRIT rec gloves", "str_pl": "pairs of CRIT rec gloves" }, + "description": "A pair of standard-issue rec gloves. Skin-hugging and sleek, these gloves are made with cotton with a neoprene lining for grip-pads and warmth. ", "weight": "558 g", "volume": "250 ml", "price": 100000, @@ -93,8 +93,8 @@ "id": "crt_belt", "copy-from": "survivor_belt_notools", "type": "ARMOR", - "name": "C.R.I.T web belt", - "description": "C.R.I.T standard-issue belt. Keeps your trousers up and your tools on your hip.", + "name": "CRIT web belt", + "description": "A standard-issue belt. Keeps your trousers up and your tools on your hip.", "color": "blue", "material": [ "leather", "brass" ], "pocket_data": [ @@ -113,7 +113,7 @@ "id": "crt_rec_duster", "type": "ARMOR", "category": "armor", - "name": "C.R.I.T rec duster", + "name": "CRIT rec duster", "description": "A waterproofed full-length duster coat. Made with neoprene, comfort and functionality meet together to form a fancy but sleek contemporary design. It has several pockets for storage.", "weight": "1520 g", "volume": "5750 ml", @@ -139,8 +139,8 @@ { "id": "crt_rec_hat", "type": "ARMOR", - "name": "C.R.I.T rec hat", - "description": "Functionality meets fashion in this waterproofed C.R.I.T standard issue rec cover. Thick enough to provide warmth in colder weather, this hat shares the same sleek design of most of C.R.I.T's gear.", + "name": "CRIT rec hat", + "description": "Functionality meets fashion in this waterproofed CRIT standard issue rec cover. Thick enough to provide warmth in colder weather, this hat shares the same sleek design of most of C.R.I.T's gear.", "weight": "253 g", "volume": "1250 ml", "price": 4500, diff --git a/data/mods/CRT_EXPANSION/items/crt_gun.json b/data/mods/CRT_EXPANSION/items/crt_gun.json index 4715816d68e5b..bb44b3759eeeb 100644 --- a/data/mods/CRT_EXPANSION/items/crt_gun.json +++ b/data/mods/CRT_EXPANSION/items/crt_gun.json @@ -14,7 +14,7 @@ "color": "red", "skill": "pistol", "range": 20, - "ranged_damage": { "damage_type": "heat", "amount": 6, "armor_penetration": 10 }, + "ranged_damage": { "damage_type": "heat", "amount": 10, "armor_penetration": 10 }, "dispersion": 150, "durability": 9, "loudness": 14, @@ -49,7 +49,7 @@ "color": "cyan", "skill": "launcher", "range": 30, - "ranged_damage": { "damage_type": "heat", "amount": 9, "armor_penetration": 8 }, + "ranged_damage": { "damage_type": "heat", "amount": 18, "armor_penetration": 8 }, "dispersion": 45, "durability": 9, "loudness": 28, @@ -110,7 +110,7 @@ "color": "magenta", "skill": "rifle", "range": 35, - "ranged_damage": { "damage_type": "heat", "amount": 25 }, + "ranged_damage": { "damage_type": "heat", "amount": 20 }, "pierce": 13, "dispersion": 20, "durability": 8, @@ -135,7 +135,7 @@ "id": "crt_cqb_si", "type": "GUN", "name": "CRIT CQB Standard Issue", - "description": "A simple combination gun. This military-grade semi-auto carbine couples the mid-range versatility of the 9mm with the power of the 12 gauge shotgun. To further compliment the CQB aspect, the stock is built to amplify the user's force and the rugged construction with tonfa-like grip can handle bashing in enemy heads. An integrated magazine makes it a pain to reload, but keeps your clip from ejecting accidently.", + "description": "A simple combination gun. This military-grade semi-auto carbine couples the mid-range versatility of the 9mm with the power of the 12 gauge shotgun. To further compliment the CQB aspect, the stock is built to amplify the user's force and the rugged construction with tonfa-like grip can handle bashing in enemy heads.", "weight": "1650 g", "volume": "750 ml", "price": 1000000, @@ -151,11 +151,11 @@ "durability": 10, "loudness": 30, "ammo": [ "9mm" ], - "clip_size": 18, + "clip_size": 30, "reload": 150, "built_in_mods": [ "crt_cqb_si_shotgun" ], "valid_mod_locations": [ [ "accessories", 1 ], [ "grip", 1 ], [ "underbarrel", 1 ] ], - "flags": [ "NEVER_JAMS", "FIRE_TWOHAND", "RELOAD_ONE" ] + "flags": [ "NEVER_JAMS", "FIRE_TWOHAND" ] }, { "id": "crt_fire_glove", @@ -252,7 +252,7 @@ "id": "ds_rivet_gun", "type": "GUN", "name": "Rivet Driver", - "description": "Experimental double purpose tool under development in C.R.I.T R&D. It takes a regular nail and then enlongates it within a fraction of a second before firing it out, upon reaching a target, the fragile stake explodes into shards.", + "description": "Experimental double purpose tool under development in C.R.I.T R&D. It takes a regular nail and then enlongates it within a fraction of a second before firing it out, upon reaching a target, the fragile stake explodes into shards inside the target.", "weight": "1650 g", "volume": "750 ml", "price": 1000000, @@ -262,8 +262,8 @@ "symbol": "(", "color": "light_gray", "skill": "pistol", - "range": 4, - "ranged_damage": { "damage_type": "stab", "amount": 1 }, + "range": 10, + "ranged_damage": { "damage_type": "stab", "amount": 15 }, "pierce": 12, "dispersion": 220, "durability": 10, @@ -272,7 +272,6 @@ "clip_size": 25, "reload": 200, "valid_mod_locations": [ [ "accessories", 1 ], [ "grip", 1 ], [ "sights", 1 ] ], - "ammo_effects": [ "FRAG" ], "flags": [ "NEVER_JAMS" ] }, { diff --git a/data/mods/CRT_EXPANSION/items/crt_item_groups.json b/data/mods/CRT_EXPANSION/items/crt_item_groups.json index bcd3ddd984065..57a0538380858 100644 --- a/data/mods/CRT_EXPANSION/items/crt_item_groups.json +++ b/data/mods/CRT_EXPANSION/items/crt_item_groups.json @@ -24,27 +24,27 @@ "//": "Standard (non-winter) set of clothes worn by soldiers and paramilitary forces.", "items": [ { "group": "clothing_soldier_shirt" }, - { "item": "crt_jacket" }, - { "item": "crt_pants" }, - { "item": "crt_boots", "prob": 5 }, - { "item": "crt_helmet", "prob": 5 }, - { "item": "crt_gloves", "prob": 5 } + { "item": "crt_jacket", "prob": 1 }, + { "item": "crt_pants", "prob": 1 }, + { "item": "crt_boots", "prob": 1 }, + { "item": "crt_helmet", "prob": 1 }, + { "item": "crt_gloves", "prob": 1 } ] }, { "type": "item_group", "id": "military", "items": [ - [ "crt_belt", 20 ], - [ "crt_jacket", 40 ], - [ "crt_pants", 50 ], - [ "crt_boots", 10 ], - [ "crt_helmet", 10 ], - [ "crt_gloves", 10 ], - [ "crt_gasmask", 3 ], - [ "crt_em_vest", 3 ], - [ "flare_gmod", 10 ], - [ "crt_backpack", 8 ], + [ "crt_belt", 1 ], + [ "crt_jacket", 2 ], + [ "crt_pants", 2 ], + [ "crt_boots", 5 ], + [ "crt_helmet", 5 ], + [ "crt_gloves", 2 ], + [ "crt_gasmask", 1 ], + [ "crt_em_vest", 1 ], + [ "flare_gmod", 1 ], + [ "crt_backpack", 1 ], [ "crt_laser_pistol", 1 ] ] } diff --git a/data/mods/CRT_EXPANSION/items/crt_makeshift_survival.json b/data/mods/CRT_EXPANSION/items/crt_makeshift_survival.json new file mode 100644 index 0000000000000..3fe7d53b9af10 --- /dev/null +++ b/data/mods/CRT_EXPANSION/items/crt_makeshift_survival.json @@ -0,0 +1,43 @@ +[ + { + "id": "crt_plant_tunic", + "type": "ARMOR", + "category": "armor", + "name": "plant fiber tunic", + "description": "A loose garment cobbled together from a collection of plant bundles and wound together by makeshift cordage", + "weight": 1520, + "volume": 23, + "price": 0, + "to_hit": -5, + "material": [ "dry_plant" ], + "symbol": "[", + "color": "black_green", + "covers": [ "TORSO", "LEGS" ], + "coverage": 50, + "encumbrance": 15, + "storage": 0, + "warmth": 7, + "material_thickness": 3, + "flags": [ "OVERSIZE" ] + }, + { + "id": "crt_plant_band", + "type": "ARMOR", + "category": "armor", + "name": "plant fiber bracelet", + "description": "A bracelet wound together by makeshift cordage. Has some cool looking pebbles. ", + "weight": 1520, + "volume": 23, + "price": 0, + "to_hit": -5, + "material": [ "dry_plant" ], + "symbol": "[", + "color": "black_green", + "coverage": 0, + "encumbrance": 0, + "storage": 0, + "warmth": 7, + "material_thickness": 1, + "flags": [ "OVERSIZE" ] + } +] diff --git a/data/mods/CRT_EXPANSION/items/crt_recipes.json b/data/mods/CRT_EXPANSION/items/crt_recipes.json index 1c5a6ff7b3f8e..8a7ab546ef774 100644 --- a/data/mods/CRT_EXPANSION/items/crt_recipes.json +++ b/data/mods/CRT_EXPANSION/items/crt_recipes.json @@ -15,5 +15,16 @@ "type": "uncraft", "time": 300, "components": [ [ [ "withered", 3 ] ] ] + }, + { + "result": "crt_plant_tunic", + "type": "recipe", + "category": "CC_ARMOR", + "subcategory": "CSC_OTHER_OTHER", + "skill_used": "survival", + "difficulty": 1, + "time": 1000, + "autolearn": true, + "components": [ [ [ "withered_bundle", 20 ] ] ] } ] diff --git a/data/mods/CRT_EXPANSION/items/crt_toolarmor.json b/data/mods/CRT_EXPANSION/items/crt_toolarmor.json index 3bbd154a02304..a5dd1eb2cc49a 100644 --- a/data/mods/CRT_EXPANSION/items/crt_toolarmor.json +++ b/data/mods/CRT_EXPANSION/items/crt_toolarmor.json @@ -4,7 +4,7 @@ "type": "TOOL_ARMOR", "category": "armor", "name": { "str": "CRIT gasmask (off)", "str_pl": "CRIT gasmasks (off)" }, - "description": "This is the C.R.I.T Spec Ops modified gasmask, fitted with top-of-the-line electronics and lined with Kevlar for extra protection in order to keep one's head where it should be. Various filters and other high tech wizardry allow for enhanced oxygen intake and safety even under bombardment. It has an integrated HUD and the option to turn it on for more features.", + "description": "This is a heavily modified Spec Ops modified gasmask, fitted with top-of-the-line electronics and lined with Kevlar for extra protection in order to keep one's head where it should be. Various filters and other high tech wizardry allow for enhanced oxygen intake and safety even under bombardment. It has an integrated HUD and the option to turn it on for more features.", "weight": "5 kg", "volume": "1 L", "price": 2500000, @@ -13,7 +13,7 @@ "initial_charges": 200, "use_action": { "type": "transform", - "msg": "C.R.T HUD booting up…", + "msg": "CRIT HUD booting up…", "target": "crt_gasmask_on", "active": true, "need_charges": 1, @@ -26,7 +26,7 @@ "coverage": 100, "encumbrance": 50, "warmth": 20, - "material_thickness": 3, + "material_thickness": 5, "environmental_protection": 16, "qualities": [ [ "GLARE", 1 ] ], "flags": [ @@ -46,7 +46,7 @@ "type": "TOOL_ARMOR", "category": "armor", "name": { "str": "CRIT gasmask (on)", "str_pl": "CRIT gasmasks (on)" }, - "description": "This is the C.R.I.T Spec Ops modified gasmask. It is currently on and draining power for the HUD, low-level nightvision and other protective elements.", + "description": "This a heavily modified gasmask. It is currently on and draining power for the HUD, low-level nightvision and other protective elements.", "weight": "5 kg", "volume": "1 L", "price": 2500000, @@ -55,7 +55,7 @@ "initial_charges": 0, "turns_per_charge": 1, "revert_to": "crt_gasmask", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "C.R.T HUD deactivating.", "target": "crt_gasmask" }, + "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "CRIT HUD deactivating.", "target": "crt_gasmask" }, "material": [ "plastic", "kevlar" ], "symbol": "[", "color": "light_green", @@ -64,7 +64,7 @@ "encumbrance": 5, "warmth": 75, "artifact_data": { "charge_type": "ARTC_SOLAR", "effects_worn": [ "AEP_ALL_UP", "AEP_INT_DOWN" ] }, - "material_thickness": 2, + "material_thickness": 5, "environmental_protection": 20, "qualities": [ [ "GLARE", 2 ] ], "flags": [ @@ -89,7 +89,7 @@ "type": "TOOL_ARMOR", "category": "armor", "name": { "str": "CRIT EM vest (off)", "str_pl": "CRIT EM vests (off)" }, - "description": "The C.R.I.T Spec Ops Enhanced Movement vest is embedded with high-tech filaments and reactive servos which protects its wearer and assists in movement at the cost high power usage. It is commonly worn by C.R.I.T Spec Ops for its ease of use and manuverability. Turn it on for suit mode, extra protection and movement.", + "description": "The Spec Ops Enhanced Movement vest is embedded with high-tech filaments and reactive servos which protects its wearer and assists in movement at the cost high power usage. It is commonly worn by C.R.I.T Spec Ops for its ease of use and manuverability. Turn it on for suit mode, extra protection and movement.", "weight": "10 kg", "volume": "6250 ml", "price": 7000000, @@ -104,7 +104,7 @@ "charges_per_use": 1, "use_action": { "type": "transform", - "msg": "C.R.I.T EM booting up…", + "msg": "CRIT EM booting up…", "target": "crt_em_vest_on", "active": true, "need_charges": 1, @@ -127,7 +127,7 @@ "type": "TOOL_ARMOR", "category": "armor", "name": { "str": "CRIT EM vest (on)", "str_pl": "CRIT EM vests (on)" }, - "description": "The C.R.I.T Spec Ops Enhanced Movement vest is embedded with high-tech filaments, reactive servos and a generator which pumps a crystallized liquid that protects its wearer from most heavy combat situations at the cost of extreme power usage. It is commonly worn by C.R.I.T Spec Ops. This vest is currently in suit form and draining your UPS power at high rates.", + "description": "The Spec Ops Enhanced Movement vest is embedded with high-tech filaments, reactive servos and a generator which pumps a crystallized liquid that protects its wearer from most heavy combat situations at the cost of extreme power usage. It is commonly worn by C.R.I.T Spec Ops. This vest is currently in suit form and draining your UPS power at high rates.", "weight": "10 kg", "volume": "6250 ml", "price": 7000000, @@ -143,20 +143,15 @@ { "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 } ], - "warmth": 75, - "material_thickness": 6, + "warmth": 100, + "material_thickness": 7, "environmental_protection": 16, "max_charges": 300, "initial_charges": 0, "turns_per_charge": 1, "revert_to": "crt_em_vest", - "use_action": { "type": "transform", "menu_text": "Turn off armor", "msg": "C.R.I.T E.M powering off…", "target": "crt_em_vest" }, - "artifact_data": { - "charge_type": "ARTC_SOLAR", - "effects_carried": [ "AEP_ALL_UP" ], - "effects_wielded": [ "AEP_ALL_UP" ], - "effects_worn": [ "AEP_ALL_UP", "AEP_INT_DOWN", "AEP_SPEED_UP" ] - }, + "use_action": { "type": "transform", "menu_text": "Turn off armor", "msg": "CRIT EM powering off…", "target": "crt_em_vest" }, + "artifact_data": { "charge_type": "ARTC_SOLAR", "effects_worn": [ "AEP_ALL_UP", "AEP_INT_DOWN", "AEP_PER_DOWN", "AEP_SPEED_UP" ] }, "flags": [ "WATERPROOF", "STURDY", @@ -175,10 +170,10 @@ "copy-from": "helmet_army", "type": "TOOL_ARMOR", "name": { "str": "CRIT helmet (off)", "str_pl": "CRIT helmets (off)" }, - "description": "C.R.T standard-issue helmet. Protects the noggin and has a stretch of insulated steel mesh for neck warmth and protection.", + "description": "A standard-issue helmet. Protects the noggin and has a stretch of insulated steel mesh for neck warmth and protection.", "color": "light_gray", "material": [ "kevlar", "hardsteel" ], - "material_thickness": 2, + "material_thickness": 3, "warmth": 20, "max_charges": 100, "initial_charges": 100, @@ -198,7 +193,7 @@ "copy-from": "helmet_army", "type": "TOOL_ARMOR", "name": { "str": "CRIT helmet (on)", "str_pl": "CRIT helmets (on)" }, - "description": "C.R.I.T standard-issue helmet. Protects the noggin and has a stretch of insulated steel mesh for neck warmth and protection. A tactically dim flashlight is attached to the side. This light is currently on and drawing power.", + "description": "A standard-issue helmet. Protects the noggin and has a stretch of insulated steel mesh for neck warmth and protection. A tactically dim flashlight is attached to the side. This light is currently on and drawing power.", "color": "light_gray", "material": [ "kevlar", "hardsteel" ], "flags": [ @@ -214,13 +209,13 @@ "NO_UNLOAD", "TRADER_AVOID" ], - "material_thickness": 2, + "material_thickness": 3, "warmth": 20, "revert_to": "crt_helmet", "max_charges": 100, "initial_charges": 0, "charges_per_use": 1, - "turns_per_charge": 20, + "turns_per_charge": 120, "ammo": "battery", "use_action": { "type": "transform", "msg": "You turn the %s off.", "target": "crt_helmet" } }, @@ -229,7 +224,7 @@ "copy-from": "canteen", "type": "ARMOR", "name": "CRIT canteen", - "description": "A simple, durable steel canteen that can heat up food with built in plutonium heating elements.", + "description": "A durable steel canteen that can heat up food with built in atomic heating elements.", "color": "dark_gray", "material": "hardsteel", "material_thickness": 1, diff --git a/data/mods/CRT_EXPANSION/items/crt_tools.json b/data/mods/CRT_EXPANSION/items/crt_tools.json index 469aafc9c2ebd..7e559159adedf 100644 --- a/data/mods/CRT_EXPANSION/items/crt_tools.json +++ b/data/mods/CRT_EXPANSION/items/crt_tools.json @@ -23,21 +23,20 @@ }, { "id": "knife_crt", - "copy-from": "diveknife", "type": "TOOL", "category": "weapons", "name": { "str": "CRIT service knife", "str_pl": "CRIT service knives" }, - "description": "C.R.I.T standard-issue knife. Has a knuckleduster guard and a small, hooked pry bar at the bottom for opening simple things and bashing in heads. Matte black finish helps it avoid flash in dim-light situations and tanto tip allows for light-armor penetration. Blade length allows for decent reach.", + "description": "A modified trench knife. Has a knuckleduster guard and a small, hooked pry bar at the bottom. The matte black finish helps it avoid flash in dim-light situations and tanto tip allows for light-armor penetration. Blade length allows for decent reach.", "color": "dark_gray", "material": [ "hardsteel" ], "weight": "350 g", "volume": "750 ml", "price": 20000, - "cutting": 8, - "bashing": 3, + "cutting": 14, + "bashing": 8, "to_hit": 2, "symbol": ";", - "qualities": [ [ "CUT_FINE", 1 ] ], + "qualities": [ [ "PRY", 1 ], [ "CUT", 1 ], [ "CUT_FINE", 1 ] ], "use_action": "CROWBAR", "flags": [ "SHEATH_KNIFE", "UNARMED_WEAPON", "STAB", "UNBREAKABLE_MELEE" ], "techniques": [ "WBLOCK_2", "UHAND", "PROD" ] @@ -57,22 +56,22 @@ "to_hit": 1, "symbol": "8", "flags": [ "UNARMED_WEAPON", "UNBREAKABLE_MELEE" ], - "techniques": [ "WBLOCK_2", "UHAND", "HOOK" ] + "techniques": [ "WBLOCK_2", "HOOK" ] }, { "id": "sword_crt", "type": "TOOL", "category": "weapons", "name": "CRIT Reso-blade", - "description": "C.R.I.T melee weapon. Alien runes adorn the carbon steel blade. The blade oddly lacks sharpness, and yet upon closer oberservation, a hum of energy thrums from within.", + "description": "CRIT melee weapon. Alien runes adorn the carbon steel blade. The blade oddly seems to lack sharpness, and yet upon closer oberservation, a hum of energy thrums from within.", "color": "dark_gray", "material": [ "hardsteel" ], "artifact_data": { "charge_type": "ARTC_NULL", "effects_wielded": [ "AEP_DEX_UP", "AEP_SPEED_UP", "AEP_SPEED_UP" ] }, "weight": "2500 g", "volume": "2500 ml", "price": 20000000, - "cutting": 5, - "bashing": 5, + "cutting": 22, + "bashing": 8, "to_hit": 2, "symbol": ";", "qualities": [ [ "BUTCHER", 7 ] ], @@ -122,19 +121,41 @@ "symbol": ";", "color": "light_gray", "name": "CRIT hatchet", - "description": "An incredibly sharp, heavy duty, one-handed hatchet. Makes a great melee weapon, and is useful both for chopping things and for use as a hammer.", - "price": 2500, + "description": "An incredibly sharp, heavy duty, one-handed hatchet. Makes a great melee weapon, and is useful both for chopping things and for use as a hammer when extended.", + "price": 25000, "price_postapoc": 5000, "material": [ "hardsteel", "plastic", "rubber" ], - "techniques": [ "CHOP", "INERTIAL", "SMASH" ], + "techniques": [ "CHOP", "HOOK", "TEAR" ], "weight": "1807 g", - "volume": "500 ml", + "volume": "550 ml", "bashing": 8, "cutting": 10, "flags": [ "DURABLE_MELEE", "BELT_CLIP", "NONCONDUCTIVE" ], "to_hit": 1, "category": "weapons", - "qualities": [ [ "AXE", 10 ], [ "CUT", 1 ], [ "HAMMER", 2 ], [ "HAMMER_FINE", 1 ], [ "BUTCHER", 15 ] ] + "use_action": { "type": "transform", "msg": "You extend your hatchet", "target": "crt_hatchet_extended" }, + "qualities": [ [ "CUT", 1 ], [ "BUTCHER", 15 ] ] + }, + { + "type": "GENERIC", + "id": "crt_hatchet_extended", + "symbol": ";", + "color": "light_gray", + "name": "CRIT axe", + "description": "An incredibly sharp, heavy duty, full length axe. Makes a heavy-hitting melee weapon, and is useful both for chopping things and for use as a hammer when extended.", + "price": 25000, + "price_postapoc": 5000, + "material": [ "hardsteel", "plastic", "rubber" ], + "techniques": [ "CHOP", "INERTIAL", "SMASH" ], + "weight": "1807 g", + "volume": "2500 ml", + "bashing": 16, + "cutting": 20, + "flags": [ "DURABLE_MELEE", "NONCONDUCTIVE" ], + "to_hit": 2, + "category": "weapons", + "use_action": { "type": "transform", "msg": "You collapse your axe", "target": "crt_hatchet" }, + "qualities": [ [ "AXE", 2 ], [ "CUT", 1 ], [ "HAMMER", 2 ], [ "HAMMER_FINE", 1 ], [ "BUTCHER", 15 ] ] }, { "id": "crt_etool", @@ -146,7 +167,7 @@ "price": 4000, "to_hit": 1, "bashing": 6, - "cutting": 6, + "cutting": 10, "material": [ "hardsteel", "plastic" ], "techniques": [ "CHOP", "SHOVE", "SMASH" ], "symbol": "/", @@ -163,9 +184,9 @@ "volume": "1250 ml", "price": 4000, "to_hit": 2, - "bashing": 10, + "bashing": 14, "material": [ "hardsteel", "plastic", "rubber" ], - "techniques": [ "WBLOCK_3", "tec_break", "UHAND", "SMASH", "INERTIAL" ], + "techniques": [ "WBLOCK_3", "tec_break", "SMASH" ], "symbol": "/", "color": "dark_gray", "flags": [ "UNBREAKABLE_MELEE", "BELT_CLIP" ] diff --git a/data/mods/CRT_EXPANSION/martial/CRT_Bladework.json b/data/mods/CRT_EXPANSION/martial/CRT_Bladework.json index 62a6c43085714..669e41f2a359a 100644 --- a/data/mods/CRT_EXPANSION/martial/CRT_Bladework.json +++ b/data/mods/CRT_EXPANSION/martial/CRT_Bladework.json @@ -3,8 +3,9 @@ "id": "manual_crt_blade", "copy-from": "book_martial", "type": "GENERIC", - "name": { "str": "C.R.I.T Blade-work manual" }, - "description": "An advanced military manual on C.R.I.T Blade-work.", + "name": "CRIT Blade-work manual", + "name_plural": "CRIT Blade-work manuals", + "description": "An advanced military manual on CRIT Blade-work.", "book_data": { "martial_art": "style_crt_blade" } }, { @@ -15,50 +16,83 @@ { "type": "martial_art", "id": "style_crt_blade", - "name": "C.R.I.T Blade-work", - "description": "An offensive style that is centered around rapid slashes and prodding. Each attack landed increases combat ability", - "initiate": [ "Initiate blade-work.", "%s initiates blade-work." ], + "name": "CRIT Blade-work", + "description": "An offensive style centered around rapid slashes and prodding. Each attack landed increases combat ability but leaves you increasingly vunerable", + "initiate": [ "You prepare to whittle down your enemies.", "%s initiates blade-work." ], "arm_block": 99, "leg_block": 99, "static_buffs": [ { "id": "crt_blade_static", - "name": "C.R.I.T Calculation", - "description": "Increased accuracy along with minor cut and stab damage with piercing capability.", - "unarmed_allowed": true, + "name": "Calculating Eyes", + "description": "You have been taught how to properly utilize small to medium-sized sharp weaponry. Gain great Cutting and Stabbing Armor Penetration on top of minor Accuracy", + "unarmed_allowed": false, "melee_allowed": true, - "skill_requirements": [ { "name": "unarmed", "level": 2 } ], + "skill_requirements": [ { "name": "melee", "level": 0 } ], "flat_bonuses": [ - { "stat": "damage", "type": "stab", "scale": 1.0 }, - { "stat": "damage", "type": "cut", "scale": 1.0 }, - { "stat": "arpen", "type": "stab", "scale": 1.0 }, - { "stat": "arpen", "type": "cut", "scale": 1.0 } + { "stat": "arpen", "type": "stab", "scale": 5.0 }, + { "stat": "arpen", "type": "cut", "scale": 5.0 }, + { "stat": "hit", "scale": 1.0 } ] + }, + { + "id": "crt_blade_static_2", + "name": "Honed Movements", + "description": "Your skill and handling with sharp weaponry has improved. Gain extra Cutting and Stabbing damage.", + "unarmed_allowed": false, + "melee_allowed": true, + "skill_requirements": [ { "name": "melee", "level": 3 }, { "name": "cutting", "level": 3 }, { "name": "stabbing", "level": 3 } ], + "flat_bonuses": [ { "stat": "damage", "type": "stab", "scale": 3.0 }, { "stat": "damage", "type": "cut", "scale": 3.0 } ] } ], "onhit_buffs": [ { "id": "crt_blade_hit_buff", - "name": "C.R.I.T Intensity", - "description": "Additional DMG, and Arpen per stack. Max of 5 stacks", + "name": "Unwavering Edge", + "description": "Gain minor Accuracy, Cutting and Stabbing Arpen per stack. Greatly reduces dodge skill. 2 stacks max", "unarmed_allowed": false, "melee_allowed": true, - "skill_requirements": [ { "name": "unarmed", "level": 3 } ], - "buff_duration": 1, - "max_stacks": 4, + "skill_requirements": [ { "name": "melee", "level": 0 } ], + "buff_duration": 2, + "max_stacks": 2, "flat_bonuses": [ - { "stat": "damage", "type": "stab", "scale": 0.25 }, - { "stat": "damage", "type": "cut", "scale": 0.5 }, - { "stat": "arpen", "type": "cut", "scale": 1.0 } + { "stat": "arpen", "type": "stab", "scale": 1.0 }, + { "stat": "arpen", "type": "cut", "scale": 1.0 }, + { "stat": "dodge", "scale": -2.0 } ] + }, + { + "id": "crt_blade_hit_buff_2", + "name": "Ruthlessness", + "description": "Additional Stabbing and Cutting damage per stack. Reduces dodge attempts. 4 stacks max.", + "unarmed_allowed": false, + "melee_allowed": true, + "skill_requirements": [ { "name": "melee", "level": 4 } ], + "buff_duration": 1, + "bonus_dodges": -1, + "max_stacks": 4, + "flat_bonuses": [ { "stat": "damage", "type": "stab", "scale": 1.0 }, { "stat": "damage", "type": "cut", "scale": 1.0 } ] + }, + { + "id": "crt_blade_hit_buff_3", + "name": "Rending Strikes", + "description": "Additional Armor penetration per stack. Further reduces dodge attempts. 3 stacks max.", + "unarmed_allowed": false, + "melee_allowed": true, + "skill_requirements": [ { "name": "melee", "level": 6 }, { "name": "piercing", "level": 4 }, { "name": "cutting", "level": 4 } ], + "buff_duration": 1, + "bonus_dodges": -1, + "max_stacks": 3, + "flat_bonuses": [ { "stat": "arpen", "type": "stab", "scale": 2.0 }, { "stat": "arpen", "type": "cut", "scale": 2.0 } ] } ], - "techniques": [ "tec_crt_blade_normal", "tec_crt_blade_rapid", "tec_crt_blade_precise", "tec_crt_blade_arpen", "tec_feint" ], + "techniques": [ "tec_crt_blade_rapid", "tec_crt_blade_slash", "tec_crt_blade_precise", "tec_crt_blade_execute" ], "weapons": [ "sword_crt", "blade_crt", "knife_crt", "knife_combat", + "knife_combat_mod", "knife_hunting", "knife_rambo", "knife_rm42", @@ -72,82 +106,110 @@ "knife_bread", "knife_chef", "knife_butcher", + "knife_swissarmy", "makeshift_knife", "primitive_knife", "pockknife", "copper_knife", "diveknife", "kris", + "kris_fake", "switchblade", - "xacto" + "xacto", + "g_shovel", + "machete", + "kukri", + "survivor_machete", + "tanto", + "tanto_fake", + "tanto_inferior", + "kirpan", + "kirpan_cheap", + "sword_wood", + "sword_cane", + "sickle", + "honey_scraper", + "carver_off", + "carver_on", + "wasp_sting", + "fighter_sting", + "bee_sting", + "cutlass", + "cavalry_sabre", + "cavalry_sabre_fake", + "cutlass_inferior", + "glass_shiv", + "punch_dagger", + "scalpel", + "sharp_toothbrush" ] }, { "type": "technique", - "id": "tec_crt_blade_normal", - "name": "Shimmer Flurry", - "skill_requirements": [ { "name": "unarmed", "level": 1 }, { "name": "melee", "level": 1 } ], - "unarmed_allowed": true, + "id": "tec_crt_blade_rapid", + "name": "Tipped Intent", + "skill_requirements": [ { "name": "melee", "level": 2 } ], + "unarmed_allowed": false, "melee_allowed": true, "mult_bonuses": [ - { "stat": "damage", "type": "bash", "scale": 0.8 }, - { "stat": "damage", "type": "cut", "scale": 0.7 }, - { "stat": "damage", "type": "stab", "scale": 0.6 } + { "stat": "movecost", "scale": 0.7 }, + { "stat": "damage", "type": "bash", "scale": 0.88 }, + { "stat": "damage", "type": "cut", "scale": 0.88 }, + { "stat": "damage", "type": "stab", "scale": 0.88 } ], - "messages": [ "You release a blindingly fast slash at %s", " slashes at %s" ] + "messages": [ "You quickly jab your weapon at %s", " quickly jabs their weapon at %s" ] }, { "type": "technique", - "id": "tec_crt_blade_rapid", - "name": "Tipped Intent", - "skill_requirements": [ { "name": "unarmed", "level": 2 }, { "name": "melee", "level": 2 } ], - "unarmed_allowed": true, + "id": "tec_crt_blade_slash", + "name": "Shimmer Flurry", + "skill_requirements": [ { "name": "melee", "level": 3 } ], + "unarmed_allowed": false, "melee_allowed": true, - "mult_bonuses": [ - { "stat": "movecost", "scale": 0.77 }, - { "stat": "damage", "type": "bash", "scale": 0.55 }, - { "stat": "damage", "type": "cut", "scale": 0.66 }, - { "stat": "damage", "type": "stab", "scale": 0.88 } - ], - "messages": [ "You swiftly jab your weapon at %s", " swiftly jabs their weapon at %s" ] + "crit_ok": true, + "down_dur": 2, + "messages": [ + "You release a blindingly fast low slash at %s and topple them off balance", + " slashes at %s and shoves them down" + ] }, { "type": "technique", "id": "tec_crt_blade_precise", - "name": "Decisive Blow", - "skill_requirements": [ { "name": "unarmed", "level": 3 }, { "name": "melee", "level": 3 } ], - "unarmed_allowed": true, + "name": "Mirage Slash", + "skill_requirements": [ { "name": "melee", "level": 6 } ], + "weighting": 1, + "unarmed_allowed": false, "melee_allowed": true, - "mult_bonuses": [ - { "stat": "movecost", "scale": 0.8 }, - { "stat": "damage", "type": "bash", "scale": 0.66 }, - { "stat": "damage", "type": "cut", "scale": 1.05 }, - { "stat": "damage", "type": "stab", "scale": 1.0 } - ], + "downed_target": true, + "mult_bonuses": [ { "stat": "damage", "type": "cut", "scale": 1.2 }, { "stat": "damage", "type": "stab", "scale": 1.2 } ], "crit_tec": true, - "messages": [ "You release a debilitating swipe at %s", " releases a debilitating swipe at %s" ], - "down_dur": 2 + "messages": [ + "You hold your blade taut, and then launch a piercing slash on %s's top half", + " lands a piercing blow on %s's face" + ], + "stun_dur": 2 }, { "type": "technique", - "id": "tec_crt_blade_arpen", - "name": "End Slash", - "skill_requirements": [ { "name": "unarmed", "level": 5 }, { "name": "melee", "level": 5 } ], - "weighting": 2, - "unarmed_allowed": true, + "id": "tec_crt_blade_execute", + "name": "The Point", + "skill_requirements": [ { "name": "melee", "level": 6 } ], + "weighting": 3, + "unarmed_allowed": false, "melee_allowed": true, + "downed_target": true, + "stunned_target": true, "mult_bonuses": [ - { "stat": "damage", "type": "bash", "scale": 0.5 }, - { "stat": "damage", "type": "cut", "scale": 1.1 }, - { "stat": "damage", "type": "stab", "scale": 1.1 }, - { "stat": "arpen", "type": "stab", "scale": 0.25 }, - { "stat": "arpen", "type": "cut", "scale": 0.5 } + { "stat": "movecost", "scale": 1.3 }, + { "stat": "damage", "type": "cut", "scale": 2 }, + { "stat": "damage", "type": "stab", "scale": 2 } ], - "crit_tec": true, + "flat_bonuses": [ { "stat": "arpen", "type": "cut", "scale": 10 }, { "stat": "arpen", "type": "stab", "scale": 10 } ], + "crit_ok": true, "messages": [ - "You envision the tension of a fully drawn bow and then launch a piercing blow on %s's top half", - " lands a piercing blow on %s's face" - ], - "stun_dur": 2 + "You drive your weapon down into %s's vulnerable center mass", + " lands a deadly blow on %s's unguarded center mass" + ] } ] diff --git a/data/mods/CRT_EXPANSION/martial/CRT_EnforcementBuff.json b/data/mods/CRT_EXPANSION/martial/CRT_EnforcementBuff.json index 386e88b9a543d..f4bbc41848c93 100644 --- a/data/mods/CRT_EXPANSION/martial/CRT_EnforcementBuff.json +++ b/data/mods/CRT_EXPANSION/martial/CRT_EnforcementBuff.json @@ -19,16 +19,15 @@ "description": "A defensive style that is centered around stunning swings, knockback and grounding enemies. Each attack landed increases your armor by 0.125 and offers other combat bonuses based on stats.", "initiate": [ "You ready yourself to stand your ground.", "%s draws a line in the sand." ], "arm_block": 2, - "leg_block": 10, + "leg_block": 5, "static_buffs": [ { "id": "crt_enforcement_static", - "name": "C.R.I.T Guard", - "description": "+1 armor. STR provides accuracy and minor bash arpen.", - "unarmed_allowed": true, + "name": "Unyielding Front", + "description": "Stand strong in the face of adversity. +1 armor. STR provides accuracy and minor bash arpen.", + "unarmed_allowed": false, "melee_allowed": true, "flat_bonuses": [ - { "stat": "arpen", "type": "bash", "scaling-stat": "str", "scale": 0.15 }, { "stat": "armor", "type": "bash", "scale": 1.0 }, { "stat": "armor", "type": "cut", "scale": 1.0 }, { "stat": "armor", "type": "stab", "scale": 1.0 }, @@ -39,21 +38,21 @@ "onhit_buffs": [ { "id": "crt_enforcement_hit_buff", - "name": "C.R.I.T Buildup", - "description": "+0.05 armor and other small bonuses per stack. Max of 10 stacks", - "unarmed_allowed": true, + "name": "Bulwark", + "description": "+0.5 armor and other small bonuses per stack. Max of 2 stacks", + "unarmed_allowed": false, "melee_allowed": true, - "skill_requirements": [ { "name": "unarmed", "level": 1 } ], - "buff_duration": 10, - "max_stacks": 10, + "skill_requirements": [ { "name": "melee", "level": 1 } ], + "buff_duration": 1, + "max_stacks": 2, "flat_bonuses": [ - { "stat": "damage", "type": "bash", "scaling-stat": "str", "scale": 0.01 }, - { "stat": "armor", "type": "bash", "scale": 0.05 }, - { "stat": "armor", "type": "cut", "scale": 0.05 }, - { "stat": "armor", "type": "stab", "scale": 0.05 }, - { "stat": "armor", "type": "bash", "scaling-stat": "str", "scale": 0.15 }, - { "stat": "armor", "type": "cut", "scaling-stat": "str", "scale": 0.125 }, - { "stat": "armor", "type": "stab", "scaling-stat": "str", "scale": 0.075 } + { "stat": "damage", "type": "bash", "scaling-stat": "str", "scale": 0.25 }, + { "stat": "armor", "type": "bash", "scale": 1 }, + { "stat": "armor", "type": "cut", "scale": 1 }, + { "stat": "armor", "type": "stab", "scale": 1 }, + { "stat": "armor", "type": "bash", "scaling-stat": "str", "scale": 0.1 }, + { "stat": "armor", "type": "cut", "scaling-stat": "str", "scale": 0.1 }, + { "stat": "armor", "type": "stab", "scaling-stat": "str", "scale": 0.1 } ] } ], @@ -85,19 +84,12 @@ { "type": "technique", "id": "tec_crt_enforcement_normal", - "name": "Harsh Reprimand", - "skill_requirements": [ { "name": "unarmed", "level": 1 }, { "name": "melee", "level": 1 } ], - "unarmed_allowed": true, + "name": "Reprimand", + "skill_requirements": [ { "name": "melee", "level": 1 } ], + "unarmed_allowed": false, "melee_allowed": true, - "mult_bonuses": [ - { "stat": "damage", "type": "bash", "scale": 1.0 }, - { "stat": "damage", "type": "cut", "scale": 1.0 }, - { "stat": "damage", "type": "stab", "scale": 1.0 } - ], - "flat_bonuses": [ - { "stat": "damage", "type": "bash", "scaling-stat": "str", "scale": 0.15 }, - { "stat": "movecost", "scaling-stat": "str", "scale": -0.7 } - ], + "mult_bonuses": [ { "stat": "damage", "type": "bash", "scale": 1.2 } ], + "flat_bonuses": [ { "stat": "movecost", "scaling-stat": "str", "scale": -1.0 } ], "messages": [ "You clock %s's in a weak spot to knock em down", " smashes in %s's face" ], "down_dur": 1 }, @@ -105,18 +97,13 @@ "type": "technique", "id": "tec_crt_enforcement_rapid", "name": "Forced Compliance", - "skill_requirements": [ { "name": "unarmed", "level": 3 }, { "name": "melee", "level": 2 } ], - "unarmed_allowed": true, + "skill_requirements": [ { "name": "melee", "level": 2 } ], + "unarmed_allowed": false, "melee_allowed": true, - "mult_bonuses": [ - { "stat": "movecost", "scale": 1.04 }, - { "stat": "damage", "type": "bash", "scale": 1.0 }, - { "stat": "damage", "type": "cut", "scale": 1.05 }, - { "stat": "damage", "type": "stab", "scale": 1.05 } - ], + "mult_bonuses": [ { "stat": "movecost", "scale": 0.8 } ], "flat_bonuses": [ { "stat": "arpen", "type": "bash", "scaling-stat": "str", "scale": 0.2 }, - { "stat": "movecost", "scaling-stat": "str", "scale": -1.2 } + { "stat": "movecost", "scaling-stat": "str", "scale": -1.3 } ], "messages": [ "You swiftly swipe your weapon's tip at %s", " swiftly jabs their weapon into %s" ] }, @@ -124,19 +111,12 @@ "type": "technique", "id": "tec_crt_enforcement_brutal", "name": "Roomsweeper", - "skill_requirements": [ { "name": "unarmed", "level": 4 }, { "name": "melee", "level": 3 } ], - "unarmed_allowed": true, + "skill_requirements": [ { "name": "melee", "level": 4 } ], + "unarmed_allowed": false, "melee_allowed": true, - "mult_bonuses": [ - { "stat": "movecost", "scale": 1.35 }, - { "stat": "damage", "type": "bash", "scale": 1.15 }, - { "stat": "damage", "type": "cut", "scale": 1.05 }, - { "stat": "damage", "type": "stab", "scale": 1.0 } - ], "flat_bonuses": [ { "stat": "arpen", "type": "bash", "scaling-stat": "str", "scale": 0.5 }, - { "stat": "damage", "type": "cut", "scaling-stat": "str", "scale": 0.25 }, - { "stat": "movecost", "scaling-stat": "str", "scale": -1.5 } + { "stat": "movecost", "scaling-stat": "str", "scale": -0.5 } ], "crit_tec": true, "messages": [ "You steady your arm and release a crushing blow at %s", " releases a crushing blow at %s" ], diff --git a/data/mods/CRT_EXPANSION/martial/CRT_MeleeBuffs.json b/data/mods/CRT_EXPANSION/martial/CRT_MeleeBuffs.json index 72055a8907ba1..282ffc2726096 100644 --- a/data/mods/CRT_EXPANSION/martial/CRT_MeleeBuffs.json +++ b/data/mods/CRT_EXPANSION/martial/CRT_MeleeBuffs.json @@ -3,8 +3,8 @@ "id": "manual_crt_cqb", "copy-from": "book_martial", "type": "GENERIC", - "name": { "str": "C.R.I.T CQB manual" }, - "description": "An advanced military manual on C.R.I.T general CQB.", + "name": { "str": "CRIT CQB manual" }, + "description": "An advanced military manual on CRIT general CQB.", "book_data": { "martial_art": "style_crt_cqb" } }, { @@ -15,9 +15,9 @@ { "type": "mutation", "id": "MARTIAL_CRT", - "name": "C.R.I.T Melee Training", + "name": "CRIT Melee Training", "points": 3, - "description": "You have received defensive training. For every hit you land, gain various miniscule combat bonuses that scale off of your stats.", + "description": "You have received CQB training. For every hit you land, gain themed combat bonuses.", "starting_trait": true, "initial_ma_styles": [ "style_crt_cqb", "style_crt_blade", "style_crt_enforcement" ], "valid": false @@ -25,61 +25,40 @@ { "type": "martial_art", "id": "style_crt_cqb", - "name": "C.R.I.T CQB", - "description": "A style centered around rapid strikes and piercing jabs. Each attack landed adds a plethora of combat bonuses. 25 percent bash damage.", - "initiate": [ "Initiate CQB.", "%s initiates CQB." ], + "name": "CRIT CQB", + "description": "A style centered around rapid strikes and piercing jabs. Each attack landed adds a plethora of combat bonuses.", + "initiate": [ "You shift your weight for the oncoming fight.", "%s prepares for hand-to-hand battle." ], "arm_block": 3, "leg_block": 6, "static_buffs": [ { "id": "crt_cqb_static", - "name": "C.R.I.T Initiative", - "description": "DEX provides dodge ability, accuracy and minor cut / stab damage with slight piercing capability. 50 Percent Bash Damage.", + "name": "Tactful Initiative", + "description": "You have gained an advantage by always remaing mindful of common weaknesses. DEX provides dodge ability, accuracy and armor penetration.", "unarmed_allowed": true, - "melee_allowed": true, + "melee_allowed": false, "flat_bonuses": [ - { "stat": "damage", "type": "stab", "scaling-stat": "dex", "scale": 0.15 }, - { "stat": "damage", "type": "cut", "scaling-stat": "dex", "scale": 0.05 }, - { "stat": "arpen", "type": "stab", "scaling-stat": "dex", "scale": 0.25 }, - { "stat": "arpen", "type": "cut", "scaling-stat": "dex", "scale": 0.15 }, + { "stat": "arpen", "type": "bash", "scaling-stat": "dex", "scale": 0.15 }, { "stat": "dodge", "scaling-stat": "dex", "scale": 0.1 }, { "stat": "hit", "scaling-stat": "dex", "scale": 0.15 } - ], - "mult_bonuses": [ { "stat": "damage", "type": "bash", "scale": 0.5 } ] + ] } ], "onhit_buffs": [ { "id": "crt_cqb_hit_buff", - "name": "C.R.I.T Tenacity", + "name": "Fluid Tenacity", "description": "+Atk Speed and other small bonuses based on DEX per stack. Max of 5 stacks", "unarmed_allowed": true, - "melee_allowed": true, + "meledescription": false, "skill_requirements": [ { "name": "unarmed", "level": 1 } ], "buff_duration": 2, - "max_stacks": 10, - "flat_bonuses": [ - { "stat": "movecost", "scaling-stat": "dex", "scale": -0.05 }, - { "stat": "movecost", "scale": 0.1 }, - { "stat": "damage", "type": "stab", "scale": 0.1 } - ], - "mult_bonuses": [ - { "stat": "damage", "type": "stab", "scale": 1.075 }, - { "stat": "damage", "type": "cut", "scale": 1.02 }, - { "stat": "arpen", "type": "stab", "scale": 1.01 }, - { "stat": "dodge", "scale": 1.02 } - ] + "max_stacks": 5, + "flat_bonuses": [ { "stat": "movecost", "scaling-stat": "dex", "scale": -0.05 }, { "stat": "movecost", "scale": 0.1 } ], + "mult_bonuses": [ { "stat": "dodge", "scaling-stat": "dex", "scale": 1.0 } ] } ], - "techniques": [ - "tec_crt_cqb_normal", - "tec_crt_cqb_rapid", - "tec_crt_cqb_rapid_wp", - "tec_crt_cqb_precise", - "tec_crt_cqb_arpen", - "tec_feint" - ], - "weapons": [ "knife_butter", "honey_scraper", "fork", "glass_shiv", "scissors" ] + "techniques": [ "tec_crt_cqb_normal", "tec_crt_cqb_rapid", "tec_crt_cqb_precise", "tec_crt_cqb_arpen", "tec_crt_cqb_feint" ] }, { "type": "technique", @@ -88,16 +67,10 @@ "skill_requirements": [ { "name": "unarmed", "level": 1 } ], "unarmed_allowed": true, "melee_allowed": false, - "mult_bonuses": [ - { "stat": "movecost", "scale": 0.85 }, - { "stat": "damage", "type": "bash", "scale": 0.8 }, - { "stat": "damage", "type": "cut", "scale": 1.025 }, - { "stat": "damage", "type": "stab", "scale": 1.05 } - ], + "mult_bonuses": [ { "stat": "movecost", "scale": 0.85 } ], "flat_bonuses": [ - { "stat": "damage", "type": "stab", "scaling-stat": "dex", "scale": 0.2 }, - { "stat": "damage", "type": "cut", "scaling-stat": "dex", "scale": 0.1 }, - { "stat": "movecost", "scaling-stat": "dex", "scale": -0.15 } + { "stat": "arpen", "type": "bash", "scaling-stat": "dex", "scale": 0.1 }, + { "stat": "movecost", "scaling-stat": "dex", "scale": -0.1 } ], "messages": [ "You quickly dig your fingers into %s", " digs their fingers into %s" ] }, @@ -107,39 +80,29 @@ "name": "Rapid Burst", "skill_requirements": [ { "name": "unarmed", "level": 3 } ], "unarmed_allowed": true, - "melee_allowed": true, + "melee_allowed": false, "mult_bonuses": [ - { "stat": "movecost", "scale": 0.7 }, + { "stat": "movecost", "scale": 0.5 }, { "stat": "damage", "type": "bash", "scale": 0.66 }, - { "stat": "damage", "type": "cut", "scale": 0.7 }, - { "stat": "damage", "type": "stab", "scale": 0.8 } + { "stat": "damage", "type": "cut", "scale": 0.66 }, + { "stat": "damage", "type": "stab", "scale": 1.5 } ], "flat_bonuses": [ - { "stat": "damage", "type": "stab", "scaling-stat": "dex", "scale": 0.015 }, - { "stat": "damage", "type": "cut", "scaling-stat": "dex", "scale": 0.0125 }, - { "stat": "movecost", "scaling-stat": "dex", "scale": -0.35 } + { "stat": "damage", "type": "stab", "scaling-stat": "dex", "scale": 0.2 }, + { "stat": "arpen", "type": "bash", "scaling-stat": "dex", "scale": 0.2 } ], "messages": [ "You swiftly impale your fingers into %s joints", " swiftly impales their fingers into %s" ] }, { "type": "technique", - "id": "tec_crt_cqb_rapid_wp", - "name": "Joint Pain", - "skill_requirements": [ { "name": "melee", "level": 3 } ], - "unarmed_allowed": false, - "melee_allowed": true, - "mult_bonuses": [ - { "stat": "movecost", "scale": 0.8 }, - { "stat": "damage", "type": "bash", "scale": 0.5 }, - { "stat": "damage", "type": "cut", "scale": 0.66 }, - { "stat": "damage", "type": "stab", "scale": 0.75 } - ], - "flat_bonuses": [ - { "stat": "damage", "type": "stab", "scaling-stat": "dex", "scale": 0.015 }, - { "stat": "damage", "type": "cut", "scaling-stat": "dex", "scale": 0.0125 }, - { "stat": "movecost", "scaling-stat": "dex", "scale": -0.35 } - ], - "messages": [ "You explosively jab your weapon at %s joints", " explosively jabs at %s" ] + "id": "tec_crt_cqb_feint", + "name": "Shifting Feint", + "messages": [ "You fake a quick strike toward %s", " fakes a quick strike toward %s" ], + "skill_requirements": [ { "name": "melee", "level": 4 } ], + "unarmed_allowed": true, + "melee_allowed": false, + "defensive": true, + "miss_recovery": true }, { "type": "technique", @@ -147,17 +110,10 @@ "name": "Rapid Jab", "skill_requirements": [ { "name": "unarmed", "level": 4 } ], "unarmed_allowed": true, - "melee_allowed": true, - "mult_bonuses": [ - { "stat": "movecost", "scale": 0.8 }, - { "stat": "damage", "type": "bash", "scale": 0.66 }, - { "stat": "damage", "type": "cut", "scale": 1.1 }, - { "stat": "damage", "type": "stab", "scale": 1.25 } - ], + "melee_allowed": false, "flat_bonuses": [ - { "stat": "damage", "type": "stab", "scaling-stat": "dex", "scale": 0.2 }, - { "stat": "damage", "type": "cut", "scaling-stat": "dex", "scale": 0.01 }, - { "stat": "movecost", "scaling-stat": "dex", "scale": -0.2 } + { "stat": "damage", "type": "stab", "scaling-stat": "dex", "scale": 0.25 }, + { "stat": "arpen", "type": "stab", "scaling-stat": "dex", "scale": 0.15 } ], "crit_tec": true, "messages": [ "You steady your hand and release a piercing jab at %s", " releases a piercing jab at %s" ], @@ -170,23 +126,16 @@ "skill_requirements": [ { "name": "unarmed", "level": 5 } ], "weighting": 2, "unarmed_allowed": true, - "melee_allowed": true, - "mult_bonuses": [ - { "stat": "movecost", "scale": 0.9 }, - { "stat": "damage", "type": "bash", "scale": 0.2 }, - { "stat": "damage", "type": "cut", "scale": 1.25 }, - { "stat": "arpen", "type": "cut", "scaling-stat": "dex", "scale": 0.15 }, - { "stat": "damage", "type": "stab", "scale": 1.5 }, - { "stat": "arpen", "type": "stab", "scaling-stat": "dex", "scale": 0.3 } - ], + "melee_allowed": false, + "crit_ok": true, + "mult_bonuses": [ { "stat": "movecost", "scale": 0.9 } ], "flat_bonuses": [ { "stat": "damage", "type": "stab", "scaling-stat": "dex", "scale": 0.5 }, - { "stat": "damage", "type": "cut", "scaling-stat": "dex", "scale": 0.25 }, + { "stat": "arpen", "type": "bash", "scaling-stat": "dex", "scale": 0.75 }, { "stat": "movecost", "scaling-stat": "dex", "scale": -0.5 } ], - "crit_tec": true, "messages": [ - "You envision a gathering tempest in and then release it's energy on %s's top half", + "You envision a gathering tempest and then release it's energy on %s's top half", " lands a piercing blow on %s's face" ], "stun_dur": 1, diff --git a/data/mods/CRT_EXPANSION/martial/dragonslayertechn.json b/data/mods/CRT_EXPANSION/martial/dragonslayertechn.json index c7a40fa52e2ea..a092037e76785 100644 --- a/data/mods/CRT_EXPANSION/martial/dragonslayertechn.json +++ b/data/mods/CRT_EXPANSION/martial/dragonslayertechn.json @@ -20,7 +20,7 @@ ], "down_dur": 2, "messages": [ "Your swing makes %s stagger and fall", " hooks %s" ], - "description": "50% moves, 77% Bash, 77% Cut, 77% Stab, Down two turns, STR (SS+) greatly reduces action cost and adds overall damage (S)" + "description": "50% AP cost, 77% DMG, Down (2), STR (SS) greatly reduces AP cost and adds (S) DMG" }, { "type": "technique", @@ -44,7 +44,7 @@ ], "messages": [ "Your momentum causes your weapon to strike %s", " inertially strikes %s" ], "aoe": "wide", - "description": "15% moves, 35% damage, wide arc, STR (SS+) dramatically reduces action cost, and adds a (A) damage bonus, min 4 melee" + "description": "15% AP cost, 35% DMG, wide arc, STR (SS) reduces AP cost, and adds (A) DMG, melee (4)" }, { "type": "technique", @@ -56,9 +56,9 @@ "crit_tec": true, "mult_bonuses": [ { "stat": "movecost", "scale": 0.35 }, - { "stat": "damage", "type": "bash", "scale": 1.05 }, - { "stat": "damage", "type": "cut", "scale": 1.25 }, - { "stat": "damage", "type": "stab", "scale": 1.05 } + { "stat": "damage", "type": "bash", "scale": 1.15 }, + { "stat": "damage", "type": "cut", "scale": 1.15 }, + { "stat": "damage", "type": "stab", "scale": 1.15 } ], "flat_bonuses": [ { "stat": "movecost", "scaling-stat": "str", "scale": -15 }, @@ -68,6 +68,6 @@ { "stat": "damage", "type": "stab", "scaling-stat": "per", "scale": 0.15 } ], "messages": [ "You wind up the sword and release a well placed swing at %s", " chops %s" ], - "description": "Crit only, 35% move cost, 105% Bash and Stab, 125% Cut, DEX (D) and PER (E) reduces action cost and increases overall (B) damage, min 2 melee" + "description": "Crit!, 35% AP cost, 115% DMG, STR (SS) and DEX (SS) reduces AP cost and PER (B) adds DMG, melee (2)" } ] diff --git a/data/mods/CRT_EXPANSION/martial/generaltechn.json b/data/mods/CRT_EXPANSION/martial/generaltechn.json index 00846be7de403..43a42599a717e 100644 --- a/data/mods/CRT_EXPANSION/martial/generaltechn.json +++ b/data/mods/CRT_EXPANSION/martial/generaltechn.json @@ -5,14 +5,14 @@ "name": "HOOK", "mult_bonuses": [ { "stat": "movecost", "scale": 0.85 }, - { "stat": "damage", "type": "bash", "scale": 0.66 }, - { "stat": "damage", "type": "cut", "scale": 0.76 }, - { "stat": "damage", "type": "stab", "scale": 0.86 } + { "stat": "damage", "type": "bash", "scale": 0.88 }, + { "stat": "damage", "type": "cut", "scale": 0.88 }, + { "stat": "damage", "type": "stab", "scale": 0.88 } ], "flat_bonuses": [ { "stat": "movecost", "scaling-stat": "str", "scale": -0.25 } ], "down_dur": 2, "messages": [ "Your hooking attack makes %s stagger and fall", " hooks %s" ], - "description": "85% moves, 66% Bash, 76% Cut, 86% Stab, Down two turns, STR (C) greatly reduces action cost" + "description": "85% AP, 88% DMG, Down (2), STR (C) reduces AP cost" }, { "type": "technique", @@ -36,7 +36,7 @@ ], "messages": [ "Your momentum causes your weapon to glance off of %s", " inertially strikes %s" ], "aoe": "wide", - "description": "75% moves, 60% damage, wide arc, STR (S) dramatically reduces action cost, and adds a (C) damage bonus, min 4 melee" + "description": "75% AP, 60% DMG, WIDE AOE, STR (S) reduces AP cost, and adds a (C) DMG, melee (4)" }, { "type": "technique", @@ -48,9 +48,8 @@ "crit_tec": true, "mult_bonuses": [ { "stat": "movecost", "scale": 1.18 }, - { "stat": "damage", "type": "bash", "scale": 1.05 }, { "stat": "damage", "type": "cut", "scale": 1.25 }, - { "stat": "damage", "type": "stab", "scale": 1.05 } + { "stat": "damage", "type": "stab", "scale": 1.25 } ], "flat_bonuses": [ { "stat": "movecost", "scaling-stat": "dex", "scale": -0.2 }, @@ -60,7 +59,7 @@ { "stat": "damage", "type": "stab", "scaling-stat": "per", "scale": 0.15 } ], "messages": [ "You draw back your arm and release a well placed chop %s", " chops %s" ], - "description": "Crit only, 118% move cost, 105% Bash and Stab, 125% Cut, DEX (D) and PER (E) reduces action cost and increases overall (B) damage, min 2 melee" + "description": "CRIT!, 118% AP, 125% Cut/Stab, DEX (D) and PER (E) reduces AP cost and adds (B) DMG, melee (2)" }, { "type": "technique", @@ -70,21 +69,14 @@ "unarmed_allowed": true, "melee_allowed": true, "crit_tec": true, - "mult_bonuses": [ - { "stat": "movecost", "scale": 1.18 }, - { "stat": "damage", "type": "bash", "scale": 1.2 }, - { "stat": "damage", "type": "cut", "scale": 1.1 }, - { "stat": "damage", "type": "stab", "scale": 1.05 } - ], + "mult_bonuses": [ { "stat": "movecost", "scale": 1.11 }, { "stat": "damage", "type": "bash", "scale": 1.2 } ], "flat_bonuses": [ { "stat": "movecost", "scaling-stat": "dex", "scale": -0.2 }, { "stat": "movecost", "scaling-stat": "str", "scale": -0.125 }, - { "stat": "damage", "type": "bash", "scaling-stat": "str", "scale": 0.25 }, - { "stat": "damage", "type": "cut", "scaling-stat": "str", "scale": 0.15 }, - { "stat": "damage", "type": "stab", "scaling-stat": "str", "scale": 0.15 } + { "stat": "arpen", "type": "bash", "scaling-stat": "str", "scale": 0.25 } ], "messages": [ "You grip your weapon with two hands and slam it into %s", " smashes their weapon onto %s" ], - "description": "Crit only, 110% move cost, 120% Bash, 105% Stab, 110% Cut, DEX (C) and STR (D) reduces action cost and increases overall (C) damage, min 2 melee" + "description": "CRIT!, 110% AP, 120% Bash, DEX (C) and STR (D) reduces AP cost and adds (C) Arpen, melee (2)" }, { "type": "technique", @@ -106,7 +98,7 @@ "You lunge forward with all your weight and swing upwards at %s", " swings upwards with all their weight at %s" ], - "description": "Crit only, 120% moves, 125% damage, Stun for 1.5 turns, STR (A) dramatically reduces action cost, min melee 1" + "description": "Crit!, 120% AP, 125% damage, Stun (1), STR (A) reduces AP cost, melee (1)" }, { "type": "technique", @@ -127,7 +119,7 @@ { "stat": "movecost", "scaling-stat": "dex", "scale": -0.1 } ], "messages": [ "You quickly shove %s out of the way", " quickly shoves %s" ], - "description": "65% moves, dramatically reduced damage, knockback 2 tiles, stun 1 turn, STR (D) and DEX (E) reduce action cost" + "description": "65% AP, REDUCED DMG, knockback (2), stun (1), STR (D) and DEX (E) reduce AP cost" }, { "type": "technique", @@ -136,11 +128,11 @@ "skill_requirements": [ { "name": "melee", "level": 1 } ], "unarmed_allowed": false, "melee_allowed": true, - "knockback_dist": 2, + "knockback_dist": 3, "mult_bonuses": [ { "stat": "movecost", "scale": 0.75 }, { "stat": "damage", "type": "bash", "scale": 1.1 }, - { "stat": "damage", "type": "cut", "scale": 0 }, + { "stat": "damage", "type": "cut", "scale": 1.1 }, { "stat": "damage", "type": "stab", "scale": 1.1 } ], "flat_bonuses": [ @@ -148,7 +140,7 @@ { "stat": "movecost", "scaling-stat": "dex", "scale": -0.15 } ], "messages": [ "You quickly shove %s out of the way with your weapon", " quickly shoves %s" ], - "description": "75% moves, no cut damage, 110% Bash and Stab damage, knockback 2 tiles, STR (B) and DEX (C) reduce action cost, min melee 1" + "description": "75% AP, 110% DMG, knockback (3), STR (B) and DEX (C) reduce AP cost, melee (1)" }, { "type": "technique", @@ -161,6 +153,6 @@ "weighting": 2, "mult_bonuses": [ { "stat": "damage", "type": "cut", "scale": 1.1 }, { "stat": "damage", "type": "stab", "scale": 1.15 } ], "messages": [ "You stab into %s and rake your blade out", " tears into %s flesh" ], - "description": "Crit only, 110% Cut, 115% Stab, min melee 2" + "description": "CRIT!, 115% Cut/Stab, melee (2)" } ] diff --git a/data/mods/CRT_EXPANSION/martial/stabtechn.json b/data/mods/CRT_EXPANSION/martial/stabtechn.json index b1948ea60ee88..93fc5a26823f7 100644 --- a/data/mods/CRT_EXPANSION/martial/stabtechn.json +++ b/data/mods/CRT_EXPANSION/martial/stabtechn.json @@ -14,7 +14,7 @@ { "stat": "damage", "type": "stab", "scaling-stat": "per", "scale": 0.2 } ], "messages": [ "You step forward and stab at %s", " stabs into %s flesh" ], - "description": "110% Stab damage, STR (E) and PER (D) provides bonus damage, min 1 melee" + "description": "110% Stab DMG, STR (E) and PER (D) adds DMG, melee (1)" }, { "type": "technique", @@ -31,7 +31,7 @@ { "stat": "damage", "type": "stab", "scaling-stat": "per", "scale": 0.2 } ], "messages": [ "You explosively jab at %s", " violently jabs at %s" ], - "description": "Crit only, 115% Stab damage, Crit only, Strength (D) and Perception (D) provides bonus damage, min 2 melee" + "description": "CRIT!, 115% Stab DMG, Strength (D) and Perception (D) adds DMG, melee (2)" }, { "type": "technique", @@ -44,12 +44,11 @@ "weighting": 1, "mult_bonuses": [ { "stat": "movecost", "scale": 0.66 }, { "stat": "damage", "type": "stab", "scale": 0.7 } ], "flat_bonuses": [ - { "stat": "damage", "type": "stab", "scaling-stat": "str", "scale": 0.15 }, - { "stat": "damage", "type": "stab", "scaling-stat": "per", "scale": 0.25 }, - { "stat": "movecost", "scaling-stat": "dex", "scale": 0.25 } + { "stat": "arpen", "type": "stab", "scaling-stat": "per", "scale": 0.45 }, + { "stat": "movecost", "scaling-stat": "dex", "scale": 0.5 } ], "messages": [ "You prod at %s defensively", " prods at %s " ], - "description": "66% movecost, 70% Stab damage, STR (E) and PER (C) provides bonus damage, DEX (C) reduces action cost, min 3 melee" + "description": "66% AP, 70% Stab DMG, PER (C) adds Arpen, DEX (B) reduces AP cost, melee (3)" }, { "type": "technique", @@ -60,13 +59,12 @@ "melee_allowed": true, "crit_tec": false, "weighting": 1, - "mult_bonuses": [ { "stat": "movecost", "scale": 0.8 }, { "stat": "damage", "type": "stab", "scale": 0.75 } ], + "mult_bonuses": [ { "stat": "movecost", "scale": 0.8 } ], "flat_bonuses": [ - { "stat": "damage", "type": "stab", "scaling-stat": "str", "scale": 0.25 }, - { "stat": "damage", "type": "stab", "scaling-stat": "per", "scale": 0.3 }, - { "stat": "arpen", "type": "stab", "scaling-stat": "per", "scale": 0.12 } + { "stat": "damage", "type": "stab", "scaling-stat": "per", "scale": 0.55 }, + { "stat": "arpen", "type": "stab", "scaling-stat": "per", "scale": 0.125 } ], - "messages": [ "You probe %s's openings", " probe %s " ], - "description": "80% movecost, 75% Stab damage, STR (C) and PER (C) provides bonus damage and also provides armor pierce (E), min 3 melee" + "messages": [ "You probe at %s's openings with your weapon", " probes their weapon at %s " ], + "description": "80% AP, PER (C) adds DMG and Arpen (E), melee (3)" } ] diff --git a/data/mods/CRT_EXPANSION/modinfo.json b/data/mods/CRT_EXPANSION/modinfo.json index bea4b8ef1de64..de0f72821ee08 100644 --- a/data/mods/CRT_EXPANSION/modinfo.json +++ b/data/mods/CRT_EXPANSION/modinfo.json @@ -5,7 +5,7 @@ "name": "C.R.I.T Expansion Mod", "authors": [ "Soupster89" ], "maintainers": [ "Soupster89" ], - "description": "Adds a plethora of content: professions, guns/mods, WIP enemies, mutations, martial arts, melee weapons, and some QOL changes such as plants from cutting grass.", + "description": "Adds a plethora of content: professions, guns/mods/weapons, WIP mobs, mutations, MA styles, and some QOL innawoods changes. Use the readme to see more details!", "category": "content", "dependencies": [ "dda" ] } diff --git a/data/mods/CRT_EXPANSION/monsters/crt_monstergroups.json b/data/mods/CRT_EXPANSION/monsters/crt_monstergroups.json index 6c7422978b5fa..8686d5986acf5 100644 --- a/data/mods/CRT_EXPANSION/monsters/crt_monstergroups.json +++ b/data/mods/CRT_EXPANSION/monsters/crt_monstergroups.json @@ -37,11 +37,11 @@ { "monster": "mon_zombie_bio_op", "freq": 50, "cost_multiplier": 5 }, { "monster": "mon_zombie_armored", "freq": 5, "cost_multiplier": 5 }, { "monster": "mon_zombie_electric", "freq": 50, "cost_multiplier": 3 }, - { "monster": "mon_zombie_necro", "freq": 15, "cost_multiplier": 15 }, + { "monster": "mon_zombie_necro", "freq": 40, "cost_multiplier": 2 }, { "monster": "mon_zombie_brute_shocker", "freq": 10, "cost_multiplier": 5 }, - { "monster": "mon_slasher_weak", "freq": 75, "cost_multiplier": 3, "pack_size": [ 2, 4 ] }, + { "monster": "mon_slasher_weak", "freq": 100, "cost_multiplier": 1, "pack_size": [ 2, 4 ] }, { "monster": "mon_waster", "freq": 50, "cost_multiplier": 3 }, - { "monster": "mon_slasher", "freq": 100, "cost_multiplier": 0, "pack_size": [ 1, 2 ] } + { "monster": "mon_slasher", "freq": 50, "cost_multiplier": 0, "pack_size": [ 1, 5 ] } ] }, { diff --git a/data/mods/CRT_EXPANSION/monsters/monster.json b/data/mods/CRT_EXPANSION/monsters/monster.json index 84da8e0aae1cc..8169eee163789 100644 --- a/data/mods/CRT_EXPANSION/monsters/monster.json +++ b/data/mods/CRT_EXPANSION/monsters/monster.json @@ -39,7 +39,7 @@ "species": [ "ZOMBIE", "HUMAN" ], "volume": "62500 ml", "weight": "81500 g", - "hp": 10, + "hp": 300, "speed": 15, "material": [ "flesh" ], "symbol": "D", @@ -50,6 +50,9 @@ "melee_dice": 3, "melee_dice_sides": 5, "melee_cut": 5, + "dodge": 3, + "armor_bash": 20, + "armor_cut": 40, "harvest": "zombie", "special_attacks": [ [ "TENTACLE", 7 ], [ "scratch", 8 ] ], "death_function": [ "NORMAL" ], diff --git a/data/mods/CRT_EXPANSION/mutations/crt_vamp_mutations.json b/data/mods/CRT_EXPANSION/mutations/crt_vamp_mutations.json index 752072aeeb082..eda2de3a7cd62 100644 --- a/data/mods/CRT_EXPANSION/mutations/crt_vamp_mutations.json +++ b/data/mods/CRT_EXPANSION/mutations/crt_vamp_mutations.json @@ -22,200 +22,95 @@ "types": [ "RUNNING" ], "movecost_flatground_modifier": 0.85 }, - { - "type": "mutation", - "id": "GOODHEARING", - "name": "Good Hearing", - "points": 1, - "description": "Your hearing is better than average, and you can hear distant sounds more easily.", - "starting_trait": true, - "category": [ "ALPHA", "MOUSE", "ELFA" ], - "cancels": [ "BADHEARING" ], - "hearing_modifier": 1.25 - }, { "type": "mutation", "id": "GOODCARDIO", - "name": "Indefatigable", - "points": 2, - "description": "Whether due to exercise and good diet, or due to a natural propensity to physical endurance, you tire due to physical exertion much less readily than others. Your maximum stamina is 25% higher than usual.", - "starting_trait": true, - "valid": false, - "cancels": [ "BADCARDIO" ], - "changes_to": [ "GOODCARDIO2" ], - "category": [ "FISH", "LUPINE", "MOUSE", "INSECT", "VAMP" ], - "max_stamina_modifier": 1.25 + "copy-from": "GOODCARDIO", + "extend": { "category": [ "VAMP" ] } }, { "type": "mutation", "id": "FASTHEALER", - "name": "Fast Healer", - "points": 2, - "description": "You heal faster when sleeping and will even recover a small amount of HP when not sleeping.", - "starting_trait": true, - "types": [ "HEALING" ], - "changes_to": [ "FASTHEALER2", "REGEN_LIZ" ], - "category": [ "MEDICAL", "VAMP" ], - "healing_awake": 0.2, - "healing_resting": 0.5 - }, - { - "type": "mutation", - "id": "PAINRESIST", - "name": "Pain Resistant", - "points": 2, - "description": "You have a high tolerance for pain.", - "starting_trait": true, - "valid": false, - "cancels": [ "MORE_PAIN", "MORE_PAIN2", "MORE_PAIN3" ], - "category": [ "MEDICAL", "VAMP" ] + "copy-from": "FASTHEALER", + "extend": { "category": [ "VAMP" ] } }, { "type": "mutation", "id": "NIGHTVISION", - "name": "Night Vision", - "points": 2, - "description": "You possess natural night vision, and can see further in the dark than most. Activate to toggle NV-visible areas on or off.", - "starting_trait": true, - "changes_to": [ "NIGHTVISION2" ], - "cancels": [ "ELFA_NV", "ELFA_FNV", "FEL_NV", "URSINE_EYE" ], - "category": [ "BIRD", "CATTLE", "INSECT", "VAMP" ], - "active": true, - "starts_active": true + "copy-from": "NIGHTVISION", + "extend": { "category": [ "VAMP" ] } }, { "type": "mutation", "id": "DEFT", - "name": "Deft", - "points": 1, - "description": "While you're not any better at melee combat, you are better at recovering from a miss, and will be able to attempt another strike faster.", - "starting_trait": true, - "category": [ "BIRD", "BEAST", "RAPTOR", "MOUSE", "VAMP" ] + "copy-from": "DEFT", + "extend": { "category": [ "VAMP" ] } }, { "type": "mutation", "id": "TERRIFYING", - "name": "Terrifying", - "points": 1, - "description": "There's something about you that creatures find frightening, and they are more likely to try to flee.", - "starting_trait": true, - "category": [ "BEAST", "INSECT", "CHIMERA", "VAMP" ], - "social_modifiers": { "intimidate": 15 } + "copy-from": "TERRIFYING", + "extend": { "category": [ "VAMP" ] } }, { "type": "mutation", "id": "LIGHTSTEP", - "name": "Light Step", - "points": 1, - "description": "You make less noise while walking. You're also less likely to set off traps.", - "starting_trait": true, - "category": [ "BIRD", "ELFA", "FELINE", "VAMP" ], - "cancels": [ "CLUMSY" ], - "noise_modifier": 0.4 + "copy-from": "LIGHTSTEP", + "extend": { "category": [ "VAMP" ] } }, { "type": "mutation", "id": "CANNIBAL", - "name": "Cannibal", - "points": 1, - "description": "For your whole life you've been forbidden from indulging in your peculiar tastes. Now the world's ended, and you'll be damned if anyone is going to tell you that you can't eat people.", - "starting_trait": true, - "valid": false, - "cancels": [ "VEGETARIAN" ], - "category": [ "VAMP" ], - "flags": [ "CANNIBAL" ] + "copy-from": "CANNIBAL", + "extend": { "category": [ "VAMP" ] } }, { "type": "mutation", "id": "WEAKSCENT", - "name": "Weak Scent", - "points": 1, - "description": "Your scent is quite weak. Animals that track your scent will do so with more difficulty.", - "starting_trait": true, - "category": [ "ALPHA", "VAMP" ], - "types": [ "SCENT" ] + "copy-from": "WEAKSCENT", + "extend": { "category": [ "VAMP" ] } }, { "type": "mutation", "id": "PRETTY", - "name": "Pretty", - "points": 1, - "ugliness": -2, - "description": "You are a sight to behold. NPCs who care about such things will react more kindly to you.", - "starting_trait": true, - "category": [ "ALPHA", "FELINE", "LUPINE", "VAMP" ], - "cancels": [ "UGLY", "DEFORMED", "DEFORMED2", "DEFORMED3" ], - "changes_to": [ "BEAUTIFUL" ] + "copy-from": "PRETTY", + "extend": { "category": [ "VAMP" ] } }, { "type": "mutation", "id": "INSOMNIA", - "name": "Insomniac", - "points": -2, - "description": "You have a hard time falling asleep, even under the best circumstances!", - "starting_trait": true, - "valid": false, - "category": [ "MEDICAL", "VAMP" ], - "cancels": [ "EASYSLEEPER" ] + "copy-from": "INSOMNIA", + "extend": { "category": [ "VAMP" ] } }, { "type": "mutation", "id": "THINSKIN", - "name": "Thin-Skinned", - "points": -1, - "description": "Your skin is fragile. Cutting damage is slightly increased for you.", - "starting_trait": true, - "cancels": [ "THICKSKIN" ], - "category": [ "VAMP" ], - "armor": [ { "parts": "ALL", "cut": -1 } ] + "copy-from": "THINSKIN", + "extend": { "category": [ "VAMP" ] } }, { "type": "mutation", "id": "WEAKSTOMACH", - "name": "Weak Stomach", - "points": -1, - "description": "You are more likely to throw up from food poisoning, alcohol, etc.", - "starting_trait": true, - "changes_to": [ "NAUSEA" ], - "category": [ "VAMP" ], - "cancels": [ "STRONGSTOMACH" ] + "copy-from": "WEAKSTOMACH", + "extend": { "category": [ "VAMP" ] } }, { "type": "mutation", "id": "ALBINO", - "name": "Albino", - "points": -1, - "description": "You lack skin pigmentation due to a genetic problem. You sunburn extremely easily, and typically use an umbrella and sunglasses when going out in the sun.", - "starting_trait": true, - "changes_to": [ "SUNBURN" ], - "category": [ "TROGLOBITE", "MOUSE", "VAMP" ] + "copy-from": "ALBINO", + "extend": { "category": [ "VAMP" ] } }, { "type": "mutation", "id": "FLIMSY", - "name": "Flimsy", - "points": -4, - "description": "Your body can't take much abuse. Its maximum HP is 25% lower than usual and you heal slightly slower. Stacks with Glass Jaw.", - "starting_trait": true, - "valid": false, - "social_modifiers": { "intimidate": -2 }, - "cancels": [ "TOUGH", "TOUGH2", "TOUGH3" ], - "category": [ "MOUSE", "ELFA", "VAMP" ], - "changes_to": [ "FLIMSY2" ], - "hp_modifier": -0.25 + "copy-from": "FLIMSY", + "extend": { "category": [ "VAMP" ] } }, { "type": "mutation", "id": "NIGHTVISION2", - "name": "High Night Vision", - "points": 4, - "description": "You can see incredibly well in the dark! Activate to toggle NV-visible areas on or off.", - "prereqs": [ "NIGHTVISION" ], - "changes_to": [ "NIGHTVISION3" ], - "cancels": [ "ELFA_NV", "ELFA_FNV", "FEL_NV", "URSINE_EYE" ], - "category": [ "FISH", "BEAST", "INSECT", "RAT", "CHIMERA", "LUPINE", "MOUSE", "VAMP" ], - "active": true, - "starts_active": true + "copy-from": "NIGHTVISION2", + "extend": { "category": [ "VAMP" ] } }, { "type": "mutation", @@ -240,7 +135,7 @@ "description": "Your teeth have grown into two-inch-long fangs, allowing you to make an extra attack when conditions favor it.", "types": [ "TEETH" ], "changes_to": [ "SABER_TEETH", "SHARKTEETH" ], - "category": [ "LIZARD", "FISH", "LUPINE", "FELINE", "CHIMERA" ], + "category": [ "LIZARD", "FISH", "LUPINE", "FELINE", "CHIMERA", "VAMP" ], "attacks": [ { "attack_text_u": "You sink your fangs into %s", @@ -286,27 +181,18 @@ "types": [ "CLAWS" ], "changes_to": [ "CLAWS", "TALONS" ], "cancels": [ "ARM_TENTACLES", "ARM_TENTACLES_4", "ARM_TENTACLES_8" ], - "category": [ "RAPTOR" ] + "category": [ "RAPTOR", "VAMP" ] }, { "type": "mutation", "id": "POISONOUS", - "name": "Venomous", - "points": 1, - "description": "Your body produces a potent venom. Cutting or stabbing attacks from mutations have a chance to poison your target.", - "prereqs": [ "POISRESIST" ], - "leads_to": [ "EATPOISON" ], - "changes_to": [ "POISONOUS2" ], - "category": [ "SLIME", "TROGLOBITE", "SPIDER", "VAMP" ] + "copy-from": "POISONOUS", + "extend": { "category": [ "VAMP" ] } }, { "type": "mutation", "id": "SUNBURN", - "name": "Solar Sensitivity", - "points": -3, - "description": "Your skin simply cannot handle ultraviolet radiation, such as sunlight. It will seriously burn you.", - "prereqs": [ "ALBINO" ], - "prereqs2": [ "TROGLO2", "TROGLO3" ], - "category": [ "TROGLOBITE", "VAMP" ] + "copy-from": "SUNBURN", + "extend": { "category": [ "VAMP" ] } } ] diff --git a/data/mods/CRT_EXPANSION/mutations/crt_wendigo_mutations.json b/data/mods/CRT_EXPANSION/mutations/crt_wendigo_mutations.json index 0f2c09a131c55..f29680b571de3 100644 --- a/data/mods/CRT_EXPANSION/mutations/crt_wendigo_mutations.json +++ b/data/mods/CRT_EXPANSION/mutations/crt_wendigo_mutations.json @@ -25,56 +25,32 @@ { "type": "mutation", "id": "ANIMALEMPATH", - "name": "Animal Empathy", - "points": 1, - "description": "Peaceful animals will not run away from you, and even aggressive animals are less likely to attack. This only applies to natural animals such as woodland creatures.", - "starting_trait": true, - "category": [ "BEAST", "ELFA", "VAMP", "WENDIGO" ], - "changes_to": [ "ANIMALEMPATH2" ], - "cancels": [ "ANIMALDISCORD" ] + "copy-from": "ANIMALEMPATH", + "extend": { "category": [ "VAMP", "WENDIGO" ] } }, { "type": "mutation", "id": "ANIMALEMPATH2", - "name": "Animal Kinship", - "points": 2, - "description": "Something about your presence is calming to animals, and they will treat you with innate trust. This only applies to natural animals such as woodland creatures.", - "category": [ "ELFA", "VAMP", "WENDIGO" ], - "prereqs": [ "ANIMALEMPATH" ], - "cancels": [ "ANIMALDISCORD" ] + "copy-from": "ANIMALEMPATH2", + "extend": { "category": [ "VAMP", "WENDIGO" ] } }, { "type": "mutation", "id": "SMELLY", - "name": "Strong Scent", - "points": -1, - "description": "Your scent is particularly strong. It's not offensive to humans, but animals that track your scent will do so more easily.", - "starting_trait": true, - "changes_to": [ "SMELLY2" ], - "types": [ "SCENT" ], - "category": [ "FELINE", "LUPINE", "MOUSE", "WENDIGO" ] + "copy-from": "SMELLY", + "extend": { "category": [ "WENDIGO" ] } }, { "type": "mutation", "id": "PHEROMONE_MAMMAL", - "name": "Mammal Pheromones", - "points": 2, - "description": "Your body produces low-level pheromones which put mammals at ease. They will be less likely to attack or flee from you.", - "prereqs": [ "SMELLY2" ], - "types": [ "SCENT" ], - "category": [ "BEAST", "CATTLE", "WENDIGO" ] + "copy-from": "PHEROMONE_MAMMAL", + "extend": { "category": [ "WENDIGO" ] } }, { "type": "mutation", "id": "REGEN", - "name": "Regeneration", - "points": 6, - "description": "Your flesh regenerates from wounds incredibly quickly.", - "types": [ "HEALING" ], - "prereqs": [ "FASTHEALER2" ], - "category": [ "SLIME", "TROGLOBITE", "WENDIGO" ], - "healing_awake": 2.0, - "healing_resting": 1.5 + "copy-from": "REGEN", + "extend": { "category": [ "WENDIGO" ] } }, { "type": "mutation", @@ -99,5 +75,43 @@ "strength_damage": { "damage_type": "biological", "amount": 0.25 } } ] + }, + { + "type": "mutation", + "id": "SPURS", + "name": "Spurs", + "points": 5, + "visibility": 5, + "ugliness": 6, + "description": "Spurs of bone have erupted all across your arms. A thick, biological secretion oozes out of them promising extra harm to enemies.", + "valid": false, + "purifiable": false, + "threshreq": [ "THRESH_WENDIGO" ], + "category": [ "WENDIGO" ], + "social_modifiers": { "intimidate": 5 }, + "attacks": [ + { + "attack_text_u": "You ravage %s with your arms", + "attack_text_npc": "%1$s ravages %2$s with their arm spurs", + "body_part": "ARM_R", + "chance": 10, + "base_damage": { "damage_type": "stab", "amount": 2 }, + "strength_damage": { "damage_type": "biological", "amount": 0.25 } + } + ] + }, + { + "type": "mutation", + "id": "MONSTROUSCARDIO", + "name": "Persistent Body", + "points": 2, + "description": "As you move, the world seems to breath life and energy into your limbs. You simply rarely tire less readily than others. Your maximum stamina is 50% higher than usual.", + "valid": false, + "purifiable": false, + "threshreq": [ "THRESH_WENDIGO" ], + "category": [ "WENDIGO" ], + "cancels": [ "BADCARDIO" ], + "max_stamina_modifier": 1.75, + "stamina_regen_modifier": 0.25 } ] diff --git a/data/mods/CRT_EXPANSION/readme/README.md b/data/mods/CRT_EXPANSION/readme/README.md index 2b8063692979c..16d67176f6697 100644 --- a/data/mods/CRT_EXPANSION/readme/README.md +++ b/data/mods/CRT_EXPANSION/readme/README.md @@ -1,27 +1,30 @@ # C.R.T Expansion mod pack The core mod of the CRT Expansion mod pack, it currently adds an armor set, mildly OP gas mask and transforming vest, some gun mods, a new melee/tool and a new material. The items also use a lot of higher end materials such as superalloy, rubber (the "new" material), the lesser used hardsteel and also neoprene. -This mod also adds a few new classes to CDDA. To name a few: the C.R.I.T Medic, C.R.I.T Commanding Officer, C.R.I.T Automatic Rifleman, C.R.I.T Grunt, C.R.I.T NCO, C.R.I.T ROTC member, and also the highly feared (OP) C.R.I.T Spec Ops. +This mod also adds a few new classes to CDDA. To name a few: the C.R.I.T Medic, C.R.I.T Commanding Officer, C.R.I.T Automatic Rifleman, C.R.I.T Grunt, C.R.I.T NCO, C.R.I.T ROTC member, and also some more. -I tried to keep the professions revolving around slightly upgraded army gear and as "balanced" as possible except for the C.R.T Spec Ops which is for trying out the new items and being stupid powerful and the Juggernaught for being a Juggernaught. +I tried to keep the professions revolving around slightly upgraded army gear and as "balanced" as possible except for the CRIT Spec Ops which is for trying out the new items and being stupid powerful and the Juggernaught for being a Juggernaught. I can't fix some things like the toolmods attatching to the vest and gasmask, but that doesn't hurt the game (my mod already breaks it) and it's more of a cheap way to progress instead of getting a UPS, even though it still drinks a ton of power. # Extended Techniques -More techniques, more play styles. Tries to open up melee and offer more than "does it have a reach attack?" or "does it have rapid strikes?" to make melee interesting. +More techniques, more play styles. Tries to open up melee and offer more than "does it have a reach attack?" or "does it have rapid strikes?" to make melee interesting. Currently, this only applies to weapons and tools from my mod as this would break vanilla. Feel free to add whatever you like on your own weapons! # For those curious about stat scaling: -* SS-Rank is for stupid high scaling -* S-Rank is anything 2.0 down to 1.0 -* A-Rank is from 0.99 down to .75 -* B-Rank is .74 down to .5 -* C-Rank is .49 down to .25 -* D-Rank is .24 to .20 -* E-Rank is .19 and below +* SS-Rank is for stupid high scaling (legendary scaling) +* S-Rank is anything 2.0 down to 1.0 (dramatically scales) +* A-Rank is from 0.99 down to .75 (noticeably scales) +* B-Rank is .74 down to .5 (averagely scales) +* C-Rank is .49 down to .25 (somewhat scales) +* D-Rank is .24 to .20 (barely scales) +* E-Rank is .19 and below (offers scaling as an afterthought) I tried to keep the damage balanced and also added scaling damage and movecosts to make it so certain attacks or weapons carry different risks. +# Dead Space +Yeah, the suit is the R.I.G and many other things come from these games. Awesome series! Some Necromorphs will spawn in labs as well, so beware. + Anyways, have fun and report any bugs you find. diff --git a/data/mods/CRT_EXPANSION/scenarios/crt_classes.json b/data/mods/CRT_EXPANSION/scenarios/crt_classes.json index 37aa3fe925374..86520b79a1d60 100644 --- a/data/mods/CRT_EXPANSION/scenarios/crt_classes.json +++ b/data/mods/CRT_EXPANSION/scenarios/crt_classes.json @@ -361,7 +361,7 @@ "bio_carbon", "bio_power_storage_mkII" ], - "points": 20, + "points": 15, "skills": [ { "level": 10, "name": "gun" }, { "level": 10, "name": "launcher" }, @@ -421,7 +421,7 @@ "bio_dex_enhancer", "bio_power_storage_mkII" ], - "points": 18, + "points": 15, "skills": [ { "level": 3, "name": "gun" }, { "level": 3, "name": "pistol" }, @@ -716,7 +716,7 @@ "THIRST2", "SUNBURN" ], - "points": 16, + "points": 10, "skills": [ { "level": 5, "name": "cooking" }, { "level": 3, "name": "fabrication" }, { "level": 3, "name": "electronics" } ], "items": { "both": { diff --git a/data/mods/Craft_Gunpowder/cgp_recipes.json b/data/mods/Craft_Gunpowder/cgp_recipes.json deleted file mode 100644 index f73bcb1507c82..0000000000000 --- a/data/mods/Craft_Gunpowder/cgp_recipes.json +++ /dev/null @@ -1,266 +0,0 @@ -[ - { - "type": "recipe", - "//": "Completely provisional.", - "result": "sten", - "category": "CC_WEAPON", - "subcategory": "CSC_WEAPON_RANGED", - "skill_used": "mechanics", - "skills_required": [ [ "fabrication", 5 ], [ "gun", 2 ], [ "tailor", 1 ] ], - "book_learn": [ [ "manual_smg", 6 ], [ "textbook_anarch", 6 ], [ "textbook_mechanics", 5 ], [ "welding_book", 5 ] ], - "difficulty": 5, - "time": 360000, - "using": [ [ "sewing_standard", 20 ], [ "welding_standard", 50 ], [ "forging_standard", 25 ] ], - "tools": [ - [ [ "small_repairkit", 300 ], [ "large_repairkit", 75 ] ], - [ [ "cordless_drill", 300 ] ], - [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], - [ [ "swage", -1 ] ] - ], - "qualities": [ { "id": "HAMMER_FINE", "level": 1 }, { "id": "SAW_M_FINE", "level": 1 }, { "id": "SCREW_FINE", "level": 1 } ], - "components": [ - [ [ "pipe", 1 ] ], - [ [ "leather", 4 ] ], - [ [ "steel_chunk", 8 ], [ "steel_lump", 2 ] ], - [ [ "spring", 1 ] ], - [ [ "wire", 3 ] ], - [ [ "sheet_metal", 2 ] ] - ] - }, - { - "type": "recipe", - "result": "gunpowder", - "category": "CC_AMMO", - "subcategory": "CSC_AMMO_COMPONENTS", - "skill_used": "fabrication", - "skills_required": [ "cooking", 1 ], - "difficulty": 4, - "time": 8000, - "book_learn": [ - [ "textbook_anarch", 4 ], - [ "recipe_bullets", 2 ], - [ "manual_shotgun", 3 ], - [ "manual_pistol", 3 ], - [ "adv_chemistry", 3 ], - [ "textbook_chemistry", 3 ] - ], - "qualities": [ { "id": "CHEM", "level": 2 } ], - "tools": [ [ [ "chemistry_set", 50 ], [ "hotplate", 50 ], [ "toolset", 50 ] ] ], - "components": [ [ [ "oxy_powder", 200 ] ], [ [ "ammonia", 2 ], [ "lye_powder", 200 ] ], [ [ "charcoal", 5 ] ] ] - }, - { - "type": "recipe", - "result": "8mm_bootleg", - "category": "CC_AMMO", - "subcategory": "CSC_AMMO_PISTOL", - "skill_used": "fabrication", - "skills_required": [ "cooking", 2 ], - "difficulty": 8, - "time": 45000, - "book_learn": [ [ "recipe_caseless", 5 ], [ "recipe_bullets", 9 ], [ "manual_pistol", 10 ], [ "manual_rifle", 10 ] ], - "qualities": [ { "id": "CHEM", "level": 2 } ], - "tools": [ [ [ "surface_heat", 50, "LIST" ] ], [ [ "press", -1 ] ] ], - "components": [ - [ [ "acid", 1 ] ], - [ [ "plastic_chunk", 5 ] ], - [ [ "oxy_powder", 100 ] ], - [ [ "incendiary", 100 ] ], - [ - [ "lead", 75 ], - [ "gold_small", 75 ], - [ "silver_small", 75 ], - [ "tin", 75 ], - [ "bismuth", 75 ], - [ "solder_wire", 75 ] - ], - [ [ "copper", 35 ] ] - ] - }, - { - "type": "recipe", - "result": "20x66_bootleg_shot", - "category": "CC_AMMO", - "subcategory": "CSC_AMMO_SHOT", - "skill_used": "fabrication", - "skills_required": [ "cooking", 2 ], - "difficulty": 8, - "time": 45000, - "book_learn": [ [ "recipe_caseless", 5 ], [ "recipe_bullets", 9 ], [ "manual_shotgun", 10 ] ], - "qualities": [ { "id": "CHEM", "level": 2 } ], - "tools": [ [ [ "surface_heat", 50, "LIST" ] ], [ [ "press", -1 ] ] ], - "components": [ - [ [ "acid", 1 ] ], - [ [ "plastic_chunk", 4 ] ], - [ [ "oxy_powder", 120 ] ], - [ [ "incendiary", 120 ] ], - [ - [ "lead", 160 ], - [ "gold_small", 160 ], - [ "silver_small", 160 ], - [ "tin", 160 ], - [ "bismuth", 160 ], - [ "solder_wire", 160 ] - ] - ] - }, - { - "type": "recipe", - "result": "20x66_bootleg_flechette", - "category": "CC_AMMO", - "subcategory": "CSC_AMMO_SHOT", - "skill_used": "fabrication", - "skills_required": [ "cooking", 2 ], - "difficulty": 8, - "time": 45000, - "book_learn": [ [ "recipe_caseless", 5 ], [ "recipe_bullets", 9 ], [ "manual_shotgun", 10 ] ], - "qualities": [ { "id": "CHEM", "level": 2 } ], - "tools": [ [ [ "surface_heat", 50, "LIST" ] ], [ [ "boltcutters", -1 ], [ "toolset", -1 ] ], [ [ "press", -1 ] ] ], - "components": [ - [ [ "acid", 1 ] ], - [ [ "plastic_chunk", 4 ] ], - [ [ "oxy_powder", 120 ] ], - [ [ "incendiary", 120 ] ], - [ [ "nail", 240 ], [ "combatnail", 240 ] ] - ] - }, - { - "type": "recipe", - "result": "20x66_bootleg_slug", - "category": "CC_AMMO", - "subcategory": "CSC_AMMO_SHOT", - "skill_used": "fabrication", - "skills_required": [ "cooking", 2 ], - "difficulty": 8, - "time": 45000, - "book_learn": [ [ "recipe_caseless", 5 ], [ "recipe_bullets", 9 ], [ "manual_shotgun", 10 ] ], - "qualities": [ { "id": "CHEM", "level": 2 } ], - "tools": [ [ [ "surface_heat", 50, "LIST" ] ], [ [ "press", -1 ] ] ], - "components": [ - [ [ "acid", 1 ] ], - [ [ "plastic_chunk", 4 ] ], - [ [ "oxy_powder", 160 ] ], - [ [ "incendiary", 160 ] ], - [ - [ "lead", 240 ], - [ "gold_small", 240 ], - [ "silver_small", 240 ], - [ "tin", 240 ], - [ "bismuth", 240 ], - [ "solder_wire", 240 ] - ] - ] - }, - { - "type": "recipe", - "result": "smg_9mm", - "category": "CC_WEAPON", - "subcategory": "CSC_WEAPON_RANGED", - "skill_used": "mechanics", - "skills_required": [ "gun", 4 ], - "difficulty": 6, - "time": 36000, - "reversible": true, - "autolearn": true, - "qualities": [ { "id": "SAW_M_FINE", "level": 1 }, { "id": "SCREW_FINE", "level": 1 } ], - "components": [ [ [ "pipe", 2 ] ], [ [ "scrap", 3 ] ], [ [ "spring", 1 ] ], [ [ "2x4", 2 ] ], [ [ "sheet_metal", 1 ] ] ] - }, - { - "type": "recipe", - "result": "smg_40", - "category": "CC_WEAPON", - "subcategory": "CSC_WEAPON_RANGED", - "skill_used": "mechanics", - "skills_required": [ "gun", 4 ], - "difficulty": 6, - "time": 36000, - "reversible": true, - "autolearn": true, - "qualities": [ { "id": "SAW_M_FINE", "level": 1 }, { "id": "SCREW_FINE", "level": 1 } ], - "components": [ [ [ "pipe", 2 ] ], [ [ "scrap", 3 ] ], [ [ "spring", 1 ] ], [ [ "2x4", 2 ] ], [ [ "sheet_metal", 1 ] ] ] - }, - { - "type": "recipe", - "result": "smg_45", - "category": "CC_WEAPON", - "subcategory": "CSC_WEAPON_RANGED", - "skill_used": "mechanics", - "skills_required": [ "gun", 4 ], - "difficulty": 6, - "time": 36000, - "reversible": true, - "autolearn": true, - "qualities": [ { "id": "SAW_M_FINE", "level": 1 }, { "id": "SCREW_FINE", "level": 1 } ], - "components": [ [ [ "pipe", 2 ] ], [ [ "scrap", 3 ] ], [ [ "spring", 1 ] ], [ [ "2x4", 2 ] ], [ [ "sheet_metal", 1 ] ] ] - }, - { - "type": "recipe", - "result": "red_dot_sight", - "category": "CC_WEAPON", - "subcategory": "CSC_WEAPON_MODS", - "skill_used": "electronics", - "difficulty": 7, - "skills_required": [ "gun", 4 ], - "time": 60000, - "decomp_learn": 2, - "book_learn": [ [ "manual_electronics", 4 ], [ "textbook_electronics", 4 ] ], - "using": [ [ "soldering_standard", 20 ], [ "surface_heat", 20 ] ], - "qualities": [ { "id": "SCREW_FINE", "level": 1 }, { "id": "CHEM", "level": 2 } ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], - "components": [ - [ [ "plastic_chunk", 2 ] ], - [ [ "amplifier", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "light_battery_cell", 1 ], [ "plut_cell", 1 ] ], - [ [ "silver_small", 10 ] ], - [ [ "gold_small", 10 ] ], - [ [ "chem_aluminium_powder", 10 ] ], - [ [ "chem_chromium_oxide", 10 ] ], - [ [ "lens", 2 ] ] - ] - }, - { - "type": "recipe", - "result": "pistol_scope", - "category": "CC_WEAPON", - "subcategory": "CSC_WEAPON_MODS", - "skill_used": "fabrication", - "difficulty": 7, - "skills_required": [ [ "pistol", 5 ] ], - "time": 30000, - "decomp_learn": 4, - "book_learn": [ [ "manual_pistol", 4 ], [ "manual_fabrication", 5 ], [ "textbook_fabrication", 5 ] ], - "using": [ [ "soldering_standard", 10 ], [ "surface_heat", 10 ] ], - "qualities": [ { "id": "SCREW_FINE", "level": 1 } ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], - "components": [ - [ - [ "scrap", 1 ], - [ "can_drink_unsealed", 1 ], - [ "can_food_unsealed", 1 ], - [ "canister_empty", 1 ], - [ "plastic_chunk", 1 ] - ], - [ [ "lens", 2 ] ] - ] - }, - { - "type": "recipe", - "result": "rifle_scope", - "category": "CC_WEAPON", - "subcategory": "CSC_WEAPON_MODS", - "skill_used": "fabrication", - "difficulty": 8, - "skills_required": [ [ "gun", 6 ] ], - "time": 45000, - "decomp_learn": 4, - "book_learn": [ [ "manual_rifle", 4 ], [ "manual_fabrication", 5 ], [ "textbook_fabrication", 5 ] ], - "using": [ [ "soldering_standard", 20 ], [ "surface_heat", 15 ] ], - "qualities": [ { "id": "SCREW_FINE", "level": 1 } ], - "tools": [ [ [ "mold_plastic", -1 ] ] ], - "components": [ - [ [ "scrap", 1 ], [ "can_drink_unsealed", 1 ], [ "can_food_unsealed", 1 ], [ "canister_empty", 1 ] ], - [ [ "plastic_chunk", 2 ] ], - [ [ "lens", 2 ] ] - ] - } -] diff --git a/data/mods/Craft_Gunpowder/modinfo.json b/data/mods/Craft_Gunpowder/modinfo.json deleted file mode 100644 index 64935d162c4e0..0000000000000 --- a/data/mods/Craft_Gunpowder/modinfo.json +++ /dev/null @@ -1,13 +0,0 @@ -[ - { - "type": "MOD_INFO", - "ident": "craftgp", - "name": "Craftable Gun Pack", - "authors": [ "Zaweri" ], - "maintainers": [ "Noctifer-de-Mortem" ], - "description": "Adds more craftable firearms, and gunpowder. WARNING: Breaks intended balance.", - "category": "items", - "dependencies": [ "dda" ], - "obsolete": true - } -] diff --git a/data/mods/DeoxyMod/Deoxy_vehicle_parts.json b/data/mods/DeoxyMod/Deoxy_vehicle_parts.json deleted file mode 100644 index 011f5ffedf048..0000000000000 --- a/data/mods/DeoxyMod/Deoxy_vehicle_parts.json +++ /dev/null @@ -1,224 +0,0 @@ -[ - { - "abstract": "fxlhalfboard", - "type": "vehicle_part", - "name": "folding extra light quarterpanel", - "color": "light_gray", - "broken_symbol": "#", - "broken_color": "light_gray", - "durability": 30, - "item": "pipe", - "location": "center", - "folded_volume": 4, - "breaks_into": [ { "item": "pipe", "prob": 50 } ], - "requirements": { - "install": { "skills": [ [ "mechanics", 1 ] ], "time": "60 m", "using": [ [ "welding_standard", 5 ] ] }, - "removal": { "skills": [ [ "mechanics", 2 ] ], "time": "30 m", "using": [ [ "vehicle_weld_removal", 1 ] ] }, - "repair": { "skills": [ [ "mechanics", 2 ] ], "time": "60 m", "using": [ [ "welding_standard", 5 ] ] } - }, - "flags": [ "OBSTACLE", "FOLDABLE" ] - }, - { - "id": "fxlhalfboard_horizontal", - "copy-from": "fxlhalfboard", - "type": "vehicle_part", - "symbol": "h" - }, - { - "id": "fxlhalfboard_vertical", - "copy-from": "fxlhalfboard", - "type": "vehicle_part", - "symbol": "j" - }, - { - "id": "fxlhalfboard_nw", - "copy-from": "fxlhalfboard", - "type": "vehicle_part", - "symbol": "y" - }, - { - "id": "fxlhalfboard_ne", - "copy-from": "fxlhalfboard", - "type": "vehicle_part", - "symbol": "u" - }, - { - "id": "fxlhalfboard_se", - "copy-from": "fxlhalfboard", - "type": "vehicle_part", - "symbol": "n" - }, - { - "id": "fxlhalfboard_sw", - "copy-from": "fxlhalfboard", - "type": "vehicle_part", - "symbol": "b" - }, - { - "id": "fxlhalfboard_horizontal_2", - "copy-from": "fxlhalfboard", - "type": "vehicle_part", - "symbol": "=" - }, - { - "id": "fxlhalfboard_vertical_2", - "copy-from": "fxlhalfboard", - "type": "vehicle_part", - "symbol": "H" - }, - { - "type": "vehicle_part", - "id": "fdoor", - "name": "foldable door", - "symbol": "+", - "color": "cyan", - "broken_symbol": "&", - "broken_color": "cyan", - "damage_modifier": 80, - "durability": 50, - "size": 10, - "item": "foldframe", - "location": "center", - "folded_volume": 10, - "requirements": { - "install": { "skills": [ [ "mechanics", 2 ] ], "time": "60 m", "using": [ [ "welding_standard", 5 ] ] }, - "removal": { "skills": [ [ "mechanics", 2 ] ], "time": "30 m", "using": [ [ "vehicle_weld_removal", 1 ] ] }, - "repair": { "skills": [ [ "mechanics", 3 ] ], "time": "60 m", "using": [ [ "welding_standard", 5 ] ] } - }, - "flags": [ "CARGO", "OBSTACLE", "OPENABLE", "BOARDABLE", "FOLDABLE" ], - "breaks_into": [ { "item": "steel_chunk", "count": [ 0, 2 ] }, { "item": "scrap", "count": [ 1, 2 ] } ] - }, - { - "type": "vehicle_part", - "id": "sheet_superalloy", - "name": "superalloy coating", - "symbol": ")", - "color": "dark_gray", - "broken_symbol": ")", - "broken_color": "dark_gray", - "durability": 250, - "item": "alloy_sheet", - "difficulty": 5, - "location": "armor", - "folded_volume": 2, - "requirements": { - "install": { "skills": [ [ "mechanics", 5 ] ], "time": "60 m", "using": [ [ "welding_standard", 5 ] ] }, - "removal": { "skills": [ [ "mechanics", 3 ] ], "time": "30 m", "using": [ [ "vehicle_weld_removal", 1 ] ] }, - "repair": { "skills": [ [ "mechanics", 6 ] ], "time": "60 m", "using": [ [ "welding_standard", 5 ] ] } - }, - "flags": [ "ARMOR", "FOLDABLE" ], - "breaks_into": [ - { "item": "steel_lump", "count": [ 4, 6 ] }, - { "item": "steel_chunk", "count": [ 4, 6 ] }, - { "item": "scrap", "count": [ 4, 6 ] } - ] - }, - { - "id": "storage_battery_mount", - "copy-from": "storage_battery_mount", - "type": "vehicle_part", - "name": "swappable storage battery case", - "extend": { "flags": [ "FOLDABLE" ] }, - "folded_volume": 9 - }, - { - "id": "solar_panel", - "copy-from": "solar_panel", - "type": "vehicle_part", - "name": "solar panel", - "extend": { "flags": [ "FOLDABLE" ] }, - "folded_volume": 12 - }, - { - "id": "reinforced_solar_panel", - "copy-from": "reinforced_solar_panel", - "type": "vehicle_part", - "name": "reinforced solar panel", - "extend": { "flags": [ "FOLDABLE" ] }, - "folded_volume": 26 - }, - { - "id": "solar_panel_v2", - "copy-from": "solar_panel_v2", - "type": "vehicle_part", - "name": "upgraded solar panel", - "extend": { "flags": [ "FOLDABLE" ] }, - "folded_volume": 18 - }, - { - "id": "reinforced_solar_panel_v2", - "copy-from": "reinforced_solar_panel_v2", - "type": "vehicle_part", - "name": "upgraded reinforced solar panel", - "extend": { "flags": [ "FOLDABLE" ] }, - "folded_volume": 30 - }, - { - "id": "solar_panel_v3", - "copy-from": "solar_panel_v3", - "type": "vehicle_part", - "name": "quantum solar panel", - "extend": { "flags": [ "FOLDABLE" ] }, - "folded_volume": 18 - }, - { - "id": "stereo", - "copy-from": "stereo", - "type": "vehicle_part", - "name": "stereo system", - "extend": { "flags": [ "FOLDABLE" ] }, - "folded_volume": 14 - }, - { - "id": "drive_by_wire_controls", - "copy-from": "drive_by_wire_controls", - "type": "vehicle_part", - "name": "drive by wire controls", - "extend": { "flags": [ "FOLDABLE" ] }, - "folded_volume": 15 - }, - { - "id": "cam_control", - "copy-from": "cam_control", - "type": "vehicle_part", - "name": "camera control system", - "extend": { "flags": [ "FOLDABLE" ] }, - "folded_volume": 16 - }, - { - "id": "omnicam", - "copy-from": "omnicam", - "type": "vehicle_part", - "name": "security camera", - "extend": { "flags": [ "FOLDABLE" ] }, - "folded_volume": 8 - }, - { - "id": "minireactor", - "copy-from": "minireactor", - "type": "vehicle_part", - "extend": { "flags": [ "FOLDABLE" ] }, - "folded_volume": 6 - }, - { - "id": "tank_small", - "copy-from": "tank_small", - "type": "vehicle_part", - "extend": { "flags": [ "FOLDABLE" ] }, - "folded_volume": 40 - }, - { - "id": "chimes", - "copy-from": "chimes", - "type": "vehicle_part", - "extend": { "flags": [ "FOLDABLE" ] }, - "folded_volume": 16 - }, - { - "id": "water_purifier", - "copy-from": "water_purifier", - "type": "vehicle_part", - "extend": { "flags": [ "FOLDABLE" ] }, - "folded_volume": 12 - } -] diff --git a/data/mods/DeoxyMod/modinfo.json b/data/mods/DeoxyMod/modinfo.json deleted file mode 100644 index 677ba32996ae9..0000000000000 --- a/data/mods/DeoxyMod/modinfo.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - { - "type": "MOD_INFO", - "ident": "deoxymod", - "name": "Folding Parts pack", - "authors": [ "Deoxy", "Llamageddon" ], - "description": "Makes solar panels and several other parts foldable, and adds foldable quarterboards.", - "category": "vehicles", - "dependencies": [ "dda" ], - "obsolete": true - } -] diff --git a/data/mods/EW_Pack/ew_ammo.json b/data/mods/EW_Pack/ew_ammo.json deleted file mode 100644 index 4dcc20d985fc7..0000000000000 --- a/data/mods/EW_Pack/ew_ammo.json +++ /dev/null @@ -1,69 +0,0 @@ -[ - { - "type": "AMMO", - "id": "654", - "price": 3800, - "name": { "str_sp": "6.54x42mm 9N8" }, - "symbol": "=", - "color": "dark_gray", - "description": "A 6.54x42mm cartridge, loaded with a 120 gr. FMJBT bullet. Inspired by the improved .280 British, Alexander Sarafanov himself developed the 6.54x42mm rifle cartridge for his new SVS-24 Assault Rifle.", - "material": [ "steel", "lead", "powder" ], - "volume": "250 ml", - "weight": "14 g", - "ammo_type": "654", - "casing": "654_casing", - "damage": 49, - "pierce": 8, - "range": 42, - "dispersion": 5, - "recoil": 2442, - "count": 30, - "stack_size": 30, - "effects": [ "COOKOFF" ] - }, - { - "type": "AMMO", - "id": "654t", - "copy-from": "654", - "price": 6800, - "name": { "str_sp": "6.54x42mm 9N12" }, - "description": "The 6.54x42mm 9N12 has superior armor piercing capabilities thanks to its tungsten carbide core. Tungsten carbide was used in anti-tank rounds of the 20th and 21st century, whenever depleted uranium was unavailable or undesirable.", - "material": [ "steel", "powder" ], - "weight": "12 g", - "count": 50, - "damage": 47, - "pierce": 32, - "dispersion": 5, - "recoil": 2278, - "effects": [ "COOKOFF", "NEVER_MISFIRES" ] - }, - { - "type": "GENERIC", - "id": "654_casing", - "copy-from": "casing", - "name": "6.54x42mm casing", - "description": "An empty casing from a 6.54x42 round.", - "material": "steel", - "volume": "10ml", - "weight": 5 - }, - { - "type": "AMMO", - "id": "20_dread", - "price": 300, - "name": { "str": ".20 DREAD Pellet" }, - "symbol": "=", - "color": "light_gray", - "description": "These metal pellets are propelled with the help of electromagnets, therefore they do not produce sound, flash or heat signature.", - "material": "steel", - "volume": "250 ml", - "weight": "4 g", - "bashing": 1, - "ammo_type": "wr_dread", - "damage": 6, - "pierce": 2, - "range": 8, - "dispersion": 8, - "count": 200 - } -] diff --git a/data/mods/EW_Pack/ew_ammo_handloaded.json b/data/mods/EW_Pack/ew_ammo_handloaded.json deleted file mode 100644 index ba27a452a1efd..0000000000000 --- a/data/mods/EW_Pack/ew_ammo_handloaded.json +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "type": "AMMO", - "id": "reloaded_654", - "copy-from": "654", - "name": { "str_sp": "reloaded 6.54x42mm" }, - "description": "Inspired by the improved .280, Alexander Sarafanov himself developed the 6.54x42mm rifle cartridge for his new SVS-24 Assault Rifle. This one has been hand-reloaded.", - "relative": { "price": -400, "damage": -4, "pierce": -1, "dispersion": 85 } - } -] diff --git a/data/mods/EW_Pack/ew_ammo_t.json b/data/mods/EW_Pack/ew_ammo_t.json deleted file mode 100644 index 569becc8ddf65..0000000000000 --- a/data/mods/EW_Pack/ew_ammo_t.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "type": "ammunition_type", - "id": "654", - "name": "6.54x42mm", - "default": "654" - }, - { - "type": "ammunition_type", - "id": "wr_dread", - "name": ".20 DREAD Pellets", - "default": "20_dread" - } -] diff --git a/data/mods/EW_Pack/ew_books.json b/data/mods/EW_Pack/ew_books.json deleted file mode 100644 index d84c44e281312..0000000000000 --- a/data/mods/EW_Pack/ew_books.json +++ /dev/null @@ -1,21 +0,0 @@ -[ - { - "type": "BOOK", - "id": "recipe_igm", - "name": { "str": "Case #5846, Illegal Gun Modification", "str_pl": "copies of Case #5846, Illegal Gun Modification" }, - "max_level": 3, - "description": "This file details illegal gun modifications. Maybe you could learn something. At least you don't have to worry about the cops anymore.", - "weight": "400 g", - "color": "white", - "intelligence": 4, - "symbol": "?", - "material": [ "paper" ], - "volume": "500 ml", - "bashing": 2, - "time": 30, - "fun": 0, - "skill": "gun", - "price": 18000, - "required_level": 1 - } -] diff --git a/data/mods/EW_Pack/ew_bullet_pulling.json b/data/mods/EW_Pack/ew_bullet_pulling.json deleted file mode 100644 index 83bda4e699eb8..0000000000000 --- a/data/mods/EW_Pack/ew_bullet_pulling.json +++ /dev/null @@ -1,34 +0,0 @@ -[ - { - "type": "uncraft", - "result": "654", - "skill_used": "gun", - "difficulty": 5, - "time": 500, - "flags": [ "UNCRAFT_SINGLE_CHARGE" ], - "tools": [ [ [ "puller", -1 ] ] ], - "components": [ - [ [ "lead", 5 ] ], - [ [ "654_casing", 1 ] ], - [ [ "smrifle_primer", 1 ] ], - [ [ "gunpowder", 10 ] ], - [ [ "copper", 5 ] ] - ] - }, - { - "type": "uncraft", - "result": "654t", - "skill_used": "gun", - "difficulty": 5, - "time": 500, - "flags": [ "UNCRAFT_SINGLE_CHARGE" ], - "tools": [ [ [ "puller", -1 ] ] ], - "components": [ - [ [ "lead", 6 ] ], - [ [ "654_casing", 1 ] ], - [ [ "smrifle_primer", 1 ] ], - [ [ "gunpowder", 10 ] ], - [ [ "copper", 6 ] ] - ] - } -] diff --git a/data/mods/EW_Pack/ew_item_groups.json b/data/mods/EW_Pack/ew_item_groups.json deleted file mode 100644 index 2988ad188f9ac..0000000000000 --- a/data/mods/EW_Pack/ew_item_groups.json +++ /dev/null @@ -1,67 +0,0 @@ -[ - { - "type": "item_group", - "id": "ammo_casings", - "items": [ { "item": "654_casing", "prob": 50, "count": 20 } ] - }, - { - "type": "item_group", - "id": "ammo_rifle_reloaded", - "items": [ [ "reloaded_654", 10 ] ] - }, - { - "type": "item_group", - "id": "guns_rifle_obscure", - "items": [ [ "svs-24", 40 ], [ "svs-24c", 40 ] ] - }, - { - "type": "item_group", - "id": "mags_rifle_common", - "items": [ [ "cw24_bigrobomag", 20 ], [ "cw24_robomag", 20 ], [ "cwd-63bigmag", 40 ], [ "cwd-63mag", 20 ] ] - }, - { - "type": "item_group", - "id": "mags_obscure", - "items": [ [ "svs24_robodrum", 10 ], [ "svs24_robomag", 10 ] ] - }, - { - "type": "item_group", - "id": "rare", - "items": [ [ "svs-24c", 3 ], [ "reloaded_654", 40 ], [ "20_dread", 50 ], [ "wrist_dread", 30 ] ] - }, - { - "type": "item_group", - "id": "guns_rifle_common", - "items": [ [ "cw-24", 20 ], [ "cw-24k", 40 ], [ "cw-24m", 10 ], [ "cwd-63", 30 ] ] - }, - { - "type": "item_group", - "id": "guns_smg_rare", - "items": [ [ "wrist_dread", 30 ] ] - }, - { - "type": "item_group", - "id": "ammo_rifle_obscure", - "items": [ [ "654t", 100 ] ] - }, - { - "type": "item_group", - "id": "ammo_rifle_common", - "items": [ [ "545", 50 ], [ "654", 30 ] ] - }, - { - "type": "item_group", - "id": "ammo_smg_rare", - "items": [ [ "20_dread", 20 ] ] - }, - { - "type": "item_group", - "id": "cop_evidence", - "items": [ [ "654", 10 ], [ "cw-24hack", 5 ], [ "cw-24m_hack", 10 ], [ "recipe_igm", 10 ] ] - }, - { - "type": "item_group", - "id": "cop_gear", - "items": [ [ "recipe_igm", 10 ] ] - } -] diff --git a/data/mods/EW_Pack/ew_magazines.json b/data/mods/EW_Pack/ew_magazines.json deleted file mode 100644 index 00365c9454659..0000000000000 --- a/data/mods/EW_Pack/ew_magazines.json +++ /dev/null @@ -1,103 +0,0 @@ -[ - { - "id": "cw24_robomag", - "type": "MAGAZINE", - "name": "CW-24 auto-magazine", - "description": "An advanced automagazine for the CW-24 rifle. Like the SVS magazines, it uses microrobotics to load its cartridges.", - "weight": "250 g", - "volume": "500 ml", - "price": 3500, - "material": [ "plastic", "steel" ], - "symbol": "#", - "color": "light_gray", - "ammo_type": "545x39", - "capacity": 30, - "reliability": 10, - "reload_time": 20, - "flags": [ "MAG_COMPACT" ] - }, - { - "id": "cw24_bigrobomag", - "type": "MAGAZINE", - "name": "CW-24 extended magazine", - "description": "An extended auto-magazine for the CW-24 rifle. Like the SVS magazines, it uses microrobotics to load its cartridges.", - "weight": "290 g", - "volume": "750 ml", - "price": 5800, - "material": [ "plastic", "steel" ], - "symbol": "#", - "color": "light_gray", - "ammo_type": "545x39", - "capacity": 55, - "reliability": 8, - "reload_time": 40, - "flags": [ "MAG_BULKY" ] - }, - { - "id": "cwd-63bigmag", - "type": "MAGAZINE", - "name": "CWD-63 extended magazine", - "description": "A cheap 10-round box magazine for the CWD-63. It's not as reliable.", - "weight": "120 g", - "volume": "500 ml", - "price": 1500, - "material": [ "plastic", "steel" ], - "symbol": "#", - "color": "light_gray", - "ammo_type": "308", - "capacity": 20, - "reliability": 7, - "reload_time": 120, - "flags": [ "MAG_BULKY" ] - }, - { - "id": "cwd-63mag", - "type": "MAGAZINE", - "name": "CWD-63 magazine", - "description": "Since it's created for the .308 round, it doesn't need the curved shape of the original magazine.", - "weight": "160 g", - "volume": "250 ml", - "price": 3450, - "material": [ "plastic", "steel" ], - "symbol": "#", - "color": "light_gray", - "ammo_type": "308", - "capacity": 10, - "reliability": 10, - "flags": [ "MAG_COMPACT" ] - }, - { - "id": "svs24_robodrum", - "type": "MAGAZINE", - "name": "SVS-24 robodrum", - "description": "An advanced 135-round drum magazine. Like the auto-magazine, it loads cartridges using microrobotics.", - "weight": "2358 g", - "volume": "1250 ml", - "price": 12000, - "material": [ "plastic", "steel" ], - "symbol": "#", - "color": "light_gray", - "ammo_type": "654", - "capacity": 135, - "reliability": 9, - "reload_time": 20, - "flags": [ "MAG_BULKY" ] - }, - { - "id": "svs24_robomag", - "type": "MAGAZINE", - "name": "SVS-24 robomag", - "description": "An advanced 42-round auto-magazine. Unlike previous generations of magazines, this one uses microrobotics to load cartridges.", - "weight": "320 g", - "volume": "750 ml", - "price": 4950, - "material": [ "plastic", "steel" ], - "symbol": "#", - "color": "light_gray", - "ammo_type": "654", - "capacity": 42, - "reliability": 9, - "reload_time": 20, - "flags": [ "MAG_BULKY" ] - } -] diff --git a/data/mods/EW_Pack/ew_recipes.json b/data/mods/EW_Pack/ew_recipes.json deleted file mode 100644 index 5bda19a9e4318..0000000000000 --- a/data/mods/EW_Pack/ew_recipes.json +++ /dev/null @@ -1,78 +0,0 @@ -[ - { - "result": "cw-24hack", - "type": "recipe", - "category": "CC_WEAPON", - "subcategory": "CSC_WEAPON_RANGED", - "skill_used": "fabrication", - "difficulty": 3, - "skills_required": [ "gun", 3 ], - "time": 15000, - "book_learn": [ [ "recipe_igm", 1 ] ], - "using": [ [ "welding_standard", 3 ] ], - "qualities": [ { "id": "SCREW_FINE", "level": 1 }, { "id": "SAW_M_FINE", "level": 1 } ], - "components": [ [ [ "cw-24", 1 ] ], [ [ "pipe", 1 ] ], [ [ "sheet_metal", 1 ], [ "scrap", 2 ] ] ] - }, - { - "result": "cw-24m_hack", - "type": "recipe", - "category": "CC_WEAPON", - "subcategory": "CSC_WEAPON_RANGED", - "skill_used": "fabrication", - "difficulty": 3, - "skills_required": [ "gun", 3 ], - "time": 15000, - "book_learn": [ [ "recipe_igm", 2 ] ], - "using": [ [ "welding_standard", 3 ] ], - "qualities": [ { "id": "SCREW_FINE", "level": 1 }, { "id": "SAW_M_FINE", "level": 1 } ], - "components": [ [ [ "cw-24m", 1 ] ], [ [ "pipe", 1 ] ], [ [ "sheet_metal", 1 ], [ "scrap", 2 ] ] ] - }, - { - "type": "recipe", - "result": "reloaded_654", - "category": "CC_AMMO", - "subcategory": "CSC_AMMO_RIFLE", - "skill_used": "fabrication", - "skills_required": [ "gun", 3 ], - "difficulty": 5, - "time": 40000, - "book_learn": [ [ "recipe_bullets", 3 ], [ "mag_rifle", 4 ] ], - "tools": [ [ [ "press", -1 ] ], [ [ "fire", -1 ], [ "toolset", 2 ], [ "hotplate", 2 ] ] ], - "components": [ - [ [ "654_casing", 30 ] ], - [ [ "smrifle_primer", 30 ] ], - [ [ "gunpowder", 300 ] ], - [ - [ "lead", 150 ], - [ "gold_small", 150 ], - [ "silver_small", 150 ], - [ "tin", 150 ], - [ "bismuth", 150 ], - [ "solder_wire", 150 ] - ], - [ [ "copper", 75 ] ] - ] - }, - { - "type": "recipe", - "result": "20_dread", - "category": "CC_AMMO", - "subcategory": "CSC_AMMO_OTHER", - "skill_used": "fabrication", - "skills_required": [ "gun", 2 ], - "difficulty": 3, - "time": 10000, - "book_learn": [ [ "recipe_bullets", 2 ] ], - "tools": [ [ [ "forge", 50 ], [ "oxy_torch", 10 ] ], [ [ "swage", -1 ] ], [ [ "crucible", -1 ] ] ], - "components": [ - [ - [ "lead", 200 ], - [ "gold_small", 200 ], - [ "silver_small", 200 ], - [ "tin", 200 ], - [ "bismuth", 200 ], - [ "solder_wire", 200 ] - ] - ] - } -] diff --git a/data/mods/EW_Pack/ew_weapons.json b/data/mods/EW_Pack/ew_weapons.json deleted file mode 100644 index bab3e2ba363f2..0000000000000 --- a/data/mods/EW_Pack/ew_weapons.json +++ /dev/null @@ -1,213 +0,0 @@ -[ - { - "id": "svs-24", - "type": "GUN", - "reload_noise_volume": 10, - "symbol": "(", - "color": "dark_gray", - "name": { "str_sp": "SVS-24" }, - "description": "The Sarafanov Assault Rifle replaced the famous AK family of guns as the service rifle of the Russian Army. It uses the 6.54x42mm cartridge.", - "price": 450000, - "material": [ "steel", "plastic" ], - "skill": "rifle", - "ammo": "654", - "weight": "3900 g", - "volume": "2 L", - "bashing": 12, - "to_hit": -1, - "dispersion": 75, - "durability": 9, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 12 ] ], - "default_mods": [ "red_dot_sight" ], - "valid_mod_locations": [ - [ "accessories", 4 ], - [ "barrel", 1 ], - [ "bore", 1 ], - [ "brass catcher", 1 ], - [ "grip", 1 ], - [ "magazine", 1 ], - [ "mechanism", 4 ], - [ "muzzle", 1 ], - [ "rail", 1 ], - [ "sights", 1 ], - [ "sling", 1 ], - [ "stock", 1 ], - [ "underbarrel", 1 ] - ], - "magazines": [ - [ "654", [ "svs24_robomag", "svs24_robodrum" ] ], - [ "545x39", [ "cw24_robomag", "cw24_bigrobomag", "ak74mag" ] ], - [ "762", [ "akmag30", "akmag10", "akmag20", "akmag40", "akdrum75" ] ] - ] - }, - { - "id": "svs-24c", - "copy-from": "svs-24", - "type": "GUN", - "name": { "str_sp": "SVS-24C" }, - "description": "The compact version of the standard SVS-24. It is commonly issued to tank crews or special forces due to its smaller size. The shorter barrel reduces accuracy.", - "price": 440000, - "weight": "3 kg", - "volume": "1250 ml", - "range": -2, - "valid_mod_locations": [ - [ "accessories", 4 ], - [ "barrel", 1 ], - [ "bore", 1 ], - [ "brass catcher", 1 ], - [ "grip", 1 ], - [ "magazine", 1 ], - [ "mechanism", 4 ], - [ "muzzle", 1 ], - [ "rail", 1 ], - [ "sights", 1 ], - [ "sling", 1 ], - [ "stock", 1 ], - [ "underbarrel", 1 ] - ] - }, - { - "id": "cw-24", - "copy-from": "rifle_semi", - "type": "GUN", - "color": "dark_gray", - "name": { "str_sp": "CW-24" }, - "description": "Civilian version of the SVS-24. It was made by Clearwater Arms, Georgia, for the US market. It's pure semi-automatic, and fires the weaker 5.45x39mm cartridge.", - "price": 210000, - "//": "Civvie version is cheaper.", - "material": [ "steel", "plastic" ], - "ammo": "545x39", - "weight": "3900 g", - "volume": "2 L", - "bashing": 12, - "to_hit": -1, - "dispersion": 75, - "durability": 9, - "default_mods": [ "red_dot_sight" ], - "valid_mod_locations": [ - [ "accessories", 4 ], - [ "barrel", 1 ], - [ "bore", 1 ], - [ "brass catcher", 1 ], - [ "grip", 1 ], - [ "magazine", 1 ], - [ "mechanism", 4 ], - [ "muzzle", 1 ], - [ "rail", 1 ], - [ "sights", 1 ], - [ "sling", 1 ], - [ "stock", 1 ], - [ "underbarrel", 1 ] - ], - "magazines": [ - [ "545x39", [ "cw24_robomag", "cw24_bigrobomag" ] ], - [ "762", [ "akmag30", "akmag10", "akmag20", "akmag40", "akdrum75" ] ], - [ "654", [ "svs24_robomag", "svs24_robodrum" ] ] - ] - }, - { - "id": "cw-24m", - "copy-from": "cw-24", - "type": "GUN", - "color": "light_gray", - "name": { "str_sp": "CW-24M" }, - "description": "Civilian version of the SVS-24. This one fires the same 6.54x42mm cartridge as the SVS-24.", - "price": 200000, - "ammo": "654" - }, - { - "id": "cw-24k", - "copy-from": "cw-24", - "type": "GUN", - "color": "light_gray", - "name": { "str_sp": "CW-24K" }, - "description": "Civilian version of the SVS-24. This one fires the cheaper, but still powerful, 7.62x39mm cartridge.", - "price": 160000, - "ammo": "762", - "magazines": [ - [ "762", [ "akmag30", "akmag10", "akmag20", "akmag40", "akdrum75" ] ], - [ "545x39", [ "cw24_robomag", "cw24_bigrobomag" ] ], - [ "654", [ "svs24_robomag", "svs24_robodrum" ] ] - ] - }, - { - "id": "cw-24hack", - "copy-from": "cw-24", - "type": "GUN", - "name": { "str_sp": "Modified CW-24" }, - "description": "Civilian version of the SVS-24. It has a modified receiver and a new crudely crafted full-auto bolt carrier. Don't expect the original reliability.", - "price": 420000, - "dispersion": 120, - "durability": 6, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 8 ] ] - }, - { - "id": "cw-24m_hack", - "copy-from": "cw-24m", - "type": "GUN", - "name": { "str_sp": "Modified CW-24M" }, - "description": "Civilian version of the SVS-24. It has a modified receiver and a new crudely crafted full-auto bolt carrier. Don't expect the original reliability.", - "price": 420000, - "dispersion": 120, - "durability": 6, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 8 ] ] - }, - { - "id": "cwd-63", - "copy-from": "rifle_semi", - "type": "GUN", - "color": "brown", - "name": { "str_sp": "CWD-63" }, - "description": "The Clearwater Arms version of the famous SVD-63 Dragunov. This one was rechambered for the .308 round.", - "price": 170000, - "material": [ "steel", "wood" ], - "ammo": "308", - "weight": "4300 g", - "volume": "2750 ml", - "bashing": 12, - "to_hit": -1, - "dispersion": 75, - "durability": 9, - "valid_mod_locations": [ - [ "accessories", 4 ], - [ "barrel", 1 ], - [ "bore", 1 ], - [ "brass catcher", 1 ], - [ "grip", 1 ], - [ "magazine", 1 ], - [ "mechanism", 4 ], - [ "muzzle", 1 ], - [ "rail", 1 ], - [ "sights", 1 ], - [ "sling", 1 ], - [ "stock", 1 ], - [ "underbarrel", 1 ] - ], - "magazines": [ [ "308", [ "cwd-63mag", "cwd-63bigmag" ] ], [ "223", [ "stanag10" ] ] ] - }, - { - "id": "wrist_dread", - "type": "GUN", - "reload_noise_volume": 10, - "symbol": "(", - "color": "dark_gray", - "name": { "str_sp": "Wrist DREAD" }, - "description": "The miniaturized version of the DREAD MkIX attached to the wrist of the operator. It fires .20 metal pellets at an incredible rate without any flash or noise. It is mainly a defensive weapon.", - "price": 160000, - "material": [ "steel", "plastic" ], - "skill": "smg", - "ammo": "wr_dread", - "weight": "1 kg", - "volume": "1 L", - "bashing": 8, - "to_hit": -1, - "dispersion": 150, - "sight_dispersion": 150, - "durability": 8, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 30 ] ], - "clip_size": 90, - "reload": 300, - "valid_mod_locations": [ [ "accessories", 2 ], [ "magazine", 2 ], [ "sling", 1 ], [ "underbarrel", 1 ] ], - "flags": [ "NON-FOULING" ] - } -] diff --git a/data/mods/EW_Pack/modinfo.json b/data/mods/EW_Pack/modinfo.json deleted file mode 100644 index c944bd558cccd..0000000000000 --- a/data/mods/EW_Pack/modinfo.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - { - "type": "MOD_INFO", - "ident": "ew_pack", - "name": "Icecoon's Arsenal", - "authors": [ "Icecoon", "community" ], - "description": "For those gun nuts. Don't have enough near-future firearms in your life? Add this mod today!", - "category": "items", - "dependencies": [ "dda" ], - "obsolete": true - } -] diff --git a/data/mods/EW_Pack/obsolete.json b/data/mods/EW_Pack/obsolete.json deleted file mode 100644 index bbda9e0f7a02a..0000000000000 --- a/data/mods/EW_Pack/obsolete.json +++ /dev/null @@ -1,53 +0,0 @@ -[ - { - "type": "GUNMOD", - "id": "retool_545", - "name": "5.45 caliber conversion kit", - "location": "bore", - "weight": "114 g", - "color": "green", - "price": 50000, - "description": "This kit is used to convert 6.54 rifle to the 5.45 caliber. The conversion results in slight reductions to recoil.", - "symbol": ":", - "material": [ "steel" ], - "volume": "500 ml", - "acceptable_ammo": [ "654" ], - "mod_targets": [ "rifle" ], - "bashing": 4, - "ammo_modifier": "545x39" - }, - { - "type": "GUNMOD", - "id": "retool_654", - "name": "6.54 caliber conversion kit", - "location": "bore", - "weight": "114 g", - "color": "green", - "price": 50000, - "description": "This kit is used to convert 5.45 rifle to the 6.54 caliber. The conversion results in increased recoil.", - "symbol": ":", - "material": [ "steel" ], - "volume": "500 ml", - "acceptable_ammo": [ "545x39" ], - "mod_targets": [ "rifle" ], - "bashing": 4, - "ammo_modifier": "654" - }, - { - "type": "GUNMOD", - "id": "retool_762", - "name": "7.62 caliber conversion kit", - "location": "bore", - "weight": "114 g", - "color": "green", - "price": 50000, - "description": "This kit is used to convert 6.54 rifle to the 7.62 caliber. The conversion results in increased recoil.", - "symbol": ":", - "material": [ "steel" ], - "volume": "500 ml", - "acceptable_ammo": [ "654" ], - "mod_targets": [ "rifle" ], - "bashing": 4, - "ammo_modifier": "762" - } -] diff --git a/data/mods/FictonalWeapons/fic_item_groups.json b/data/mods/FictonalWeapons/fic_item_groups.json deleted file mode 100644 index a301dbe75dd31..0000000000000 --- a/data/mods/FictonalWeapons/fic_item_groups.json +++ /dev/null @@ -1,57 +0,0 @@ -[ - { - "type": "item_group", - "id": "rare", - "items": [ [ "ficrico", 3 ], [ "gunsword", 3 ], [ "gunknife", 4 ], [ "50pistol", 2 ], [ "m1911ds", 2 ] ] - }, - { - "type": "item_group", - "id": "mags_pistol_rare", - "items": [ [ "454_speedloader6", 5 ], [ "454_speedloader8", 5 ] ] - }, - { - "type": "item_group", - "id": "mags_smg_rare", - "items": [ [ "e1776mag", 10 ] ] - }, - { - "type": "item_group", - "id": "guns_pistol_rare", - "items": [ [ "boomlighter", 2 ], [ "ficrico", 2 ], [ "gunsword", 2 ], [ "gunknife", 2 ], [ "50pistol", 2 ], [ "m1911ds", 2 ] ] - }, - { - "type": "item_group", - "id": "guns_rifle_rare", - "items": [ [ "arccan", 5 ] ] - }, - { - "type": "item_group", - "id": "guns_smg_rare", - "items": [ [ "e1776", 2 ], [ "hk_mp5eod", 2 ], [ "light_carb", 4 ] ] - }, - { - "type": "item_group", - "id": "cop_armory", - "items": [ [ "arccan", 5 ], [ "light_carb", 5 ] ] - }, - { - "type": "item_group", - "id": "prison_weapons", - "items": [ [ "light_carb", 5 ] ] - }, - { - "type": "item_group", - "id": "cop_weapons", - "items": [ [ "arccan", 5 ], [ "light_carb", 5 ] ] - }, - { - "type": "item_group", - "id": "military", - "items": [ [ "emas", 5 ], [ "m1911ds", 3 ] ] - }, - { - "type": "item_group", - "id": "gunmod_rare", - "items": [ [ "emas", 5 ], [ "retool_flaregun", 7 ] ] - } -] diff --git a/data/mods/FictonalWeapons/fic_mods.json b/data/mods/FictonalWeapons/fic_mods.json deleted file mode 100644 index 5c3312217625d..0000000000000 --- a/data/mods/FictonalWeapons/fic_mods.json +++ /dev/null @@ -1,59 +0,0 @@ -[ - { - "id": "retool_flaregun", - "type": "GUNMOD", - "symbol": ":", - "color": "green", - "name": "Flaregun conversion kit", - "description": "Replacing several key parts flaregun to convert it to a .40 firearm. The conversion results in reduced accuracy and increased recoil.", - "location": "accessories", - "price": 48000, - "material": "steel", - "weight": "226 g", - "volume": "250 ml", - "bashing": 3, - "to_hit": -1, - "dispersion_modifier": 30, - "ammo_modifier": "40", - "min_skills": [ [ "gun", 2 ] ], - "mod_targets": [ "pistol" ], - "acceptable_ammo": [ "signal_flare" ] - }, - { - "id": "boom_flamer", - "type": "GUNMOD", - "name": "integral flamethrower", - "description": "This genuine Herostratus flamethrower is ideal for light brush clearing and self-defense.", - "weight": "1500 g", - "volume": "750 ml", - "price": 100000, - "material": [ "steel", "ceramic" ], - "symbol": ":", - "color": "light_gray", - "location": "underbarrel", - "mod_targets": [ "pistol", "smg" ], - "gun_data": { "ammo": "flammable", "skill": "launcher", "dispersion": 320, "durability": 10, "clip_size": 300 }, - "flags": [ "FIRE_50" ], - "dispersion_modifier": 25, - "min_skills": [ [ "weapon", 2 ], [ "launcher", 2 ] ] - }, - { - "type": "GUNMOD", - "id": "emas", - "name": "E.M.A.S.", - "dispersion_modifier": 45, - "damage_modifier": 4, - "description": "ElectroMagnetic Acceleration System is an array of electromagnets attached to the front of the barrel, accelerating any projectile fired to even higher velocities, increasing damage, recoil and reducing accuracy. It does however drain UPS charges when firing and due to extensive modifications the gun can no longer operate without a UPS.", - "location": "barrel", - "weight": "450 g", - "color": "light_gray", - "symbol": ":", - "material": [ "steel" ], - "mod_targets": [ "smg", "rifle", "shotgun", "pistol" ], - "volume": "500 ml", - "bashing": 5, - "handling_modifier": -5, - "price": 20000, - "min_skills": [ [ "gun", 5 ] ] - } -] diff --git a/data/mods/FictonalWeapons/fic_recipes.json b/data/mods/FictonalWeapons/fic_recipes.json deleted file mode 100644 index dc0edf4be95ad..0000000000000 --- a/data/mods/FictonalWeapons/fic_recipes.json +++ /dev/null @@ -1,19 +0,0 @@ -[ - { - "result": "m1911ds", - "type": "recipe", - "category": "CC_WEAPON", - "subcategory": "CSC_WEAPON_RANGED", - "skill_used": "fabrication", - "difficulty": 5, - "skills_required": [ "gun", 4 ], - "time": 12000, - "autolearn": true, - "tools": [ - [ [ "mold_plastic", -1 ] ], - [ [ "welder", 70 ], [ "welder_crude", 100 ], [ "soldering_iron", 100 ], [ "toolset", 100 ] ] - ], - "qualities": [ { "id": "SAW_M_FINE", "level": 1 }, { "id": "SCREW_FINE", "level": 1 } ], - "components": [ [ [ "m1911", 1 ] ], [ [ "gun_crossbow", 1 ] ], [ [ "plastic_chunk", 4 ] ], [ [ "steel_chunk", 2 ], [ "scrap", 6 ] ] ] - } -] diff --git a/data/mods/FictonalWeapons/fic_weapons.json b/data/mods/FictonalWeapons/fic_weapons.json deleted file mode 100644 index 1530b76c1d173..0000000000000 --- a/data/mods/FictonalWeapons/fic_weapons.json +++ /dev/null @@ -1,300 +0,0 @@ -[ - { - "id": "ficrico", - "copy-from": "pistol_revolver", - "type": "GUN", - "name": "JHEC M128", - "description": "The Johnson Heavy Equipment Co. M128 autorevolver; all others fail to measure up. Johnson Heavy Equipment Co. is a subsidiary of D&B Minneapolis.", - "weight": "1500 g", - "volume": "750 ml", - "price": 250000, - "to_hit": -1, - "bashing": 10, - "material": [ "steel", "plastic" ], - "color": "dark_gray", - "ammo": "454", - "ranged_damage": 3, - "dispersion": 80, - "durability": 9, - "clip_size": 8, - "reload": 80, - "magazines": [ [ "454", [ "454_speedloader8" ] ] ], - "built_in_mods": [ "m320_mod" ] - }, - { - "id": "boomlighter", - "copy-from": "pistol_revolver", - "type": "GUN", - "color": "dark_gray", - "name": { "str": "Boomlighter 454" }, - "description": "Handmade by master gunsmiths at D&B Minneapolis, this deadly accurate and powerful pistol packs a punch with precision, power and flair. Comes with a one of a kind integrated flamethrower.", - "price": 250000, - "material": [ "steel", "plastic" ], - "flags": [ "RELOAD_ONE", "NEVER_JAMS", "RELOAD_EJECT" ], - "skill": "pistol", - "ammo": "454", - "weight": "1500 g", - "volume": "500 ml", - "bashing": 10, - "to_hit": -1, - "ranged_damage": 3, - "dispersion": 180, - "durability": 9, - "clip_size": 6, - "reload": 80, - "magazines": [ [ "454", [ "454_speedloader6" ] ] ], - "built_in_mods": [ "boom_flamer" ], - "valid_mod_locations": [ - [ "accessories", 4 ], - [ "barrel", 1 ], - [ "bore", 1 ], - [ "grip", 1 ], - [ "mechanism", 4 ], - [ "muzzle", 1 ], - [ "rail", 1 ], - [ "sights", 1 ], - [ "stock", 1 ] - ] - }, - { - "id": "gunsword", - "type": "GUN", - "reload_noise_volume": 10, - "symbol": "I", - "color": "light_gray", - "name": { "str": "gunsword" }, - "description": "A long sharp blade, with two powerful .500 S&W Magnum chambers in the hilt. While chambering big rounds, the barrels are so short it slightly reduces outgoing damage.", - "price": 150000, - "material": [ "steel", "plastic" ], - "flags": [ "RELOAD_ONE", "NEVER_JAMS", "RELOAD_EJECT", "SHEATH_SWORD", "DURABLE_MELEE", "NON-FOULING" ], - "skill": "pistol", - "ammo": "500", - "weight": "1800 g", - "volume": "2250 ml", - "bashing": 2, - "cutting": 22, - "to_hit": 3, - "ranged_damage": -2, - "dispersion": 180, - "durability": 10, - "clip_size": 2, - "reload": 80, - "valid_mod_locations": [ [ "barrel", 1 ], [ "bore", 1 ], [ "grip", 1 ], [ "mechanism", 2 ], [ "muzzle", 1 ] ], - "techniques": [ "WBLOCK_2" ] - }, - { - "id": "gunknife", - "type": "GUN", - "reload_noise_volume": 10, - "symbol": "i", - "color": "light_gray", - "name": { "str": "gunknife", "str_pl": "gunknives" }, - "description": "A short but sharp blade, with two powerful .500 S&W Magnum chambers in the grip. While chambering big rounds, the barrels are so short it slightly reduces outgoing damage.", - "price": 70000, - "material": [ "steel", "plastic" ], - "flags": [ "RELOAD_ONE", "NEVER_JAMS", "RELOAD_EJECT", "SHEATH_KNIFE", "STAB", "DURABLE_MELEE", "NON-FOULING" ], - "skill": "pistol", - "ammo": "500", - "weight": "700 g", - "volume": "500 ml", - "bashing": 2, - "cutting": 14, - "to_hit": 1, - "ranged_damage": -2, - "dispersion": 180, - "durability": 10, - "clip_size": 2, - "reload": 80, - "loudness": 50, - "valid_mod_locations": [ [ "barrel", 1 ], [ "bore", 1 ], [ "grip", 1 ], [ "mechanism", 2 ], [ "muzzle", 1 ] ], - "techniques": [ "WBLOCK_1" ], - "qualities": [ [ "CUT", 1 ], [ "BUTCHER", 14 ] ] - }, - { - "id": "50pistol", - "type": "GUN", - "reload_noise_volume": 10, - "symbol": "[", - "color": "dark_gray", - "name": { "str": "FiveO handcannon" }, - "description": "Someone crazy thought that the .50 BMG belonged in a pistol. This massive piece of steel proves otherwise. The sheer bulk however does make it quite adept at smashing face.", - "price": 60000, - "material": [ "steel", "plastic" ], - "flags": [ "NEVER_JAMS", "RELOAD_EJECT" ], - "skill": "pistol", - "ammo": "50", - "weight": "3800 g", - "volume": "2 L", - "bashing": 11, - "to_hit": -4, - "ranged_damage": -4, - "dispersion": 700, - "durability": 4, - "clip_size": 1, - "reload": 200, - "loudness": 200, - "valid_mod_locations": [ - [ "accessories", 4 ], - [ "barrel", 1 ], - [ "bore", 1 ], - [ "grip", 1 ], - [ "mechanism", 4 ], - [ "muzzle", 1 ], - [ "rail", 1 ], - [ "sights", 1 ], - [ "stock", 1 ] - ] - }, - { - "id": "hk_mp5eod", - "copy-from": "smg_base", - "type": "GUN", - "color": "dark_gray", - "name": "M919", - "description": "Manufactured by Sarah and Suhl machine company of Portland, Maine, the M919 submachine gun is the most accurate 9x19mm submachine gun on the market. Intended for police use, it is fitted with an integral grenade launcher.", - "weight": "3100 g", - "volume": "1250 ml", - "price": 430000, - "to_hit": -1, - "bashing": 10, - "material": [ "steel", "plastic" ], - "ammo": "9mm", - "ranged_damage": 1, - "dispersion": 130, - "durability": 8, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ], [ "AUTO", "auto", 8 ] ], - "built_in_mods": [ "m320_mod" ], - "magazines": [ - [ "9mm", [ "mp5mag", "mp5bigmag" ] ], - [ "22", [ "ruger1022bigmag", "ruger1022mag" ] ], - [ "45", [ "ump45mag" ] ], - [ "46", [ "hk46mag", "hk46bigmag" ] ], - [ "57", [ "fn57mag" ] ] - ] - }, - { - "id": "e1776", - "copy-from": "smg_base", - "type": "GUN", - "name": { "str_sp": "Eagle 1776" }, - "description": "You see before you a marvel of American engineering: a powerful .44 Magnum submachine gun, made from fine parts assembled in America, including an integral grenade launcher. Eagle 1776: From the arsenal of freedom!", - "price": 580000, - "material": [ "steel", "plastic" ], - "skill": "smg", - "ammo": "44", - "weight": "3400 g", - "volume": "1250 ml", - "bashing": 10, - "to_hit": -2, - "ranged_damage": 1, - "dispersion": 220, - "durability": 7, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ], [ "AUTO", "auto", 8 ] ], - "built_in_mods": [ "m320_mod" ], - "valid_mod_locations": [ - [ "accessories", 3 ], - [ "barrel", 1 ], - [ "bore", 1 ], - [ "brass catcher", 1 ], - [ "grip", 1 ], - [ "magazine", 1 ], - [ "mechanism", 4 ], - [ "muzzle", 1 ], - [ "rail", 1 ], - [ "sights", 1 ], - [ "sling", 1 ], - [ "stock", 1 ], - [ "underbarrel", 1 ] - ], - "magazines": [ [ "44", [ "e1776mag", "deaglemag" ] ], [ "9mm", [ "mp5mag", "mp5bigmag" ] ], [ "45", [ "ump45mag" ] ] ] - }, - { - "id": "light_carb", - "type": "GUN", - "reload_noise_volume": 10, - "symbol": "(", - "color": "dark_gray", - "name": { "str": "L.T. carbine" }, - "description": "The Lightning Trail carbine was developed for the riot police to quickly blanket an area with lightning clouds. While damaging, it is less lethal than live ammunition.", - "price": 250000, - "material": [ "steel", "plastic" ], - "flags": [ "NEVER_JAMS", "NO_UNLOAD", "NON-FOULING" ], - "ammo_effects": [ "LIGHTNING", "BEANBAG" ], - "ups_charges": 6, - "skill": "smg", - "weight": "2100 g", - "volume": "1500 ml", - "bashing": 7, - "ranged_damage": 10, - "range": 25, - "dispersion": 100, - "durability": 6, - "reload": 0, - "loudness": 75, - "valid_mod_locations": [ - [ "accessories", 4 ], - [ "grip", 1 ], - [ "rail", 1 ], - [ "sights", 1 ], - [ "sling", 1 ], - [ "stock", 1 ], - [ "underbarrel", 1 ] - ] - }, - { - "id": "arccan", - "type": "GUN", - "reload_noise_volume": 10, - "symbol": "(", - "color": "dark_gray", - "name": { "str": "arc cannon" }, - "description": "The arc cannon fires bolts of lightning arcing between targets in close proximity to each other. Originally manufactured to fry insects, now it’s been turned up to fry zombies.", - "price": 250000, - "material": [ "steel", "plastic" ], - "flags": [ "NEVER_JAMS", "NO_UNLOAD", "NON-FOULING" ], - "ammo_effects": [ "LIGHTNING", "BOUNCE", "BEANBAG" ], - "ups_charges": 120, - "skill": "rifle", - "weight": "2700 g", - "volume": "2 L", - "bashing": 7, - "ranged_damage": 16, - "range": 15, - "dispersion": 250, - "durability": 7, - "reload": 0, - "loudness": 100, - "valid_mod_locations": [ [ "accessories", 4 ], [ "grip", 1 ], [ "rail", 1 ], [ "sights", 1 ], [ "sling", 1 ], [ "stock", 1 ] ] - }, - { - "id": "m1911ds", - "copy-from": "pistol_base", - "type": "GUN", - "name": "M1911 DS", - "description": "The M1911 Darkstalker is a very modified M1911, it has a fully integrated crossbow and added rails. Professional looking with a ebony black finish, laced with lime green details. Now they will know why they fear the night. Bat hood sold separately.", - "weight": "1135 g", - "volume": "750 ml", - "price": 150000, - "bashing": 7, - "to_hit": -2, - "material": [ "steel", "plastic" ], - "symbol": "[", - "color": "light_gray", - "ammo": "45", - "dispersion": 255, - "durability": 6, - "valid_mod_locations": [ - [ "accessories", 2 ], - [ "barrel", 1 ], - [ "bore", 1 ], - [ "brass catcher", 1 ], - [ "grip", 1 ], - [ "mechanism", 4 ], - [ "muzzle", 1 ], - [ "sights", 1 ], - [ "underbarrel", 1 ] - ], - "built_in_mods": [ "gun_crossbow" ], - "magazines": [ [ "45", [ "m1911mag", "m1911bigmag" ] ], [ "9mm", [ "m9mag", "m9bigmag" ] ] ] - } -] diff --git a/data/mods/FictonalWeapons/ficmags.json b/data/mods/FictonalWeapons/ficmags.json deleted file mode 100644 index 8d589b3ab0390..0000000000000 --- a/data/mods/FictonalWeapons/ficmags.json +++ /dev/null @@ -1,48 +0,0 @@ -[ - { - "id": "454_speedloader6", - "type": "MAGAZINE", - "name": ".454 6-round speedloader", - "description": "This speedloader can hold 6 rounds of .454 and quickly reload a compatible revolver.", - "weight": "116 g", - "volume": "250 ml", - "price": 2400, - "material": "steel", - "symbol": "#", - "color": "light_gray", - "ammo_type": "454", - "capacity": 6, - "flags": [ "SPEEDLOADER" ] - }, - { - "id": "454_speedloader8", - "type": "MAGAZINE", - "name": ".454 8-round speedloader", - "description": "This speedloader can hold 8 rounds of .454 and quickly reload a compatible revolver.", - "weight": "132 g", - "volume": "250 ml", - "price": 2800, - "material": "steel", - "symbol": "#", - "color": "light_gray", - "ammo_type": "454", - "capacity": 8, - "flags": [ "SPEEDLOADER" ] - }, - { - "id": "e1776mag", - "type": "MAGAZINE", - "name": "Eagle 1776 magazine", - "description": "An american-made box magazine, designed to deliver 24 .44 Magnum cartridges to the Eagle 1776.", - "weight": "195 g", - "volume": "500 ml", - "price": 1776, - "material": "steel", - "symbol": "#", - "color": "light_gray", - "ammo_type": "44", - "capacity": 24, - "reliability": 7, - "flags": [ "MAG_COMPACT" ] - } -] diff --git a/data/mods/FictonalWeapons/modinfo.json b/data/mods/FictonalWeapons/modinfo.json deleted file mode 100644 index 91a4ba0873e52..0000000000000 --- a/data/mods/FictonalWeapons/modinfo.json +++ /dev/null @@ -1,13 +0,0 @@ -[ - { - "type": "MOD_INFO", - "ident": "FIC_Weapons", - "name": "DeadLeaves' Fictional Guns", - "authors": [ "DeadLeaves", "BorkBorkGoesTheCode" ], - "maintainers": [ "BorkBorkGoesTheCode" ], - "description": "Adds a bunch of rare, fictional weapons.", - "category": "items", - "dependencies": [ "dda" ], - "obsolete": true - } -] diff --git a/data/mods/FictonalWeapons/snippets.json b/data/mods/FictonalWeapons/snippets.json deleted file mode 100644 index 8fceccef41cb8..0000000000000 --- a/data/mods/FictonalWeapons/snippets.json +++ /dev/null @@ -1,19 +0,0 @@ -[ - { - "type": "snippet", - "category": "note", - "text": [ - { "id": "note_fictional_weapons_1", "text": "\"Gun. Sword. Gunsword. Screw bayonets, this is way more awesome.\"" }, - { - "id": "note_fictional_weapons_2", - "text": "\"Not sure if wielding this thing makes me feel like a bodybuilder or a theoretical physicist. Both?\"" - }, - { "id": "note_fictional_weapons_3", "text": "\"This ain't your grandaddy's .50 cal hand cannon!\"" }, - { "id": "note_fictional_weapons_4", "text": "\"Nice pistol! Which trigger fires the flamer?\"" }, - { - "id": "note_fictional_weapons_5", - "text": "\"Why in the name of fuck did I slap a crossbow on this handgun.\"" - } - ] - } -] diff --git a/data/mods/Growable_pots/items.json b/data/mods/Growable_pots/items.json deleted file mode 100644 index 1bb5653736172..0000000000000 --- a/data/mods/Growable_pots/items.json +++ /dev/null @@ -1,305 +0,0 @@ -[ - { - "type": "GENERIC", - "id": "gp_pot", - "symbol": ")", - "color": "brown", - "name": "garden pot", - "description": "A special pot for growing plants, maintaining them at comfortable conditions for maximum yield. It can be crafted with various seeds to plant them.", - "price": 600, - "material": "clay", - "weight": "280 g", - "volume": "2 L", - "pocket_data": [ { "max_contains_volume": "1250 ml", "max_contains_weight": "3 kg", "open_container": true } ], - "bashing": 1, - "cutting": 0, - "category": "tools", - "to_hit": 0 - }, - { - "type": "GENERIC", - "abstract": "gp_pot_growing", - "name": { "str": "garden pot (growing)", "str_pl": "garden pots (growing)" }, - "description": "A garden pot growing some tasty, unnameable plants. You shouldn't see this item.", - "weight": "480 g", - "symbol": ")", - "color": "brown", - "price": 1300, - "material": [ "clay", "veggy" ], - "volume": "2500 ml", - "bashing": 1, - "category": "tools" - }, - { - "type": "GENERIC", - "abstract": "gp_pot_grown", - "name": { "str": "garden pot (grown)", "str_pl": "garden pots (grown)" }, - "description": "A garden pot with some ripe, unnameable plants. You shouldn't see this item.", - "copy-from": "gp_pot_growing", - "use_action": "DISASSEMBLE" - }, - { - "type": "GENERIC", - "id": "gp_tomato", - "name": { "str": "garden pot (growing tomato)", "str_pl": "garden pots (growing tomatoes)" }, - "description": "This is a garden pot growing tomatoes. Once ripe, it can be activated to prepare them for harvest.", - "copy-from": "gp_pot_growing", - "use_action": { - "type": "delayed_transform", - "transform_age": 432000, - "not_ready_msg": "It isn't done growing yet.", - "msg": "The tomatoes are ready to harvest!", - "moves": 0, - "target": "gp_tomato_ready" - } - }, - { - "type": "GENERIC", - "id": "gp_tomato_ready", - "name": { "str": "garden pot (ripe tomato)", "str_pl": "garden pots (ripe tomatoes)" }, - "description": "This is a garden pot with a ripe tomato plant. Disassemble to retrieve the tasty 'matos.", - "copy-from": "gp_pot_grown" - }, - { - "type": "GENERIC", - "id": "gp_wheat", - "name": { "str": "garden pot (growing wheat)", "str_pl": "garden pots (growing wheat)" }, - "description": "This is a garden pot growing wheat. Once ripe, it can be activated to prepare it for harvest.", - "copy-from": "gp_pot_growing", - "use_action": { - "type": "delayed_transform", - "transform_age": 432000, - "not_ready_msg": "It isn't done growing yet.", - "msg": "The wheat is ready to harvest!", - "moves": 0, - "target": "gp_wheat_ready" - } - }, - { - "type": "GENERIC", - "id": "gp_wheat_ready", - "name": { "str": "garden pot (ripe wheat)", "str_pl": "garden pots (ripe wheat)" }, - "description": "This is a garden pot with wheat ready to harvest. Disassemble to retrieve it.", - "copy-from": "gp_pot_grown" - }, - { - "type": "GENERIC", - "id": "gp_hops", - "name": { "str": "garden pot (growing hops)", "str_pl": "garden pots (growing hops)" }, - "description": "This is a garden pot growing hops. Once ripe, it can be activated to prepare it for harvest.", - "copy-from": "gp_pot_growing", - "use_action": { - "type": "delayed_transform", - "transform_age": 432000, - "not_ready_msg": "It isn't done growing yet.", - "msg": "The hops are ready to harvest!", - "moves": 0, - "target": "gp_hops_ready" - } - }, - { - "type": "GENERIC", - "id": "gp_hops_ready", - "name": { "str": "garden pot (ripe hops)", "str_pl": "garden pots (ripe hops)" }, - "description": "This is a garden pot containing blooming hops flowers. Disassemble to harvest them.", - "copy-from": "gp_pot_grown" - }, - { - "type": "GENERIC", - "id": "gp_buckwheat", - "name": { "str": "garden pot (growing buckwheat)", "str_pl": "garden pots (growing buckwheat)" }, - "description": "This is a garden pot growing buckwheat. Once ripe, it can be activated to prepare it for harvest.", - "copy-from": "gp_pot_growing", - "use_action": { - "type": "delayed_transform", - "transform_age": 432000, - "not_ready_msg": "It isn't done growing yet.", - "msg": "The buckwheat is ready to harvest!", - "moves": 0, - "target": "gp_buckwheat_ready" - } - }, - { - "type": "GENERIC", - "id": "gp_buckwheat_ready", - "name": { "str": "garden pot (ripe buckwheat)", "str_pl": "garden pots (ripe buckwheat)" }, - "description": "This is a garden pot containing ripe buckwheat stalks. Disassemble to harvest them.", - "copy-from": "gp_pot_grown" - }, - { - "type": "GENERIC", - "id": "gp_broccoli", - "name": { "str": "garden pot (growing broccoli)", "str_pl": "garden pots (growing broccoli)" }, - "description": "This is a garden pot growing broccoli. Once ripe, it can be activated to prepare it for harvest.", - "copy-from": "gp_pot_growing", - "use_action": { - "type": "delayed_transform", - "transform_age": 432000, - "not_ready_msg": "It isn't done growing yet.", - "msg": "The broccoli is ready to harvest!", - "moves": 0, - "target": "gp_broccoli_ready" - } - }, - { - "type": "GENERIC", - "id": "gp_broccoli_ready", - "name": { "str": "garden pot (ripe broccoli)", "str_pl": "garden pots (ripe broccoli)" }, - "description": "This is a garden pot containing some fully-grown broccoli. Disassemble to harvest it.", - "copy-from": "gp_pot_grown" - }, - { - "type": "GENERIC", - "id": "gp_oats", - "name": { "str": "garden pot (growing oats)", "str_pl": "garden pots (growing oats)" }, - "description": "This is a garden pot growing oats. Once ripe, it can be activated to prepare it for harvest.", - "copy-from": "gp_pot_growing", - "use_action": { - "type": "delayed_transform", - "transform_age": 432000, - "not_ready_msg": "It isn't done growing yet.", - "msg": "The oats are ready to harvest!", - "moves": 0, - "target": "gp_oats_ready" - } - }, - { - "type": "GENERIC", - "id": "gp_oats_ready", - "name": { "str": "garden pot (ripe oats)", "str_pl": "garden pots (ripe oats)" }, - "description": "This is a garden pot containing some golden, fully-grown oats. Disassemble to harvest them.", - "copy-from": "gp_pot_grown" - }, - { - "type": "GENERIC", - "id": "gp_barley", - "name": { "str": "garden pot (growing barley)", "str_pl": "garden pots (growing barley)" }, - "description": "This is a garden pot growing barley. Once ripe, it can be activated to prepare it for harvest.", - "copy-from": "gp_pot_growing", - "use_action": { - "type": "delayed_transform", - "transform_age": 432000, - "not_ready_msg": "It isn't done growing yet.", - "msg": "Barley is ready to harvest!", - "moves": 0, - "target": "gp_barley_ready" - } - }, - { - "type": "GENERIC", - "id": "gp_barley_ready", - "name": { "str": "garden pot (ripe barley)", "str_pl": "garden pots (ripe barley)" }, - "description": "This is a garden pot containing some ready-to-harvest barley. Disassemble to harvest it.", - "copy-from": "gp_pot_grown" - }, - { - "type": "GENERIC", - "id": "gp_carrot", - "name": { "str": "garden pot (growing carrot)", "str_pl": "garden pots (growing carrots)" }, - "description": "This is a garden pot growing carrots. Once ripe, it can be activated to prepare it for harvest.", - "copy-from": "gp_pot_growing", - "use_action": { - "type": "delayed_transform", - "transform_age": 432000, - "not_ready_msg": "It isn't done growing yet.", - "msg": "The carrots are ready to harvest!", - "moves": 0, - "target": "gp_carrot_ready" - } - }, - { - "type": "GENERIC", - "id": "gp_carrot_ready", - "name": { "str": "garden pot (ripe carrot)", "str_pl": "garden pots (ripe carrot)" }, - "description": "This is a garden pot containing some ripe carrots. Disassemble to harvest them. Store away from rabbits.", - "copy-from": "gp_pot_grown" - }, - { - "type": "GENERIC", - "id": "gp_cotton_boll", - "name": { "str": "garden pot (growing cotton)", "str_pl": "garden pots (growing cotton)" }, - "description": "This is a garden pot growing cotton. Once ripe, it can be activated to prepare it for harvest.", - "copy-from": "gp_pot_growing", - "use_action": { - "type": "delayed_transform", - "transform_age": 432000, - "not_ready_msg": "It isn't done growing yet.", - "msg": "The cotton is ready to harvest!", - "moves": 0, - "target": "gp_cotton_boll_ready" - } - }, - { - "type": "GENERIC", - "id": "gp_cotton_boll_ready", - "name": { "str": "garden pot (ripe cotton)", "str_pl": "garden pots (ripe cotton)" }, - "description": "This is a garden pot containing white, fluffy cotton bolls ready for the loom. Disassemble to pluck them.", - "copy-from": "gp_pot_grown" - }, - { - "type": "GENERIC", - "id": "gp_cabbage", - "name": { "str": "garden pot (growing cabbage)", "str_pl": "garden pots (growing cabbage)" }, - "description": "This is a garden pot growing cabbage. Once ripe, it can be activated to prepare it for harvest.", - "copy-from": "gp_pot_growing", - "use_action": { - "type": "delayed_transform", - "transform_age": 432000, - "not_ready_msg": "It isn't done growing yet.", - "msg": "The cabbages are ready to harvest!", - "moves": 0, - "target": "gp_cabbage_ready" - } - }, - { - "type": "GENERIC", - "id": "gp_cabbage_ready", - "name": { "str": "garden pot (ripe cabbage)", "str_pl": "garden pots (ripe cabbage)" }, - "description": "This is a garden pot containing a big cabbage leaf. Disassemble to harvest it.", - "copy-from": "gp_pot_grown" - }, - { - "type": "GENERIC", - "id": "gp_cucumber", - "name": { "str": "garden pot (growing cucumber)", "str_pl": "garden pots (growing cucumber)" }, - "description": "This is a garden pot growing cucumber. Once ripe, it can be activated to prepare it for harvest.", - "copy-from": "gp_pot_growing", - "use_action": { - "type": "delayed_transform", - "transform_age": 432000, - "not_ready_msg": "It isn't done growing yet.", - "msg": "The cucumbers are ready to harvest!", - "moves": 0, - "target": "gp_cucumber_ready" - } - }, - { - "type": "GENERIC", - "id": "gp_cucumber_ready", - "name": { "str": "garden pot (ripe cucumber)", "str_pl": "garden pots (ripe cucumber)" }, - "description": "This is a garden pot containing ripe cucumbers. Disassemble to harvest them.", - "copy-from": "gp_pot_grown" - }, - { - "type": "GENERIC", - "id": "gp_garlic", - "name": { "str": "garden pot (growing garlic)", "str_pl": "garden pots (growing garlic)" }, - "description": "This is a garden pot growing garlic bulbs. Once ripe, it can be activated to prepare it for harvest.", - "copy-from": "gp_pot_growing", - "use_action": { - "type": "delayed_transform", - "transform_age": 432000, - "not_ready_msg": "It isn't done growing yet.", - "msg": "The garlic is ready to harvest!", - "moves": 0, - "target": "gp_garlic_ready" - } - }, - { - "type": "GENERIC", - "id": "gp_garlic_ready", - "name": { "str": "garden pot (ripe garlic)", "str_pl": "garden pots (ripe garlic)" }, - "description": "This is a garden pot containing pungent garlic bulbs. Disassemble to harvest them, or wave it at vampires to scare them.", - "copy-from": "gp_pot_grown" - } -] diff --git a/data/mods/Growable_pots/modinfo.json b/data/mods/Growable_pots/modinfo.json deleted file mode 100644 index 7d578ec204758..0000000000000 --- a/data/mods/Growable_pots/modinfo.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - { - "type": "MOD_INFO", - "ident": "growable-pots", - "name": "Garden Pots", - "authors": [ "Honcharuk" ], - "description": "Allows you to grow seeds in craftable garden pots that can be carried around as items. Perfect for the nomadic botanist.", - "category": "items", - "dependencies": [ "dda" ], - "obsolete": true - } -] diff --git a/data/mods/Growable_pots/recipes.json b/data/mods/Growable_pots/recipes.json deleted file mode 100644 index 88319c3c55258..0000000000000 --- a/data/mods/Growable_pots/recipes.json +++ /dev/null @@ -1,231 +0,0 @@ -[ - { - "type": "recipe", - "result": "gp_pot", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_TOOLS", - "skill_used": "fabrication", - "skills_required": [ "survival", 2 ], - "difficulty": 2, - "time": 45000, - "autolearn": true, - "qualities": [ { "id": "DIG", "level": 1 } ], - "components": [ [ [ "clay_pot_flower", 1 ], [ "plastic_pot_flower", 1 ] ], [ [ "pointy_stick", 2 ] ] ] - }, - { - "type": "recipe", - "result": "gp_tomato", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_OTHER", - "skill_used": "survival", - "difficulty": 1, - "time": 500, - "autolearn": true, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "seed_tomato", 1 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ] - }, - { - "type": "uncraft", - "result": "gp_tomato_ready", - "skill_used": "survival", - "time": 500, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "tomato", 21 ] ] ] - }, - { - "type": "recipe", - "result": "gp_wheat", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_OTHER", - "skill_used": "survival", - "difficulty": 1, - "time": 500, - "autolearn": true, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "seed_wheat", 1 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ] - }, - { - "type": "uncraft", - "result": "gp_wheat_ready", - "skill_used": "survival", - "time": 500, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "wheat", 21 ] ] ] - }, - { - "type": "recipe", - "result": "gp_hops", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_OTHER", - "skill_used": "survival", - "difficulty": 1, - "time": 500, - "autolearn": true, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "seed_hops", 1 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ] - }, - { - "type": "uncraft", - "result": "gp_hops_ready", - "skill_used": "survival", - "time": 500, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "hops", 21 ] ] ] - }, - { - "type": "recipe", - "result": "gp_buckwheat", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_OTHER", - "skill_used": "survival", - "difficulty": 1, - "time": 500, - "autolearn": true, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "seed_buckwheat", 1 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ] - }, - { - "type": "uncraft", - "result": "gp_buckwheat_ready", - "skill_used": "survival", - "time": 500, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "buckwheat", 21 ] ] ] - }, - { - "type": "recipe", - "result": "gp_broccoli", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_OTHER", - "skill_used": "survival", - "difficulty": 1, - "time": 500, - "autolearn": true, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "seed_broccoli", 1 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ] - }, - { - "type": "uncraft", - "result": "gp_broccoli_ready", - "skill_used": "survival", - "time": 500, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "broccoli", 21 ] ] ] - }, - { - "type": "recipe", - "result": "gp_oats", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_OTHER", - "skill_used": "survival", - "difficulty": 1, - "time": 500, - "autolearn": true, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "seed_oats", 1 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ] - }, - { - "type": "uncraft", - "result": "gp_oats_ready", - "skill_used": "survival", - "time": 500, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "oats", 21 ] ] ] - }, - { - "type": "recipe", - "result": "gp_barley", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_OTHER", - "skill_used": "survival", - "difficulty": 1, - "time": 500, - "autolearn": true, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "seed_barley", 1 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ] - }, - { - "type": "uncraft", - "result": "gp_barley_ready", - "skill_used": "survival", - "time": 500, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "barley", 21 ] ] ] - }, - { - "type": "recipe", - "result": "gp_carrot", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_OTHER", - "skill_used": "survival", - "difficulty": 1, - "time": 500, - "autolearn": true, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "seed_carrot", 1 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ] - }, - { - "type": "uncraft", - "result": "gp_carrot_ready", - "skill_used": "survival", - "time": 500, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "seed_carrot", 1 ] ], [ [ "carrot", 20 ] ] ] - }, - { - "type": "recipe", - "result": "gp_cotton_boll", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_OTHER", - "skill_used": "survival", - "difficulty": 1, - "time": 500, - "autolearn": true, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "seed_cotton_boll", 1 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ] - }, - { - "type": "uncraft", - "result": "gp_cotton_boll_ready", - "skill_used": "survival", - "time": 500, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "seed_cotton_boll", 1 ] ], [ [ "cotton_boll", 20 ] ] ] - }, - { - "type": "recipe", - "result": "gp_cabbage", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_OTHER", - "skill_used": "survival", - "difficulty": 1, - "time": 500, - "autolearn": true, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "seed_cabbage", 1 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ] - }, - { - "type": "uncraft", - "result": "gp_cabbage_ready", - "skill_used": "survival", - "time": 500, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "seed_cabbage", 1 ] ], [ [ "cabbage", 20 ] ] ] - }, - { - "type": "recipe", - "result": "gp_cucumber", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_OTHER", - "skill_used": "survival", - "difficulty": 1, - "time": 500, - "autolearn": true, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "seed_cucumber", 1 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ] - }, - { - "type": "uncraft", - "result": "gp_cucumber_ready", - "skill_used": "survival", - "time": 500, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "cucumber", 20 ] ] ] - }, - { - "type": "recipe", - "result": "gp_garlic", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_OTHER", - "skill_used": "survival", - "difficulty": 1, - "time": 500, - "autolearn": true, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "seed_garlic", 1 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ] - }, - { - "type": "uncraft", - "result": "gp_garlic_ready", - "skill_used": "survival", - "time": 500, - "components": [ [ [ "gp_pot", 1 ] ], [ [ "garlic", 20 ] ] ] - } -] diff --git a/data/mods/HeavyMining/modinfo.json b/data/mods/HeavyMining/modinfo.json deleted file mode 100644 index 92d491d03c948..0000000000000 --- a/data/mods/HeavyMining/modinfo.json +++ /dev/null @@ -1,13 +0,0 @@ -[ - { - "type": "MOD_INFO", - "ident": "Heavy miners", - "name": "Roadheader and other mining vehicles", - "authors": [ "Ckpyt" ], - "maintainers": [ "Ckpyt in the forest" ], - "description": "Adds a few mining vehicles, requires Tanks and Other Vehicles as it is no longer dependent on blazemod.", - "category": "vehicles", - "dependencies": [ "dda", "Tanks" ], - "obsolete": true - } -] diff --git a/data/mods/HeavyMining/parts.json b/data/mods/HeavyMining/parts.json deleted file mode 100644 index 36758c5c2d93a..0000000000000 --- a/data/mods/HeavyMining/parts.json +++ /dev/null @@ -1,86 +0,0 @@ -[ - { - "type": "GENERIC", - "id": "v_roadheader_item", - "symbol": "&", - "name": "roadheader", - "color": "dark_gray", - "description": "A large and heavy jagged metalhead with a lot of spikes for destroying mine walls.", - "weight": "6200000 g", - "material": "steel", - "category": "veh_parts", - "price": 9500, - "volume": "140000 ml" - }, - { - "type": "GENERIC", - "id": "v_balance_item", - "symbol": "&", - "name": "Balancer", - "color": "dark_gray", - "description": "A large and heavy metal bar for balancing a vehicle.", - "weight": "1000000 g", - "material": "steel", - "category": "veh_parts", - "price": 9500, - "volume": "140000 ml" - }, - { - "id": "balancer", - "type": "vehicle_part", - "name": "Balancer", - "item": "v_balance_item", - "location": "inside", - "symbol": "o", - "broken_symbol": "x", - "color": "white", - "broken_color": "light_gray", - "looks_like": "55gal_drum", - "damage_modifier": 100, - "durability": 300, - "description": "A large and heavy metal drum for balancing a vehicle.", - "folded_volume": 12, - "breaks_into": [ - { "item": "steel_lump", "count": [ 4, 26 ] }, - { "item": "steel_chunk", "count": [ 4, 15 ] }, - { "item": "scrap", "count": [ 4, 100 ] } - ], - "requirements": { - "install": { "skills": [ [ "mechanics", 8 ] ], "time": "60 m", "using": [ [ "welding_standard", 5 ] ] }, - "removal": { "skills": [ [ "mechanics", 6 ] ], "time": "30 m", "using": [ [ "vehicle_weld_removal", 1 ] ] }, - "repair": { "skills": [ [ "mechanics", 9 ] ], "time": "60 m", "using": [ [ "welding_standard", 5 ] ] } - }, - "flags": [ "PROTRUSION", "EXTRA_DRAG" ], - "damage_reduction": { "all": 132 } - }, - { - "id": "roadheader", - "type": "vehicle_part", - "name": "roadheader", - "item": "v_roadheader_item", - "location": "structure", - "symbol": "&", - "broken_symbol": "x", - "color": "light_gray", - "broken_color": "light_gray", - "looks_like": "crane_medium", - "damage_modifier": 100, - "durability": 300, - "description": "A large metal jagged metalhead, powered by the vehicle's engines. Use the vehicle controls to turn it on or off. When turned on, it will stop the vehicle unless it has a strong engine. When turned on, it will destroy walls near it.", - "folded_volume": 12, - "power": -70000, - "breaks_into": [ - { "item": "steel_lump", "count": [ 4, 26 ] }, - { "item": "steel_chunk", "count": [ 4, 15 ] }, - { "item": "scrap", "count": [ 4, 100 ] } - ], - "transform_terrain": { "pre_flags": [ "MINEABLE" ], "post_terrain": "don't used" }, - "requirements": { - "install": { "skills": [ [ "mechanics", 8 ] ], "time": "60 m", "using": [ [ "welding_standard", 5 ] ] }, - "removal": { "skills": [ [ "mechanics", 6 ] ], "time": "30 m", "using": [ [ "vehicle_weld_removal", 1 ] ] }, - "repair": { "skills": [ [ "mechanics", 9 ] ], "time": "60 m", "using": [ [ "welding_standard", 5 ] ] } - }, - "flags": [ "PROTRUSION", "EXTRA_DRAG", "ROADHEAD", "CRASH_TERRAIN_AROUND" ], - "damage_reduction": { "all": 132 } - } -] diff --git a/data/mods/HeavyMining/vehicle_groups.json b/data/mods/HeavyMining/vehicle_groups.json deleted file mode 100644 index a670d48a4c1a6..0000000000000 --- a/data/mods/HeavyMining/vehicle_groups.json +++ /dev/null @@ -1,17 +0,0 @@ -[ - { - "type": "vehicle_group", - "id": "industrial_vehicles", - "vehicles": [ [ "roadheader", 40 ] ] - }, - { - "type": "vehicle_group", - "id": "junkyard_vehicles", - "vehicles": [ [ "roadheader", 20 ] ] - }, - { - "type": "vehicle_group", - "id": "workshop_vehicles", - "vehicles": [ [ "roadheader", 10 ] ] - } -] diff --git a/data/mods/HeavyMining/vehicles.json b/data/mods/HeavyMining/vehicles.json deleted file mode 100644 index 21814cf18f1be..0000000000000 --- a/data/mods/HeavyMining/vehicles.json +++ /dev/null @@ -1,57 +0,0 @@ -[ - { - "id": "roadheader", - "type": "vehicle", - "name": "Roadheader", - "blueprint": [ - [ "o-o " ], - [ "|X--&" ], - [ "o-o " ] - ], - "parts": [ - { "x": 0, "y": 0, "part": "hdframe_vertical" }, - { "x": 0, "y": 0, "part": "diesel_engine_i6" }, - { "x": 0, "y": 0, "part": "alternator_truck" }, - { "x": 0, "y": 0, "part": "battery_car" }, - { "x": 0, "y": 0, "part": "reinforced_windshield" }, - { "x": 0, "y": -1, "part": "hdframe_nw" }, - { "x": 0, "y": -1, "part": "tread2" }, - { "x": 0, "y": -1, "part": "halfboard_nw" }, - { "x": 0, "y": -1, "part": "headlight_reinforced" }, - { "x": 0, "y": 1, "part": "hdframe_ne" }, - { "x": 0, "y": 1, "part": "tread2" }, - { "x": 0, "y": 1, "part": "halfboard_ne" }, - { "x": 0, "y": 1, "part": "headlight_reinforced" }, - { "x": -1, "y": 0, "part": "hdframe_cross" }, - { "x": -1, "y": 0, "part": "seat" }, - { "x": -1, "y": 0, "part": "seatbelt" }, - { "x": -1, "y": 0, "part": "floodlight" }, - { "x": -1, "y": 0, "part": "controls" }, - { "x": -1, "y": 0, "part": "dashboard" }, - { "x": -1, "y": 0, "part": "horn_big" }, - { "x": -1, "y": 0, "part": "roof" }, - { "x": -1, "y": 1, "part": "hdframe_vertical" }, - { "x": -1, "y": 1, "part": "door" }, - { "x": -1, "y": 1, "part": "tread2" }, - { "x": -1, "y": -1, "part": "hdframe_vertical" }, - { "x": -1, "y": -1, "part": "door" }, - { "x": -1, "y": -1, "part": "tread2" }, - { "x": -2, "y": 1, "part": "hdframe_se" }, - { "x": -2, "y": 1, "part": "balancer" }, - { "x": -2, "y": 1, "part": "tread2" }, - { "x": -2, "y": 1, "part": "board_se" }, - { "x": -2, "y": 0, "part": "hdframe_horizontal" }, - { "x": -2, "y": 0, "part": "hatch" }, - { "x": -2, "y": 0, "part": "muffler" }, - { "x": -2, "y": 0, "part": "balancer" }, - { "x": -2, "y": -1, "part": "hdframe_sw" }, - { "x": -2, "y": -1, "part": "tread2" }, - { "x": -2, "y": -1, "part": "board_sw" }, - { "x": -2, "y": -1, "part": "tank", "fuel": "diesel" }, - { "x": -2, "y": -1, "part": "balancer" }, - { "x": 1, "y": 0, "part": "hdframe_vertical" }, - { "x": 1, "y": 0, "part": "halfboard_horizontal" }, - { "x": 2, "y": 0, "part": "roadheader" } - ] - } -] diff --git a/data/mods/Hydroponics/construction.json b/data/mods/Hydroponics/construction.json deleted file mode 100644 index b441590ab4856..0000000000000 --- a/data/mods/Hydroponics/construction.json +++ /dev/null @@ -1,45 +0,0 @@ -[ - { - "type": "construction", - "id": "constr_hydroponics", - "description": "Build Hydroponics", - "category": "CONSTRUCT", - "required_skills": [ [ "fabrication", 4 ], [ "survival", 2 ], [ "electronics", 2 ] ], - "time": "3 h", - "qualities": [ [ { "id": "SAW_M", "level": 1 } ], [ { "id": "SCREW", "level": 1 } ], [ { "id": "WRENCH", "level": 2 } ] ], - "components": [ - [ [ "pipe", 6 ], [ "xlframe", 1 ] ], - [ [ "plastic_chunk", 10 ] ], - [ [ "metal_tank_little", 2 ] ], - [ [ "cu_pipe", 4 ] ], - [ [ "small_storage_battery", 1 ] ], - [ [ "plut_cell", 1 ] ], - [ [ "e_scrap", 2 ] ], - [ [ "lightstrip_inactive", 2 ] ], - [ [ "circuit", 1 ] ], - [ [ "fertilizer_commercial", 1 ] ], - [ [ "water", 100 ] ] - ], - "pre_special": "check_empty", - "post_terrain": "f_hydroponics" - }, - { - "type": "construction", - "id": "constr_hydro_heater", - "description": "Build Hydroponics Heater", - "category": "CONSTRUCT", - "required_skills": [ [ "fabrication", 4 ], [ "electronics", 3 ] ], - "time": "45 m", - "qualities": [ [ { "id": "SAW_M", "level": 1 } ], [ { "id": "SCREW", "level": 1 } ], [ { "id": "WRENCH", "level": 2 } ] ], - "components": [ - [ [ "plut_cell", 1 ] ], - [ [ "small_storage_battery", 1 ] ], - [ [ "element", 12 ] ], - [ [ "cable", 6 ] ], - [ [ "sheet_metal", 4 ] ], - [ [ "power_supply", 1 ] ] - ], - "pre_special": "check_empty", - "post_terrain": "f_hydro_heater" - } -] diff --git a/data/mods/Hydroponics/furniture.json b/data/mods/Hydroponics/furniture.json deleted file mode 100644 index 7554bc2ff448c..0000000000000 --- a/data/mods/Hydroponics/furniture.json +++ /dev/null @@ -1,114 +0,0 @@ -[ - { - "type": "furniture", - "id": "f_hydroponics", - "name": "hydroponics unit", - "description": "This is a self-contained hydroponics unit used to grow crops indoors.", - "symbol": "^", - "color": "light_blue", - "move_cost_mod": 1, - "light_emitted": 10, - "required_str": 12, - "looks_like": "f_planter", - "flags": [ "TRANSPARENT", "PLANTABLE", "FLAT", "MOUNTABLE" ], - "deconstruct": { "items": [ { "group": "hydrop_deconstruct_results" } ] }, - "bash": { - "str_min": 6, - "str_max": 14, - "sound": "crunch.", - "sound_fail": "whish.", - "items": [ { "group": "hydrop_bash_results" } ] - }, - "plant_data": { "transform": "f_hydroponics_seed" }, - "examine_action": "dirtmound" - }, - { - "type": "furniture", - "id": "f_hydroponics_seed", - "name": "hydroponics unit with seed", - "description": "This is a self-contained hydroponics unit used to grow crops indoors. This one contains a planted seed", - "symbol": "^", - "color": "brown", - "looks_like": "f_plant_seed", - "flags": [ "PLANT", "SEALED", "TRANSPARENT", "CONTAINER", "NOITEM", "TINY", "DONT_REMOVE_ROTTEN", "GROWTH_SEED" ], - "examine_action": "aggie_plant", - "copy-from": "f_hydroponics", - "plant_data": { "transform": "f_hydroponics_seedling", "base": "f_hydroponics" } - }, - { - "type": "furniture", - "id": "f_hydroponics_seedling", - "name": "hydroponics unit with seedling", - "description": "This is a self-contained hydroponics unit used to grow crops indoors. This one contains a planted seedling", - "symbol": "^", - "color": "green", - "looks_like": "f_plant_seedling", - "flags": [ "PLANT", "SEALED", "TRANSPARENT", "CONTAINER", "NOITEM", "TINY", "DONT_REMOVE_ROTTEN", "GROWTH_SEEDLING" ], - "examine_action": "aggie_plant", - "copy-from": "f_hydroponics_seed", - "plant_data": { "transform": "f_hydroponics_mature", "base": "f_hydroponics" } - }, - { - "type": "furniture", - "id": "f_hydroponics_mature", - "name": "hydroponics unit with mature plant", - "description": "This is a self-contained hydroponics unit used to grow crops indoors. This one contains a mature plant.", - "symbol": "#", - "color": "green", - "looks_like": "f_plant_mature", - "move_cost_mod": 0, - "flags": [ "PLANT", "SEALED", "TRANSPARENT", "CONTAINER", "NOITEM", "TINY", "DONT_REMOVE_ROTTEN", "GROWTH_MATURE" ], - "examine_action": "aggie_plant", - "copy-from": "f_hydroponics_seed", - "plant_data": { "transform": "f_hydroponics_harvest", "base": "f_hydroponics" } - }, - { - "type": "furniture", - "id": "f_hydroponics_harvest", - "name": "hydroponics unit with harvestable plant", - "description": "This is a self-contained hydroponics unit used to grow crops indoors. This one contains a mature plant that is ready for harvest.", - "symbol": "#", - "color": "light_green", - "looks_like": "f_plant_harvest", - "flags": [ "PLANT", "SEALED", "TRANSPARENT", "CONTAINER", "NOITEM", "TINY", "DONT_REMOVE_ROTTEN", "GROWTH_HARVEST" ], - "examine_action": "aggie_plant", - "copy-from": "f_hydroponics_mature", - "plant_data": { "transform": "f_hydroponics", "base": "f_hydroponics", "harvest_multiplier": 2.5 } - }, - { - "type": "furniture", - "id": "f_hydro_heater", - "name": "hydroponics heater", - "description": "This is a self-contained heater, used to warm hydroponics units.", - "symbol": "#", - "color": "light_blue", - "move_cost_mod": 1, - "required_str": 12, - "looks_like": "mountable_heater", - "flags": [ "TRANSPARENT", "FLAT", "MOUNTABLE", "EMITTER" ], - "emissions": [ "emit_hot_air2_blast" ], - "deconstruct": { - "items": [ - { "item": "small_storage_battery" }, - { "item": "element", "count": [ 10, 12 ] }, - { "item": "cable", "count": [ 4, 6 ] }, - { "item": "sheet_metal", "count": [ 2, 4 ] }, - { "item": "power_supply", "count": [ 0, 1 ] } - ] - }, - "bash": { - "str_min": 6, - "str_max": 14, - "sound": "crunch.", - "sound_fail": "whish.", - "items": [ - { "item": "small_storage_battery", "count": [ 0, 1 ] }, - { "item": "element", "count": [ 4, 12 ] }, - { "item": "cable", "count": [ 2, 6 ] }, - { "item": "sheet_metal", "count": [ 1, 3 ] }, - { "item": "scrap", "count": [ 3, 12 ] }, - { "item": "power_supply", "count": [ 0, 1 ] } - ] - } - } -] diff --git a/data/mods/Hydroponics/game_balance.json b/data/mods/Hydroponics/game_balance.json deleted file mode 100644 index aacb68c06841b..0000000000000 --- a/data/mods/Hydroponics/game_balance.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "type": "EXTERNAL_OPTION", - "name": "MAX_HARVEST_COUNT", - "stype": "int", - "value": 30 - } -] diff --git a/data/mods/Hydroponics/item_groups.json b/data/mods/Hydroponics/item_groups.json deleted file mode 100644 index 929e795e12c04..0000000000000 --- a/data/mods/Hydroponics/item_groups.json +++ /dev/null @@ -1,36 +0,0 @@ -[ - { - "type": "item_group", - "id": "hydrop_deconstruct_results", - "subtype": "collection", - "entries": [ - { "item": "pipe", "count": [ 5, 6 ] }, - { "item": "plastic_chunk", "count": 10 }, - { "item": "metal_tank_little", "count": 2 }, - { "item": "cu_pipe", "count": 4 }, - { "item": "e_scrap", "count": 2 }, - { "item": "lightstrip_inactive", "count": 2 }, - { "item": "circuit", "count": 1 }, - { "item": "small_storage_battery" }, - { "item": "scrap", "count": [ 1, 2 ] }, - { "item": "fertilizer_commercial", "count": [ 0, 1 ] } - ] - }, - { - "type": "item_group", - "id": "hydrop_bash_results", - "subtype": "collection", - "entries": [ - { "item": "pipe", "count": [ 2, 4 ] }, - { "item": "plastic_chunk", "count": [ 8, 10 ] }, - { "item": "metal_tank_little", "count": [ 0, 2 ], "damage": [ 1, 3 ] }, - { "item": "cu_pipe", "count": [ 0, 2 ] }, - { "item": "e_scrap", "count": 2 }, - { "item": "lightstrip_inactive", "count": 2 }, - { "item": "circuit", "count": [ 0, 1 ] }, - { "item": "small_storage_battery", "count": [ 0, 1 ], "damage": [ 1, 3 ] }, - { "item": "scrap", "count": [ 3, 6 ] }, - { "item": "fertilizer_commercial", "count": [ 0, 1 ] } - ] - } -] diff --git a/data/mods/Hydroponics/mapgen/basement_hydrop.json b/data/mods/Hydroponics/mapgen/basement_hydrop.json deleted file mode 100644 index cb42445bb8fe9..0000000000000 --- a/data/mods/Hydroponics/mapgen/basement_hydrop.json +++ /dev/null @@ -1,94 +0,0 @@ -[ - { - "type": "mapgen", - "method": "json", - "om_terrain": [ "basement" ], - "weight": 150, - "object": { - "fill_ter": "t_rock", - "rotation": [ 0, 3 ], - "rows": [ - "------------------------", - "-HHHHHHHHHH..HHHHHHHHHH-", - "-......................-", - "-HHHHHHHHHH..HHHHHHHHHH-", - "-......................-", - "-HHHHHHHHHH..HHHHHHHHHH-", - "-......................-", - "-HHHHHHHHHH..HHHHHHHHHH-", - "-......................-", - "-HHHHHHHHHH..HHHHHHHHHH-", - "-c....................c-", - "-c....................c-", - "-c....................c-", - "-c....................c-", - "-c....................c-", - "-......................-", - "-..HHHHH..-++-..HHHHH..-", - "-.........-..-.........-", - "-HHHHHHHHH-<<-HHHHHHHHH-", - "------------------------", - " ", - " ", - " ", - " " - ], - "palettes": [ "lab_hydrop_palette" ], - "terrain": { - "+": "t_door_c", - "-": "t_wall", - ".": "t_thconc_floor", - "<": "t_stairs_up", - "c": "t_thconc_floor", - "|": "t_concrete_wall" - }, - "furniture": { "c": "f_counter" }, - "place_loot": [ - { "group": "farming_seeds", "x": 1, "y": [ 1, 14 ], "chance": 10, "repeat": [ 1, 10 ] }, - { "group": "farming_tools", "x": 22, "y": [ 1, 14 ], "chance": 10, "repeat": [ 1, 10 ] } - ], - "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 2, 23 ], "y": [ 1, 19 ], "chance": 10 } ] - } - }, - { - "type": "mapgen", - "method": "json", - "om_terrain": [ "basement" ], - "weight": 150, - "object": { - "fill_ter": "t_rock", - "rotation": [ 0, 3 ], - "rows": [ - "------------------------", - "-HHHHHHHHHH..HHHHHHHHHH-", - "-......................-", - "-HHHHHHHHHH..HHHHHHHHHH-", - "-......................-", - "-HHHHHHHHHH..HHHHHHHHHH-", - "-......................-", - "-HHHHHHHHHH..HHHHHHHHHH-", - "-......................-", - "-HHHHHHHHHH..HHHHHHHHHH-", - "-c....................c-", - "-c....................c-", - "-c....................c-", - "-c....................c-", - "-c....................c-", - "-......................-", - "-..HHHHH..-++-..HHHHH..-", - "-.........-..-.........-", - "-HHHHHHHHH-<<-HHHHHHHHH-", - "------------------------", - " ", - " ", - " ", - " " - ], - "terrain": { "H": "t_floor", "+": "t_door_c", "-": "t_wall", ".": "t_thconc_floor", "<": "t_stairs_up", "c": "t_thconc_floor" }, - "furniture": { "c": "f_counter" }, - "sealed_item": { "H": { "item": { "item": "seed_weed" }, "furniture": "f_hydroponics_harvest" } }, - "place_loot": [ { "group": "farming_tools", "x": 22, "y": [ 1, 14 ], "chance": 10, "repeat": [ 1, 10 ] } ], - "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 2, 23 ], "y": [ 1, 19 ], "chance": 10 } ] - } - } -] diff --git a/data/mods/Hydroponics/mapgen/lab_floorplans_1side.json b/data/mods/Hydroponics/mapgen/lab_floorplans_1side.json deleted file mode 100644 index b99ad18c333c8..0000000000000 --- a/data/mods/Hydroponics/mapgen/lab_floorplans_1side.json +++ /dev/null @@ -1,52 +0,0 @@ -[ - { - "type": "mapgen", - "method": "json", - "om_terrain": [ "lab_1side" ], - "weight": 50, - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - "|----------..----------|", - "|.........|..|.........|", - "|.........|..|.........|", - "|.........|..|.........|", - "|.........|..|.........|", - "|.........+..+.........|", - "|.........|..|.........|", - "|.........|..|.........|", - "|.........|..|.........|", - "|.........|..|.........|", - "|---------|..|---------|", - "|HHHHHHHH|....gHHHHHHHH|", - "|........|....g........|", - "|.HHHHHH.|6...g.HHHHHH.|", - "|........--LL--........|", - "|.HHHHHH........HHHHHH.|", - "|......................|", - "|.HHHHHHHHH..HHHHHHHHH.|", - "|......................|", - "|.HHHHHHHHH..HHHHHHHHH.|", - "|......................|", - "|.HHHHHHHHH..HHHHHHHHH.|", - "|......................|", - "|----------------------|" - ], - "palettes": [ "lab_palette", "lab_hydrop_palette" ], - "vendingmachines": { "1": { "item_group": "vending_drink" }, "2": { "item_group": "vending_food" } }, - "computers": { - "6": { - "name": "Hydroponics Entrance", - "security": 1, - "options": [ { "name": "UNLOCK ENTRANCE", "action": "unlock", "security": 3 } ], - "failures": [ { "action": "damage" }, { "action": "shutdown" } ] - } - }, - "place_nested": [ - { "chunks": [ "lab_spawn_9x9_crossdoors" ], "x": 1, "y": 1 }, - { "chunks": [ "lab_spawn_9x9_crossdoors" ], "x": 14, "y": 1 }, - { "chunks": [ "lab_1side_border_doors" ], "x": 0, "y": 0 } - ] - } - } -] diff --git a/data/mods/Hydroponics/mapgen/lab_rooms.json b/data/mods/Hydroponics/mapgen/lab_rooms.json deleted file mode 100644 index 4e642940dd78c..0000000000000 --- a/data/mods/Hydroponics/mapgen/lab_rooms.json +++ /dev/null @@ -1,44 +0,0 @@ -[ - { - "//": "7x7 hydroponics", - "type": "mapgen", - "method": "json", - "nested_mapgen_id": "lab_room_7x7_crossdoors", - "object": { - "mapgensize": [ 7, 7 ], - "rotation": [ 0, 3 ], - "rows": [ - ".......", - ".H.H.H.", - ".H...H.", - ".H.H.H.", - ".H...H.", - ".H.H.H.", - "......." - ], - "palettes": [ "lab_palette", "lab_hydrop_palette" ] - } - }, - { - "//": "9x9 hydroponics", - "type": "mapgen", - "method": "json", - "nested_mapgen_id": "lab_room_9x9", - "object": { - "mapgensize": [ 9, 9 ], - "rotation": [ 0, 3 ], - "rows": [ - ".........", - ".HHHHHHH.", - ".........", - ".HHHHHHH.", - ".........", - ".HHHHHHH.", - ".........", - ".HHHHHHH.", - "........." - ], - "palettes": [ "lab_palette", "lab_hydrop_palette" ] - } - } -] diff --git a/data/mods/Hydroponics/modinfo.json b/data/mods/Hydroponics/modinfo.json deleted file mode 100644 index e773f03d90b1d..0000000000000 --- a/data/mods/Hydroponics/modinfo.json +++ /dev/null @@ -1,13 +0,0 @@ -[ - { - "type": "MOD_INFO", - "ident": "hydroponics", - "name": "Hydroponics", - "authors": [ "Unknown" ], - "maintainers": [ "Tiny Hippo" ], - "description": "Adds hydroponic units, a furniture which can have crops planted in it for increased yields. Spawn occasionally in labs or basements. Or build your own.", - "category": "misc_additions", - "dependencies": [ "dda" ], - "obsolete": true - } -] diff --git a/data/mods/Hydroponics/requirements.json b/data/mods/Hydroponics/requirements.json deleted file mode 100644 index 3a55d823d831f..0000000000000 --- a/data/mods/Hydroponics/requirements.json +++ /dev/null @@ -1,20 +0,0 @@ -[ - { - "id": "hydroponic_unit", - "type": "requirement", - "qualities": [ [ { "id": "SAW_M", "level": 1 } ], [ { "id": "SCREW", "level": 1 } ], [ { "id": "WRENCH", "level": 2 } ] ], - "components": [ - [ [ "pipe", 6 ], [ "frame", 1 ], [ "xlframe", 1 ] ], - [ [ "plastic_chunk", 10 ] ], - [ [ "metal_tank_little", 2 ] ], - [ [ "cu_pipe", 4 ] ], - [ [ "small_storage_battery", 1 ] ], - [ [ "plut_cell", 1 ] ], - [ [ "e_scrap", 2 ] ], - [ [ "lightstrip_inactive", 2 ] ], - [ [ "circuit", 1 ] ], - [ [ "fertilizer_commercial", 1 ] ], - [ [ "water", 100 ] ] - ] - } -] diff --git a/data/mods/Hydroponics/terrain.json b/data/mods/Hydroponics/terrain.json deleted file mode 100644 index 162ce56eb4b23..0000000000000 --- a/data/mods/Hydroponics/terrain.json +++ /dev/null @@ -1,161 +0,0 @@ -[ - { - "type": "terrain", - "id": "t_hydrop_generic", - "name": "LEGACY hydroponics unit", - "description": "This is a deprecated hydroponics unit. Deconstruct it to receive your materials back.", - "symbol": "^", - "color": "light_blue", - "move_cost": 0, - "flags": [ "TRANSPARENT", "NOITEM", "SHORT", "PERMEABLE", "REDUCE_SCENT" ], - "deconstruct": { "ter_set": "t_floor", "items": [ { "group": "hydrop_deconstruct_results" } ] }, - "bash": { - "str_min": 12, - "str_max": 30, - "sound": "crunch!", - "sound_fail": "whack!", - "ter_set": "t_floor", - "items": [ { "group": "hydrop_bash_results" } ] - } - }, - { - "type": "terrain", - "id": "t_hydrop_bean", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_bean_harvested", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_cabbage", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_cabbage_harvested", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_carrot", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_carrot_harvested", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_celery", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_celery_harvested", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_corn", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_corn_harvested", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_cucumber", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_cucumber_harvested", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_onion", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_onion_harvested", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_potato", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_potato_harvested", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_tomato", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_tomato_harvested", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_weed", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - }, - { - "type": "terrain", - "id": "t_hydrop_weed_harvested", - "symbol": "^", - "color": "light_blue", - "copy-from": "t_hydrop_generic" - } -] diff --git a/data/mods/Hydroponics/tpalletes.json b/data/mods/Hydroponics/tpalletes.json deleted file mode 100644 index a94a126d2d74e..0000000000000 --- a/data/mods/Hydroponics/tpalletes.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "type": "palette", - "id": "lab_hydrop_palette", - "terrain": { "H": "t_floor" }, - "sealed_item": { "H": { "items": { "item": "farming_seeds", "chance": 100 }, "furniture": "f_hydroponics_harvest" } } - } -] diff --git a/data/mods/Medieval_Stuff/ammo_types.json b/data/mods/Medieval_Stuff/ammo_types.json deleted file mode 100644 index 76f862e9009f8..0000000000000 --- a/data/mods/Medieval_Stuff/ammo_types.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "id": "fire_lance", - "name": "fire lance charge", - "default": "lance_charge", - "type": "ammunition_type" - } -] diff --git a/data/mods/Medieval_Stuff/handloaded_bullets.json b/data/mods/Medieval_Stuff/handloaded_bullets.json deleted file mode 100644 index f3c8e6e6e3d5d..0000000000000 --- a/data/mods/Medieval_Stuff/handloaded_bullets.json +++ /dev/null @@ -1,44 +0,0 @@ -[ - { - "id": "lance_charge", - "type": "AMMO", - "name": "fire lance charge", - "description": "Little more than a charge of gunpowder for a basic firearm. Despite the minimal range, it packs a punch.", - "weight": "4 g", - "volume": "250 ml", - "price": 4500, - "bashing": 1, - "material": [ "paper", "powder" ], - "symbol": "=", - "color": "red", - "count": 1, - "ammo_type": "fire_lance", - "range": 3, - "damage": 15, - "pierce": 0, - "dispersion": 0, - "recoil": 3000, - "effects": [ "COOKOFF", "RECYCLED", "BLINDS_EYES" ] - }, - { - "id": "lance_charge_shot", - "type": "AMMO", - "name": "fire lance shot", - "description": "Little more than a charge of gunpowder for a basic firearm, with small pellets as shot. Despite the minimal range, it packs a punch.", - "weight": "5 g", - "volume": "250 ml", - "price": 4500, - "bashing": 1, - "material": [ "paper", "powder" ], - "symbol": "=", - "color": "red", - "count": 1, - "ammo_type": "fire_lance", - "range": 4, - "damage": 30, - "pierce": 1, - "dispersion": 0, - "recoil": 3000, - "effects": [ "COOKOFF", "SHOT", "RECYCLED" ] - } -] diff --git a/data/mods/Medieval_Stuff/item_groups.json b/data/mods/Medieval_Stuff/item_groups.json deleted file mode 100644 index cd7ae857fb719..0000000000000 --- a/data/mods/Medieval_Stuff/item_groups.json +++ /dev/null @@ -1,63 +0,0 @@ -[ - { - "id": "medieval", - "type": "item_group", - "items": [ [ "shield_kite", 5 ], [ "shield_heater", 10 ], [ "shield_buckler", 1 ] ] - }, - { - "id": "pawn", - "type": "item_group", - "items": [ - [ "shield_hoplon", 1 ], - [ "shield_scutum", 1 ], - [ "shield_round", 3 ], - [ "shield_kite", 3 ], - [ "shield_heater", 5 ], - [ "shield_buckler", 5 ] - ] - }, - { - "id": "antique_rare", - "type": "item_group", - "items": [ - [ "fire_lance", 2 ], - [ "lance_charge", 1 ], - [ "lance_charge_shot", 1 ], - [ "shield_hoplon", 1 ], - [ "shield_scutum", 1 ], - [ "shield_round", 3 ], - [ "shield_kite", 3 ], - [ "shield_heater", 5 ], - [ "shield_buckler", 5 ] - ] - }, - { - "id": "museum_guns", - "type": "item_group", - "items": [ [ "fire_lance", 20 ], [ "lance_charge", 10 ], [ "lance_charge_shot", 5 ] ] - }, - { - "id": "mansion_guns", - "type": "item_group", - "items": [ [ "fire_lance", 2 ], [ "lance_charge", 1 ], [ "lance_charge_shot", 1 ] ] - }, - { - "id": "museum_armor", - "type": "item_group", - "items": [ - [ "shield_wooden", 10 ], - [ "shield_wooden_large", 5 ], - [ "shield_hoplon", 10 ], - [ "shield_scutum", 10 ], - [ "shield_round", 10 ], - [ "shield_kite", 10 ], - [ "shield_heater", 20 ], - [ "shield_buckler", 25 ] - ] - }, - { - "id": "survivorzed_extra", - "type": "item_group", - "items": [ [ "shield_wooden", 10 ], [ "shield_wooden_large", 5 ] ] - } -] diff --git a/data/mods/Medieval_Stuff/modinfo.json b/data/mods/Medieval_Stuff/modinfo.json deleted file mode 100644 index 0c343ad502242..0000000000000 --- a/data/mods/Medieval_Stuff/modinfo.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - { - "type": "MOD_INFO", - "ident": "Medieval_Stuff", - "name": "Medieval and Historic Classes and Shields", - "authors": [ "Chaosvolt" ], - "description": "Assorted fun classes and shields for the wannabe knight, legionary, and more.", - "category": "items", - "dependencies": [ "dda" ], - "obsolete": true - } -] diff --git a/data/mods/Medieval_Stuff/professions.json b/data/mods/Medieval_Stuff/professions.json deleted file mode 100644 index 776e642d139c6..0000000000000 --- a/data/mods/Medieval_Stuff/professions.json +++ /dev/null @@ -1,241 +0,0 @@ -[ - { - "type": "profession", - "ident": "brave_of_the_king", - "name": "Brave of the King", - "description": "Elite infantry of ancient Egypt and bodyguards of the Pharaoh. While armor was uncommon due to desert conditions, such equipment did see increased usage during the New Kingdom period.", - "points": 3, - "skills": [ - { "level": 2, "name": "bashing" }, - { "level": 3, "name": "cutting" }, - { "level": 3, "name": "melee" }, - { "level": 1, "name": "dodge" } - ], - "items": { - "both": { "items": [ "leathersandals", "helmet_larmor", "backpack", "shield_wooden_large", "waterskin", "khopesh" ] }, - "male": [ "sleeveless_tunic" ], - "female": [ "sundress" ] - } - }, - { - "type": "profession", - "ident": "hoplite", - "name": "Hoplite", - "description": "Heavy infantry of the ancient Greek city-states, before the shift towards the Macedonean phalanx. Well-trained for combat in formation, but less effective when outmaneuvered or on broken ground.", - "points": 4, - "skills": [ - { "level": 2, "name": "bashing" }, - { "level": 2, "name": "cutting" }, - { "level": 3, "name": "melee" }, - { "level": 4, "name": "stabbing" }, - { "level": 2, "name": "unarmed" } - ], - "items": { - "both": { - "items": [ - "tunic", - "leathersandals", - "armor_cuirass", - "legguard_bronze", - "helmet_corinthian", - "backpack", - "shield_hoplon", - "spear_dory", - "waterskin" - ], - "entries": [ { "item": "sword_xiphos", "container-item": "baldric" } ] - }, - "male": [ "loincloth" ], - "female": [ "loincloth", "bikini_top_leather" ] - } - }, - { - "type": "profession", - "ident": "legionary", - "name": "Legionary", - "description": "Roman heavy infantry, after the military reforms that standardized the legion's equipment. Trained to act in formation with javelin and sword, well-known for their field fortifications as well.", - "points": 5, - "skills": [ - { "level": 1, "name": "fabrication" }, - { "level": 1, "name": "cooking" }, - { "level": 2, "name": "stabbing" }, - { "level": 2, "name": "gun" }, - { "level": 3, "name": "melee" }, - { "level": 1, "name": "throw" } - ], - "items": { - "both": { - "items": [ - "tunic", - "leathersandals", - "armor_lorica", - "legguard_metal", - "helmet_galea", - "backpack", - "shield_scutum", - "shovel", - "pot", - "waterskin" - ], - "entries": [ - { "item": "sword_xiphos", "container-item": "baldric" }, - { "item": "knife_hunting", "container-item": "sheath" }, - { "item": "javelin_iron", "count": 2 } - ] - }, - "male": [ "loincloth" ], - "female": [ "loincloth", "bikini_top_leather" ] - } - }, - { - "type": "profession", - "ident": "viking", - "name": "Viking", - "description": "The infamous pirates of the early medieval period, raiders and explorers from various Scandinavian countries.", - "points": 4, - "skills": [ - { "level": 2, "name": "survival" }, - { "level": 3, "name": "swimming" }, - { "level": 2, "name": "cutting" }, - { "level": 1, "name": "dodge" }, - { "level": 3, "name": "melee" } - ], - "items": { - "both": { - "items": [ - "gambeson", - "tunic", - "socks", - "cloak_wool", - "gauntlets_larmor", - "boots_larmor", - "helmet_nasal", - "backpack", - "shield_round", - "battleaxe", - "waterskin" - ], - "entries": [ { "item": "knife_hunting", "container-item": "sheath" } ] - } - } - }, - { - "type": "profession", - "ident": "man_at_arms", - "name": { "male": "Man-at-Arms", "female": "Woman-at-Arms" }, - "description": "The medieval heavy cavalry of various countries in Europe, whether noble-born or of common blood. While knights traditionally were men-at-arms, not every man-at-arms was a knight.", - "points": 5, - "skills": [ - { "level": 1, "name": "driving" }, - { "level": 1, "name": "firstaid" }, - { "level": 1, "name": "speech" }, - { "level": 3, "name": "cutting" }, - { "level": 3, "name": "melee" } - ], - "items": { - "both": { - "items": [ - "gambeson", - "chainmail_hauberk", - "socks", - "boots_plate", - "helmet_plate", - "gloves_plate", - "backpack", - "shield_kite", - "waterskin" - ], - "entries": [ { "item": "arming_sword", "container-item": "scabbard" } ] - } - } - }, - { - "type": "profession", - "ident": "horse_archer", - "name": "Horse Archer", - "description": "The famed light cavalry of the Mongol Empire. Best known for their skill as mounted archers.", - "points": 5, - "skills": [ - { "level": 2, "name": "driving" }, - { "level": 2, "name": "survival" }, - { "level": 4, "name": "archery" }, - { "level": 1, "name": "dodge" }, - { "level": 3, "name": "gun" }, - { "level": 1, "name": "melee" } - ], - "items": { - "both": { - "items": [ - "loincloth", - "socks", - "boots_larmor", - "armor_lamellar", - "gauntlets_larmor", - "helmet_conical", - "backpack", - "recurbow", - "fur_rollmat", - "pot", - "waterskin" - ], - "entries": [ - { "item": "scimitar", "container-item": "scabbard" }, - { "item": "knife_hunting", "container-item": "sheath" }, - { "item": "arrow_wood", "charges": 20, "container-item": "quiver_large" } - ] - } - } - }, - { - "type": "profession", - "ident": "samurai", - "name": "Samurai", - "description": "Warrior nobility of feudal Japan. Known originally as masters of the horse and bow, they become famous for their swordsmanship in later eras.", - "points": 5, - "skills": [ - { "level": 1, "name": "driving" }, - { "level": 1, "name": "firstaid" }, - { "level": 2, "name": "speech" }, - { "level": 2, "name": "archery" }, - { "level": 1, "name": "cutting" }, - { "level": 2, "name": "dodge" }, - { "level": 2, "name": "gun" }, - { "level": 2, "name": "melee" } - ], - "//": "All this work just to avoid layering oddities? Madness.", - "items": { - "male": { - "items": [ - "loincloth", - "hakama_gi", - "obi_gi", - "armor_samurai", - "helmet_kabuto", - "tabi_dress", - "bastsandals", - "backpack", - "recurbow", - "waterskin" - ], - "entries": [ { "item": "katana", "container-item": "scabbard" } ] - }, - "female": [ - "loincloth", - "chestwrap", - "kimono", - "obi_gi", - "armor_samurai", - "helmet_kabuto", - "tabi_dress", - "bastsandals", - "backpack", - "recurbow", - "waterskin", - "naginata" - ], - "both": { - "entries": [ { "item": "tanto", "container-item": "sheath" }, { "item": "arrow_wood", "charges": 20, "container-item": "quiver" } ] - } - } - } -] diff --git a/data/mods/Medieval_Stuff/ranged.json b/data/mods/Medieval_Stuff/ranged.json deleted file mode 100644 index d6686998d1d6c..0000000000000 --- a/data/mods/Medieval_Stuff/ranged.json +++ /dev/null @@ -1,29 +0,0 @@ -[ - { - "id": "fire_lance", - "type": "GUN", - "name": "fire lance", - "description": "An ancient Chinese spear, with a small tube attached for a charge of gunpowder. While it has an extremely short range, it gives a powerful edge in close combat.", - "weight": "1538 g", - "volume": "3 L", - "price": 95000, - "to_hit": 1, - "bashing": 4, - "cutting": 28, - "material": [ "steel", "wood" ], - "symbol": "/", - "color": "light_gray", - "ammo": "fire_lance", - "skill": "melee", - "dispersion": 255, - "sight_dispersion": 150, - "durability": 3, - "loudness": 200, - "clip_size": 1, - "reload": 200, - "techniques": [ "WBLOCK_1", "PRECISE" ], - "qualities": [ [ "COOK", 1 ] ], - "flags": [ "RELOAD_ONE", "SPEAR", "REACH_ATTACK" ], - "valid_mod_locations": [ [ "sling", 1 ] ] - } -] diff --git a/data/mods/Medieval_Stuff/recipe_ammo.json b/data/mods/Medieval_Stuff/recipe_ammo.json deleted file mode 100644 index d4c49efc16692..0000000000000 --- a/data/mods/Medieval_Stuff/recipe_ammo.json +++ /dev/null @@ -1,38 +0,0 @@ -[ - { - "result": "lance_charge", - "type": "recipe", - "category": "CC_AMMO", - "subcategory": "CSC_AMMO_OTHER", - "skill_used": "fabrication", - "difficulty": 2, - "skills_required": [ "gun", 1 ], - "time": 1000, - "book_learn": [ [ "textbook_armschina", 2 ] ], - "components": [ [ [ "gunpowder", 600 ], [ "chem_black_powder", 600 ] ], [ [ "paper", 1 ] ] ] - }, - { - "result": "lance_charge_shot", - "type": "recipe", - "category": "CC_AMMO", - "subcategory": "CSC_AMMO_OTHER", - "skill_used": "fabrication", - "difficulty": 3, - "skills_required": [ "gun", 1 ], - "time": 2000, - "book_learn": [ [ "textbook_armschina", 3 ] ], - "components": [ - [ [ "gunpowder", 600 ], [ "chem_black_powder", 600 ] ], - [ - [ "lead", 400 ], - [ "gold_small", 400 ], - [ "silver_small", 400 ], - [ "tin", 400 ], - [ "bismuth", 400 ], - [ "solder_wire", 400 ], - [ "bearing", 8 ] - ], - [ [ "paper", 1 ] ] - ] - } -] diff --git a/data/mods/Medieval_Stuff/recipe_shields.json b/data/mods/Medieval_Stuff/recipe_shields.json deleted file mode 100644 index 45621e25b98eb..0000000000000 --- a/data/mods/Medieval_Stuff/recipe_shields.json +++ /dev/null @@ -1,114 +0,0 @@ -[ - { - "result": "shield_wooden", - "type": "recipe", - "category": "CC_ARMOR", - "subcategory": "CSC_ARMOR_OTHER", - "skill_used": "fabrication", - "difficulty": 2, - "time": 30000, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 }, { "id": "HAMMER", "level": 2 } ], - "components": [ [ [ "nail", 8 ] ], [ [ "2x4", 4 ] ], [ [ "leather", 1 ] ] ] - }, - { - "result": "shield_wooden_large", - "type": "recipe", - "category": "CC_ARMOR", - "subcategory": "CSC_ARMOR_OTHER", - "skill_used": "fabrication", - "difficulty": 3, - "time": 50000, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 }, { "id": "HAMMER", "level": 2 } ], - "components": [ [ [ "nail", 16 ] ], [ [ "2x4", 8 ] ], [ [ "fur", 2 ], [ "leather", 2 ] ] ] - }, - { - "result": "shield_hoplon", - "type": "recipe", - "category": "CC_ARMOR", - "subcategory": "CSC_ARMOR_OTHER", - "skill_used": "fabrication", - "difficulty": 5, - "time": 60000, - "book_learn": [ [ "textbook_armwest", 4 ] ], - "using": [ [ "forging_standard", 2 ], [ "bronzesmithing_tools", 1 ] ], - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ [ [ "scrap_bronze", 4 ] ], [ [ "2x4", 4 ] ], [ [ "fur", 3 ], [ "leather", 3 ] ] ] - }, - { - "result": "shield_scutum", - "type": "recipe", - "category": "CC_ARMOR", - "subcategory": "CSC_ARMOR_OTHER", - "skill_used": "fabrication", - "difficulty": 5, - "time": 700000, - "book_learn": [ [ "textbook_armwest", 4 ] ], - "using": [ [ "forging_standard", 3 ], [ "steel_standard", 3 ] ], - "qualities": [ - { "id": "ANVIL", "level": 3 }, - { "id": "CUT", "level": 1 }, - { "id": "HAMMER", "level": 3 }, - { "id": "CHISEL", "level": 3 } - ], - "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ] ], - "components": [ [ [ "2x4", 8 ] ], [ [ "fur", 3 ], [ "leather", 3 ] ] ] - }, - { - "result": "shield_round", - "type": "recipe", - "category": "CC_ARMOR", - "subcategory": "CSC_ARMOR_OTHER", - "skill_used": "fabrication", - "difficulty": 4, - "time": 60000, - "book_learn": [ [ "textbook_armwest", 3 ] ], - "using": [ [ "forging_standard", 2 ], [ "steel_standard", 2 ] ], - "qualities": [ - { "id": "ANVIL", "level": 3 }, - { "id": "CUT", "level": 1 }, - { "id": "HAMMER", "level": 3 }, - { "id": "CHISEL", "level": 3 } - ], - "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ] ], - "components": [ [ [ "2x4", 4 ] ], [ [ "fur", 3 ], [ "leather", 3 ] ] ] - }, - { - "result": "shield_heater", - "type": "recipe", - "category": "CC_ARMOR", - "subcategory": "CSC_ARMOR_OTHER", - "skill_used": "fabrication", - "difficulty": 5, - "time": 45000, - "book_learn": [ [ "textbook_armwest", 4 ] ], - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ [ [ "2x4", 4 ] ], [ [ "leather", 12 ], [ "tanned_hide", 2 ] ] ] - }, - { - "result": "shield_kite", - "type": "recipe", - "category": "CC_ARMOR", - "subcategory": "CSC_ARMOR_OTHER", - "skill_used": "fabrication", - "difficulty": 6, - "time": 50000, - "book_learn": [ [ "textbook_armwest", 5 ] ], - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ [ [ "2x4", 7 ] ], [ [ "leather", 18 ], [ "tanned_hide", 3 ] ] ] - }, - { - "result": "shield_buckler", - "type": "recipe", - "category": "CC_ARMOR", - "subcategory": "CSC_ARMOR_OTHER", - "skill_used": "fabrication", - "difficulty": 7, - "time": 240000, - "book_learn": [ [ "textbook_armwest", 5 ] ], - "using": [ [ "forging_standard", 1 ], [ "steel_standard", 1 ] ], - "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ], - "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ] ] - } -] diff --git a/data/mods/Medieval_Stuff/recipe_weapon.json b/data/mods/Medieval_Stuff/recipe_weapon.json deleted file mode 100644 index 4c811678f7310..0000000000000 --- a/data/mods/Medieval_Stuff/recipe_weapon.json +++ /dev/null @@ -1,16 +0,0 @@ -[ - { - "result": "fire_lance", - "type": "recipe", - "category": "CC_WEAPON", - "subcategory": "CSC_WEAPON_RANGED", - "skill_used": "fabrication", - "difficulty": 3, - "skills_required": [ "gun", 1 ], - "time": 12000, - "reversible": true, - "book_learn": [ [ "textbook_armschina", 3 ] ], - "qualities": [ { "id": "SAW_M_FINE", "level": 1 }, { "id": "SCREW_FINE", "level": 1 } ], - "components": [ [ [ "qiang", 1 ] ], [ [ "pipe", 1 ] ], [ [ "scrap", 1 ] ] ] - } -] diff --git a/data/mods/Medieval_Stuff/shields.json b/data/mods/Medieval_Stuff/shields.json deleted file mode 100644 index 9093c2176d1bf..0000000000000 --- a/data/mods/Medieval_Stuff/shields.json +++ /dev/null @@ -1,169 +0,0 @@ -[ - { - "id": "shield_wooden", - "type": "ARMOR", - "name": "wooden shield", - "category": "armor", - "description": "A crude wooden shield, lacking any metal or leather reinforcement. Lightweight but not very tough.", - "weight": "2267 g", - "volume": "3750 ml", - "price": 80000, - "to_hit": -1, - "bashing": 8, - "material": "wood", - "symbol": "[", - "color": "brown", - "covers": [ "ARM_EITHER", "HAND_EITHER" ], - "coverage": 40, - "encumbrance": 12, - "material_thickness": 2, - "techniques": [ "WBLOCK_1" ], - "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "BLOCK_WHILE_WORN" ] - }, - { - "id": "shield_wooden_large", - "type": "ARMOR", - "name": "large wooden shield", - "category": "armor", - "description": "An ancient style of wooden shield, lacking any metal or leather reinforcement. Bulky, but offers a decent amount of protection.", - "weight": "3828 g", - "volume": "5 L", - "price": 90000, - "to_hit": -1, - "bashing": 10, - "material": [ "wood" ], - "symbol": "[", - "color": "light_gray", - "covers": [ "ARM_EITHER", "HAND_EITHER" ], - "coverage": 70, - "encumbrance": 28, - "material_thickness": 2, - "techniques": [ "WBLOCK_3" ], - "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "BLOCK_WHILE_WORN" ] - }, - { - "id": "shield_heater", - "type": "ARMOR", - "name": "heater shield", - "category": "armor", - "//": "Doesn't use leather in material because it's not meant to be sewn up", - "description": "A medieval style of shield made of wood overlaid with leather, developed from the longer kite shield. Mainly used in tournaments, but still viable in battle.", - "weight": "3175 g", - "volume": "4 L", - "price": 90000, - "bashing": 4, - "material": "wood", - "symbol": "[", - "color": "light_gray", - "covers": [ "ARM_EITHER", "HAND_EITHER" ], - "coverage": 40, - "encumbrance": 12, - "material_thickness": 3, - "techniques": [ "WBLOCK_1" ], - "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "BLOCK_WHILE_WORN" ] - }, - { - "id": "shield_kite", - "type": "ARMOR", - "name": "kite shield", - "category": "armor", - "//": "Doesn't use leather in material because it's not meant to be sewn up", - "description": "A classic medieval style of shield, made of wood overlaid with leather, in an elongated teardrop shape. Affords decent protection, but was better suited for cavalry.", - "weight": "3628 g", - "volume": "5 L", - "price": 120000, - "to_hit": -1, - "bashing": 8, - "material": "wood", - "symbol": "[", - "color": "light_gray", - "covers": [ "ARM_EITHER", "HAND_EITHER" ], - "coverage": 60, - "encumbrance": 24, - "material_thickness": 3, - "techniques": [ "WBLOCK_3" ], - "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "BLOCK_WHILE_WORN" ] - }, - { - "id": "shield_round", - "type": "ARMOR", - "name": "round shield", - "category": "armor", - "description": "A simple round shield made of wood, with a rim and boss of iron. Made infamous by the Vikings.", - "weight": "3400 g", - "volume": "4 L", - "price": 110000, - "bashing": 8, - "material": [ "wood", "iron" ], - "symbol": "[", - "color": "blue", - "covers": [ "ARM_EITHER", "HAND_EITHER" ], - "coverage": 45, - "encumbrance": 16, - "material_thickness": 3, - "techniques": [ "WBLOCK_1" ], - "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "BLOCK_WHILE_WORN" ] - }, - { - "id": "shield_hoplon", - "type": "ARMOR", - "name": "hoplon", - "category": "armor", - "description": "A convex round shield from ancient Greece, made of wood reinforced with bronze. Heavy but effective.", - "weight": "4082 g", - "volume": "4500 ml", - "price": 120000, - "to_hit": -1, - "bashing": 12, - "material": [ "wood", "bronze" ], - "symbol": "[", - "color": "yellow", - "covers": [ "ARM_EITHER", "HAND_EITHER" ], - "coverage": 50, - "encumbrance": 20, - "material_thickness": 4, - "techniques": [ "WBLOCK_1" ], - "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "BLOCK_WHILE_WORN" ] - }, - { - "id": "shield_scutum", - "type": "ARMOR", - "name": { "str": "scutum", "str_pl": "scuta" }, - "category": "armor", - "description": "A rectangular shield from ancient Rome, made of wood and iron. Perfect for fighting in formation, but not ideal for facing zombies alone.", - "weight": "4535 g", - "volume": "5500 ml", - "price": 125000, - "to_hit": -1, - "bashing": 10, - "material": [ "wood", "iron" ], - "symbol": "[", - "color": "red", - "covers": [ "ARM_EITHER", "HAND_EITHER" ], - "coverage": 70, - "encumbrance": 28, - "material_thickness": 4, - "techniques": [ "WBLOCK_3" ], - "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "BLOCK_WHILE_WORN" ] - }, - { - "id": "shield_buckler", - "type": "ARMOR", - "name": "buckler", - "category": "armor", - "description": "A small metal shield from the late medieval and renaissance periods. Extremely light and tough, but its small size is as much a hindrance as it is an advantage.", - "weight": "1814 g", - "volume": "2500 ml", - "price": 140000, - "bashing": 8, - "material": "steel", - "symbol": "[", - "color": "dark_gray", - "covers": [ "ARM_EITHER", "HAND_EITHER" ], - "coverage": 30, - "encumbrance": 8, - "material_thickness": 3, - "techniques": [ "WBLOCK_2" ], - "flags": [ "OVERSIZE", "STURDY", "BELTED", "RESTRICT_HANDS", "BLOCK_WHILE_WORN" ] - } -] diff --git a/data/mods/Medieval_Stuff/tools.json b/data/mods/Medieval_Stuff/tools.json deleted file mode 100644 index 2f966113fa05a..0000000000000 --- a/data/mods/Medieval_Stuff/tools.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "id": "dusksword", - "type": "TOOL", - "category": "weapons", - "name": "Dusk", - "//": "Blame Kadian. 3:", - "description": "A longsword, made out of a very dark, almost black metal. It seems to hold a greater edge than usual steel blades and feels …more comfortable in the hand. While the blade is made out of this dark metal, the crossguard and the pommel seem to be made out of a brighter material, which feels abnormally cool to the touch.", - "weight": "2653 g", - "volume": "2750 ml", - "price": 260000, - "to_hit": 2, - "bashing": 17, - "cutting": 42, - "material": "superalloy", - "symbol": "/", - "color": "dark_gray", - "techniques": [ "WBLOCK_2" ], - "qualities": [ [ "CUT", 1 ], [ "BUTCHER", 8 ] ], - "flags": [ "DURABLE_MELEE", "SHEATH_SWORD" ] - } -] diff --git a/data/mods/Modular_Turrets/blacklist.json b/data/mods/Modular_Turrets/blacklist.json deleted file mode 100644 index 2500c8c915d41..0000000000000 --- a/data/mods/Modular_Turrets/blacklist.json +++ /dev/null @@ -1,6 +0,0 @@ -[ - { - "type": "ITEM_BLACKLIST", - "items": [ "control_laptop", "cerberus_laser", "bot_turret", "bot_rifleturret", "bot_antimateriel", "bot_laserturret" ] - } -] diff --git a/data/mods/Modular_Turrets/corpses.json b/data/mods/Modular_Turrets/corpses.json deleted file mode 100644 index 858120933004b..0000000000000 --- a/data/mods/Modular_Turrets/corpses.json +++ /dev/null @@ -1,559 +0,0 @@ -[ - { - "abstract": "broken_turret_base", - "type": "GENERIC", - "symbol": ",", - "looks_like": "bot_turret", - "color": "light_gray", - "name": "broken turret", - "category": "other", - "description": "A broken turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts.", - "price": 50000, - "price_postapoc": 10000, - "material": [ "steel", "plastic" ], - "weight": "1507 g", - "volume": "3 L", - "to_hit": -3, - "bashing": 8, - "flags": [ "TRADER_AVOID" ] - }, - { - "abstract": "broken_milturret_base", - "type": "GENERIC", - "copy-from": "broken_turret_base", - "name": "broken military turret", - "price": 50000, - "price_postapoc": 10000 - }, - { - "abstract": "broken_advturret_base", - "type": "GENERIC", - "copy-from": "broken_turret_base", - "name": "broken advanced turret", - "price": 50000, - "price_postapoc": 10000 - }, - { - "id": "broken_turret_disarmed", - "type": "GENERIC", - "copy-from": "broken_turret_base", - "color": "light_gray", - "name": "broken defense turret", - "description": "A broken defense turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_milturret_disarmed", - "type": "GENERIC", - "copy-from": "broken_milturret_base", - "color": "light_gray", - "name": "broken military turret", - "description": "A broken military turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_advturret_disarmed", - "type": "GENERIC", - "copy-from": "broken_turret_base", - "color": "light_gray", - "name": "broken advanced turret", - "description": "A broken 9mm defense turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_turret_9mm", - "type": "GENERIC", - "copy-from": "broken_turret_base", - "color": "light_gray", - "name": "broken 9mm turret", - "description": "A broken 9mm defense turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_turret", - "type": "GENERIC", - "copy-from": "broken_turret_base", - "color": "light_gray", - "name": "broken 9mm turret", - "description": "A broken 9mm defense turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_turret_shot", - "type": "GENERIC", - "copy-from": "broken_turret_base", - "color": "red", - "name": "broken 9mm turret", - "description": "A broken shotgun defense turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_turret_teargas", - "type": "GENERIC", - "copy-from": "broken_turret_base", - "color": "blue", - "name": "broken riot control turret", - "description": "A broken riot control turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_turret_beanbag", - "type": "GENERIC", - "copy-from": "broken_turret_base", - "color": "blue", - "name": "broken riotcontrol turret", - "description": "A broken 9mm defense turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_milturret_556", - "type": "GENERIC", - "copy-from": "broken_milturret_base", - "color": "light_green", - "name": "broken 5.56mm turret", - "description": "A broken military-grade 5.56mm turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_turret_rifle", - "type": "GENERIC", - "copy-from": "broken_milturret_base", - "color": "light_green", - "name": "broken 5.56mm turret", - "description": "A broken military-grade 5.56mm turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_milturret_308", - "type": "GENERIC", - "copy-from": "broken_turret_base", - "color": "light_green", - "name": "broken 7.62mm turret", - "description": "A broken military-grade 7.62mm turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_milturret_50bmg", - "type": "GENERIC", - "copy-from": "broken_milturret_base", - "color": "green", - "name": "broken 50cal turret", - "description": "A broken military-grade 50 caliber turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_turret_bmg", - "type": "GENERIC", - "copy-from": "broken_milturret_base", - "color": "green", - "name": "broken 50cal turret", - "description": "A broken military-grade 50 caliber turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_milturret_40mm", - "type": "GENERIC", - "copy-from": "broken_milturret_base", - "color": "light_green", - "name": "broken 40mm turret", - "description": "A broken military-grade 40mm grenade turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_milturret_needle", - "type": "GENERIC", - "copy-from": "broken_milturret_base", - "color": "light_red", - "name": "broken 5.56mm turret", - "description": "A broken military-grade 5x50 flechette turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_milturret_8x40mm", - "type": "GENERIC", - "copy-from": "broken_milturret_base", - "color": "red", - "name": "broken 8x40mm turret", - "description": "A broken military-grade 8x40mm turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_milturret_flame", - "type": "GENERIC", - "copy-from": "broken_milturret_base", - "color": "red", - "name": "broken flamethrower turret", - "description": "A broken military-grade flamethrower turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_advturret_laser", - "type": "GENERIC", - "copy-from": "broken_advturret_base", - "color": "yellow", - "name": "broken laser turret", - "description": "A broken advanced laser emitter turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_laserturret", - "type": "GENERIC", - "copy-from": "broken_advturret_base", - "color": "yellow", - "name": "broken laser turret", - "description": "A broken advanced laser emitter turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_advturret_acid", - "type": "GENERIC", - "copy-from": "broken_advturret_base", - "color": "light_green", - "name": "broken acid turret", - "description": "A broken advanced acid thrower turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_advturret_plasma", - "type": "GENERIC", - "copy-from": "broken_advturret_base", - "color": "magenta", - "name": "broken plasma turret", - "description": "A broken advanced plasma ejector turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_advturret_rail", - "type": "GENERIC", - "copy-from": "broken_advturret_base", - "color": "yellow", - "name": "broken rail gun turret", - "description": "A broken advanced rail gun turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_advturret_acid", - "type": "GENERIC", - "copy-from": "broken_advturret_base", - "color": "light_green", - "name": "broken acid turret", - "description": "A broken advanced acid projector turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_advturret_lightning", - "type": "GENERIC", - "copy-from": "broken_advturret_base", - "color": "white", - "name": "broken electro turret", - "description": "A broken advanced electro caster turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_advturret_emp", - "type": "GENERIC", - "copy-from": "broken_advturret_base", - "color": "yellow", - "name": "broken EMP turret", - "description": "A broken advanced EMP generator turret. Much less threatening now that it lies limp on solid ground. Could be gutted for parts." - }, - { - "id": "broken_turret_gnome", - "type": "GENERIC", - "copy-from": "broken_turret_base", - "color": "light_gray", - "name": "broken gaurdin gnome", - "description": "A broken and completely harmless garden gnome." - }, - { - "abstract": "broken_hack_base", - "type": "GENERIC", - "symbol": ",", - "color": "light_green", - "name": "broken hack", - "looks_like": "broken_manhack", - "category": "other", - "description": "A broken manhack. Much less threatening now that it lies limp on solid ground. Could be gutted for parts.", - "price": 9000, - "price_postapoc": 1000, - "material": [ "aluminum", "plastic" ], - "weight": "5400 g", - "volume": "750 ml", - "bashing": 6, - "cutting": 6, - "to_hit": -3, - "flags": [ "TRADER_AVOID" ] - }, - { - "type": "GENERIC", - "id": "broken_manhack", - "copy-from": "broken_hack_base", - "color": "light_green", - "name": "broken manhack", - "description": "A broken manhack. Much less threatening now that it lies limp on solid ground. Could be gutted for parts.", - "price": 1000, - "weight": 5400 - }, - { - "type": "GENERIC", - "id": "broken_grenade_hack", - "copy-from": "broken_hack_base", - "color": "green", - "name": "broken grenade hack", - "description": "A broken grenade hack. Much less threatening now that it lies quiet on solid ground. Could be gutted for parts.", - "weight": 4480 - }, - { - "type": "GENERIC", - "id": "broken_mininuke_hack", - "copy-from": "broken_hack_base", - "color": "magenta", - "name": "broken mininuke hack", - "description": "A broken magenta hack. Just looking at the wreck makes you shiver. Could be gutted for parts.", - "price": 18000, - "weight": 12670 - }, - { - "type": "GENERIC", - "id": "broken_gasbomb_hack", - "copy-from": "broken_hack_base", - "color": "dark_gray", - "name": "broken tear gas hack", - "description": "A broken tear gas hack. Much less threatening now that it lies quiet on solid ground. Could be gutted for parts.", - "weight": 5360 - }, - { - "type": "GENERIC", - "id": "broken_EMP_hack", - "copy-from": "broken_hack_base", - "color": "cyan", - "name": "broken EMP hack", - "description": "A broken EMP hack. Much less threatening now that it lies quiet on solid ground. Could be gutted for parts.", - "weight": 4700 - }, - { - "type": "GENERIC", - "id": "broken_flashbang_hack", - "copy-from": "broken_hack_base", - "color": "dark_gray", - "name": "broken flashbang hack", - "description": "A broken flashbang hack. Much less threatening now that it lies quiet on solid ground. Could be gutted for parts.", - "weight": 4700 - }, - { - "type": "GENERIC", - "id": "broken_c4_hack", - "copy-from": "broken_hack_base", - "color": "light_gray", - "name": "broken C-4 hack", - "description": "A broken C-4 hack. Much less threatening now that it lies quiet on solid ground. Could be gutted for parts.", - "weight": 5870 - }, - { - "type": "GENERIC", - "id": "broken_eyebot", - "symbol": ",", - "color": "green", - "name": "broken eyebot", - "category": "other", - "description": "A broken eyebot. Much less threatening now that it won't be calling for backup. Could be gutted for parts.", - "price": 1000, - "material": [ "steel", "plastic" ], - "weight": "31520 g", - "volume": "15 L", - "bashing": 6, - "cutting": 6, - "to_hit": -3, - "flags": [ "TRADER_AVOID" ] - }, - { - "type": "GENERIC", - "id": "broken_eyebot", - "symbol": ",", - "color": "green", - "name": "broken eyebot", - "looks_like": "broken_eyebot", - "category": "other", - "description": "A broken eyebot, now dark and motionless. Could be stripped down for parts.", - "price": 1000, - "material": [ "steel", "plastic" ], - "weight": "31520 g", - "volume": "15 L", - "bashing": 6, - "cutting": 6, - "to_hit": -3, - "flags": [ "TRADER_AVOID", "LEAK_DAM", "RADIOACTIVE" ] - }, - { - "type": "GENERIC", - "id": "broken_eyebot_disarmed", - "copy-from": "broken_eyebot", - "name": "broken disarmed eyebot", - "description": "A broken eyebot. Its integrated weapon module has been removed. Could be gutted for parts or crafted into a salvaged robot." - }, - { - "type": "GENERIC", - "id": "broken_utilibot", - "symbol": ",", - "color": "light_gray", - "looks_like": "broken_cleanerbot", - "name": "broken utility robot", - "category": "other", - "description": "A broken utility robot, now limp and unmoving. Could be gutted for parts or crafted into a salvaged robot.", - "material": [ "steel", "plastic" ], - "weight": "140 kg", - "volume": "62500 ml", - "bashing": 6, - "cutting": 6, - "to_hit": -3, - "flags": [ "TRADER_AVOID", "LEAK_DAM", "RADIOACTIVE" ] - }, - { - "type": "GENERIC", - "id": "broken_hazmatbot", - "name": "broken utility robot", - "copy-from": "broken_utilibot", - "color": "green" - }, - { - "type": "GENERIC", - "id": "broken_skitterbot_disarmed", - "symbol": ",", - "color": "green", - "looks_like": "broken_skitterbot", - "name": "broken disarmed skitterbot", - "category": "other", - "description": "A broken skitterbot. Its internal weapon modules have been removed. Could be gutted for parts or crafted into a salvaged robot.", - "price": 1000, - "material": [ "steel", "plastic" ], - "weight": "62650 g", - "volume": "30 L", - "bashing": 4, - "cutting": 4, - "to_hit": -3, - "flags": [ "TRADER_AVOID", "LEAK_DAM", "RADIOACTIVE" ] - }, - { - "type": "GENERIC", - "id": "broken_skitterbot", - "copy-from": "broken_skitterbot_disarmed", - "color": "light_blue", - "name": "broken skitterbot", - "description": "A broken skitterbot, now harmless and inert. Could be stripped of integral weapon modules." - }, - { - "type": "GENERIC", - "id": "broken_defbot_disarmed", - "symbol": ",", - "color": "light_gray", - "looks_like": "broken_riotbot", - "name": "broken disarmed defense bot", - "category": "other", - "description": "A broken defense robot. Its internal weapons have been removed. Could be gutted for parts or crafted into a salvaged robot.", - "price": 30000, - "price_postapoc": 1000, - "material": [ "steel", "plastic" ], - "weight": "140 kg", - "volume": "62500 ml", - "bashing": 6, - "cutting": 6, - "to_hit": -3, - "flags": [ "TRADER_AVOID", "LEAK_DAM", "RADIOACTIVE" ] - }, - { - "type": "GENERIC", - "id": "broken_secubot", - "copy-from": "broken_defbot_disarmed", - "color": "light_gray", - "name": "broken security robot", - "description": "A broken defense robot. Its internal weapons have been removed. Could be gutted for parts or crafted into a salvaged robot." - }, - { - "type": "GENERIC", - "id": "broken_riotbot", - "copy-from": "broken_defbot_disarmed", - "color": "light_gray", - "name": "broken riotcontrol robot", - "description": "A broken defense robot. Its internal weapons have been removed. Could be gutted for parts or crafted into a salvaged robot." - }, - { - "type": "GENERIC", - "id": "broken_defbot_riotcontrol", - "copy-from": "broken_defbot_disarmed", - "color": "light_gray", - "name": "broken riotcontrol robot", - "description": "A broken defense robot. Its internal weapons have been removed. Could be gutted for parts or crafted into a salvaged robot." - }, - { - "type": "GENERIC", - "id": "broken_copbot", - "copy-from": "broken_defbot_disarmed", - "color": "light_gray", - "name": "broken riotcontrol robot", - "description": "A broken defense robot. Its internal weapons have been removed. Could be gutted for parts or crafted into a salvaged robot." - }, - { - "type": "GENERIC", - "id": "broken_molebot", - "symbol": ",", - "color": "green", - "name": "broken miner bot", - "category": "other", - "description": "A broken miner bot. Much less threatening now that it's no longer capable of drilling anything. Could be gutted for parts.", - "price": 20000, - "price_postapoc": 1000, - "material": [ "steel", "plastic" ], - "weight": "170200 g", - "volume": "62500 ml", - "bashing": 6, - "cutting": 10, - "to_hit": -3, - "flags": [ "TRADER_AVOID" ] - }, - { - "type": "GENERIC", - "id": "broken_chickenbot", - "symbol": ",", - "color": "light_gray", - "name": "broken chickenwalker", - "category": "other", - "description": "A broken chickenwalker. Could be stripped for parts.", - "price": 1000, - "material": [ "steel", "plastic" ], - "weight": "430 kg", - "volume": "187500 ml", - "bashing": 10, - "cutting": 6, - "to_hit": -2, - "flags": [ "TRADER_AVOID", "LEAK_DAM", "RADIOACTIVE" ] - }, - { - "type": "GENERIC", - "id": "broken_chickenbot_disarmed", - "symbol": ",", - "color": "light_gray", - "looks_like": "broken_chickenbot", - "name": "broken disarmed chickenwalker", - "category": "other", - "description": "A broken chickenwalker. Its internal weapons have been removed. Could be gutted for parts or crafted into a salvaged robot.", - "price": 1000, - "material": [ "steel", "plastic" ], - "weight": "430 kg", - "volume": "187500 ml", - "bashing": 10, - "cutting": 6, - "to_hit": -2, - "flags": [ "TRADER_AVOID", "LEAK_DAM", "RADIOACTIVE" ] - }, - { - "type": "GENERIC", - "id": "broken_tankbot", - "symbol": ",", - "color": "green", - "name": "broken tank drone", - "category": "other", - "description": "A broken tank drone. Could be stripped down for parts.", - "price": 1000, - "material": [ "steel", "plastic" ], - "weight": "1223850 g", - "volume": "875 L", - "bashing": 20, - "cutting": 15, - "to_hit": -3, - "flags": [ "TRADER_AVOID", "LEAK_DAM", "RADIOACTIVE" ] - }, - { - "type": "GENERIC", - "id": "broken_tankbot_disarmed", - "symbol": ",", - "color": "green", - "looks_like": "broken_tankbot", - "name": "broken disarmed tank drone", - "category": "other", - "description": "A broken tank drone. Could be gutted for parts or recrafted into a salvaged robot.", - "price": 1000, - "material": [ "steel", "plastic" ], - "weight": "1223850 g", - "volume": "875 L", - "bashing": 20, - "cutting": 15, - "to_hit": -3, - "flags": [ "TRADER_AVOID", "LEAK_DAM", "RADIOACTIVE" ] - } -] diff --git a/data/mods/Modular_Turrets/emit.json b/data/mods/Modular_Turrets/emit.json deleted file mode 100644 index 532cce004d07f..0000000000000 --- a/data/mods/Modular_Turrets/emit.json +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "id": "emit_tear_gas_pulse", - "type": "emit", - "field": "fd_tear_gas", - "intensity": 3, - "qty": 50, - "chance": 15 - } -] diff --git a/data/mods/Modular_Turrets/furniture.json b/data/mods/Modular_Turrets/furniture.json deleted file mode 100644 index 41170193ebe1a..0000000000000 --- a/data/mods/Modular_Turrets/furniture.json +++ /dev/null @@ -1,23 +0,0 @@ -[ - { - "type": "furniture", - "id": "f_gnome", - "name": "garden gnome", - "description": "A normal and completely harmless garden gnome.", - "symbol": "g", - "looks_like": "mon_kreck", - "color": "white", - "move_cost_mod": -1, - "required_str": 1, - "flags": [ "TRANSPARENT", "EASY_DECONSTRUCT" ], - "deployed_item": "garden_gnome", - "examine_action": "deployed_furniture", - "bash": { - "str_min": 1, - "str_max": 40, - "sound": "krash!", - "sound_fail": "krak.", - "items": [ { "item": "ceramic_shard", "count": [ 2, 6 ] } ] - } - } -] diff --git a/data/mods/Modular_Turrets/item_groups.json b/data/mods/Modular_Turrets/item_groups.json deleted file mode 100644 index 869d165f47576..0000000000000 --- a/data/mods/Modular_Turrets/item_groups.json +++ /dev/null @@ -1,116 +0,0 @@ -[ - { - "type": "item_group", - "id": "hacks", - "items": [ [ "bot_manhack", 200 ], [ "bot_grenade_hack", 100 ], [ "bot_flashbang_hack", 50 ], [ "bot_gasbomb_hack", 50 ] ] - }, - { - "type": "item_group", - "id": "turrets", - "items": [ - [ "bot_turret_disarmed", 200 ], - [ "bot_turret_9mm", 200 ], - [ "bot_turret_teargas", 100 ], - [ "bot_turret_beanbag", 100 ], - [ "bot_milturret_disarmed", 100 ], - [ "bot_milturret_556", 100 ], - [ "bot_milturret_308", 50 ], - [ "bot_milturret_50bmg", 50 ], - [ "bot_milturret_8x40mm", 50 ], - [ "bot_milturret_needle", 50 ], - [ "bot_milturret_flame", 100 ], - [ "bot_advturret_disarmed", 100 ], - [ "bot_advturret_laser", 50 ], - [ "bot_advturret_acid", 20 ], - [ "bot_advturret_plasma", 20 ], - [ "bot_advturret_rail", 0 ], - [ "bot_advturret_lightning", 20 ], - [ "bot_advturret_emp", 20 ] - ] - }, - { - "type": "item_group", - "id": "roboguns", - "items": [ - [ "robopart_9mm", 200 ], - [ "robopart_tazer", 100 ], - [ "robopart_flash", 50 ], - [ "robopart_teargas", 100 ], - [ "robopart_beanbag", 100 ], - [ "robopart_556", 100 ], - [ "robopart_308", 50 ], - [ "robopart_50bmg", 50 ], - [ "robopart_8x40mm", 50 ], - [ "robopart_needle", 50 ], - [ "robopart_flame", 100 ], - [ "robopart_laser", 50 ], - [ "robopart_acid", 20 ], - [ "robopart_plasma", 20 ], - [ "robopart_rail", 0 ], - [ "robopart_lightning", 20 ], - [ "robopart_emp", 20 ] - ] - }, - { - "type": "item_group", - "id": "bots", - "items": [ { "group": "roboguns", "prob": 25 }, { "group": "hacks", "prob": 75 }, { "group": "turrets", "prob": 100 } ] - }, - { - "type": "item_group", - "id": "military", - "items": [ { "group": "roboguns", "prob": 25 }, { "group": "hacks", "prob": 50 }, { "group": "turrets", "prob": 50 } ] - }, - { - "type": "item_group", - "id": "helicopter", - "magazine": 100, - "items": [ { "group": "hacks", "prob": 20 }, { "group": "turrets", "prob": 20 } ] - }, - { - "type": "item_group", - "id": "science", - "items": [ { "group": "roboguns", "prob": 80 }, { "group": "hacks", "prob": 5 } ] - }, - { - "type": "item_group", - "id": "livingroom", - "items": [ [ "garden_gnome", 50 ] ] - }, - { - "type": "item_group", - "id": "home_hw", - "items": [ [ "garden_gnome", 20 ] ] - }, - { - "type": "item_group", - "id": "bedroom", - "items": [ [ "garden_gnome", 6 ] ] - }, - { - "type": "item_group", - "id": "hardware", - "items": [ [ "garden_gnome", 20 ] ] - }, - { - "type": "item_group", - "id": "mischw", - "subtype": "collection", - "items": [ [ "garden_gnome", 5 ] ] - }, - { - "type": "item_group", - "id": "trash", - "items": [ [ "garden_gnome", 5 ] ] - }, - { - "type": "item_group", - "id": "pawn", - "items": [ [ "garden_gnome", 20 ] ] - }, - { - "type": "item_group", - "id": "flower_pots", - "items": [ [ "garden_gnome", 5 ] ] - } -] diff --git a/data/mods/Modular_Turrets/items.json b/data/mods/Modular_Turrets/items.json deleted file mode 100644 index 6e8324640375c..0000000000000 --- a/data/mods/Modular_Turrets/items.json +++ /dev/null @@ -1,651 +0,0 @@ -[ - { - "id": "electrohack", - "type": "TOOL", - "category": "tools", - "name": "electrohack", - "description": "This device has many ports attached, allowing it to connect to almost any control panel or other electronic machine (but not computers). With a little skill, it can be used to crack passwords and more. It requires 25 charges of battery power per use.", - "weight": "114 g", - "volume": "500 ml", - "price": 40000, - "price_postapoc": 10000, - "to_hit": 1, - "bashing": 5, - "material": [ "plastic", "aluminum" ], - "symbol": ",", - "color": "green", - "ammo": "battery", - "magazines": [ - [ - "battery", - [ - "light_battery_cell", - "light_plus_battery_cell", - "light_minus_battery_cell", - "light_minus_atomic_battery_cell", - "light_atomic_battery_cell", - "light_minus_disposable_cell", - "light_disposable_cell" - ] - ] - ] - }, - { - "abstract": "robopart_base", - "type": "GENERIC", - "category": "spare_parts", - "name": "robot component", - "description": "A component for turrets and robots. It is unuseable in its current state.", - "weight": "3 kg", - "volume": "2 L", - "price": 1000, - "price_postapoc": 1000, - "material": "steel", - "symbol": ";", - "looks_like": "power_supply", - "color": "light_gray" - }, - { - "id": "robopart_microreactor", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral microreactor", - "description": "A compact fusion reactor used to power a robot's energy weapons.", - "color": "pink" - }, - { - "id": "robopart_flash", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral flash gun", - "color": "pink" - }, - { - "id": "robopart_tazer", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral tazer", - "color": "pink" - }, - { - "id": "robopart_9mm", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral 9mm firearm" - }, - { - "id": "robopart_556", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral 5.56mm firearm" - }, - { - "id": "robopart_308", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral 7.62mm firearm" - }, - { - "id": "robopart_shot", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral shotgun" - }, - { - "id": "robopart_beanbag", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral beanbag launcher" - }, - { - "id": "robopart_teargas", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral teargas launcher" - }, - { - "id": "robopart_flame", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral flamethrower" - }, - { - "id": "robopart_needle", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral flechette firearm" - }, - { - "id": "robopart_8x40mm", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral 8x40mm firearm" - }, - { - "id": "robopart_50bmg", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral 50 caliber firearm" - }, - { - "id": "robopart_40mm", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral grenade launcher" - }, - { - "id": "robopart_laser", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral laser weapon" - }, - { - "id": "robopart_plasma", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral plasma ejector" - }, - { - "id": "robopart_rail", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral electromagnetic railgun" - }, - { - "id": "robopart_acid", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral acid thrower" - }, - { - "id": "robopart_lightning", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral electro caster" - }, - { - "id": "robopart_emp", - "type": "GENERIC", - "copy-from": "robopart_base", - "name": "integral EMP projector" - }, - { - "abstract": "bot_turret_base", - "type": "TOOL", - "name": "inactive turret", - "weight": "1507 g", - "volume": "3 L", - "to_hit": -3, - "bashing": 8, - "material": [ "steel", "plastic" ], - "symbol": ";", - "looks_like": "bot_turret" - }, - { - "id": "bot_turret_disarmed", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "disarmed defense turret", - "description": "An automated defense turret. It lacks an integrated weapon.", - "price": 10000, - "price_postapoc": 10000, - "color": "light_green", - "use_action": { - "type": "place_monster", - "monster_id": "mon_turret_disarmed", - "difficulty": 4, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_milturret_disarmed", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "disarmed military turret", - "description": "An automated military turret. It lacks an integrated weapon.", - "price": 10000, - "price_postapoc": 10000, - "color": "green", - "use_action": { - "type": "place_monster", - "monster_id": "mon_milturret_disarmed", - "difficulty": 5, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_advturret_disarmed", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "disarmed advanced turret", - "description": "An advanced automated turret. It lacks an integrated weapon.", - "price": 10000, - "price_postapoc": 10000, - "color": "magenta", - "use_action": { - "type": "place_monster", - "monster_id": "mon_advturret_disarmed", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_turret_9mm", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "inactive 9mm defense turret", - "description": "An inactive 9mm defense turret. Up to 100 standard 9mm rounds will be automatically loaded from your inventory into the turret upon activation. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "red", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_turret_9mm", - "difficulty": 4, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_turret", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "inactive 9mm defense turret", - "description": "An inactive 9mm defense turret. Up to 100 standard 9mm rounds will be automatically loaded from your inventory into the turret upon activation. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "red", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_turret_9mm", - "difficulty": 4, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_turret_shot", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "inactive shotgun defense turret", - "description": "An inactive shotgun defense turret. Up to 100 standard 12ga shells will be automatically loaded from your inventory into the turret upon activation. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "red", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_turret_shot", - "difficulty": 4, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_turret_beanbag", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "inactive riot control turret", - "description": "An inactive riotcontrol turret. Up to 50 standard 40mm less-than-lethal beanbag canisters will be automatically loaded from your inventory into the turret upon activation. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "yellow", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_turret_beanbag", - "difficulty": 5, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_turret_teargas", - "copy-from": "bot_turret_base", - "type": "TOOL", - "name": "inactive riot control turret", - "description": "An inactive riot control turret. Up to 50 standard 40mm teargas canisters will be automatically loaded from your inventory into the turret upon activation. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "yellow", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_turret_teargas", - "difficulty": 5, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_milturret_556", - "copy-from": "bot_turret_base", - "type": "TOOL", - "name": "inactive 5.56mm military turret", - "description": "An inactive 5.56mm military turret. Up to 100 standard 5.56mm NATO rounds will be automatically loaded from your inventory into the turret upon activation. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "green", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_milturret_556", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_rifleturret", - "copy-from": "bot_turret_base", - "type": "TOOL", - "name": "inactive 5.56mm military turret", - "description": "An inactive 5.56mm military turret. Up to 100 standard 5.56mm NATO rounds will be automatically loaded from your inventory into the turret upon activation. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "green", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_milturret_556", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_milturret_308", - "copy-from": "bot_turret_base", - "type": "TOOL", - "name": "inactive 7.62mm military turret", - "description": "An inactive 7.62mm military turret. Up to 100 standard 7.62mm NATO rounds will be automatically loaded from your inventory into the turret upon activation. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "green", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_milturret_308", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_milturret_50bmg", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "inactive 50 caliber military turret", - "description": "An inactive 50 caliber military turret. Up to 100 standard 50 caliber bmg rounds will be automatically loaded from your inventory into the turret upon activation. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "red", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_milturret_50bmg", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_antimateriel", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "inactive 50 caliber military turret", - "description": "An inactive 50 caliber military turret. Up to 100 standard 50 caliber bmg rounds will be automatically loaded from your inventory into the turret upon activation. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "red", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_milturret_50bmg", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_milturret_needle", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "inactive military needle turret", - "description": "An inactive advanced needle turret. Up to 100 standard 5x50mm flechette rounds will be automatically loaded from your inventory into the turret upon activation. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "red", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_milturret_needle", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_milturret_8x40mm", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "inactive military 8x40mm turret", - "description": "An inactive advanced 8x40mm turret. Up to 100 standard 8x40mm caseless rounds will be automatically loaded from your inventory into the turret upon activation. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "red", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_milturret_8x40mm", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_milturret_40mm", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "inactive military 40mm grenade turret", - "description": "An inactive military grenade turret. Up to 50 standard 40mm fragmentation grenades will be automatically loaded from your inventory into the turret upon activation. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "red", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_milturret_40mm", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_milturret_flame", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "inactive military flamethrower turret", - "description": "An inactive flame turret. Up to 100 units of napalm will be automatically loaded from your inventory into the turret upon activation. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "red", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_milturret_flame", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_advturret_laser", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "inactive advanced laser turret", - "description": "An inactive advanced laser turret. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "yellow", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_advturret_laser", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_laserturret", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "inactive advanced laser turret", - "description": "An inactive advanced laser turret. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "yellow", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_advturret_laser", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_advturret_plasma", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "inactive advanced plasma turret", - "description": "An inactive advanced plasma turret. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "pink", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_advturret_plasma", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_advturret_rail", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "inactive advanced railgun turret", - "description": "An inactive advanced railgun turret. Up to 50 standard rail projectiles will be automatically loaded from your inventory into the turret upon activation. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "magenta", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_advturret_rail", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_advturret_acid", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "inactive advanced acid turret", - "description": "An inactive advanced acid turret. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "color": "light_green", - "price": 10000, - "price_postapoc": 10000, - "use_action": { - "type": "place_monster", - "monster_id": "mon_advturret_acid", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_advturret_emp", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "inactive advanced EMP turret", - "description": "An inactive advanced EMP turret. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "price": 10000, - "price_postapoc": 10000, - "color": "light_green", - "use_action": { - "type": "place_monster", - "monster_id": "mon_advturret_emp", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "bot_advturret_lightning", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "inactive advanced electro turret", - "description": "An inactive advanced electro turret. Place the turret and it will ID you as friendly with its advanced IFF software. Consult your safety manual in the event of a malfunction.", - "price": 10000, - "price_postapoc": 10000, - "color": "light_blue", - "use_action": { - "type": "place_monster", - "monster_id": "mon_advturret_lightning", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - }, - { - "id": "garden_gnome", - "type": "TOOL", - "category": "other", - "name": "garden gnome", - "description": "A normal and completely harmless garden gnome. You can place him in your garden or elsewhere.", - "weight": "650 g", - "volume": "500 ml", - "price": 1000, - "to_hit": -3, - "bashing": 1, - "material": "glass", - "symbol": ";", - "color": "white", - "flags": [ "NONCONDUCTIVE", "FRAGILE_MELEE" ], - "use_action": { "type": "deploy_furn", "furn_type": "f_gnome" } - }, - { - "id": "bot_turret_gnome", - "type": "TOOL", - "copy-from": "bot_turret_base", - "name": "gaurdin gnome", - "price": 10000, - "price_postapoc": 10000, - "description": "A normal and completely harmless garden gnome. He holds up to 100 rounds of 9mm ammo.", - "color": "white", - "use_action": { - "type": "place_monster", - "monster_id": "mon_turret_gnome", - "difficulty": 6, - "moves": 100, - "skill1": "electronics", - "skill2": "computer" - } - } -] diff --git a/data/mods/Modular_Turrets/modinfo.json b/data/mods/Modular_Turrets/modinfo.json deleted file mode 100644 index a46a714be7dcb..0000000000000 --- a/data/mods/Modular_Turrets/modinfo.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - { - "type": "MOD_INFO", - "ident": "modular_turrets", - "name": "Modular Turrets", - "authors": [ "Sunshine" ], - "description": "Gives turrets swappable firearm modules, which can be reclaimed from broken robots.", - "category": "creatures", - "dependencies": [ "dda" ], - "obsolete": true - } -] diff --git a/data/mods/Modular_Turrets/monster.json b/data/mods/Modular_Turrets/monster.json deleted file mode 100644 index c1b765fe26d82..0000000000000 --- a/data/mods/Modular_Turrets/monster.json +++ /dev/null @@ -1,597 +0,0 @@ -[ - { - "abstract": "base_turret", - "type": "MONSTER", - "name": "automated turret", - "default_faction": "defense_bot", - "species": [ "ROBOT" ], - "volume": "30000 ml", - "weight": "40750 g", - "hp": 30, - "speed": 100, - "material": [ "steel" ], - "symbol": "t", - "looks_like": "mon_turret", - "aggression": 100, - "morale": 100, - "armor_bash": 14, - "armor_cut": 16, - "armor_acid": 14, - "death_function": [ "BROKEN" ], - "death_drops": "broken_robots", - "flags": [ "SEES", "NOHEAD", "ELECTRONIC", "IMMOBILE", "NO_BREATHE" ] - }, - { - "id": "mon_turret_disarmed", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "disarmed defense turret", - "symbol": "t", - "description": "The General Atomics TX-series turret, a small, pill-shaped automated gun turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. It requires an integrated firearm module to work.", - "default_faction": "defense_bot", - "diff": 14, - "color": "light_gray", - "revert_to_itype": "bot_turret_disarmed" - }, - { - "id": "mon_milturret_disarmed", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "disarmed military turret", - "symbol": "t", - "description": "The Leadworks LLC's TX series turret, a military-grade automated gun turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. It requires a integrated gun module to operate.", - "color": "light_gray", - "revert_to_itype": "bot_milturret_disarmed" - }, - { - "id": "mon_advturret_disarmed", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "disarmed advanced turret", - "symbol": "t", - "description": "The DoubleTech T-series turret, an advanced automated gun turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. It requires an integrated gun module to function.", - "default_faction": "defense_bot", - "color": "light_gray", - "revert_to_itype": "bot_advturret_disarmed" - }, - { - "id": "mon_turret_9mm", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "9mm turret", - "symbol": "t", - "description": "The General Atomics TX-1 Guardian, a small, pill-shaped automated gun turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. Its integrated 9mm sub machinegun can swivel a full 360 degrees.", - "default_faction": "defense_bot", - "diff": 10, - "color": "light_gray", - "revert_to_itype": "bot_turret_9mm", - "starting_ammo": { "9mm": 100 }, - "special_attacks": [ - { - "type": "gun", - "cooldown": 2, - "gun_type": "robogun_9mm", - "ammo_type": "9mm", - "fake_skills": [ [ "gun", 2 ], [ "smg", 2 ] ], - "fake_dex": 9, - "no_ammo_sound": "click click!", - "ranges": [ [ 0, 2, "BURST" ], [ 3, 6, "AUTO" ], [ 7, 12, "DEFAULT" ] ] - } - ], - "extend": { "flags": [ "DROPS_AMMO" ] } - }, - { - "id": "mon_turret_shot", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "shotgun turret", - "symbol": "t", - "description": "The General Atomics TX-4 Protector, a small, pill-shaped automated gun turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. Its integrated 12ga shotgun can swivel a full 360 degrees.", - "default_faction": "defense_bot", - "diff": 10, - "color": "red", - "revert_to_itype": "bot_turret_shot", - "starting_ammo": { "shot_00": 100 }, - "special_attacks": [ - { - "type": "gun", - "cooldown": 2, - "gun_type": "robogun_shot", - "ammo_type": "shot", - "fake_skills": [ [ "gun", 2 ], [ "shotgun", 2 ] ], - "fake_dex": 9, - "no_ammo_sound": "click click!", - "ranges": [ [ 0, 8, "DEFAULT" ] ] - } - ], - "extend": { "flags": [ "DROPS_AMMO" ] } - }, - { - "id": "mon_turret_teargas", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "riot control turret", - "symbol": "t", - "description": "The General Atomics TZ-1a Warden, a small, pill-shaped automated gun turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. Its integrated 40mm teargas launcher can swivel a full 360 degrees.", - "default_faction": "cop_bot", - "diff": 10, - "color": "blue", - "revert_to_itype": "bot_turret_teargas", - "starting_ammo": { "40x46mm_m651": 50 }, - "special_attacks": [ - { - "type": "gun", - "cooldown": 2, - "gun_type": "robogun_teargas", - "ammo_type": "40x46mm_m651", - "fake_skills": [ [ "gun", 2 ], [ "launcher", 2 ] ], - "fake_dex": 9, - "no_ammo_sound": "click click!", - "ranges": [ [ 0, 6, "DEFAULT" ], [ 7, 12, "BURST" ] ] - } - ], - "extend": { "flags": [ "DROPS_AMMO" ] } - }, - { - "id": "mon_turret_beanbag", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "riot control turret", - "symbol": "t", - "description": "The General Atomics TZ-1b Pacifier, a small, pill-shaped automated gun turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. Its integrated 40mm beanbag launcher can swivel a full 360 degrees.", - "default_faction": "cop_bot", - "diff": 5, - "color": "blue", - "revert_to_itype": "bot_turret_beanbag", - "starting_ammo": { "40x46mm_m1006": 50 }, - "special_attacks": [ - { - "type": "gun", - "cooldown": 1, - "gun_type": "robogun_beanbag", - "ammo_type": "40x46mm_m1006", - "fake_skills": [ [ "gun", 2 ], [ "launcher", 2 ] ], - "fake_dex": 9, - "no_ammo_sound": "click click!", - "ranges": [ [ 0, 8, "DEFAULT" ] ] - } - ], - "extend": { "flags": [ "DROPS_AMMO" ] } - }, - { - "id": "mon_milturret_556", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "5.56mm turret", - "symbol": "t", - "description": "The Leadworks LLC's TX-32L Sentry, a military-grade automated machinegun turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. Its integrated 5.56 rifle can swivel a full 360 degrees.", - "default_faction": "military", - "diff": 20, - "color": "green", - "revert_to_itype": "bot_milturret_556", - "starting_ammo": { "556": 1600 }, - "special_attacks": [ - { - "type": "gun", - "cooldown": 2, - "gun_type": "robogun_556", - "ammo_type": "556", - "fake_skills": [ [ "gun", 5 ], [ "rifle", 5 ] ], - "fake_dex": 10, - "no_ammo_sound": "click!", - "ranges": [ [ 0, 4, "BURST" ], [ 4, 8, "AUTO" ], [ 9, 16, "DEFAULT" ] ], - "require_targeting_player": true, - "require_targeting_npc": true, - "require_targeting_monster": true, - "targeting_cost": 10, - "targeting_timeout_extend": -1, - "targeting_sound": "\"Hostile Detected.\"", - "targeting_volume": 10 - } - ], - "extend": { "flags": [ "DROPS_AMMO" ] } - }, - { - "id": "mon_milturret_308", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "7.62mm turret", - "symbol": "t", - "description": "The Leadworks LLC's TX-32H Sentry, a military-grade automated machinegun turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. Its integrated 7.62 rifle can swivel a full 360 degrees.", - "default_faction": "military", - "diff": 20, - "color": "green", - "revert_to_itype": "bot_milturret_308", - "starting_ammo": { "762_51": 1000 }, - "special_attacks": [ - { - "type": "gun", - "cooldown": 2, - "gun_type": "robogun_308", - "ammo_type": "762_51", - "fake_skills": [ [ "gun", 5 ], [ "rifle", 5 ] ], - "fake_dex": 10, - "no_ammo_sound": "click!", - "ranges": [ [ 0, 4, "BURST" ], [ 4, 8, "AUTO" ], [ 9, 18, "DEFAULT" ] ], - "require_targeting_player": true, - "require_targeting_npc": true, - "require_targeting_monster": true, - "targeting_cost": 10, - "targeting_timeout_extend": -1, - "targeting_sound": "\"Hostile Detected.\"", - "targeting_volume": 10 - } - ], - "extend": { "flags": [ "DROPS_AMMO" ] } - }, - { - "id": "mon_milturret_50bmg", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "50cal turret", - "symbol": "t", - "description": "The Leadworks LLC's TX-13 Sentry, a military-grade automated machinegun turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. Its integrated 50 caliber machinegun can swivel a full 360 degrees.", - "default_faction": "military", - "diff": 30, - "color": "green", - "revert_to_itype": "bot_milturret_50bmg", - "starting_ammo": { "50bmg": 400 }, - "special_attacks": [ - { - "type": "gun", - "cooldown": 3, - "move_cost": 150, - "gun_type": "robogun_50bmg", - "ammo_type": "50bmg", - "fake_skills": [ [ "gun", 5 ], [ "rifle", 5 ] ], - "fake_dex": 10, - "no_ammo_sound": "click!", - "ranges": [ [ 0, 5, "DEFAULT" ], [ 6, 10, "BURST" ], [ 11, 20, "DEFAULT" ] ], - "require_targeting_player": true, - "require_targeting_npc": true, - "require_targeting_monster": true, - "targeting_cost": 10, - "targeting_timeout_extend": -1, - "targeting_sound": "\"Hostile Detected.\"", - "targeting_volume": 10 - } - ], - "extend": { "flags": [ "DROPS_AMMO" ] } - }, - { - "id": "mon_milturret_8x40mm", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "8x40mm turret", - "symbol": "t", - "description": "The Leadworks LLC's TX-01A Warden, a military-grade automated machinegun turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. Its integrated 8x40mm rifle can swivel a full 360 degrees.", - "default_faction": "military", - "diff": 20, - "color": "green", - "revert_to_itype": "bot_milturret_8x40mm", - "starting_ammo": { "8mm_caseless": 1200 }, - "special_attacks": [ - { - "type": "gun", - "cooldown": 2, - "gun_type": "robogun_8x40mm", - "ammo_type": "8mm_caseless", - "fake_skills": [ [ "gun", 5 ], [ "rifle", 6 ] ], - "fake_dex": 10, - "no_ammo_sound": "whirrrr!", - "ranges": [ [ 0, 5, "BURST" ], [ 6, 10, "AUTO" ], [ 11, 24, "DEFAULT" ] ], - "require_targeting_player": true, - "require_targeting_npc": true, - "require_targeting_monster": true, - "targeting_cost": 10, - "targeting_timeout_extend": -1, - "targeting_sound": "\"Hostile Detected.\"", - "targeting_volume": 10 - } - ], - "extend": { "flags": [ "DROPS_AMMO" ] } - }, - { - "id": "mon_milturret_needle", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "needle turret", - "symbol": "t", - "description": "The Leadworks LLC's TN-7 Sentry, a military-grade automated flechette turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. Its integrated 5mm flechette gun can swivel a full 360 degrees.", - "default_faction": "military", - "diff": 20, - "color": "green", - "revert_to_itype": "bot_milturret_needle", - "starting_ammo": { "5x50dart": 1000 }, - "special_attacks": [ - { - "type": "gun", - "cooldown": 1, - "gun_type": "robogun_needle", - "ammo_type": "5x50dart", - "fake_skills": [ [ "gun", 5 ], [ "rifle", 5 ] ], - "fake_dex": 10, - "no_ammo_sound": "click!", - "ranges": [ [ 0, 4, "BURST" ], [ 4, 8, "AUTO" ], [ 9, 16, "DEFAULT" ] ], - "require_targeting_player": true, - "require_targeting_npc": true, - "require_targeting_monster": true, - "targeting_cost": 10, - "targeting_timeout_extend": -1, - "targeting_sound": "\"Hostile Detected.\"", - "targeting_volume": 10 - } - ], - "extend": { "flags": [ "DROPS_AMMO" ] } - }, - { - "id": "mon_milturret_40mm", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "40mm grenade turret", - "symbol": "t", - "description": "The Leadworks LLC's TG-7 Sentry, a military-grade automated gun turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. Its integrated 40mm grenade launcher can swivel a full 360 degrees.", - "default_faction": "military", - "diff": 20, - "color": "red", - "revert_to_itype": "bot_milturret_40mm", - "starting_ammo": { "40x46mm_m433": 50 }, - "special_attacks": [ - { - "type": "gun", - "cooldown": 3, - "gun_type": "robogun_40mm", - "ammo_type": "40x46mm_m433", - "fake_skills": [ [ "gun", 4 ], [ "launcher", 5 ] ], - "fake_dex": 10, - "no_ammo_sound": "click!", - "ranges": [ [ 6, 30, "DEFAULT" ] ], - "require_targeting_player": true, - "require_targeting_npc": true, - "require_targeting_monster": true, - "targeting_cost": 200, - "targeting_timeout_extend": -10, - "targeting_sound": "\"Hostile Detected.\"", - "targeting_volume": 10 - } - ], - "extend": { "flags": [ "DROPS_AMMO" ] } - }, - { - "id": "mon_milturret_flame", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "flame turret", - "symbol": "t", - "description": "The Leadworks LLC's TF-7 Sentry, a military-grade automated flame turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. Its integrated flamethrower can swivel a full 360 degrees.", - "default_faction": "military", - "diff": 20, - "color": "red", - "revert_to_itype": "bot_milturret_flame", - "starting_ammo": { "napalm": 10000 }, - "special_attacks": [ - { - "type": "gun", - "cooldown": 1, - "gun_type": "robogun_flame", - "ammo_type": "napalm", - "fake_skills": [ [ "gun", 4 ], [ "launcher", 5 ] ], - "fake_dex": 10, - "no_ammo_sound": "hiss!", - "ranges": [ [ 0, 10, "DEFAULT" ] ], - "require_targeting_player": true, - "require_targeting_npc": true, - "require_targeting_monster": true, - "targeting_cost": 200, - "targeting_timeout_extend": -10, - "targeting_sound": "\"Hostile Detected.\"", - "targeting_volume": 10 - } - ], - "extend": { "flags": [ "FIREPROOF" ] } - }, - { - "id": "mon_advturret_laser", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "laser turret", - "symbol": "t", - "description": "The DoubleTech T-L3 Scintillator, an advanced automated laser turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. Its integrated laser emitter can swivel a full 360 degrees.", - "default_faction": "military", - "diff": 20, - "color": "yellow", - "revert_to_itype": "bot_advturret_laser", - "special_attacks": [ - { - "type": "gun", - "cooldown": 4, - "gun_type": "robogun_laser", - "fake_skills": [ [ "gun", 5 ], [ "rifle", 5 ] ], - "fake_dex": 10, - "ranges": [ [ 0, 8, "AUTO" ], [ 8, 16, "BURST" ] ], - "require_targeting_player": true, - "require_targeting_npc": true, - "require_targeting_monster": true, - "targeting_cost": 10, - "targeting_timeout_extend": -5, - "targeting_sound": "\"Hostile Detected.\"", - "targeting_volume": 20 - } - ] - }, - { - "id": "mon_advturret_acid", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "acid turret", - "symbol": "t", - "description": "The DoubleTech T-A3 Disintegrator, an advanced automated acid turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. Its integrated acid thrower can swivel a full 360 degrees.", - "default_faction": "military", - "diff": 10, - "color": "light_green", - "revert_to_itype": "bot_advturret_acid", - "special_attacks": [ - { - "type": "gun", - "cooldown": 1, - "move_cost": 50, - "gun_type": "robogun_acid", - "fake_skills": [ [ "gun", 5 ], [ "rifle", 5 ] ], - "fake_dex": 10, - "fake_per": 10, - "require_targeting_player": false, - "ranges": [ [ 0, 20, "DEFAULT" ] ] - } - ] - }, - { - "id": "mon_advturret_plasma", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "plasma turret", - "symbol": "t", - "description": "The DoubleTech T-P3 Scathefire, an advanced automated laser turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. Its integrated plasma ejector can swivel a full 360 degrees.", - "default_faction": "military", - "diff": 20, - "color": "magenta", - "revert_to_itype": "bot_advturret_plasma", - "special_attacks": [ - { - "type": "gun", - "cooldown": 3, - "gun_type": "robogun_plasma", - "fake_skills": [ [ "gun", 5 ], [ "rifle", 5 ] ], - "fake_dex": 10, - "ranges": [ [ 4, 16, "DEFAULT" ] ], - "require_targeting_npc": true, - "require_targeting_monster": true, - "targeting_cost": 100, - "laser_lock": true, - "targeting_timeout_extend": -20, - "targeting_sound": "\"Hostile Detected.\"", - "targeting_volume": 10 - } - ], - "extend": { "flags": [ "FIREPROOF" ] } - }, - { - "id": "mon_advturret_rail", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "railgun turret", - "symbol": "t", - "description": "The DoubleTech T-R3 Arbalest, an advanced automated railgun turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. Its integrated railgun can swivel a full 360 degrees.", - "default_faction": "military", - "diff": 30, - "color": "magenta", - "revert_to_itype": "bot_advturret_rail", - "starting_ammo": { "steel_rail": 200 }, - "special_attacks": [ - { - "type": "gun", - "cooldown": 4, - "gun_type": "robogun_rail", - "ammo_type": "steel_rail", - "fake_skills": [ [ "gun", 5 ], [ "rifle", 5 ] ], - "fake_dex": 10, - "no_ammo_sound": "buzz!", - "ranges": [ [ 0, 18, "DEFAULT" ] ], - "require_targeting_npc": true, - "require_targeting_monster": true, - "laser_lock": true, - "targeting_cost": 200, - "targeting_timeout_extend": -10, - "targeting_sound": "\"Hostile detected.\"", - "targeting_volume": 10 - } - ], - "extend": { "flags": [ "DROPS_AMMO" ] } - }, - { - "id": "mon_advturret_lightning", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "advanced electro turret", - "symbol": "t", - "description": "The DoubleTech T-E3 Thunderstroke, an advanced automated electro turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. Its integrated electro caster can swivel a full 360 degrees.", - "default_faction": "military", - "diff": 20, - "color": "yellow", - "revert_to_itype": "bot_advturret_lightning", - "special_attacks": [ - { - "type": "gun", - "cooldown": 1, - "gun_type": "robogun_lightning", - "fake_skills": [ [ "gun", 5 ], [ "rifle", 5 ] ], - "fake_dex": 10, - "ranges": [ [ 0, 12, "DEFAULT" ] ], - "require_targeting_player": true, - "require_targeting_npc": true, - "require_targeting_monster": true, - "targeting_cost": 10, - "targeting_timeout_extend": -1, - "targeting_sound": "\"Hostile Detected.\"", - "targeting_volume": 10 - } - ], - "extend": { "flags": [ "ELECTRIC" ] } - }, - { - "id": "mon_advturret_emp", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "EMP turret", - "symbol": "t", - "description": "The DoubleTech T-EMP3 Corona, an advanced automated EMP turret using state of the art ATR systems to dynamically reorient itself to new friends and enemies alike. Its electro magnetic pulse generator can swivel a full 360 degrees.", - "default_faction": "military", - "diff": 10, - "color": "yellow", - "revert_to_itype": "bot_advturret_emp", - "special_attacks": [ - { - "type": "gun", - "cooldown": 2, - "gun_type": "robogun_emp", - "fake_skills": [ [ "gun", 5 ], [ "rifle", 5 ] ], - "fake_dex": 10, - "ranges": [ [ 0, 4, "BURST" ], [ 4, 8, "AUTO" ], [ 9, 16, "DEFAULT" ] ], - "require_targeting_npc": true, - "require_targeting_monster": true, - "targeting_cost": 10, - "targeting_timeout_extend": -1, - "targeting_sound": "\"Hostile Detected.\"", - "targeting_volume": 10 - } - ], - "extend": { "flags": [ "ELECTRIC" ] } - }, - { - "id": "mon_turret_gnome", - "type": "MONSTER", - "copy-from": "base_turret", - "name": "guardin gnome", - "looks_like": "mon_kreck", - "symbol": "g", - "description": "A normal and completely harmless garden gnome.", - "default_faction": "defense_bot", - "diff": 10, - "color": "red", - "revert_to_itype": "bot_turret_gnome", - "starting_ammo": { "9mm": 100 }, - "special_attacks": [ - { - "type": "gun", - "cooldown": 2, - "gun_type": "robogun_9mm", - "ammo_type": "9mm", - "fake_skills": [ [ "gun", 2 ], [ "smg", 2 ] ], - "fake_dex": 9, - "no_ammo_sound": "click click!", - "ranges": [ [ 0, 2, "BURST" ], [ 3, 6, "AUTO" ], [ 7, 12, "DEFAULT" ] ] - } - ], - "extend": { "flags": [ "DROPS_AMMO" ] }, - "death_drops": { "groups": [ [ "broken_robots", 10 ], [ "broken_ceramics", 10 ] ] } - } -] diff --git a/data/mods/Modular_Turrets/monster_attacks.json b/data/mods/Modular_Turrets/monster_attacks.json deleted file mode 100644 index d74bb9996b3db..0000000000000 --- a/data/mods/Modular_Turrets/monster_attacks.json +++ /dev/null @@ -1,16 +0,0 @@ -[ - { - "type": "monster_attack", - "attack_type": "melee", - "id": "flash", - "cooldown": 5, - "move_cost": 20, - "damage_max_instance": [ { "damage_type": "true", "amount": 3 } ], - "effects": [ { "id": "blind", "duration": 2 }, { "id": "darkness", "duration": 10 } ], - "body_parts": [ [ "EYES", 4 ] ], - "hit_dmg_u": "The %1$s flashes you!", - "hit_dmg_npc": "The %1$s flashes at !", - "no_dmg_msg_u": "The %1$s tries to flash you, but fails to.", - "no_dmg_msg_npc": "The %1$s tries to flash , but fails to." - } -] diff --git a/data/mods/Modular_Turrets/monster_drops.json b/data/mods/Modular_Turrets/monster_drops.json deleted file mode 100644 index 0295db1ad0d73..0000000000000 --- a/data/mods/Modular_Turrets/monster_drops.json +++ /dev/null @@ -1,20 +0,0 @@ -[ - { - "type": "item_group", - "subtype": "collection", - "id": "broken_robots", - "entries": [ - { "item": "scrap", "count": [ 2, 4 ] }, - { "item": "steel_chunk", "count": [ 0, 2 ] }, - { "item": "glass_shard", "count": [ 0, 2 ] }, - { "item": "spring", "prob": 20 }, - { "item": "material_aluminium_ingot", "prob": 20 } - ] - }, - { - "type": "item_group", - "subtype": "collection", - "id": "broken_ceramics", - "entries": [ { "item": "ceramic_shard", "count": [ 4, 6 ] }, { "item": "sharp_rock", "prob": 20 } ] - } -] diff --git a/data/mods/Modular_Turrets/monster_override.json b/data/mods/Modular_Turrets/monster_override.json deleted file mode 100644 index 96658ff66b73a..0000000000000 --- a/data/mods/Modular_Turrets/monster_override.json +++ /dev/null @@ -1,221 +0,0 @@ -[ - { - "type": "MONSTER", - "id": "mon_turret", - "name": "9mm turret", - "copy-from": "mon_turret_9mm" - }, - { - "type": "MONSTER", - "id": "mon_turret_rifle", - "name": "5.56mm turret", - "copy-from": "mon_milturret_556" - }, - { - "type": "MONSTER", - "id": "mon_turret_bmg", - "name": "50cal turret", - "copy-from": "mon_milturret_50bmg" - }, - { - "type": "MONSTER", - "id": "mon_laserturret", - "name": "laser turret", - "copy-from": "mon_advturret_laser" - }, - { - "id": "mon_hazmatbot", - "type": "MONSTER", - "name": "utility robot", - "description": "One of the many models of utility robot formerly in use by government agencies, private corporations, and civilians alike.", - "default_faction": "utility_bot", - "species": [ "ROBOT" ], - "volume": "62500 ml", - "weight": "81500 g", - "hp": 120, - "speed": 70, - "material": [ "steel" ], - "symbol": "R", - "color": "green", - "morale": 100, - "aggression": 0, - "anger_triggers": [ "FRIEND_DIED", "FRIEND_ATTACKED", "HURT" ], - "armor_bash": 8, - "armor_cut": 8, - "armor_fire": 4, - "armor_acid": 6, - "vision_day": 50, - "death_function": [ "BROKEN" ], - "death_drops": { "groups": [ [ "broken_robots", 3 ] ] }, - "flags": [ "SEES", "HEARS", "ELECTRONIC", "NO_BREATHE", "PRIORITIZE_TARGETS", "PATH_AVOID_DANGER_1" ] - }, - { - "id": "mon_eyebot", - "type": "MONSTER", - "name": "eyebot", - "looks_like": "mon_eyebot", - "description": "A small aerial robot equipped with a suite of cameras and armed with a blinding flash. No longer linked to police or security network, it continues its unending hunt for criminals and trespassers.", - "default_faction": "cop_bot", - "species": [ "ROBOT" ], - "diff": 2, - "volume": "30000 ml", - "weight": "40750 g", - "hp": 20, - "speed": 120, - "material": [ "steel" ], - "symbol": "e", - "color": "light_gray", - "aggression": 40, - "morale": 80, - "melee_skill": 6, - "dodge": 3, - "armor_bash": 8, - "armor_cut": 10, - "armor_fire": 3, - "armor_acid": 6, - "death_drops": { "groups": [ [ "broken_robots", 4 ] ] }, - "death_function": [ "BROKEN" ], - "special_attacks": [ { "id": "flash" } ], - "flags": [ "SEES", "FLIES", "ELECTRONIC", "NO_BREATHE", "NOHEAD", "PRIORITIZE_TARGETS" ] - }, - { - "id": "mon_skitterbot", - "type": "MONSTER", - "name": "skitterbot", - "looks_like": "mon_skitterbot", - "description": "An insectoid robot the size of a small dog, designed for home security. Armed with two close-range tazers, it can skate across the ground with great speed.", - "default_faction": "defense_bot", - "species": [ "ROBOT" ], - "diff": 2, - "volume": "30000 ml", - "weight": "40750 g", - "hp": 40, - "speed": 130, - "material": [ "steel" ], - "symbol": "a", - "color": "light_blue", - "aggression": 100, - "morale": 100, - "melee_cut": 0, - "armor_bash": 12, - "armor_cut": 12, - "armor_fire": 4, - "armor_acid": 4, - "vision_day": 50, - "path_settings": { "max_dist": 5 }, - "special_attacks": [ [ "TAZER", 5 ] ], - "death_drops": { "groups": [ [ "broken_robots", 2 ] ] }, - "death_function": [ "BROKEN" ], - "flags": [ "SEES", "HEARS", "GOODHEARING", "ELECTRONIC", "NO_BREATHE", "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": [ "BROKEN" ], - "flags": [ "SEES", "HEARS", "BASHES", "ELECTRONIC", "NO_BREATHE", "PRIORITIZE_TARGETS", "PATH_AVOID_DANGER_1" ] - }, - { - "id": "mon_defbot_9mm", - "type": "MONSTER", - "copy-from": "mon_defbot_base", - "name": "security robot", - "description": "An automated defense robot still active due to its internal power source. This one is equipped with an integrated 9mm firearm.", - "melee_damage": [ { "damage_type": "electric", "amount": 6 } ], - "starting_ammo": { "9mm": 100 }, - "special_attacks": [ - { - "type": "gun", - "move_cost": 150, - "cooldown": 2, - "gun_type": "robogun_9mm", - "ammo_type": "9mm", - "fake_skills": [ [ "gun", 2 ], [ "smg", 2 ] ], - "fake_dex": 9, - "no_ammo_sound": "click click!", - "ranges": [ [ 0, 2, "BURST" ], [ 3, 6, "AUTO" ], [ 7, 12, "DEFAULT" ] ] - } - ] - }, - { - "id": "mon_defbot_riotcontrol", - "type": "MONSTER", - "copy-from": "mon_defbot_base", - "name": "riotcontrol robot", - "description": "An automated defense robot still active due to its internal power source. This one is equipped with an electric prod, tear gas sprayer, and integrated 40mm beanbag launcher.", - "emit_fields": [ { "emit_id": "emit_tear_gas_pulse", "delay": "1 s" } ], - "melee_damage": [ { "damage_type": "electric", "amount": 6 } ], - "starting_ammo": { "40x46mm_m1006": 100 }, - "special_attacks": [ - { - "type": "gun", - "move_cost": 150, - "cooldown": 2, - "gun_type": "robogun_beanbag", - "ammo_type": "40x46mm", - "fake_skills": [ [ "gun", 2 ], [ "launcher", 2 ] ], - "fake_dex": 9, - "no_ammo_sound": "click click!", - "ranges": [ [ 0, 8, "DEFAULT" ] ] - } - ] - }, - { - "type": "MONSTER", - "id": "mon_copbot", - "copy-from": "mon_defbot_riotcontrol" - }, - { - "type": "MONSTER", - "id": "mon_riotbot", - "looks_like": "mon_secubot", - "copy-from": "mon_defbot_riotcontrol" - }, - { - "type": "MONSTER", - "id": "mon_secubot", - "copy-from": "mon_defbot_9mm", - "description": "An automated defense robot still active due to its internal power source. This one is equipped with an integrated 9mm firearm." - }, - { - "type": "MONSTER", - "id": "mon_chickenbot", - "copy-from": "mon_chickenbot", - "death_drops": { "groups": [ [ "broken_robots", 5 ] ] }, - "death_function": [ "BROKEN" ] - }, - { - "type": "MONSTER", - "id": "mon_tankbot", - "copy-from": "mon_tankbot", - "death_drops": { "groups": [ [ "broken_robots", 5 ] ] }, - "death_function": [ "BROKEN" ] - } -] diff --git a/data/mods/Modular_Turrets/monstergroups.json b/data/mods/Modular_Turrets/monstergroups.json deleted file mode 100644 index 88305ad970f22..0000000000000 --- a/data/mods/Modular_Turrets/monstergroups.json +++ /dev/null @@ -1,27 +0,0 @@ -[ - { - "type": "monstergroup", - "name": "GROUP_TURRET", - "default": "mon_turret_9mm", - "monsters": [ - { "monster": "mon_turret_beanbag", "freq": 30, "cost_multiplier": 1 }, - { "monster": "mon_turret_teargas", "freq": 30, "cost_multiplier": 1 }, - { "monster": "mon_turret_9mm", "freq": 40, "cost_multiplier": 1 }, - { "monster": "mon_turret_shot", "freq": 20, "cost_multiplier": 1 }, - { "monster": "mon_milturret_556", "freq": 40, "cost_multiplier": 1 }, - { "monster": "mon_milturret_308", "freq": 20, "cost_multiplier": 1 }, - { "monster": "mon_milturret_50bmg", "freq": 10, "cost_multiplier": 1 }, - { "monster": "mon_milturret_40mm", "freq": 5, "cost_multiplier": 1 }, - { "monster": "mon_milturret_8x40mm", "freq": 20, "cost_multiplier": 1 }, - { "monster": "mon_milturret_needle", "freq": 20, "cost_multiplier": 1 }, - { "monster": "mon_milturret_flame", "freq": 5, "cost_multiplier": 1 }, - { "monster": "mon_advturret_laser", "freq": 20, "cost_multiplier": 1 }, - { "monster": "mon_advturret_plasma", "freq": 5, "cost_multiplier": 1 }, - { "monster": "mon_advturret_acid", "freq": 20, "cost_multiplier": 1 }, - { "monster": "mon_advturret_lightning", "freq": 5, "cost_multiplier": 1 }, - { "monster": "mon_advturret_emp", "freq": 10, "cost_multiplier": 1 }, - { "monster": "mon_turret_rifle", "freq": 0, "cost_multiplier": 0 }, - { "monster": "mon_turret_bmg", "freq": 0, "cost_multiplier": 0 } - ] - } -] diff --git a/data/mods/Modular_Turrets/recipe.json b/data/mods/Modular_Turrets/recipe.json deleted file mode 100644 index 19d90ce541def..0000000000000 --- a/data/mods/Modular_Turrets/recipe.json +++ /dev/null @@ -1,451 +0,0 @@ -[ - { - "abstract": "bot_hack_base", - "type": "recipe", - "category": "CC_ELECTRONIC", - "subcategory": "CSC_ELECTRONIC_OTHER", - "skill_used": "electronics", - "skills_required": [ [ "mechanics", 4 ], [ "computer", 5 ] ], - "difficulty": 6, - "time": "25 m", - "reversible": false, - "decomp_learn": 7, - "book_learn": [ [ "recipe_lab_elec", 6 ], [ "textbook_robots", 7 ] ], - "tools": [ [ [ "electrohack", 20 ] ] ], - "using": [ [ "soldering_standard", 10 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ - [ "broken_manhack", 1 ], - [ "broken_grenade_hack", 1 ], - [ "broken_flashbang_hack", 1 ], - [ "broken_gasbomb_hack", 1 ], - [ "broken_EMP_hack", 1 ], - [ "broken_c4_hack", 1 ], - [ "broken_mininuke_hack", 1 ] - ], - [ [ "processor", 1 ] ], - [ [ "cable", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "e_scrap", 2 ] ] - ] - }, - { - "type": "recipe", - "result": "bot_manhack", - "id_suffix": "repair", - "copy-from": "bot_hack_base", - "components": [ - [ [ "broken_manhack", 1 ] ], - [ [ "spike", 1 ] ], - [ [ "processor", 1 ] ], - [ [ "cable", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "e_scrap", 2 ] ] - ] - }, - { - "type": "recipe", - "result": "bot_grenade_hack", - "id_suffix": "repair", - "copy-from": "bot_hack_base", - "components": [ - [ [ "broken_manhack", 1 ], [ "broken_grenade_hack", 1 ] ], - [ [ "grenade", 1 ] ], - [ [ "processor", 1 ] ], - [ [ "cable", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "e_scrap", 2 ] ] - ] - }, - { - "type": "recipe", - "result": "bot_gasbomb_hack", - "id_suffix": "repair", - "copy-from": "bot_hack_base", - "components": [ - [ [ "broken_manhack", 1 ], [ "broken_gasbomb_hack", 1 ] ], - [ [ "gasbomb", 1 ] ], - [ [ "processor", 1 ] ], - [ [ "cable", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "e_scrap", 2 ] ] - ] - }, - { - "type": "recipe", - "result": "bot_flashbang_hack", - "id_suffix": "repair", - "copy-from": "bot_hack_base", - "components": [ - [ [ "broken_manhack", 1 ], [ "broken_flashbang_hack", 1 ] ], - [ [ "flashbang", 1 ] ], - [ [ "processor", 1 ] ], - [ [ "cable", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "e_scrap", 2 ] ] - ] - }, - { - "type": "recipe", - "result": "bot_EMP_hack", - "id_suffix": "repair", - "copy-from": "bot_hack_base", - "components": [ - [ [ "broken_manhack", 1 ], [ "broken_EMP_hack", 1 ] ], - [ [ "grenade_emp", 1 ] ], - [ [ "processor", 1 ] ], - [ [ "cable", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "e_scrap", 2 ] ] - ] - }, - { - "type": "recipe", - "result": "bot_c4_hack", - "id_suffix": "repair", - "copy-from": "bot_hack_base", - "components": [ - [ [ "broken_manhack", 1 ], [ "broken_c4_hack", 1 ] ], - [ [ "c4", 1 ] ], - [ [ "processor", 1 ] ], - [ [ "cable", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "e_scrap", 2 ] ] - ] - }, - { - "type": "recipe", - "result": "bot_mininuke_hack", - "id_suffix": "repair", - "copy-from": "bot_hack_base", - "difficulty": 7, - "time": "35 m", - "reversible": false, - "decomp_learn": 8, - "book_learn": [ [ "recipe_lab_elec", 7 ], [ "textbook_robots", 8 ] ], - "components": [ - [ [ "broken_manhack", 1 ], [ "broken_mininuke_hack", 1 ] ], - [ [ "mininuke", 1 ] ], - [ [ "processor", 1 ] ], - [ [ "cable", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "e_scrap", 2 ] ] - ] - }, - { - "abstract": "bot_turret_base", - "type": "recipe", - "category": "CC_ELECTRONIC", - "subcategory": "CSC_ELECTRONIC_OTHER", - "skill_used": "electronics", - "skills_required": [ [ "mechanics", 2 ], [ "computer", 2 ] ], - "difficulty": 2, - "time": "10 m", - "reversible": true, - "autolearn": true, - "using": [ [ "soldering_standard", 10 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ] - }, - { - "type": "recipe", - "result": "bot_turret_disarmed", - "copy-from": "bot_turret_base", - "skills_required": [ [ "mechanics", 4 ], [ "computer", 5 ] ], - "difficulty": 6, - "time": "30 m", - "reversible": true, - "decomp_learn": 5, - "book_learn": [ [ "recipe_lab_elec", 6 ], [ "textbook_robots", 5 ] ], - "using": [ [ "soldering_standard", 14 ] ], - "qualities": [ - { "id": "SCREW", "level": 1 }, - { "id": "SCREW_FINE", "level": 1 }, - { "id": "WRENCH", "level": 2 }, - { "id": "WRENCH_FINE", "level": 1 } - ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "gun_module", 1 ] ], - [ [ "targeting_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "small_storage_battery", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "robot_controls", 1 ] ], - [ [ "turret_chassis", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "bot_turret_disarmed", - "id_suffix": "repair", - "copy-from": "bot_turret_base", - "skills_required": [ [ "mechanics", 4 ], [ "computer", 5 ] ], - "difficulty": 5, - "time": "20 m", - "reversible": false, - "autolearn": false, - "decomp_learn": 5, - "book_learn": [ [ "recipe_lab_elec", 6 ], [ "textbook_robots", 5 ] ], - "tools": [ [ [ "electrohack", 50 ] ] ], - "qualities": [ - { "id": "SCREW", "level": 1 }, - { "id": "SCREW_FINE", "level": 1 }, - { "id": "WRENCH", "level": 2 }, - { "id": "WRENCH_FINE", "level": 1 } - ], - "components": [ - [ [ "broken_turret_disarmed", 1 ] ], - [ [ "processor", 1 ] ], - [ [ "cable", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "e_scrap", 2 ] ] - ] - }, - { - "type": "recipe", - "result": "bot_milturret_disarmed", - "copy-from": "bot_turret_base", - "skills_required": [ [ "mechanics", 5 ], [ "computer", 6 ] ], - "difficulty": 7, - "time": "40 m", - "reversible": true, - "decomp_learn": 6, - "book_learn": [ [ "recipe_lab_elec", 7 ], [ "textbook_robots", 6 ] ], - "using": [ [ "soldering_standard", 14 ] ], - "qualities": [ - { "id": "SCREW", "level": 1 }, - { "id": "SCREW_FINE", "level": 1 }, - { "id": "WRENCH", "level": 2 }, - { "id": "WRENCH_FINE", "level": 1 } - ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "gun_module", 1 ] ], - [ [ "targeting_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "small_storage_battery", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "robot_controls", 1 ] ], - [ [ "turret_chassis", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "bot_milturret_disarmed", - "id_suffix": "repair", - "copy-from": "bot_turret_base", - "skills_required": [ [ "mechanics", 5 ], [ "computer", 6 ] ], - "difficulty": 6, - "time": "30 m", - "reversible": false, - "autolearn": false, - "decomp_learn": 6, - "book_learn": [ [ "recipe_lab_elec", 7 ], [ "textbook_robots", 6 ] ], - "tools": [ [ [ "electrohack", 50 ] ] ], - "qualities": [ - { "id": "SCREW", "level": 1 }, - { "id": "SCREW_FINE", "level": 1 }, - { "id": "WRENCH", "level": 2 }, - { "id": "WRENCH_FINE", "level": 1 } - ], - "components": [ - [ [ "broken_milturret_disarmed", 1 ] ], - [ [ "processor", 1 ] ], - [ [ "cable", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "e_scrap", 2 ] ] - ] - }, - { - "type": "recipe", - "result": "bot_advturret_disarmed", - "copy-from": "bot_turret_base", - "skills_required": [ [ "mechanics", 6 ], [ "computer", 8 ] ], - "difficulty": 8, - "time": "50 m", - "reversible": true, - "decomp_learn": 8, - "book_learn": [ [ "recipe_lab_elec", 7 ], [ "textbook_robots", 7 ] ], - "using": [ [ "soldering_standard", 14 ] ], - "qualities": [ - { "id": "SCREW", "level": 1 }, - { "id": "SCREW_FINE", "level": 1 }, - { "id": "WRENCH", "level": 2 }, - { "id": "WRENCH_FINE", "level": 1 } - ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "gun_module", 1 ] ], - [ [ "targeting_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "small_storage_battery", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "robot_controls", 1 ] ], - [ [ "turret_chassis", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "bot_advturret_disarmed", - "id_suffix": "repair", - "copy-from": "bot_turret_base", - "skills_required": [ [ "mechanics", 6 ], [ "computer", 8 ] ], - "difficulty": 8, - "time": "40 m", - "reversible": false, - "autolearn": false, - "decomp_learn": 7, - "book_learn": [ [ "recipe_lab_elec", 7 ], [ "textbook_robots", 7 ] ], - "tools": [ [ [ "electrohack", 50 ] ] ], - "qualities": [ - { "id": "SCREW", "level": 1 }, - { "id": "SCREW_FINE", "level": 1 }, - { "id": "WRENCH", "level": 2 }, - { "id": "WRENCH_FINE", "level": 1 } - ], - "components": [ - [ [ "broken_advturret_disarmed", 1 ] ], - [ [ "processor", 1 ] ], - [ [ "cable", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "e_scrap", 2 ] ] - ] - }, - { - "type": "recipe", - "result": "bot_turret_9mm", - "copy-from": "bot_turret_base", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "bot_turret_disarmed", 1 ] ], [ [ "robopart_9mm", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bot_turret_shot", - "copy-from": "bot_turret_base", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "bot_turret_disarmed", 1 ] ], [ [ "robopart_shot", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bot_turret_teargas", - "copy-from": "bot_turret_base", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "bot_turret_disarmed", 1 ] ], [ [ "robopart_teargas", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bot_turret_beanbag", - "copy-from": "bot_turret_base", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "bot_turret_disarmed", 1 ] ], [ [ "robopart_beanbag", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bot_milturret_556", - "copy-from": "bot_turret_base", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "bot_milturret_disarmed", 1 ] ], [ [ "robopart_556", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bot_milturret_308", - "copy-from": "bot_turret_base", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "bot_milturret_disarmed", 1 ] ], [ [ "robopart_308", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bot_milturret_50bmg", - "copy-from": "bot_turret_base", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "bot_milturret_disarmed", 1 ] ], [ [ "robopart_50bmg", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bot_milturret_needle", - "copy-from": "bot_turret_base", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "bot_milturret_disarmed", 1 ] ], [ [ "robopart_needle", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bot_milturret_8x40mm", - "copy-from": "bot_turret_base", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "bot_milturret_disarmed", 1 ] ], [ [ "robopart_8x40mm", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bot_milturret_flame", - "copy-from": "bot_turret_base", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "bot_milturret_disarmed", 1 ] ], [ [ "robopart_flame", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bot_advturret_laser", - "copy-from": "bot_turret_base", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "bot_advturret_disarmed", 1 ] ], [ [ "robopart_microreactor", 1 ] ], [ [ "robopart_laser", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bot_laserturret", - "copy-from": "bot_turret_base", - "category": "CC_ELECTRONIC", - "subcategory": "CSC_ELECTRONIC_PARTS", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "bot_advturret_disarmed", 1 ] ], [ [ "robopart_microreactor", 1 ] ], [ [ "robopart_laser", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bot_advturret_acid", - "copy-from": "bot_turret_base", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "bot_advturret_disarmed", 1 ] ], [ [ "robopart_microreactor", 1 ] ], [ [ "robopart_acid", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bot_advturret_plasma", - "copy-from": "bot_turret_base", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "bot_advturret_disarmed", 1 ] ], [ [ "robopart_microreactor", 1 ] ], [ [ "robopart_plasma", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bot_advturret_rail", - "copy-from": "bot_turret_base", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "bot_advturret_disarmed", 1 ] ], [ [ "robopart_microreactor", 1 ] ], [ [ "robopart_rail", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bot_advturret_lightning", - "copy-from": "bot_turret_base", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "bot_advturret_disarmed", 1 ] ], [ [ "robopart_microreactor", 1 ] ], [ [ "robopart_lightning", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bot_advturret_emp", - "copy-from": "bot_turret_base", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "bot_advturret_disarmed", 1 ] ], [ [ "robopart_microreactor", 1 ] ], [ [ "robopart_emp", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bot_turret_gnome", - "category": "CC_ELECTRONIC", - "subcategory": "CSC_ELECTRONIC_OTHER", - "skill_used": "fabrication", - "difficulty": 1, - "time": "1 m", - "reversible": true, - "autolearn": true, - "components": [ [ [ "bot_turret_9mm", 1 ] ], [ [ "duct_tape", 10 ] ], [ [ "garden_gnome", 1 ] ] ] - } -] diff --git a/data/mods/Modular_Turrets/roboguns.json b/data/mods/Modular_Turrets/roboguns.json deleted file mode 100644 index 5dad0377169f9..0000000000000 --- a/data/mods/Modular_Turrets/roboguns.json +++ /dev/null @@ -1,233 +0,0 @@ -[ - { - "abstract": "robogun_base", - "type": "GUN", - "reload_noise_volume": 10, - "name": "base robogun", - "description": "This is a pseudo item for monster attacks. If you see this, it's a bug.", - "material": [ "steel", "plastic" ], - "symbol": "(", - "color": "magenta", - "weight": "5 kg", - "volume": "2500 ml", - "price": 0, - "durability": 10, - "reload": 100, - "flags": [ "NEVER_JAMS", "TRADER_AVOID" ] - }, - { - "id": "robogun_9mm", - "type": "GUN", - "copy-from": "robogun_base", - "name": "integral 9mm firearm", - "ammo": "9mm", - "skill": "smg", - "clip_size": 100, - "ranged_damage": 1, - "dispersion": 240, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ], [ "AUTO", "auto", 13 ] ] - }, - { - "id": "robogun_shot", - "type": "GUN", - "copy-from": "robogun_base", - "name": "integral 12 gauge shotgun", - "skill": "shotgun", - "ammo": "shot", - "clip_size": 100, - "ranged_damage": 1, - "dispersion": 345 - }, - { - "id": "robogun_teargas", - "type": "GUN", - "copy-from": "robogun_base", - "name": "integral teargas launcher", - "skill": "launcher", - "ammo": "40x46mm", - "clip_size": 50, - "dispersion": 270, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "2 rd.", 2 ] ] - }, - { - "id": "robogun_beanbag", - "type": "GUN", - "copy-from": "robogun_base", - "name": "integral beanbag launcher", - "skill": "launcher", - "ammo": "40x46mm", - "clip_size": 50, - "dispersion": 270, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "2 rd.", 2 ] ] - }, - { - "id": "robogun_556", - "type": "GUN", - "copy-from": "robogun_base", - "name": "integral 5.56mm firearm", - "skill": "rifle", - "ammo": "223", - "clip_size": 100, - "dispersion": 150, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ], [ "AUTO", "auto", 13 ] ] - }, - { - "id": "robogun_308", - "type": "GUN", - "copy-from": "robogun_base", - "name": "integral 7.62mm firearm", - "skill": "rifle", - "ammo": "308", - "clip_size": 100, - "dispersion": 150, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ], [ "AUTO", "auto", 13 ] ] - }, - { - "id": "robogun_50bmg", - "type": "GUN", - "copy-from": "robogun_base", - "name": "integral 50 caliber machinegun", - "ammo": "50", - "clip_size": 100, - "skill": "rifle", - "range": 45, - "dispersion": 200, - "durability": 8, - "reload": 400, - "barrel_length": 5, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "", 3 ] ] - }, - { - "id": "robogun_40mm", - "type": "GUN", - "copy-from": "robogun_base", - "name": "integral grenade launcher", - "skill": "launcher", - "ammo": "40x46mm", - "dispersion": 270, - "modes": [ [ "DEFAULT", "semi-auto", 1 ] ], - "clip_size": 50 - }, - { - "id": "robogun_needle", - "type": "GUN", - "copy-from": "robogun_base", - "name": "integral needle gun", - "ammo": "5x50", - "clip_size": 100, - "skill": "smg", - "range": 10, - "ranged_damage": 10, - "dispersion": 260, - "durability": 9, - "barrel_length": 1, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "5 rd.", 5 ], [ "AUTO", "auto", 10 ] ] - }, - { - "id": "robogun_8x40mm", - "type": "GUN", - "copy-from": "robogun_base", - "name": "integral 8mm firearm", - "ammo": "8x40mm", - "clip_size": 50, - "skill": "rifle", - "ranged_damage": 5, - "dispersion": 90, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "5 rd.", 5 ], [ "AUTO", "auto", 10 ] ] - }, - { - "id": "robogun_flame", - "type": "GUN", - "copy-from": "robogun_base", - "name": "integral flamethrower", - "skill": "launcher", - "ammo": "flammable", - "clip_size": 200, - "ammo_effects": [ "FIRE_20", "WIDE" ], - "range": 4, - "dispersion": 300, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "4 rd.", 4 ] ] - }, - { - "id": "robogun_laser", - "type": "GUN", - "copy-from": "robogun_base", - "name": "integral laser emitter", - "skill": "rifle", - "range": 30, - "ranged_damage": { "damage_type": "heat", "amount": 22, "armor_penetration": 15 }, - "dispersion": 10, - "durability": 8, - "loudness": 12, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "4 rd.", 4 ], [ "AUTO", "auto", 6 ] ], - "ammo_effects": [ "LASER", "INCENDIARY" ] - }, - { - "id": "robogun_plasma", - "type": "GUN", - "copy-from": "robogun_base", - "name": "integral plasma ejector", - "skill": "rifle", - "range": 30, - "ranged_damage": 22, - "pierce": 15, - "dispersion": 30, - "loudness": 12, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "2 rd.", 2 ] ], - "ammo_effects": [ "PLASMA", "EXPLOSIVE", "STREAM_BIG", "WIDE", "FLAME" ] - }, - { - "id": "robogun_rail", - "type": "GUN", - "copy-from": "robogun_base", - "name": "integral railgun", - "ammo": "metal_rail", - "skill": "rifle", - "range": 40, - "ranged_damage": 40, - "dispersion": 100, - "loudness": 34, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "2 rd.", 2 ] ], - "ammo_effects": [ "INCENDIARY", "TRAIL" ] - }, - { - "id": "robogun_acid", - "type": "GUN", - "copy-from": "robogun_base", - "name": "integral acid thrower", - "skill": "rifle", - "range": 30, - "ranged_damage": { "damage_type": "acid", "amount": 12 }, - "dispersion": 10, - "loudness": 10, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ] ] - }, - { - "id": "robogun_lightning", - "type": "GUN", - "copy-from": "robogun_base", - "name": "integral lightning caster", - "skill": "rifle", - "range": 30, - "ranged_damage": 16, - "dispersion": 10, - "loudness": 10, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ] ], - "ammo_effects": [ "LIGHTNING", "BOUNCE" ] - }, - { - "id": "robogun_emp", - "type": "GUN", - "copy-from": "robogun_base", - "name": "integral EMP generator", - "skill": "rifle", - "range": 35, - "ranged_damage": 2, - "pierce": 2, - "dispersion": 10, - "durability": 10, - "loudness": 23, - "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ] ], - "ammo_effects": [ "DRAW_LASER_BEAM", "EMP" ] - } -] diff --git a/data/mods/Modular_Turrets/uncraft.json b/data/mods/Modular_Turrets/uncraft.json deleted file mode 100644 index d49733f53441e..0000000000000 --- a/data/mods/Modular_Turrets/uncraft.json +++ /dev/null @@ -1,365 +0,0 @@ -[ - { - "result": "robopart_microreactor", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 5, - "time": "10 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "plut_cell", 10 ] ], [ [ "scrap", 5 ] ], [ [ "e_scrap", 5 ] ], [ [ "cable", 10 ] ] ] - }, - { - "result": "robopart_tazer", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 3, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "power_supply", 3 ] ], [ [ "scrap", 2 ] ], [ [ "e_scrap", 1 ] ], [ [ "cable", 1 ] ] ] - }, - { - "result": "robopart_flash", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 3, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "power_supply", 3 ] ], - [ [ "lens", 1 ] ], - [ [ "lightstrip_inactive", 8 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 1 ] ], - [ [ "cable", 1 ] ] - ] - }, - { - "result": "robopart_9mm", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 3, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "pipe", 1 ] ], - [ [ "spring", 1 ] ], - [ [ "clockworks", 3 ] ], - [ [ "wire", 5 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 1 ] ], - [ [ "cable", 1 ] ] - ] - }, - { - "result": "robopart_shot", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 3, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "pipe", 1 ] ], - [ [ "spring", 1 ] ], - [ [ "clockworks", 3 ] ], - [ [ "wire", 5 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 1 ] ], - [ [ "cable", 1 ] ] - ] - }, - { - "result": "robopart_teargas", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 3, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "pipe", 1 ] ], - [ [ "spring", 1 ] ], - [ [ "clockworks", 3 ] ], - [ [ "wire", 5 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 1 ] ], - [ [ "cable", 1 ] ] - ] - }, - { - "result": "robopart_beanbag", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 3, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "pipe", 1 ] ], - [ [ "spring", 1 ] ], - [ [ "clockworks", 3 ] ], - [ [ "wire", 5 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 1 ] ], - [ [ "cable", 1 ] ] - ] - }, - { - "result": "robopart_556", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 3, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "pipe", 1 ] ], - [ [ "spring", 1 ] ], - [ [ "clockworks", 3 ] ], - [ [ "wire", 5 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 1 ] ], - [ [ "cable", 1 ] ] - ] - }, - { - "result": "robopart_308", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 3, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "pipe", 1 ] ], - [ [ "spring", 1 ] ], - [ [ "clockworks", 3 ] ], - [ [ "wire", 5 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 1 ] ], - [ [ "cable", 1 ] ] - ] - }, - { - "result": "robopart_50bmg", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 3, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "pipe", 1 ] ], - [ [ "spring", 1 ] ], - [ [ "clockworks", 3 ] ], - [ [ "wire", 5 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 1 ] ], - [ [ "cable", 1 ] ] - ] - }, - { - "result": "robopart_needle", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 3, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "pipe", 1 ] ], - [ [ "spring", 1 ] ], - [ [ "clockworks", 3 ] ], - [ [ "wire", 5 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 1 ] ], - [ [ "cable", 1 ] ] - ] - }, - { - "result": "robopart_8x40mm", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 3, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "pipe", 1 ] ], - [ [ "spring", 1 ] ], - [ [ "clockworks", 3 ] ], - [ [ "wire", 5 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 1 ] ], - [ [ "cable", 1 ] ] - ] - }, - { - "result": "robopart_40mm", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 3, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "pipe", 1 ] ], - [ [ "spring", 1 ] ], - [ [ "clockworks", 3 ] ], - [ [ "wire", 5 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 1 ] ], - [ [ "cable", 1 ] ] - ] - }, - { - "result": "robopart_flame", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 3, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "pipe", 1 ] ], - [ [ "hose", 1 ] ], - [ [ "clockworks", 3 ] ], - [ [ "wire", 5 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 1 ] ], - [ [ "cable", 1 ] ] - ] - }, - { - "result": "robopart_laser", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 4, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "lens", 3 ] ], - [ [ "power_supply", 1 ] ], - [ [ "clockworks", 3 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 5 ] ], - [ [ "cable", 10 ] ] - ] - }, - { - "result": "robopart_acid", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 4, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "metal_tank_little", 2 ] ], - [ [ "power_supply", 1 ] ], - [ [ "clockworks", 3 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 5 ] ], - [ [ "cable", 10 ] ] - ] - }, - { - "result": "robopart_plasma", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 4, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "lens", 3 ] ], - [ [ "power_supply", 1 ] ], - [ [ "clockworks", 3 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 5 ] ], - [ [ "cable", 10 ] ] - ] - }, - { - "result": "robopart_emp", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 4, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "lens", 3 ] ], - [ [ "power_supply", 5 ] ], - [ [ "clockworks", 3 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 5 ] ], - [ [ "cable", 10 ] ] - ] - }, - { - "result": "robopart_rail", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 4, - "time": "6 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "pipe", 3 ] ], - [ [ "power_supply", 5 ] ], - [ [ "clockworks", 1 ] ], - [ [ "wire", 5 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 1 ] ], - [ [ "cable", 30 ] ] - ] - }, - { - "result": "bot_turret_disarmed", - "type": "uncraft", - "time": "4 m", - "difficulty": 3, - "skill_used": "electronics", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "memory_module", 1 ] ], - [ [ "pathfinding_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "lens", 3 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 1 ] ], - [ [ "robot_controls", 1 ] ], - [ [ "turret_chassis", 1 ] ] - ] - }, - { - "result": "bot_milturret_disarmed", - "type": "uncraft", - "time": "5 m", - "difficulty": 3, - "skill_used": "electronics", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "memory_module", 1 ] ], - [ [ "pathfinding_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "lens", 3 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 2 ] ], - [ [ "robot_controls", 1 ] ], - [ [ "turret_chassis", 1 ] ] - ] - }, - { - "result": "bot_advturret_disarmed", - "type": "uncraft", - "time": "6 m", - "difficulty": 4, - "skill_used": "electronics", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "memory_module", 1 ] ], - [ [ "pathfinding_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "lens", 3 ] ], - [ [ "scrap", 2 ] ], - [ [ "e_scrap", 5 ] ], - [ [ "cable", 5 ] ], - [ [ "robot_controls", 1 ] ], - [ [ "turret_chassis", 1 ] ] - ] - } -] diff --git a/data/mods/Modular_Turrets/uncraft_corpse.json b/data/mods/Modular_Turrets/uncraft_corpse.json deleted file mode 100644 index a6f0db0224f54..0000000000000 --- a/data/mods/Modular_Turrets/uncraft_corpse.json +++ /dev/null @@ -1,616 +0,0 @@ -[ - { - "result": "broken_manhack", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 4, - "time": "2 m", - "using": [ [ "soldering_standard", 5 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "ai_module_basic", 1 ] ], - [ [ "RAM", 1 ] ], - [ [ "small_storage_battery", 1 ] ], - [ [ "scrap", 1 ] ], - [ [ "quad_rotors", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "spike", 2 ] ], - [ [ "identification_module", 1 ] ] - ] - }, - { - "result": "broken_flashbang_hack", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 4, - "time": "2 m", - "using": [ [ "soldering_standard", 5 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "processor", 2 ] ], [ [ "RAM", 1 ] ], [ [ "scrap", 2 ] ], [ [ "e_scrap", 1 ] ], [ [ "motor_micro", 1 ] ] ] - }, - { - "result": "broken_gasbomb_hack", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 4, - "time": "2 m", - "using": [ [ "soldering_standard", 5 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "ai_module_basic", 1 ] ], - [ [ "RAM", 1 ] ], - [ [ "small_storage_battery", 1 ] ], - [ [ "scrap", 1 ] ], - [ [ "quad_rotors", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "identification_module", 1 ] ] - ] - }, - { - "result": "broken_EMP_hack", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 4, - "time": "2 m", - "using": [ [ "soldering_standard", 5 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "ai_module_basic", 1 ] ], - [ [ "RAM", 1 ] ], - [ [ "small_storage_battery", 1 ] ], - [ [ "scrap", 1 ] ], - [ [ "quad_rotors", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "identification_module", 1 ] ] - ] - }, - { - "result": "broken_grenade_hack", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 4, - "time": "2 m", - "using": [ [ "soldering_standard", 5 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "ai_module_basic", 1 ] ], - [ [ "RAM", 1 ] ], - [ [ "small_storage_battery", 1 ] ], - [ [ "scrap", 1 ] ], - [ [ "quad_rotors", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "identification_module", 1 ] ] - ] - }, - { - "result": "broken_c4_hack", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 4, - "time": "2 m", - "using": [ [ "soldering_standard", 5 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "ai_module_basic", 1 ] ], - [ [ "RAM", 1 ] ], - [ [ "small_storage_battery", 1 ] ], - [ [ "scrap", 1 ] ], - [ [ "quad_rotors", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "identification_module", 1 ] ] - ] - }, - { - "result": "broken_mininuke_hack", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 5, - "time": "2 m", - "using": [ [ "soldering_standard", 5 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "ai_module_basic", 1 ] ], - [ [ "RAM", 1 ] ], - [ [ "small_storage_battery", 1 ] ], - [ [ "scrap", 1 ] ], - [ [ "quad_rotors", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "identification_module", 1 ] ] - ] - }, - { - "result": "broken_turret_disarmed", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 3, - "time": "10 m", - "using": [ [ "soldering_standard", 5 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "memory_module", 1 ] ], - [ [ "targeting_module", 1 ] ], - [ [ "gun_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "small_storage_battery", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "robot_controls", 1 ] ], - [ [ "turret_chassis", 1 ] ] - ] - }, - { - "result": "broken_milturret_disarmed", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 4, - "time": "15 m", - "using": [ [ "soldering_standard", 5 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "memory_module", 1 ] ], - [ [ "targeting_module", 1 ] ], - [ [ "gun_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "small_storage_battery", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "robot_controls", 1 ] ], - [ [ "turret_chassis", 1 ] ] - ] - }, - { - "result": "broken_advturret_disarmed", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 5, - "time": "30 m", - "using": [ [ "soldering_standard", 5 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "memory_module", 1 ] ], - [ [ "targeting_module", 1 ] ], - [ [ "gun_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "small_storage_battery", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "robot_controls", 1 ] ], - [ [ "turret_chassis", 1 ] ] - ] - }, - { - "result": "broken_turret", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_turret_disarmed", 1 ] ], [ [ "robopart_9mm", 1 ] ] ] - }, - { - "result": "broken_turret_9mm", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": 3000, - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_turret_disarmed", 1 ] ], [ [ "robopart_9mm", 1 ] ] ] - }, - { - "result": "broken_turret_shot", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_turret_disarmed", 1 ] ], [ [ "robopart_shot", 1 ] ] ] - }, - { - "result": "broken_turret_teargas", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_turret_disarmed", 1 ] ], [ [ "robopart_teargas", 1 ] ] ] - }, - { - "result": "broken_turret_beanbag", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_turret_disarmed", 1 ] ], [ [ "robopart_beanbag", 1 ] ] ] - }, - { - "result": "broken_turret_rifle", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_milturret_disarmed", 1 ] ], [ [ "robopart_556", 1 ] ] ] - }, - { - "result": "broken_milturret_556", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_milturret_disarmed", 1 ] ], [ [ "robopart_556", 1 ] ] ] - }, - { - "result": "broken_milturret_308", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_milturret_disarmed", 1 ] ], [ [ "robopart_308", 1 ] ] ] - }, - { - "result": "broken_milturret_50bmg", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_milturret_disarmed", 1 ] ], [ [ "robopart_50bmg", 1 ] ] ] - }, - { - "result": "bot_antimateriel", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_milturret_disarmed", 1 ] ], [ [ "robopart_50bmg", 1 ] ] ] - }, - { - "result": "broken_milturret_needle", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_advturret_disarmed", 1 ] ], [ [ "robopart_needle", 1 ] ] ] - }, - { - "result": "broken_milturret_8x40mm", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_milturret_disarmed", 1 ] ], [ [ "robopart_8x40mm", 1 ] ] ] - }, - { - "result": "broken_milturret_flame", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_milturret_disarmed", 1 ] ], [ [ "robopart_flame", 1 ] ] ] - }, - { - "result": "broken_advturret_laser", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_advturret_disarmed", 1 ] ], [ [ "robopart_laser", 1 ] ] ] - }, - { - "result": "broken_laserturret", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_advturret_disarmed", 1 ] ], [ [ "robopart_laser", 1 ] ] ] - }, - { - "result": "broken_advturret_plasma", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_advturret_disarmed", 1 ] ], [ [ "robopart_plasma", 1 ] ] ] - }, - { - "result": "broken_advturret_rail", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_advturret_disarmed", 1 ] ], [ [ "robopart_rail", 1 ] ] ] - }, - { - "result": "broken_advturret_emp", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_advturret_disarmed", 1 ] ], [ [ "robopart_emp", 1 ] ] ] - }, - { - "result": "broken_turret_gnome", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 2, - "time": "3 m", - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_turret_disarmed", 1 ] ], [ [ "ceramic_shard", 3 ] ], [ [ "robopart_9mm", 1 ] ] ] - }, - { - "result": "broken_eyebot_disarmed", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 4, - "time": "30 m", - "using": [ [ "soldering_standard", 3 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "pathfinding_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "robopart_microreactor", 1 ] ], - [ [ "power_supply", 2 ] ], - [ [ "foldframe", 1 ] ], - [ [ "RAM", 1 ] ], - [ [ "processor", 1 ] ], - [ [ "scrap", 1 ] ], - [ [ "quad_rotors", 1 ] ], - [ [ "lens", 1 ] ] - ] - }, - { - "result": "broken_eyebot", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 4, - "time": "30 m", - "using": [ [ "soldering_standard", 3 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_eyebot_disarmed", 1 ] ], [ [ "robopart_flash", 1 ] ] ] - }, - { - "result": "broken_utilibot", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 6, - "time": "120 m", - "using": [ [ "soldering_standard", 20 ], [ "welding_standard", 5 ] ], - "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "SAW_M", "level": 1 } ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "pathfinding_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "robopart_microreactor", 1 ] ], - [ [ "power_supply", 4 ] ], - [ [ "medium_storage_battery", 1 ] ], - [ [ "solar_cell", 2 ] ], - [ [ "motor", 1 ] ], - [ [ "frame", 1 ] ], - [ [ "wheel_small", 3 ] ], - [ [ "plastic_chunk", 6 ] ], - [ [ "steel_chunk", 12 ] ] - ] - }, - { - "result": "broken_hazmatbot", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 4, - "time": "30 m", - "using": [ [ "soldering_standard", 3 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "broken_utilibot", 1 ] ], - [ [ "hose", 4 ] ], - [ [ "metal_tank", 2 ] ], - [ [ "steel_chunk", 3 ] ], - [ [ "water", 20 ] ] - ] - }, - { - "result": "broken_skitterbot_disarmed", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 4, - "using": [ [ "soldering_standard", 3 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "time": "30 m", - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "pathfinding_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "targeting_module", 1 ] ], - [ [ "robopart_microreactor", 1 ] ], - [ [ "power_supply", 2 ] ], - [ [ "motor_small", 1 ] ], - [ [ "spidery_legs_small", 1 ] ] - ] - }, - { - "result": "broken_skitterbot", - "type": "uncraft", - "skill_used": "fabrication", - "difficulty": 4, - "using": [ [ "soldering_standard", 3 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "time": "30 m", - "components": [ [ [ "broken_skitterbot_disarmed", 1 ] ], [ [ "robopart_tazer", 1 ] ], [ [ "e_scrap", 1 ] ], [ [ "steel_chunk", 3 ] ] ] - }, - { - "result": "broken_defbot_disarmed", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 6, - "time": "120 m", - "using": [ [ "soldering_standard", 20 ], [ "welding_standard", 5 ] ], - "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "SAW_M", "level": 1 } ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "memory_module", 1 ] ], - [ [ "pathfinding_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "targeting_module", 1 ] ], - [ [ "gun_module", 1 ] ], - [ [ "omni_wheel", 1 ] ], - [ [ "copbot_chassis", 1 ] ], - [ [ "android_arms", 1 ] ], - [ [ "robopart_microreactor", 1 ] ], - [ [ "power_supply", 4 ] ], - [ [ "medium_storage_battery", 1 ] ], - [ [ "solar_cell", 2 ] ] - ] - }, - { - "result": "broken_defbot_riotcontrol", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 4, - "time": "30 m", - "using": [ [ "soldering_standard", 3 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "broken_defbot_disarmed", 1 ] ], - [ [ "robopart_tazer", 1 ] ], - [ [ "robopart_teargas", 1 ] ], - [ [ "robopart_beanbag", 1 ] ] - ] - }, - { - "result": "broken_riotbot", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 4, - "time": "30 m", - "using": [ [ "soldering_standard", 3 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "broken_defbot_disarmed", 1 ] ], - [ [ "robopart_tazer", 1 ] ], - [ [ "robopart_teargas", 1 ] ], - [ [ "robopart_beanbag", 1 ] ] - ] - }, - { - "result": "broken_secubot", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 4, - "time": "30 m", - "using": [ [ "soldering_standard", 3 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ [ [ "broken_defbot_disarmed", 1 ] ], [ [ "robopart_tazer", 1 ] ], [ [ "robopart_9mm", 1 ] ] ] - }, - { - "result": "broken_copbot", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 4, - "time": "30 m", - "using": [ [ "soldering_standard", 3 ] ], - "qualities": [ { "id": "SCREW", "level": 1 } ], - "components": [ - [ [ "broken_defbot_disarmed", 1 ] ], - [ [ "robopart_tazer", 1 ] ], - [ [ "robopart_beanbag", 1 ] ], - [ [ "robopart_teargas", 1 ] ] - ] - }, - { - "result": "broken_chickenbot_disarmed", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 6, - "time": "120 m", - "using": [ [ "soldering_standard", 20 ], [ "welding_standard", 5 ] ], - "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 }, { "id": "SAW_M", "level": 1 } ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "memory_module", 1 ] ], - [ [ "pathfinding_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "reverse_jointed_legs", 1 ] ], - [ [ "chickenbot_chassis", 1 ] ], - [ [ "targeting_module", 1 ] ], - [ [ "gun_module", 3 ] ], - [ [ "robopart_microreactor", 1 ] ], - [ [ "power_supply", 4 ] ], - [ [ "medium_storage_battery", 2 ] ], - [ [ "mil_plate", 2 ] ] - ] - }, - { - "result": "broken_tankbot_disarmed", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 6, - "time": "120 m", - "using": [ [ "soldering_standard", 30 ], [ "welding_standard", 20 ] ], - "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 }, { "id": "SAW_M", "level": 1 } ], - "components": [ - [ [ "ai_module", 1 ] ], - [ [ "sensor_module", 1 ] ], - [ [ "memory_module", 1 ] ], - [ [ "pathfinding_module", 1 ] ], - [ [ "identification_module", 1 ] ], - [ [ "minireactor", 1 ] ], - [ [ "storage_battery", 1 ] ], - [ [ "tank_tread", 1 ] ], - [ [ "tankbot_chassis", 1 ] ], - [ [ "targeting_module", 1 ] ], - [ [ "gun_module", 3 ] ], - [ [ "mil_plate", 2 ] ], - [ [ "robot_controls", 1 ] ] - ] - }, - { - "result": "broken_tankbot", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 6, - "time": "120 m", - "using": [ [ "soldering_standard", 20 ], [ "welding_standard", 5 ] ], - "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "SAW_M", "level": 1 } ], - "components": [ - [ [ "broken_tankbot_disarmed", 1 ] ], - [ [ "robopart_556", 1 ] ], - [ [ "robopart_40mm", 1 ] ], - [ [ "robopart_flame", 1 ] ] - ] - }, - { - "result": "broken_chickenbot", - "type": "uncraft", - "skill_used": "electronics", - "difficulty": 6, - "time": "120 m", - "using": [ [ "soldering_standard", 20 ], [ "welding_standard", 5 ] ], - "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "SAW_M", "level": 1 } ], - "components": [ - [ [ "broken_chickenbot_disarmed", 1 ] ], - [ [ "robopart_tazer", 1 ] ], - [ [ "robopart_40mm", 1 ] ], - [ [ "robopart_556", 2 ] ] - ] - } -] diff --git a/data/mods/More_Survival_Tools/ammo.json b/data/mods/More_Survival_Tools/ammo.json deleted file mode 100644 index 4b24b7e1bd433..0000000000000 --- a/data/mods/More_Survival_Tools/ammo.json +++ /dev/null @@ -1,23 +0,0 @@ -[ - { - "id": "bearing_lead", - "type": "AMMO", - "name": "lead pellet", - "description": "Hefty round projectiles cast from lead, useful as ammunition for slings.", - "weight": "12 g", - "volume": "250 ml", - "price": 100, - "bashing": 1, - "material": "lead", - "symbol": "=", - "color": "dark_gray", - "count": 30, - "ammo_type": "pebble", - "range": 13, - "damage": 7, - "pierce": 1, - "dispersion": 240, - "loudness": 0, - "effects": [ "NEVER_MISFIRES" ] - } -] diff --git a/data/mods/More_Survival_Tools/ammo_types.json b/data/mods/More_Survival_Tools/ammo_types.json deleted file mode 100644 index 4cb2ae3d06b2e..0000000000000 --- a/data/mods/More_Survival_Tools/ammo_types.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "id": "javelin", - "name": "javelin", - "default": "javelin", - "type": "ammunition_type" - } -] diff --git a/data/mods/More_Survival_Tools/armor.json b/data/mods/More_Survival_Tools/armor.json deleted file mode 100644 index 5697ff02283af..0000000000000 --- a/data/mods/More_Survival_Tools/armor.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - { - "id": "hat_hooded", - "type": "ARMOR", - "name": "hooded hat", - "description": "A proper wide-brimmed hat, modified by the addition of a hood sewn to it, to better protect the neck from wind and rain.", - "weight": "126 g", - "volume": "500 ml", - "price": 1200, - "material": [ "cotton" ], - "symbol": "[", - "color": "dark_gray", - "covers": [ "HEAD" ], - "coverage": 95, - "encumbrance": 10, - "warmth": 10, - "material_thickness": 1, - "environmental_protection": 2, - "flags": [ "VARSIZE", "SUN_GLASSES", "WATERPROOF" ] - }, - { - "id": "javelin_bag", - "type": "ARMOR", - "copy-from": "javelin_bag", - "name": "javelin bag", - "use_action": { "type": "holster", "holster_prompt": "Stash javelins", "holster_msg": "You stash your %s." } - } -] diff --git a/data/mods/More_Survival_Tools/effects.json b/data/mods/More_Survival_Tools/effects.json deleted file mode 100644 index cecbe907f7175..0000000000000 --- a/data/mods/More_Survival_Tools/effects.json +++ /dev/null @@ -1,20 +0,0 @@ -[ - { - "type": "effect_type", - "id": "lightsnare", - "name": [ "Stuck in a light snare" ], - "desc": [ "You can't move until you get free!" ], - "apply_message": "You are snared!", - "rating": "bad", - "show_in_info": true - }, - { - "type": "effect_type", - "id": "heavysnare", - "name": [ "Stuck in a heavy snare" ], - "desc": [ "You can't move until you get free!" ], - "apply_message": "You are snared!", - "rating": "bad", - "show_in_info": true - } -] diff --git a/data/mods/More_Survival_Tools/item_groups.json b/data/mods/More_Survival_Tools/item_groups.json deleted file mode 100644 index a7a3825e16db5..0000000000000 --- a/data/mods/More_Survival_Tools/item_groups.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "id": "medieval", - "type": "item_group", - "items": [ [ "crossbow_makeshift", 1 ] ] - }, - { - "id": "tools_survival", - "type": "item_group", - "items": [ [ "hobo_stove", 3 ], [ "tinder", 3 ], [ "canteen_wood", 2 ] ] - }, - { - "id": "museum_primitive", - "type": "item_group", - "items": [ [ "atlatl", 50 ], [ "javelin", 30 ] ] - }, - { - "id": "survivorzed_extra", - "type": "item_group", - "items": [ [ "hat_hooded", 1 ] ] - } -] diff --git a/data/mods/More_Survival_Tools/items.json b/data/mods/More_Survival_Tools/items.json deleted file mode 100644 index f5c91a08f0b52..0000000000000 --- a/data/mods/More_Survival_Tools/items.json +++ /dev/null @@ -1,271 +0,0 @@ -[ - { - "id": "atlatl", - "type": "GUN", - "name": "atlatl", - "description": "A wooden tool for supporting a javelin, to throw it more effectively than by hand.", - "weight": "116 g", - "volume": "250 ml", - "price": 500, - "to_hit": -1, - "bashing": 1, - "material": "wood", - "symbol": "(", - "color": "brown", - "ammo": "javelin", - "skill": "throw", - "range": 15, - "ranged_damage": 0, - "dispersion": 120, - "sight_dispersion": 140, - "durability": 6, - "clip_size": 1, - "reload": 100, - "flags": [ "RELOAD_AND_SHOOT", "NEVER_JAMS", "PRIMITIVE_RANGED_WEAPON" ] - }, - { - "id": "javelin", - "copy-from": "javelin", - "type": "AMMO", - "name": "wooden javelin", - "//": "Item type intentionally converted from GENERIC to AMMO", - "volume": "250 ml", - "count": 1, - "stack_size": 4, - "ammo_type": "javelin", - "range": 15, - "damage": 11, - "dispersion": 135, - "loudness": 0, - "thrown_damage": [ { "damage_type": "bash", "amount": 5 }, { "damage_type": "stab", "amount": 11 } ], - "effects": [ "RECOVER_25" ], - "flags": [ "FRAGILE_MELEE", "JAVELIN" ] - }, - { - "id": "javelin_stone", - "copy-from": "javelin", - "type": "AMMO", - "name": "stone javelin", - "//": "Avoids negative numbers caused by any future rebalancing of mainline item", - "description": "A throwing spear with a stone spearhead. The grip area has also been carved and covered for better grip.", - "material": [ "wood", "stone" ], - "color": "light_gray", - "count": 1, - "stack_size": 4, - "ammo_type": "javelin", - "range": 13, - "damage": 13, - "pierce": 1, - "relative": { "weight": 100, "cutting": 2 }, - "proportional": { "price": 0.5, "bashing": 0.8 }, - "thrown_damage": [ { "damage_type": "bash", "amount": 4 }, { "damage_type": "stab", "amount": 13 } ], - "flags": [ "FRAGILE_MELEE", "JAVELIN" ] - }, - { - "id": "javelin_iron", - "copy-from": "javelin_iron", - "type": "AMMO", - "name": "iron javelin", - "//": "Item type intentionally converted from GENERIC to AMMO", - "volume": "250 ml", - "count": 1, - "stack_size": 4, - "ammo_type": "javelin", - "range": 10, - "damage": 17, - "pierce": 3, - "dispersion": 135, - "loudness": 0, - "thrown_damage": [ { "damage_type": "bash", "amount": 5 }, { "damage_type": "stab", "amount": 17 } ], - "effects": [ "RECOVER_30" ], - "flags": [ "FRAGILE_MELEE", "JAVELIN" ] - }, - { - "id": "javelin_copper", - "copy-from": "javelin_iron", - "type": "AMMO", - "name": "copper javelin", - "//": "Avoids negative numbers caused by any future rebalancing of mainline item", - "description": "A copper-tipped throwing spear. The grip area has also been carved and covered for better grip.", - "material": [ "wood", "copper" ], - "color": "light_red", - "count": 1, - "stack_size": 4, - "ammo_type": "javelin", - "damage": 14, - "pierce": 2, - "relative": { "weight": 30 }, - "proportional": { "price": 0.5, "cutting": 0.85 }, - "thrown_damage": [ { "damage_type": "bash", "amount": 5 }, { "damage_type": "stab", "amount": 14 } ], - "flags": [ "FRAGILE_MELEE", "JAVELIN" ] - }, - { - "id": "milk_curdling", - "type": "TOOL", - "category": "food", - "name": { "str": "small batch of curdling milk", "str_pl": "small batches of curdling milk" }, - "description": "A sealed small waterskin filled with milk that is undergoing the process to become a crude form of cheese, having had vinegar and natural rennet added.", - "weight": "1870 g", - "volume": "1750 ml", - "price": 2000, - "to_hit": -1, - "bashing": 1, - "material": [ "milk", "leather" ], - "symbol": ")", - "color": "white", - "use_action": { - "target": "milk_curdled", - "msg": "The milk appears to have finished curdling, and is ready for further processing. Checking on it has exposed the mixture to the atmosphere.", - "container": "waterskin", - "target_charges": 6, - "moves": 150, - "type": "delayed_transform", - "transform_age": 28800, - "not_ready_msg": "The milk is still curdling." - } - }, - { - "id": "milk_curdling2", - "type": "TOOL", - "category": "food", - "name": { "str": "batch of curdling milk", "str_pl": "batches of curdling milk" }, - "description": "A sealed waterskin filled with milk that is undergoing the process to become a crude form of cheese, having had vinegar and natural rennet added.", - "weight": "3617 g", - "volume": "3500 ml", - "price": 4000, - "to_hit": -1, - "bashing": 2, - "material": [ "milk", "leather" ], - "symbol": ")", - "color": "white", - "use_action": { - "target": "milk_curdled", - "msg": "The milk appears to have finished curdling, and is ready for further processing. Checking on it has exposed the mixture to the atmosphere.", - "container": "waterskin2", - "target_charges": 12, - "moves": 150, - "type": "delayed_transform", - "transform_age": 36000, - "not_ready_msg": "The milk is still curdling." - } - }, - { - "id": "milk_curdling3", - "type": "TOOL", - "category": "food", - "name": { "str": "large batch of curdling milk", "str_pl": "large batches of curdling milk" }, - "description": "A sealed large waterskin filled with milk that is undergoing the process to become a crude form of cheese, having had vinegar and natural rennet added.", - "weight": "5241 g", - "volume": "5250 ml", - "price": 6000, - "to_hit": -1, - "bashing": 3, - "material": [ "milk", "leather" ], - "symbol": ")", - "color": "white", - "use_action": { - "target": "milk_curdled", - "msg": "The milk appears to have finished curdling, and is ready for further processing. Checking on it has exposed the mixture to the atmosphere.", - "container": "waterskin3", - "target_charges": 18, - "moves": 150, - "type": "delayed_transform", - "transform_age": 43200, - "not_ready_msg": "The milk is still curdling." - } - }, - { - "id": "foil_alum", - "type": "GENERIC", - "category": "other", - "name": "aluminum foil wrap", - "//": "Dummied out way back when.", - "description": "A half crumpled sheet of aluminum foil, used for cooking and baking.", - "weight": "5 g", - "volume": 0, - "price": 0, - "to_hit": -2, - "material": "aluminum", - "symbol": ",", - "color": "light_gray", - "qualities": [ [ "COOK", 1 ] ] - }, - { - "id": "crossbow_makeshift", - "type": "GUN", - "name": "makeshift crossbow", - "description": "A simple, handmade crossbow of the Skane style, with a wooden peg that is pushed up from underneath to loose the bowstring. Not as powerful as other crossbow designs, but it is easier to draw the bow back. Bolts fired from this weapon have a good chance of remaining intact for re-use.", - "weight": "5456 g", - "volume": "1 L", - "price": 1380, - "bashing": 7, - "material": "wood", - "symbol": "(", - "color": "green", - "ammo": "bolt", - "skill": "rifle", - "range": 6, - "ranged_damage": 3, - "dispersion": 500, - "durability": 6, - "clip_size": 1, - "reload": 300, - "valid_mod_locations": [ [ "underbarrel", 1 ], [ "sights", 1 ], [ "accessories", 2 ] ], - "flags": [ "PRIMITIVE_RANGED_WEAPON" ] - }, - { - "id": "heavy_snare_kit", - "type": "TOOL", - "name": "heavy snare kit", - "description": "This is a kit for a simple trap consisting of a rope noose and a snare trigger. It requires a tree nearby. It is effective at trapping monsters.", - "weight": "1066 g", - "volume": "250 ml", - "price": 250, - "cutting": 10, - "material": "wood", - "symbol": ";", - "color": "brown", - "use_action": { - "type": "place_trap", - "needs_neighbor_terrain": "t_tree", - "trap": "tr_heavy_snare", - "moves": 200, - "practice": 4, - "done_message": "You set the snare trap." - } - }, - { - "id": "light_snare_kit", - "type": "TOOL", - "name": "light snare kit", - "description": "This is a kit for a simple trap consisting of a string noose and a snare trigger. It requires a young tree nearby. It is effective at trapping and killing some small animals.", - "weight": "886 g", - "volume": "250 ml", - "price": 100, - "cutting": 6, - "material": "wood", - "symbol": ";", - "color": "brown", - "use_action": { - "type": "place_trap", - "needs_neighbor_terrain": "t_tree_young", - "trap": "tr_light_snare", - "moves": 150, - "practice": 2, - "done_message": "You set the snare trap." - } - }, - { - "id": "snare_trigger", - "type": "TOOL", - "name": "snare trigger", - "description": "This is a stick that has been cut into a trigger mechanism for a snare trap.", - "weight": "850 g", - "volume": "250 ml", - "price": 0, - "to_hit": -1, - "material": "wood", - "symbol": ";", - "color": "brown" - } -] diff --git a/data/mods/More_Survival_Tools/modinfo.json b/data/mods/More_Survival_Tools/modinfo.json deleted file mode 100644 index 11429619aa797..0000000000000 --- a/data/mods/More_Survival_Tools/modinfo.json +++ /dev/null @@ -1,13 +0,0 @@ -[ - { - "type": "MOD_INFO", - "ident": "More_Survival_Tools", - "name": "More Survival Tools", - "authors": [ "Chaosvolt" ], - "maintainers": [ "DangerNoodle" ], - "description": "For those who prefer being innawoods. Adds several tools, various recipes additions/tweaks, plus two new professions.", - "category": "items", - "dependencies": [ "dda" ], - "obsolete": true - } -] diff --git a/data/mods/More_Survival_Tools/obsolete.json b/data/mods/More_Survival_Tools/obsolete.json deleted file mode 100644 index 4c13a46cce7f7..0000000000000 --- a/data/mods/More_Survival_Tools/obsolete.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "type": "recipe", - "result": "bolt_bone", - "obsolete": true - }, - { - "id": "bolt_bone", - "type": "MIGRATION", - "replace": "bolt_crude" - }, - { - "id": "resin_cord", - "type": "MIGRATION", - "replace": "slime_scrap" - }, - { - "type": "recipe", - "result": "resin_cord", - "obsolete": true - } -] diff --git a/data/mods/More_Survival_Tools/professions.json b/data/mods/More_Survival_Tools/professions.json deleted file mode 100644 index f308e9c46792c..0000000000000 --- a/data/mods/More_Survival_Tools/professions.json +++ /dev/null @@ -1,74 +0,0 @@ -[ - { - "type": "profession", - "ident": "wanderer", - "name": "Wanderer", - "description": "You always preferred the comfort of the open sky, far from the complexities of modern life. Though from the looks of it, things have changed since last time you've been anywhere near civilization.", - "points": 5, - "skills": [ - { "level": 3, "name": "survival" }, - { "level": 3, "name": "fabrication" }, - { "level": 1, "name": "tailor" }, - { "level": 3, "name": "gun" }, - { "level": 2, "name": "rifle" }, - { "level": 2, "name": "cooking" } - ], - "items": { - "both": { - "ammo": 100, - "items": [ - "loincloth_fur", - "cloak_fur", - "backpack_leather", - "boots_fur", - "gloves_fur", - "scarf_fur", - "copper_knife", - "pot_makeshift", - "waterskin", - "flint_steel" - ], - "entries": [ - { "item": "crossbow_makeshift", "ammo-item": "bolt_wood" }, - { "item": "bolt_wood", "charges": 14, "container-item": "quiver" }, - { "item": "tinderbox", "charges": [ 10, 20 ] } - ] - } - } - }, - { - "type": "profession", - "ident": "caveman", - "name": "Prehistoric Hunter", - "description": "An out-of-place living relic of prehistory, stranded in an unfamiliar and terrifying world. Life as a hunter-gatherer was hard, but at least you didn't have to fight the living dead, and you had your kin to stand beside you. Here, you're on your own.", - "points": 2, - "skills": [ - { "level": 1, "name": "survival" }, - { "level": 1, "name": "fabrication" }, - { "level": 1, "name": "cooking" }, - { "level": 3, "name": "gun" }, - { "level": 2, "name": "throw" }, - { "level": 3, "name": "melee" }, - { "level": 2, "name": "stabbing" }, - { "level": 1, "name": "dodge" } - ], - "traits": [ "ILLITERATE" ], - "items": { - "both": [ - "loincloth_fur", - "cloak_fur", - "backpack_leather", - "boots_fur", - "spear_stone", - "atlatl", - "javelin_stone", - "javelin_stone", - "primitive_knife", - "hand_axe", - "rock_pot", - "waterskin", - "fire_drill" - ] - } - } -] diff --git a/data/mods/More_Survival_Tools/recipes.json b/data/mods/More_Survival_Tools/recipes.json deleted file mode 100644 index 8227d366db18b..0000000000000 --- a/data/mods/More_Survival_Tools/recipes.json +++ /dev/null @@ -1,242 +0,0 @@ -[ - { - "type": "recipe", - "result": "flint_steel", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_TOOLS", - "skill_used": "survival", - "skills_required": [ "fabrication", 3 ], - "difficulty": 4, - "time": 10000, - "autolearn": true, - "book_learn": [ [ "textbook_survival", 2 ], [ "mag_survival", 3 ] ], - "using": [ [ "forging_standard", 1 ], [ "steel_tiny", 1 ] ], - "qualities": [ { "id": "HAMMER", "level": 3 } ], - "components": [ [ [ "sharp_rock", 1 ] ] ] - }, - { - "type": "recipe", - "result": "cured_hide", - "id_suffix": "drying", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_MATERIALS", - "skill_used": "survival", - "skills_required": [ "cooking", 2 ], - "difficulty": 3, - "time": 56000, - "autolearn": true, - "batch_time_factors": [ 83, 5 ], - "qualities": [ { "id": "CUT", "level": 1 } ], - "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], - "components": [ [ [ "raw_leather", 1 ], [ "raw_tainted_leather", 1 ], [ "raw_hleather", 1 ] ] ] - }, - { - "type": "recipe", - "result": "cured_pelt", - "id_suffix": "drying", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_MATERIALS", - "skill_used": "survival", - "skills_required": [ "cooking", 2 ], - "difficulty": 3, - "time": 56000, - "autolearn": true, - "batch_time_factors": [ 83, 5 ], - "qualities": [ { "id": "CUT", "level": 1 } ], - "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], - "components": [ [ [ "raw_fur", 1 ], [ "raw_tainted_fur", 1 ], [ "raw_hfur", 1 ] ] ] - }, - { - "type": "recipe", - "result": "atlatl", - "category": "CC_WEAPON", - "subcategory": "CSC_WEAPON_RANGED", - "skill_used": "survival", - "skills_required": [ "fabrication", 1 ], - "difficulty": 2, - "time": 1000, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ [ [ "stick", 1 ], [ "broom", 1 ], [ "mop", 1 ], [ "2x4", 1 ], [ "pool_cue", 1 ] ] ] - }, - { - "type": "recipe", - "result": "javelin_stone", - "category": "CC_WEAPON", - "subcategory": "CSC_WEAPON_PIERCING", - "skill_used": "fabrication", - "skills_required": [ [ "survival", 1 ], [ "throw", 2 ] ], - "difficulty": 2, - "time": 10000, - "autolearn": true, - "qualities": [ { "id": "HAMMER", "level": 1 } ], - "components": [ - [ [ "spear_wood", 1 ], [ "pointy_stick", 1 ] ], - [ [ "rag", 1 ], [ "leather", 1 ], [ "fur", 1 ] ], - [ [ "plant_fibre", 20 ], [ "sinew", 20 ], [ "thread", 20 ], [ "yarn", 20 ], [ "duct_tape", 20 ] ], - [ [ "rock", 1 ], [ "ceramic_shard", 1 ], [ "sharp_rock", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "javelin_copper", - "category": "CC_WEAPON", - "subcategory": "CSC_WEAPON_PIERCING", - "skill_used": "fabrication", - "skills_required": [ "throw", 2 ], - "difficulty": 2, - "time": 50000, - "reversible": true, - "autolearn": true, - "qualities": [ { "id": "HAMMER", "level": 1 } ], - "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], - "components": [ - [ [ "spear_wood", 1 ], [ "pointy_stick", 1 ] ], - [ [ "rag", 1 ], [ "leather", 1 ], [ "fur", 1 ] ], - [ [ "plant_fibre", 20 ], [ "sinew", 20 ], [ "thread", 20 ], [ "yarn", 20 ], [ "duct_tape", 20 ] ], - [ [ "scrap_copper", 1 ], [ "copper", 100 ] ] - ] - }, - { - "type": "recipe", - "result": "hat_hooded", - "category": "CC_ARMOR", - "subcategory": "CSC_ARMOR_HEAD", - "skill_used": "tailor", - "difficulty": 1, - "time": 45000, - "autolearn": true, - "using": [ [ "sewing_standard", 40 ] ], - "components": [ - [ [ "rag", 1 ], [ "felt_patch", 1 ], [ "leather", 1 ], [ "fur", 1 ], [ "bandana", 1 ] ], - [ [ "hat_boonie", 1 ], [ "cowboy_hat", 1 ], [ "10gal_hat", 1 ], [ "straw_hat", 1 ], [ "straw_fedora", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "sharp_rock", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_TOOLS", - "skill_used": "fabrication", - "skills_required": [ "survival", 1 ], - "difficulty": 0, - "time": 1000, - "autolearn": true, - "qualities": [ { "id": "HAMMER", "level": 1 } ], - "components": [ [ [ "rock", 1 ] ] ] - }, - { - "type": "recipe", - "result": "tarp", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_MATERIALS", - "skill_used": "fabrication", - "skills_required": [ "survival", 1 ], - "difficulty": 1, - "time": 10000, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ - [ [ "folding_poncho", 1 ], [ "folding_poncho_on", 1 ], [ "emer_blanket", 1 ], [ "emer_blanket_on", 1 ] ], - [ [ "duct_tape", 20 ] ] - ] - }, - { - "type": "recipe", - "result": "plant_fibre", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_MATERIALS", - "skill_used": "survival", - "difficulty": 1, - "time": 6000, - "autolearn": true, - "components": [ [ [ "dogbane", 1 ], [ "cattail_stalk", 1 ], [ "weed", 1 ] ] ] - }, - { - "type": "recipe", - "result": "bearing", - "category": "CC_AMMO", - "subcategory": "CSC_AMMO_OTHER", - "skill_used": "fabrication", - "skills_required": [ "gun", 2 ], - "difficulty": 2, - "time": 45000, - "autolearn": true, - "book_learn": [ [ "textbook_fabrication", 1 ] ], - "using": [ [ "forging_standard", 5 ] ], - "tools": [ [ [ "press", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ], - "components": [ - [ [ "copper", 50 ], [ "tin", 50 ], [ "bismuth", 50 ], [ "solder_wire", 50 ], [ "silver_small", 50 ], [ "scrap", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "bearing_lead", - "category": "CC_AMMO", - "subcategory": "CSC_AMMO_OTHER", - "skill_used": "fabrication", - "skills_required": [ "gun", 2 ], - "difficulty": 2, - "time": 45000, - "autolearn": true, - "book_learn": [ [ "textbook_fabrication", 1 ] ], - "tools": [ [ [ "press", -1 ], [ "material_sand", -1 ], [ "clay_lump", -1 ] ], [ [ "surface_heat", 10, "LIST" ] ] ], - "components": [ [ [ "lead", 60 ], [ "gold_small", 60 ] ] ] - }, - { - "type": "recipe", - "result": "snare_trigger", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_TRAPS", - "skill_used": "traps", - "skills_required": [ "survival", 1 ], - "difficulty": 0, - "time": 2000, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ [ [ "stick", 1 ], [ "2x4", 1 ] ] ] - }, - { - "type": "recipe", - "result": "light_snare_kit", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_TRAPS", - "skill_used": "traps", - "skills_required": [ "survival", 1 ], - "difficulty": 1, - "time": 5000, - "reversible": true, - "autolearn": true, - "using": [ [ "cordage", 1 ] ], - "components": [ [ [ "snare_trigger", 1 ] ] ] - }, - { - "type": "recipe", - "result": "heavy_snare_kit", - "category": "CC_OTHER", - "subcategory": "CSC_OTHER_TRAPS", - "skill_used": "traps", - "skills_required": [ "survival", 1 ], - "difficulty": 3, - "time": 8000, - "reversible": true, - "autolearn": true, - "using": [ [ "rope_natural_short", 1 ] ], - "components": [ [ [ "snare_trigger", 1 ] ] ] - }, - { - "type": "recipe", - "result": "crossbow_makeshift", - "category": "CC_WEAPON", - "subcategory": "CSC_WEAPON_RANGED", - "skill_used": "fabrication", - "skills_required": [ "survival", 1 ], - "difficulty": 2, - "time": 15000, - "reversible": true, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 } ], - "using": [ [ "cordage", 3 ] ], - "components": [ [ [ "2x4", 2 ], [ "stick", 4 ] ], [ [ "splinter", 1 ] ] ] - } -] diff --git a/data/mods/More_Survival_Tools/scenarios.json b/data/mods/More_Survival_Tools/scenarios.json deleted file mode 100644 index b973b92490cd7..0000000000000 --- a/data/mods/More_Survival_Tools/scenarios.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "type": "scenario", - "ident": "wilderness", - "copy-from": "wilderness", - "extend": { "allowed_locs": [ "sloc_swamp" ] } - }, - { - "type": "scenario", - "ident": "summer_advanced_start", - "copy-from": "summer_advanced_start", - "extend": { "professions": [ "wanderer" ] } - } -] diff --git a/data/mods/More_Survival_Tools/snippets.json b/data/mods/More_Survival_Tools/snippets.json deleted file mode 100644 index 149b5ee8ffd8c..0000000000000 --- a/data/mods/More_Survival_Tools/snippets.json +++ /dev/null @@ -1,13 +0,0 @@ -[ - { - "type": "snippet", - "category": "note", - "text": [ - { - "id": "note_more_survival_tools_1", - "text": "\"Shoot elfy mutants. Carve more bolts outta their bones. Rinse and repeat.\"", - "//": "Dwarf Fortress reference." - } - ] - } -] diff --git a/data/mods/More_Survival_Tools/start_locations.json b/data/mods/More_Survival_Tools/start_locations.json deleted file mode 100644 index 1969fe6328af0..0000000000000 --- a/data/mods/More_Survival_Tools/start_locations.json +++ /dev/null @@ -1,15 +0,0 @@ -[ - { - "type": "start_location", - "id": "sloc_forest", - "copy-from": "sloc_forest", - "extend": { "terrain": [ "forest_thick" ] } - }, - { - "type": "start_location", - "id": "sloc_swamp", - "name": "Swamp", - "terrain": [ "forest_water" ], - "flags": [ "ALLOW_OUTSIDE" ] - } -] diff --git a/data/mods/More_Survival_Tools/traps.json b/data/mods/More_Survival_Tools/traps.json deleted file mode 100644 index 677656f74480c..0000000000000 --- a/data/mods/More_Survival_Tools/traps.json +++ /dev/null @@ -1,26 +0,0 @@ -[ - { - "type": "trap", - "id": "tr_light_snare", - "name": "light snare trap", - "color": "brown", - "symbol": "^", - "visibility": 5, - "avoidance": 10, - "difficulty": 2, - "action": "snare_light", - "drops": [ "light_snare_kit" ] - }, - { - "type": "trap", - "id": "tr_heavy_snare", - "name": "heavy snare trap", - "color": "brown", - "symbol": "^", - "visibility": 3, - "avoidance": 10, - "difficulty": 4, - "action": "snare_heavy", - "drops": [ "heavy_snare_kit" ] - } -] diff --git a/data/mods/Tolerate_This/comestibles.json b/data/mods/Tolerate_This/comestibles.json deleted file mode 100644 index 28b746046eed0..0000000000000 --- a/data/mods/Tolerate_This/comestibles.json +++ /dev/null @@ -1,933 +0,0 @@ -[ - { - "type": "COMESTIBLE", - "id": "gffish_sandwich", - "name": { "str": "gluten free fish sandwich", "str_pl": "gluten free fish sandwiches" }, - "weight": "222 g", - "color": "yellow", - "spoils_in": 24, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "nutrition": 26, - "description": "Gluten free and a delicious fish sandwich.", - "price": 800, - "material": [ "flesh" ], - "volume": "250 ml", - "charges": 4, - "//": "Four portions seems like a lot, but given the amount of ingredients needed, it's a good perk.", - "fun": 14 - }, - { - "type": "COMESTIBLE", - "id": "gfsandwich_veggy", - "name": { "str": "gluten free vegetable sandwich", "str_pl": "gluten free vegetable sandwiches" }, - "weight": "190 g", - "color": "light_gray", - "spoils_in": 48, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "quench": 1, - "healthy": 1, - "nutrition": 27, - "description": "Gluen free bread and vegetables, that's it.", - "price": 800, - "material": [ "veggy" ], - "volume": "250 ml", - "charges": 3, - "flags": [ "EATEN_COLD" ], - "fun": 1 - }, - { - "type": "COMESTIBLE", - "id": "gfgranola", - "name": "gluten free granola", - "weight": "86 g", - "color": "brown", - "spoils_in": 4320, - "container": "bag_plastic", - "comestible_type": "FOOD", - "symbol": "%", - "quench": -2, - "healthy": 1, - "nutrition": 31, - "description": "A tasty and nutritious mixture of oats, honey, and other ingredients that has been baked until crisp.", - "price": 350, - "material": [ "fruit" ], - "volume": "500 ml", - "charges": 8, - "fun": 3 - }, - { - "type": "COMESTIBLE", - "id": "gfsandwich_t", - "name": { "str": "gluten free meat sandwich", "str_pl": "gluten free meat sandwiches" }, - "weight": "186 g", - "color": "light_gray", - "spoils_in": 36, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "nutrition": 30, - "description": "Gluten free bread and meat, that's it.", - "price": 900, - "material": [ "flesh", "veggy" ], - "volume": "250 ml", - "charges": 3, - "fun": 2 - }, - { - "type": "COMESTIBLE", - "id": "gfsandwich_pb", - "name": { "str": "gluten free peanut butter sandwich", "str_pl": "gluten free peanut butter sandwiches" }, - "weight": "186 g", - "color": "brown", - "spoils_in": 36, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "quench": -10, - "nutrition": 30, - "description": "Some peanut butter smothered between two pieces of gluten free bread. Not very filling and will stick to the roof of your mouth like glue.", - "price": 250, - "material": "veggy", - "volume": "250 ml", - "fun": 3 - }, - { - "type": "COMESTIBLE", - "id": "gfsandwich_pbj", - "name": { "str": "gluten free PB&J sandwich", "str_pl": "gluten free PB&J sandwiches" }, - "weight": "186 g", - "color": "brown", - "spoils_in": 36, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "quench": 8, - "nutrition": 45, - "description": "A delicious peanut butter and jelly gluten free sandwich. It reminds you of the times your mother would make you lunch.", - "price": 175, - "material": [ "fruit", "veggy" ], - "volume": "250 ml", - "fun": 6 - }, - { - "type": "COMESTIBLE", - "id": "gfsandwich_pbh", - "name": { "str": "gluten free PB&H sandwich", "str_pl": "gluten free PB&H sandwiches" }, - "weight": "186 g", - "color": "brown", - "spoils_in": 36, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "quench": 8, - "nutrition": 45, - "description": "Some damned fool put honey on this peanut butter sandwich, who in their right mind- oh wait this is pretty good. Gluten free too!", - "price": 175, - "material": [ "veggy", "honey" ], - "volume": "250 ml", - "fun": 6 - }, - { - "type": "COMESTIBLE", - "id": "gfsandwich_pbm", - "name": { "str": "gluten free PB&M sandwich", "str_pl": "gluten free PB&M sandwiches" }, - "weight": "186 g", - "color": "brown", - "spoils_in": 36, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "quench": 8, - "nutrition": 45, - "description": "Who knew you could mix maple syrup and peanut butter to create yet another different gluten free sandwich?", - "price": 175, - "material": "veggy", - "volume": "250 ml", - "fun": 6 - }, - { - "type": "COMESTIBLE", - "id": "lfhickory_nut_ambrosia", - "name": "lactose free hickory nut ambrosia", - "weight": "254 g", - "color": "brown", - "spoils_in": 259, - "container": "bottle_plastic", - "comestible_type": "DRINK", - "symbol": "~", - "quench": 10, - "nutrition": 15, - "description": "Delicious hickory nut ambrosia. A drink worthy of the gods. This one was made with an alternative to cows milk.", - "price": 100, - "material": [ "veggy" ], - "volume": "250 ml", - "phase": "liquid", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 5 - }, - { - "type": "COMESTIBLE", - "id": "cornmeal", - "name": "cornmeal", - "weight": "37 g", - "color": "white", - "spoils_in": 8640, - "container": "box_small", - "comestible_type": "FOOD", - "symbol": "%", - "quench": -1, - "nutrition": 2, - "description": "You think this is cornflour… or rice flour… Or something else. However, it certainly is not wheat flour! It is useful for baking though.", - "price": 450, - "material": [ "veggy", "powder" ], - "volume": "250 ml", - "charges": 12, - "fun": -5 - }, - { - "type": "COMESTIBLE", - "id": "gfjohnnycake", - "name": "gluten free johnnycake", - "weight": "46 g", - "color": "yellow", - "spoils_in": 480, - "comestible_type": "FOOD", - "symbol": "%", - "healthy": 1, - "nutrition": 20, - "description": "We all crave for cake sometimes. This is not perfect, but it is a tasty and nutritious gluten free fried bread treat. ", - "price": 550, - "material": [ "veggy", "junk" ], - "volume": "250 ml", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 2 - }, - { - "type": "COMESTIBLE", - "id": "gffruit_pancakes", - "name": { "str": "gluten free fruit pancake" }, - "weight": "354 g", - "color": "brown", - "spoils_in": 240, - "comestible_type": "FOOD", - "symbol": "%", - "healthy": 1, - "nutrition": 25, - "description": "Fluffy and delicious gluten free pancakes with real maple syrup, made sweeter and healthier with the addition of wholesome fruit.", - "price": 650, - "material": [ "junk", "fruit" ], - "volume": "250 ml", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 3 - }, - { - "type": "COMESTIBLE", - "id": "lffruit_pancakes", - "name": { "str": "lactose free fruit pancake" }, - "weight": "354 g", - "color": "brown", - "spoils_in": 240, - "comestible_type": "FOOD", - "symbol": "%", - "healthy": 1, - "nutrition": 25, - "description": "Fluffy and delicious lactose free pancakes with real maple syrup, made sweeter and healthier with the addition of wholesome fruit.", - "price": 650, - "material": [ "wheat", "fruit" ], - "volume": "250 ml", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 3 - }, - { - "type": "COMESTIBLE", - "id": "gflffruit_pancakes", - "name": { "str": "gluten free lactose free fruit pancake" }, - "weight": "354 g", - "color": "brown", - "spoils_in": 240, - "comestible_type": "FOOD", - "symbol": "%", - "healthy": 1, - "nutrition": 25, - "description": "Fluffy and delicious pancakes made out of the only things you can still eat. But at least it has real maple syrup, made sweeter and healthier with the addition of wholesome fruit.", - "price": 650, - "material": [ "junk", "fruit" ], - "volume": "250 ml", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 3 - }, - { - "type": "COMESTIBLE", - "id": "gfchoc_pancakes", - "name": { "str": "gluten free chocolate pancake" }, - "weight": "354 g", - "color": "brown", - "spoils_in": 240, - "comestible_type": "FOOD", - "symbol": "%", - "nutrition": 25, - "description": "Fluffy and delicious gluten free pancakes with real maple syrup, with delicious chocolate baked right in.", - "price": 700, - "material": [ "veggy", "junk" ], - "volume": "250 ml", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 6 - }, - { - "type": "COMESTIBLE", - "id": "gffrenchtoast", - "name": { "str": "gluten free French toast" }, - "weight": "246 g", - "color": "brown", - "spoils_in": 240, - "comestible_type": "FOOD", - "symbol": "%", - "healthy": 1, - "nutrition": 45, - "description": "Slices of gluten free bread dipped in a milk and egg mixture then fried.", - "price": 600, - "material": [ "junk", "milk", "egg" ], - "volume": "250 ml", - "charges": 2, - "flags": [ "EATEN_HOT" ], - "fun": 8 - }, - { - "type": "COMESTIBLE", - "id": "gflffrenchtoast", - "name": { "str": "gluten free lactose free French toast" }, - "weight": "246 g", - "color": "brown", - "spoils_in": 240, - "comestible_type": "FOOD", - "symbol": "%", - "healthy": 1, - "nutrition": 45, - "description": "Slices of gluten free bread dipped in a lactose free milk and egg mixture then fried. You never thought it was possible, but now you truly feel like a post millennial.", - "price": 600, - "material": [ "veggy", "egg" ], - "volume": "250 ml", - "charges": 2, - "flags": [ "EATEN_HOT" ], - "fun": 8 - }, - { - "type": "COMESTIBLE", - "id": "gfbiscuit", - "name": "gluten free biscuit", - "weight": "136 g", - "color": "brown", - "spoils_in": 180, - "container": "box_small", - "comestible_type": "FOOD", - "symbol": "%", - "healthy": 1, - "nutrition": 24, - "description": "Delicious and filling, this home made gluten free biscuit is good, and good for you!", - "price": 230, - "material": "junk", - "volume": "1 L", - "charges": 8, - "flags": [ "EATEN_HOT" ], - "fun": 1 - }, - { - "type": "COMESTIBLE", - "id": "gfpie", - "name": "gluten free fruit pie", - "weight": "252 g", - "color": "brown", - "spoils_in": 72, - "stim": 2, - "container": "box_small", - "comestible_type": "FOOD", - "symbol": "%", - "quench": 5, - "healthy": 1, - "nutrition": 16, - "description": "A delicious baked gluten free pie with a sweet fruit filling.", - "price": 1250, - "material": [ "veggy", "fruit" ], - "volume": "1 L", - "charges": 6, - "flags": [ "EATEN_HOT" ], - "fun": 3 - }, - { - "type": "COMESTIBLE", - "id": "gfpie_veggy", - "name": "gluten free vegetable pie", - "weight": "252 g", - "color": "brown", - "spoils_in": 72, - "container": "box_small", - "comestible_type": "FOOD", - "symbol": "%", - "quench": 5, - "healthy": 1, - "nutrition": 16, - "description": "A delicious baked gluten free pie with a delicious vegetable filling.", - "price": 1250, - "material": [ "veggy" ], - "volume": "1 L", - "charges": 6, - "flags": [ "EATEN_HOT" ], - "fun": 3 - }, - { - "type": "COMESTIBLE", - "id": "gfpie_meat", - "name": "gluten free meat pie", - "weight": "260 g", - "color": "brown", - "spoils_in": 80, - "container": "box_small", - "comestible_type": "FOOD", - "symbol": "%", - "quench": 5, - "healthy": 1, - "nutrition": 16, - "description": "A delicious baked gluten free pie with a delicious meat filling.", - "price": 1350, - "material": [ "flesh" ], - "volume": "1 L", - "charges": 6, - "flags": [ "EATEN_HOT" ], - "fun": 3 - }, - { - "type": "COMESTIBLE", - "id": "gfpie_maple", - "name": "gluten free maple pie", - "weight": "252 g", - "color": "brown", - "spoils_in": 72, - "stim": 2, - "container": "box_small", - "comestible_type": "FOOD", - "symbol": "%", - "quench": 4, - "healthy": -1, - "nutrition": 16, - "description": "A sweet and delicious baked gluten free pie with pure maple syrup.", - "price": 1850, - "material": [ "junk", "milk" ], - "volume": "1 L", - "charges": 6, - "flags": [ "EATEN_HOT" ], - "fun": 6 - }, - { - "type": "COMESTIBLE", - "id": "gfpizza_veggy", - "name": "gluten free vegetable pizza", - "weight": "175 g", - "color": "light_green", - "spoils_in": 48, - "container": "box_small", - "comestible_type": "FOOD", - "symbol": "%", - "nutrition": 40, - "description": "A vegetarian gluten free pizza, with delicious tomato sauce and a fluffy crust. Its smell brings back great memories.", - "price": 990, - "material": [ "veggy" ], - "volume": "2 L", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 10 - }, - { - "type": "COMESTIBLE", - "id": "gfpizza_cheese", - "name": "gluten free cheese pizza", - "weight": "175 g", - "color": "yellow", - "spoils_in": 48, - "stim": 1, - "container": "box_small", - "comestible_type": "FOOD", - "symbol": "%", - "nutrition": 40, - "description": "A delicious gluten free pizza with molten cheese on top.", - "price": 990, - "material": [ "junk", "milk" ], - "volume": "2 L", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 10 - }, - { - "type": "COMESTIBLE", - "id": "gfpizza_meat", - "name": "gluten free meat pizza", - "weight": "175 g", - "color": "light_red", - "spoils_in": 48, - "container": "box_small", - "comestible_type": "FOOD", - "symbol": "%", - "nutrition": 50, - "description": "A meat gluten free pizza, for all the carnivores out there. Chock full of minced meat and heavily seasoned.", - "price": 1090, - "material": [ "junk", "flesh" ], - "volume": "2 L", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 10 - }, - { - "type": "COMESTIBLE", - "id": "gfcheeseburger", - "name": "gluten free cheeseburger", - "weight": "340 g", - "color": "brown", - "spoils_in": 36, - "stim": 1, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "nutrition": 35, - "description": "A gluten free sandwich of minced meat and cheese with condiments. The apex of pre-Cataclysm culinary achievement.", - "price": 1000, - "material": [ "flesh", "veggy" ], - "volume": "250 ml", - "charges": 4, - "flags": [ "EATEN_HOT", "ALLERGEN_MILK" ], - "fun": 5 - }, - { - "type": "COMESTIBLE", - "id": "gfhamburger", - "name": "gluten free hamburger", - "weight": "300 g", - "color": "brown", - "spoils_in": 36, - "stim": 1, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "nutrition": 30, - "description": "A gluten free sandwich of minced meat with condiments.", - "price": 900, - "material": [ "flesh", "veggy" ], - "volume": "250 ml", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 4 - }, - { - "type": "COMESTIBLE", - "id": "gfsloppyjoe", - "name": "gluten free sloppy joe", - "weight": "300 g", - "color": "brown", - "spoils_in": 36, - "stim": 1, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "nutrition": 31, - "description": "A gluten free sandwich, consisting of ground meat and tomato sauce served on a hamburger bun.", - "price": 900, - "material": [ "flesh", "veggy" ], - "volume": "250 ml", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 4 - }, - { - "type": "COMESTIBLE", - "id": "gfblt", - "name": "gluten free BLT", - "weight": "250 g", - "color": "brown", - "spoils_in": 60, - "stim": 1, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "quench": 2, - "nutrition": 33, - "description": "A bacon, lettuce, and tomato gluten free sandwich on toasted bread.", - "price": 400, - "material": [ "flesh", "veggy" ], - "volume": "250 ml", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 5 - }, - { - "type": "COMESTIBLE", - "id": "gfsweetbread", - "name": { "str": "gluten free sweetbread" }, - "weight": "150 g", - "color": "brown", - "spoils_in": 48, - "comestible_type": "FOOD", - "symbol": "%", - "quench": 1, - "healthy": 1, - "nutrition": 24, - "description": "Delicious and tender organ meats. First boiled, then gluten free breaded crumbs added and fried. They have interesting flavor and unparalleled texture.", - "price": 500, - "material": [ "veggy", "flesh" ], - "volume": "250 ml", - "charges": 2, - "flags": [ "EATEN_HOT" ], - "fun": 8 - }, - { - "type": "COMESTIBLE", - "id": "gfsandwich_cheese", - "name": { "str": "gluten free cheese sandwich", "str_pl": "gluten free cheese sandwiches" }, - "weight": "187 g", - "color": "brown", - "spoils_in": 36, - "stim": 1, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "nutrition": 65, - "description": "A simple gluten free cheese sandwich.", - "price": 500, - "material": [ "milk", "veggy" ], - "volume": "250 ml", - "fun": 8 - }, - { - "type": "COMESTIBLE", - "id": "gfsandwich_cheese_grilled", - "name": { "str": "gluten free grilled cheese sandwich", "str_pl": "gluten free grilled cheese sandwiches" }, - "weight": "188 g", - "color": "brown", - "spoils_in": 34, - "stim": 1, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "quench": 1, - "nutrition": 70, - "description": "A delicious gluten free grilled cheese sandwich, because everything is better with melted cheese.", - "price": 550, - "material": [ "milk", "veggy" ], - "volume": "250 ml", - "flags": [ "EATEN_HOT" ], - "fun": 10 - }, - { - "type": "COMESTIBLE", - "id": "gfsandwich_deluxe", - "name": { "str": "gluten free deluxe sandwich", "str_pl": "gluten free deluxe sandwiches" }, - "weight": "340 g", - "color": "brown", - "spoils_in": 32, - "stim": 1, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "quench": 1, - "healthy": 1, - "nutrition": 38, - "description": "A gluten free sandwich of meat, vegetables, and cheese with condiments. Tasty and nutritious!", - "price": 1200, - "material": [ "flesh", "veggy", "milk" ], - "volume": "250 ml", - "charges": 4, - "fun": 12 - }, - { - "type": "COMESTIBLE", - "id": "gfsandwich_cucumber", - "name": { "str": "gluten free cucumber sandwich", "str_pl": "gluten free cucumber sandwiches" }, - "weight": "187 g", - "color": "light_green", - "spoils_in": 36, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "quench": 2, - "healthy": 1, - "nutrition": 26, - "description": "A refreshing gluten free cucumber sandwich. Not very filling, but quite tasty.", - "price": 200, - "volume": "250 ml", - "charges": 2, - "material": [ "veggy" ], - "flags": [ "EATEN_COLD" ], - "fun": 8 - }, - { - "type": "COMESTIBLE", - "id": "sandwich_cheese", - "name": { "str": "cheese sandwich", "str_pl": "cheese sandwiches" }, - "weight": "187 g", - "color": "brown", - "spoils_in": 36, - "stim": 1, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "nutrition": 65, - "description": "A simple cheese sandwich.", - "price": 500, - "material": [ "milk", "wheat" ], - "volume": "250 ml", - "fun": 8 - }, - { - "type": "COMESTIBLE", - "id": "gfsandwich_jam", - "name": { "str": "gluten free jam sandwich", "str_pl": "gluten free jam sandwiches" }, - "weight": "189 g", - "color": "brown", - "spoils_in": 37, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "quench": 1, - "nutrition": 50, - "description": "A delicious gluten free jam sandwich.", - "price": 200, - "material": [ "fruit", "veggy" ], - "volume": "250 ml", - "fun": 15 - }, - { - "type": "COMESTIBLE", - "id": "gfsandwich_honey", - "name": { "str": "gluten free honey sandwich", "str_pl": "gluten free honey sandwiches" }, - "weight": "189 g", - "color": "brown", - "spoils_in": 240, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "quench": 1, - "healthy": 1, - "nutrition": 50, - "description": "A delicious gluten free honey sandwich.", - "price": 500, - "material": [ "honey", "veggy" ], - "volume": "250 ml", - "fun": 10 - }, - { - "type": "COMESTIBLE", - "id": "gfsandwich_sauce", - "name": { "str": "gluten free boring sandwich", "str_pl": "gluten free boring sandwiches" }, - "weight": "187 g", - "color": "brown", - "spoils_in": 46, - "container": "wrapper", - "comestible_type": "FOOD", - "symbol": "%", - "quench": 1, - "nutrition": 48, - "description": "A simple gluten free sauce sandwich. Not very filling but beats eating just the bread… especially if it is the wrong type of bread!", - "price": 200, - "material": [ "veggy" ], - "volume": "250 ml", - "fun": 2 - }, - { - "type": "COMESTIBLE", - "id": "gfwaffles", - "name": "gluten free waffle", - "weight": "246 g", - "color": "yellow", - "spoils_in": 240, - "comestible_type": "FOOD", - "symbol": "%", - "nutrition": 37, - "description": "Gluten free waffle. It's basically a pancake in hashtag form.", - "price": 550, - "material": [ "veggy", "milk" ], - "volume": "250 ml", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 5 - }, - { - "type": "COMESTIBLE", - "id": "lfwaffles", - "name": "lactose free waffle", - "weight": "246 g", - "color": "yellow", - "spoils_in": 240, - "comestible_type": "FOOD", - "symbol": "%", - "nutrition": 37, - "description": "Lactose free waffle. It's basically a pancake in hashtag form.", - "price": 550, - "material": "wheat", - "volume": "250 ml", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 5 - }, - { - "type": "COMESTIBLE", - "id": "gflfwaffles", - "name": "lactose free waffle", - "weight": "246 g", - "color": "yellow", - "spoils_in": 240, - "comestible_type": "FOOD", - "symbol": "%", - "nutrition": 37, - "description": "Gluten free and lactose free waffle. It's basically a pancake in hashtag form.", - "price": 550, - "material": "junk", - "volume": "250 ml", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 5 - }, - { - "type": "COMESTIBLE", - "id": "gffruit_waffles", - "name": "gluten free fruit waffle", - "weight": "354 g", - "color": "yellow", - "spoils_in": 240, - "comestible_type": "FOOD", - "symbol": "%", - "healthy": 1, - "nutrition": 45, - "description": "Crunchy and delicious gluten free waffles with real maple syrup, made sweeter and healthier with the addition of wholesome fruit.", - "price": 600, - "material": [ "fruit", "milk" ], - "volume": "250 ml", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 6 - }, - { - "type": "COMESTIBLE", - "id": "gflffruit_waffles", - "name": "gluten free lactose free fruit waffle", - "weight": "354 g", - "color": "yellow", - "spoils_in": 240, - "comestible_type": "FOOD", - "symbol": "%", - "healthy": 1, - "nutrition": 45, - "description": "Crunchy and delicious gluten free and lactose free waffles with real maple syrup, made sweeter and healthier with the addition of wholesome fruit.", - "price": 600, - "material": [ "fruit" ], - "volume": "250 ml", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 6 - }, - { - "type": "COMESTIBLE", - "id": "gfchoc_waffles", - "name": "gluten free chocolate waffle", - "weight": "354 g", - "color": "brown", - "spoils_in": 240, - "comestible_type": "FOOD", - "symbol": "%", - "nutrition": 40, - "description": "Crunchy and delicious gluten free waffles with real maple syrup, with delicious chocolate baked right in.", - "price": 650, - "material": [ "junk" ], - "volume": "250 ml", - "charges": 4, - "flags": [ "EATEN_HOT" ], - "fun": 12 - }, - { - "type": "COMESTIBLE", - "id": "rice_milk", - "name": { "str_sp": "rice milk" }, - "weight": "263 g", - "color": "white", - "spoils_in": 24, - "container": "bottle_plastic", - "comestible_type": "DRINK", - "symbol": "~", - "quench": 25, - "healthy": 1, - "nutrition": 8, - "description": "Sweeter than real cows milk, almost tastes like vanilla icecream. Spoils rapidly.", - "price": 48, - "//": "I am assuming it costs more than cows milk. TB", - "material": "junk", - "volume": "250 ml", - "phase": "liquid", - "flags": [ "EATEN_COLD" ], - "fun": 1 - }, - { - "type": "COMESTIBLE", - "id": "coconut_water", - "name": { "str_sp": "coconut water" }, - "weight": "263 g", - "color": "white", - "spoils_in": 24, - "container": "bottle_plastic", - "comestible_type": "DRINK", - "symbol": "~", - "quench": 25, - "healthy": 1, - "nutrition": 8, - "description": "Coconut milk, with water added to make it go further. Tastes ok though. Spoils rapidly.", - "price": 58, - "//": "More expensive than regular milk. Sometimes about twice the price. TB", - "material": "veggy", - "volume": "250 ml", - "phase": "liquid", - "flags": [ "EATEN_COLD" ], - "fun": 1 - }, - { - "type": "COMESTIBLE", - "id": "jar_cream_coconut", - "name": { "str_sp": "jarred coconut milk" }, - "weight": "258 g", - "color": "white", - "spoils_in": 24, - "container": "jar_glass", - "comestible_type": "DRINK", - "symbol": "~", - "quench": 20, - "nutrition": 11, - "description": "This deliciously rich coconut cream is a more concentrated, thicker version of the coconut milk.", - "price": 700, - "material": [ "junk" ], - "volume": "250 ml", - "phase": "liquid", - "fun": 3 - }, - { - "type": "COMESTIBLE", - "id": "rice_flour", - "name": { "str_sp": "rice flour" }, - "weight": "45 g", - "color": "white", - "container": "box_small", - "comestible_type": "FOOD", - "symbol": "%", - "quench": -1, - "nutrition": 1, - "description": "This rice flour is useful for baking.", - "price": 450, - "material": [ "powder" ], - "volume": "250 ml", - "charges": 10, - "fun": -5 - } -] diff --git a/data/mods/Tolerate_This/cooking_components.json b/data/mods/Tolerate_This/cooking_components.json deleted file mode 100644 index 06cae24c934af..0000000000000 --- a/data/mods/Tolerate_This/cooking_components.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "id": "batter", - "type": "requirement", - "//": "Bread type food usable as batter for frying.", - "components": [ - [ - [ "flour", 1 ], - [ "cornmeal", 1 ], - [ "rice_flour", 1 ], - [ "flatbread", 1 ], - [ "tortilla_corn", 1 ], - [ "bread", 1 ], - [ "wastebread", 1 ], - [ "cornbread", 1 ], - [ "biscuit", 1 ], - [ "hardtack", 1 ], - [ "crackers", 1 ] - ] - ] - } -] diff --git a/data/mods/Tolerate_This/modinfo.json b/data/mods/Tolerate_This/modinfo.json deleted file mode 100644 index 69f06a51b1d2a..0000000000000 --- a/data/mods/Tolerate_This/modinfo.json +++ /dev/null @@ -1,13 +0,0 @@ -[ - { - "type": "MOD_INFO", - "ident": "Tolerate_This", - "name": "Bens GF recipes", - "authors": [ "TechyBen" ], - "maintainers": [ "TechyBen" ], - "description": "Some simple gluten free and lactose free alternative recipe options. NOT EXHAUSTIVE.", - "category": "items", - "dependencies": [ "dda" ], - "obsolete": true - } -] diff --git a/data/mods/Tolerate_This/recipe_food.json b/data/mods/Tolerate_This/recipe_food.json deleted file mode 100644 index 352678b73afe6..0000000000000 --- a/data/mods/Tolerate_This/recipe_food.json +++ /dev/null @@ -1,1131 +0,0 @@ -[ - { - "type": "recipe", - "result": "gffish_sandwich", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_MEAT", - "skill_used": "cooking", - "difficulty": 1, - "time": 4000, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ - [ [ "fish_cooked", 1 ], [ "fish_fried", 1 ] ], - [ [ "cornbread", 2 ] ], - [ - [ "pickle", 1 ], - [ "veggy_pickled", 1 ], - [ "onion", 1 ], - [ "irradiated_onion", 1 ], - [ "can_tomato", 1 ], - [ "irradiated_tomato", 1 ], - [ "tomato", 1 ] - ], - [ - [ "ketchup", 1 ], - [ "mustard", 1 ], - [ "horseradish", 1 ], - [ "mayonnaise", 1 ], - [ "bacon", 2 ], - [ "seasoning_salt", 15 ], - [ "soysauce", 1 ] - ] - ] - }, - { - "type": "recipe", - "result": "gfsandwich_veggy", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_VEGGI", - "skill_used": "cooking", - "time": 3000, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ - [ [ "cornbread", 2 ] ], - [ - [ "veggy_cooked", 1 ], - [ "veggy_wild_cooked", 1 ], - [ "veggy_salted", 1 ], - [ "celery", 1 ], - [ "irradiated_celery", 1 ], - [ "cabbage", 1 ], - [ "irradiated_cabbage", 1 ], - [ "sauerkraut", 1 ], - [ "tomato", 1 ], - [ "can_tomato", 1 ], - [ "irradiated_pumpkin", 1 ], - [ "onion", 1 ], - [ "irradiated_onion", 1 ], - [ "broccoli", 1 ], - [ "irradiated_tomato", 1 ], - [ "irradiated_broccoli", 1 ], - [ "rehydrated_veggy", 1 ], - [ "morel_cooked", 1 ], - [ "mushroom_cooked", 1 ], - [ "sauerkraut_onions", 1 ], - [ "pickle", 1 ], - [ "veggy_canned", 1 ], - [ "beans_cooked", 1 ], - [ "irradiated_carrot", 1 ], - [ "irradiated_zucchini", 1 ], - [ "irradiated_lettuce", 1 ], - [ "carrot", 1 ], - [ "zucchini", 1 ], - [ "lettuce", 1 ], - [ "pine_nuts", 1 ], - [ "morel_fried", 1 ], - [ "veggy_aspic", 1 ], - [ "dahlia_baked", 1 ], - [ "irradiated_cucumber", 1 ], - [ "cucumber", 1 ], - [ "veggy_pickled", 1 ], - [ "cooked_cattail_stalk", 1 ], - [ "cooked_pumpkin", 1 ], - [ "potato_baked", 1 ], - [ "irradiated_potato", 1 ], - [ "can_tomato", 1 ], - [ "dandelion_cooked", 1 ] - ] - ] - }, - { - "type": "recipe", - "result": "gfgranola", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_OTHER", - "skill_used": "cooking", - "difficulty": 3, - "time": 45000, - "autolearn": true, - "tools": [ [ [ "surface_heat", 20, "LIST" ] ] ], - "components": [ - [ [ "oats", 4 ] ], - [ - [ "honeycomb", 1 ], - [ "con_milk", 1 ], - [ "honey_bottled", 4 ], - [ "honey_glassed", 4 ], - [ "sugar", 40 ], - [ "syrup", 4 ], - [ "beet_syrup", 4 ] - ], - [ - [ "sweet_fruit_like", 1, "LIST" ], - [ "jam_fruit", 1 ], - [ "chocolate", 1 ], - [ "candy", 3 ], - [ "candy2", 3 ], - [ "choco_coffee_beans", 5 ] - ] - ] - }, - { - "type": "recipe", - "result": "gfsandwich_t", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_MEAT", - "skill_used": "cooking", - "time": 3000, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ - [ [ "cornbread", 2 ] ], - [ - [ "meat_cooked", 1 ], - [ "lunchmeat", 4 ], - [ "bologna", 5 ], - [ "bacon", 2 ], - [ "fried_spam", 2 ], - [ "sausage", 1 ] - ] - ] - }, - { - "type": "recipe", - "result": "gfsandwich_pb", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_VEGGI", - "skill_used": "cooking", - "time": 4000, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ [ [ "cornbread", 2 ] ], [ [ "peanutbutter", 1 ], [ "peanutbutter_imitation", 1 ] ] ] - }, - { - "type": "recipe", - "result": "gfsandwich_pbj", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_VEGGI", - "skill_used": "cooking", - "time": 4000, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ [ [ "cornbread", 2 ] ], [ [ "jam_fruit", 1 ] ], [ [ "peanutbutter", 1 ], [ "peanutbutter_imitation", 1 ] ] ] - }, - { - "type": "recipe", - "result": "gfsandwich_pbh", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_VEGGI", - "skill_used": "cooking", - "time": 4000, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ - [ [ "cornbread", 2 ] ], - [ [ "honeycomb", 2 ], [ "honey_bottled", 2 ], [ "honey_glassed", 2 ] ], - [ [ "peanutbutter", 1 ], [ "peanutbutter_imitation", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "gfsandwich_pbm", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_VEGGI", - "skill_used": "cooking", - "time": 4000, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ [ [ "cornbread", 2 ] ], [ [ "syrup", 1 ] ], [ [ "peanutbutter", 1 ], [ "peanutbutter_imitation", 1 ] ] ] - }, - { - "type": "recipe", - "result": "lfhickory_nut_ambrosia", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_DRINKS", - "skill_used": "cooking", - "difficulty": 5, - "time": 48000, - "book_learn": [ [ "family_cookbook", 5 ], [ "survival_book", 3 ], [ "textbook_survival", 3 ] ], - "qualities": [ { "id": "COOK", "level": 3 }, { "id": "BOIL", "level": 2 } ], - "tools": [ [ [ "surface_heat", 5, "LIST" ] ] ], - "components": [ - [ [ "hickory_nut_unshelled", 4 ] ], - [ [ "con_milk", 1 ] ], - [ - [ "honeycomb", 1 ], - [ "honey_bottled", 4 ], - [ "honey_glassed", 4 ], - [ "sugar", 20 ], - [ "syrup", 2 ], - [ "beet_syrup", 2 ] - ], - [ [ "water", 1 ], [ "water_clean", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "cornmeal", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_OTHER", - "skill_used": "cooking", - "difficulty": 2, - "time": 45000, - "autolearn": true, - "batch_time_factors": [ 83, 3 ], - "tools": [ [ [ "surface_heat", 5, "LIST" ] ], [ [ "rock_quern", -1 ], [ "clay_quern", -1 ] ] ], - "components": [ - [ - [ "corn", 2 ], - [ "irradiated_corn", 2 ], - [ "buckwheat", 2 ], - [ "acorns_cooked", 2 ], - [ "dry_rice", 6 ], - [ "starch", 2 ] - ] - ] - }, - { - "type": "recipe", - "result": "gfjohnnycake", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_BREAD", - "skill_used": "cooking", - "difficulty": 1, - "time": 14000, - "batch_time_factors": [ 50, 4 ], - "autolearn": true, - "qualities": [ { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 8, "LIST" ] ] ], - "components": [ [ [ "cooking_oil", 1 ], [ "cooking_oil2", 1 ] ], [ [ "cornmeal", 1 ] ] ] - }, - { - "type": "recipe", - "result": "gffruit_pancakes", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_VEGGI", - "skill_used": "cooking", - "difficulty": 3, - "time": 12000, - "autolearn": true, - "qualities": [ { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 8, "LIST" ] ] ], - "components": [ - [ [ "cornmeal", 1 ] ], - [ [ "milk", 1 ], [ "milk_powder", 1 ], [ "con_milk", 1 ] ], - [ [ "powder_eggs", 5 ], [ "eggs_bird", 1, "LIST" ], [ "egg_reptile", 1 ] ], - [ [ "syrup", 1 ] ], - [ [ "cooking_oil", 1 ], [ "cooking_oil2", 1 ] ], - [ [ "water", 1 ], [ "water_clean", 1 ] ], - [ [ "sweet_fruit_like", 1, "LIST" ], [ "jam_fruit", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "lffruit_pancakes", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_VEGGI", - "skill_used": "cooking", - "difficulty": 3, - "time": 12000, - "autolearn": true, - "qualities": [ { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 8, "LIST" ] ] ], - "components": [ - [ [ "flour", 1 ] ], - [ [ "can_coconut", 1 ], [ "rice_milk", 1 ] ], - [ [ "powder_eggs", 5 ], [ "eggs_bird", 1, "LIST" ], [ "egg_reptile", 1 ] ], - [ [ "syrup", 1 ] ], - [ [ "cooking_oil", 1 ], [ "cooking_oil2", 1 ] ], - [ [ "water", 1 ], [ "water_clean", 1 ] ], - [ [ "sweet_fruit_like", 1, "LIST" ], [ "jam_fruit", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "gflffruit_pancakes", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_VEGGI", - "skill_used": "cooking", - "difficulty": 3, - "time": 12000, - "autolearn": true, - "qualities": [ { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 8, "LIST" ] ] ], - "components": [ - [ [ "cornmeal", 1 ] ], - [ [ "can_coconut", 1 ], [ "rice_milk", 1 ] ], - [ [ "powder_eggs", 5 ], [ "eggs_bird", 1, "LIST" ], [ "egg_reptile", 1 ] ], - [ [ "syrup", 1 ] ], - [ [ "cooking_oil", 1 ], [ "cooking_oil2", 1 ] ], - [ [ "water", 1 ], [ "water_clean", 1 ] ], - [ [ "sweet_fruit_like", 1, "LIST" ], [ "jam_fruit", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "gfchoc_pancakes", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_BREAD", - "skill_used": "cooking", - "difficulty": 3, - "time": 12000, - "autolearn": true, - "qualities": [ { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 8, "LIST" ] ] ], - "components": [ - [ [ "cornmeal", 1 ] ], - [ [ "milk", 1 ], [ "milk_powder", 1 ], [ "con_milk", 1 ], [ "can_coconut", 1 ], [ "rice_milk", 1 ] ], - [ [ "powder_eggs", 5 ], [ "eggs_bird", 1, "LIST" ], [ "egg_reptile", 1 ] ], - [ [ "syrup", 1 ] ], - [ [ "cooking_oil", 1 ], [ "cooking_oil2", 1 ] ], - [ [ "water", 1 ], [ "water_clean", 1 ] ], - [ [ "chocolate", 1 ], [ "choc_drink", 2 ] ] - ] - }, - { - "type": "recipe", - "result": "gffrenchtoast", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_BREAD", - "skill_used": "cooking", - "difficulty": 3, - "time": 12000, - "autolearn": true, - "qualities": [ { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 8, "LIST" ] ] ], - "components": [ - [ [ "milk", 1 ], [ "con_milk", 1 ], [ "can_coconut", 1 ], [ "rice_milk", 1 ] ], - [ [ "powder_eggs", 5 ], [ "eggs_bird", 1, "LIST" ], [ "egg_reptile", 1 ] ], - [ [ "cinnamon", 20 ] ], - [ [ "cornbread", 2 ] ] - ] - }, - { - "type": "recipe", - "result": "gflffrenchtoast", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_BREAD", - "skill_used": "cooking", - "difficulty": 3, - "time": 12000, - "autolearn": true, - "qualities": [ { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 8, "LIST" ] ] ], - "components": [ - [ [ "can_coconut", 1 ], [ "rice_milk", 1 ] ], - [ [ "powder_eggs", 5 ], [ "eggs_bird", 1, "LIST" ], [ "egg_reptile", 1 ] ], - [ [ "cinnamon", 20 ] ], - [ [ "cornmeal", 2 ] ] - ] - }, - { - "type": "recipe", - "result": "gfbiscuit", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_BREAD", - "skill_used": "cooking", - "difficulty": 2, - "time": 28000, - "batch_time_factors": [ 50, 4 ], - "autolearn": true, - "qualities": [ { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 8, "LIST" ] ] ], - "components": [ - [ [ "cornmeal", 2 ] ], - [ - [ "milk", 1 ], - [ "con_milk", 1 ], - [ "can_coconut", 1 ], - [ "cooking_oil", 1 ], - [ "cooking_oil2", 1 ], - [ "rice_milk", 1 ] - ] - ] - }, - { - "type": "recipe", - "result": "gfpie", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_VEGGI", - "skill_used": "cooking", - "difficulty": 3, - "time": 25000, - "autolearn": true, - "qualities": [ { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 6, "LIST" ] ] ], - "components": [ - [ [ "cornmeal", 2 ] ], - [ [ "sweet_fruit_like", 1, "LIST" ] ], - [ [ "sugar", 5 ], [ "syrup", 1 ], [ "beet_syrup", 1 ], [ "molasses", 1 ] ], - [ [ "water", 1 ], [ "water_clean", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "gfpie_veggy", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_VEGGI", - "skill_used": "cooking", - "difficulty": 3, - "time": 25000, - "autolearn": true, - "qualities": [ { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 6, "LIST" ] ] ], - "components": [ - [ [ "cornmeal", 2 ] ], - [ - [ "broccoli", 2 ], - [ "irradiated_broccoli", 2 ], - [ "tomato", 2 ], - [ "irradiated_tomato", 2 ], - [ "pumpkin", 2 ], - [ "irradiated_pumpkin", 2 ], - [ "zucchini", 2 ], - [ "irradiated_zucchini", 2 ], - [ "celery", 2 ], - [ "irradiated_celery", 2 ], - [ "cabbage", 2 ], - [ "irradiated_cabbage", 2 ], - [ "sauerkraut", 4 ], - [ "potato", 2 ], - [ "irradiated_potato", 2 ], - [ "onion", 2 ], - [ "irradiated_onion", 2 ], - [ "carrot", 12 ], - [ "irradiated_carrot", 12 ], - [ "veggy", 2 ], - [ "dry_veggy", 2 ], - [ "rehydrated_veggy", 2 ], - [ "veggy_wild", 2 ], - [ "plant_sac", 6 ], - [ "dandelion_cooked", 2 ], - [ "wild_herbs", 40 ] - ], - [ [ "water", 1 ], [ "water_clean", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "gfpie_meat", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_MEAT", - "skill_used": "cooking", - "difficulty": 3, - "time": 25000, - "autolearn": true, - "qualities": [ { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 6, "LIST" ] ] ], - "components": [ - [ [ "cornmeal", 2 ] ], - [ - [ "meat", 1 ], - [ "rehydrated_meat", 1 ], - [ "dry_meat", 1 ], - [ "meat_canned", 1 ], - [ "can_chicken", 1 ], - [ "fish", 2 ], - [ "rehydrated_fish", 2 ], - [ "dry_fish", 2 ], - [ "fish_canned", 2 ], - [ "can_tuna", 2 ] - ], - [ [ "water", 1 ], [ "water_clean", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "gfpie_maple", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_SNACK", - "skill_used": "cooking", - "difficulty": 3, - "time": 25000, - "autolearn": true, - "qualities": [ { "id": "BOIL", "level": 2 }, { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 6, "LIST" ] ] ], - "components": [ - [ [ "cornmeal", 2 ] ], - [ [ "milk", 1 ], [ "milk_powder", 1 ], [ "con_milk", 1 ] ], - [ [ "syrup", 5 ] ], - [ [ "water", 1 ], [ "water_clean", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "gfpizza_veggy", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_VEGGI", - "skill_used": "cooking", - "difficulty": 3, - "time": 20000, - "book_learn": [ [ "cookbook_italian", 2 ] ], - "qualities": [ { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 8, "LIST" ] ] ], - "components": [ - [ [ "cornmeal", 2 ] ], - [ - [ "veggy", 2 ], - [ "veggy_wild", 2 ], - [ "veggy_salted", 2 ], - [ "celery", 2 ], - [ "irradiated_celery", 2 ], - [ "cabbage", 2 ], - [ "irradiated_cabbage", 2 ], - [ "sauerkraut", 4 ], - [ "tomato", 2 ], - [ "can_tomato", 2 ], - [ "pumpkin", 2 ], - [ "irradiated_pumpkin", 2 ], - [ "onion", 2 ], - [ "irradiated_onion", 2 ], - [ "broccoli", 1 ], - [ "irradiated_tomato", 2 ], - [ "irradiated_broccoli", 1 ], - [ "rehydrated_veggy", 2 ], - [ "mushroom", 2 ], - [ "dry_mushroom", 2 ], - [ "morel_cooked", 2 ], - [ "mushroom_cooked", 2 ], - [ "dry_veggy", 2 ] - ], - [ [ "sauce_pesto", 1 ], [ "sauce_red", 1 ], [ "seasoning_italian", 5 ], [ "wild_herbs", 10 ] ], - [ [ "water", 1 ], [ "water_clean", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "gfpizza_cheese", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_OTHER", - "skill_used": "cooking", - "difficulty": 3, - "time": 20000, - "book_learn": [ [ "cookbook_italian", 2 ] ], - "qualities": [ { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 8, "LIST" ] ] ], - "components": [ - [ [ "cornmeal", 2 ] ], - [ [ "cheese", 2 ], [ "can_cheese", 2 ], [ "cheese_hard", 2 ] ], - [ [ "sauce_pesto", 1 ], [ "sauce_red", 1 ], [ "seasoning_italian", 5 ], [ "wild_herbs", 10 ] ], - [ [ "water", 1 ], [ "water_clean", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "gfpizza_meat", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_MEAT", - "skill_used": "cooking", - "difficulty": 3, - "time": 20000, - "book_learn": [ [ "cookbook_italian", 2 ] ], - "qualities": [ { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 8, "LIST" ] ] ], - "components": [ - [ [ "cornmeal", 2 ] ], - [ - [ "meat", 2 ], - [ "meat_canned", 2 ], - [ "can_chicken", 2 ], - [ "meat_salted", 2 ], - [ "rehydrated_meat", 2 ], - [ "dry_meat", 2 ], - [ "fish", 3 ], - [ "fish_canned", 3 ], - [ "can_tuna", 3 ], - [ "salted_fish", 3 ], - [ "rehydrated_fish", 3 ], - [ "dry_fish", 3 ] - ], - [ [ "sauce_red", 1 ], [ "seasoning_italian", 5 ], [ "wild_herbs", 10 ] ], - [ [ "water", 1 ], [ "water_clean", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "gfcheeseburger", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_MEAT", - "skill_used": "cooking", - "difficulty": 3, - "time": 9000, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], - "components": [ - [ [ "meat", 1 ] ], - [ [ "cornbread", 2 ] ], - [ [ "cheese", 2 ], [ "cheese_hard", 2 ], [ "can_cheese", 1 ] ], - [ - [ "pickle", 1 ], - [ "veggy_pickled", 1 ], - [ "irradiated_onion", 1 ], - [ "onion", 1 ], - [ "can_tomato", 1 ], - [ "irradiated_tomato", 1 ], - [ "tomato", 1 ] - ], - [ - [ "ketchup", 1 ], - [ "mustard", 1 ], - [ "horseradish", 1 ], - [ "mayonnaise", 1 ], - [ "bacon", 2 ], - [ "seasoning_salt", 15 ], - [ "soysauce", 1 ], - [ "sauerkraut", 1 ] - ] - ] - }, - { - "type": "recipe", - "result": "gfhamburger", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_MEAT", - "skill_used": "cooking", - "difficulty": 3, - "time": 8000, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], - "components": [ - [ [ "meat", 1 ] ], - [ [ "cornbread", 2 ] ], - [ - [ "pickle", 1 ], - [ "veggy_pickled", 1 ], - [ "irradiated_onion", 1 ], - [ "onion", 1 ], - [ "can_tomato", 1 ], - [ "irradiated_tomato", 1 ], - [ "tomato", 1 ] - ], - [ - [ "ketchup", 1 ], - [ "mustard", 1 ], - [ "horseradish", 1 ], - [ "mayonnaise", 1 ], - [ "bacon", 2 ], - [ "seasoning_salt", 15 ], - [ "soysauce", 1 ], - [ "sauerkraut", 1 ] - ] - ] - }, - { - "type": "recipe", - "result": "gfsloppyjoe", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_MEAT", - "skill_used": "cooking", - "difficulty": 1, - "time": 8000, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], - "components": [ - [ [ "cornbread", 2 ] ], - [ [ "sauce_red", 1 ], [ "irradiated_tomato", 2 ], [ "can_tomato", 1 ], [ "tomato", 2 ] ], - [ [ "meat", 1 ], [ "rehydrated_meat", 1 ], [ "dry_meat", 1 ], [ "meat_canned", 1 ], [ "can_chicken", 2 ] ] - ] - }, - { - "type": "recipe", - "result": "gfblt", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_MEAT", - "skill_used": "cooking", - "difficulty": 2, - "time": 6000, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], - "components": [ - [ [ "cornbread", 2 ] ], - [ [ "bacon", 1 ] ], - [ [ "lettuce", 1 ], [ "irradiated_lettuce", 1 ] ], - [ [ "can_tomato", 1 ], [ "irradiated_tomato", 1 ], [ "tomato", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "gfsweetbread", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_MEAT", - "difficulty": 4, - "skill_used": "cooking", - "time": 40000, - "autolearn": true, - "//": "the cooking oil isn't supposed to be expended since you can recycle it after frying the sweetbreads", - "batch_time_factors": [ 67, 5 ], - "qualities": [ { "id": "CUT", "level": 1 }, { "id": "BOIL", "level": 2 }, { "id": "COOK", "level": 2 } ], - "tools": [ [ [ "surface_heat", 7, "LIST" ] ], [ [ "frying_oil", 7, "LIST" ] ] ], - "components": [ - [ [ "offal", 1 ] ], - [ [ "water", 1 ], [ "water_clean", 1 ] ], - [ [ "salt_water", 1 ], [ "saline", 5 ], [ "salt", 10 ] ], - [ [ "vinegar", 1 ], [ "lemon", 1 ], [ "irradiated_lemon", 1 ] ], - [ [ "cornmeal", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "gfsandwich_cheese_grilled", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_SNACK", - "skill_used": "cooking", - "time": 5000, - "autolearn": true, - "qualities": [ { "id": "COOK", "level": 1 } ], - "tools": [ [ [ "surface_heat", 3, "LIST" ] ] ], - "components": [ [ [ "gfsandwich_cheese", 1 ] ] ] - }, - { - "type": "recipe", - "result": "gfsandwich_deluxe", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_MEAT", - "skill_used": "cooking", - "difficulty": 2, - "time": 7500, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ - [ - [ "meat_cooked", 1 ], - [ "lunchmeat", 4 ], - [ "bologna", 5 ], - [ "fish_cooked", 1 ], - [ "bacon", 2 ], - [ "meat_salted", 2 ], - [ "fried_spam", 2 ], - [ "rehydrated_meat", 2 ], - [ "fish_smoked", 1 ], - [ "meat_smoked", 1 ], - [ "sausage", 1 ], - [ "can_herring", 1 ], - [ "can_chicken", 1 ], - [ "can_salmon", 1 ], - [ "can_tuna", 1 ], - [ "can_sardine", 1 ], - [ "can_clams", 1 ], - [ "meat_canned", 1 ], - [ "rehydrated_fish", 2 ], - [ "fish_pickled", 1 ], - [ "meat_pickled", 1 ], - [ "cracklins", 2 ], - [ "meat_aspic", 2 ] - ], - [ [ "cornbread", 2 ] ], - [ [ "cheese", 2 ], [ "cheese_hard", 2 ], [ "can_cheese", 2 ] ], - [ - [ "veggy_cooked", 1 ], - [ "veggy_wild_cooked", 1 ], - [ "veggy_salted", 1 ], - [ "celery", 1 ], - [ "irradiated_celery", 1 ], - [ "cabbage", 1 ], - [ "irradiated_cabbage", 1 ], - [ "sauerkraut", 1 ], - [ "tomato", 1 ], - [ "can_tomato", 1 ], - [ "irradiated_pumpkin", 1 ], - [ "onion", 1 ], - [ "irradiated_onion", 1 ], - [ "broccoli", 1 ], - [ "irradiated_tomato", 1 ], - [ "irradiated_broccoli", 1 ], - [ "rehydrated_veggy", 1 ], - [ "morel_cooked", 1 ], - [ "mushroom_cooked", 1 ], - [ "sauerkraut_onions", 1 ], - [ "pickle", 1 ], - [ "veggy_canned", 1 ], - [ "beans_cooked", 1 ], - [ "irradiated_carrot", 1 ], - [ "irradiated_zucchini", 1 ], - [ "irradiated_lettuce", 1 ], - [ "carrot", 1 ], - [ "zucchini", 1 ], - [ "lettuce", 1 ], - [ "pine_nuts", 1 ], - [ "morel_fried", 1 ], - [ "veggy_aspic", 1 ], - [ "dahlia_baked", 1 ], - [ "irradiated_cucumber", 1 ], - [ "cucumber", 1 ], - [ "veggy_pickled", 1 ], - [ "cooked_cattail_stalk", 1 ], - [ "cooked_pumpkin", 1 ], - [ "potato_baked", 1 ], - [ "irradiated_potato", 1 ], - [ "can_tomato", 1 ], - [ "dandelion_cooked", 1 ] - ], - [ - [ "ketchup", 1 ], - [ "mustard", 1 ], - [ "horseradish", 1 ], - [ "mayonnaise", 1 ], - [ "seasoning_salt", 5 ], - [ "soysauce", 1 ] - ] - ] - }, - { - "type": "recipe", - "result": "gfsandwich_cucumber", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_SNACK", - "skill_used": "cooking", - "time": 1500, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ - [ [ "cornbread", 2 ] ], - [ [ "cucumber", 1 ], [ "irradiated_cucumber", 1 ] ], - [ [ "mayonnaise", 1 ], [ "mustard", 1 ], [ "horseradish", 2 ], [ "seasoning_salt", 5 ] ] - ] - }, - { - "type": "recipe", - "result": "gfsandwich_jam", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_VEGGI", - "skill_used": "cooking", - "time": 1500, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ [ [ "cornbread", 2 ] ], [ [ "jam_fruit", 1 ] ] ] - }, - { - "type": "recipe", - "result": "gfsandwich_honey", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_SNACK", - "skill_used": "cooking", - "time": 1500, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ [ [ "cornbread", 2 ] ], [ [ "honeycomb", 1 ], [ "honey_bottled", 1 ] ] ] - }, - { - "type": "recipe", - "result": "gfsandwich_sauce", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_SNACK", - "skill_used": "cooking", - "time": 1500, - "autolearn": true, - "qualities": [ { "id": "CUT", "level": 1 } ], - "components": [ - [ [ "cornbread", 2 ] ], - [ [ "mayonnaise", 1 ], [ "ketchup", 1 ], [ "sauce_pesto", 1 ], [ "sauce_red", 1 ], [ "mustard", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "gfwaffles", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_BREAD", - "skill_used": "cooking", - "difficulty": 3, - "time": 12000, - "autolearn": true, - "tools": [ [ [ "surface_heat", 8, "LIST" ] ], [ [ "waffleiron", -1 ] ] ], - "components": [ - [ [ "cornmeal", 1 ] ], - [ [ "milk", 1 ], [ "milk_powder", 1 ], [ "con_milk", 1 ] ], - [ [ "powder_eggs", 5 ], [ "eggs_bird", 1, "LIST" ], [ "egg_reptile", 1 ] ], - [ [ "syrup", 1 ] ], - [ [ "sugar", 15 ] ], - [ [ "cooking_oil", 1 ], [ "cooking_oil2", 1 ] ], - [ [ "water", 1 ], [ "water_clean", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "gflfwaffles", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_BREAD", - "skill_used": "cooking", - "difficulty": 3, - "time": 12000, - "autolearn": true, - "tools": [ [ [ "surface_heat", 8, "LIST" ] ], [ [ "waffleiron", -1 ] ] ], - "components": [ - [ [ "cornmeal", 1 ] ], - [ [ "can_coconut", 1 ], [ "rice_milk", 1 ] ], - [ [ "powder_eggs", 5 ], [ "eggs_bird", 1, "LIST" ], [ "egg_reptile", 1 ] ], - [ [ "syrup", 1 ] ], - [ [ "sugar", 15 ] ], - [ [ "cooking_oil", 1 ], [ "cooking_oil2", 1 ] ], - [ [ "water", 1 ], [ "water_clean", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "lfwaffles", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_BREAD", - "skill_used": "cooking", - "difficulty": 3, - "time": 12000, - "autolearn": true, - "tools": [ [ [ "surface_heat", 8, "LIST" ] ], [ [ "waffleiron", -1 ] ] ], - "components": [ - [ [ "flour", 1 ] ], - [ [ "can_coconut", 1 ], [ "rice_milk", 1 ] ], - [ [ "powder_eggs", 5 ], [ "eggs_bird", 1, "LIST" ], [ "egg_reptile", 1 ] ], - [ [ "syrup", 1 ] ], - [ [ "sugar", 15 ] ], - [ [ "cooking_oil", 1 ], [ "cooking_oil2", 1 ] ], - [ [ "water", 1 ], [ "water_clean", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "gffruit_waffles", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_VEGGI", - "skill_used": "cooking", - "difficulty": 3, - "time": 12000, - "autolearn": true, - "tools": [ [ [ "surface_heat", 8, "LIST" ] ], [ [ "waffleiron", -1 ] ] ], - "components": [ - [ [ "cornmeal", 1 ] ], - [ [ "milk", 1 ], [ "milk_powder", 1 ], [ "con_milk", 1 ] ], - [ [ "powder_eggs", 5 ], [ "eggs_bird", 1, "LIST" ], [ "egg_reptile", 1 ] ], - [ [ "syrup", 1 ] ], - [ [ "sugar", 15 ] ], - [ [ "cooking_oil", 1 ], [ "cooking_oil2", 1 ] ], - [ [ "water", 1 ], [ "water_clean", 1 ] ], - [ [ "sweet_fruit_like", 1, "LIST" ], [ "jam_fruit", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "gflffruit_waffles", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_VEGGI", - "skill_used": "cooking", - "difficulty": 3, - "time": 12000, - "autolearn": true, - "tools": [ [ [ "surface_heat", 8, "LIST" ] ], [ [ "waffleiron", -1 ] ] ], - "components": [ - [ [ "cornmeal", 1 ] ], - [ [ "can_coconut", 1 ], [ "rice_milk", 1 ] ], - [ [ "powder_eggs", 5 ], [ "eggs_bird", 1, "LIST" ], [ "egg_reptile", 1 ] ], - [ [ "syrup", 1 ] ], - [ [ "sugar", 15 ] ], - [ [ "cooking_oil", 1 ], [ "cooking_oil2", 1 ] ], - [ [ "water", 1 ], [ "water_clean", 1 ] ], - [ [ "sweet_fruit_like", 1, "LIST" ], [ "jam_fruit", 1 ] ] - ] - }, - { - "type": "recipe", - "result": "gfchoc_waffles", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_BREAD", - "skill_used": "cooking", - "difficulty": 3, - "time": 12000, - "autolearn": true, - "tools": [ [ [ "surface_heat", 8, "LIST" ] ], [ [ "waffleiron", -1 ] ] ], - "components": [ - [ [ "cornmeal", 1 ] ], - [ [ "milk", 1 ], [ "milk_powder", 1 ], [ "con_milk", 1 ], [ "can_coconut", 1 ], [ "rice_milk", 1 ] ], - [ [ "powder_eggs", 5 ], [ "eggs_bird", 1, "LIST" ], [ "egg_reptile", 1 ] ], - [ [ "syrup", 1 ] ], - [ [ "cooking_oil", 1 ], [ "cooking_oil2", 1 ] ], - [ [ "sugar", 15 ] ], - [ [ "water", 1 ], [ "water_clean", 1 ] ], - [ [ "chocolate", 1 ], [ "choc_drink", 2 ] ] - ] - }, - { - "result": "rice_milk", - "byproducts": [ [ "starch" ] ], - "type": "recipe", - "id_suffix": "with_from_food_processor", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_OTHER", - "skill_used": "cooking", - "difficulty": 3, - "time": 21250, - "autolearn": true, - "batch_time_factors": [ 83, 3 ], - "result_mult": 2, - "tools": [ [ [ "food_processor", 20 ] ] ], - "components": [ [ [ "dry_rice", 1 ] ], [ [ "water", 2 ], [ "water_clean", 2 ] ] ] - }, - { - "result": "coconut_water", - "type": "recipe", - "id_suffix": "with_from_food_processor", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_OTHER", - "skill_used": "cooking", - "difficulty": 3, - "time": 21250, - "autolearn": true, - "batch_time_factors": [ 83, 3 ], - "result_mult": 2, - "tools": [ [ [ "food_processor", 20 ] ] ], - "components": [ [ [ "coconut", 1 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ] - }, - { - "result": "jar_cream_coconut", - "type": "recipe", - "id_suffix": "jarred", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_MEAT", - "skill_used": "cooking", - "difficulty": 4, - "time": 20000, - "batch_time_factors": [ 83, 5 ], - "autolearn": true, - "container": "jar_glass_sealed", - "result_mult": 1, - "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], - "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], - "components": [ [ [ "water", 1 ], [ "water_clean", 1 ] ], [ [ "jar_glass", 1 ] ], [ [ "coconut", 1 ] ] ] - }, - { - "result": "can_coconut", - "type": "recipe", - "id_suffix": "canned", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_MEAT", - "skill_used": "cooking", - "difficulty": 5, - "time": 24000, - "batch_time_factors": [ 83, 5 ], - "autolearn": true, - "contained": true, - "qualities": [ - { "id": "SAW_M", "level": 1 }, - { "id": "HAMMER", "level": 1 }, - { "id": "CUT", "level": 1 }, - { "id": "COOK", "level": 3 } - ], - "tools": [ [ [ "surface_heat", 10, "LIST" ] ], [ [ "can_sealer", -1 ] ] ], - "components": [ - [ [ "canister_empty", 1 ], [ "can_food_unsealed", 1 ] ], - [ [ "scrap", 1 ] ], - [ [ "water", 1 ], [ "water_clean", 1 ] ], - [ [ "coconut", 1 ] ] - ] - }, - { - "result": "rice_flour", - "type": "recipe", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_OTHER", - "skill_used": "cooking", - "difficulty": 2, - "time": 45000, - "autolearn": true, - "batch_time_factors": [ 83, 3 ], - "flags": [ "BLIND_EASY" ], - "tools": [ [ [ "rock_quern", -1 ], [ "clay_quern", -1 ] ] ], - "components": [ [ [ "dry_rice", 6 ] ] ] - }, - { - "result": "rice_flour", - "type": "recipe", - "id_suffix": "with_from_food_processor", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_OTHER", - "skill_used": "cooking", - "difficulty": 2, - "time": 11250, - "autolearn": true, - "batch_time_factors": [ 83, 3 ], - "tools": [ [ [ "food_processor", 20 ] ] ], - "components": [ [ [ "dry_rice", 6 ] ] ] - }, - { - "result": "cornmeal", - "type": "recipe", - "id_suffix": "with_from_food_processor", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_OTHER", - "skill_used": "cooking", - "difficulty": 2, - "time": 11250, - "autolearn": true, - "batch_time_factors": [ 83, 3 ], - "tools": [ [ [ "food_processor", 20 ] ] ], - "components": [ [ [ "corn", 2 ], [ "buckwheat", 2 ], [ "acorns_cooked", 2 ], [ "oats", 2 ], [ "starch", 2 ] ] ] - }, - { - "result": "cornmeal", - "type": "recipe", - "category": "CC_FOOD", - "subcategory": "CSC_FOOD_OTHER", - "skill_used": "cooking", - "difficulty": 2, - "time": 45000, - "autolearn": true, - "batch_time_factors": [ 83, 3 ], - "flags": [ "BLIND_EASY" ], - "tools": [ [ [ "rock_quern", -1 ], [ "clay_quern", -1 ] ] ], - "components": [ [ [ "buckwheat", 2 ], [ "acorns_cooked", 2 ], [ "oats", 2 ], [ "starch", 2 ] ] ] - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1blc_01.json b/data/mods/mapspecials_demo/megastore/mega_1blc_01.json deleted file mode 100644 index d0ea75d34b2e9..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1blc_01.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1blc", - "//": "ground floor. bottom left corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,-------", - ",,,,,,,,,,,,,,,,,|KKKKKK", - ",,----------------......", - ",,|KKIKKKKKKKKKKKKI.....", - ",,|.....................", - ",,|.....................", - ",,|k.k.k.k..FFFFFFFFFF..", - ",,|k.k.k.k..FFFFFFFFFF..", - ",,|k.k.k.k..............", - ",,|k.k.k.k..............", - ",,|k.k.k.k..ffffffffff..", - ",,|k...k.k..ffffffffff..", - ",,|---.k.k..............", - ",,|..|..................", - ",,|..!..................", - ",,|..|..................", - ",,|..I.........CCCI.....", - ",,----....CCCr.6........", - ",,WW|.....6.............", - ",,WWg..........CCCr.....", - ",,WWg.....CCCr.6........", - ",,WWg.....6............." - ], - "rotation": 3, - "palettes": [ "megastore", "mega_goods_a" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1blc_02.json b/data/mods/mapspecials_demo/megastore/mega_1blc_02.json deleted file mode 100644 index e17ec422a1439..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1blc_02.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1blc", - "//": "ground floor. bottom left corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,-------", - ",,,,,,,,,,,,,,,,,|......", - ",,----------------......", - ",,|U.I|CCCCffFffF|I.....", - ",,|o..!..........!......", - ",,|o..|.......TTo|......", - ",,|----C6CC6CC---|......", - ",,|..............|......", - ",,|..c..................", - ",,|......TT...c.........", - ",,|..TT..TT..TT.........", - ",,|.cTT......TT.........", - ",,|............c........", - ",,|----gggggggg----.....", - ",,|s..!.................", - ",,|-+-|.................", - ",,|&.I|........CCCI.....", - ",,-----...CCCr.6........", - ",,WWg.....6.............", - ",,WWg..........CCCr.....", - ",,WWg.....CCCr.6........", - ",,WWg.....6............." - ], - "rotation": 3, - "palettes": [ "megastore", "mega_goods_b" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1blc_03.json b/data/mods/mapspecials_demo/megastore/mega_1blc_03.json deleted file mode 100644 index fa16a56ad6b48..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1blc_03.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1blc", - "//": "ground floor. bottom left corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,-------", - ",,,,,,,,,,,,,,,,,|RRRRRR", - ",,----------------......", - ",,|FFIFFFFFFFFFFFFI.....", - ",,|.....................", - ",,|.FFFFFFFFFFFFFF......", - ",,|.....................", - ",,|.KKKKKKKKKKKKKK......", - ",,|.....................", - ",,|.KKKKKKKKKKKKKK......", - ",,|.....................", - ",,|.kkkkkkkkkkkkkk......", - ",,|.....................", - ",,|%....................", - ",,|%....................", - ",,|.....................", - ",,|%%I.........CCCI.....", - ",,---.....CCCr.6........", - ",,WW|.....6.............", - ",,WWg..........CCCr.....", - ",,WWg.....CCCr.6........", - ",,WWg.....6............." - ], - "rotation": 3, - "palettes": [ "megastore", "mega_goods_c" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ], - "furniture": { "%": "f_vending_c" } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1blc_04.json b/data/mods/mapspecials_demo/megastore/mega_1blc_04.json deleted file mode 100644 index 92f738dc22f8b..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1blc_04.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1blc", - "//": "ground floor. bottom left corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,-------", - ",,,,,,,,,,,,,,,,,|RRRRRR", - ",,----------------......", - ",,|kkIkkkkkkkkkkkkI.....", - ",,|.....................", - ",,|.....................", - ",,|..kkkkkkkkkkkkkk.....", - ",,|.....................", - ",,|.....................", - ",,|..kkkkkkkkkkkkkk.....", - ",,|.....................", - ",,|.....................", - ",,|..kkkkkkkkkkkkkk.....", - ",,|.....................", - ",,|.....................", - ",,|.....................", - ",,|ppI.........CCCI.....", - ",,---.....CCCr.6........", - ",,WW|.....6.............", - ",,WWg..........CCCr.....", - ",,WWg.....CCCr.6........", - ",,WWg.....6............." - ], - "rotation": 3, - "palettes": [ "megastore", "mega_goods_d" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1blc_05.json b/data/mods/mapspecials_demo/megastore/mega_1blc_05.json deleted file mode 100644 index 23e1a7755d79f..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1blc_05.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1blc", - "//": "ground floor. bottom left corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,-------", - ",,,,,,,,,,,,,,,,,|RRRRRR", - ",,----------------......", - ",,|r.IrrrrrrrrrrrrI..RR.", - ",,|r.................RR.", - ",,|r..rrrrrrrrrrrrr..RR.", - ",,|r.................RR.", - ",,|r..rrrrrrrrrrrrr..RR.", - ",,|r.................RR.", - ",,|r..rrrrrrrrrrrrr..RR.", - ",,|r....................", - ",,|r..rrrrrrrrrrrrr.....", - ",,|.....................", - ",,|...v.........v.......", - ",,|.....................", - ",,|.....................", - ",,|FFIFFF......CCCI.....", - ",,---.....CCCr.6........", - ",,WW|.....6.............", - ",,WWg..........CCCr.....", - ",,WWg.....CCCr.6........", - ",,WW|.....6............." - ], - "rotation": 3, - "palettes": [ "megastore", "mega_goods_e" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ], - "vehicles": { "v": { "vehicle": "food_cart", "chance": 50, "status": 0 } } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1brc_01.json b/data/mods/mapspecials_demo/megastore/mega_1brc_01.json deleted file mode 100644 index ddcdd7084800b..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1brc_01.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1brc", - "//": "ground floor. bottom right corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,----------------WWWW", - ",,,,|C.....ffCCUUUU|WWWW", - ",,,,|C..|..........--gg-", - ",,,,|I..|C........I|....", - ",,,,|o..|C........U|....", - ",,,,|--!--CCCCCCC---....", - ",,,,|...................", - ",,,,|...................", - ",,,,|b...nnnnn..........", - ",,,,|b..................", - ",,,,|b...nnnnn..........", - ",,,,|b...........TT.....", - ",,,,|b...nnnnn...TT.....", - ",,,,|b..........cTT.....", - ",,,,|b..................", - ",,---b..................", - ",,|r.I...bbbbbbbbbIbb...", - ",,|r.....rrrrrrrrrrrr...", - ",,|r....................", - ",,|r.r.r.r.r.r.r.r.r.r..", - ",,|r.r.r.r.r.r.r.r.r.r..", - ",,|r.r.r.r.r.r.r.r.r.r.." - ], - "rotation": 2, - "palettes": [ "megastore", "mega_goods_a" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ], - "items": { "C": { "item": "coffee_display", "chance": 30 } } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1brc_02.json b/data/mods/mapspecials_demo/megastore/mega_1brc_02.json deleted file mode 100644 index 5046ed2346f87..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1brc_02.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1brc", - "//": "ground floor. bottom right corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,----------------WWWW", - ",,,,|ffffffffffffff|WWWW", - ",,,,|..............--gg-", - ",,,,|I............I|....", - ",,,,|----.......----....", - ",,,,|K..................", - ",,,,|K......KK..........", - ",,,,|K..KK..KK..........", - ",,,,|K..KK......KK......", - ",,,,|K......KK..KK......", - ",,,,|K..KK..KK.....KK...", - ",,,,|K..KK......KK.KK...", - ",,,,|K......KK..KK......", - ",,,,|K..KK..KK..........", - ",,,,|K..KK..............", - ",,---K..................", - ",,|rrIrrrrrrrrrrrrIrrr..", - ",,|.....................", - ",,|...rrrrrrrrrrrrrrrr..", - ",,|.....................", - ",,|...rrrrrrrrrrrrrrrr..", - ",,|....................." - ], - "rotation": 2, - "palettes": [ "megastore", "mega_goods_b" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1brc_03.json b/data/mods/mapspecials_demo/megastore/mega_1brc_03.json deleted file mode 100644 index 7f0835c07d216..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1brc_03.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1brc", - "//": "ground floor. bottom right corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,----------------WWWW", - ",,,,|CCCCCCCCCCCCCC|WWWW", - ",,,,|C............C--gg-", - ",,,,|I...CCCCCC...I.....", - ",,,,|C...CCCCCC.........", - ",,,,|...................", - ",,,,|...................", - ",,,,|..rrrrrrrrrrrrrrrr.", - ",,,,|...................", - ",,,,|..rrrrrrrrrrrrrrrr.", - ",,,,|...................", - ",,,,|..rrrrrrrrrrrrrrrr.", - ",,,,|...................", - ",,,,|..RRRRRRRRRRRRRRR..", - ",,,,|...................", - ",,---...................", - ",,|RRIRRRRRRR..RRRRIRRR.", - ",,|R....................", - ",,|R....................", - ",,|R..RRRRRRR..RRRRRRRR.", - ",,|R....................", - ",,|R...................." - ], - "rotation": 2, - "palettes": [ "megastore", "mega_goods_c" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ], - "items": { "C": { "item": "produce", "chance": 30, "repeat": 3 } } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1brc_04.json b/data/mods/mapspecials_demo/megastore/mega_1brc_04.json deleted file mode 100644 index 48da1c441a408..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1brc_04.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1brc", - "//": "ground floor. bottom right corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,----------------WWWW", - ",,,,|k............K|WWWW", - ",,,,|k....kk..KK..K--gg-", - ",,,,|I....kk..KK..IK....", - ",,,,|k....kk..KK..KK....", - ",,,,|k....kk..KK..KK....", - ",,,,|k....kk..KK..KK....", - ",,,,|k....kk..KK..KK....", - ",,,,|k....kk..KK..KK....", - ",,,,|k....kk..KK..KK....", - ",,,,|k..................", - ",,,,|k..................", - ",,,,|k..RRRRRRRRRRRRRR..", - ",,,,|k..................", - ",,,,|k..RRRRRRRRRRRRRR..", - ",,---k..................", - ",,|RRI..RRRRRRRRRRIRRR..", - ",,|R....................", - ",,|R...RRRRRRRRRRRRRRR..", - ",,|R....................", - ",,|R...RRRRRRRRRRRRRRR..", - ",,|R...................." - ], - "rotation": 2, - "palettes": [ "megastore", "mega_goods_d" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1brc_05.json b/data/mods/mapspecials_demo/megastore/mega_1brc_05.json deleted file mode 100644 index a9c935ea098a3..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1brc_05.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1brc", - "//": "ground floor. bottom right corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,----------------WWWW", - ",,,,|f..ff....ff..f|WWWW", - ",,,,|f..ff....ff..f--gg-", - ",,,,|I..ff....ff..I.....", - ",,,,|f..ff....ff..f.....", - ",,,,|f..ff....ff..f.....", - ",,,,|f..ff....ff..f.....", - ",,,,|f..ff....ff..f.....", - ",,,,|...................", - ",,,,|...................", - ",,,,|r..rrrrrrrrrrrrrr..", - ",,,,|r..................", - ",,,,|r..rrrrrrrrrrrrrr..", - ",,,,|r..................", - ",,,,|r..rrrrrrrrrrrrrr..", - ",,---r..................", - ",,|RRI..rrrrrrrrrrIrrr..", - ",,|R....................", - ",,|R....................", - ",,|R.RR..RR..RR..RR.....", - ",,|R.RR..RR..RR..RR.....", - ",,|R...................." - ], - "rotation": 2, - "palettes": [ "megastore", "mega_goods_e" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1le_01.json b/data/mods/mapspecials_demo/megastore/mega_1le_01.json deleted file mode 100644 index 50727875a28d7..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1le_01.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1le", - "//": "ground floor. left edge", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - "------------------------", - "rrrrrrrrrrrrrrrrrrrrrrrr", - "........................", - ".....I............I.....", - "........................", - "........................", - "........................", - "........................", - "........................", - ".KK..KK.................", - ".KK..KK.................", - ".....KK.................", - ".....KK.................", - ".KK..KK.................", - ".KK..KK.................", - "........................", - ".KK..IK...RRRRRRRRIRRR..", - ".KK..KK.................", - "..........RRRRRRRRRRRR..", - "........................", - "..RRRRRRRRRRRRRRRRRRRR..", - "........................" - ], - "rotation": 3, - "palettes": [ "megastore", "mega_goods_a" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1le_02.json b/data/mods/mapspecials_demo/megastore/mega_1le_02.json deleted file mode 100644 index 68c9525f7ac0d..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1le_02.json +++ /dev/null @@ -1,43 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1le", - "//": "ground floor. left edge", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - "------------------------", - "rrrrr|CCCCCCCCCCCC|RRRRR", - "....r|...........%|.....", - "....rI..CCCCCCC..%I.....", - "....r|...........%|..RR.", - "....r|....CCC....%|..RR.", - "....r|....6......%|.....", - ".....C....C......%|..RR.", - ".....C....CCC%%%%CC..RR.", - "........................", - "........................", - "........................", - "....kkkkkkkkkkkkkkkk....", - "....kkkkkkkkkkkkkkkk....", - "........................", - "........................", - "....RI..R..RR..R..IR....", - "....RR..R..RR..R..RR....", - ".....R..R..RR..R..R.....", - ".....R..R..RR..R..R.....", - ".....R..R..RR..R..R.....", - "........................" - ], - "rotation": 3, - "palettes": [ "megastore", "mega_goods_b" ], - "furniture": { "%": "f_displaycase" }, - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ], - "items": { "C": { "item": "consumer_electronics", "chance": 60 }, "%": { "item": "jewelry_front", "chance": 60 } } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1le_03.json b/data/mods/mapspecials_demo/megastore/mega_1le_03.json deleted file mode 100644 index bf0e45fa668ce..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1le_03.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1le", - "//": "ground floor. left edge", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - "------------------------", - "rrrrrrRRRRRRRRRRRRRRRRRR", - ".....rR.................", - ".....IR..RR......RI.....", - ".....rR..RR..RR..RR..RR.", - ".....rR..RR..RR..RR..RR.", - ".....rR..RR..RR..RR..RR.", - ".....rR..RR..RR..RR..RR.", - ".....rR..RR..RR..RR..RR.", - "rr...rR..RR..RR..RR..RR.", - "........................", - "........................", - "........................", - "..FFFFFFFF...KK..KK.....", - "..FFFFFFFF...KK..KK.....", - ".............KK..KK.....", - "..FFIFFFFF...KK..KI.....", - "..ffffffff...KK..KK.....", - ".............KK..KK.....", - "..ffffffff...KK..KK.....", - "..ffffffff...KK..KK.....", - "........................" - ], - "rotation": 3, - "palettes": [ "megastore", "mega_goods_c" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1le_04.json b/data/mods/mapspecials_demo/megastore/mega_1le_04.json deleted file mode 100644 index df481f6bd8368..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1le_04.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1le", - "//": "ground floor. left edge", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - "------------------------", - ".....................rrr", - "........................", - ".b.b.I.k.k.k..RR..IR....", - ".b.b.k.k.k.k..RR..RR....", - ".b.b.k.k.k.k............", - ".b.b.k.k.k.k............", - ".b.b.k.k.k.k..RR..RR....", - ".b.b.k.k.k.k..RR..RR....", - ".b.b.k.k.k.k............", - ".b.b.k.k.k.k..RR..RR....", - ".b.b.k.k.k.k..RR..RR....", - "........................", - "........................", - "........................", - "...ffffffffffffffffff...", - "...ffIffffffffffffIff...", - "........................", - "........................", - "...ffffffffffffffffff...", - "...ffffffffffffffffff...", - "........................" - ], - "rotation": 3, - "palettes": [ "megastore", "mega_goods_d" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1le_05.json b/data/mods/mapspecials_demo/megastore/mega_1le_05.json deleted file mode 100644 index 130c91b417bcd..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1le_05.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1le", - "//": "ground floor. left edge", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - "------------------------", - "kkkkkkkkkkkkkkkkRRRRRRRR", - "........................", - ".kkkkIkkkkkkkkkkRRIRRRR.", - "........................", - ".kkkkkkkkkkkkkkkkkRRRRR.", - "........................", - ".................RR..RR.", - ".................RR..RR.", - "........................", - "..r..r..r..r.....RR..RR.", - "..r..r..r..r.....RR..RR.", - "..r..r..r..r............", - "..r..r..r..r.....RR..RR.", - "..r..r..r..r.....RR..RR.", - "..r..r..r..r............", - "..r..I..r..r.....RI..RR.", - "..r..r..r..r.....RR..RR.", - "..r..r..r..r............", - "..r..r..r..r.....RR..RR.", - "..r..r..r..r.....RR..RR.", - "........................" - ], - "rotation": 3, - "palettes": [ "megastore", "mega_goods_e" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1mid_01.json b/data/mods/mapspecials_demo/megastore/mega_1mid_01.json deleted file mode 100644 index 01bbe0330928b..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1mid_01.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1mid", - "//": "ground floor. middle area", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - "........................", - ".KKKKKKKKKKKKKK..RR..RR.", - ".KKKKKKKKKKKKKK..RR..RR.", - ".................RR..RR.", - ".KKKKKKKKKKKKKK..RR..RR.", - ".KKKKKIKKKKKKKK..RI..RR.", - ".................RR..RR.", - ".KKKKKKKKKKKKKK..RR..RR.", - ".KKKKKKKKKKKKKK..RR..RR.", - ".................RR..RR.", - ".................RR..RR.", - ".kk..kk..........RR..RR.", - ".kk..kk.................", - ".kk..kk.................", - ".kk..kk..rrrrrrrrrrrrrrr", - ".kk..kk.................", - ".kk..kk..rrrrrrrrrrrrrrr", - ".kk..kk.................", - ".kk..Ik..rrrrrrrrrrrrrrr", - ".kk..kk.................", - ".kk..kk..rrrrrrrrrrrrrrr", - ".kk..kk.................", - ".kk..kk..rrrrrrrrrrrrrrr", - "........................" - ], - "rotation": [ 0, 3 ], - "palettes": [ "megastore", "mega_goods_a" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1mid_02.json b/data/mods/mapspecials_demo/megastore/mega_1mid_02.json deleted file mode 100644 index c0f8a5fed641f..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1mid_02.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1mid", - "//": "ground floor. middle area", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - "........................", - ".....r...rr.............", - ".....r...rr...b...b...b.", - ".....r...rr...b...b...b.", - ".....r...rr...b...b...b.", - ".rrrrI...rr...b...I...b.", - ".........rr...b...b...b.", - ".........rr...b...b...b.", - ".rrrrrrrrrr...b...b...b.", - ".rrrrrrrrrr...b...b...b.", - "........................", - "........................", - ".kkkkkkkkkkkkkkkkkkkkkk.", - "........................", - ".kkkkkkkkkkkkkkkkkkkkkk.", - "........................", - "........................", - "........................", - "....RI.RR......RR.IR....", - "....RR.RR......RR.RR....", - "........................", - "....RR............RR....", - "....RR............RR....", - "........................" - ], - "rotation": [ 0, 3 ], - "palettes": [ "megastore", "mega_goods_b" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1mid_03.json b/data/mods/mapspecials_demo/megastore/mega_1mid_03.json deleted file mode 100644 index 77b8ff5ea652a..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1mid_03.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1mid", - "//": "ground floor. middle area", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ".....rr..........rr.....", - ".....rr....rr....rr.....", - ".....rr....rr....rr.....", - "........................", - "........................", - "..FFFIFFFFFFFFFFFFIFFF..", - "..FFFFFFFFFFFFFFFFFFFF..", - "........................", - "........................", - "..FFFFFFFFFFFFFFFFFFFF..", - "..FFFFFFFFFFFFFFFFFFFF..", - "........................", - "........................", - "..FFFFFFFFFFFFFFFFFFFF..", - "..ffffffffffffffffffff..", - "........................", - "........................", - "..ffffffffffffffffffff..", - "..fffIffffffffffffIfff..", - "........................", - "........................", - "..ffffffffffffffffffff..", - "..KKKKKKKKKKKKKKKKKKKK..", - "........................" - ], - "rotation": [ 0, 3 ], - "palettes": [ "megastore", "mega_goods_c" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1mid_04.json b/data/mods/mapspecials_demo/megastore/mega_1mid_04.json deleted file mode 100644 index 4b316b9d64348..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1mid_04.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1mid", - "//": "ground floor. middle area", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ".RR..RR..RR.............", - ".RR..RR..RR....FFFFFFF..", - "...............FFFFFFF..", - "........................", - ".RR..RR..RR....FFFFFFF..", - ".RR..IR..RR....FFFIFFF..", - "........................", - "...............FFFFFFF..", - ".RR..RR..RR....FFFFFFF..", - ".RR..RR..RR.............", - "........................", - "........................", - ".....k..k..kk..k..k.....", - ".....k..k..kk..k..k.....", - ".....k..k..kk..k..k.....", - ".....k..k..kk..k..k.....", - ".....k..k..kk..k..k.....", - ".....k..k..kk..k..k.....", - ".....I..k..kk..k..I.....", - ".....k..k..kk..K..k.....", - ".....k..k..kk..K..k.....", - ".....k..k..kk..k..k.....", - "........................", - "........................" - ], - "rotation": [ 0, 3 ], - "palettes": [ "megastore", "mega_goods_d" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1mid_05.json b/data/mods/mapspecials_demo/megastore/mega_1mid_05.json deleted file mode 100644 index a7fca85339e45..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1mid_05.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1mid", - "//": "ground floor. middle area", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - "........................", - "rrrrrrrrrr..............", - ".............KK..KK..KK.", - "rrrrrrrrrr...KK..KK..KK.", - ".............KK......KK.", - ".f.f.I.f.....KK..KI..KK.", - ".f.f.f.f.....KK..KK..KK.", - ".f.f.f.f.....KK......KK.", - ".f.f.f.f.....KK..KK..KK.", - ".f.f.f.f.....KK......KK.", - ".f.f.f.f.....KK..KK..KK.", - ".f.f.f.f.....KK..KK..KK.", - ".f.f.f.f.....KK......KK.", - ".f.f.f.f.....KK..KK..KK.", - ".............KK..KK..kk.", - "........................", - ".............bbbbbbbbbb.", - "........................", - ".RR.RI.......bbbbbIbbbb.", - ".RR.RR..................", - ".............bbbbbbbbbb.", - ".RR.RR..................", - ".RR.RR.......bbbbbbbbbb.", - "........................" - ], - "rotation": [ 0, 3 ], - "palettes": [ "megastore", "mega_goods_e" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1re_01.json b/data/mods/mapspecials_demo/megastore/mega_1re_01.json deleted file mode 100644 index e85eef4c497da..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1re_01.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1re", - "//": "ground floor. right edge", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - "------------------------", - "fffffffffff.............", - "........................", - "fffffIfffff.....r.I.r.r.", - "FFFFFFFFFFF.....r.r.r.r.", - "................r.r.r.r.", - "FFFFFFFFFFF.....r.r.r.r.", - "bbbbbbbbbbb.....r.r.r.r.", - "................r.r.r.r.", - "bbbbbbbbbbb.....r.r.r.r.", - "bbbbbbbbbbb.....r.r.r.r.", - "................r.r.r.r.", - "bbbbbbbbbbb.....r.r.r.r.", - "bbbbbbbbbbb.....r.r.r.r.", - "........................", - "........................", - ".kk..Ik..kk...rrrrIrrr..", - ".kk..kk..kk.............", - "..............rrrrrrrr..", - ".kk..kk..kk.............", - ".kk..kk..kk...rrrrrrrr..", - "........................" - ], - "rotation": 1, - "palettes": [ "megastore", "mega_goods_a" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1re_02.json b/data/mods/mapspecials_demo/megastore/mega_1re_02.json deleted file mode 100644 index 23275a5183d66..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1re_02.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1re", - "//": "ground floor. right edge", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - "------------------------", - "rrrrrrrrrrrrrrrrrrrrrrrr", - "........................", - "...rrIrrrrrrrrrrrrIrr...", - "........................", - "...rrrrrrrrrrrrrrrrrr...", - "........................", - "...rrrrrrrrrrrrrrrrrr...", - "........................", - "...rrrrrrrrrrrrrrrrrr...", - "........................", - "...rrrrrrrkkkkkkkkkkk...", - "........................", - "........................", - "........................", - "........................", - "....RI..RR...RR..RI.....", - "....RR..RR...RR..RR.....", - "....RR..RR...RR..RR.....", - "....RR..RR...RR..RR.....", - "....RR..RR...RR..RR.....", - "........................" - ], - "rotation": 1, - "palettes": [ "megastore", "mega_goods_b" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1re_03.json b/data/mods/mapspecials_demo/megastore/mega_1re_03.json deleted file mode 100644 index add03b41e47f0..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1re_03.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1re", - "//": "ground floor. right edge", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - "------------------------", - "kkkkkkkkkk.AA.kkkkkkkkkk", - "........................", - "...kkIkkkkk..bbbbbIbb...", - "........................", - "...kkkkkkkk..bbbbbbbb...", - "........................", - "...kkkkkkkk..bbbbbbbb...", - "........................", - "...kkkkkkkk..bbbbbbbb...", - "........................", - "...kkkkkkkk..bbbbbbbb...", - "........................", - "........................", - "........................", - ".....KK....KK....KK.....", - ".....IK....KK....KI.....", - "........................", - ".....KK..........KK.....", - ".....KK....KK....KK.....", - "........................", - "........................" - ], - "rotation": 1, - "palettes": [ "megastore", "mega_goods_c" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1re_04.json b/data/mods/mapspecials_demo/megastore/mega_1re_04.json deleted file mode 100644 index e5c8f199d8118..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1re_04.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1re", - "//": "ground floor. right edge", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - "------------------------", - "rrrrrrrrrrrrrrrrrrrrrrrr", - "........................", - "..rrrIrrrrr..rrrrrIrrr..", - "........................", - "..rrrrrrrrr..rrrrrrrrr..", - "........................", - "..rrrrrrrrr..rrrrrrrrr..", - "........................", - "........................", - "........................", - ".KK.KK..................", - ".KK.KK..................", - ".KK.KK..................", - ".KK.KK..................", - ".KK.KK..................", - ".KK.KI......CCCCCCI.....", - "..................C.....", - "............C.c...C.....", - ".RR.........C6CCCCC.....", - ".RR.....................", - "........................" - ], - "rotation": 1, - "palettes": [ "megastore", "mega_goods_d" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ], - "items": { "C": { "item": "consumer_electronics", "chance": 60 } } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1re_05.json b/data/mods/mapspecials_demo/megastore/mega_1re_05.json deleted file mode 100644 index 257fb1bee576b..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1re_05.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1re", - "//": "ground floor. right edge", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - "------------------------", - "bbbbbbbbbbbrrrrrrrrrrrrr", - "........................", - ".bbbbIbbbbb......KI.....", - ".................KK.....", - ".................KK.....", - ".bbbbbbbbbb......KK.....", - ".................KK.....", - ".................KK.....", - ".bbbbbbbbbb......KK.....", - ".................KK.....", - ".RR..RR..RR..KK..KK.....", - ".RR..RR..RR..KK..KK.....", - ".RR..RR..RR..KK..KK.....", - ".RR..RR..RR..KK..KK.....", - ".RR..RR..KK..KK..KK.....", - ".RR..IR..KK..KK..KI.....", - ".RR..RR..KK..KK..KK.....", - ".RR..RR..KK..KK..KK..rr.", - ".RR..RR..KK..KK..KK..rr.", - "........................", - "........................" - ], - "rotation": 1, - "palettes": [ "megastore", "mega_goods_e" ], - "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1te_01.json b/data/mods/mapspecials_demo/megastore/mega_1te_01.json deleted file mode 100644 index 54a8471bfbcbf..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1te_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1te", - "//": "ground floor. top edge", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - "------------------------", - ".....ILLLLLLLLLLLLIXX...", - "...................XXxx.", - ".....................xx.", - "........................", - "........................", - "........................", - "........................", - "........................", - "........................", - "........................", - "........................", - "...................LLXX.", - "---!--------------------", - ".....IkkkkkkkkkkkkIkkkkk", - "........................", - "........................", - ".....kkkkkkkkkkkkkkkkkkk", - "........................", - "........................" - ], - "rotation": 0, - "palettes": [ "megastore", "mega_goods_a" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1te_02.json b/data/mods/mapspecials_demo/megastore/mega_1te_02.json deleted file mode 100644 index 5f5ffb5939dbb..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1te_02.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1te", - "//": "ground floor. top edge", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - "------------------------", - ".....IRRRRRRRRRRRRI.....", - "........................", - "..XX.....XX.............", - "..XX.....XX.............", - ".....XX............x....", - ".....XX..........x...x..", - "........................", - "...............x...x.x..", - "..XX..............x.....", - "..XX................x.x.", - "........................", - "rrrrrrr........rrrrrrrrr", - "-----------!!-----------", - "RRRRRIRRRRR..RRRRRIRRRRR", - "........................", - "........................", - ".fffffffffff..FFFFFFFFF.", - ".fffffffffff..FFFFFFFFF.", - "........................" - ], - "rotation": 0, - "palettes": [ "megastore", "mega_goods_b" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1te_03.json b/data/mods/mapspecials_demo/megastore/mega_1te_03.json deleted file mode 100644 index 14ee9da2ce317..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1te_03.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1te", - "//": "ground floor. top edge", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - "------------------------", - ".....IKKKKKKKKKKKKI.....", - "......................xx", - "..XX..rrrrrrrrrrrr....xx", - "..XX....................", - ".....XX.................", - "...xxXX.................", - "...xx...................", - "........................", - "...xx............xx.....", - "...xx............xx.....", - ".........xx..xx.........", - ".........xx..xx....LLL..", - "-----------!!-----------", - "RRRRRIRRRR....RRRRIRRRRR", - "........................", - ".RRRRRRRRRRRRRRRRRRRRRR.", - "........................", - ".RRRRRRRRRRRRRRRRRRRRRR.", - "........................" - ], - "rotation": 0, - "palettes": [ "megastore", "mega_goods_c" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1te_04.json b/data/mods/mapspecials_demo/megastore/mega_1te_04.json deleted file mode 100644 index 84a72043a54eb..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1te_04.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1te", - "//": "ground floor. top edge", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - "------------------------", - "...XXI.R.R..R.R.R.I.....", - "...XXR.R.R..R.R.R.R.....", - ".....R.R.R..R.R.R.R.....", - "....XX..................", - "....XX..................", - "........................", - "..xx....................", - "..xx....................", - "........................", - ".XX.....................", - ".XX.....................", - "........................", - "---------------------!--", - "rrrr|IkkkkkkkkkkkkI|....", - "....|k............k|....", - "....|k............k|....", - "....|k...TTTTTT...k|....", - "........................", - "........................" - ], - "rotation": 0, - "palettes": [ "megastore", "mega_goods_d" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1te_05.json b/data/mods/mapspecials_demo/megastore/mega_1te_05.json deleted file mode 100644 index ae1374b925e6c..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1te_05.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1te", - "//": "ground floor. top edge", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - "------------------------", - "x....ILLLLLLLLLLLLI.XX..", - "x...................XX..", - "........................", - "...xx.................XX", - "...xx.................XX", - "........................", - "........................", - "........................", - "........................", - "..................XX....", - "..................XX....", - "........................", - "------!!----------------", - "KKKKKI...RRRRRRRRRIRRRRR", - "........................", - "........................", - "......KKKKKKKKKKKK......", - "......KKKKKKKKKKKK......", - "........................" - ], - "rotation": 0, - "palettes": [ "megastore", "mega_goods_e" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1tlc_01.json b/data/mods/mapspecials_demo/megastore/mega_1tlc_01.json deleted file mode 100644 index 3a28cfc724506..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1tlc_01.json +++ /dev/null @@ -1,45 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1tlc", - "//": "ground floor. top left corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,--------------------", - ",,,,|I..l|&...|l..I|<<|.", - ",,,,|n..l|--!-|l..n|<<|.", - ",,,,|n..l|s...|l..n|!!|.", - ",,,,|...l|s...|l...|....", - ",,,,|-!-----!----!-|....", - ",,,,|p.............|....", - ",,,,|..............|....", - ",,,,|....cTTTT.....|....", - ",,,,|....cTTTT.....|....", - ",,,,[..........--!-|....", - ",,,,].....c.c..|...!....", - ",,,,|..CCCCCCCC|...|....", - ",,-------------------!--", - ",,|CCICC%%%CeeeCCCI.....", - ",,|e..............g.....", - ",,|e....eeeee.....g.....", - ",,|e..............g.....", - ",,|ggggg......C6CCC.....", - ",,|....................." - ], - "rotation": 0, - "palettes": [ "megastore", "mega_goods_a" ], - "items": { - "C": { "item": "coffee_table", "chance": 30 }, - "l": { "item": "everyday_gear", "chance": 75 }, - "T": { "item": "office", "chance": 20 } - } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1tlc_02.json b/data/mods/mapspecials_demo/megastore/mega_1tlc_02.json deleted file mode 100644 index c21fbddde5590..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1tlc_02.json +++ /dev/null @@ -1,45 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1tlc", - "//": "ground floor. top left corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,--------------------", - ",,,,|I..l|&...|l..I|<<|.", - ",,,,|n..l|--!-|l..n|<<|.", - ",,,,|n..l|s...|l..n|!!|.", - ",,,,|...l|s...|l...|....", - ",,,,|-!-----!----!-|....", - ",,,,|p.............|x...", - ",,,,|..............|x...", - ",,,,|....cTTTT.....|x...", - ",,,,|....cTTTT.....|....", - ",,,,[..........--!-|....", - ",,,,].....c.c..|...!....", - ",,,,|..CCCCCCCC|...|....", - ",,---------------!------", - ",,|.&I|KKKK.......Irrrrr", - ",,|+--|.................", - ",,|..s|.................", - ",,|+---....rrrrrrrrrrrrr", - ",,|........rrrrrrrrrrrrr", - ",,|....................." - ], - "rotation": 0, - "palettes": [ "megastore", "mega_goods_b" ], - "items": { - "C": { "item": "coffee_table", "chance": 30 }, - "l": { "item": "everyday_gear", "chance": 75 }, - "T": { "item": "office", "chance": 20 } - } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1tlc_03.json b/data/mods/mapspecials_demo/megastore/mega_1tlc_03.json deleted file mode 100644 index d663b699a0485..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1tlc_03.json +++ /dev/null @@ -1,45 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1tlc", - "//": "ground floor. top left corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,--------------------", - ",,,,|I..l|&...|l..I|<<|.", - ",,,,|n..l|--!-|l..n|<<|.", - ",,,,|n..l|s...|l..n|!!|.", - ",,,,|...l|s...|l...|....", - ",,,,|-!-----!----!-|....", - ",,,,|p.............|....", - ",,,,|..............|....", - ",,,,|....cTTTT.....|....", - ",,,,|....cTTTT.....|....", - ",,,,[..........--!-|....", - ",,,,].....c.c..|...!....", - ",,,,|..CCCCCCCC|...|....", - ",,---------------!------", - ",,|..I............I.....", - ",,|.....................", - ",,|.....................", - ",,|.....................", - ",,|.....................", - ",,|....................." - ], - "rotation": 0, - "palettes": [ "megastore", "mega_goods_c" ], - "items": { - "C": { "item": "coffee_table", "chance": 30 }, - "l": { "item": "everyday_gear", "chance": 75 }, - "T": { "item": "office", "chance": 20 } - } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1tlc_04.json b/data/mods/mapspecials_demo/megastore/mega_1tlc_04.json deleted file mode 100644 index b39b46937745a..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1tlc_04.json +++ /dev/null @@ -1,45 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1tlc", - "//": "ground floor. top left corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,--------------------", - ",,,,|I..l|&...|l..I|<<|x", - ",,,,|n..l|--!-|l..n|<<|x", - ",,,,|n..l|s...|l..n|!!|.", - ",,,,|...l|s...|l...|....", - ",,,,|-!-----!----!-|....", - ",,,,|p.............|....", - ",,,,|..............|XX..", - ",,,,|....cTTTT.....|XX..", - ",,,,|....cTTTT.....|....", - ",,,,[..........--!-|....", - ",,,,].....c.c..|...!....", - ",,,,|..CCCCCCCC|...|....", - ",,---------------!------", - ",,|K.I............Irrrrr", - ",,|K....................", - ",,|K.....K..K...........", - ",,|K..K..K..K.....rrrrrr", - ",,|K..K..K..K...........", - ",,|K..K..K..K..........." - ], - "rotation": 0, - "palettes": [ "megastore", "mega_goods_d" ], - "items": { - "C": { "item": "coffee_table", "chance": 30 }, - "l": { "item": "everyday_gear", "chance": 75 }, - "T": { "item": "office", "chance": 20 } - } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1tlc_05.json b/data/mods/mapspecials_demo/megastore/mega_1tlc_05.json deleted file mode 100644 index 4b0baae4c07e7..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1tlc_05.json +++ /dev/null @@ -1,45 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1tlc", - "//": "ground floor. top left corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,--------------------", - ",,,,|I..l|&...|l..I|<<|.", - ",,,,|n..l|--!-|l..n|<<|.", - ",,,,|n..l|s...|l..n|!!|.", - ",,,,|...l|s...|l...|....", - ",,,,|-!-----!----!-|XX..", - ",,,,|p.............|XX..", - ",,,,|..............|....", - ",,,,|....cTTTT.....|....", - ",,,,|....cTTTT.....|....", - ",,,,[..........--!-|....", - ",,,,].....c.c..|...!....", - ",,,,|..CCCCCCCC|...|....", - ",,---------------!------", - ",,|rrIrrrrrrrrrrr.Irrrrr", - ",,|.....................", - ",,|..rrrrrrrrrrrrrrrrrr.", - ",,|.....................", - ",,|..rrrrrrrrrrrrrrrrrr.", - ",,|....................." - ], - "rotation": 0, - "palettes": [ "megastore", "mega_goods_e" ], - "items": { - "C": { "item": "coffee_table", "chance": 30 }, - "l": { "item": "everyday_gear", "chance": 75 }, - "T": { "item": "office", "chance": 20 } - } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1trc_01.json b/data/mods/mapspecials_demo/megastore/mega_1trc_01.json deleted file mode 100644 index cfe8d43119e4f..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1trc_01.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1trc", - "//": "ground floor. top right corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,PPPPPPPPPPPP,,,,,,,", - ",,,,,PPPPPPPPPPPP,,,,,,,", - ",,,,,PPPPPPPPPPPP--[----", - ",,,,,PPPPPPPPPPPP|<..|..", - ",,,,--][[][][][]-|l..!..", - ",,,,|I..........%|I..|..", - ",,,,|............|---|..", - ",,,,|............|Css|..", - ",,,,|............|...!..", - ",,,,|............|&|t|..", - ",,,,|............|---|..", - ",,,,|...x........|&|t|..", - ",,,,|............|...!..", - ",,,,|.....X...X..|Css|..", - ",,,,|............|----..", - ",,,,|....x.......|f.....", - ",,,,|l..xX...X..v|f.....", - ",,,,|----....----|f.....", - ",,,,|I.....x...x.|I.....", - ",,,,|.....x......|f.....", - ",,,,|..X.....x...|f.....", - ",,,,|.....X......|f.....", - ",,,,|x..x.......x|f.....", - ",,,,|..xx........|f....." - ], - "rotation": 1, - "palettes": [ "megastore", "mega_goods_a" ], - "terrain": { "%": "t_gates_mech_control", "m": "t_mdoor_frame" }, - "vehicles": { "v": { "vehicle": "shopping_cart", "chance": 30, "status": 0 } } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1trc_02.json b/data/mods/mapspecials_demo/megastore/mega_1trc_02.json deleted file mode 100644 index c2daf929bc605..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1trc_02.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1trc", - "//": "ground floor. top right corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,PPPPPPPPPPPP,,,,,,,", - ",,,,,PPPPPPPPPPPP,,,,,,,", - ",,,,,PPPPPPPPPPPP--[----", - ",,,,,PPPPPPPPPPPP|<..|..", - ",,,,--][[][][][]-|l..!..", - ",,,,|I..........%|I..|..", - ",,,,|............|---|..", - ",,,,|............|Css|..", - ",,,,|............|...!..", - ",,,,|............|&|t|..", - ",,,,|............|---|..", - ",,,,|............|&|t|..", - ",,,,|............|...!..", - ",,,,|............|Css|..", - ",,,,|............|----..", - ",,,,|............|RCCC..", - ",,,,|l..........v|C.....", - ",,,,|----....----|C.....", - ",,,,|I.........XX|ICCC..", - ",,,,|..........XX|......", - ",,,,|............|......", - ",,,,|.........XX.|r.....", - ",,,,|.........XX.|r.....", - ",,,,|............|r....." - ], - "rotation": 1, - "palettes": [ "megastore", "mega_goods_b" ], - "terrain": { "%": "t_gates_mech_control" }, - "vehicles": { "v": { "vehicle": "shopping_cart", "chance": 30, "status": 0 } } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1trc_03.json b/data/mods/mapspecials_demo/megastore/mega_1trc_03.json deleted file mode 100644 index d83261c75eb90..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1trc_03.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1trc", - "//": "ground floor. top right corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,PPPPPPPPPPPP,,,,,,,", - ",,,,,PPPPPPPPPPPP,,,,,,,", - ",,,,,PPPPPPPPPPPP--[----", - ",,,,,PPPPPPPPPPPP|<..|..", - ",,,,--][[][][][]-|l..!..", - ",,,,|I..........%|I..|..", - ",,,,|............|---|..", - ",,,,|............|Css|..", - ",,,,|............|...!..", - ",,,,|xx....XX....|&|t|..", - ",,,,|xx....XX....|---|..", - ",,,,|............|&|t|..", - ",,,,|............|...!..", - ",,,,|............|Css|..", - ",,,,|............|----..", - ",,,,|............|K.....", - ",,,,|l..........v|k.....", - ",,,,|----....----|R.....", - ",,,,|I........LLL|I.....", - ",,,,|...........L|R.....", - ",,,,|............|K.....", - ",,,,|............|K.....", - ",,,,|...........L|r.....", - ",,,,|............|r....." - ], - "rotation": 1, - "palettes": [ "megastore", "mega_goods_c" ], - "terrain": { "%": "t_gates_mech_control", "m": "t_mdoor_frame" }, - "vehicles": { "v": { "vehicle": "shopping_cart", "chance": 30, "status": 0 } } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1trc_04.json b/data/mods/mapspecials_demo/megastore/mega_1trc_04.json deleted file mode 100644 index 548dca6529a59..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1trc_04.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1trc", - "//": "ground floor. top right corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,PPPPPPPPPPPP,,,,,,,", - ",,,,,PPPPPPPPPPPP,,,,,,,", - ",,,,,PPPPPPPPPPPP--[----", - ",,,,,PPPPPPPPPPPP|<..|..", - ",,,,--][[][][][]-|l..!..", - ",,,,|I..........%|I..|..", - ",,,,|............|---|..", - ",,,,|............|Css|..", - ",,,,|............|...!..", - ",,,,|............|&|t|..", - ",,,,|............|---|..", - ",,,,|............|&|t|..", - ",,,,|............|...!..", - ",,,,|L...........|Css|..", - ",,,,|L...........|----..", - ",,,,|L...........|R.....", - ",,,,|L..........v|R.....", - ",,,,|----....----|R..KK.", - ",,,,|IX........xx|I..KK.", - ",,,,|XX........xx|R.....", - ",,,,|............|R.....", - ",,,,|..........xx|R.....", - ",,,,|..........xx|R.....", - ",,,,|............|R....." - ], - "rotation": 1, - "palettes": [ "megastore", "mega_goods_d" ], - "terrain": { "%": "t_gates_mech_control", "m": "t_mdoor_frame" }, - "vehicles": { "v": { "vehicle": "shopping_cart", "chance": 30, "status": 0 } } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_1trc_05.json b/data/mods/mapspecials_demo/megastore/mega_1trc_05.json deleted file mode 100644 index 76c7130fce15a..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_1trc_05.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_1trc", - "//": "ground floor. top right corner", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,PPPPPPPPPPPP,,,,,,,", - ",,,,,PPPPPPPPPPPP,,,,,,,", - ",,,,,PPPPPPPPPPPP--[----", - ",,,,,PPPPPPPPPPPP|<..|kk", - ",,,,--][[][][][]-|l..!..", - ",,,,|I..........%|I..|..", - ",,,,|............|---|..", - ",,,,|............|Css|..", - ",,,,|............|...!..", - ",,,,|............|&|t|..", - ",,,,|............|---|..", - ",,,,|............|&|t|..", - ",,,,|............|...!..", - ",,,,|............|Css|..", - ",,,,|............|----..", - ",,,,|............|K.....", - ",,,,|l..........v|K.....", - ",,,,|----....----|K.....", - ",,,,|IRR......rrr|I.....", - ",,,,|............|K.....", - ",,,,|RRR......rrr|K.....", - ",,,,|............|K.....", - ",,,,|xx.......rrr|K.....", - ",,,,|xx..........|K....." - ], - "rotation": 1, - "palettes": [ "megastore", "mega_goods_e" ], - "terrain": { "%": "t_gates_mech_control", "m": "t_mdoor_frame" }, - "vehicles": { "v": { "vehicle": "shopping_cart", "chance": 30, "status": 0 } } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_2be_01.json b/data/mods/mapspecials_demo/megastore/mega_2be_01.json deleted file mode 100644 index bfcd8a268fab9..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_2be_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_2be", - "//": "second floor. bottom edge", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - "########################", - "########################", - "#####--------------#####", - "#####| |#####", - "-----| |-----", - " I I ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " I I ", - " ", - " ", - " ", - " ", - " " - ], - "rotation": 2, - "palettes": [ "megastore" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_2blc_01.json b/data/mods/mapspecials_demo/megastore/mega_2blc_01.json deleted file mode 100644 index 2c1d1047d3e26..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_2blc_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_2blc", - "//": "second floor. bottom left corner", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_open_air", - "rows": [ - "########################", - "########################", - "#################-------", - "#################| ", - "##---------------- ", - "##| I I ", - "##| ", - "##| ", - "##| ", - "##| ###### ", - "##| ###### ", - "##| ###### ", - "##| ###### ", - "##| ###### ", - "##| ###### ", - "##| ", - "##| ", - "##| ", - "##| I I ", - "##--- ", - "####| ", - "####| ", - "####| ", - "####| " - ], - "rotation": 3, - "palettes": [ "megastore" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_2brc_01.json b/data/mods/mapspecials_demo/megastore/mega_2brc_01.json deleted file mode 100644 index d7a7085fab7de..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_2brc_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_2brc", - "//": "second floor bottom right corner", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - "########################", - "########################", - "####----------------####", - "####| | ###", - "####| -----", - "####|I I ", - "####| ", - "####| ", - "####| ", - "####| ###### ", - "####| ###### ", - "####| ###### ", - "####| ###### ", - "####| ###### ", - "####| ###### ", - "####| ", - "####| ", - "##--- ", - "##| I I ", - "##| ", - "##| ", - "##| ", - "##| ", - "##| " - ], - "rotation": 2, - "palettes": [ "megastore" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_2le_01.json b/data/mods/mapspecials_demo/megastore/mega_2le_01.json deleted file mode 100644 index efff4c3467131..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_2le_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_2le", - "//": "second floor left edge", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - "########################", - "########################", - "------------------------", - " ", - " ", - " I I ", - " ", - " ", - " ", - " ###### ", - " ###### ", - " ###### ", - " ###### ", - " ###### ", - " ###### ", - " ", - " ", - " ", - " I I ", - " ", - " ", - " ", - " ", - " " - ], - "rotation": 3, - "palettes": [ "megastore" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_2mid_01.json b/data/mods/mapspecials_demo/megastore/mega_2mid_01.json deleted file mode 100644 index 13ebd09806f81..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_2mid_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_2mid", - "//": "second floor. middle area", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - " ", - " ", - " ", - " ", - " ", - " I I ", - " ", - " ", - " ", - " ###### ", - " ###### ", - " ###### ", - " ###### ", - " ###### ", - " ###### ", - " ", - " ", - " ", - " I I ", - " ", - " ", - " ", - " ", - " " - ], - "rotation": [ 0, 3 ], - "palettes": [ "megastore" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_2re_01.json b/data/mods/mapspecials_demo/megastore/mega_2re_01.json deleted file mode 100644 index a01a1438dda40..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_2re_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_2re", - "//": "second floor. right edge", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - "########################", - "########################", - "------------------------", - " ", - " ", - " I I ", - " ", - " ", - " ", - " ###### ", - " ###### ", - " ###### ", - " ###### ", - " ###### ", - " ###### ", - " ", - " ", - " ", - " I I ", - " ", - " ", - " ", - " ", - " " - ], - "rotation": 1, - "palettes": [ "megastore" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_2te_01.json b/data/mods/mapspecials_demo/megastore/mega_2te_01.json deleted file mode 100644 index 2fadc18175929..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_2te_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_2te", - "//": "second floor. top edge", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - "########################", - "########################", - "########################", - "########################", - "--------ggg--ggg--------", - " I I ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - "------------------------", - " I I ", - " ", - " ", - " ", - " ", - " " - ], - "rotation": 0, - "palettes": [ "megastore" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_2tlc_01.json b/data/mods/mapspecials_demo/megastore/mega_2tlc_01.json deleted file mode 100644 index 9b143c60c7a9b..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_2tlc_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_2tlc", - "//": "second floor. top left corner", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - "########################", - "########################", - "########################", - "########################", - "####--------------------", - "####|I..DDD|......I|>>| ", - "####|....c.|.......!>>| ", - "####|......+.......|--- ", - "####|AAA..%|.....cc| ", - "####|----------+---| ", - "####|.DDD..TTT....C| ", - "####|..C...........| ", - "####|D.............g ", - "####|Dc............g ", - "####|D.............g ", - "####|..c.........c.| ", - "####|.DDD.......DDD| ", - "##--------gggg----------", - "##| I I ", - "##| ", - "##| ", - "##| ", - "##| ", - "##| " - ], - "rotation": 0, - "palettes": [ "megastore" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_2trc_01.json b/data/mods/mapspecials_demo/megastore/mega_2trc_01.json deleted file mode 100644 index fbe8c46c0ff09..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_2trc_01.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_2trc", - "//": "second floor top right corner", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - "########################", - "########################", - "#################-------", - "#################|>.<| ", - "####-------------|...| ", - "####|I |...| ", - "####| |..L| ", - "####| |..L| ", - "####| |...| ", - "####| |.%%| ", - "####| |.%%| ", - "####| |...| ", - "####| |%..| ", - "####| |..%| ", - "####| |---- ", - "####| | ", - "####| | ", - "####|---- ----| ", - "####|I |I ", - "####| | ", - "####| | ", - "####| | ", - "####| | ", - "####| | " - ], - "rotation": 1, - "palettes": [ "megastore" ], - "terrain": { "%": "t_machinery_heavy", "m": "t_mdoor_frame" } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_3be_01.json b/data/mods/mapspecials_demo/megastore/mega_3be_01.json deleted file mode 100644 index a65a68d3311e0..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_3be_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_3be", - "//": "roof. bottom edge", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_flat_roof", - "rows": [ - "########################", - "########################", - "#####==============#####", - "#####==============#####", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================" - ], - "rotation": 2, - "palettes": [ "megastore" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_3blc_01.json b/data/mods/mapspecials_demo/megastore/mega_3blc_01.json deleted file mode 100644 index 8e334296c3b24..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_3blc_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_3blc", - "//": "third floor. bottom left corner", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_flat_roof", - "rows": [ - "########################", - "########################", - "#################=======", - "#################=======", - "##======================", - "##======================", - "##======================", - "##======================", - "##======================", - "##=======######=========", - "##=======######=========", - "##=======######=========", - "##=======######=========", - "##=======######=========", - "##=======######=========", - "##======================", - "##======================", - "##======================", - "##======================", - "##======================", - "####====================", - "####====================", - "####====================", - "####====================" - ], - "rotation": 3, - "palettes": [ "megastore" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_3brc_01.json b/data/mods/mapspecials_demo/megastore/mega_3brc_01.json deleted file mode 100644 index 48152ca6dd61a..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_3brc_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_3brc", - "//": "third floor bottom right corner", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_flat_roof", - "rows": [ - "########################", - "########################", - "####================####", - "####================####", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####=====######=========", - "####=====######=========", - "####=====######=========", - "####=====######=========", - "####=====######=========", - "####=====######=========", - "####====================", - "####====================", - "##======================", - "##======================", - "##======================", - "##======================", - "##======================", - "##======================", - "##======================" - ], - "rotation": 2, - "palettes": [ "megastore" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_3le_01.json b/data/mods/mapspecials_demo/megastore/mega_3le_01.json deleted file mode 100644 index 0c6e56e82072d..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_3le_01.json +++ /dev/null @@ -1,44 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_3le", - "//": "roof. left edge", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_flat_roof", - "rows": [ - "########################", - "########################", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "=========######=========", - "=========######=========", - "=========######=========", - "=========######=========", - "=========######=========", - "=========######=========", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================" - ], - "rotation": 3, - "palettes": [ "megastore" ], - "place_monsters": [ - { "monster": "GROUP_ZOMBIE", "x": [ 1, 22 ], "y": [ 1, 22 ] }, - { "monster": "GROUP_SCHOOL", "x": [ 1, 22 ], "y": [ 1, 22 ], "chance": 20 } - ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_3mid_01.json b/data/mods/mapspecials_demo/megastore/mega_3mid_01.json deleted file mode 100644 index d1803a9e95032..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_3mid_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_3mid", - "//": "roof. middle area", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_flat_roof", - "rows": [ - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "=========######=========", - "=========######=========", - "=========######=========", - "=========######=========", - "=========######=========", - "=========######=========", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================" - ], - "rotation": [ 0, 3 ], - "palettes": [ "megastore" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_3re_01.json b/data/mods/mapspecials_demo/megastore/mega_3re_01.json deleted file mode 100644 index d3bf43a03c5dd..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_3re_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_3re", - "//": "roof. right edge", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_flat_roof", - "rows": [ - "########################", - "########################", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "=========######=========", - "=========######=========", - "=========######=========", - "=========######=========", - "=========######=========", - "=========######=========", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================" - ], - "rotation": 1, - "palettes": [ "megastore" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_3te_01.json b/data/mods/mapspecials_demo/megastore/mega_3te_01.json deleted file mode 100644 index 3e8a463d6c894..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_3te_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_3te", - "//": "roof. top edge", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_flat_roof", - "rows": [ - "########################", - "########################", - "########################", - "########################", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================", - "========================" - ], - "rotation": 0, - "palettes": [ "megastore" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_3tlc_01.json b/data/mods/mapspecials_demo/megastore/mega_3tlc_01.json deleted file mode 100644 index cc6f86a0080d2..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_3tlc_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_3tlc", - "//": "roof. top left corner.", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_flat_roof", - "rows": [ - "########################", - "########################", - "########################", - "########################", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "##======================", - "##======================", - "##======================", - "##======================", - "##======================", - "##======================", - "##======================" - ], - "rotation": 0, - "palettes": [ "megastore" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_3trc_01.json b/data/mods/mapspecials_demo/megastore/mega_3trc_01.json deleted file mode 100644 index 60bfe274b9cf4..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_3trc_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_3trc", - "//": "third floor. top right corner", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_flat_roof", - "rows": [ - "########################", - "########################", - "#################=======", - "#################===>===", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================", - "####====================" - ], - "rotation": 1, - "palettes": [ "megastore" ] - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_entrance_01.json b/data/mods/mapspecials_demo/megastore/mega_entrance_01.json deleted file mode 100644 index fdbe064ed1c47..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_entrance_01.json +++ /dev/null @@ -1,43 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_entrance", - "//": "ground floor. entrance", - "weight": 10, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - "WWWWWWWWWWWWWWWWWWWWWWWW", - "WWWWWWWWWWWWWWWWWWWWWWWW", - "WWWWW-gg++gg-++g++-WWWWW", - "WWWWW|......|.....|WWWWW", - "-ggg-|......g.....|ggggg", - "....%I......|mm-mmI.....", - "............g...........", - "............g...........", - "............g...........", - ".......vvvvv|...........", - "....vvvvvvvv|...........", - ".-----------|...........", - ".|eeeeeee...|6C..6C..6C.", - ".|.........D|.C...C...C.", - ".|EEEEEEE.cD|.r...r...r.", - ".|.........D|...........", - ".|eeeee.....|.6C..6C..6C", - ".|..........|..C...C...C", - ".--!-I--CCC--..r..Ir...r", - "........................", - "........................", - "........................", - "........................", - "........................" - ], - "rotation": 2, - "palettes": [ "megastore", "mega_goods_f" ], - "terrain": { "%": "t_atm", "m": "t_mdoor_frame" }, - "items": { "e": { "item": "softdrugs", "chance": 40 }, "E": { "item": "harddrugs", "chance": 10 } }, - "vehicles": { "v": { "vehicle": "shopping_cart", "chance": 30, "status": 0 } } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_entrance_02.json b/data/mods/mapspecials_demo/megastore/mega_entrance_02.json deleted file mode 100644 index a5f7c8cce6405..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_entrance_02.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_entrance", - "//": "ground floor. entrance", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - "WWWWWWWWWWWWWWWWWWWWWWWW", - "WWWWWWWWWWWWWWWWWWWWWWWW", - "WWWWW-gg++gg-++g++-WWWWW", - "WWWWW|......|.....|WWWWW", - "-ggg-|......g.....|ggggg", - "....%I......|mm-mmI.....", - "............g...........", - "............g...........", - ".........vvvg...........", - "...vvvvvvvvv|...........", - ".vvvvvvvvvvv|...........", - ".-----------|...........", - "..TTTT..!..U|6C..6C..6C.", - "........|..U|.C...C...C.", - "........C..C|.r...r...r.", - "........C..f|...........", - "........C..f|.6C..6C..6C", - "........6..s|..C...C...C", - ".....I-------..r..Ir...r", - "........................", - "........................", - "..R..R..R..R...FFFF.....", - "..R..R..R..R...FFFF.....", - "..R..R..R..R............" - ], - "rotation": 2, - "palettes": [ "megastore", "mega_goods_f" ], - "terrain": { "%": "t_atm", "m": "t_mdoor_frame" }, - "vehicles": { "v": { "vehicle": "shopping_cart", "chance": 25, "status": 0 } } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/mega_parking_01.json b/data/mods/mapspecials_demo/megastore/mega_parking_01.json deleted file mode 100644 index d30331bd69c22..0000000000000 --- a/data/mods/mapspecials_demo/megastore/mega_parking_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": "mega_parking", - "weight": 100, - "method": "json", - "object": { - "fill_ter": "t_pavement", - "rows": [ - "#,....................#,", - ",......................7", - "........................", - "______............______", - "........................", - ".....v.............v....", - "........................", - "........................", - "______............______", - "........................", - "........................", - "......................v.", - "........................", - "______............______", - "...........v..v.........", - "........................", - "........................", - "........................", - "______............______", - "........................", - ".....v..................", - "........................", - "1_____............_____,", - "#,....................##" - ], - "rotation": 0, - "terrain": { ".": "t_pavement", "_": "t_pavement_y", "#": "t_underbrush", ",": "t_grass", "1": "t_tree_young", "7": "t_tree" }, - "vehicles": { "v": { "vehicle": "city_vehicles", "chance": 10 } } - } - } -] diff --git a/data/mods/mapspecials_demo/megastore/overmap_specials.json b/data/mods/mapspecials_demo/megastore/overmap_specials.json deleted file mode 100644 index 3ba35583c27c1..0000000000000 --- a/data/mods/mapspecials_demo/megastore/overmap_specials.json +++ /dev/null @@ -1,52 +0,0 @@ -[ - { - "type": "overmap_special", - "id": "megastore", - "overmaps": [ - { "point": [ 0, 0, 0 ], "overmap": "mega_1tlc_north" }, - { "point": [ 1, 0, 0 ], "overmap": "mega_1te_north" }, - { "point": [ 2, 0, 0 ], "overmap": "mega_1trc_north" }, - { "point": [ 3, 0, 0 ], "overmap": "mega_parking_north" }, - { "point": [ 0, 1, 0 ], "overmap": "mega_1le_north" }, - { "point": [ 1, 1, 0 ], "overmap": "mega_1mid_north" }, - { "point": [ 2, 1, 0 ], "overmap": "mega_1re_north" }, - { "point": [ 3, 1, 0 ], "overmap": "mega_parking_north" }, - { "point": [ 0, 2, 0 ], "overmap": "mega_1blc_north" }, - { "point": [ 1, 2, 0 ], "overmap": "mega_entrance_north" }, - { "point": [ 2, 2, 0 ], "overmap": "mega_1brc_north" }, - { "point": [ 3, 2, 0 ], "overmap": "mega_parking_north" }, - { "point": [ 0, 3, 0 ], "overmap": "mega_parking_north" }, - { "point": [ 1, 3, 0 ], "overmap": "mega_parking_north" }, - { "point": [ 2, 3, 0 ], "overmap": "mega_parking_north" }, - { "point": [ 3, 3, 0 ], "overmap": "mega_parking_north" }, - { "point": [ 0, 4, 0 ], "overmap": "mega_parking_north" }, - { "point": [ 1, 4, 0 ], "overmap": "mega_parking_north" }, - { "point": [ 2, 4, 0 ], "overmap": "mega_parking_north" }, - { "point": [ 3, 4, 0 ], "overmap": "mega_parking_north" }, - { "point": [ 0, 0, 1 ], "overmap": "mega_2tlc_north" }, - { "point": [ 1, 0, 1 ], "overmap": "mega_2te_north" }, - { "point": [ 2, 0, 1 ], "overmap": "mega_2trc_north" }, - { "point": [ 0, 1, 1 ], "overmap": "mega_2le_north" }, - { "point": [ 1, 1, 1 ], "overmap": "mega_2mid_north" }, - { "point": [ 2, 1, 1 ], "overmap": "mega_2re_north" }, - { "point": [ 0, 2, 1 ], "overmap": "mega_2blc_north" }, - { "point": [ 1, 2, 1 ], "overmap": "mega_2be_north" }, - { "point": [ 2, 2, 1 ], "overmap": "mega_2brc_north" }, - { "point": [ 0, 0, 2 ], "overmap": "mega_3tlc_north" }, - { "point": [ 1, 0, 2 ], "overmap": "mega_3te_north" }, - { "point": [ 2, 0, 2 ], "overmap": "mega_3trc_north" }, - { "point": [ 0, 1, 2 ], "overmap": "mega_3le_north" }, - { "point": [ 1, 1, 2 ], "overmap": "mega_3mid_north" }, - { "point": [ 2, 1, 2 ], "overmap": "mega_3re_north" }, - { "point": [ 0, 2, 2 ], "overmap": "mega_3blc_north" }, - { "point": [ 1, 2, 2 ], "overmap": "mega_3be_north" }, - { "point": [ 2, 2, 2 ], "overmap": "mega_3brc_north" } - ], - "connections": [ { "point": [ 1, 5, 0 ], "terrain": "road", "existing": true } ], - "locations": [ "land" ], - "city_distance": [ 8, 20 ], - "city_sizes": [ 1, 12 ], - "occurrences": [ 5, 5 ], - "flags": [ "CLASSIC" ] - } -] diff --git a/data/mods/mapspecials_demo/megastore/overmap_terrain.json b/data/mods/mapspecials_demo/megastore/overmap_terrain.json deleted file mode 100644 index 209eef1e45b49..0000000000000 --- a/data/mods/mapspecials_demo/megastore/overmap_terrain.json +++ /dev/null @@ -1,293 +0,0 @@ -[ - { - "type": "overmap_terrain", - "id": "mega_parking", - "name": "megastore", - "sym": ".", - "color": "dark_gray", - "extras": "build", - "see_cost": 2, - "spawns": { "group": "GROUP_VANILLA", "population": [ 4, 12 ], "chance": 30 } - }, - { - "type": "overmap_terrain", - "id": "mega_1tlc", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2, - "spawns": { "group": "GROUP_VANILLA", "population": [ 4, 12 ], "chance": 90 } - }, - { - "type": "overmap_terrain", - "id": "mega_1te", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2, - "spawns": { "group": "GROUP_VANILLA", "population": [ 4, 12 ], "chance": 90 } - }, - { - "type": "overmap_terrain", - "id": "mega_1trc", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2, - "spawns": { "group": "GROUP_VANILLA", "population": [ 4, 12 ], "chance": 90 } - }, - { - "type": "overmap_terrain", - "id": "mega_1le", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2, - "spawns": { "group": "GROUP_VANILLA", "population": [ 4, 12 ], "chance": 90 } - }, - { - "type": "overmap_terrain", - "id": "mega_1mid", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2, - "spawns": { "group": "GROUP_VANILLA", "population": [ 4, 12 ], "chance": 90 } - }, - { - "type": "overmap_terrain", - "id": "mega_1re", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2, - "spawns": { "group": "GROUP_VANILLA", "population": [ 4, 12 ], "chance": 90 } - }, - { - "type": "overmap_terrain", - "id": "mega_1le", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2, - "spawns": { "group": "GROUP_VANILLA", "population": [ 4, 12 ], "chance": 90 } - }, - { - "type": "overmap_terrain", - "id": "mega_1blc", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2, - "spawns": { "group": "GROUP_VANILLA", "population": [ 4, 12 ], "chance": 90 } - }, - { - "type": "overmap_terrain", - "id": "mega_entrance", - "name": "megastore", - "sym": "M", - "color": "i_magenta", - "extras": "build", - "see_cost": 2, - "spawns": { "group": "GROUP_VANILLA", "population": [ 4, 12 ] } - }, - { - "type": "overmap_terrain", - "id": "mega_1brc", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2, - "spawns": { "group": "GROUP_VANILLA", "population": [ 4, 12 ] } - }, - { - "type": "overmap_terrain", - "id": "mega_2tlc", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_2te", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_2trc", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_2le", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_2mid", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_2re", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_2le", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_2blc", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_2be", - "name": "megastore", - "sym": "F", - "color": "i_magenta", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_2brc", - "name": "megastore", - "sym": "m", - "color": "i_magenta", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_3tlc", - "name": "megastore roof", - "sym": ".", - "color": "light_gray", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_3te", - "name": "megastore roof", - "sym": ".", - "color": "light_gray", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_3trc", - "name": "megastore roof", - "sym": ".", - "color": "light_gray", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_3le", - "name": "megastore roof", - "sym": ".", - "color": "light_gray", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_3mid", - "name": "megastore roof", - "sym": ".", - "color": "light_gray", - "extras": "build", - "see_cost": 2, - "spawns": { "group": "GROUP_VANILLA", "population": [ 8, 12 ] } - }, - { - "type": "overmap_terrain", - "id": "mega_3re", - "name": "megastore roof", - "sym": ".", - "color": "light_gray", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_3le", - "name": "megastore roof", - "sym": ".", - "color": "light_gray", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_3blc", - "name": "megastore roof", - "sym": ".", - "color": "light_gray", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_3be", - "name": "megastore roof", - "sym": ".", - "color": "light_gray", - "extras": "build", - "see_cost": 2 - }, - { - "type": "overmap_terrain", - "id": "mega_3brc", - "name": "megastore roof", - "sym": ".", - "color": "light_gray", - "extras": "build", - "see_cost": 2 - } -] diff --git a/data/mods/mapspecials_demo/megastore/palettes.json b/data/mods/mapspecials_demo/megastore/palettes.json deleted file mode 100644 index 07032b4856be7..0000000000000 --- a/data/mods/mapspecials_demo/megastore/palettes.json +++ /dev/null @@ -1,153 +0,0 @@ -[ - { - "type": "palette", - "id": "megastore", - "terrain": { - "#": "t_open_air", - " ": "t_open_air_rooved", - "~": "t_flat_roof", - ".": "t_thconc_floor", - ",": "t_grass", - "-": "t_concrete_wall", - "|": "t_concrete_wall", - "+": "t_door_glass_c", - "[": "t_door_metal_locked", - "]": "t_door_metal_locked", - "!": "t_door_metal_c", - "g": "t_wall_glass_alarm", - "I": "t_support_l", - "P": "t_pavement", - "W": "t_sidewalk", - "<": "t_stairs_up", - ">": "t_stairs_down", - "6": "t_console_broken" - }, - "furniture": { - "a": "f_armchair", - "A": "f_sofa", - "b": "f_bookcase", - "B": "f_bed", - "c": "f_chair", - "C": "f_counter", - "d": "f_dresser", - "D": "f_desk", - "e": "f_counter", - "k": "f_rack", - "K": "f_rack", - "l": "f_locker", - "L": "f_locker", - "n": "f_bench", - "o": "f_oven", - "f": "f_glass_fridge", - "F": "f_glass_fridge", - "r": "f_rack", - "R": "f_rack", - "s": "f_sink", - "S": "f_shower", - "t": "f_trashcan", - "T": "f_table", - "U": "f_cupboard", - "x": "f_crate_o", - "X": "f_crate_c" - }, - "toilets": { "&": { "amount": [ 0, 50 ] } }, - "items": { - "D": { "item": "office", "chance": 60 }, - "l": { "item": "jackets", "chance": 5 }, - "L": { "item": "home_hw", "chance": 50 }, - "o": { "item": "oven", "chance": 70 }, - "t": { "item": "trash", "chance": 60 }, - "U": { "item": "kitchen", "chance": 40 } - } - }, - { - "type": "palette", - "id": "mega_goods_a", - "items": { - "b": { "item": "novels", "chance": 15, "count-min": 1, "count-max": 2 }, - "f": { "item": "produce", "chance": 15 }, - "F": { "item": "fridgesnacks", "chance": 15 }, - "k": { "item": "shirts", "chance": 15 }, - "K": { "item": "shoes", "chance": 15, "count-min": 1, "count-max": 2 }, - "r": { "item": "pants", "chance": 15 }, - "R": { "item": "jackets", "chance": 15 }, - "x": { "item": "child_items", "chance": 15 }, - "X": { "item": "construction_worker", "chance": 15 } - } - }, - { - "type": "palette", - "id": "mega_goods_b", - "items": { - "b": { "item": "homebooks", "chance": 20 }, - "f": { "item": "fridgesnacks", "chance": 15, "count-min": 1, "count-max": 2 }, - "F": { "item": "fridge", "chance": 15, "count-min": 1, "count-max": 2 }, - "k": { "item": "shoes", "chance": 15 }, - "K": { "item": "cannedfood", "chance": 15 }, - "r": { "item": "hardware", "chance": 15 }, - "R": { "item": "mischw", "chance": 15 }, - "x": { "item": "shelter", "chance": 15 }, - "X": { "item": "cannedfood", "chance": 15 } - } - }, - { - "type": "palette", - "id": "mega_goods_c", - "items": { - "b": { "item": "waitingroom", "chance": 10 }, - "f": { "item": "fridge", "chance": 15 }, - "F": { "item": "produce", "chance": 15, "count-min": 1, "count-max": 3 }, - "k": { "item": "cannedfood", "chance": 15 }, - "K": { "item": "pasta", "chance": 15 }, - "r": { "item": "hardware", "chance": 15 }, - "R": { "item": "cleaning", "chance": 15, "count-min": 1, "count-max": 2 }, - "x": { "item": "shoes", "chance": 15 }, - "X": { "item": "dresser", "chance": 15 } - } - }, - { - "type": "palette", - "id": "mega_goods_d", - "items": { - "b": { "item": "waitingroom", "chance": 15, "count-min": 1, "count-max": 4 }, - "f": { "item": "vending_food_items", "chance": 15, "count-min": 1, "count-max": 2 }, - "F": { "item": "kitchen", "chance": 15 }, - "k": { "item": "pasta", "chance": 15 }, - "K": { "item": "winter", "chance": 15 }, - "r": { "item": "sports", "chance": 15 }, - "R": { "item": "camping", "chance": 15 }, - "x": { "item": "cleaning", "chance": 15, "count-min": 1, "count-max": 2 }, - "X": { "item": "pasta", "chance": 15 } - } - }, - { - "type": "palette", - "id": "mega_goods_e", - "items": { - "b": { "item": "waitingroom", "chance": 15 }, - "f": { "item": "produce", "chance": 15 }, - "F": { "item": "vending_drink_items", "chance": 15, "count-min": 1, "count-max": 3 }, - "k": { "item": "cleaning", "chance": 15 }, - "K": { "item": "camping", "chance": 15 }, - "r": { "item": "mechanics", "chance": 15 }, - "R": { "item": "construction_worker", "chance": 15 }, - "x": { "item": "kitchen", "chance": 15 }, - "X": { "item": "school", "chance": 15 } - } - }, - { - "type": "palette", - "id": "mega_goods_f", - "items": { - "b": { "item": "novels", "chance": 15 }, - "f": { "item": "fridgesnacks", "chance": 15 }, - "F": { "item": "vending_drink_items", "chance": 15, "count-min": 1, "count-max": 3 }, - "k": { "item": "shirts", "chance": 15 }, - "K": { "item": "shoes", "chance": 15 }, - "r": { "item": "snacks", "chance": 25, "count-min": 1, "count-max": 2 }, - "R": { "item": "shelter", "chance": 15 }, - "x": { "item": "textbooks", "chance": 15 }, - "X": { "item": "dresser", "chance": 15 } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/monster_groups.json b/data/mods/mapspecials_demo/missile_silo/monster_groups.json deleted file mode 100644 index 80a6305bcda3f..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/monster_groups.json +++ /dev/null @@ -1,19 +0,0 @@ -[ - { - "type": "monstergroup", - "name": "GROUP_MISSILE_SILO", - "default": "mon_zombie_soldier", - "monsters": [ - { "monster": "mon_zombie_soldier", "freq": 30, "cost_multiplier": 2 }, - { "monster": "mon_zombie_hazmat", "freq": 20, "cost_multiplier": 3 }, - { "monster": "mon_skeleton", "freq": 20, "cost_multiplier": 2 }, - { "monster": "mon_zombie_smoker", "freq": 20, "cost_multiplier": 5 }, - { "monster": "mon_zombie_gasbag", "freq": 10, "cost_multiplier": 10, "pack_size": [ 2, 3 ] }, - { "monster": "mon_zombie_spitter", "freq": 5, "cost_multiplier": 5 }, - { "monster": "mon_zombie_acidic", "freq": 5, "cost_multiplier": 15 }, - { "monster": "mon_zombie_electric", "freq": 10, "cost_multiplier": 5 }, - { "monster": "mon_zombie_technician", "freq": 20, "cost_multiplier": 12 }, - { "monster": "mon_zombie_brute_shocker", "freq": 5, "cost_multiplier": 40 } - ] - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/overmap_specials.json b/data/mods/mapspecials_demo/missile_silo/overmap_specials.json deleted file mode 100644 index 488d5faa49263..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/overmap_specials.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "overmap_special", - "id": "silo", - "overmaps": [ - { "point": [ 0, 0, 0 ], "overmap": "silo_entrance_north" }, - { "point": [ 1, 0, 0 ], "overmap": "silo_trc_north" }, - { "point": [ 0, 1, 0 ], "overmap": "silo_blc_north" }, - { "point": [ 1, 1, 0 ], "overmap": "silo_brc_north" }, - { "point": [ 0, 0, -1 ], "overmap": "silo_utlcb_north" }, - { "point": [ 1, 0, -1 ], "overmap": "silo_utrc_north" }, - { "point": [ 0, 1, -1 ], "overmap": "silo_ublc_north" }, - { "point": [ 1, 1, -1 ], "overmap": "silo_ubrc_north" }, - { "point": [ 0, 0, -2 ], "overmap": "silo_utlca_north" }, - { "point": [ 1, 0, -2 ], "overmap": "silo_utrc_north" }, - { "point": [ 0, 1, -2 ], "overmap": "silo_ublc_north" }, - { "point": [ 1, 1, -2 ], "overmap": "silo_ubrc_north" }, - { "point": [ 0, 0, -3 ], "overmap": "silo_utlcb_north" }, - { "point": [ 1, 0, -3 ], "overmap": "silo_utrc_north" }, - { "point": [ 0, 1, -3 ], "overmap": "silo_ublc_north" }, - { "point": [ 1, 1, -3 ], "overmap": "silo_ubrc_north" }, - { "point": [ 0, 0, -4 ], "overmap": "silo_utlca_north" }, - { "point": [ 1, 0, -4 ], "overmap": "silo_utrc_north" }, - { "point": [ 0, 1, -4 ], "overmap": "silo_ublc_north" }, - { "point": [ 1, 1, -4 ], "overmap": "silo_ubrc_north" }, - { "point": [ 0, 0, -5 ], "overmap": "silo_utlcb_north" }, - { "point": [ 1, 0, -5 ], "overmap": "silo_utrc_north" }, - { "point": [ 0, 1, -5 ], "overmap": "silo_ublc_north" }, - { "point": [ 1, 1, -5 ], "overmap": "silo_ubrc_north" }, - { "point": [ 0, 0, -6 ], "overmap": "silo_ftlc_north" }, - { "point": [ 1, 0, -6 ], "overmap": "silo_ftrc_north" }, - { "point": [ 0, 1, -6 ], "overmap": "silo_fblc_north" }, - { "point": [ 1, 1, -6 ], "overmap": "silo_fbrc_north" } - ], - "connections": [ { "point": [ -1, 0, 0 ], "terrain": "road" } ], - "locations": [ "wilderness" ], - "city_distance": [ 20, -1 ], - "city_sizes": [ 1, 12 ], - "occurrences": [ 10, 10 ] - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/overmap_terrain.json b/data/mods/mapspecials_demo/missile_silo/overmap_terrain.json deleted file mode 100644 index 76f1c4337aeec..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/overmap_terrain.json +++ /dev/null @@ -1,132 +0,0 @@ -[ - { - "type": "overmap_terrain", - "id": "silo_entrance", - "name": "missile silo", - "sym": "m", - "color": "i_red", - "extras": "build", - "see_cost": 5, - "spawns": { "group": "GROUP_MISSILE_SILO", "population": [ 2, 6 ], "chance": 75 } - }, - { - "type": "overmap_terrain", - "id": "silo_trc", - "name": "missile silo", - "sym": "m", - "color": "i_red", - "extras": "build", - "see_cost": 5, - "spawns": { "group": "GROUP_MISSILE_SILO", "population": [ 2, 6 ], "chance": 75 } - }, - { - "type": "overmap_terrain", - "id": "silo_brc", - "name": "missile silo", - "sym": "m", - "color": "i_red", - "extras": "build", - "see_cost": 5, - "spawns": { "group": "GROUP_MISSILE_SILO", "population": [ 2, 6 ], "chance": 75 } - }, - { - "type": "overmap_terrain", - "id": "silo_blc", - "name": "missile silo", - "sym": "m", - "color": "i_red", - "extras": "build", - "see_cost": 5, - "spawns": { "group": "GROUP_MISSILE_SILO", "population": [ 2, 6 ], "chance": 75 } - }, - { - "type": "overmap_terrain", - "id": "silo_utlca", - "name": "missile silo", - "sym": "m", - "color": "i_red", - "extras": "build", - "see_cost": 99, - "spawns": { "group": "GROUP_MISSILE_SILO", "population": [ 2, 6 ], "chance": 75 } - }, - { - "type": "overmap_terrain", - "id": "silo_utlcb", - "name": "missile silo", - "sym": "m", - "color": "i_red", - "extras": "build", - "see_cost": 99, - "spawns": { "group": "GROUP_MISSILE_SILO", "population": [ 2, 6 ], "chance": 75 } - }, - { - "type": "overmap_terrain", - "id": "silo_utrc", - "name": "missile silo", - "sym": "m", - "color": "i_red", - "extras": "build", - "see_cost": 99, - "spawns": { "group": "GROUP_MISSILE_SILO", "population": [ 2, 6 ], "chance": 75 } - }, - { - "type": "overmap_terrain", - "id": "silo_ublc", - "name": "missile silo", - "sym": "m", - "color": "i_red", - "extras": "build", - "see_cost": 99, - "spawns": { "group": "GROUP_MISSILE_SILO", "population": [ 2, 6 ], "chance": 75 } - }, - { - "type": "overmap_terrain", - "id": "silo_ubrc", - "name": "missile silo", - "sym": "m", - "color": "i_red", - "extras": "build", - "see_cost": 99, - "spawns": { "group": "GROUP_MISSILE_SILO", "population": [ 2, 6 ], "chance": 75 } - }, - { - "type": "overmap_terrain", - "id": "silo_ftlc", - "name": "missile silo", - "sym": "m", - "color": "i_red", - "extras": "build", - "see_cost": 99, - "spawns": { "group": "GROUP_MISSILE_SILO", "population": [ 4, 6 ], "chance": 100 } - }, - { - "type": "overmap_terrain", - "id": "silo_ftrc", - "name": "missile silo", - "sym": "m", - "color": "i_red", - "extras": "build", - "see_cost": 99, - "spawns": { "group": "GROUP_MISSILE_SILO", "population": [ 4, 6 ], "chance": 100 } - }, - { - "type": "overmap_terrain", - "id": "silo_fblc", - "name": "missile silo", - "sym": "m", - "color": "i_red", - "extras": "build", - "see_cost": 99, - "spawns": { "group": "GROUP_MISSILE_SILO", "population": [ 4, 6 ], "chance": 100 } - }, - { - "type": "overmap_terrain", - "id": "silo_fbrc", - "name": "missile silo", - "sym": "m", - "color": "i_red", - "extras": "build", - "see_cost": 99, - "spawns": { "group": "GROUP_MISSILE_SILO", "population": [ 4, 6 ], "chance": 100 } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/palettes.json b/data/mods/mapspecials_demo/missile_silo/palettes.json deleted file mode 100644 index 02e450dc7c1d4..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/palettes.json +++ /dev/null @@ -1,66 +0,0 @@ -[ - { - "type": "palette", - "id": "missile_silo", - "terrain": { - ".": "t_thconc_floor", - "#": "t_rock", - "-": "t_concrete_wall", - "|": "t_concrete_wall", - "+": "t_door_metal_c", - "~": "t_open_air", - "e": "t_elevator", - "f": "t_chainfence_v", - "F": "t_chaingate_c", - "g": "t_wall_glass", - "G": "t_reinforced_glass", - "<": "t_stairs_up", - ">": "t_stairs_down", - "3": "t_machinery_heavy", - "4": "t_machinery_electronic", - "5": "t_machinery_light", - "6": "t_console_broken", - "7": "t_console", - "9": "t_card_military" - }, - "furniture": { - "a": "f_armchair", - "A": "f_sofa", - "b": "f_bookcase", - "B": "f_bed", - "c": "f_chair", - "C": "f_counter", - "d": "f_dresser", - "D": "f_desk", - "l": "f_locker", - "L": "f_rack", - "n": "f_bench", - "o": "f_oven", - "R": "f_fridge", - "r": "f_glass_fridge", - "s": "f_sink", - "S": "f_shower", - "t": "f_trashcan", - "T": "f_table", - "U": "f_cupboard", - "x": "f_crate_o", - "X": "f_crate_c" - }, - "toilets": { "&": { "amount": [ 0, 50 ] } }, - "items": { - "b": { "item": "textbooks", "chance": 60 }, - "B": { "item": "bed", "chance": 10, "count-min": 1, "count-max": 3 }, - "D": { "item": "radio", "chance": 60 }, - "l": [ - { "item": "military", "chance": 30, "count-min": 1, "count-max": 2 }, - { "item": "toxic_dump_equipment", "chance": 50, "count-min": 1, "count-max": 3 } - ], - "L": { "item": "construction_worker", "chance": 70 }, - "s": { "item": "cleaning", "chance": 15 }, - "S": { "item": "cleaning", "chance": 25 }, - "t": { "item": "trash", "chance": 60 }, - "x": { "item": "mine_storage", "chance": 50 }, - "X": { "item": "mine_equipment", "chance": 30, "count-min": 1, "count-max": 2 } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_blc_01.json b/data/mods/mapspecials_demo/missile_silo/silo_blc_01.json deleted file mode 100644 index d717a1e3c978a..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_blc_01.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_blc" ], - "//": "bottom left corner", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_dirt", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,%%%%%,,,,,,,,,,,,,,,", - ",,,,%fff%%%%%%%%%%%%%%%%", - ",,..%fzfffffffffffffffff", - ",,,,%ffF,,,,,,,,,,,,,,,,", - ",,,,%%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,~~~", - ",,,,,%f,,,,,,,,,,,,~~~~~", - ",,,,,%f,,,,,,,,,,,~~~~~~", - ",,,,,%f,,,,,,,,,,~~~~~~~", - ",,,,,%f,,,,,,,,,,~~~~~~~", - ",,,,,%f,,,,,,,,,~~~~~~~~", - ",,,,,%f,,,,,,,,,~~~~~~~~", - ",,,,,%f,,,,,,,,,~~~~~~~~" - ], - "rotation": 3, - "palettes": [ "missile_silo" ], - "terrain": { "z": "t_dirt", ",": "t_grass", "%": "t_fence_barbed" }, - "monster": { "Z": { "monster": "mon_zombie_soldier" }, "z": { "monster": "mon_turret_rifle" } } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_brc_01.json b/data/mods/mapspecials_demo/missile_silo/silo_brc_01.json deleted file mode 100644 index e2dcb2769156a..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_brc_01.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_brc" ], - "//": "bottom right corner", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_dirt", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,%%%%%,,,,,,,,,,,,,,,", - ",,,,%fff%%%%%%%%%%%%%%%%", - ",,..%fzfffffffffffffffff", - ",,,,%ffF,,,,,,,,,,,,,,,,", - ",,,,%%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,~~~", - ",,,,,%f,,,,,,,,,,,,~~~~~", - ",,,,,%f,,,,,,,,,,,~~~~~~", - ",,,,,%f,,,,,,,,,,~~~~~~~", - ",,,,,%f,,,,,,,,,,~~~~~~~", - ",,,,,%f,,,,,,,,,~~~~~~~~", - ",,,,,%f,,,,,,,,,~~~~~~~~", - ",,,,,%f,,,,,,,,,~~~~~~~~" - ], - "rotation": 2, - "palettes": [ "missile_silo" ], - "terrain": { "z": "t_dirt", ",": "t_grass", "%": "t_fence_barbed" }, - "monster": { "Z": { "monster": "mon_zombie_soldier" }, "z": { "monster": "mon_turret_rifle" } } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_entrance_01.json b/data/mods/mapspecials_demo/missile_silo/silo_entrance_01.json deleted file mode 100644 index 5644c10fe1990..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_entrance_01.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_entrance" ], - "//": "silo entrance. top left corner", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_thconc_floor", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",z,,,,,,,,,z,,,,,,,,,,,,", - ",,--G------____,,,,,,,,,", - ",,|DD6|lll|____,,,,,,,,,", - ",,|.c.+...*____,,,,,,,,,", - ",,|Z..|...9____%%%%%%%%%", - ",,|-+-|-.-|fFFffffffffff", - ",,|...|eee|,,,,,,,,,,,,,", - ",,|.>.|eee|,,,,,,,,,,,,,", - ",,|...|eee|,,,,,,,,,,,,,", - ",,---------,,,,,,,,,,,,,", - ",z,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,~~~", - ",,,,,%f,,,,,,,,,,,,~~~~~", - ",,,,,%f,,,,,,,,,,,~~~~~~", - ",,,,,%f,,,,,,,,,,~~~~~~~", - ",,,,,%f,,,,,,,,,,~~~~~~~", - ",,,,,%f,,,,,,,,,~~~~~~~~", - ",,,,,%f,,,,,,,,,~~~~~~~~", - ",,,,,%f,,,,,,,,,~~~~~~~~" - ], - "rotation": 0, - "palettes": [ "missile_silo" ], - "terrain": { "z": "t_dirt", ",": "t_grass", "_": "t_pavement_y", "*": "t_door_metal_locked", "%": "t_fence_barbed" }, - "monster": { "Z": { "monster": "mon_zombie_soldier" }, "z": { "monster": "mon_turret_rifle" } } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_fblc_01.json b/data/mods/mapspecials_demo/missile_silo/silo_fblc_01.json deleted file mode 100644 index 452f44bbd5a94..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_fblc_01.json +++ /dev/null @@ -1,43 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_fblc" ], - "//": "finale. bottom left corner", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "########################", - "########################", - "########################", - "########################", - "###########.............", - "###########.............", - "###########.............", - "###########.............", - "###########.............", - "######..................", - "######..................", - "######..................", - "######..................", - "######..................", - "######...............***", - "######.............*****", - "######............******", - "######...........*******", - "######...........*******", - "######..........********", - "######..........********", - "######..........********" - ], - "rotation": 3, - "palettes": [ "missile_silo" ], - "terrain": { "*": "t_metal_floor" }, - "fields": { "*": { "field": "fd_nuke_gas", "intensity": 2, "age": 0 } }, - "monster": { "Z": { "monster": "mon_turret_rifle" } } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_fbrc_01.json b/data/mods/mapspecials_demo/missile_silo/silo_fbrc_01.json deleted file mode 100644 index 79368b895f564..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_fbrc_01.json +++ /dev/null @@ -1,43 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_fbrc" ], - "//": "finale. bottom right corner", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "########################", - "########################", - "########################", - "########################", - "###########.............", - "###########.............", - "###########.............", - "###########.............", - "###########.............", - "######..................", - "######..................", - "######..................", - "######..................", - "######..................", - "######...............***", - "######.............*****", - "######............******", - "######...........*******", - "######...........*******", - "######..........********", - "######..........********", - "######..........********" - ], - "rotation": 2, - "palettes": [ "missile_silo" ], - "terrain": { "*": "t_metal_floor" }, - "fields": { "*": { "field": "fd_nuke_gas", "intensity": 2, "age": 0 } }, - "monster": { "Z": { "monster": "mon_turret_rifle" } } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_ftlc_01.json b/data/mods/mapspecials_demo/missile_silo/silo_ftlc_01.json deleted file mode 100644 index d294f5c784217..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_ftlc_01.json +++ /dev/null @@ -1,43 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_ftlc" ], - "//": "finale. top left corner. A stairs", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "########################", - "########################", - "########################", - "########################", - "######-----GG...........", - "######|eee|GG...........", - "######|eee%GG...........", - "######|eee|GG...........", - "######-----GG...........", - "######..................", - "######......v.....z.....", - "######..................", - "######.....z............", - "######..................", - "######........z......***", - "######G............*****", - "###...G...........******", - "###.<.+..........*******", - "###...G..........*******", - "######G.....z...********", - "######..........********", - "######..........********" - ], - "rotation": 0, - "palettes": [ "missile_silo" ], - "terrain": { "*": "t_metal_floor" }, - "fields": { "*": { "field": "fd_nuke_gas", "intensity": 2, "age": 0 } }, - "monster": { "z": { "monster": "mon_zombie_soldier" }, "Z": { "monster": "mon_zombie_bio_op" } } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_ftrc_01.json b/data/mods/mapspecials_demo/missile_silo/silo_ftrc_01.json deleted file mode 100644 index e2f6d8c79ae79..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_ftrc_01.json +++ /dev/null @@ -1,43 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_ftrc" ], - "//": "finale. top right corner", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "########################", - "########################", - "########################", - "########################", - "###########.............", - "###########.............", - "###########.............", - "###########........z....", - "###########.............", - "######..................", - "######..................", - "######......v.....z.....", - "######..................", - "######..................", - "######........z......***", - "######.............*****", - "######............******", - "######...........*******", - "######...........*******", - "######......z...********", - "######..........********", - "######..........********" - ], - "rotation": 1, - "palettes": [ "missile_silo" ], - "terrain": { "*": "t_metal_floor" }, - "fields": { "*": { "field": "fd_nuke_gas", "intensity": 2, "age": 0 } }, - "monster": { "z": { "monster": "mon_zombie_soldier" } } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_trc_01.json b/data/mods/mapspecials_demo/missile_silo/silo_trc_01.json deleted file mode 100644 index ed5e5435a2ff9..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_trc_01.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_trc" ], - "//": "top right corner", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_dirt", - "rows": [ - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,%%%%%,,,,,,,,,,,,,,,", - ",,,,%fff%%%%%%%%%%%%%%%%", - ",,..%fzfffffffffffffffff", - ",,,,%ffF,,,,,,,,,,,,,,,,", - ",,,,%%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,,,,", - ",,,,,%f,,,,,,,,,,,,,,~~~", - ",,,,,%f,,,,,,,,,,,,~~~~~", - ",,,,,%f,,,,,,,,,,,~~~~~~", - ",,,,,%f,,,,,,,,,,~~~~~~~", - ",,,,,%f,,,,,,,,,,~~~~~~~", - ",,,,,%f,,,,,,,,,~~~~~~~~", - ",,,,,%f,,,,,,,,,~~~~~~~~", - ",,,,,%f,,,,,,,,,~~~~~~~~" - ], - "rotation": 1, - "palettes": [ "missile_silo" ], - "terrain": { "z": "t_dirt", ",": "t_grass", "%": "t_fence_barbed" }, - "monster": { "Z": { "monster": "mon_zombie_soldier" }, "z": { "monster": "mon_turret_rifle" } } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_ublc_01.json b/data/mods/mapspecials_demo/missile_silo/silo_ublc_01.json deleted file mode 100644 index 081d98691ef35..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_ublc_01.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_ublc" ], - "//": "underground. bottom left corner", - "method": "json", - "weight": 20, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "####################----", - "####################|...", - "###################--g..", - "###################|4g..", - "#######|------|####|4g..", - "######|-......-|###|4g..", - "######|..GGGG.Z|###--g..", - "######|..G33G..|####|...", - "######|..G3%G..|####----", - "######|Z.G33G..|########", - "######|..G33G..|########", - "######|..GGGG..|###|----", - "######|-......-|##|-....", - "#######|--..--|##|-.....", - "#########|++|###|-...~~~", - "#########|..-----..~~~~~", - "#########|........~~~~~~", - "#########|.......~~~~~~~", - "#########-----...~~~~~~~", - "#############|..~~~~~~~~", - "##---------##|..~~~~~~~~", - "##|..AAA..|##|..~~~~~~~~" - ], - "rotation": 3, - "palettes": [ "missile_silo" ], - "terrain": { "%": "t_plut_generator" }, - "monster": { "Z": { "monster": "mon_zombie_bio_op" } } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_ublc_02.json b/data/mods/mapspecials_demo/missile_silo/silo_ublc_02.json deleted file mode 100644 index dc4f5d348253b..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_ublc_02.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_ublc" ], - "//": "underground. bottom left corner", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "#####-------------------", - "#####|.6.6.6.6.6.6......", - "#####|.c.c.c.c.c.c......", - "#####|..................", - "#####|..................", - "#####|b.................", - "#####|b.........TTTTT...", - "#####|b.........TTTTT...", - "#####-------+-----------", - "###########|.|##########", - "###########|.|##########", - "##----------.-----------", - "##|.....................", - "##|.....................", - "##|..--------------..~~~", - "##|..|#############~~~~~", - "##|..|############~~~~~~", - "##|++|-----------~~~~~~~", - "##|.......+......~~~~~~~", - "##|.......+.....~~~~~~~~", - "##|.......----..~~~~~~~~", - "##|.......|##|..~~~~~~~~" - ], - "rotation": 3, - "palettes": [ "missile_silo" ] - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_ublc_03.json b/data/mods/mapspecials_demo/missile_silo/silo_ublc_03.json deleted file mode 100644 index 09bb70d1b24c9..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_ublc_03.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_ublc" ], - "//": "underground. bottom left corner", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "###################-----", - "######dd###########|l...", - "###---++---########|l...", - "###|BB..BB|###.....+....", - "###|......|###.....+....", - "###|BB....+.....###|....", - "###|......|###..###|l...", - "###|BB..BB|###..###|l...", - "###--------###..###-----", - "##############..########", - "##############..########", - "##############..#####---", - "#####...................", - "#####...................", - "#####..#######..#####~~~", - "#####..#######..###~~~~~", - "#####..#######..##~~~~~~", - "#####..#######..#~~~~~~~", - "##---++----###..#~~~~~~~", - "##|....DDD|##|..~~~~~~~~", - "##|.....c.|##|..~~~~~~~~", - "##|.......|##|..~~~~~~~~" - ], - "rotation": 3, - "palettes": [ "missile_silo" ] - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_ubrc_01.json b/data/mods/mapspecials_demo/missile_silo/silo_ubrc_01.json deleted file mode 100644 index adf3486d5fa08..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_ubrc_01.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_ubrc" ], - "//": "underground. bottom right corner", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "###################-----", - "#######...#########|p...", - "#######.%.#########|....", - "#######...#########|....", - "########.#####...##|D...", - "########.......%.##|6c..", - "##...###.#####...##|D...", - "##.%.......########|....", - "##...#####.########--.--", - "##########.##########.##", - "##########.##########.##", - "##########.##--------.--", - "#########...............", - "###...###.###|..........", - "###.%.....###|..#####~~~", - "###...#######|..###~~~~~", - "#############|..##~~~~~~", - "#############|..#~~~~~~~", - "##---------##|..#~~~~~~~", - "##|3C3C3C3|##|..~~~~~~~~", - "##|.......|##|..~~~~~~~~", - "##|.......|##|..~~~~~~~~" - ], - "rotation": 2, - "palettes": [ "missile_silo" ], - "terrain": { "%": "t_generator_broken" } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_ubrc_02.json b/data/mods/mapspecials_demo/missile_silo/silo_ubrc_02.json deleted file mode 100644 index 283bbe861c0b4..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_ubrc_02.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_ubrc" ], - "//": "underground. bottom right corner", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "#####---------##--------", - "#####|sCsCsCs|--|p......", - "#####|..........+.......", - "#####---+---+---|--.....", - "#####|&|&|&|&||#|.+.....", - "#####-+---+-----|--.....", - "#####|..........+.......", - "#####|sCsCsCs|--|p......", - "#####---------##--------", - "########################", - "########################", - "##---------########|----", - "##|.c....4|#######|-....", - "##|DDD...4|######|-.....", - "##|......4|#####|-...~~~", - "##----.----####|-..~~~~~", - "######.#######|-..~~~~~~", - "######+######|-..~~~~~~~", - "##----.----##|...~~~~~~~", - "##|......L|##|..~~~~~~~~", - "##|..333..|##|..~~~~~~~~", - "##|..333..|##|..~~~~~~~~" - ], - "rotation": 2, - "palettes": [ "missile_silo" ] - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_ubrc_03.json b/data/mods/mapspecials_demo/missile_silo/silo_ubrc_03.json deleted file mode 100644 index 28971949c9184..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_ubrc_03.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_ubrc" ], - "//": "underground. bottom right corner", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "##--------####----------", - "##|Z..ZZ.|####|.4446444.", - "##|......------....c....", - "##|..Z...+....+.........", - "##|......------.........", - "##|ffFFff|####|.........", - "##|......|####|.c.......", - "##|......|####|DD6......", - "##---++---####|------+--", - "####|..|############|.|#", - "####|..|############|.|#", - "####|..----------###|+--", - "####|...........|###|...", - "####|...........|###|...", - "####----------..|#--|~~~", - "#############|..|||~~~~~", - "#############|..||~~~~~~", - "#############|...~~~~~~~", - "##------------...~~~~~~~", - "##|D......+.....~~~~~~~~", - "##|6c.....----..~~~~~~~~", - "##|D......|##|..~~~~~~~~" - ], - "rotation": 2, - "palettes": [ "missile_silo" ], - "monster": { "Z": { "monster": "mon_zombie_soldier" } } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_utlca_01.json b/data/mods/mapspecials_demo/missile_silo/silo_utlca_01.json deleted file mode 100644 index bb8e3032805f7..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_utlca_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_utlca" ], - "//": "underground. top left corner. A stairs", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "#################-------", - "#################|l..f..", - "#################|l..f..", - "#################|l..F..", - "##---------######|l..f..", - "##|...|eee|######|l..f..", - "##|.<.|eee|######|l..f..", - "##|...|eee|..####|l..f..", - "##--.---.--...###-------", - "##............x.########", - "##..............X##..###", - "##.x.X..X............---", - "####...##...............", - "#############...........", - "############.........~~~", - "##-----#########...~~~~~", - "##|...|###########~~~~~~", - "##|.>.|##########~~~~~~~", - "##|...|##########~~~~~~~", - "##---+-----------~~~~~~~~", - "##|.......+.....~~~~~~~~", - "##|.......|---..~~~~~~~~" - ], - "rotation": 0, - "palettes": [ "missile_silo" ] - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_utlca_02.json b/data/mods/mapspecials_demo/missile_silo/silo_utlca_02.json deleted file mode 100644 index 9a206572f9c75..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_utlca_02.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_utlca" ], - "//": "underground. top left corner. A stairs", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "#################-------", - "################-|....D.", - "###############-|....c6.", - "###############|6..D..D.", - "##---------####|4.c6....", - "##|...|eee|####|6..D..D.", - "##|.<.|eee|####-|....c6.", - "##|...|eee|#####-|....D.", - "##|-.---.-|######-------", - "##|.......|#############", - "##|.......|#############", - "##|.......--------------", - "##|.....................", - "##|VVVV.................", - "##---------+-------..~~~", - "##-----###|l|######~~~~~", - "##|...|###---#####~~~~~~", - "##|.>.|##########~~~~~~~", - "##|...|##########~~~~~~~", - "##|...----------~~~~~~~~", - "##|.......+.....~~~~~~~~", - "##|.......|---..~~~~~~~~" - ], - "rotation": 0, - "palettes": [ "missile_silo" ] - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_utlca_03.json b/data/mods/mapspecials_demo/missile_silo/silo_utlca_03.json deleted file mode 100644 index f4596d7585a25..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_utlca_03.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_utlca" ], - "//": "underground. top left corner. A stairs", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "################--------", - "################|zGzGzG.", - "################|+G+G+G.", - "################|.......", - "##---------#####|.......", - "##|...|eee|------.......", - "##|.<.|eee..............", - "##|...|eee|-------------", - "##--.------#############", - "###|.|##################", - "###|.|##################", - "###|.-------------------", - "###|....................", - "###|....................", - "###----------------..~~~", - "##-----###########|~~~~~", - "##|...|##########-|~~~~~", - "##|.>............~~~~~~~", - "##|...|-------...~~~~~~~", - "##-----######|..~~~~~~~~", - "##---------##|..~~~~~~~~", - "##|4.....4|##|..~~~~~~~~" - ], - "rotation": 0, - "palettes": [ "missile_silo" ], - "monster": { "z": { "monster": "mon_secubot" } } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_utlcb_01.json b/data/mods/mapspecials_demo/missile_silo/silo_utlcb_01.json deleted file mode 100644 index 62e12150e18cf..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_utlcb_01.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_utlcb" ], - "//": "underground. top left corner. alternate B stairs", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "##----------------------", - "##|AAAC..VV....cTTT.....", - "##|.............TTTc....", - "##|.....................", - "##--+---G--.............", - "##|...|eee|.....TTT.....", - "##|.>.|eee.....cTTTc....", - "##|...|eee|.....c.......", - "##---------++-----------", - "##########|..|##########", - "##########|..|##########", - "##--------|..-----------", - "##|.......G.............", - "##|..444..G.............", - "##|..444..-----------~~~", - "##|.......|########~~~~~", - "##|GGGGG+G|#######~~~~~~", - "##|..<....|######~~~~~~~", - "##|.......+......~~~~~~~", - "##|b......+.....~~~~~~~~", - "##|b......|###..~~~~~~~~", - "##|.......|###..~~~~~~~~" - ], - "rotation": 0, - "palettes": [ "missile_silo" ] - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_utlcb_02.json b/data/mods/mapspecials_demo/missile_silo/silo_utlcb_02.json deleted file mode 100644 index 528ab8e6d03fc..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_utlcb_02.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_utlcb" ], - "//": "underground. top left corner. alternate B stairs", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "##################------", - "##################|z+...", - "##################|GG...", - "##################|z+...", - "##---------#######|GG...", - "##|...|eee|-----##|z+...", - "##|.>..eee.....|##|GG...", - "##|...|eee|---.|##|z+...", - "##---------##|.|##------", - "#############|.|########", - "#############|.|########", - "#############|.---------", - "#############|..........", - "#############|..........", - "#############------..~~~", - "##-----------------~~~~~", - "##|.............|-~~~~~~", - "##|.<...........|~~~~~~~", - "##|...|#######..|~~~~~~~", - "##-GGG-----##|..~~~~~~~~", - "##|.......|##|..~~~~~~~~", - "##|.......|##|..~~~~~~~~" - ], - "rotation": 0, - "palettes": [ "missile_silo" ], - "monster": { "z": { "monster": "mon_secubot" } } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_utlcb_03.json b/data/mods/mapspecials_demo/missile_silo/silo_utlcb_03.json deleted file mode 100644 index 435e2896ecba9..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_utlcb_03.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_utlcb" ], - "//": "underground. top left corner. alternate B stairs", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "#############..#########", - "###########x....x##-----", - "######.##.............x.", - "######..................", - "####....................", - "##--+---G--.............", - "##|...|eee|.............", - "##|.>.GeeeG.......z.....", - "##|...|eee|.............", - "##------.--..........---", - "######...............|##", - "######.###.....#.....|##", - "#########.....##.....---", - "###########.............", - "############............", - "##############.......~~~", - "##-----########....~~~~~", - "##|...|###.#####..~~~~~~", - "##|.<.+.....####.~~~~~~~", - "##|...|###....###~~~~~~~", - "##-----#####....~~~~~~~~", - "##---------##|..~~~~~~~~", - "##|.......|##|..~~~~~~~~" - ], - "rotation": 0, - "palettes": [ "missile_silo" ], - "monster": { "z": { "monster": "mon_turret_rifle" } } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_utlcb_04.json b/data/mods/mapspecials_demo/missile_silo/silo_utlcb_04.json deleted file mode 100644 index fd61006017544..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_utlcb_04.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_utlcb" ], - "//": "underground. top left corner. alternate B stairs", - "method": "json", - "weight": 30, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "#################-------", - "###############--|......", - "###############|L+......", - "###############--|%%%...", - "##---------######|%%%6..", - "##|x..|eee|####--|%%%...", - "##|.>.|eee|####|L+......", - "##|...|eee|####--|......", - "##|..X--.--######-------", - "##|..........xx#########", - "##|X.......xx...########", - "##|................###--", - "##|...--------..........", - "##|...|#######..........", - "##|...|#######..#####~~~", - "##|...|#######..###~~~~~", - "##|...|#######..##~~~~~~", - "##|.<.|#######..#~~~~~~~", - "##|...|#######..#~~~~~~~", - "##|-.--#######..~~~~~~~~", - "##|#.#########..~~~~~~~~", - "##|......#####..~~~~~~~~" - ], - "rotation": 0, - "palettes": [ "missile_silo" ], - "terrain": { "%": "t_radio_tower" } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_utrc_01.json b/data/mods/mapspecials_demo/missile_silo/silo_utrc_01.json deleted file mode 100644 index 52265415b5591..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_utrc_01.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_utrc" ], - "//": "underground. top right corner", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "#####-----###########|--", - "#####|333|##########|-..", - "##--|.....|--######--...", - "##|3........|------|....", - "##|3...%....+...........", - "##|3........|------|....", - "##--|.....|--######--...", - "####-|333|-#########|-..", - "#####-----###########|--", - "########################", - "############------######", - "############|....-------", - "#####.......+...........", - "#####.......+...........", - "#####..#####|....####~~~", - "#####..#####--..###~~~~~", - "#####..######|..##~~~~~~", - "#####..######|..#~~~~~~~", - "#####..######|..#~~~~~~~", - "##---++----##|..~~~~~~~~", - "##|......4|##|..~~~~~~~~", - "##|......4|##|..~~~~~~~~" - ], - "rotation": 1, - "palettes": [ "missile_silo" ], - "terrain": { "0": "t_generator_broken" } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_utrc_02.json b/data/mods/mapspecials_demo/missile_silo/silo_utrc_02.json deleted file mode 100644 index 4fae7c6d63d0d..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_utrc_02.json +++ /dev/null @@ -1,41 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_utrc" ], - "//": "underground. top right corner", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "#####################---", - "###..................+b.", - "###.#################|b.", - "###.#################|b.", - "###.#################|..", - "###.#################|..", - "###.#################|..", - "###.#################|..", - "###.######---------|#---", - "###.######|........|####", - "###.######|........|####", - "###.######|........-----", - "###.######|...z.........", - "###.######|.............", - "###.######|..........~~~", - "###.######|........~~~~~", - "###.######|.......~~~~~~", - "###.######----...~~~~~~~", - "###.#########|...~~~~~~~", - "###.#########|..~~~~~~~~", - "##-+-------##|..~~~~~~~~", - "##|bbb....|##|..~~~~~~~~" - ], - "rotation": 1, - "palettes": [ "missile_silo" ], - "monster": { "z": { "monster": "mon_turret_rifle" } } - } - } -] diff --git a/data/mods/mapspecials_demo/missile_silo/silo_utrc_03.json b/data/mods/mapspecials_demo/missile_silo/silo_utrc_03.json deleted file mode 100644 index ec72d86cdf2fe..0000000000000 --- a/data/mods/mapspecials_demo/missile_silo/silo_utrc_03.json +++ /dev/null @@ -1,48 +0,0 @@ -[ - { - "type": "mapgen", - "om_terrain": [ "silo_utrc" ], - "//": "underground. top right corner", - "method": "json", - "weight": 100, - "object": { - "fill_ter": "t_floor", - "rows": [ - "########################", - "########################", - "##########--------------", - "##########|6c...........", - "##########|.............", - "##########|6c...44744...", - "##########|.....44444...", - "##########|6c...44444...", - "##########|.............", - "##########|6c...........", - "##########-----------.--", - "####################|.|#", - "####################|.|##", - "###################|-+--", - "##################|-....", - "#################|-......", - "################|-...~~~", - "##---------####|-..~~~~~", - "##|TTT.DDD|###|-..~~~~~~", - "##|TTT...c|##|-..~~~~~~~", - "##|.c.....----...~~~~~~~", - "##|.............~~~~~~~~", - "##|.....c.----..~~~~~~~~", - "##|.......|##|..~~~~~~~~" - ], - "rotation": 1, - "palettes": [ "missile_silo" ], - "computers": { - "7": { - "name": "Missile Control", - "access_denied": "ERROR! Access denied! Unauthorized access will be met with lethal force!", - "options": [ { "name": "Disarm Missile", "action": "miss_disarm" } ], - "failures": [ { "action": "secubots" }, { "action": "damage" } ] - } - } - } - } -] diff --git a/data/mods/mapspecials_demo/modinfo.json b/data/mods/mapspecials_demo/modinfo.json deleted file mode 100644 index 4c91fca6f66b0..0000000000000 --- a/data/mods/mapspecials_demo/modinfo.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - { - "type": "MOD_INFO", - "ident": "mapgen_demo", - "name": "Mapgen Demo", - "authors": [ "Sunshine" ], - "description": "Demo for JSONized mapgens (megastore, missile silo).", - "category": "buildings", - "dependencies": [ "dda" ], - "obsolete": true - } -] diff --git a/data/mods/more_classes_scenarios/cs_classes.json b/data/mods/more_classes_scenarios/cs_classes.json deleted file mode 100644 index e288adc5f55ed..0000000000000 --- a/data/mods/more_classes_scenarios/cs_classes.json +++ /dev/null @@ -1,336 +0,0 @@ -[ - { - "type": "item_group", - "subtype": "collection", - "id": "army_mags_rm2000", - "entries": [ - { "item": "8x40_10_mag", "ammo-item": "8mm_fmj", "charges": 10 }, - { "item": "8x40_10_mag", "ammo-item": "8mm_fmj", "charges": 10 } - ] - }, - { - "type": "profession", - "ident": "bio_specops", - "name": "Bionic Special Operator", - "description": "Once bionic augmentation proved safe, you were chosen for a top secret soldier augmentation program. As if being a top-tier special forces operator before the procedure wasn't enough, your new enhancements allow you to handle any combat scenario be it human or not.", - "points": 8, - "CBMs": [ - "bio_targeting", - "bio_purifier", - "bio_carbon", - "bio_geiger", - "bio_adrenaline", - "bio_night_vision", - "bio_metabolics", - "bio_power_storage_mkII" - ], - "skills": [ - { "level": 3, "name": "gun" }, - { "level": 3, "name": "smg" }, - { "level": 2, "name": "cutting" }, - { "level": 2, "name": "melee" }, - { "level": 2, "name": "dodge" }, - { "level": 1, "name": "firstaid" }, - { "level": 1, "name": "swimming" }, - { "level": 1, "name": "survival" } - ], - "items": { - "both": { - "items": [ - "wetsuit", - "pants_army", - "wetsuit_hood", - "tac_helmet", - "glasses_bal", - "wetsuit_gloves", - "gloves_tactical", - "socks", - "boots_combat", - "dive_bag", - "diving_watch" - ], - "entries": [ - { "item": "kukri", "container-item": "sheath" }, - { - "item": "rm2000_smg", - "ammo-item": "8mm_fmj", - "charges": 25, - "contents-item": [ "shoulder_strap", "suppressor", "holo_sight" ] - }, - { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, - { "item": "legpouch_large", "contents-group": "army_mags_rm2000" }, - { "item": "legpouch_large", "contents-group": "army_mags_rm2000" } - ] - }, - "male": [ "boxer_shorts" ], - "female": [ "sports_bra", "boxer_shorts" ] - } - }, - { - "type": "profession", - "ident": "seasoned_tourist", - "name": "Seasoned Tourist", - "description": "Due to your thirst for adventure, hunger for good food, and disposable income, you have been able to travel extensively. You've traveled here to get a taste of New England; now you hope New England won't get a taste of you!", - "points": 5, - "skills": [ - { "level": 3, "name": "speech" }, - { "level": 2, "name": "barter" }, - { "level": 2, "name": "cooking" }, - { "level": 1, "name": "firstaid" } - ], - "items": { - "both": { - "items": [ - "knit_scarf", - "undershirt", - "dress_shirt", - "jacket_light", - "gloves_light", - "pants", - "fanny", - "socks", - "sneakers", - "roadmap", - "restaurantmap", - "shavingkit", - "aluminum_foil", - "can_chowder", - "apple_cider", - "fruit_leather", - "suitcase_m" - ], - "entries": [ - { "group": "charged_cell_phone" }, - { "item": "medium_battery_cell", "ammo-item": "battery", "charges": 500, "container-item": "mess_kit" } - ] - }, - "male": [ "boxer_shorts" ], - "female": [ "bra", "panties" ] - } - }, - { - "type": "profession", - "ident": "trans_human", - "name": "Post-Human Cyborg", - "description": "As a wealthy trans-humanist you decided to put yourself on the frontline of augmentative technology to bring forth the future. You are now a walking example of what humanity could have become.", - "points": 8, - "CBMs": [ - "bio_str_enhancer", - "bio_dex_enhancer", - "bio_int_enhancer", - "bio_eye_enhancer", - "bio_speed", - "bio_eye_optic", - "bio_sunglasses", - "bio_ears", - "bio_digestion", - "bio_recycler", - "bio_purifier" - ], - "items": { - "both": [ "hat_knit", "tshirt", "jacket_light", "knit_scarf", "gloves_light", "boots" ], - "male": [ "briefs", "socks", "pants" ], - "female": [ "bra", "panties", "stockings", "skirt" ] - } - }, - { - "type": "profession", - "ident": "janitor", - "name": "Janitor", - "description": "You earned a living from sweeping up chocolate wrappers and picking chewing gum from under tables. Now the only thing you'll be sweeping are the brains of the dead.", - "points": -1, - "items": { "both": [ "jumpsuit", "socks", "boots", "mop" ], "male": [ "boxer_shorts" ], "female": [ "bra", "boxer_shorts" ] } - }, - { - "type": "profession", - "ident": "poor_student", - "name": "Poor Student", - "description": "You come from a low-income family, and got mocked for your old hand-me-down clothes and for getting free school lunches in the cafeteria. Even worse, your ratty old backpack finally fell apart at the worst time. At least no one's mocking you now.", - "points": -1, - "items": { "both": [ "tshirt", "socks", "lowtops", "shorts" ], "male": [ "briefs" ], "female": [ "panties" ] } - }, - { - "type": "profession", - "ident": "elementary_student", - "name": "Elementary Student", - "description": "You're just a kid, and now the world has turned into something out of one of your bad dreams. The grown-ups you relied on are all dead--or undead--now. What are you going to do?", - "points": 0, - "items": { - "both": [ - "tshirt", - "socks", - "slingpack", - "sneakers", - "jeans", - "jacket_light", - "knit_scarf", - "juice", - "sandwich_pbj", - "fairy_tales" - ], - "male": [ "briefs" ], - "female": [ "panties" ] - } - }, - { - "type": "profession", - "ident": "goalie", - "name": "Hockey Player", - "description": "You were a minor-league hockey goalie before the rest of your team became zombies. It's just you and your hockey equipment versus the undead, but at least you can cross-check them now.", - "points": 0, - "traits": [ "PROF_SKATER" ], - "items": { - "both": [ "mask_hockey", "hockey_stick", "jersey", "pants", "socks", "sneakers", "mouthpiece", "puck" ], - "male": [ "briefs" ], - "female": [ "sports_bra", "panties" ] - } - }, - { - "type": "profession", - "ident": "batter", - "name": "Baseball Player", - "description": "You were a batter on a local minor league team before the Cataclysm. You escaped with your equipment, but how long can you survive until your innings are up?", - "points": 0, - "skills": [ { "level": 1, "name": "bashing" } ], - "items": { - "both": [ "bat", "helmet_ball", "dress_shirt", "pants", "socks", "cleats", "mouthpiece", "baseball" ], - "male": [ "briefs" ], - "female": [ "sports_bra", "panties" ] - } - }, - { - "type": "profession", - "ident": "linebacker", - "name": "Football Player", - "description": "You were the star player for the local football team, adored by teammates and fans alike. Now they just adore your brain. You've still got your bulky football gear on.", - "points": 0, - "skills": [ { "level": 2, "name": "dodge" } ], - "items": { - "both": [ - "football_armor", - "tank_top", - "helmet_football", - "pants", - "socks", - "cleats", - "mouthpiece", - "football", - "sports_drink" - ], - "male": [ "briefs" ], - "female": [ "sports_bra", "panties" ] - } - }, - { - "type": "profession", - "ident": "prep_student", - "name": "Preppy Student", - "description": "Your parents were busy, important people, who wanted you to have every advantage and pushed you to be \"successful,\" whatever that meant. If only they'd ever let you experience childhood, or ever shown you their love. You're certainly not getting either one now.", - "points": 1, - "skills": [ { "level": 1, "name": "speech" } ], - "items": { - "both": { - "items": [ - "dress_shirt", - "jacket_light", - "pants", - "socks", - "dress_shoes", - "tie_skinny", - "tieclip", - "fancy_sunglasses", - "knit_scarf", - "wristwatch", - "mbag", - "water_mineral", - "money_bundle", - "adderall", - "manual_business" - ], - "entries": [ { "group": "charged_cell_phone" } ] - }, - "male": [ "briefs" ], - "female": [ "panties" ] - } - }, - { - "type": "profession", - "ident": "waken", - "name": "Awakened", - "description": "You were awoken in the middle of the night by a noise. Armed only with a flashlight you went to investigate, now you face the Cataclysm.", - "points": 0, - "items": { - "both": { "items": [ "slippers" ], "entries": [ { "group": "charged_flashlight" } ] }, - "male": [ "boxer_shorts", "socks", "house_coat" ], - "female": [ "bra", "panties", "stockings", "gown" ] - } - }, - { - "type": "profession", - "ident": "bio_cyclist", - "name": "Bionic Cyclist", - "description": "Your training and augmentation for the Cyber-Olympics cycling competition gave you an edge on escaping the start of the Cataclysm. Can you keep on running from it forever?", - "points": 6, - "CBMs": [ "bio_str_enhancer", "bio_adrenaline", "bio_hydraulics", "bio_metabolics", "bio_power_storage_mkII" ], - "skills": [ { "level": 3, "name": "driving" }, { "level": 2, "name": "dodge" } ], - "items": { - "both": [ - "helmet_bike", - "folding_bicycle", - "under_armor_shorts", - "under_armor", - "socks", - "sneakers", - "protein_drink", - "fanny", - "fancy_sunglasses" - ], - "male": [ "briefs" ], - "female": [ "panties", "sports_bra" ] - } - }, - { - "type": "profession", - "ident": "welder", - "name": "Welder", - "description": "You worked as a welder for an off shore company before the Cataclysm. You were on your way back home when it struck. At least you got the tools of your craft.", - "points": 4, - "skills": [ { "level": 1, "name": "mechanics" } ], - "items": { - "both": { - "items": [ "socks", "goggles_welding", "jumpsuit", "gloves_work", "boots_steel", "tool_belt", "apron_leather" ], - "entries": [ - { "item": "tinyweldtank", "ammo-item": "oxyacetylene", "charges": 60, "container-item": "oxy_torch" }, - { "item": "light_battery_cell", "ammo-item": "battery", "charges": 100, "container-item": "wearable_light" } - ] - }, - "male": [ "boxer_shorts" ], - "female": [ "bra", "boxer_shorts" ] - } - }, - { - "type": "profession", - "ident": "pri-sur", - "name": "Primitive Survivalist", - "description": "You knew the day would come, the day it all went to shit. You prepared yourself, not by gear but sheer skill; all those days in the woods paid off. If your ancestors survived with no tech, you'll be damned if you don't", - "points": 6, - "skills": [ - { "level": 5, "name": "survival" }, - { "level": 3, "name": "archery" }, - { "level": 3, "name": "gun" }, - { "level": 3, "name": "fabrication" }, - { "level": 3, "name": "cooking" }, - { "level": 2, "name": "unarmed" }, - { "level": 2, "name": "melee" }, - { "level": 2, "name": "tailor" }, - { "level": 2, "name": "firstaid" }, - { "level": 1, "name": "mechanics" }, - { "level": 1, "name": "swimming" } - ], - "items": { - "both": [ "jeans", "longshirt", "socks", "coat_winter", "boots_winter", "knit_scarf", "pockknife", "water_clean", "matches" ], - "male": [ "boxer_shorts" ], - "female": [ "bra", "panties" ] - } - } -] diff --git a/data/mods/more_classes_scenarios/cs_scenarios.json b/data/mods/more_classes_scenarios/cs_scenarios.json deleted file mode 100644 index 9e82b5a3d249c..0000000000000 --- a/data/mods/more_classes_scenarios/cs_scenarios.json +++ /dev/null @@ -1,67 +0,0 @@ -[ - { - "type": "scenario", - "ident": "fema_help", - "name": "Challenge-FEMA Death Camp", - "points": -6, - "description": "You were one of the many law-enforcement and military personnel alike called in to keep order on one of the FEMA camps. It all went to shit fast… wounded, infected, surrounded by fire you lie on the ground… and they just keep coming…", - "allowed_locs": [ "sloc_fema_entrance", "sloc_fema" ], - "professions": [ - "cop", - "sniper_police", - "riot_police", - "bionic_cop", - "swat", - "swat_heavy", - "soldier", - "bio_soldier", - "bio_sniper", - "bio_specops", - "specops" - ], - "start_name": "Fema Camp", - "flags": [ "HELI_CRASH", "SUR_START", "FIRE_START", "INFECTED", "CHALLENGE" ] - }, - { - "type": "scenario", - "ident": "mansion_scen", - "name": "Mansion Holdout", - "points": -1, - "description": "While the world ended, you felt relatively safe inside the mansion you have serviced for years. Now the dead have come knocking at your doorstep, and it might be time to leave.", - "allowed_locs": [ "sloc_mansion", "sloc_mansion_entrance" ], - "professions": [ "maid" ], - "start_name": "Mansion", - "flags": [ "SUR_START" ] - }, - { - "type": "scenario", - "ident": "cyberpunk", - "copy-from": "cyberpunk", - "add_professions": true, - "extend": { "professions": [ "bio_gangster", "bionic_hitman" ] } - }, - { - "type": "scenario", - "ident": "missed", - "copy-from": "missed", - "extend": { - "allowed_locs": [ "sloc_electronics_store", "sloc_clothes_store", "sloc_bank", "sloc_pawn_shop", "sloc_gun_store", "sloc_gas_station" ] - } - }, - { - "type": "scenario", - "ident": "infected", - "copy-from": "infected", - "extend": { - "allowed_locs": [ "sloc_electronics_store", "sloc_clothes_store", "sloc_bank", "sloc_pawn_shop", "sloc_gun_store", "sloc_gas_station" ] - } - }, - { - "type": "scenario", - "ident": "fire", - "copy-from": "fire", - "extend": { - "allowed_locs": [ "sloc_electronics_store", "sloc_clothes_store", "sloc_bank", "sloc_pawn_shop", "sloc_gun_store", "sloc_gas_station" ] - } - } -] diff --git a/data/mods/more_classes_scenarios/cs_start_locations.json b/data/mods/more_classes_scenarios/cs_start_locations.json deleted file mode 100644 index 6e6f115c9d2d2..0000000000000 --- a/data/mods/more_classes_scenarios/cs_start_locations.json +++ /dev/null @@ -1,48 +0,0 @@ -[ - { - "type": "start_location", - "id": "sloc_fema_entrance", - "name": "FEMA camp (entrance)", - "terrain": [ "fema_entrance" ] - }, - { - "type": "start_location", - "id": "sloc_fema", - "name": "FEMA camp", - "terrain": [ "fema" ] - }, - { - "type": "start_location", - "id": "sloc_mansion_entrance", - "name": "Mansion Entrance", - "terrain": [ { "om_terrain": "mansion_e", "om_terrain_match_type": "CONTAINS" } ] - }, - { - "type": "start_location", - "id": "sloc_mansion", - "name": "Mansion", - "terrain": [ - { "om_terrain": "mansion_c", "om_terrain_match_type": "CONTAINS" }, - { "om_terrain": "mansion_t", "om_terrain_match_type": "CONTAINS" }, - { "om_terrain": "mansion_+", "om_terrain_match_type": "CONTAINS" } - ] - }, - { - "type": "start_location", - "id": "sloc_gas_station", - "name": "Gas Station", - "terrain": [ "s_gas", "s_gas_1", "garage_gas_1", "garage_gas_2", "garage_gas_3" ] - }, - { - "type": "start_location", - "id": "sloc_electronics_store", - "name": "Electronics Store", - "terrain": [ "s_electronics", "s_electronics_1" ] - }, - { - "type": "start_location", - "id": "sloc_clothes_store", - "name": "Clothing Store", - "terrain": [ "s_clothes", "s_clothes_1", "s_clothes_2", "s_clothes_3", "s_clothes_4", "s_clothes_5", "s_clothes_6" ] - } -] diff --git a/data/mods/more_classes_scenarios/modinfo.json b/data/mods/more_classes_scenarios/modinfo.json deleted file mode 100644 index 8fbc19a5f865b..0000000000000 --- a/data/mods/more_classes_scenarios/modinfo.json +++ /dev/null @@ -1,13 +0,0 @@ -[ - { - "type": "MOD_INFO", - "ident": "more_classes_scenarios", - "name": "Classes and Scenarios Mod", - "authors": [ "Noctifer-de-Mortem" ], - "maintainers": [ "Noctifer-de-Mortem" ], - "description": "Adds new classes and scenarios while rebalancing some existing ones.", - "category": "rebalance", - "dependencies": [ "dda" ], - "obsolete": true - } -] diff --git a/data/raw/keybindings.json b/data/raw/keybindings.json index 3dbe89e52bf99..1bee620be70d1 100644 --- a/data/raw/keybindings.json +++ b/data/raw/keybindings.json @@ -940,6 +940,12 @@ "name": "Switch Firing Mode", "bindings": [ { "input_method": "keyboard", "key": "s" } ] }, + { + "type": "keybinding", + "id": "TOGGLE_TURRET_LINES", + "name": "Toggle turret lines", + "bindings": [ { "input_method": "keyboard", "key": "t" } ] + }, { "type": "keybinding", "id": "SELECT", diff --git a/doc/JSON_FLAGS.md b/doc/JSON_FLAGS.md index 780cf2c2c8a7b..917d50cca4f85 100644 --- a/doc/JSON_FLAGS.md +++ b/doc/JSON_FLAGS.md @@ -652,6 +652,14 @@ List of known flags, used in both `terrain.json` and `furniture.json`. - ```ANESTHESIA``` ... Item is considered anesthesia for the purpose of installing or uninstalling bionics. - ```BIONIC_NPC_USABLE``` ... Safe CBMs that NPCs can use without extensive NPC rewrites to utilize toggle CBMs. +- ```BIONIC_TOGGLED``` ... This bionic only has a function when activated, instead of causing its effect every turn. +- ```BIONIC_POWER_SOURCE``` ... This bionic is a source of bionic power. +- ```BIONIC_SHOCKPROOF``` ... This bionic can't be incapacitated by electrical attacks. +- ```BIONIC_FAULTY``` ... This bionic is a "faulty" bionic. +- ```BIONIC_WEAPON``` ... This bionic is a weapon bionic and activating it will create (or destroy) bionic's fake_item in user's hands. Prevents all other activation effects. +- ```BIONIC_ARMOR_INTERFACE``` ... This bionic can provide power to powered armor. +- ```BIONIC_SLEEP_FRIENDLY``` ... This bionic won't provide a warning if the player tries to sleep while it's active. +- ```BIONIC_GUN``` ... This bionic is a gun bionic and activating it will fire it. Prevents all other activation effects. - ```CORPSE``` ... Flag used to spawn various human corpses during the mapgen. - ```DANGEROUS``` ... NPCs will not accept this item. Explosion iuse actor implies this flag. Implies "NPC_THROW_NOW". - ```DETERGENT``` ... This item can be used as a detergent in a washing machine. diff --git a/doc/JSON_INFO.md b/doc/JSON_INFO.md index 1b6e214cb7df2..7320a97e1e3e7 100644 --- a/doc/JSON_INFO.md +++ b/doc/JSON_INFO.md @@ -469,14 +469,13 @@ This section describes each json file and their contents. Each json has their ow |--- |--- | id | Unique ID. Must be one continuous word, use underscores if necessary. | name | In-game name displayed. -| active | Whether the bionic is active or passive. (default: `passive`) -| power_source | Whether the bionic provides power. (default: `false`) -| faulty | Whether it is a faulty type. (default: `false`) -| act_cost | How many kJ it costs to activate the bionic. Strings can be used "1 kJ"/"1000 J"/"1000000 mJ" (default: `0`) -| deact_cost | How many kJ it costs to deactivate the bionic. Strings can be used "1 kJ"/"1000 J"/"1000000 mJ" (default: `0`) -| react_cost | How many kJ it costs over time to keep this bionic active, does nothing without a non-zero "time". Strings can be used "1 kJ"/"1000 J"/"1000000 mJ" (default: `0`) -| time | How long, when activated, between drawing cost. If 0, it draws power once. (default: `0`) | description | In-game description. +| act_cost | (_optional_) How many kJ it costs to activate the bionic. Strings can be used "1 kJ"/"1000 J"/"1000000 mJ" (default: `0`) +| deact_cost | (_optional_) How many kJ it costs to deactivate the bionic. Strings can be used "1 kJ"/"1000 J"/"1000000 mJ" (default: `0`) +| react_cost | (_optional_) How many kJ it costs over time to keep this bionic active, does nothing without a non-zero "time". Strings can be used "1 kJ"/"1000 J"/"1000000 mJ" (default: `0`) +| time | (_optional_) How long, when activated, between drawing cost. If 0, it draws power once. (default: `0`) +| upgraded_bionic | (_optional_) Bionic that can be upgraded by installing this one. +| available_upgrades | (_optional_) Upgrades available for this bionic, i.e. the list of bionics having this one referenced by `upgraded_bionic`. | encumbrance | (_optional_) A list of body parts and how much this bionic encumber them. | weight_capacity_bonus | (_optional_) Bonus to weight carrying capacity in grams, can be negative. Strings can be used - "5000 g" or "5 kg" (default: `0`) | weight_capacity_modifier | (_optional_) Factor modifying base weight carrying capacity. (default: `1`) @@ -506,8 +505,6 @@ This section describes each json file and their contents. Each json has their ow "id" : "bio_batteries", "name" : "Battery System", "active" : false, - "power_source" : false, - "faulty" : false, "act_cost" : 0, "time" : 1, "fuel_efficiency": 1, diff --git a/src/activity_actor.cpp b/src/activity_actor.cpp index 1a5307def007d..57c384940fe26 100644 --- a/src/activity_actor.cpp +++ b/src/activity_actor.cpp @@ -608,6 +608,11 @@ void consume_activity_actor::start( player_activity &act, Character & ) void consume_activity_actor::finish( player_activity &act, Character & ) { + if( !loc ) { + debugmsg( "Consume actor lost item_location target" ); + act.set_to_null(); + return; + } if( loc.where() == item_location::type::character ) { g->u.consume( loc ); diff --git a/src/activity_item_handling.cpp b/src/activity_item_handling.cpp index 071bdfc9d7578..e5f6a1eff9170 100644 --- a/src/activity_item_handling.cpp +++ b/src/activity_item_handling.cpp @@ -984,22 +984,18 @@ static bool are_requirements_nearby( const std::vector &loot_spots, inventory temp_inv; units::volume volume_allowed = p.volume_capacity() - p.volume_carried(); units::mass weight_allowed = p.weight_capacity() - p.weight_carried(); - const bool check_weight = p.backlog.front().id() == ACT_MULTIPLE_FARM || - activity_to_restore == ACT_MULTIPLE_FARM || - p.backlog.front().id() == ACT_MULTIPLE_CHOP_PLANKS || - activity_to_restore == ACT_MULTIPLE_CHOP_PLANKS || - p.backlog.front().id() == ACT_MULTIPLE_BUTCHER || - activity_to_restore == ACT_MULTIPLE_BUTCHER || - p.backlog.front().id() == ACT_VEHICLE_DECONSTRUCTION || - activity_to_restore == ACT_VEHICLE_DECONSTRUCTION || - p.backlog.front().id() == ACT_VEHICLE_REPAIR || - activity_to_restore == ACT_VEHICLE_REPAIR || - p.backlog.front().id() == ACT_MULTIPLE_CHOP_TREES || - activity_to_restore == ACT_MULTIPLE_CHOP_TREES || - p.backlog.front().id() == ACT_MULTIPLE_FISH || - activity_to_restore == ACT_MULTIPLE_FISH || - p.backlog.front().id() == ACT_MULTIPLE_MINE || - activity_to_restore == ACT_MULTIPLE_MINE; + static const auto check_weight_if = []( const activity_id & id ) { + return id == ACT_MULTIPLE_FARM || + id == ACT_MULTIPLE_CHOP_PLANKS || + id == ACT_MULTIPLE_BUTCHER || + id == ACT_VEHICLE_DECONSTRUCTION || + id == ACT_VEHICLE_REPAIR || + id == ACT_MULTIPLE_CHOP_TREES || + id == ACT_MULTIPLE_FISH || + id == ACT_MULTIPLE_MINE; + }; + const bool check_weight = check_weight_if( activity_to_restore ) || ( !p.backlog.empty() && + check_weight_if( p.backlog.front().id() ) ); bool found_welder = false; for( item *elem : p.inv_dump() ) { if( elem->has_quality( qual_WELD ) ) { diff --git a/src/bionics.cpp b/src/bionics.cpp index f0c56bfcd83d2..8b83eb70d4288 100644 --- a/src/bionics.cpp +++ b/src/bionics.cpp @@ -36,6 +36,7 @@ #include "explosion.h" #include "field_type.h" #include "game.h" +#include "generic_factory.h" #include "handle_liquid.h" #include "input.h" #include "int_id.h" @@ -193,32 +194,28 @@ static const std::string flag_SAFE_FUEL_OFF( "SAFE_FUEL_OFF" ); static const std::string flag_SEALED( "SEALED" ); static const std::string flag_SEMITANGIBLE( "SEMITANGIBLE" ); +static const std::string flag_BIO_GUN( "BIONIC_GUN" ); +static const std::string flag_BIO_WEAPON( "BIONIC_WEAPON" ); +static const std::string flag_BIO_TOGGLED( "BIONIC_TOGGLED" ); + namespace { -std::map bionics; +generic_factory bionic_factory( "bionic" ); std::vector faulty_bionics; } //namespace /** @relates string_id */ template<> -bool string_id::is_valid() const +const bionic_data &string_id::obj() const { - return bionics.count( *this ) > 0; + return bionic_factory.obj( *this ); } /** @relates string_id */ template<> -const bionic_data &string_id::obj() const +bool string_id::is_valid() const { - const auto it = bionics.find( *this ); - if( it != bionics.end() ) { - return it->second; - } - - debugmsg( "bad bionic id %s", c_str() ); - - static const bionic_data null_value; - return null_value; + return bionic_factory.is_valid( *this ); } std::vector get_occupied_bodyparts( const bionic_id &bid ) @@ -232,11 +229,179 @@ std::vector get_occupied_bodyparts( const bionic_id &bid ) return parts; } +bool bionic_data::has_flag( const std::string &flag ) const +{ + return flags.count( flag ) > 0; +} + bool bionic_data::is_included( const bionic_id &id ) const { return std::find( included_bionics.begin(), included_bionics.end(), id ) != included_bionics.end(); } +void bionic_data::load( const JsonObject &jsobj, const std::string ) +{ + + mandatory( jsobj, was_loaded, "id", id ); + mandatory( jsobj, was_loaded, "name", name ); + mandatory( jsobj, was_loaded, "description", description ); + + // uses assign because optional doesn't handle loading units as strings + assign( jsobj, "react_cost", power_over_time, false, 0_kJ ); + assign( jsobj, "capacity", capacity, false, 0_kJ ); + assign( jsobj, "weight_capacity_bonus", weight_capacity_bonus, false, 0_gram ); + assign( jsobj, "act_cost", power_activate, false, 0_kJ ); + assign( jsobj, "deact_cost", power_deactivate, false, 0_kJ ); + + optional( jsobj, was_loaded, "time", charge_time, 0 ); + + optional( jsobj, was_loaded, "flags", flags ); + + optional( jsobj, was_loaded, "fuel_efficiency", fuel_efficiency, 0 ); + optional( jsobj, was_loaded, "passive_fuel_efficiency", passive_fuel_efficiency, 0 ); + + optional( jsobj, was_loaded, "fake_item", fake_item, "" ); + + optional( jsobj, was_loaded, "enchantments", enchantments ); + + optional( jsobj, was_loaded, "weight_capacity_modifier", weight_capacity_modifier, 1.0f ); + optional( jsobj, was_loaded, "exothermic_power_gen", exothermic_power_gen ); + optional( jsobj, was_loaded, "power_gen_emission", power_gen_emission ); + optional( jsobj, was_loaded, "coverage_power_gen_penalty", coverage_power_gen_penalty ); + optional( jsobj, was_loaded, "is_remote_fueled", is_remote_fueled ); + + optional( jsobj, was_loaded, "learned_spells", learned_spells ); + optional( jsobj, was_loaded, "canceled_mutations", canceled_mutations ); + optional( jsobj, was_loaded, "included_bionics", included_bionics ); + optional( jsobj, was_loaded, "included", included ); + optional( jsobj, was_loaded, "upgraded_bionic", upgraded_bionic ); + optional( jsobj, was_loaded, "fuel_options", fuel_opts ); + optional( jsobj, was_loaded, "fuel_capacity", fuel_capacity ); + + optional( jsobj, was_loaded, "available_upgrades", available_upgrades ); + + if( jsobj.has_array( "stat_bonus" ) ) { + // clear data first so that copy-from can override it + stat_bonus.clear(); + for( JsonArray ja : jsobj.get_array( "stat_bonus" ) ) { + stat_bonus.emplace( io::string_to_enum( ja.get_string( 0 ) ), + ja.get_int( 1 ) ); + } + } + if( jsobj.has_array( "encumbrance" ) ) { + // clear data first so that copy-from can override it + encumbrance.clear(); + for( JsonArray ja : jsobj.get_array( "encumbrance" ) ) { + encumbrance.emplace( get_body_part_token( ja.get_string( 0 ) ), + ja.get_int( 1 ) ); + } + } + if( jsobj.has_array( "occupied_bodyparts" ) ) { + // clear data first so that copy-from can override it + occupied_bodyparts.clear(); + for( JsonArray ja : jsobj.get_array( "occupied_bodyparts" ) ) { + occupied_bodyparts.emplace( get_body_part_token( ja.get_string( 0 ) ), + ja.get_int( 1 ) ); + } + } + if( jsobj.has_array( "env_protec" ) ) { + // clear data first so that copy-from can override it + env_protec.clear(); + for( JsonArray ja : jsobj.get_array( "env_protec" ) ) { + env_protec.emplace( bodypart_str_id( ja.get_string( 0 ) ), ja.get_int( 1 ) ); + } + } + if( jsobj.has_array( "bash_protec" ) ) { + // clear data first so that copy-from can override it + bash_protec.clear(); + for( JsonArray ja : jsobj.get_array( "bash_protec" ) ) { + bash_protec.emplace( bodypart_str_id( ja.get_string( 0 ) ), + ja.get_int( 1 ) ); + } + } + if( jsobj.has_array( "cut_protec" ) ) { + // clear data first so that copy-from can override it + cut_protec.clear(); + for( JsonArray ja : jsobj.get_array( "cut_protec" ) ) { + cut_protec.emplace( bodypart_str_id( ja.get_string( 0 ) ), + ja.get_int( 1 ) ); + } + } + if( jsobj.has_array( "bullet_protec" ) ) { + // clear data first so that copy-from can override it + bullet_protec.clear(); + for( JsonArray ja : jsobj.get_array( "bullet_protec" ) ) { + bullet_protec.emplace( bodypart_str_id( ja.get_string( 0 ) ), + ja.get_int( 1 ) ); + } + } + + activated = has_flag( flag_BIO_TOGGLED ) || + power_activate > 0_kJ || + charge_time > 0; + + if( has_flag( "BIONIC_FAULTY" ) ) { + faulty_bionics.push_back( id ); + } +} + +void bionic_data::load_bionic( const JsonObject &jo, const std::string &src ) +{ + bionic_factory.load( jo, src ); +} + +const std::vector &bionic_data::get_all() +{ + return bionic_factory.get_all(); +} + +void bionic_data::check_bionic_consistency() +{ + for( const bionic_data &bio : get_all() ) { + + if( bio.has_flag( flag_BIO_GUN ) && bio.has_flag( flag_BIO_WEAPON ) ) { + debugmsg( "Bionic %s specified as both gun and weapon bionic", bio.id.c_str() ); + } + if( !bio.fake_item.empty() && + !item::type_is_defined( bio.fake_item ) ) { + debugmsg( "Bionic %s has unknown fake_item %s", + bio.id.c_str(), bio.fake_item.c_str() ); + } + for( const trait_id &mid : bio.canceled_mutations ) { + if( !mid.is_valid() ) { + debugmsg( "Bionic %s cancels undefined mutation %s", + bio.id.c_str(), mid.c_str() ); + } + } + for( const enchantment_id &eid : bio.id->enchantments ) { + if( !eid.is_valid() ) { + debugmsg( "Bionic %s uses undefined enchantment %s", bio.id.c_str(), eid.c_str() ); + } + } + for( const bionic_id &bid : bio.included_bionics ) { + if( !bid.is_valid() ) { + debugmsg( "Bionic %s includes undefined bionic %s", + bio.id.c_str(), bid.c_str() ); + } + if( !bid->occupied_bodyparts.empty() ) { + debugmsg( "Bionic %s (included by %s) consumes slots, those should be part of the containing bionic instead.", + bid.c_str(), bio.id.c_str() ); + } + } + if( bio.upgraded_bionic ) { + if( bio.upgraded_bionic == bio.id ) { + debugmsg( "Bionic %s is upgraded with itself", bio.id.c_str() ); + } else if( !bio.upgraded_bionic.is_valid() ) { + debugmsg( "Bionic %s upgrades undefined bionic %s", + bio.id.c_str(), bio.upgraded_bionic.c_str() ); + } + } + if( !item::type_is_defined( bio.id.c_str() ) && !bio.included ) { + debugmsg( "Bionic %s has no defined item version", bio.id.c_str() ); + } + } +} + bionic_data::bionic_data() : name( no_translation( "bad bionic" ) ), description( no_translation( "This bionic was not set up correctly, this is a bug" ) ) { @@ -288,7 +453,7 @@ void npc::check_or_use_weapon_cbm( const bionic_id &cbm_id ) } bionic &bio = ( *my_bionics )[index]; - if( bio.info().gun_bionic ) { + if( bio.info().has_flag( flag_BIO_GUN ) ) { const item cbm_weapon = item( bio.info().fake_item ); bool not_allowed = !rules.has_flag( ally_rule::use_guns ) || ( rules.has_flag( ally_rule::use_silent ) && !cbm_weapon.is_silent() ); @@ -309,7 +474,7 @@ void npc::check_or_use_weapon_cbm( const bionic_id &cbm_id ) weapon = cbm_weapon; cbm_weapon_index = index; } - } else if( bio.info().weapon_bionic && !weapon.has_flag( flag_NO_UNWIELD ) && + } else if( bio.info().has_flag( flag_BIO_WEAPON ) && !weapon.has_flag( flag_NO_UNWIELD ) && free_power > bio.info().power_activate ) { if( is_armed() ) { stow_item( weapon ); @@ -370,9 +535,9 @@ bool Character::activate_bionic( int b, bool eff_only ) // We can actually activate now, do activation-y things mod_power_level( -bio.info().power_activate ); - if( bio.info().toggled || bio.info().charge_time > 0 ) { - bio.powered = true; - } + + bio.powered = bio.info().has_flag( flag_BIO_TOGGLED ) || bio.info().charge_time > 0; + if( bio.info().charge_time > 0 ) { bio.charge_timer = bio.info().charge_time; } @@ -396,13 +561,13 @@ bool Character::activate_bionic( int b, bool eff_only ) const w_point weatherPoint = *g->weather.weather_precise; // On activation effects go here - if( bio.info().gun_bionic ) { + if( bio.info().has_flag( flag_BIO_GUN ) ) { add_msg_activate(); refund_power(); // Power usage calculated later, in avatar_action::fire g->refresh_all(); avatar_action::fire_ranged_bionic( g->u, g->m, item( bio.info().fake_item ), bio.info().power_activate ); - } else if( bio.info().weapon_bionic ) { + } else if( bio.info().has_flag( flag_BIO_WEAPON ) ) { if( weapon.has_flag( flag_NO_UNWIELD ) ) { add_msg_if_player( m_info, _( "Deactivate your %s first!" ), weapon.tname() ); refund_power(); @@ -933,7 +1098,7 @@ bool Character::deactivate_bionic( int b, bool eff_only ) // It's already off! return false; } - if( !bio.info().toggled ) { + if( !bio.info().has_flag( flag_BIO_TOGGLED ) ) { // It's a fire-and-forget bionic, we can't turn it off but have to wait for //it to run out of charge add_msg_if_player( m_info, _( "You can't deactivate your %s manually!" ), @@ -953,7 +1118,7 @@ bool Character::deactivate_bionic( int b, bool eff_only ) } // Deactivation effects go here - if( bio.info().weapon_bionic ) { + if( bio.info().has_flag( flag_BIO_WEAPON ) ) { if( weapon.typeId() == bio.info().fake_item ) { add_msg_if_player( _( "You withdraw your %s." ), weapon.tname() ); if( g->u.sees( pos() ) ) { @@ -1347,7 +1512,7 @@ static bool attempt_recharge( Character &p, bionic &bio, units::energy &amount, bool recharged = false; if( power_cost > 0_kJ ) { - if( info.armor_interface ) { + if( info.has_flag( "BIONIC_ARMOR_INTERFACE" ) ) { // Don't spend any power on armor interfacing unless we're wearing active powered armor. bool powered_armor = std::any_of( p.worn.begin(), p.worn.end(), []( const item & w ) { @@ -1410,7 +1575,7 @@ void Character::process_bionic( int b ) bio.charge_timer -= discharge_rate; } else { if( bio.info().charge_time > 0 ) { - if( bio.info().power_source ) { + if( bio.info().has_flag( "BIONIC_POWER_SOURCE" ) ) { // Convert fuel to bionic power burn_fuel( b ); // Reset timer @@ -1907,14 +2072,14 @@ bool Character::uninstall_bionic( const bionic_id &b_id, player &installer, bool // Surgery is imminent, retract claws or blade if active for( size_t i = 0; i < installer.my_bionics->size(); i++ ) { const bionic &bio = ( *installer.my_bionics )[ i ]; - if( bio.powered && bio.info().weapon_bionic ) { + if( bio.powered && bio.info().has_flag( flag_BIO_WEAPON ) ) { installer.deactivate_bionic( i ); } } int success = chance_of_success - rng( 1, 100 ); if( installer.has_trait( trait_DEBUG_BIONICS ) ) { - perform_uninstall( b_id, difficulty, success, bionics[b_id].capacity, pl_skill ); + perform_uninstall( b_id, difficulty, success, b_id->capacity, pl_skill ); return true; } assign_activity( ACT_OPERATION, to_moves( difficulty * 20_minutes ) ); @@ -2542,182 +2707,9 @@ void Character::clear_bionics() void reset_bionics() { - bionics.clear(); faulty_bionics.clear(); } -static bool get_bool_or_flag( const JsonObject &jsobj, const std::string &name, - const std::string &flag, - const bool fallback, const std::string &flags_node = "flags" ) -{ - bool value = fallback; - if( jsobj.has_bool( name ) ) { - value = jsobj.get_bool( name, fallback ); - debugmsg( "JsonObject contains legacy node `" + name + "`. Consider replacing it with `" + - flag + "` flag in `" + flags_node + "` node." ); - } else { - const std::set flags = jsobj.get_tags( flags_node ); - value = flags.count( flag ); - } - return value; -} - -void load_bionic( const JsonObject &jsobj ) -{ - - bionic_data new_bionic; - - const bionic_id id( jsobj.get_string( "id" ) ); - jsobj.read( "name", new_bionic.name ); - jsobj.read( "description", new_bionic.description ); - assign( jsobj, "act_cost", new_bionic.power_activate, false, 0_kJ ); - - new_bionic.toggled = get_bool_or_flag( jsobj, "toggled", "BIONIC_TOGGLED", false ); - // Requires ability to toggle - assign( jsobj, "deact_cost", new_bionic.power_deactivate, false, 0_kJ ); - - new_bionic.charge_time = jsobj.get_int( "time", 0 ); - // Requires a non-zero time - assign( jsobj, "react_cost", new_bionic.power_over_time, false, 0_kJ ); - - assign( jsobj, "capacity", new_bionic.capacity, false, 0_kJ ); - - new_bionic.npc_usable = get_bool_or_flag( jsobj, "npc_usable", "BIONIC_NPC_USABLE", false ); - new_bionic.faulty = get_bool_or_flag( jsobj, "faulty", "BIONIC_FAULTY", false ); - new_bionic.power_source = get_bool_or_flag( jsobj, "power_source", "BIONIC_POWER_SOURCE", false ); - - new_bionic.gun_bionic = get_bool_or_flag( jsobj, "gun_bionic", "BIONIC_GUN", false ); - new_bionic.weapon_bionic = get_bool_or_flag( jsobj, "weapon_bionic", "BIONIC_WEAPON", false ); - new_bionic.armor_interface = get_bool_or_flag( jsobj, "armor_interface", "BIONIC_ARMOR_INTERFACE", - false ); - new_bionic.sleep_friendly = get_bool_or_flag( jsobj, "sleep_friendly", "BIONIC_SLEEP_FRIENDLY", - false ); - new_bionic.shockproof = get_bool_or_flag( jsobj, "shockproof", "BIONIC_SHOCKPROOF", false ); - - new_bionic.fuel_efficiency = jsobj.get_float( "fuel_efficiency", 0 ); - new_bionic.passive_fuel_efficiency = jsobj.get_float( "passive_fuel_efficiency", 0 ); - - if( new_bionic.gun_bionic && new_bionic.weapon_bionic ) { - debugmsg( "Bionic %s specified as both gun and weapon bionic", id.c_str() ); - } - - new_bionic.fake_item = jsobj.get_string( "fake_item", "" ); - - new_bionic.weight_capacity_modifier = jsobj.get_float( "weight_capacity_modifier", 1.0 ); - - assign( jsobj, "enchantments", new_bionic.enchantments ); - - assign( jsobj, "weight_capacity_bonus", new_bionic.weight_capacity_bonus, false, 0_gram ); - assign( jsobj, "exothermic_power_gen", new_bionic.exothermic_power_gen ); - assign( jsobj, "power_gen_emission", new_bionic.power_gen_emission ); - assign( jsobj, "coverage_power_gen_penalty", new_bionic.coverage_power_gen_penalty ); - assign( jsobj, "is_remote_fueled", new_bionic.is_remote_fueled ); - - assign( jsobj, "learned_spells", new_bionic.learned_spells ); - jsobj.read( "canceled_mutations", new_bionic.canceled_mutations ); - jsobj.read( "included_bionics", new_bionic.included_bionics ); - jsobj.read( "included", new_bionic.included ); - jsobj.read( "upgraded_bionic", new_bionic.upgraded_bionic ); - jsobj.read( "fuel_options", new_bionic.fuel_opts ); - jsobj.read( "fuel_capacity", new_bionic.fuel_capacity ); - - for( JsonArray ja : jsobj.get_array( "stat_bonus" ) ) { - new_bionic.stat_bonus.emplace( io::string_to_enum( ja.get_string( 0 ) ), - ja.get_int( 1 ) ); - } - - for( JsonArray ja : jsobj.get_array( "encumbrance" ) ) { - new_bionic.encumbrance.emplace( get_body_part_token( ja.get_string( 0 ) ), - ja.get_int( 1 ) ); - } - - for( JsonArray ja : jsobj.get_array( "occupied_bodyparts" ) ) { - new_bionic.occupied_bodyparts.emplace( get_body_part_token( ja.get_string( 0 ) ), - ja.get_int( 1 ) ); - } - - for( JsonArray ja : jsobj.get_array( "env_protec" ) ) { - new_bionic.env_protec.emplace( bodypart_str_id( ja.get_string( 0 ) ), ja.get_int( 1 ) ); - } - - for( JsonArray ja : jsobj.get_array( "bash_protec" ) ) { - new_bionic.bash_protec.emplace( bodypart_str_id( ja.get_string( 0 ) ), - ja.get_int( 1 ) ); - } - for( JsonArray ja : jsobj.get_array( "cut_protec" ) ) { - new_bionic.cut_protec.emplace( bodypart_str_id( ja.get_string( 0 ) ), - ja.get_int( 1 ) ); - } - for( JsonArray ja : jsobj.get_array( "bullet_protec" ) ) { - new_bionic.bullet_protec.emplace( bodypart_str_id( ja.get_string( 0 ) ), - ja.get_int( 1 ) ); - } - - new_bionic.activated = new_bionic.toggled || - new_bionic.power_activate > 0_kJ || - new_bionic.charge_time > 0; - - const auto result = bionics.insert( std::make_pair( id, new_bionic ) ); - - if( !result.second ) { - debugmsg( "duplicate bionic id" ); - } else if( new_bionic.faulty ) { - faulty_bionics.push_back( id ); - } -} - -void check_bionics() -{ - for( const std::pair &bio : bionics ) { - if( !bio.second.fake_item.empty() && - !item::type_is_defined( bio.second.fake_item ) ) { - debugmsg( "Bionic %s has unknown fake_item %s", - bio.first.c_str(), bio.second.fake_item.c_str() ); - } - for( const auto &mid : bio.second.canceled_mutations ) { - if( !mid.is_valid() ) { - debugmsg( "Bionic %s cancels undefined mutation %s", - bio.first.c_str(), mid.c_str() ); - } - } - for( const enchantment_id &eid : bio.first->enchantments ) { - if( !eid.is_valid() ) { - debugmsg( "Bionic %s uses undefined enchantment %s", bio.first.c_str(), eid.c_str() ); - } - } - for( const bionic_id &bid : bio.second.included_bionics ) { - if( !bid.is_valid() ) { - debugmsg( "Bionic %s includes undefined bionic %s", - bio.first.c_str(), bid.c_str() ); - } - if( !bid->occupied_bodyparts.empty() ) { - debugmsg( "Bionic %s (included by %s) consumes slots, those should be part of the containing bionic instead.", - bid.c_str(), bio.first.c_str() ); - } - } - if( bio.second.upgraded_bionic ) { - if( bio.second.upgraded_bionic == bio.first ) { - debugmsg( "Bionic %s is upgraded with itself", bio.first.c_str() ); - } else if( !bio.second.upgraded_bionic.is_valid() ) { - debugmsg( "Bionic %s upgrades undefined bionic %s", - bio.first.c_str(), bio.second.upgraded_bionic.c_str() ); - } - } - if( !item::type_is_defined( bio.first.c_str() ) && !bio.second.included ) { - debugmsg( "Bionic %s has no defined item version", bio.first.c_str() ); - } - } -} - -void finalize_bionics() -{ - for( const std::pair &bio : bionics ) { - if( bio.second.upgraded_bionic ) { - bionics[ bio.second.upgraded_bionic ].available_upgrades.insert( bio.first ); - } - } -} - void bionic::set_flag( const std::string &flag ) { bionic_tags.insert( flag ); diff --git a/src/bionics.h b/src/bionics.h index 11a70d765940f..5ef1a76fc7ebd 100644 --- a/src/bionics.h +++ b/src/bionics.h @@ -28,6 +28,8 @@ using itype_id = std::string; struct bionic_data { bionic_data(); + bionic_id id; + translation name; translation description; /** Power cost on activation */ @@ -41,46 +43,15 @@ struct bionic_data { /** Power bank size **/ units::energy capacity = 0_kJ; - /** True if a bionic can be used by an NPC and installed on them */ - bool npc_usable = false; - /** True if a bionic is a "faulty" bionic */ - bool faulty = false; - bool power_source = false; + /** Is true if a bionic is an active instead of a passive bionic */ bool activated = false; - /** If true, then the bionic only has a function when activated, else it causes - * it's effect every turn. - */ - bool toggled = false; - /** - * If true, this bionic is a gun bionic and activating it will fire it. - * Prevents all other activation effects. - */ - bool gun_bionic = false; - /** - * If true, this bionic is a weapon bionic and activating it will - * create (or destroy) bionic's fake_item in user's hands. - * Prevents all other activation effects. - */ - bool weapon_bionic = false; - /** - * If true, this bionic can provide power to powered armor. - */ - bool armor_interface = false; - /** - * If true, this bionic won't provide a warning if the player tries to sleep while it's active. - */ - bool sleep_friendly = false; - /** - * If true, this bionic can't be incapacitated by electrical attacks. - */ - bool shockproof = false; /** * If true, this bionic is included with another. */ bool included = false; /**Factor modifiying weight capacity*/ - float weight_capacity_modifier = 0.0f; + float weight_capacity_modifier = 1.0f; /**Bonus to weight capacity*/ units::mass weight_capacity_bonus = 0_gram; /**Map of stats and their corresponding bonuses passively granted by a bionic*/ @@ -155,7 +126,16 @@ struct bionic_data { */ std::set available_upgrades; + cata::flat_set flags; + bool has_flag( const std::string &flag ) const; + bool is_included( const bionic_id &id ) const; + + bool was_loaded = false; + void load( const JsonObject &obj, std::string ); + static void load_bionic( const JsonObject &jo, const std::string &src ); + static const std::vector &get_all(); + static void check_bionic_consistency(); }; struct bionic { @@ -210,11 +190,8 @@ class bionic_collection : public std::vector /**List of bodyparts occupied by a bionic*/ std::vector get_occupied_bodyparts( const bionic_id &bid ); -void check_bionics(); -void finalize_bionics(); void reset_bionics(); -// load a bionic from JSON -void load_bionic( const JsonObject &jsobj ); + char get_free_invlet( player &p ); std::string list_occupied_bps( const bionic_id &bio_id, const std::string &intro, bool each_bp_on_new_line = true ); diff --git a/src/bionics_ui.cpp b/src/bionics_ui.cpp index 0e0b495544e67..b9af85639eff4 100644 --- a/src/bionics_ui.cpp +++ b/src/bionics_ui.cpp @@ -186,7 +186,7 @@ static std::string build_bionic_poweronly_string( const bionic &bio ) : string_format( _( "%s/%d turns" ), units::display( bio_data.power_over_time ), bio_data.charge_time ) ); } - if( bio_data.toggled ) { + if( bio_data.has_flag( "BIONIC_TOGGLED" ) ) { properties.push_back( bio.powered ? _( "ON" ) : _( "OFF" ) ); } if( bio.incapacitated_time > 0_turns ) { @@ -364,23 +364,24 @@ static void draw_connectors( const catacurses::window &win, const int start_y, c static nc_color get_bionic_text_color( const bionic &bio, const bool isHighlightedBionic ) { nc_color type = c_white; + bool is_power_source = bio.id->has_flag( "BIONIC_POWER_SOURCE" ); if( bio.id->activated ) { if( isHighlightedBionic ) { - if( bio.powered && !bio.id->power_source ) { + if( bio.powered && !is_power_source ) { type = h_red; - } else if( bio.id->power_source && !bio.powered ) { + } else if( is_power_source && !bio.powered ) { type = h_light_cyan; - } else if( bio.id->power_source && bio.powered ) { + } else if( is_power_source && bio.powered ) { type = h_light_green; } else { type = h_light_red; } } else { - if( bio.powered && !bio.id->power_source ) { + if( bio.powered && !is_power_source ) { type = c_red; - } else if( bio.id->power_source && !bio.powered ) { + } else if( is_power_source && !bio.powered ) { type = c_light_cyan; - } else if( bio.id->power_source && bio.powered ) { + } else if( is_power_source && bio.powered ) { type = c_light_green; } else { type = c_light_red; @@ -388,13 +389,13 @@ static nc_color get_bionic_text_color( const bionic &bio, const bool isHighlight } } else { if( isHighlightedBionic ) { - if( bio.id->power_source ) { + if( is_power_source ) { type = h_light_cyan; } else { type = h_cyan; } } else { - if( bio.id->power_source ) { + if( is_power_source ) { type = c_light_cyan; } else { type = c_cyan; @@ -751,7 +752,7 @@ void player::power_bionics() } else { activate_bionic( b ); // Clear the menu if we are firing a bionic gun - if( tmp->info().gun_bionic || tmp->ammo_count > 0 ) { + if( tmp->info().has_flag( "BIONIC_GUN" ) || tmp->ammo_count > 0 ) { break; } } diff --git a/src/character.cpp b/src/character.cpp index 4600574253dde..66a416503920e 100644 --- a/src/character.cpp +++ b/src/character.cpp @@ -4407,7 +4407,7 @@ bool Character::is_deaf() const && in_sleep_state() ); } -void Character::on_damage_of_type( int adjusted_damage, damage_type type, body_part bp ) +void Character::on_damage_of_type( int adjusted_damage, damage_type type, const bodypart_id &bp ) { // Electrical damage has a chance to temporarily incapacitate bionics in the damaged body_part. if( type == DT_ELECTRIC ) { @@ -4418,12 +4418,12 @@ void Character::on_damage_of_type( int adjusted_damage, damage_type type, body_p continue; } const auto &info = i.info(); - if( info.shockproof || info.faulty ) { + if( info.has_flag( "BIONIC_SHOCKPROOF" ) || info.has_flag( "BIONIC_FAULTY" ) ) { continue; } const auto &bodyparts = info.occupied_bodyparts; - if( bodyparts.find( bp ) != bodyparts.end() ) { - const int bp_hp = hp_cur[bp_to_hp( bp )]; + if( bodyparts.find( bp->token ) != bodyparts.end() ) { + const int bp_hp = hp_cur[bp_to_hp( bp->token )]; // The chance to incapacitate is as high as 50% if the attack deals damage equal to one third of the body part's current health. if( x_in_y( adjusted_damage * 3, bp_hp ) && one_in( 2 ) ) { if( i.incapacitated_time == 0_turns ) { @@ -5299,9 +5299,9 @@ void Character::update_bodytemp() const int h_radiation = get_heat_radiation( pos(), false ); // Current temperature and converging temperature calculations - for( const body_part bp : all_body_parts ) { + for( const bodypart_id &bp : get_all_body_parts() ) { // Skip eyes - if( bp == bp_eyes ) { + if( bp == bodypart_id( "eyes" ) || bp == bodypart_id( "num_bp" ) ) { continue; } @@ -5312,7 +5312,7 @@ void Character::update_bodytemp() // Represents the fact that the body generates heat when it is cold. // TODO: : should this increase hunger? double scaled_temperature = logarithmic_range( BODYTEMP_VERY_COLD, BODYTEMP_VERY_HOT, - temp_cur[bp] ); + temp_cur[bp->token] ); // Produces a smooth curve between 30.0 and 60.0. double homeostasis_adjustement = 30.0 * ( 1.0 + scaled_temperature ); int clothing_warmth_adjustement = static_cast( homeostasis_adjustement * warmth( bp ) ); @@ -5321,7 +5321,7 @@ void Character::update_bodytemp() // WINDCHILL bp_windpower = static_cast( static_cast( bp_windpower ) * ( 1 - get_wind_resistance( - bp ) / 100.0 ) ); + bp->token ) / 100.0 ) ); // Calculate windchill int windchill = get_local_windchill( player_local_temp, get_local_humidity( weather.humidity, g->weather.weather, @@ -5334,26 +5334,28 @@ void Character::update_bodytemp() ter_at_pos == t_water_moving_dp ) || ( ( ter_at_pos == t_water_sh || ter_at_pos == t_swater_sh || ter_at_pos == t_sewage || ter_at_pos == t_water_moving_sh ) && - ( bp == bp_foot_l || bp == bp_foot_r || bp == bp_leg_l || bp == bp_leg_r ) ) ) { + ( bp == bodypart_id( "foot_l" ) || bp == bodypart_id( "foot_r" ) || bp == bodypart_id( "leg_l" ) || + bp == bodypart_id( "leg_r" ) ) ) ) { adjusted_temp += water_temperature - Ctemperature; // Swap out air temp for water temp. windchill = 0; } // Convergent temperature is affected by ambient temperature, // clothing warmth, and body wetness. - temp_conv[bp] = BODYTEMP_NORM + adjusted_temp + windchill * 100 + clothing_warmth_adjustement; + temp_conv[bp->token] = BODYTEMP_NORM + adjusted_temp + windchill * 100 + + clothing_warmth_adjustement; // HUNGER / STARVATION - temp_conv[bp] += hunger_warmth; + temp_conv[bp->token] += hunger_warmth; // FATIGUE - temp_conv[bp] += fatigue_warmth; + temp_conv[bp->token] += fatigue_warmth; // Mutations - temp_conv[bp] += mutation_heat_low; + temp_conv[bp->token] += mutation_heat_low; // DIRECT HEAT SOURCES (generates body heat, helps fight frostbite) // Bark : lowers blister count to -5; harder to get blisters int blister_count = ( has_bark ? -5 : 0 ); // If the counter is high, your skin starts to burn - if( frostbite_timer[bp] > 0 ) { - frostbite_timer[bp] -= std::max( 5, h_radiation ); + if( frostbite_timer[bp->token] > 0 ) { + frostbite_timer[bp->token] -= std::max( 5, h_radiation ); } // 111F (44C) is a temperature in which proteins break down: https://en.wikipedia.org/wiki/Burn blister_count += h_radiation - 111 > 0 ? @@ -5363,8 +5365,8 @@ void Character::update_bodytemp() // BLISTERS : Skin gets blisters from intense heat exposure. // Fire protection protects from blisters. // Heatsinks give near-immunity. - if( blister_count - get_armor_fire( bp ) - ( has_heatsink ? 20 : 0 ) > 0 ) { - add_effect( effect_blisters, 1_turns, bp ); + if( blister_count - get_armor_fire( bp->token ) - ( has_heatsink ? 20 : 0 ) > 0 ) { + add_effect( effect_blisters, 1_turns, bp->token ); if( pyromania ) { add_morale( MORALE_PYROMANIA_NEARFIRE, 10, 10, 1_hours, 30_minutes ); // Proximity that's close enough to harm us gives us a bit of a thrill @@ -5376,69 +5378,56 @@ void Character::update_bodytemp() rem_morale( MORALE_PYROMANIA_NOFIRE ); } - temp_conv[bp] += sunlight_warmth; + temp_conv[bp->token] += sunlight_warmth; // DISEASES - if( bp == bp_head && has_effect( effect_flu ) ) { - temp_conv[bp] += 1500; + if( bp == bodypart_id( "head" ) && has_effect( effect_flu ) ) { + temp_conv[bp->token] += 1500; } if( has_common_cold ) { - temp_conv[bp] -= 750; + temp_conv[bp->token] -= 750; } // Loss of blood results in loss of body heat, 1% bodyheat lost per 2% hp lost - temp_conv[bp] -= blood_loss( bp ) * temp_conv[bp] / 200; + temp_conv[bp->token] -= blood_loss( bp->token ) * temp_conv[bp->token] / 200; // EQUALIZATION - switch( bp ) { - case bp_torso: - temp_equalizer( bp_torso, bp_arm_l ); - temp_equalizer( bp_torso, bp_arm_r ); - temp_equalizer( bp_torso, bp_leg_l ); - temp_equalizer( bp_torso, bp_leg_r ); - temp_equalizer( bp_torso, bp_head ); - break; - case bp_head: - temp_equalizer( bp_head, bp_torso ); - temp_equalizer( bp_head, bp_mouth ); - break; - case bp_arm_l: - temp_equalizer( bp_arm_l, bp_torso ); - temp_equalizer( bp_arm_l, bp_hand_l ); - break; - case bp_arm_r: - temp_equalizer( bp_arm_r, bp_torso ); - temp_equalizer( bp_arm_r, bp_hand_r ); - break; - case bp_leg_l: - temp_equalizer( bp_leg_l, bp_torso ); - temp_equalizer( bp_leg_l, bp_foot_l ); - break; - case bp_leg_r: - temp_equalizer( bp_leg_r, bp_torso ); - temp_equalizer( bp_leg_r, bp_foot_r ); - break; - case bp_mouth: - temp_equalizer( bp_mouth, bp_head ); - break; - case bp_hand_l: - temp_equalizer( bp_hand_l, bp_arm_l ); - break; - case bp_hand_r: - temp_equalizer( bp_hand_r, bp_arm_r ); - break; - case bp_foot_l: - temp_equalizer( bp_foot_l, bp_leg_l ); - break; - case bp_foot_r: - temp_equalizer( bp_foot_r, bp_leg_r ); - break; - default: - debugmsg( "Wacky body part temperature equalization!" ); - break; + if( bp == bodypart_id( "torso" ) ) { + temp_equalizer( bodypart_id( "torso" ), bodypart_id( "arm_l" ) ); + temp_equalizer( bodypart_id( "torso" ), bodypart_id( "arm_r" ) ); + temp_equalizer( bodypart_id( "torso" ), bodypart_id( "leg_l" ) ); + temp_equalizer( bodypart_id( "torso" ), bodypart_id( "leg_r" ) ); + temp_equalizer( bodypart_id( "torso" ), bodypart_id( "head" ) ); + } else if( bp == bodypart_id( "head" ) ) { + temp_equalizer( bodypart_id( "head" ), bodypart_id( "torso" ) ); + temp_equalizer( bodypart_id( "head" ), bodypart_id( "mouth" ) ); + } else if( bp == bodypart_id( "arm_l" ) ) { + temp_equalizer( bodypart_id( "arm_l" ), bodypart_id( "torso" ) ); + temp_equalizer( bodypart_id( "arm_l" ), bodypart_id( "hand_l" ) ); + } else if( bp == bodypart_id( "arm_r" ) ) { + temp_equalizer( bodypart_id( "arm_r" ), bodypart_id( "torso" ) ); + temp_equalizer( bodypart_id( "arm_r" ), bodypart_id( "hand_r" ) ); + } else if( bp == bodypart_id( "leg_l" ) ) { + temp_equalizer( bodypart_id( "leg_l" ), bodypart_id( "torso" ) ); + temp_equalizer( bodypart_id( "leg_l" ), bodypart_id( "foot_l" ) ); + } else if( bp == bodypart_id( "leg_r" ) ) { + temp_equalizer( bodypart_id( "leg_r" ), bodypart_id( "torso" ) ); + temp_equalizer( bodypart_id( "leg_r" ), bodypart_id( "foot_r" ) ); + } else if( bp == bodypart_id( "mouth" ) ) { + temp_equalizer( bodypart_id( "mouth" ), bodypart_id( "head" ) ); + } else if( bp == bodypart_id( "hand_l" ) ) { + temp_equalizer( bodypart_id( "hand_l" ), bodypart_id( "arm_l" ) ); + } else if( bp == bodypart_id( "hand_r" ) ) { + temp_equalizer( bodypart_id( "hand_r" ), bodypart_id( "arm_r" ) ); + } else if( bp == bodypart_id( "foot_l" ) ) { + temp_equalizer( bodypart_id( "foot_l" ), bodypart_id( "leg_l" ) ); + } else if( bp == bodypart_id( "foot_r" ) ) { + temp_equalizer( bodypart_id( "foot_r" ), bodypart_id( "leg_r" ) ); + } else { + debugmsg( "Wacky body part temperature equalization!" ); } // Climate Control eases the effects of high and low ambient temps if( has_climate_control ) { - temp_conv[bp] = temp_corrected_by_climate_control( temp_conv[bp] ); + temp_conv[bp->token] = temp_corrected_by_climate_control( temp_conv[bp->token] ); } // FINAL CALCULATION : Increments current body temperature towards convergent. @@ -5446,7 +5435,7 @@ void Character::update_bodytemp() if( !has_sleep_state && best_fire > 0 ) { // Warming up over a fire // Extremities are easier to extend over a fire - switch( bp ) { + switch( bp->token ) { case bp_head: case bp_torso: case bp_mouth: @@ -5483,21 +5472,21 @@ void Character::update_bodytemp() if( bonus_warmth > 0 ) { // Approximate temp_conv needed to reach comfortable temperature in this very turn // Basically inverted formula for temp_cur below - int desired = 501 * BODYTEMP_NORM - 499 * temp_cur[bp]; + int desired = 501 * BODYTEMP_NORM - 499 * temp_cur[bp->token]; if( std::abs( BODYTEMP_NORM - desired ) < 1000 ) { desired = BODYTEMP_NORM; // Ensure that it converges } else if( desired > BODYTEMP_HOT ) { desired = BODYTEMP_HOT; // Cap excess at sane temperature } - if( desired < temp_conv[bp] ) { + if( desired < temp_conv[bp->token] ) { // Too hot, can't help here - } else if( desired < temp_conv[bp] + bonus_warmth ) { + } else if( desired < temp_conv[bp->token] + bonus_warmth ) { // Use some heat, but not all of it - temp_conv[bp] = desired; + temp_conv[bp->token] = desired; } else { // Use all the heat - temp_conv[bp] += bonus_warmth; + temp_conv[bp->token] += bonus_warmth; } // Morale bonus for comfiness - only if actually comfy (not too warm/cold) @@ -5505,16 +5494,16 @@ void Character::update_bodytemp() if( comfortable_warmth > 0 && // TODO: make this simpler and use time_duration/time_point to_turn( calendar::turn ) % to_turns( 1_minutes ) == to_turns - ( 1_minutes * bp ) / to_turns( 1_minutes * num_bp ) && + ( 1_minutes * bp->token ) / to_turns( 1_minutes * num_bp ) && get_effect_int( effect_cold, num_bp ) == 0 && get_effect_int( effect_hot, num_bp ) == 0 && - temp_cur[bp] > BODYTEMP_COLD && temp_cur[bp] <= BODYTEMP_NORM ) { + temp_cur[bp->token] > BODYTEMP_COLD && temp_cur[bp->token] <= BODYTEMP_NORM ) { add_morale( MORALE_COMFY, 1, 10, 2_minutes, 1_minutes, true ); } } - int temp_before = temp_cur[bp]; - int temp_difference = temp_before - temp_conv[bp]; // Negative if the player is warming up. + int temp_before = temp_cur[bp->token]; + int temp_difference = temp_before - temp_conv[bp->token]; // Negative if the player is warming up. // exp(-0.001) : half life of 60 minutes, exp(-0.002) : half life of 30 minutes, // exp(-0.003) : half life of 20 minutes, exp(-0.004) : half life of 15 minutes int rounding_error = 0; @@ -5522,56 +5511,58 @@ void Character::update_bodytemp() if( temp_difference < 0 && temp_difference > -600 ) { rounding_error = 1; } - if( temp_cur[bp] != temp_conv[bp] ) { - temp_cur[bp] = static_cast( temp_difference * std::exp( -0.002 ) + temp_conv[bp] + - rounding_error ); + if( temp_cur[bp->token] != temp_conv[bp->token] ) { + temp_cur[bp->token] = static_cast( temp_difference * std::exp( -0.002 ) + temp_conv[bp->token] + + + rounding_error ); } // This statement checks if we should be wearing our bonus warmth. // If, after all the warmth calculations, we should be, then we have to recalculate the temperature. if( clothing_warmth_adjusted_bonus != 0 && - ( ( temp_conv[bp] + clothing_warmth_adjusted_bonus ) < BODYTEMP_HOT || - temp_cur[bp] < BODYTEMP_COLD ) ) { - temp_conv[bp] += clothing_warmth_adjusted_bonus; + ( ( temp_conv[bp->token] + clothing_warmth_adjusted_bonus ) < BODYTEMP_HOT || + temp_cur[bp->token] < BODYTEMP_COLD ) ) { + temp_conv[bp->token] += clothing_warmth_adjusted_bonus; rounding_error = 0; if( temp_difference < 0 && temp_difference > -600 ) { rounding_error = 1; } - if( temp_before != temp_conv[bp] ) { - temp_difference = temp_before - temp_conv[bp]; - temp_cur[bp] = static_cast( temp_difference * std::exp( -0.002 ) + temp_conv[bp] + - rounding_error ); + if( temp_before != temp_conv[bp->token] ) { + temp_difference = temp_before - temp_conv[bp->token]; + temp_cur[bp->token] = static_cast( temp_difference * std::exp( -0.002 ) + temp_conv[bp->token] + + + rounding_error ); } } - int temp_after = temp_cur[bp]; + int temp_after = temp_cur[bp->token]; // PENALTIES - if( temp_cur[bp] < BODYTEMP_FREEZING ) { - add_effect( effect_cold, 1_turns, bp, true, 3 ); - } else if( temp_cur[bp] < BODYTEMP_VERY_COLD ) { - add_effect( effect_cold, 1_turns, bp, true, 2 ); - } else if( temp_cur[bp] < BODYTEMP_COLD ) { - add_effect( effect_cold, 1_turns, bp, true, 1 ); - } else if( temp_cur[bp] > BODYTEMP_SCORCHING ) { - add_effect( effect_hot, 1_turns, bp, true, 3 ); - if( mutate_to_main_part( bp ) == bp ) { - add_effect( effect_hot_speed, 1_turns, bp, true, 3 ); - } - } else if( temp_cur[bp] > BODYTEMP_VERY_HOT ) { - add_effect( effect_hot, 1_turns, bp, true, 2 ); - if( mutate_to_main_part( bp ) == bp ) { - add_effect( effect_hot_speed, 1_turns, bp, true, 2 ); - } - } else if( temp_cur[bp] > BODYTEMP_HOT ) { - add_effect( effect_hot, 1_turns, bp, true, 1 ); - if( mutate_to_main_part( bp ) == bp ) { - add_effect( effect_hot_speed, 1_turns, bp, true, 1 ); + if( temp_cur[bp->token] < BODYTEMP_FREEZING ) { + add_effect( effect_cold, 1_turns, bp->token, true, 3 ); + } else if( temp_cur[bp->token] < BODYTEMP_VERY_COLD ) { + add_effect( effect_cold, 1_turns, bp->token, true, 2 ); + } else if( temp_cur[bp->token] < BODYTEMP_COLD ) { + add_effect( effect_cold, 1_turns, bp->token, true, 1 ); + } else if( temp_cur[bp->token] > BODYTEMP_SCORCHING ) { + add_effect( effect_hot, 1_turns, bp->token, true, 3 ); + if( mutate_to_main_part( bp->token ) == bp->token ) { + add_effect( effect_hot_speed, 1_turns, bp->token, true, 3 ); + } + } else if( temp_cur[bp->token] > BODYTEMP_VERY_HOT ) { + add_effect( effect_hot, 1_turns, bp->token, true, 2 ); + if( mutate_to_main_part( bp->token ) == bp->token ) { + add_effect( effect_hot_speed, 1_turns, bp->token, true, 2 ); + } + } else if( temp_cur[bp->token] > BODYTEMP_HOT ) { + add_effect( effect_hot, 1_turns, bp->token, true, 1 ); + if( mutate_to_main_part( bp->token ) == bp->token ) { + add_effect( effect_hot_speed, 1_turns, bp->token, true, 1 ); } } else { - if( temp_cur[bp] >= BODYTEMP_COLD ) { - remove_effect( effect_cold, bp ); + if( temp_cur[bp->token] >= BODYTEMP_COLD ) { + remove_effect( effect_cold, bp->token ); } - if( temp_cur[bp] <= BODYTEMP_HOT ) { - remove_effect( effect_hot, bp ); - remove_effect( effect_hot_speed, bp ); + if( temp_cur[bp->token] <= BODYTEMP_HOT ) { + remove_effect( effect_hot, bp->token ); + remove_effect( effect_hot_speed, bp->token ); } } // FROSTBITE - only occurs to hands, feet, face @@ -5601,109 +5592,110 @@ void Character::update_bodytemp() Less than -35F, more than 10 mp **/ - if( bp == bp_mouth || bp == bp_foot_r || bp == bp_foot_l || bp == bp_hand_r || bp == bp_hand_l ) { + if( bp == bodypart_id( "mouth" ) || bp == bodypart_id( "foot_r" ) || + bp == bodypart_id( "foot_l" ) || bp == bodypart_id( "hand_r" ) || bp == bodypart_id( "hand_l" ) ) { // Handle the frostbite timer // Need temps in F, windPower already in mph - int wetness_percentage = 100 * body_wetness[bp] / drench_capacity[bp]; // 0 - 100 + int wetness_percentage = 100 * body_wetness[bp->token] / drench_capacity[bp->token]; // 0 - 100 // Warmth gives a slight buff to temperature resistance // Wetness gives a heavy nerf to temperature resistance double adjusted_warmth = warmth( bp ) - wetness_percentage; int Ftemperature = static_cast( player_local_temp + 0.2 * adjusted_warmth ); // Windchill reduced by your armor int FBwindPower = static_cast( - total_windpower * ( 1 - get_wind_resistance( bp ) / 100.0 ) ); + total_windpower * ( 1 - get_wind_resistance( bp->token ) / 100.0 ) ); - int intense = get_effect_int( effect_frostbite, bp ); + int intense = get_effect_int( effect_frostbite, bp->token ); // This has been broken down into 8 zones // Low risk zones (stops at frostnip) - if( temp_cur[bp] < BODYTEMP_COLD && + if( temp_cur[bp->token] < BODYTEMP_COLD && ( ( Ftemperature < 30 && Ftemperature >= 10 ) || ( Ftemperature < 10 && Ftemperature >= -5 && FBwindPower < 20 && -4 * Ftemperature + 3 * FBwindPower - 20 >= 0 ) ) ) { - if( frostbite_timer[bp] < 2000 ) { - frostbite_timer[bp] += 3; + if( frostbite_timer[bp->token] < 2000 ) { + frostbite_timer[bp->token] += 3; } - if( one_in( 100 ) && !has_effect( effect_frostbite, bp ) ) { + if( one_in( 100 ) && !has_effect( effect_frostbite, bp->token ) ) { add_msg( m_warning, _( "Your %s will be frostnipped in the next few hours." ), - body_part_name( bp ) ); + body_part_name( bp->token ) ); } // Medium risk zones - } else if( temp_cur[bp] < BODYTEMP_COLD && + } else if( temp_cur[bp->token] < BODYTEMP_COLD && ( ( Ftemperature < 10 && Ftemperature >= -5 && FBwindPower < 20 && -4 * Ftemperature + 3 * FBwindPower - 20 < 0 ) || ( Ftemperature < 10 && Ftemperature >= -5 && FBwindPower >= 20 ) || ( Ftemperature < -5 && FBwindPower < 10 ) || ( Ftemperature < -5 && FBwindPower >= 10 && -4 * Ftemperature + 3 * FBwindPower - 170 >= 0 ) ) ) { - frostbite_timer[bp] += 8; + frostbite_timer[bp->token] += 8; if( one_in( 100 ) && intense < 2 ) { add_msg( m_warning, _( "Your %s will be frostbitten within the hour!" ), - body_part_name( bp ) ); + body_part_name( bp->token ) ); } // High risk zones - } else if( temp_cur[bp] < BODYTEMP_COLD && + } else if( temp_cur[bp->token] < BODYTEMP_COLD && ( ( Ftemperature < -5 && FBwindPower >= 10 && -4 * Ftemperature + 3 * FBwindPower - 170 < 0 ) || ( Ftemperature < -35 && FBwindPower >= 10 ) ) ) { - frostbite_timer[bp] += 72; + frostbite_timer[bp->token] += 72; if( one_in( 100 ) && intense < 2 ) { add_msg( m_warning, _( "Your %s will be frostbitten any minute now!" ), - body_part_name( bp ) ); + body_part_name( bp->token ) ); } // Risk free, so reduce frostbite timer } else { - frostbite_timer[bp] -= 3; + frostbite_timer[bp->token] -= 3; } // Handle the bestowing of frostbite - if( frostbite_timer[bp] < 0 ) { - frostbite_timer[bp] = 0; - } else if( frostbite_timer[bp] > 4200 ) { + if( frostbite_timer[bp->token] < 0 ) { + frostbite_timer[bp->token] = 0; + } else if( frostbite_timer[bp->token] > 4200 ) { // This ensures that the player will recover in at most 3 hours. - frostbite_timer[bp] = 4200; + frostbite_timer[bp->token] = 4200; } // Frostbite, no recovery possible - if( frostbite_timer[bp] >= 3600 ) { - add_effect( effect_frostbite, 1_turns, bp, true, 2 ); - remove_effect( effect_frostbite_recovery, bp ); + if( frostbite_timer[bp->token] >= 3600 ) { + add_effect( effect_frostbite, 1_turns, bp->token, true, 2 ); + remove_effect( effect_frostbite_recovery, bp->token ); // Else frostnip, add recovery if we were frostbitten - } else if( frostbite_timer[bp] >= 1800 ) { + } else if( frostbite_timer[bp->token] >= 1800 ) { if( intense == 2 ) { - add_effect( effect_frostbite_recovery, 1_turns, bp, true ); + add_effect( effect_frostbite_recovery, 1_turns, bp->token, true ); } - add_effect( effect_frostbite, 1_turns, bp, true, 1 ); + add_effect( effect_frostbite, 1_turns, bp->token, true, 1 ); // Else fully recovered - } else if( frostbite_timer[bp] == 0 ) { - remove_effect( effect_frostbite, bp ); - remove_effect( effect_frostbite_recovery, bp ); + } else if( frostbite_timer[bp->token] == 0 ) { + remove_effect( effect_frostbite, bp->token ); + remove_effect( effect_frostbite_recovery, bp->token ); } } // Warn the player if condition worsens if( temp_before > BODYTEMP_FREEZING && temp_after < BODYTEMP_FREEZING ) { //~ %s is bodypart add_msg( m_warning, _( "You feel your %s beginning to go numb from the cold!" ), - body_part_name( bp ) ); + body_part_name( bp->token ) ); } else if( temp_before > BODYTEMP_VERY_COLD && temp_after < BODYTEMP_VERY_COLD ) { //~ %s is bodypart add_msg( m_warning, _( "You feel your %s getting very cold." ), - body_part_name( bp ) ); + body_part_name( bp->token ) ); } else if( temp_before > BODYTEMP_COLD && temp_after < BODYTEMP_COLD ) { //~ %s is bodypart add_msg( m_warning, _( "You feel your %s getting chilly." ), - body_part_name( bp ) ); + body_part_name( bp->token ) ); } else if( temp_before < BODYTEMP_SCORCHING && temp_after > BODYTEMP_SCORCHING ) { //~ %s is bodypart add_msg( m_bad, _( "You feel your %s getting red hot from the heat!" ), - body_part_name( bp ) ); + body_part_name( bp->token ) ); } else if( temp_before < BODYTEMP_VERY_HOT && temp_after > BODYTEMP_VERY_HOT ) { //~ %s is bodypart add_msg( m_warning, _( "You feel your %s getting very hot." ), - body_part_name( bp ) ); + body_part_name( bp->token ) ); } else if( temp_before < BODYTEMP_HOT && temp_after > BODYTEMP_HOT ) { //~ %s is bodypart add_msg( m_warning, _( "You feel your %s getting warm." ), - body_part_name( bp ) ); + body_part_name( bp->token ) ); } // Note: Numbers are based off of BODYTEMP at the top of weather.h @@ -5712,11 +5704,11 @@ void Character::update_bodytemp() // Otherwise, if any other body part is BODYTEMP_VERY_COLD, or 31C // AND you have frostbite, then that also prevents you from sleeping if( in_sleep_state() ) { - int curr_temperature = temp_cur[bp]; - if( bp == bp_torso && curr_temperature <= BODYTEMP_COLD ) { + int curr_temperature = temp_cur[bp->token]; + if( bp == bodypart_id( "torso" ) && curr_temperature <= BODYTEMP_COLD ) { add_msg( m_warning, _( "Your shivering prevents you from sleeping." ) ); wake_up(); - } else if( bp != bp_torso && curr_temperature <= BODYTEMP_VERY_COLD && + } else if( bp != bodypart_id( "torso" ) && curr_temperature <= BODYTEMP_VERY_COLD && has_effect( effect_frostbite ) ) { add_msg( m_warning, _( "You are too cold. Your frostbite prevents you from sleeping." ) ); wake_up(); @@ -5725,27 +5717,27 @@ void Character::update_bodytemp() // Warn the player that wind is going to be a problem. // But only if it can be a problem, no need to spam player with "wind chills your scorching body" - if( temp_conv[bp] <= BODYTEMP_COLD && windchill < -10 && one_in( 200 ) ) { + if( temp_conv[bp->token] <= BODYTEMP_COLD && windchill < -10 && one_in( 200 ) ) { add_msg( m_bad, _( "The wind is making your %s feel quite cold." ), - body_part_name( bp ) ); - } else if( temp_conv[bp] <= BODYTEMP_COLD && windchill < -20 && one_in( 100 ) ) { + body_part_name( bp->token ) ); + } else if( temp_conv[bp->token] <= BODYTEMP_COLD && windchill < -20 && one_in( 100 ) ) { add_msg( m_bad, _( "The wind is very strong, you should find some more wind-resistant clothing for your %s." ), - body_part_name( bp ) ); - } else if( temp_conv[bp] <= BODYTEMP_COLD && windchill < -30 && one_in( 50 ) ) { + body_part_name( bp->token ) ); + } else if( temp_conv[bp->token] <= BODYTEMP_COLD && windchill < -30 && one_in( 50 ) ) { add_msg( m_bad, _( "Your clothing is not providing enough protection from the wind for your %s!" ), - body_part_name( bp ) ); + body_part_name( bp->token ) ); } } } -void Character::temp_equalizer( body_part bp1, body_part bp2 ) +void Character::temp_equalizer( const bodypart_id &bp1, const bodypart_id &bp2 ) { // Body heat is moved around. // Shift in one direction only, will be shifted in the other direction separately. - int diff = static_cast( ( temp_cur[bp2] - temp_cur[bp1] ) * + int diff = static_cast( ( temp_cur[bp2->token] - temp_cur[bp1->token] ) * 0.0001 ); // If bp1 is warmer, it will lose heat - temp_cur[bp1] += diff; + temp_cur[bp1->token] += diff; } Character::comfort_response_t Character::base_comfort_value( const tripoint &p ) const @@ -8111,7 +8103,7 @@ void Character::recalculate_enchantment_cache() for( const bionic &bio : *my_bionics ) { const bionic_id &bid = bio.id; - if( bid->toggled && !bio.powered ) { + if( bid->has_flag( "BIONIC_TOGGLED" ) && !bio.powered ) { continue; } @@ -8242,7 +8234,7 @@ static void armor_enchantment_adjust( Character &guy, damage_unit &du ) du.amount = std::max( 0.0f, du.amount ); } -void Character::absorb_hit( body_part bp, damage_instance &dam ) +void Character::absorb_hit( const bodypart_id &bp, damage_instance &dam ) { std::list worn_remains; bool armor_destroyed = false; @@ -8280,7 +8272,7 @@ void Character::absorb_hit( body_part bp, damage_instance &dam ) for( auto iter = worn.rbegin(); iter != worn.rend(); ) { item &armor = *iter; - if( !armor.covers( bp ) ) { + if( !armor.covers( bp->token ) ) { ++iter; continue; } @@ -8297,7 +8289,8 @@ void Character::absorb_hit( body_part bp, damage_instance &dam ) destroy = armor.burn( frd ); int fuel = roll_remainder( frd.fuel_produced ); if( fuel > 0 ) { - add_effect( effect_onfire, time_duration::from_turns( fuel + 1 ), bp, false, 0, false, true ); + add_effect( effect_onfire, time_duration::from_turns( fuel + 1 ), bp->token, false, 0, false, + true ); } } @@ -8326,7 +8319,7 @@ void Character::absorb_hit( body_part bp, damage_instance &dam ) } } - passive_absorb_hit( bp, elem ); + passive_absorb_hit( bp->token, elem ); if( elem.type == DT_BASH ) { if( has_trait( trait_LIGHT_BONES ) ) { @@ -8522,8 +8515,6 @@ dealt_damage_instance Character::deal_damage( Creature *source, bodypart_id bp, //block reduction should be by applied this point int dam = dealt_dams.total_damage(); - const body_part bp_token = bp->token; - // TODO: Pre or post blit hit tile onto "this"'s location here if( dam > 0 && g->u.sees( pos() ) ) { g->draw_hit_player( *this, dam ); @@ -8532,8 +8523,8 @@ dealt_damage_instance Character::deal_damage( Creature *source, bodypart_id bp, //monster hits player melee SCT.add( point( posx(), posy() ), direction_from( point_zero, point( posx() - source->posx(), posy() - source->posy() ) ), - get_hp_bar( dam, get_hp_max( player::bp_to_hp( bp_token ) ) ).first, m_bad, - body_part_name( bp_token ), m_neutral ); + get_hp_bar( dam, get_hp_max( player::bp_to_hp( bp->token ) ) ).first, m_bad, + body_part_name( bp->token ), m_neutral ); } } @@ -8635,7 +8626,7 @@ dealt_damage_instance Character::deal_damage( Creature *source, bodypart_id bp, if( get_option( "FILTHY_WOUNDS" ) ) { int sum_cover = 0; for( const item &i : worn ) { - if( i.covers( bp_token ) && i.is_filthy() ) { + if( i.covers( bp->token ) && i.is_filthy() ) { sum_cover += i.get_coverage(); } } @@ -8648,12 +8639,12 @@ dealt_damage_instance Character::deal_damage( Creature *source, bodypart_id bp, const int combined_dam = dealt_dams.type_damage( DT_BASH ) + ( cut_type_dam * 4 ); const int infection_chance = ( combined_dam * sum_cover ) / 100; if( x_in_y( infection_chance, 100 ) ) { - if( has_effect( effect_bite, bp_token ) ) { - add_effect( effect_bite, 40_minutes, bp_token, true ); - } else if( has_effect( effect_infected, bp_token ) ) { - add_effect( effect_infected, 25_minutes, bp_token, true ); + if( has_effect( effect_bite, bp->token ) ) { + add_effect( effect_bite, 40_minutes, bp->token, true ); + } else if( has_effect( effect_infected, bp->token ) ) { + add_effect( effect_infected, 25_minutes, bp->token, true ); } else { - add_effect( effect_bite, 1_turns, bp_token, true ); + add_effect( effect_bite, 1_turns, bp->token, true ); } add_msg_if_player( _( "Filth from your clothing has implanted deep in the wound." ) ); } @@ -9525,23 +9516,23 @@ std::string Character::is_snuggling() const return "nothing"; } -int Character::warmth( body_part bp ) const +int Character::warmth( const bodypart_id &bp ) const { int ret = 0; int warmth = 0; - for( auto &i : worn ) { - if( i.covers( bp ) ) { + for( const item &i : worn ) { + if( i.covers( bp->token ) ) { warmth = i.get_warmth(); // Wool items do not lose their warmth due to being wet. // Warmth is reduced by 0 - 66% based on wetness. if( !i.made_of( material_id( "wool" ) ) ) { - warmth *= 1.0 - 0.66 * body_wetness[bp] / drench_capacity[bp]; + warmth *= 1.0 - 0.66 * body_wetness[bp->token] / drench_capacity[bp->token]; } ret += warmth; } } - ret += get_effect_int( effect_heating_bionic, bp ); + ret += get_effect_int( effect_heating_bionic, bp->token ); return ret; } @@ -9556,22 +9547,23 @@ static int bestwarmth( const std::list< item > &its, const std::string &flag ) return best; } -int Character::bonus_item_warmth( body_part bp ) const +int Character::bonus_item_warmth( const bodypart_id &bp ) const { int ret = 0; // If the player is not wielding anything big, check if hands can be put in pockets - if( ( bp == bp_hand_l || bp == bp_hand_r ) && weapon.volume() < 500_ml ) { + if( ( bp == bodypart_id( "hand_l" ) || bp == bodypart_id( "hand_r" ) ) && + weapon.volume() < 500_ml ) { ret += bestwarmth( worn, "POCKETS" ); } // If the player's head is not encumbered, check if hood can be put up - if( bp == bp_head && encumb( bp_head ) < 10 ) { + if( bp == bodypart_id( "head" ) && encumb( bp_head ) < 10 ) { ret += bestwarmth( worn, "HOOD" ); } // If the player's mouth is not encumbered, check if collar can be put up - if( bp == bp_mouth && encumb( bp_mouth ) < 10 ) { + if( bp == bodypart_id( "mouth" ) && encumb( bp_mouth ) < 10 ) { ret += bestwarmth( worn, "COLLAR" ); } diff --git a/src/character.h b/src/character.h index a91574370dfa4..040ef7dc54a3b 100644 --- a/src/character.h +++ b/src/character.h @@ -503,7 +503,7 @@ class Character : public Creature, public visitable void update_bodytemp(); /** Equalizes heat between body parts */ - void temp_equalizer( body_part bp1, body_part bp2 ); + void temp_equalizer( const bodypart_id &bp1, const bodypart_id &bp2 ); struct comfort_response_t { comfort_level level = comfort_level::neutral; @@ -628,7 +628,7 @@ class Character : public Creature, public visitable // melee.cpp /** Checks for valid block abilities and reduces damage accordingly. Returns true if the player blocks */ - bool block_hit( Creature *source, body_part &bp_hit, damage_instance &dam ) override; + bool block_hit( Creature *source, bodypart_id &bp_hit, damage_instance &dam ) override; /** Returns the best item for blocking with */ item &best_shield(); /** Calculates melee weapon wear-and-tear through use, returns true if item is destroyed. */ @@ -717,7 +717,7 @@ class Character : public Creature, public visitable */ void passive_absorb_hit( body_part bp, damage_unit &du ) const; /** Runs through all bionics and armor on a part and reduces damage through their armor_absorb */ - void absorb_hit( body_part bp, damage_instance &dam ) override; + void absorb_hit( const bodypart_id &bp, damage_instance &dam ) override; /** * Reduces and mutates du, prints messages about armor taking damage. * @return true if the armor was completely destroyed (and the item must be deleted). @@ -1789,7 +1789,7 @@ class Character : public Creature, public visitable void update_stamina( int turns ); protected: - void on_damage_of_type( int adjusted_damage, damage_type type, body_part bp ) override; + void on_damage_of_type( int adjusted_damage, damage_type type, const bodypart_id &bp ) override; public: /** Called when an item is worn */ void on_item_wear( const item &it ); @@ -1901,9 +1901,9 @@ class Character : public Creature, public visitable void set_destination_activity( const player_activity &new_destination_activity ); void clear_destination_activity(); /** Returns warmth provided by armor, etc. */ - int warmth( body_part bp ) const; + int warmth( const bodypart_id &bp ) const; /** Returns warmth provided by an armor's bonus, like hoods, pockets, etc. */ - int bonus_item_warmth( body_part bp ) const; + int bonus_item_warmth( const bodypart_id &bp ) const; /** Can the player lie down and cover self with blankets etc. **/ bool can_use_floor_warmth() const; /** diff --git a/src/consumption.cpp b/src/consumption.cpp index 18c6c23c22ebb..f053f027904ce 100644 --- a/src/consumption.cpp +++ b/src/consumption.cpp @@ -781,8 +781,7 @@ ret_val Character::will_eat( const item &food, bool interactive ) add_consequence( _( "Your stomach won't be happy (not rotten enough)." ), ALLERGY_WEAK ); } - if( food.charges > 0 && stomach.stomach_remaining( *this ) < food.volume() / food.charges && - !food.has_infinite_charges() ) { + if( food.charges > 0 && food.charges_per_volume( stomach.stomach_remaining( *this ) ) < 1 ) { if( edible ) { add_consequence( _( "You're full already and will be forcing yourself to eat." ), TOO_FULL ); } else { diff --git a/src/creature.cpp b/src/creature.cpp index 2a8ecf31c7173..9b616fe859dce 100644 --- a/src/creature.cpp +++ b/src/creature.cpp @@ -512,9 +512,9 @@ void Creature::deal_melee_hit( Creature *source, int hit_spread, bool critical_h } } damage_instance d = dam; // copy, since we will mutate in block_hit - const bodypart_id bp_hit = convert_bp( select_body_part( source, hit_spread ) ).id(); - body_part bp_token = bp_hit->token; - block_hit( source, bp_token, d ); + bodypart_id bp_hit = convert_bp( select_body_part( source, hit_spread ) ).id(); + const body_part bp_token = bp_hit->token; + block_hit( source, bp_hit, d ); // Bashing critical if( critical_hit && !is_immune_effect( effect_stunned ) ) { @@ -833,8 +833,7 @@ dealt_damage_instance Creature::deal_damage( Creature *source, bodypart_id bp, damage_instance d = dam; // copy, since we will mutate in absorb_hit dealt_damage_instance dealt_dams; - const body_part bp_token = bp->token; - absorb_hit( bp_token, d ); + absorb_hit( bp, d ); // Add up all the damage units dealt for( const auto &it : d.damage_units ) { @@ -894,7 +893,7 @@ void Creature::deal_damage_handle_type( const damage_unit &du, bodypart_id bp, i break; } - on_damage_of_type( adjusted_damage, du.type, bp->token ); + on_damage_of_type( adjusted_damage, du.type, bp ); damage += adjusted_damage; pain += roll_remainder( adjusted_damage / div ); diff --git a/src/creature.h b/src/creature.h index 65257dff4c493..6823212c304f6 100644 --- a/src/creature.h +++ b/src/creature.h @@ -217,12 +217,12 @@ class Creature double ranged_target_size() const; // handles blocking of damage instance. mutates &dam - virtual bool block_hit( Creature *source, body_part &bp_hit, + virtual bool block_hit( Creature *source, bodypart_id &bp_hit, damage_instance &dam ) = 0; // handles armor absorption (including clothing damage etc) // of damage instance. mutates &dam - virtual void absorb_hit( body_part bp, damage_instance &dam ) = 0; + virtual void absorb_hit( const bodypart_id &bp, damage_instance &dam ) = 0; // TODO: this is just a shim so knockbacks work void knock_back_from( const tripoint &p ); @@ -801,7 +801,7 @@ class Creature protected: virtual void on_stat_change( const std::string &, int ) {} virtual void on_effect_int_change( const efftype_id &, int, body_part ) {} - virtual void on_damage_of_type( int, damage_type, body_part ) {} + virtual void on_damage_of_type( int, damage_type, const bodypart_id & ) {} public: body_part select_body_part( Creature *source, int hit_roll ) const; diff --git a/src/game.cpp b/src/game.cpp index 8aa109d7bfef7..08a3310f33453 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -10157,6 +10157,23 @@ static cata::optional point_selection_menu( const std::vector find_empty_spot_nearby( const tripoint &pos ) +{ + for( const tripoint &p : g->m.points_in_radius( pos, 1 ) ) { + if( p == pos ) { + continue; + } + if( g->m.impassable( p ) ) { + continue; + } + if( g->critter_at( p ) ) { + continue; + } + return p; + } + return cata::nullopt; +} + void game::vertical_move( int movez, bool force ) { if( u.is_mounted() ) { @@ -10445,17 +10462,8 @@ void game::vertical_move( int movez, bool force ) if( critter_at( u.pos(), true ) || critter_at( u.pos(), true ) ) { std::string crit_name; bool player_displace = false; - tripoint displace; - for( const tripoint &elem : m.points_in_radius( u.pos(), 1 ) ) { - if( elem == u.pos() ) { - continue; - } - if( !m.impassable( elem ) ) { - displace = elem; - break; - } - } - if( displace != tripoint_zero ) { + cata::optional displace = find_empty_spot_nearby( u.pos() ); + if( displace.has_value() ) { npc *guy = g->critter_at( u.pos(), true ); if( guy ) { crit_name = guy->get_name(); @@ -10477,17 +10485,19 @@ void game::vertical_move( int movez, bool force ) if( mon && !mon->mounted_player ) { crit_name = mon->get_name(); if( mon->friendly == -1 ) { - mon->setpos( displace ); + mon->setpos( *displace ); add_msg( _( "Your %s moves out of the way for you." ), mon->get_name() ); } else { player_displace = true; } } if( player_displace ) { - u.setpos( displace ); + u.setpos( *displace ); u.moves -= 20; add_msg( _( "You push past %s blocking the way." ), crit_name ); } + } else { + debugmsg( "Failed to find a spot to displace into." ); } } if( !npcs_to_bring.empty() ) { @@ -10626,8 +10636,11 @@ cata::optional game::find_or_make_stairs( map &mp, const int z_after, if( stairs.has_value() ) { if( Creature *blocking_creature = critter_at( stairs.value() ) ) { - add_msg( _( "There's a %s in the way!" ), blocking_creature->get_name() ); - return cata::nullopt; + bool can_displace = find_empty_spot_nearby( *stairs ).has_value(); + if( !can_displace ) { + add_msg( _( "There's a %s in the way!" ), blocking_creature->get_name() ); + return cata::nullopt; + } } return stairs; } diff --git a/src/game_inventory.cpp b/src/game_inventory.cpp index 132ffdb8eb4c1..03e7ac3243773 100644 --- a/src/game_inventory.cpp +++ b/src/game_inventory.cpp @@ -1679,7 +1679,7 @@ class bionic_install_preset: public inventory_selector_preset std::bind( &player::has_bionic, &pa, std::placeholders::_1 ) ) ) { return _( "Superior version installed" ); - } else if( pa.is_npc() && !bid->npc_usable ) { + } else if( pa.is_npc() && !bid->has_flag( "BIONIC_NPC_USABLE" ) ) { return _( "CBM not compatible with patient" ); } else if( units::energy_max - pa.get_max_power_level() < bid->capacity ) { return _( "Max power capacity already reached" ); @@ -1782,7 +1782,7 @@ class bionic_install_surgeon_preset : public inventory_selector_preset std::bind( &player::has_bionic, &pa, std::placeholders::_1 ) ) ) { return _( "Superior version installed." ); - } else if( pa.is_npc() && !bid->npc_usable ) { + } else if( pa.is_npc() && !bid->has_flag( "BIONIC_NPC_USABLE" ) ) { return _( "CBM is not compatible with patient." ); } diff --git a/src/handle_action.cpp b/src/handle_action.cpp index b741d7b6471fd..c2101bf8754c3 100644 --- a/src/handle_action.cpp +++ b/src/handle_action.cpp @@ -1011,7 +1011,7 @@ 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().sleep_friendly ) { + if( bio.info().has_flag( "BIONIC_SLEEP_FRIENDLY" ) ) { continue; } diff --git a/src/init.cpp b/src/init.cpp index 9a7c8dee95698..9bb50beb504fa 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -205,7 +205,7 @@ void DynamicDataLoader::initialize() add( "activity_type", &activity_type::load ); add( "vitamin", &vitamin::load_vitamin ); add( "material", &materials::load ); - add( "bionic", &load_bionic ); + add( "bionic", &bionic_data::load_bionic ); add( "profession", &profession::load_profession ); add( "profession_item_substitutions", &profession::load_item_substitutions ); add( "skill", &Skill::load_skill ); @@ -582,7 +582,6 @@ void DynamicDataLoader::finalize_loaded_data( loading_ui &ui ) }, { _( "Vehicle parts" ), &vpart_info::finalize }, { _( "Traps" ), &trap::finalize }, - { _( "Bionics" ), &finalize_bionics }, { _( "Terrain" ), &set_ter_ids }, { _( "Furniture" ), &set_furn_ids }, { _( "Overmap land use codes" ), &overmap_land_use_codes::finalize }, @@ -684,7 +683,7 @@ void DynamicDataLoader::check_consistency( loading_ui &ui ) { _( "Start locations" ), &start_locations::check_consistency }, { _( "Ammunition types" ), &ammunition_type::check_consistency }, { _( "Traps" ), &trap::check_consistency }, - { _( "Bionics" ), &check_bionics }, + { _( "Bionics" ), &bionic_data::check_bionic_consistency }, { _( "Gates" ), &gates::check }, { _( "NPC classes" ), &npc_class::check_consistency }, { _( "Behaviors" ), &behavior::check_consistency }, diff --git a/src/input.h b/src/input.h index bbde236c5030f..c8e434343c2c6 100644 --- a/src/input.h +++ b/src/input.h @@ -730,6 +730,10 @@ class input_context */ std::vector filter_strings_by_phrase( const std::vector &strings, const std::string &phrase ) const; + public: + std::vector get_registered_actions_copy() const { + return registered_actions; + } }; /** diff --git a/src/inventory.cpp b/src/inventory.cpp index a7ef5d0542694..a17554f57e6b9 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -33,6 +33,7 @@ #include "colony.h" #include "flat_set.h" #include "point.h" +#include "inventory_ui.h" // auto inventory blocking static const std::string flag_LEAK_ALWAYS( "LEAK_ALWAYS" ); static const std::string flag_LEAK_DAM( "LEAK_DAM" ); @@ -1036,11 +1037,20 @@ void inventory::assign_empty_invlet( item &it, const Character &p, const bool fo } } if( cur_inv.count() < inv_chars.size() ) { + // XXX YUCK I don't know how else to get the keybindings + // FIXME: Find a better way to get bound keys + avatar &u = g->u; + inventory_selector selector( u ); + for( const auto &inv_char : inv_chars ) { if( assigned_invlet.count( inv_char ) ) { // don't overwrite assigned keys continue; } + if( !selector.action_bound_to_key( inv_char ).empty() ) { + // don't auto-assign bound keys + continue; + } if( !cur_inv[inv_char] ) { it.invlet = inv_char; return; diff --git a/src/inventory_ui.cpp b/src/inventory_ui.cpp index 2b622d1aed365..6a5ed4f8d1c28 100644 --- a/src/inventory_ui.cpp +++ b/src/inventory_ui.cpp @@ -1994,6 +1994,18 @@ const navigation_mode_data &inventory_selector::get_navigation_data( navigation_ return mode_data.at( m ); } +std::string inventory_selector::action_bound_to_key( char key ) const +{ + for( const std::string &action_descriptor : ctxt.get_registered_actions_copy() ) { + for( char bound_key : ctxt.keys_bound_to( action_descriptor ) ) { + if( key == bound_key ) { + return action_descriptor; + } + } + } + return std::string(); +} + item_location inventory_pick_selector::execute() { shared_ptr_fast ui = create_or_get_ui_adaptor(); diff --git a/src/inventory_ui.h b/src/inventory_ui.h index 1d59b135dcc18..06b581778c685 100644 --- a/src/inventory_ui.h +++ b/src/inventory_ui.h @@ -659,6 +659,9 @@ class inventory_selector bool is_empty = true; bool display_stats = true; + + public: + std::string action_bound_to_key( char key ) const; }; inventory_selector::stat display_stat( const std::string &caption, int cur_value, int max_value, diff --git a/src/item.cpp b/src/item.cpp index abedbc759dc20..9c67bf7e8d051 100644 --- a/src/item.cpp +++ b/src/item.cpp @@ -1366,7 +1366,7 @@ double item::effective_dps( const player &guy, monster &mon ) const damage_instance base_damage; guy.roll_all_damage( crit, base_damage, true, *this ); damage_instance dealt_damage = base_damage; - temp_mon.absorb_hit( bp_torso, dealt_damage ); + temp_mon.absorb_hit( bodypart_id( "torso" ), dealt_damage ); dealt_damage_instance dealt_dams; for( const damage_unit &dmg_unit : dealt_damage.damage_units ) { int cur_damage = 0; @@ -1388,7 +1388,7 @@ double item::effective_dps( const player &guy, monster &mon ) const for( damage_unit &dmg_unit : dealt_rs_damage.damage_units ) { dmg_unit.damage_multiplier *= 0.66; } - temp_rs_mon.absorb_hit( bp_torso, dealt_rs_damage ); + temp_rs_mon.absorb_hit( bodypart_id( "torso" ), dealt_rs_damage ); dealt_damage_instance rs_dealt_dams; for( const damage_unit &dmg_unit : dealt_rs_damage.damage_units ) { int cur_damage = 0; diff --git a/src/item_factory.cpp b/src/item_factory.cpp index 1ef8fef19f9d2..330e06294a70b 100644 --- a/src/item_factory.cpp +++ b/src/item_factory.cpp @@ -1602,7 +1602,17 @@ void Item_factory::load_armor( const JsonObject &jo, const std::string &src ) { itype def; if( load_definition( jo, src, def ) ) { - load_slot( def.armor, jo, src ); + if( def.was_loaded ) { + if( def.armor ) { + def.armor->was_loaded = true; + } else { + def.armor = cata::make_value(); + def.armor->was_loaded = true; + } + } else { + def.armor = cata::make_value(); + } + def.armor->load( jo ); load_basic_info( jo, def, src ); } } @@ -1611,42 +1621,60 @@ void Item_factory::load_pet_armor( const JsonObject &jo, const std::string &src { itype def; if( load_definition( jo, src, def ) ) { - load_slot( def.pet_armor, jo, src ); + if( def.was_loaded ) { + if( def.pet_armor ) { + def.pet_armor->was_loaded = true; + } else { + def.pet_armor = cata::make_value(); + def.pet_armor->was_loaded = true; + } + } else { + def.pet_armor = cata::make_value(); + } + def.pet_armor->load( jo ); load_basic_info( jo, def, src ); } } -void Item_factory::load( islot_armor &slot, const JsonObject &jo, const std::string &src ) +void islot_armor::load( const JsonObject &jo ) { - bool strict = src == "dda"; - - assign( jo, "encumbrance", slot.encumber, strict, 0 ); - assign( jo, "max_encumbrance", slot.max_encumber, strict, slot.encumber ); - assign( jo, "coverage", slot.coverage, strict, 0, 100 ); - assign( jo, "material_thickness", slot.thickness, strict, 0 ); - assign( jo, "environmental_protection", slot.env_resist, strict, 0 ); - assign( jo, "environmental_protection_with_filter", slot.env_resist_w_filter, strict, 0 ); - assign( jo, "warmth", slot.warmth, strict, 0 ); - assign( jo, "weight_capacity_modifier", slot.weight_capacity_modifier ); - assign( jo, "weight_capacity_bonus", slot.weight_capacity_bonus, strict, 0_gram ); - assign( jo, "power_armor", slot.power_armor, strict ); - assign( jo, "valid_mods", slot.valid_mods, strict ); + optional( jo, was_loaded, "encumbrance", encumber, 0 ); + optional( jo, was_loaded, "max_encumbrance", max_encumber, encumber ); + optional( jo, was_loaded, "coverage", coverage, 0 ); + optional( jo, was_loaded, "material_thickness", thickness, 0 ); + optional( jo, was_loaded, "environmental_protection", env_resist, 0 ); + optional( jo, was_loaded, "environmental_protection_with_filter", env_resist_w_filter, 0 ); + optional( jo, was_loaded, "warmth", warmth, 0 ); + optional( jo, was_loaded, "weight_capacity_modifier", weight_capacity_bonus, + mass_reader{}, 0_gram ); + optional( jo, was_loaded, "weight_capacity_bonus", weight_capacity_bonus, mass_reader{}, 0_gram ); + optional( jo, was_loaded, "power_armor", power_armor, false ); + optional( jo, was_loaded, "valid_mods", valid_mods ); + assign_coverage_from_json( jo, "covers", covers, sided ); +} - assign_coverage_from_json( jo, "covers", slot.covers, slot.sided ); +void islot_armor::deserialize( JsonIn &jsin ) +{ + const JsonObject jo = jsin.get_object(); + load( jo ); } -void Item_factory::load( islot_pet_armor &slot, const JsonObject &jo, const std::string &src ) +void islot_pet_armor::load( const JsonObject &jo ) { - bool strict = src == "dda"; + optional( jo, was_loaded, "material_thickness", thickness, 0 ); + optional( jo, was_loaded, "max_pet_vol", max_vol, volume_reader{}, 0_ml ); + optional( jo, was_loaded, "min_pet_vol", min_vol, volume_reader{}, 0_ml ); + optional( jo, was_loaded, "pet_bodytype", bodytype ); + optional( jo, was_loaded, "environmental_protection", env_resist, 0 ); + optional( jo, was_loaded, "environmental_protection_with_filter", env_resist_w_filter, 0 ); + optional( jo, was_loaded, "storage", storage, volume_reader{}, 0_ml ); + optional( jo, was_loaded, "power_armor", power_armor, false ); +} - assign( jo, "material_thickness", slot.thickness, strict, 0 ); - assign( jo, "max_pet_vol", slot.max_vol, strict, 0_ml ); - assign( jo, "min_pet_vol", slot.min_vol, strict, 0_ml ); - assign( jo, "pet_bodytype", slot.bodytype, strict ); - assign( jo, "environmental_protection", slot.env_resist, strict, 0 ); - assign( jo, "environmental_protection_with_filter", slot.env_resist_w_filter, strict, 0 ); - assign( jo, "storage", slot.storage, strict, 0_ml ); - assign( jo, "power_armor", slot.power_armor, strict ); +void islot_pet_armor::deserialize( JsonIn &jsin ) +{ + const JsonObject jo = jsin.get_object(); + load( jo ); } void Item_factory::load( islot_tool &slot, const JsonObject &jo, const std::string &src ) @@ -1741,35 +1769,50 @@ void Item_factory::load_tool_armor( const JsonObject &jo, const std::string &src itype def; if( load_definition( jo, src, def ) ) { load_slot( def.tool, jo, src ); - load_slot( def.armor, jo, src ); - load_basic_info( jo, def, src ); + load_armor( jo, src ); } } -void Item_factory::load( islot_book &slot, const JsonObject &jo, const std::string &src ) +void islot_book::load( const JsonObject &jo ) { - bool strict = src == "dda"; + optional( jo, was_loaded, "max_level", level, 0 ); + optional( jo, was_loaded, "required_level", req, 0 ); + optional( jo, was_loaded, "fun", fun, 0 ); + optional( jo, was_loaded, "intelligence", intel, 0 ); - assign( jo, "max_level", slot.level, strict, 0, MAX_SKILL ); - assign( jo, "required_level", slot.req, strict, 0, MAX_SKILL ); - assign( jo, "fun", slot.fun, strict ); - assign( jo, "intelligence", slot.intel, strict, 0 ); if( jo.has_int( "time" ) ) { - slot.time = jo.get_int( "time" ); + time = jo.get_int( "time" ); } else if( jo.has_string( "time" ) ) { - slot.time = to_minutes( read_from_json_string( *jo.get_raw( "time" ), - time_duration::units ) ); + time = to_minutes( read_from_json_string( *jo.get_raw( "time" ), + time_duration::units ) ); } - assign( jo, "skill", slot.skill, strict ); - assign( jo, "martial_art", slot.martial_art, strict ); - assign( jo, "chapters", slot.chapters, strict, 0 ); + + optional( jo, was_loaded, "skill", skill, skill_id::NULL_ID() ); + optional( jo, was_loaded, "martial_art", martial_art, matype_id::NULL_ID() ); + optional( jo, was_loaded, "chapters", chapters, 0 ); +} + +void islot_book::deserialize( JsonIn &jsin ) +{ + const JsonObject jo = jsin.get_object(); + load( jo ); } void Item_factory::load_book( const JsonObject &jo, const std::string &src ) { itype def; if( load_definition( jo, src, def ) ) { - load_slot( def.book, jo, src ); + if( def.was_loaded ) { + if( def.book ) { + def.book->was_loaded = true; + } else { + def.book = cata::make_value(); + def.book->was_loaded = true; + } + } else { + def.book = cata::make_value(); + } + def.book->load( jo ); load_basic_info( jo, def, src ); } } @@ -2393,9 +2436,9 @@ void Item_factory::load_basic_info( const JsonObject &jo, itype &def, const std: } } - load_slot_optional( def.armor, jo, "armor_data", src ); - load_slot_optional( def.pet_armor, jo, "pet_armor_data", src ); - load_slot_optional( def.book, jo, "book_data", src ); + assign( jo, "armor_data", def.armor, src == "dda" ); + assign( jo, "pet_armor_data", def.pet_armor, src == "dda" ); + assign( jo, "book_data", def.book, src == "dda" ); load_slot_optional( def.gun, jo, "gun_data", src ); load_slot_optional( def.bionic, jo, "bionic_data", src ); assign( jo, "ammo_data", def.ammo, src == "dda" ); diff --git a/src/item_factory.h b/src/item_factory.h index bed2d1a709f30..71799c09e1ac1 100644 --- a/src/item_factory.h +++ b/src/item_factory.h @@ -291,9 +291,6 @@ class Item_factory void load( islot_tool &slot, const JsonObject &jo, const std::string &src ); void load( islot_comestible &slot, const JsonObject &jo, const std::string &src ); void load( islot_brewable &slot, const JsonObject &jo, const std::string &src ); - void load( islot_armor &slot, const JsonObject &jo, const std::string &src ); - void load( islot_pet_armor &slot, const JsonObject &jo, const std::string &src ); - void load( islot_book &slot, const JsonObject &jo, const std::string &src ); void load( islot_mod &slot, const JsonObject &jo, const std::string &src ); void load( islot_engine &slot, const JsonObject &jo, const std::string &src ); void load( islot_wheel &slot, const JsonObject &jo, const std::string &src ); diff --git a/src/itype.h b/src/itype.h index dbf59211aada1..e509e49824620 100644 --- a/src/itype.h +++ b/src/itype.h @@ -259,6 +259,11 @@ struct islot_armor { * Restricted clothing mods must be listed here by id to be compatible. */ std::vector valid_mods; + + bool was_loaded = false; + + void load( const JsonObject &jo ); + void deserialize( JsonIn &jsin ); }; struct islot_pet_armor { @@ -294,6 +299,11 @@ struct islot_pet_armor { * Whether this is a power armor item. */ bool power_armor = false; + + bool was_loaded = false; + + void load( const JsonObject &jo ); + void deserialize( JsonIn &jsin ); }; struct islot_book { @@ -359,6 +369,11 @@ struct islot_book { }; using recipe_list_t = std::set; recipe_list_t recipes; + + bool was_loaded = false; + + void load( const JsonObject &jo ); + void deserialize( JsonIn &jsin ); }; struct islot_mod { diff --git a/src/map_extras.cpp b/src/map_extras.cpp index 148528f3dc7ba..de7b0da8920bf 100644 --- a/src/map_extras.cpp +++ b/src/map_extras.cpp @@ -930,6 +930,8 @@ static bool mx_supplydrop( map &m, const tripoint &/*abs_sub*/ ) std::string item_group; switch( rng( 1, 10 ) ) { case 1: + item_group = "mil_bulk"; + break; case 2: case 3: case 4: diff --git a/src/map_selector.cpp b/src/map_selector.cpp index 9d11ac8febffe..ecc99ecee3f85 100644 --- a/src/map_selector.cpp +++ b/src/map_selector.cpp @@ -59,3 +59,10 @@ cata::optional random_point( const tripoint_range &range, } return random_entry( suitable ); } + +map_cursor::map_cursor( const tripoint &pos ) : pos_( g ? g->m.getabs( pos ) : pos ) { } + +map_cursor::operator tripoint() const +{ + return g ? g->m.getlocal( pos_ ) : pos_; +} diff --git a/src/map_selector.h b/src/map_selector.h index a4d6e2b25ee7c..e9c0db11dff11 100644 --- a/src/map_selector.h +++ b/src/map_selector.h @@ -7,10 +7,14 @@ #include "point.h" #include "visitable.h" -class map_cursor : public tripoint, public visitable +class map_cursor : public visitable { + private: + tripoint pos_; + public: - map_cursor( const tripoint &pos ) : tripoint( pos ) {} + map_cursor( const tripoint &pos ); + operator tripoint() const; }; class map_selector : public visitable diff --git a/src/melee.cpp b/src/melee.cpp index 1f7e1157c5716..6a40cc5de220b 100644 --- a/src/melee.cpp +++ b/src/melee.cpp @@ -1535,7 +1535,7 @@ item &Character::best_shield() return *best; } -bool Character::block_hit( Creature *source, body_part &bp_hit, damage_instance &dam ) +bool Character::block_hit( Creature *source, bodypart_id &bp_hit, damage_instance &dam ) { // Shouldn't block if player is asleep or winded @@ -1603,30 +1603,30 @@ bool Character::block_hit( Creature *source, body_part &bp_hit, damage_instance } else { //Choose which body part to block with, assume left side first if( martial_arts_data.can_leg_block( *this ) && martial_arts_data.can_arm_block( *this ) ) { - bp_hit = one_in( 2 ) ? bp_leg_l : bp_arm_l; + bp_hit = one_in( 2 ) ? bodypart_id( "leg_l" ) : bodypart_id( "arm_l" ); } else if( martial_arts_data.can_leg_block( *this ) ) { - bp_hit = bp_leg_l; + bp_hit = bodypart_id( "leg_l" ); } else { - bp_hit = bp_arm_l; + bp_hit = bodypart_id( "arm_l" ); } // Check if we should actually use the right side to block - if( bp_hit == bp_leg_l ) { + if( bp_hit == bodypart_id( "leg_l" ) ) { if( hp_cur[hp_leg_r] > hp_cur[hp_leg_l] ) { - bp_hit = bp_leg_r; + bp_hit = bodypart_id( "leg_r" ); } } else { if( hp_cur[hp_arm_r] > hp_cur[hp_arm_l] ) { - bp_hit = bp_arm_r; + bp_hit = bodypart_id( "arm_r" ); } } - thing_blocked_with = body_part_name( bp_hit ); + thing_blocked_with = body_part_name( bp_hit->token ); } if( has_shield ) { // Does our shield cover the limb we blocked with? If so, add the block bonus. - block_score += shield.covers( bp_hit ) ? block_bonus : 0; + block_score += shield.covers( bp_hit->token ) ? block_bonus : 0; } // Map block_score to the logistic curve for a number between 1 and 0. diff --git a/src/monster.cpp b/src/monster.cpp index 6b6c7753d70de..b847b10bc9108 100644 --- a/src/monster.cpp +++ b/src/monster.cpp @@ -1322,12 +1322,12 @@ bool monster::is_dead_state() const return hp <= 0; } -bool monster::block_hit( Creature *, body_part &, damage_instance & ) +bool monster::block_hit( Creature *, bodypart_id &, damage_instance & ) { return false; } -void monster::absorb_hit( body_part, damage_instance &dam ) +void monster::absorb_hit( const bodypart_id &, damage_instance &dam ) { for( auto &elem : dam.damage_units ) { add_msg( m_debug, "Dam Type: %s :: Ar Pen: %.1f :: Armor Mult: %.1f", diff --git a/src/monster.h b/src/monster.h index 21da87b25cb04..02eb53a190e06 100644 --- a/src/monster.h +++ b/src/monster.h @@ -305,8 +305,8 @@ class monster : public Creature bool is_immune_effect( const efftype_id & ) const override; bool is_immune_damage( damage_type ) const override; - void absorb_hit( body_part bp, damage_instance &dam ) override; - bool block_hit( Creature *source, body_part &bp_hit, damage_instance &d ) 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; void melee_attack( Creature &target ); void melee_attack( Creature &target, float accuracy ); void melee_attack( Creature &p, bool ) = delete; diff --git a/src/newcharacter.cpp b/src/newcharacter.cpp index c21a2ca53c14a..d2dcb425f88b6 100644 --- a/src/newcharacter.cpp +++ b/src/newcharacter.cpp @@ -1527,7 +1527,7 @@ tab_direction set_profession( avatar &u, points_left &points, for( const auto &b : prof_CBMs ) { const auto &cbm = b.obj(); - if( cbm.activated && cbm.toggled ) { + if( cbm.activated && cbm.has_flag( "BIONIC_TOGGLED" ) ) { buffer += string_format( _( "%s (toggled)" ), cbm.name ) + "\n"; } else if( cbm.activated ) { buffer += string_format( _( "%s (activated)" ), cbm.name ) + "\n"; diff --git a/src/player.cpp b/src/player.cpp index f25800119a13e..1214b1d61fc38 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -1981,7 +1981,7 @@ bool player::can_interface_armor() const { bool okay = std::any_of( my_bionics->begin(), my_bionics->end(), []( const bionic & b ) { - return b.powered && b.info().armor_interface; + return b.powered && b.info().has_flag( "BIONIC_ARMOR_INTERFACE" ); } ); return okay; } diff --git a/src/ranged.cpp b/src/ranged.cpp index 63ffb74666b5b..61982516d2fb1 100644 --- a/src/ranged.cpp +++ b/src/ranged.cpp @@ -212,8 +212,18 @@ class target_ui // relevant for TargetMode::Spell std::set spell_aoe; + // Represents a turret and a straight line from that turret to target + struct turret_with_lof { + vehicle_part *turret; + std::vector line; + }; + // List of vehicle turrets in range (out of those listed in 'vturrets') - std::vector turrets_in_range; + std::vector turrets_in_range; + + // If true, draws turret lines + // relevant for TargetMode::Turrets + bool draw_turret_lines = false; // Create window and set up input context void init_window_and_input( player &pc ); @@ -1852,6 +1862,11 @@ target_handler::trajectory target_ui::run( player &pc, ExitCode *exit_code ) // Load settings allow_zlevel_shift = g->m.has_zlevels() && get_option( "FOV_3D" ); snap_to_target = get_option( "SNAP_TO_TARGET" ); + if( mode == TargetMode::Turrets ) { + // Due to how cluttered the display would become, disable it by default + // unless aiming a single turret. + draw_turret_lines = vturrets->size() == 1; + } // Create window init_window_and_input( pc ); @@ -1928,6 +1943,8 @@ target_handler::trajectory target_ui::run( player &pc, ExitCode *exit_code ) continue; } else if( action == "TOGGLE_SNAP_TO_TARGET" ) { toggle_snap_to_target( pc ); + } else if( action == "TOGGLE_TURRET_LINES" ) { + draw_turret_lines = !draw_turret_lines; } else if( action == "zoom_in" ) { g->zoom_in(); } else if( action == "zoom_out" ) { @@ -2105,6 +2122,9 @@ void target_ui::init_window_and_input( player &pc ) } aim_mode = aim_types.begin(); } + if( mode == TargetMode::Turrets ) { + ctxt.register_action( "TOGGLE_TURRET_LINES" ); + } } bool target_ui::handle_cursor_movement( player &pc, const std::string &action, bool &skip_redraw ) @@ -2460,8 +2480,10 @@ void target_ui::update_turrets_in_range() { turrets_in_range.clear(); for( vehicle_part *t : *vturrets ) { - if( veh->turret_query( *t ).in_range( dst ) ) { - turrets_in_range.push_back( t ); + turret_data td = veh->turret_query( *t ); + if( td.in_range( dst ) ) { + tripoint src = veh->global_part_pos3( *t ); + turrets_in_range.push_back( {t, line_to( src, dst )} ); } } } @@ -2607,20 +2629,48 @@ void target_ui::draw_terrain( player &pc ) tripoint center = pc.pos() + pc.view_offset; g->draw_ter( center, true ); - // Draw trajectory - if( dst != src ) { - // But only points on this Z-level + // Removes parts that don't belong to currently visible Z level + const auto filter_this_z = [¢er]( const std::vector &traj ) { std::vector this_z = traj; this_z.erase( std::remove_if( this_z.begin(), this_z.end(), [¢er]( const tripoint & p ) { return p.z != center.z; } ), this_z.end() ); + return this_z; + }; + + // FIXME: TILES version of g->draw_line helpfully draws a cursor at last point. + // This creates a fake cursor if 'dst' is on a z-level we cannot see. + + // Draw approximate line of fire for each turret in range + if( mode == TargetMode::Turrets && draw_turret_lines ) { + // TODO: TILES version doesn't know how to draw more than 1 line at a time. + // We merge all lines together and draw them as a big malformed one + std::set points; + for( const turret_with_lof &it : turrets_in_range ) { + std::vector this_z = filter_this_z( it.line ); + for( const tripoint &p : this_z ) { + points.insert( p ); + } + } + // Since "trajectory" for each turret is just a straight line, + // we can draw it even if the player can't see some parts + points.erase( dst ); // Workaround for fake cursor on TILES + std::vector l( points.begin(), points.end() ); + if( dst.z == center.z ) { + // Workaround for fake cursor bug on TILES + l.push_back( dst ); + } + g->draw_line( src, center, l, true ); + } + + // Draw trajectory + if( mode != TargetMode::Turrets && dst != src ) { + std::vector this_z = filter_this_z( traj ); // Draw a highlighted trajectory only if we can see the endpoint. // Provides feedback to the player, but avoids leaking information // about tiles they can't see. - // FIXME: TILES version of this function helpfully draws a cursor at 'this_z.back()'. - // This creates a fake cursor if 'dst' is on a z-level we cannot see. g->draw_line( dst, center, this_z ); } @@ -2812,6 +2862,12 @@ void target_ui::draw_controls_list( int text_y ) lines.push_back( {6, colored( col_enabled, string_format( _( "[%c] to reload/switch ammo." ), bound_key( "SWITCH_AMMO" ) ) )} ); } + if( mode == TargetMode::Turrets ) { + const std::string label = to_translation( "[Hotkey] Show/Hide turrets' lines of fire", + "[%c] %s lines of fire" ).translated(); + const std::string showhide = draw_turret_lines ? "Hide" : "Show"; + lines.push_back( {1, colored( col_enabled, string_format( label, bound_key( "TOGGLE_TURRET_LINES" ), showhide ) )} ); + } // Shrink the list until it fits int height = getmaxy( w_target ); @@ -3030,8 +3086,8 @@ void target_ui::panel_turret_list( int &text_y ) mvwprintw( w_target, point( 1, text_y++ ), _( "Turrets in range: %d/%d" ), turrets_in_range.size(), vturrets->size() ); - for( vehicle_part *t : turrets_in_range ) { - std::string str = string_format( "* %s", t->name() ); + for( const turret_with_lof &it : turrets_in_range ) { + std::string str = string_format( "* %s", it.turret->name() ); nc_color clr = c_white; print_colored_text( w_target, point( 1, text_y++ ), clr, clr, str ); } diff --git a/src/vehicle_move.cpp b/src/vehicle_move.cpp index 4fc22b4e69162..414e4a76c7971 100644 --- a/src/vehicle_move.cpp +++ b/src/vehicle_move.cpp @@ -419,7 +419,8 @@ bool vehicle::collision( std::vector &colls, const tripoint dsp = global_pos3() + dp + parts[p].precalc[1]; veh_collision coll = part_collision( p, dsp, just_detect, bash_floor ); if( coll.type == veh_coll_nothing && info.rotor_diameter() > 0 ) { - for( const tripoint &rotor_point : g->m.points_in_radius( dsp, info.rotor_diameter() ) ) { + size_t radius = static_cast( std::round( info.rotor_diameter() / 2.0f ) ); + for( const tripoint &rotor_point : g->m.points_in_radius( dsp, radius ) ) { veh_collision rotor_coll = part_collision( p, rotor_point, just_detect, false ); if( rotor_coll.type != veh_coll_nothing ) { coll = rotor_coll; diff --git a/src/weather.cpp b/src/weather.cpp index ab1902e231fe9..e264a8cd09df0 100644 --- a/src/weather.cpp +++ b/src/weather.cpp @@ -384,7 +384,8 @@ static void wet_player( int amount ) if( !calendar::once_every( 6_seconds ) ) { return; } - const int warmth_delay = g->u.warmth( bp_torso ) * 4 / 5 + g->u.warmth( bp_head ) / 5; + const int warmth_delay = g->u.warmth( bodypart_id( "torso" ) ) * 4 / 5 + g->u.warmth( + bodypart_id( "head" ) ) / 5; if( rng( 0, 100 - amount + warmth_delay ) > 10 ) { // Thick clothing slows down (but doesn't cap) soaking return; diff --git a/tests/player_helpers.cpp b/tests/player_helpers.cpp index 03e90b538e283..ecdd6ff3658a0 100644 --- a/tests/player_helpers.cpp +++ b/tests/player_helpers.cpp @@ -159,7 +159,7 @@ void give_and_activate_bionic( player &p, bionic_id const &bioid ) REQUIRE( bio.id == bioid ); // turn on if possible - if( bio.id->toggled && !bio.powered ) { + if( bio.id->has_flag( "BIONIC_TOGGLED" ) && !bio.powered ) { const std::vector fuel_opts = bio.info().fuel_opts; if( !fuel_opts.empty() ) { p.set_value( fuel_opts.front(), "2" );