From f03fc826f19c96c8be0ba6f72d121d1487a4d009 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 6 Jun 2015 11:20:56 +0930 Subject: [PATCH] Fixes #9597 --- .../objects/items/weapons/material/material_weapons.dm | 9 +++++++++ code/modules/materials/material_sheets.dm | 8 +------- code/modules/materials/materials.dm | 10 ++++++++++ 3 files changed, 20 insertions(+), 7 deletions(-) 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 7f53be3c30..66073fd936 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