diff --git a/data/json/deconstruction.json b/data/json/deconstruction.json index 3da6f844d1b46..8c37b3cf0a3e2 100644 --- a/data/json/deconstruction.json +++ b/data/json/deconstruction.json @@ -41,6 +41,12 @@ { "item": "hinge", "count": [ 0, 1 ] } ] }, + { + "type": "item_group", + "id": "teeth_deconstruction_result", + "subtype": "collection", + "entries": [ { "item": "nm_teeth", "count": [ 30, 50 ] } ] + }, { "type": "construction", "id": "constr_remove_window_empty", @@ -1041,5 +1047,18 @@ "byproducts": [ { "item": "brick", "count": [ 25, 30 ] } ], "pre_terrain": "f_fireplace", "post_terrain": "f_null" + }, + { + "type": "construction", + "id": "constr_extract_teeth", + "group": "remove_wall", + "//": "Extract some impossibly-sharp teeth for later use.", + "category": "CONSTRUCT", + "required_skills": [ [ "survival", 4 ] ], + "time": "90 m", + "using": [ [ "nm_teeth_removal", 1 ] ], + "byproducts": "teeth_deconstruction_result", + "pre_terrain": "t_nm_wall_teeth", + "post_terrain": "t_nm_wall_flesh" } ] diff --git a/data/json/furniture_and_terrain/terrain_nether_monster.json b/data/json/furniture_and_terrain/terrain_nether_monster.json index ec549874b3340..e7562c91eb796 100644 --- a/data/json/furniture_and_terrain/terrain_nether_monster.json +++ b/data/json/furniture_and_terrain/terrain_nether_monster.json @@ -26,9 +26,8 @@ "type": "terrain", "id": "t_nm_wall_teeth", "name": "monster teeth", - "//": "TODO: use construction menu to extract extremely sharp tooth for use in crafting later", - "//2": "TODO2: perhaps make player unable to bash these", - "description": "A fractal array of uncountable, bristling teeth that seem impossibly sharp, even at a conceptual level. An iridescent haze surrounds it, as if light itself cannot help but be separated in their presence. With proper protective equipment, you surmise you could extract some for your own use.", + "//": "TODO: perhaps make player unable to bash these", + "description": "A fractal array of uncountable, bristling teeth that seem impossibly sharp, even at a conceptual level. An iridescent haze surrounds it, as if light itself cannot help but be separated in their presence. You surmise you could extract some for your own use, if you had an appropriate tool to remove them from the wall they're imbedded in.", "symbol": "^", "color": "white", "move_cost": 0, diff --git a/data/json/items/melee/bludgeons.json b/data/json/items/melee/bludgeons.json index 0f1b0806943ab..e932ca25b8fe5 100644 --- a/data/json/items/melee/bludgeons.json +++ b/data/json/items/melee/bludgeons.json @@ -878,6 +878,25 @@ "to_hit": { "grip": "solid", "length": "long", "surface": "line", "balance": "uneven" }, "melee_damage": { "bash": 16, "cut": 10 } }, + { + "type": "GENERIC", + "id": "teeth_macuahuitl", + "name": { "str": "teeth-bladed macuahuitl" }, + "description": "A flat wooden club with impossibly-sharp teeth stuck to both sides. Fragile yet very sharp.", + "weight": "2000 g", + "volume": "3800 ml", + "price": 1000, + "price_postapoc": 250, + "color": "brown", + "symbol": "/", + "material": [ "wood", "bone" ], + "longest_side": "100 cm", + "flags": [ "NONCONDUCTIVE", "FRAGILE_MELEE" ], + "weapon_category": [ "GREAT_HAMMERS" ], + "techniques": [ "WBLOCK_1", "WIDE" ], + "to_hit": { "grip": "solid", "length": "long", "surface": "line", "balance": "uneven" }, + "melee_damage": { "bash": 16, "cut": 30 } + }, { "type": "GENERIC", "id": "aztec_sword_stone", diff --git a/data/json/items/tool/misc.json b/data/json/items/tool/misc.json index 249a6bc8a1817..fbc88b4e113d1 100644 --- a/data/json/items/tool/misc.json +++ b/data/json/items/tool/misc.json @@ -1031,5 +1031,28 @@ "flags": [ "REACH_ATTACK" ], "to_hit": { "grip": "solid", "length": "long", "surface": "point", "balance": "neutral" }, "melee_damage": { "cut": 1 } + }, + { + "type": "TOOL", + "id": "nm_teeth", + "symbol": ",", + "color": "light_cyan", + "name": { "str_sp": "monster teeth" }, + "category": "other", + "description": "Impossibly-sharp teeth extracted from a giant corpse. You could use them as a weapon, but you might want to wear gloves.", + "material": [ "bone" ], + "weight": "42 g", + "volume": "30 ml", + "use_action": { + "type": "place_trap", + "trap": "tr_teeth", + "moves": 150, + "practice": 2, + "done_message": "You carefully place the teeth on the ground, ready to be walked on by something passing by." + }, + "flags": [ "HURT_WHEN_WIELDED", "TRADER_AVOID", "SINGLE_USE", "FRAGILE_MELEE", "ALLOWS_BODY_BLOCK" ], + "to_hit": -1, + "melee_damage": { "cut": 12 }, + "weapon_category": [ "SHIVS" ] } ] diff --git a/data/json/items/tool/traps.json b/data/json/items/tool/traps.json index 0c4865c3bf3c2..6888f20d949ab 100644 --- a/data/json/items/tool/traps.json +++ b/data/json/items/tool/traps.json @@ -291,5 +291,29 @@ "done_message": "You string up the tripwire." }, "flags": [ "SINGLE_USE" ] + }, + { + "id": "caltrops_teeth", + "type": "TOOL", + "name": { "str_sp": "loose teeth caltrops" }, + "category": "traps", + "description": "A handful of small impossibly-sharp teeth glued together. If an unsuspecting victim steps on one, they'll get a tooth through the foot.", + "weight": "264 g", + "volume": "500 ml", + "price": 100, + "price_postapoc": 50, + "to_hit": -4, + "material": [ "bone" ], + "symbol": ";", + "color": "dark_gray", + "use_action": { + "type": "place_trap", + "trap": "tr_caltrops_teeth", + "moves": 150, + "practice": 2, + "done_message": "You scatter the teeth caltrops on the %s." + }, + "flags": [ "SINGLE_USE" ], + "melee_damage": { "cut": 12 } } ] diff --git a/data/json/recipes/recipe_traps.json b/data/json/recipes/recipe_traps.json index 6287e7672cf4c..49dee9dcce68e 100644 --- a/data/json/recipes/recipe_traps.json +++ b/data/json/recipes/recipe_traps.json @@ -45,6 +45,19 @@ "qualities": [ { "id": "HAMMER", "level": 2 }, { "id": "SAW_M", "level": 1 }, { "id": "VISE", "level": 1 } ], "components": [ [ [ "wire_barbed", 10 ], [ "wire", 10 ], [ "nails", 10, "LIST" ] ] ] }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "result": "caltrops_teeth", + "category": "CC_OTHER", + "subcategory": "CSC_OTHER_TRAPS", + "skill_used": "fabrication", + "skills_required": [ "traps", 1 ], + "difficulty": 1, + "time": "5 m", + "autolearn": true, + "components": [ [ [ "nm_teeth", 4 ] ], [ [ "superglue", 1 ], [ "bone_glue", 1 ] ] ] + }, { "type": "recipe", "activity_level": "LIGHT_EXERCISE", diff --git a/data/json/recipes/weapon/bashing.json b/data/json/recipes/weapon/bashing.json index 7e176c3c3bd51..52f6a66b5220a 100644 --- a/data/json/recipes/weapon/bashing.json +++ b/data/json/recipes/weapon/bashing.json @@ -283,6 +283,21 @@ "using": [ [ "adhesive", 5 ] ], "components": [ [ [ "glass_shard", 40 ], [ "ceramic_shard", 40 ] ], [ [ "2x4", 1 ] ] ] }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "result": "teeth_macuahuitl", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_CUTTING", + "skill_used": "fabrication", + "difficulty": 1, + "time": "10 m", + "reversible": true, + "autolearn": true, + "qualities": [ { "id": "CUT", "level": 1 } ], + "using": [ [ "adhesive", 5 ] ], + "components": [ [ [ "nm_teeth", 40 ] ], [ [ "2x4", 1 ] ] ] + }, { "type": "recipe", "activity_level": "LIGHT_EXERCISE", diff --git a/data/json/requirements/toolsets.json b/data/json/requirements/toolsets.json index a13956ac83c65..6c68c2c2a0684 100644 --- a/data/json/requirements/toolsets.json +++ b/data/json/requirements/toolsets.json @@ -500,5 +500,13 @@ "id": "metal_file_any", "type": "requirement", "tools": [ [ [ "metal_file", -1 ], [ "bronze_file", -1 ] ] ] + }, + { + "id": "nm_teeth_removal", + "type": "requirement", + "//": "Something able to do fine cuts, allowing to extract small teeth without damaging them", + "//2": "The comment called for adequate protection. When a way to check for that without writing down and keeping updated a list of anything that can protect the arms in the requirements, add arm protection requirement", + "//3": "Can instead add arm damage risk, mitigated by skill and reduced by armor, when such a thing becomes possible", + "qualities": [ { "id": "CUT_FINE", "level": 2 } ] } ] diff --git a/data/json/traps.json b/data/json/traps.json index 2369742a8719a..ecfcea1fd47b5 100644 --- a/data/json/traps.json +++ b/data/json/traps.json @@ -1179,5 +1179,35 @@ "difficulty": 0, "action": "sound_detect", "sound_threshold": [ 15, 25 ] + }, + { + "type": "trap", + "id": "tr_teeth", + "name": "scattered monster teeth", + "color": "light_cyan", + "memorial_male": { "ctxt": "memorial_male", "str": "Stepped on teeth." }, + "memorial_female": { "ctxt": "memorial_female", "str": "Stepped on teeth." }, + "symbol": "_", + "visibility": 6, + "avoidance": 8, + "difficulty": 0, + "action": "glass", + "drops": [ "nm_teeth" ], + "vehicle_data": { "sound_volume": 10, "sound": "Crunch!" } + }, + { + "type": "trap", + "id": "tr_caltrops_teeth", + "name": "monster teeth caltrops", + "color": "dark_gray", + "memorial_male": { "ctxt": "memorial_male", "str": "Stepped on a tooth caltrop." }, + "memorial_female": { "ctxt": "memorial_female", "str": "Stepped on a tooth caltrop." }, + "symbol": "_", + "visibility": 6, + "avoidance": 6, + "difficulty": 0, + "action": "caltrops_glass", + "drops": [ "caltrops_teeth" ], + "vehicle_data": { "damage": 600 } } ]