diff --git a/code/game/objects/items/weapons/material/material_weapons.dm b/code/game/objects/items/weapons/material/material_weapons.dm index fe33163dba..6ff156b27f 100644 --- a/code/game/objects/items/weapons/material/material_weapons.dm +++ b/code/game/objects/items/weapons/material/material_weapons.dm @@ -23,6 +23,15 @@ if(!material_key) material_key = default_material set_material(material_key) + if(!material) + qdel(src) + return + + matter = material.get_matter() + if(matter.len) + for(var/material_type in matter) + if(!isnull(matter[material_type])) + matter[material_type] *= force_divisor // May require a new var instead. /obj/item/weapon/material/proc/update_force() if(edge || sharp) diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm index 312992ed7e..ec6f51540f 100644 --- a/code/modules/materials/material_sheets.dm +++ b/code/modules/materials/material_sheets.dm @@ -38,13 +38,7 @@ if(material.conductive) flags |= CONDUCT - if(!islist(matter)) - matter = list() - if(material.composite_material) - for(var/material_string in material.composite_material) - matter[material_string] = material.composite_material[material_string] - else - matter[material.name] = material.stack_per_sheet + matter = material.get_matter() return 1 /obj/item/stack/material/transfer_to(obj/item/stack/S, var/tamount=null, var/type_verified) diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm index 4f3eed006e..710e8caf9d 100644 --- a/code/modules/materials/materials.dm +++ b/code/modules/materials/materials.dm @@ -104,6 +104,16 @@ var/list/name_to_material /material/proc/get_blunt_damage() return weight //todo +// Return the matter comprising this material. +/material/proc/get_matter() + var/list/temp_matter = list() + if(islist(composite_material)) + for(var/material_string in composite_material) + temp_matter[material_string] = composite_material[material_string] + else if(stack_per_sheet) + temp_matter[name] = stack_per_sheet + return temp_matter + // As above. /material/proc/get_edge_damage() return hardness //todo