diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 5eadfb7d07..615376f85d 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -24,13 +24,16 @@ GLOBAL_LIST_EMPTY(solars_list) var/ndir = SOUTH // target dir var/turn_angle = 0 var/obj/machinery/power/solar_control/control = null + var/glass_type = /obj/item/stack/material/glass /obj/machinery/power/solar/drain_power() return -1 -/obj/machinery/power/solar/Initialize(mapload, obj/item/solar_assembly/S) +/obj/machinery/power/solar/Initialize(mapload, glass_type) . = ..() - Make(S) + if(glass_type == /obj/item/stack/material/glass/reinforced) //if the panel is in reinforced glass + health *= 2 + update_icon() connect_to_network() /obj/machinery/power/solar/Destroy() @@ -50,28 +53,16 @@ GLOBAL_LIST_EMPTY(solars_list) control.connected_panels.Remove(src) control = null -/obj/machinery/power/solar/proc/Make(var/obj/item/solar_assembly/S) - if(!S) - S = new /obj/item/solar_assembly(src) - S.glass_type = /obj/item/stack/material/glass - S.anchored = TRUE - S.loc = src - if(S.glass_type == /obj/item/stack/material/glass/reinforced) //if the panel is in reinforced glass - health *= 2 //this need to be placed here, because panels already on the map don't have an assembly linked to - update_icon() - - - /obj/machinery/power/solar/attackby(obj/item/weapon/W, mob/user) if(W.is_crowbar()) playsound(src, 'sound/machines/click.ogg', 50, 1) user.visible_message("[user] begins to take the glass off the solar panel.") if(do_after(user, 50)) - var/obj/item/solar_assembly/S = locate() in src - if(S) - S.loc = src.loc - S.give_glass() + var/obj/item/solar_assembly/S = new(loc) + S.anchored = TRUE + var/obj/item/stack/glass = new glass_type(loc) + glass.amount = 2 playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) user.visible_message("[user] takes the glass off the solar panel.") qdel(src) @@ -169,8 +160,8 @@ GLOBAL_LIST_EMPTY(solars_list) return -/obj/machinery/power/solar/fake/New(var/turf/loc, var/obj/item/solar_assembly/S) - ..(loc, S, 0) +/obj/machinery/power/solar/fake/New(var/turf/loc, var/glass_type) + ..(loc, glass_type, 0) /obj/machinery/power/solar/fake/process() . = PROCESS_KILL @@ -213,20 +204,11 @@ GLOBAL_LIST_EMPTY(solars_list) w_class = ITEMSIZE_LARGE // Pretty big! anchored = 0 var/tracker = 0 - var/glass_type = null /obj/item/solar_assembly/attack_hand(var/mob/user) if(!anchored || !isturf(loc)) // You can't pick it up ..() -// Give back the glass type we were supplied with -/obj/item/solar_assembly/proc/give_glass() - if(glass_type) - var/obj/item/stack/material/S = new glass_type(src.loc) - S.amount = 2 - glass_type = null - - /obj/item/solar_assembly/attackby(var/obj/item/weapon/W, var/mob/user) if (!isturf(loc)) return 0 @@ -246,13 +228,12 @@ GLOBAL_LIST_EMPTY(solars_list) if(istype(W, /obj/item/stack/material) && (W.get_material_name() == "glass" || W.get_material_name() == "rglass")) var/obj/item/stack/material/S = W if(S.use(2)) - glass_type = W.type playsound(src, 'sound/machines/click.ogg', 50, 1) user.visible_message("[user] places the glass on the solar assembly.") if(tracker) - new /obj/machinery/power/tracker(get_turf(src), src) + new /obj/machinery/power/tracker(get_turf(src), W.type) else - new /obj/machinery/power/solar(get_turf(src), src) + new /obj/machinery/power/solar(get_turf(src), W.type) qdel(src) else to_chat(user, "You need two sheets of glass to put them into a solar panel.") diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm index 0e2cc7cbf8..c03d7db3b6 100644 --- a/code/modules/power/tracker.dm +++ b/code/modules/power/tracker.dm @@ -11,14 +11,15 @@ anchored = 1 density = 1 use_power = USE_POWER_OFF + var/glass_type = /obj/item/stack/material/glass var/id = 0 var/sun_angle = 0 // sun angle as set by sun datum var/obj/machinery/power/solar_control/control = null -/obj/machinery/power/tracker/New(var/turf/loc, var/obj/item/solar_assembly/S) - ..(loc) - Make(S) +/obj/machinery/power/tracker/Initialize(mapload, glass_type) + . = ..() + update_icon() connect_to_network() /obj/machinery/power/tracker/Destroy() @@ -38,15 +39,6 @@ control.connected_tracker = null control = null -/obj/machinery/power/tracker/proc/Make(var/obj/item/solar_assembly/S) - if(!S) - S = new /obj/item/solar_assembly(src) - S.glass_type = /obj/item/stack/material/glass - S.tracker = 1 - S.anchored = 1 - S.loc = src - update_icon() - //updates the tracker icon and the facing angle for the control computer /obj/machinery/power/tracker/proc/set_angle(var/angle) sun_angle = angle @@ -63,10 +55,11 @@ playsound(src, 'sound/machines/click.ogg', 50, 1) user.visible_message("[user] begins to take the glass off the solar tracker.") if(do_after(user, 50)) - var/obj/item/solar_assembly/S = locate() in src - if(S) - S.loc = src.loc - S.give_glass() + var/obj/item/solar_assembly/S = new(loc) + S.tracker = TRUE + S.anchored = TRUE + var/obj/item/stack/glass = new glass_type(loc) + glass.amount = 2 playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) user.visible_message("[user] takes the glass off the tracker.") qdel(src)