From eaf3f014c41667e9fe2b074508c34c8cf7be5e9d Mon Sep 17 00:00:00 2001 From: warriorstar-orion Date: Tue, 8 Apr 2025 09:49:39 -0400 Subject: [PATCH] convert random smith item to spawner (#28931) --- code/_globalvars/lists/maint_loot_tables.dm | 2 +- .../effects/spawners/random/misc_spawners.dm | 76 +++++++++++++++++++ code/modules/smithing/smith_item.dm | 74 ------------------ 3 files changed, 77 insertions(+), 75 deletions(-) diff --git a/code/_globalvars/lists/maint_loot_tables.dm b/code/_globalvars/lists/maint_loot_tables.dm index 728f99fbd1e..3f288e0525c 100644 --- a/code/_globalvars/lists/maint_loot_tables.dm +++ b/code/_globalvars/lists/maint_loot_tables.dm @@ -130,7 +130,7 @@ GLOBAL_LIST_INIT(maintenance_loot_tier_2, list( /obj/item/clothing/head/welding, /obj/item/crowbar/red, /obj/item/storage/belt/utility, - /obj/item/smithed_item/random, + /obj/effect/spawner/random/smithed_item/any, ) = 45, list( diff --git a/code/game/objects/effects/spawners/random/misc_spawners.dm b/code/game/objects/effects/spawners/random/misc_spawners.dm index 95ccbca86df..9b29645438b 100644 --- a/code/game/objects/effects/spawners/random/misc_spawners.dm +++ b/code/game/objects/effects/spawners/random/misc_spawners.dm @@ -116,6 +116,82 @@ /obj/item/flashlight/flare/glowstick/pink, ) +/obj/effect/spawner/random/smithed_item + name = "random smithed item" + icon = 'icons/effects/random_spawners.dmi' + icon_state = "metal" + record_spawn = TRUE + + /// Weighted list of possible item qualities + var/static/list/smithed_item_qualities = list( + /datum/smith_quality = 9, + /datum/smith_quality/improved = 1 + ) + /// Weighted list of possible item materials + var/static/list/smithed_item_materials = list( + /datum/smith_material/metal = 40, + /datum/smith_material/silver = 10, + /datum/smith_material/gold = 5, + /datum/smith_material/plasma = 10, + /datum/smith_material/titanium = 5, + /datum/smith_material/uranium = 3, + /datum/smith_material/brass = 15 + ) + +/obj/effect/spawner/random/smithed_item/make_item(spawn_loc, type_path_to_make) + var/obj/item/smithed_item/new_item = ..() + new_item.quality = pickweight(smithed_item_qualities) + new_item.material = pickweight(smithed_item_materials) + new_item.set_stats() + new_item.update_appearance(UPDATE_NAME) + + return new_item + +/obj/effect/spawner/random/smithed_item/any + loot = list( + /obj/item/smithed_item/insert/ballistic, + /obj/item/smithed_item/insert/thermal, + /obj/item/smithed_item/insert/fireproofing, + /obj/item/smithed_item/insert/reflective, + /obj/item/smithed_item/insert/rad_hazard, + /obj/item/smithed_item/insert/rubberized, + /obj/item/smithed_item/tool_bit/speed, + /obj/item/smithed_item/tool_bit/balanced, + /obj/item/smithed_item/tool_bit/efficiency, + /obj/item/smithed_item/lens/accelerator, + /obj/item/smithed_item/lens/speed, + /obj/item/smithed_item/lens/amplifier, + /obj/item/smithed_item/lens/efficiency + ) + +/obj/effect/spawner/random/smithed_item/insert + name = "random smithed insert" + loot = list( + /obj/item/smithed_item/insert/ballistic, + /obj/item/smithed_item/insert/thermal, + /obj/item/smithed_item/insert/fireproofing, + /obj/item/smithed_item/insert/reflective, + /obj/item/smithed_item/insert/rad_hazard, + /obj/item/smithed_item/insert/rubberized + ) + +/obj/effect/spawner/random/smithed_item/bit + name = "random smithed tool bit" + loot = list( + /obj/item/smithed_item/tool_bit/speed, + /obj/item/smithed_item/tool_bit/balanced, + /obj/item/smithed_item/tool_bit/efficiency + ) + +/obj/effect/spawner/random/smithed_item/lens + name = "random smithed lens" + loot = list( + /obj/item/smithed_item/lens/accelerator, + /obj/item/smithed_item/lens/speed, + /obj/item/smithed_item/lens/amplifier, + /obj/item/smithed_item/lens/efficiency + ) + /obj/effect/spawner/random/space_pirate name = "random space pirate spawner" loot = list( diff --git a/code/modules/smithing/smith_item.dm b/code/modules/smithing/smith_item.dm index 052e08208e0..062ea158233 100644 --- a/code/modules/smithing/smith_item.dm +++ b/code/modules/smithing/smith_item.dm @@ -37,77 +37,3 @@ name = "[quality.name] " + name return name = "[quality.name] [material.name] [initial(name)]" - -// Random Spawners -/obj/item/smithed_item/random - name = "random smithed item" - desc = "If you see me please contact development because I should not exist." - /// Weighted list of possible item qualities - var/list/smithed_item_qualities = list( - /datum/smith_quality = 9, - /datum/smith_quality/improved = 1 - ) - /// Weighted list of possible item materials - var/list/smithed_item_materials = list( - /datum/smith_material/metal = 40, - /datum/smith_material/silver = 10, - /datum/smith_material/gold = 5, - /datum/smith_material/plasma = 10, - /datum/smith_material/titanium = 5, - /datum/smith_material/uranium = 3, - /datum/smith_material/brass = 15 - ) - /// List of possible item types - var/list/smithed_type_list = list( - /obj/item/smithed_item/insert/ballistic, - /obj/item/smithed_item/insert/thermal, - /obj/item/smithed_item/insert/fireproofing, - /obj/item/smithed_item/insert/reflective, - /obj/item/smithed_item/insert/rad_hazard, - /obj/item/smithed_item/insert/rubberized, - /obj/item/smithed_item/tool_bit/speed, - /obj/item/smithed_item/tool_bit/balanced, - /obj/item/smithed_item/tool_bit/efficiency, - /obj/item/smithed_item/lens/accelerator, - /obj/item/smithed_item/lens/speed, - /obj/item/smithed_item/lens/amplifier, - /obj/item/smithed_item/lens/efficiency - ) - -/obj/item/smithed_item/random/Initialize(mapload) - . = ..() - var/picked_type = pick(smithed_type_list) - var/obj/item/smithed_item/new_item = new picked_type(src.loc) - new_item.quality = pickweight(smithed_item_qualities) - new_item.material = pickweight(smithed_item_materials) - new_item.set_stats() - new_item.update_appearance(UPDATE_NAME) - qdel(src) - -/obj/item/smithed_item/random/insert - name = "random smithed insert" - smithed_type_list = list( - /obj/item/smithed_item/insert/ballistic, - /obj/item/smithed_item/insert/thermal, - /obj/item/smithed_item/insert/fireproofing, - /obj/item/smithed_item/insert/reflective, - /obj/item/smithed_item/insert/rad_hazard, - /obj/item/smithed_item/insert/rubberized - ) - -/obj/item/smithed_item/random/bit - name = "random smithed tool bit" - smithed_type_list = list( - /obj/item/smithed_item/tool_bit/speed, - /obj/item/smithed_item/tool_bit/balanced, - /obj/item/smithed_item/tool_bit/efficiency - ) - -/obj/item/smithed_item/random/lens - name = "random smithed lens" - smithed_type_list = list( - /obj/item/smithed_item/lens/accelerator, - /obj/item/smithed_item/lens/speed, - /obj/item/smithed_item/lens/amplifier, - /obj/item/smithed_item/lens/efficiency - )