diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 519a7177d7a..60ce5e32a34 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -154,7 +154,7 @@ Class Procs: if(use_power && stat == 0) use_power(7500/severity) - new/obj/effect/overlay/temp/emp(src.loc) + new/obj/effect/overlay/temp/emp(loc) ..() /obj/machinery/ex_act(severity) @@ -184,9 +184,9 @@ Class Procs: /obj/machinery/proc/auto_use_power() if(!powered(power_channel)) return 0 - if(src.use_power == 1) + if(use_power == 1) use_power(idle_power_usage,power_channel, 1) - else if(src.use_power >= 2) + else if(use_power >= 2) use_power(active_power_usage,power_channel, 1) return 1 @@ -229,7 +229,7 @@ Class Procs: if(!(href_list["set_tag"] in vars)) to_chat(usr, "Something went wrong: Unable to find [href_list["set_tag"]] in vars!") return 1 - var/current_tag = src.vars[href_list["set_tag"]] + var/current_tag = vars[href_list["set_tag"]] var/newid = copytext(reject_bad_text(input(usr, "Specify the new value", src, current_tag) as null|text),1,MAX_MESSAGE_LEN) if(newid) vars[href_list["set_tag"]] = newid @@ -355,13 +355,13 @@ Class Procs: return 1 if(panel_open) - src.add_fingerprint(user) + add_fingerprint(user) return 0 if(!interact_offline && stat & (NOPOWER|BROKEN|MAINT)) return 1 - src.add_fingerprint(user) + add_fingerprint(user) return ..() @@ -379,8 +379,8 @@ Class Procs: /obj/machinery/proc/default_deconstruction_crowbar(var/obj/item/weapon/crowbar/C, var/ignore_panel = 0) if(istype(C) && (panel_open || ignore_panel)) - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc) + playsound(loc, 'sound/items/Crowbar.ogg', 50, 1) + var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(loc) M.state = 2 M.icon_state = "box_1" for(var/obj/item/I in component_parts) @@ -393,7 +393,7 @@ Class Procs: /obj/machinery/proc/default_deconstruction_screwdriver(var/mob/user, var/icon_state_open, var/icon_state_closed, var/obj/item/weapon/screwdriver/S) if(istype(S)) - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1) if(!panel_open) panel_open = 1 icon_state = icon_state_open @@ -407,7 +407,7 @@ Class Procs: /obj/machinery/proc/default_change_direction_wrench(var/mob/user, var/obj/item/weapon/wrench/W) if(panel_open && istype(W)) - playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) dir = turn(dir,-90) to_chat(user, "You rotate [src].") return 1 @@ -416,11 +416,14 @@ Class Procs: /obj/proc/default_unfasten_wrench(mob/user, obj/item/weapon/wrench/W, time = 20) if(istype(W)) to_chat(user, "Now [anchored ? "un" : ""]securing [name].") - playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user, time, target = src)) to_chat(user, "You've [anchored ? "un" : ""]secured [name].") anchored = !anchored - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + if(istype(src, /obj/machinery)) + var/obj/machinery/M = src + M.power_change() //Turn on or off the machine depending on the status of power in the new area. + playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) return 1 return 0 @@ -506,7 +509,7 @@ Class Procs: if(check_access && !allowed(perp)) threatcount += 4 - if(auth_weapons && !src.allowed(perp)) + if(auth_weapons && !allowed(perp)) if(istype(perp.l_hand, /obj/item/weapon/gun) || istype(perp.l_hand, /obj/item/weapon/melee)) threatcount += 4 diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index a75bdd3ec80..7fba50784b8 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -95,10 +95,10 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin if(usr.stat || !usr.canmove || usr.restrained()) return - if(src.anchored) + if(anchored) to_chat(usr, "It is fastened to the floor!") return 0 - src.dir = turn(src.dir, 270) + dir = turn(dir, 270) return 1 /obj/structure/particle_accelerator/AltClick(mob/user) @@ -116,29 +116,29 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin if(usr.stat || !usr.canmove || usr.restrained()) return - if(src.anchored) + if(anchored) to_chat(usr, "It is fastened to the floor!") return 0 - src.dir = turn(src.dir, 90) + dir = turn(dir, 90) return 1 /obj/structure/particle_accelerator/examine(mob/user) - switch(src.construction_state) + switch(construction_state) if(0) - src.desc = text("A [name], looks like it's not attached to the flooring") + desc = text("A [name], looks like it's not attached to the flooring") if(1) - src.desc = text("A [name], it is missing some cables") + desc = text("A [name], it is missing some cables") if(2) - src.desc = text("A [name], the panel is open") + desc = text("A [name], the panel is open") if(3) - src.desc = text("The [name] is assembled") + desc = text("The [name] is assembled") if(powered) - src.desc = src.desc_holder + desc = desc_holder ..(user) /obj/structure/particle_accelerator/attackby(obj/item/W, mob/user, params) if(istool(W)) - if(src.process_tool_hit(W,user)) + if(process_tool_hit(W,user)) return ..() return @@ -208,7 +208,7 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin /obj/structure/particle_accelerator/proc/connect_master(var/obj/O) if(O && istype(O,/obj/machinery/particle_accelerator/control_box)) - if(O.dir == src.dir) + if(O.dir == dir) master = O return 1 return 0 @@ -219,51 +219,51 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin return 0 if(!ismob(user) || !isobj(O)) return 0 - var/temp_state = src.construction_state + var/temp_state = construction_state - switch(src.construction_state)//TODO:Might be more interesting to have it need several parts rather than a single list of steps + switch(construction_state)//TODO:Might be more interesting to have it need several parts rather than a single list of steps if(0) if(iswrench(O) && !isinspace()) - playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) - src.anchored = 1 - user.visible_message("[user.name] secures the [src.name] to the floor.", \ + playsound(loc, 'sound/items/Ratchet.ogg', 75, 1) + anchored = 1 + user.visible_message("[user.name] secures the [name] to the floor.", \ "You secure the external bolts.") temp_state++ if(1) if(iswrench(O)) - playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) - src.anchored = 0 - user.visible_message("[user.name] detaches the [src.name] from the floor.", \ + playsound(loc, 'sound/items/Ratchet.ogg', 75, 1) + anchored = 0 + user.visible_message("[user.name] detaches the [name] from the floor.", \ "You remove the external bolts.") temp_state-- else if(iscoil(O)) var/obj/item/stack/cable_coil/C = O if(C.use(1)) - user.visible_message("[user.name] adds wires to the [src.name].", \ + user.visible_message("[user.name] adds wires to the [name].", \ "You add some wires.") temp_state++ else - to_chat(user, "You need one length of cable to wire the [src.name]!") + to_chat(user, "You need one length of cable to wire the [name]!") return if(2) if(iswirecutter(O))//TODO:Shock user if its on? - user.visible_message("[user.name] removes some wires from the [src.name].", \ + user.visible_message("[user.name] removes some wires from the [name].", \ "You remove some wires.") temp_state-- else if(isscrewdriver(O)) - user.visible_message("[user.name] closes the [src.name]'s access panel.", \ + user.visible_message("[user.name] closes the [name]'s access panel.", \ "You close the access panel.") temp_state++ if(3) if(isscrewdriver(O)) - user.visible_message("[user.name] opens the [src.name]'s access panel.", \ + user.visible_message("[user.name] opens the [name]'s access panel.", \ "You open the access panel.") temp_state-- - if(temp_state == src.construction_state)//Nothing changed + if(temp_state == construction_state)//Nothing changed return 0 else - src.construction_state = temp_state - if(src.construction_state < 3)//Was taken apart, update state + construction_state = temp_state + if(construction_state < 3)//Was taken apart, update state update_state() update_icon() return 1 @@ -296,10 +296,10 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin if(usr.stat || !usr.canmove || usr.restrained()) return - if(src.anchored) + if(anchored) to_chat(usr, "It is fastened to the floor!") return 0 - src.dir = turn(src.dir, 270) + dir = turn(dir, 270) return 1 /obj/machinery/particle_accelerator/verb/rotateccw() @@ -309,10 +309,10 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin if(usr.stat || !usr.canmove || usr.restrained()) return - if(src.anchored) + if(anchored) to_chat(usr, "It is fastened to the floor!") return 0 - src.dir = turn(src.dir, 90) + dir = turn(dir, 90) return 1 /obj/machinery/particle_accelerator/update_icon() @@ -320,7 +320,7 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin /obj/machinery/particle_accelerator/attackby(obj/item/W, mob/user, params) if(istool(W)) - if(src.process_tool_hit(W,user)) + if(process_tool_hit(W,user)) return ..() return @@ -357,51 +357,53 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin return 0 if(!ismob(user) || !isobj(O)) return 0 - var/temp_state = src.construction_state - switch(src.construction_state)//TODO:Might be more interesting to have it need several parts rather than a single list of steps + var/temp_state = construction_state + switch(construction_state)//TODO:Might be more interesting to have it need several parts rather than a single list of steps if(0) if(iswrench(O)) - playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) - src.anchored = 1 - user.visible_message("[user.name] secures the [src.name] to the floor.", \ + playsound(loc, 'sound/items/Ratchet.ogg', 75, 1) + anchored = 1 + user.visible_message("[user.name] secures the [name] to the floor.", \ "You secure the external bolts.") temp_state++ + power_change() if(1) if(iswrench(O)) - playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) - src.anchored = 0 - user.visible_message("[user.name] detaches the [src.name] from the floor.", \ + playsound(loc, 'sound/items/Ratchet.ogg', 75, 1) + anchored = 0 + user.visible_message("[user.name] detaches the [name] from the floor.", \ "You remove the external bolts.") temp_state-- + power_change() else if(iscoil(O)) if(O:use(1)) - user.visible_message("[user.name] adds wires to the [src.name].", \ + user.visible_message("[user.name] adds wires to the [name].", \ "You add some wires.") temp_state++ if(2) if(iswirecutter(O))//TODO:Shock user if its on? - user.visible_message("[user.name] removes some wires from the [src.name].", \ + user.visible_message("[user.name] removes some wires from the [name].", \ "You remove some wires.") temp_state-- else if(isscrewdriver(O)) - user.visible_message("[user.name] closes the [src.name]'s access panel.", \ + user.visible_message("[user.name] closes the [name]'s access panel.", \ "You close the access panel.") temp_state++ if(3) if(isscrewdriver(O)) - user.visible_message("[user.name] opens the [src.name]'s access panel.", \ + user.visible_message("[user.name] opens the [name]'s access panel.", \ "You open the access panel.") temp_state-- active = 0 - if(temp_state == src.construction_state)//Nothing changed + if(temp_state == construction_state)//Nothing changed return 0 else - if(src.construction_state < 3)//Was taken apart, update state + if(construction_state < 3)//Was taken apart, update state update_state() if(use_power) use_power = 0 - src.construction_state = temp_state - if(src.construction_state >= 3) + construction_state = temp_state + if(construction_state >= 3) use_power = 1 update_icon() return 1 diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index ed2fb257015..636fe7d338b 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -24,6 +24,7 @@ /obj/machinery/particle_accelerator/control_box/New() wires = new(src) connected_parts = list() + update_icon() ..() /obj/machinery/particle_accelerator/control_box/Destroy() @@ -34,7 +35,7 @@ return ..() /obj/machinery/particle_accelerator/control_box/attack_ghost(user as mob) - return src.attack_hand(user) + return attack_hand(user) /obj/machinery/particle_accelerator/control_box/attack_hand(mob/user as mob) if(construction_state >= 3) @@ -62,9 +63,12 @@ /obj/machinery/particle_accelerator/control_box/update_icon() if(active) - icon_state = "[reference]p1" + icon_state = "[reference]p[strength]" else - if(use_power) + if(stat & NOPOWER) + icon_state = "[reference]w" + return + else if(use_power) if(assembled) icon_state = "[reference]p" else @@ -89,16 +93,16 @@ to_chat(usr, "ERROR: Request timed out. Check wire contacts.") return - if( href_list["close"] ) + if(href_list["close"]) usr << browse(null, "window=pacontrol") usr.unset_machine() return if(href_list["togglep"]) if(!wires.IsIndexCut(PARTICLE_TOGGLE_WIRE)) - src.toggle_power() + toggle_power() else if(href_list["scan"]) - src.part_scan() + part_scan() else if(href_list["strengthup"]) if(!wires.IsIndexCut(PARTICLE_STRENGTH_WIRE)) @@ -108,8 +112,8 @@ if(!wires.IsIndexCut(PARTICLE_STRENGTH_WIRE)) remove_strength() - src.updateDialog() - src.update_icon() + updateDialog() + update_icon() return @@ -152,32 +156,39 @@ use_power = 0 else if(!stat && construction_state <= 3) use_power = 1 + update_icon() + + if((stat & NOPOWER) || (!stat && construction_state <= 3)) //Only update the part icons if something's changed (i.e. any of the above condition sets are met). + for(var/obj/structure/particle_accelerator/part in connected_parts) + part.strength = null + part.powered = 0 + part.update_icon() return /obj/machinery/particle_accelerator/control_box/process() - if(src.active) + if(active) //a part is missing! - if( length(connected_parts) < 6 ) + if(length(connected_parts) < 6) investigate_log("lost a connected part; It powered down.","singulo") - src.toggle_power() + toggle_power() return //emit some particles for(var/obj/structure/particle_accelerator/particle_emitter/PE in connected_parts) if(PE) - PE.emit_particle(src.strength) + PE.emit_particle(strength) return /obj/machinery/particle_accelerator/control_box/proc/part_scan() for(var/obj/structure/particle_accelerator/fuel_chamber/F in orange(1,src)) - src.dir = F.dir + dir = F.dir connected_parts = list() var/tally = 0 var/ldir = turn(dir,-90) var/rdir = turn(dir,90) var/odir = turn(dir,180) - var/turf/T = src.loc + var/turf/T = loc T = get_step(T,rdir) if(check_part(T,/obj/structure/particle_accelerator/fuel_chamber)) tally++ @@ -213,26 +224,26 @@ if(istype(PA, type)) if(PA.connect_master(src)) if(PA.report_ready(src)) - src.connected_parts.Add(PA) + connected_parts.Add(PA) return 1 return 0 /obj/machinery/particle_accelerator/control_box/proc/toggle_power() - src.active = !src.active + active = !active investigate_log("turned [active?"ON":"OFF"] by [usr ? usr.key : "outside forces"]","singulo") if(active) msg_admin_attack("PA Control Computer turned ON by [key_name(usr, usr.client)](?) in ([x],[y],[z] - JMP)",0,1) log_game("PA Control Computer turned ON by [usr.ckey]([usr]) in ([x],[y],[z])") use_log += text("\[[time_stamp()]\] [usr.name] ([usr.ckey]) has turned on the PA Control Computer.") - if(src.active) - src.use_power = 2 + if(active) + use_power = 2 for(var/obj/structure/particle_accelerator/part in connected_parts) - part.strength = src.strength + part.strength = strength part.powered = 1 part.update_icon() else - src.use_power = 1 + use_power = 1 for(var/obj/structure/particle_accelerator/part in connected_parts) part.strength = null part.powered = 0 @@ -262,13 +273,13 @@ else dat += "Off
" dat += "Toggle Power

" - dat += "Particle Strength: [src.strength] " + dat += "Particle Strength: [strength] " dat += "--|++

" //user << browse(dat, "window=pacontrol;size=420x500") //onclose(user, "pacontrol") var/datum/browser/popup = new(user, "pacontrol", name, 420, 500) popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) popup.open() return \ No newline at end of file