diff --git a/data/json/construction.json b/data/json/construction.json index bd25d2c0a8d99..6098c38cbef11 100644 --- a/data/json/construction.json +++ b/data/json/construction.json @@ -3001,6 +3001,17 @@ "pre_special": "check_empty", "post_special": "done_appliance" }, + { + "type": "construction", + "id": "app_oven", + "group": "place_oven", + "category": "APPLIANCE", + "required_skills": [ [ "fabrication", 0 ] ], + "time": "5 m", + "components": [ [ [ "oven", 1 ] ] ], + "pre_special": "check_empty", + "post_special": "done_appliance" + }, { "type": "construction", "id": "app_standing_lamp", diff --git a/data/json/construction_group.json b/data/json/construction_group.json index 9602c3d746dae..6409dcf6c672e 100644 --- a/data/json/construction_group.json +++ b/data/json/construction_group.json @@ -1094,6 +1094,11 @@ "id": "place_fridge", "name": "Place Fridge" }, + { + "type": "construction_group", + "id": "place_oven", + "name": "Place Oven" + }, { "type": "construction_group", "id": "place_standing_lamp", diff --git a/data/json/furniture_and_terrain/furniture-appliances.json b/data/json/furniture_and_terrain/furniture-appliances.json index a77a6d3c45f74..da176750bacdd 100644 --- a/data/json/furniture_and_terrain/furniture-appliances.json +++ b/data/json/furniture_and_terrain/furniture-appliances.json @@ -342,26 +342,15 @@ "id": "f_oven", "name": "oven", "symbol": "#", - "description": "A standard convection-based oven, commonly used for heating and cooking food. You could safely light a fire inside or power it with UPS.", + "description": "A standard convection-based oven, commonly used for heating and cooking food. It can safely contain a fire, although it's not adequately ventilated. You could disconnect it and plug it in to a working power grid, or power it with UPS.", "color": "dark_gray", "move_cost_mod": 2, "coverage": 60, "required_str": 10, - "flags": [ "PLACE_ITEM", "TRANSPARENT", "FIRE_CONTAINER", "CONTAINER", "BLOCKSDOOR", "MOUNTABLE" ], + "flags": [ "PLACE_ITEM", "TRANSPARENT", "EASY_DECONSTRUCT", "FIRE_CONTAINER", "CONTAINER", "BLOCKSDOOR", "MOUNTABLE" ], + "deconstruct": { "items": [ { "item": "oven", "count": 1 } ] }, "examine_action": "fireplace", - "deconstruct": { - "items": [ - { "item": "sheet_metal", "count": [ 2, 6 ] }, - { "item": "sheet_metal_small", "count": [ 0, 4 ] }, - { "item": "steel_chunk", "count": [ 2, 3 ] }, - { "item": "scrap", "count": [ 2, 6 ] }, - { "item": "element", "count": [ 1, 4 ] }, - { "item": "cable", "charges": [ 1, 3 ] }, - { "item": "pipe_fittings", "count": [ 1, 3 ] }, - { "item": "pilot_light", "count": 1 } - ] - }, - "max_volume": "40 L", + "max_volume": "120 L", "bash": { "str_min": 8, "str_max": 30, diff --git a/data/json/items/appliances.json b/data/json/items/appliances.json index 69641984c3f92..e317bea7528ca 100644 --- a/data/json/items/appliances.json +++ b/data/json/items/appliances.json @@ -21,6 +21,21 @@ } ] }, + { + "type": "GENERIC", + "id": "oven", + "looks_like": "f_oven", + "symbol": "#", + "description": "A disconnected electric convection-based oven, commonly used for heating and cooking food.", + "color": "dark_gray_white", + "name": { "str": "disconnected oven" }, + "material": [ "budget_steel" ], + "longest_side": "69 cm", + "insulation": 3, + "volume": "290 L", + "weight": "77 kg", + "pocket_data": [ { "pocket_type": "CONTAINER", "rigid": true, "max_contains_volume": "120 L", "max_contains_weight": "200 kg" } ] + }, { "type": "TOOL", "id": "power_cord", diff --git a/data/json/items/resources/appliance_parts.json b/data/json/items/resources/appliance_parts.json new file mode 100644 index 0000000000000..23c0ec72aa673 --- /dev/null +++ b/data/json/items/resources/appliance_parts.json @@ -0,0 +1,77 @@ +[ + { + "type": "GENERIC", + "id": "oven_stovetop", + "symbol": "_", + "color": "dark_gray", + "name": { "str": "dismantled stovetop" }, + "category": "spare_parts", + "description": "The dismantled stovetop of an electric oven. Some electric components are still attached but the heating elements have been pulled off.", + "price": 100, + "price_postapoc": 5, + "material": [ "budget_steel" ], + "weight": "5 kg", + "volume": "20 L", + "longest_side": "60 cm" + }, + { + "type": "GENERIC", + "id": "oven_cabinet", + "symbol": "x", + "color": "dark_gray_white", + "name": { "str": "stripped oven cabinet" }, + "category": "spare_parts", + "description": "A large hefty steel box that was once the main body of an electric oven. Most of the parts have been stripped. It could be further disassembled into base materials.", + "price": 200, + "price_postapoc": 10, + "material": [ "budget_steel" ], + "weight": "25 kg", + "volume": "250 L", + "longest_side": "69 cm" + }, + { + "type": "GENERIC", + "id": "oven_controls", + "symbol": "#", + "color": "light_cyan", + "name": { "str": "oven control panel" }, + "category": "spare_parts", + "description": "The control panel and LCD from a dismantled electric oven.", + "price": 100, + "price_postapoc": 5, + "material": [ "budget_steel", "glass" ], + "weight": "1 kg", + "volume": "2 L", + "longest_side": "65 cm" + }, + { + "type": "GENERIC", + "id": "oven_door", + "symbol": "#", + "color": "light_cyan", + "name": { "str": "oven door" }, + "category": "spare_parts", + "description": "The removed glass and steel door of an electric oven.", + "price": 100, + "price_postapoc": 5, + "material": [ "budget_steel", "glass" ], + "weight": "10 kg", + "volume": "20 L", + "longest_side": "69 cm" + }, + { + "type": "GENERIC", + "id": "oven_broiler_pan", + "symbol": "_", + "color": "dark_gray_white", + "name": { "str": "broiler pan" }, + "category": "spare_parts", + "description": "A simple sheet metal drawer that goes in the bottom of an electric oven.", + "price": 50, + "price_postapoc": 1, + "material": [ "budget_steel" ], + "weight": "5 kg", + "volume": "20 L", + "longest_side": "69 cm" + } +] diff --git a/data/json/items/resources/metal.json b/data/json/items/resources/metal.json index 05a365edf6f55..215091796dc8c 100644 --- a/data/json/items/resources/metal.json +++ b/data/json/items/resources/metal.json @@ -364,5 +364,35 @@ "longest_side": "1572 mm", "ammo_type": "components", "count": 1 + }, + { + "id": "fanblade_metal", + "type": "GENERIC", + "category": "spare_parts", + "name": { "str": "metal fan blade assembly", "str_pl": "metal fan blade assemblies" }, + "description": "A multi-bladed metal fan, like you'd find on a larger desk fan or inside a convection oven.", + "weight": "150 g", + "volume": "2 L", + "longest_side": "30 cm", + "price": 50, + "price_postapoc": 10, + "material": [ "budget_steel" ], + "symbol": "*", + "color": "light_gray" + }, + { + "id": "heavy_wire_rack", + "type": "GENERIC", + "category": "spare_parts", + "name": { "str": "heavy wire rack" }, + "description": "A durable steel rack, the sort you might find in an oven or on a barbecue.", + "weight": "600 g", + "volume": "5 L", + "longest_side": "60 cm", + "price": 50, + "price_postapoc": 10, + "material": [ "steel" ], + "symbol": "#", + "color": "light_gray" } ] diff --git a/data/json/items/resources/stone.json b/data/json/items/resources/stone.json index 721898091bf60..91b3becd129a1 100644 --- a/data/json/items/resources/stone.json +++ b/data/json/items/resources/stone.json @@ -36,5 +36,18 @@ "bashing": 28, "to_hit": -2, "qualities": [ [ "ANVIL", 1 ] ] + }, + { + "type": "GENERIC", + "id": "rock_wool_bat", + "symbol": "#", + "color": "brown", + "name": { "str": "fiber insulation bat" }, + "//": "I am assuming this is made of rock wool, but it could also be fiberglass. There is almost no practical difference for our purposes.", + "description": "A foil-wrapped bat of fibrous insulation: fire and moisture resistant, used for hot appliances like dishwashers and ovens.", + "category": "spare_parts", + "material": "epoxy", + "weight": "150 g", + "volume": "3 L" } ] diff --git a/data/json/proficiencies/misc.json b/data/json/proficiencies/misc.json index 14095410b1f6c..6835a35bce09f 100644 --- a/data/json/proficiencies/misc.json +++ b/data/json/proficiencies/misc.json @@ -153,5 +153,15 @@ "description": "You're skilled at clearing obstacles; terrain like railings or counters are as easy for you to move on as solid ground.", "can_learn": true, "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_appliance_repair", + "name": { "str": "General Appliance Repair" }, + "description": "A base knowledge of how to put together and take apart common appliances, diagnose problems, and replace parts.", + "can_learn": true, + "default_time_multiplier": 2, + "default_fail_multiplier": 1.1, + "time_to_learn": "8 h" } ] diff --git a/data/json/recipes/appliances/oven.json b/data/json/recipes/appliances/oven.json new file mode 100644 index 0000000000000..0072a2e84d28a --- /dev/null +++ b/data/json/recipes/appliances/oven.json @@ -0,0 +1,150 @@ +[ + { + "result": "oven", + "type": "recipe", + "category": "CC_OTHER", + "subcategory": "CSC_OTHER_OTHER", + "activity_level": "MODERATE_EXERCISE", + "time": "1 h", + "skill_used": "fabrication", + "difficulty": 1, + "autolearn": true, + "skills_required": [ "electronics", 1 ], + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 } ], + "proficiencies": [ { "proficiency": "prof_appliance_repair" } ], + "components": [ + [ [ "oven_stovetop", 1 ] ], + [ [ "oven_cabinet", 1 ] ], + [ [ "oven_controls", 1 ] ], + [ [ "oven_door", 1 ] ], + [ [ "oven_broiler_pan", 1 ] ], + [ [ "heavy_wire_rack", 2 ] ], + [ [ "element", 4 ] ], + [ [ "cable", 1 ] ] + ] + }, + { + "result": "oven", + "type": "uncraft", + "activity_level": "MODERATE_EXERCISE", + "time": "45 m", + "skill_used": "fabrication", + "qualities": [ { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 } ], + "proficiencies": [ { "proficiency": "prof_appliance_repair", "fail_multiplier": 1 } ], + "components": [ + [ [ "oven_stovetop", 1 ] ], + [ [ "oven_cabinet", 1 ] ], + [ [ "oven_controls", 1 ] ], + [ [ "oven_door", 1 ] ], + [ [ "oven_broiler_pan", 1 ] ], + [ [ "heavy_wire_rack", 2 ] ], + [ [ "element", 4 ] ], + [ [ "cable", 4 ] ] + ] + }, + { + "result": "oven_stovetop", + "type": "uncraft", + "activity_level": "MODERATE_EXERCISE", + "time": "30 m", + "skill_used": "fabrication", + "proficiencies": [ { "proficiency": "prof_appliance_repair", "fail_multiplier": 1 } ], + "qualities": [ + { "id": "SCREW", "level": 1 }, + { "id": "WRENCH", "level": 1 }, + { "id": "HAMMER", "level": 1 }, + { "id": "SAW_M", "level": 1 } + ], + "components": [ [ [ "sheet_metal_small", 2 ] ], [ [ "spring", 1 ] ], [ [ "hinge", 1 ] ], [ [ "wire", 1 ] ], [ [ "e_scrap", 4 ] ] ] + }, + { + "result": "oven_cabinet", + "type": "uncraft", + "activity_level": "MODERATE_EXERCISE", + "time": "1 h", + "skill_used": "fabrication", + "proficiencies": [ { "proficiency": "prof_appliance_repair", "fail_multiplier": 1 } ], + "qualities": [ + { "id": "SCREW", "level": 1 }, + { "id": "WRENCH", "level": 1 }, + { "id": "HAMMER", "level": 1 }, + { "id": "SAW_M", "level": 1 } + ], + "//": "Pilot lights shouldn't be part of an electric oven but we don't have gas ones yet. Can be removed when that changes.", + "components": [ + [ [ "sheet_metal", 2 ] ], + [ [ "sheet_metal_small", 2 ] ], + [ [ "rock_wool_bat", 3 ] ], + [ [ "element", 2 ] ], + [ [ "scrap", 4 ] ], + [ [ "e_scrap", 2 ] ], + [ [ "cable", 2 ] ], + [ [ "pilot_light", 1 ] ], + [ [ "motor_micro", 1 ] ], + [ [ "fanblade_metal", 1 ] ], + [ [ "thermometer", 1 ] ], + [ [ "pipe_fittings", 4 ] ] + ] + }, + { + "result": "oven_door", + "type": "uncraft", + "activity_level": "MODERATE_EXERCISE", + "time": "1 h", + "skill_used": "fabrication", + "proficiencies": [ { "proficiency": "prof_appliance_repair", "fail_multiplier": 1 } ], + "qualities": [ + { "id": "SCREW", "level": 1 }, + { "id": "WRENCH", "level": 1 }, + { "id": "HAMMER_FINE", "level": 1 }, + { "id": "SAW_M", "level": 1 } + ], + "components": [ + [ [ "reinforced_glass_sheet", 1 ] ], + [ [ "sheet_metal_small", 2 ] ], + [ [ "rock_wool_bat", 1 ] ], + [ [ "element", 2 ] ], + [ [ "scrap", 4 ] ], + [ [ "e_scrap", 2 ] ], + [ [ "cable", 2 ] ], + [ [ "hinge", 2 ] ] + ] + }, + { + "result": "oven_broiler_pan", + "type": "uncraft", + "activity_level": "MODERATE_EXERCISE", + "time": "30 m", + "skill_used": "fabrication", + "proficiencies": [ { "proficiency": "prof_appliance_repair", "fail_multiplier": 1 } ], + "qualities": [ + { "id": "SCREW", "level": 1 }, + { "id": "WRENCH", "level": 1 }, + { "id": "HAMMER", "level": 1 }, + { "id": "SAW_M", "level": 1 } + ], + "components": [ [ [ "sheet_metal", 1 ] ], [ [ "sheet_metal_small", 2 ] ], [ [ "scrap", 2 ] ], [ [ "bearing", 12 ] ] ] + }, + { + "result": "oven_controls", + "type": "uncraft", + "activity_level": "MODERATE_EXERCISE", + "time": "1 h", + "skill_used": "fabrication", + "proficiencies": [ + { "proficiency": "prof_elec_soldering", "fail_multiplier": 1 }, + { "proficiency": "prof_elec_circuits", "fail_multiplier": 1 } + ], + "qualities": [ { "id": "SCREW", "level": 1 } ], + "tools": [ [ [ "soldering_iron", -1 ], [ "toolset", -1 ] ] ], + "components": [ + [ [ "plastic_chunk", 4 ] ], + [ [ "sheet_metal_small", 1 ] ], + [ [ "scrap", 2 ] ], + [ [ "e_scrap", 6 ] ], + [ [ "cable", 2 ] ], + [ [ "solder_wire", 8 ] ], + [ [ "small_lcd_screen", 1 ] ] + ] + } +] diff --git a/data/json/vehicleparts/appliances.json b/data/json/vehicleparts/appliances.json index 97b1832326be7..b775535a77a60 100644 --- a/data/json/vehicleparts/appliances.json +++ b/data/json/vehicleparts/appliances.json @@ -16,7 +16,6 @@ "epower": -30, "size": 2000, "item": "fridge", - "location": "center", "requirements": { "install": { "skills": [ [ "mechanics", 3 ] ], "time": "60 m", "using": [ [ "vehicle_wrench_2", 1 ] ] }, "removal": { "skills": [ [ "mechanics", 2 ] ], "time": "30 m", "using": [ [ "vehicle_wrench_2", 1 ] ] }, @@ -36,6 +35,35 @@ ], "damage_reduction": { "all": 32 } }, + { + "id": "ap_oven", + "name": { "str": "oven" }, + "categories": [ "utility" ], + "description": "A standard electric convection-based oven, commonly used for heating and cooking food.", + "symbol": "#", + "color": "dark_gray", + "broken_color": "dark_gray_white", + "broken_symbol": "x", + "damage_modifier": 10, + "damage_reduction": { "all": 30 }, + "durability": 80, + "flags": [ "CARGO", "OBSTACLE", "COVERED", "FLAT_SURF", "APPLIANCE" ], + "pseudo_tools": [ { "id": "hotplate", "hotkey": "h" } ], + "//": "Doesn't draw power at baseline, only when cooking.", + "epower": 0, + "item": "oven", + "looks_like": "f_oven", + "breaks_into": [ + { "item": "sheet_metal", "count": [ 1, 4 ] }, + { "item": "sheet_metal_small", "count": [ 8, 12 ] }, + { "item": "steel_chunk", "count": [ 0, 3 ] }, + { "item": "scrap", "count": [ 0, 6 ] }, + { "item": "element", "count": [ 1, 3 ] }, + { "item": "cable", "charges": [ 1, 3 ] } + ], + "size": 200, + "type": "vehicle_part" + }, { "type": "vehicle_part", "id": "power_cord",