diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index cb28d9770a8..d76b70b582e 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -23,6 +23,10 @@ name = "airlock" icon = 'icons/obj/doors/doorint.dmi' icon_state = "door_closed" + autoclose = 1 + explosion_block = 1 + assemblytype = /obj/structure/door_assembly + normalspeed = 1 var/aiControlDisabled = 0 //If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in. var/hackProof = 0 // if 1, this door can't be hacked by the AI var/electrified_until = 0 // World time when the door is no longer electrified. -1 if it is permanently electrified until someone fixes it. @@ -40,15 +44,11 @@ var/obj/machinery/door/airlock/closeOther = null var/closeOtherId = null var/lockdownbyai = 0 - assemblytype = /obj/structure/door_assembly var/mineral = null var/justzap = 0 var/safe = 1 - normalspeed = 1 var/obj/item/weapon/airlock_electronics/electronics = null var/hasShocked = 0 //Prevents multiple shocks from happening - autoclose = 1 - explosion_block = 1 var/doorOpen = 'sound/machines/airlock_open.ogg' var/doorClose = 'sound/machines/airlock_close.ogg' var/doorDeni = 'sound/machines/DeniedBeep.ogg' // i'm thinkin' Deni's @@ -57,7 +57,7 @@ var/is_special = 0 /obj/machinery/door/airlock/welded - welded = 1 + welded = TRUE /* About the new airlock wires panel: * An airlock wire dialog can be accessed by the normal way or by using wirecutters or a multitool on the door while the wire-panel is open. This would show the following wires, which you can either wirecut/mend or send a multitool pulse through. There are 9 wires. @@ -101,16 +101,16 @@ About the new airlock wires panel: electrified_timer = null return ..() -/obj/machinery/door/airlock/bumpopen(mob/living/user as mob) //Airlocks now zap you when you 'bump' them open when they're electrified. --NeoFite +/obj/machinery/door/airlock/bumpopen(mob/living/user) //Airlocks now zap you when you 'bump' them open when they're electrified. --NeoFite if(!issilicon(usr)) - if(src.isElectrified()) - if(!src.justzap) - if(src.shock(user, 100)) - src.justzap = 1 + if(isElectrified()) + if(!justzap) + if(shock(user, 100)) + justzap = 1 spawn (10) - src.justzap = 0 + justzap = 0 return - else /*if(src.justzap)*/ + else /*if(justzap)*/ return else if(user.hallucination > 50 && prob(10) && !operating) to_chat(user, "You feel a powerful shock course through your body!") @@ -119,10 +119,9 @@ About the new airlock wires panel: return ..(user) -/obj/machinery/door/airlock/bumpopen(mob/living/simple_animal/user as mob) +/obj/machinery/door/airlock/bumpopen(mob/living/simple_animal/user) ..(user) - /obj/machinery/door/airlock/autoclose() autoclose_timer = 0 if(!qdeleted(src) && !density && !operating && !locked && !welded && autoclose) @@ -130,27 +129,27 @@ About the new airlock wires panel: return /obj/machinery/door/airlock/proc/isElectrified() - if(src.electrified_until != 0) + if(electrified_until != 0) return 1 return 0 -/obj/machinery/door/airlock/proc/isWireCut(var/wireIndex) +/obj/machinery/door/airlock/proc/isWireCut(wireIndex) // You can find the wires in the datum folder. return wires.IsIndexCut(wireIndex) /obj/machinery/door/airlock/proc/canAIControl() - return ((src.aiControlDisabled!=1) && (!src.isAllPowerLoss())); + return ((aiControlDisabled!=1) && (!isAllPowerLoss())); /obj/machinery/door/airlock/proc/canAIHack() - return ((src.aiControlDisabled==1) && (!hackProof) && (!src.isAllPowerLoss())); + return ((aiControlDisabled==1) && (!hackProof) && (!isAllPowerLoss())); /obj/machinery/door/airlock/proc/arePowerSystemsOn() if(stat & (NOPOWER|BROKEN)) return 0 - return (src.main_power_lost_until==0 || src.backup_power_lost_until==0) + return (main_power_lost_until==0 || backup_power_lost_until==0) /obj/machinery/door/airlock/requiresID() - return !(src.isWireCut(AIRLOCK_WIRE_IDSCAN) || aiDisabledIdScanner) + return !(isWireCut(AIRLOCK_WIRE_IDSCAN) || aiDisabledIdScanner) /obj/machinery/door/airlock/proc/isAllPowerLoss() if(stat & (NOPOWER|BROKEN)) @@ -160,10 +159,10 @@ About the new airlock wires panel: return 0 /obj/machinery/door/airlock/proc/mainPowerCablesCut() - return src.isWireCut(AIRLOCK_WIRE_MAIN_POWER1) + return isWireCut(AIRLOCK_WIRE_MAIN_POWER1) /obj/machinery/door/airlock/proc/backupPowerCablesCut() - return src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER1) + return isWireCut(AIRLOCK_WIRE_BACKUP_POWER1) /obj/machinery/door/airlock/proc/loseMainPower() main_power_lost_until = mainPowerCablesCut() ? -1 : world.time + SecondsToTicks(60) @@ -206,7 +205,7 @@ About the new airlock wires panel: backup_power_lost_until = main_power_lost_until == 0 ? -1 : 0 update_icon() -/obj/machinery/door/airlock/proc/electrify(var/duration, var/feedback = 0) +/obj/machinery/door/airlock/proc/electrify(duration, feedback = 0) if(electrified_timer) deltimer(electrified_timer) electrified_timer = null @@ -252,7 +251,8 @@ About the new airlock wires panel: return 0 /obj/machinery/door/airlock/update_icon() - if(overlays) overlays.Cut() + if(overlays) + overlays.Cut() overlays = list() if(emergency && arePowerSystemsOn()) overlays += image('icons/obj/doors/doorint.dmi', "elights") @@ -271,11 +271,11 @@ About the new airlock wires panel: return - /obj/machinery/door/airlock/do_animate(animation) switch(animation) if("opening") - if(overlays) overlays.Cut() + if(overlays) + overlays.Cut() if(p_open) spawn(2) // The only work around that works. Downside is that the door will be gone for a millisecond. flick("o_door_opening", src) //can not use flick due to BYOND bug updating overlays right before flicking @@ -284,7 +284,8 @@ About the new airlock wires panel: flick("door_opening", src)//[stat ? "_stat":] update_icon() if("closing") - if(overlays) overlays.Cut() + if(overlays) + overlays.Cut() if(p_open) spawn(2) flick("o_door_closing", src) @@ -296,7 +297,7 @@ About the new airlock wires panel: if(density) flick("door_spark", src) if("deny") - if(density && src.arePowerSystemsOn()) + if(density && arePowerSystemsOn()) playsound(src, doorDeni, 50, 0, 3) flick("door_deny", src) return @@ -309,7 +310,7 @@ About the new airlock wires panel: /obj/machinery/door/airlock/attack_ai(mob/user) ui_interact(user) -/obj/machinery/door/airlock/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) +/obj/machinery/door/airlock/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1) ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "door_control.tmpl", "Door Controls - [src]", 600, 375) @@ -336,53 +337,53 @@ About the new airlock wires panel: data["commands"] = commands return data -/obj/machinery/door/airlock/proc/hack(mob/user as mob) - if(src.aiHacking==0) - src.aiHacking=1 +/obj/machinery/door/airlock/proc/hack(mob/user) + if(aiHacking==0) + aiHacking=1 spawn(20) //TODO: Make this take a minute to_chat(user, "Airlock AI control has been blocked. Beginning fault-detection.") sleep(50) - if(src.canAIControl()) + if(canAIControl()) to_chat(user, "Alert cancelled. Airlock control has been restored without our assistance.") - src.aiHacking=0 + aiHacking=0 return - else if(!src.canAIHack(user)) + else if(!canAIHack(user)) to_chat(user, "We've lost our connection! Unable to hack airlock.") - src.aiHacking=0 + aiHacking=0 return to_chat(user, "Fault confirmed: airlock control wire disabled or cut.") sleep(20) to_chat(user, "Attempting to hack into airlock. This may take some time.") sleep(200) - if(src.canAIControl()) + if(canAIControl()) to_chat(user, "Alert cancelled. Airlock control has been restored without our assistance.") - src.aiHacking=0 + aiHacking=0 return - else if(!src.canAIHack(user)) + else if(!canAIHack(user)) to_chat(user, "We've lost our connection! Unable to hack airlock.") - src.aiHacking=0 + aiHacking=0 return to_chat(user, "Upload access confirmed. Loading control program into airlock software.") sleep(170) - if(src.canAIControl()) + if(canAIControl()) to_chat(user, "Alert cancelled. Airlock control has been restored without our assistance.") - src.aiHacking=0 + aiHacking=0 return - else if(!src.canAIHack(user)) + else if(!canAIHack(user)) to_chat(user, "We've lost our connection! Unable to hack airlock.") - src.aiHacking=0 + aiHacking=0 return to_chat(user, "Transfer complete. Forcing airlock to execute program.") sleep(50) //disable blocked control - src.aiControlDisabled = 2 + aiControlDisabled = 2 to_chat(user, "Receiving control information from airlock.") sleep(10) //bring up airlock dialog - src.aiHacking = 0 + aiHacking = 0 if(user) - src.attack_ai(user) + attack_ai(user) /obj/machinery/door/airlock/CanPass(atom/movable/mover, turf/target, height=0) if(isElectrified() && density && istype(mover, /obj/item)) @@ -393,16 +394,16 @@ About the new airlock wires panel: s.start() return ..() -/obj/machinery/door/airlock/attack_hand(mob/user as mob) - if(!istype(user, /mob/living/silicon)) - if(src.isElectrified()) - if(src.shock(user, 100)) +/obj/machinery/door/airlock/attack_hand(mob/user) + if(!issilicon(user)) + if(isElectrified()) + if(shock(user, 100)) return - if(ishuman(user) && prob(40) && src.density) + if(ishuman(user) && prob(40) && density) var/mob/living/carbon/human/H = user if(H.getBrainLoss() >= 60) - playsound(src.loc, 'sound/effects/bang.ogg', 25, 1) + playsound(loc, 'sound/effects/bang.ogg', 25, 1) if(!istype(H.head, /obj/item/clothing/head/helmet)) visible_message("[user] headbutts the airlock.") var/obj/item/organ/external/affecting = H.get_organ("head") @@ -414,13 +415,13 @@ About the new airlock wires panel: visible_message("[user] headbutts the airlock. Good thing they're wearing a helmet.") return - if(src.p_open) + if(p_open) wires.Interact(user) else ..(user) return -/obj/machinery/door/airlock/CanUseTopic(var/mob/user) +/obj/machinery/door/airlock/CanUseTopic(mob/user) if(!issilicon(user) && !isobserver(user)) return STATUS_CLOSE @@ -439,14 +440,14 @@ About the new airlock wires panel: return ..() -/obj/machinery/door/airlock/Topic(href, href_list, var/nowindow = 0) +/obj/machinery/door/airlock/Topic(href, href_list, nowindow = 0) if(..()) return 1 var/activate = text2num(href_list["activate"]) switch(href_list["command"]) if("idscan") - if(src.isWireCut(AIRLOCK_WIRE_IDSCAN)) + if(isWireCut(AIRLOCK_WIRE_IDSCAN)) to_chat(usr, "The IdScan wire has been cut - IdScan feature permanently disabled.") else if(activate && aiDisabledIdScanner) aiDisabledIdScanner = 0 @@ -536,9 +537,9 @@ About the new airlock wires panel: update_icon() return 1 -/obj/machinery/door/airlock/attackby(obj/item/C, mob/user as mob, params) +/obj/machinery/door/airlock/attackby(obj/item/C, mob/user, params) // to_chat(world, text("airlock attackby src [] obj [] mob []", src, C, user)) - if(!istype(usr, /mob/living/silicon)) + if(!issilicon(usr)) if(isElectrified()) if(shock(user, 75)) return @@ -546,7 +547,7 @@ About the new airlock wires panel: return add_fingerprint(user) - if((istype(C, /obj/item/weapon/weldingtool) && !operating && density)) + if((iswelder(C) && !operating && density)) var/obj/item/weapon/weldingtool/W = C if(W.remove_fuel(0,user)) if(!welded) @@ -557,25 +558,25 @@ About the new airlock wires panel: return else return - else if(istype(C, /obj/item/weapon/screwdriver)) - p_open = !( p_open ) + else if(isscrewdriver(C)) + p_open = !p_open update_icon() - else if(istype(C, /obj/item/weapon/wirecutters)) + else if(iswirecutter(C)) return attack_hand(user) - else if(istype(C, /obj/item/device/multitool)) + else if(ismultitool(C)) return attack_hand(user) else if(istype(C, /obj/item/device/assembly/signaler)) return attack_hand(user) else if(istype(C, /obj/item/weapon/pai_cable)) // -- TLE var/obj/item/weapon/pai_cable/cable = C cable.plugin(src, user) - else if(istype(C, /obj/item/weapon/crowbar) || istype(C, /obj/item/weapon/twohanded/fireaxe)) + else if(iscrowbar(C) || istype(C, /obj/item/weapon/twohanded/fireaxe)) var/beingcrowbarred = null - if(istype(C, /obj/item/weapon/crowbar) ) + if(iscrowbar(C)) beingcrowbarred = 1 //derp, Agouri else beingcrowbarred = 0 - if( beingcrowbarred && p_open && (emagged || (density && welded && (!operating || emagged) && !arePowerSystemsOn() && !locked)) ) + if(beingcrowbarred && p_open && (emagged || (density && welded && (!operating || emagged) && !arePowerSystemsOn() && !locked))) playsound(loc, C.usesound, 100, 1) user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to remove electronics from the airlock assembly.") if(do_after(user, 40 * C.toolspeed, target = src)) @@ -595,7 +596,7 @@ About the new airlock wires panel: var/obj/item/weapon/airlock_electronics/ae if(!electronics) - ae = new/obj/item/weapon/airlock_electronics( loc ) + ae = new/obj/item/weapon/airlock_electronics(loc) if(!req_access) check_access() if(req_access.len) @@ -642,39 +643,43 @@ About the new airlock wires panel: to_chat(user, "The airlock's motors resist your efforts to force it.") else if(locked) to_chat(user, "The airlock's bolts prevent it from being forced.") - else if( !welded && !operating ) + else if(!welded && !operating) if(density) - if(beingcrowbarred == 0) //being fireaxe'd + if(!beingcrowbarred) //being fireaxe'd var/obj/item/weapon/twohanded/fireaxe/F = C if(F.wielded) - spawn(0) open(1) + spawn(0) + open(1) else to_chat(user, "You need to be wielding \the [C] to do that.") else - spawn(0) open(1) + spawn(0) + open(1) else - if(beingcrowbarred == 0) + if(!beingcrowbarred) var/obj/item/weapon/twohanded/fireaxe/F = C if(F.wielded) - spawn(0) close(1) + spawn(0) + close(1) else to_chat(user, "You need to be wielding \the [C] to do that.") else - spawn(0) close(1) + spawn(0) + close(1) else ..() return -/obj/machinery/door/airlock/plasma/attackby(C as obj, mob/user as mob, params) +/obj/machinery/door/airlock/plasma/attackby(obj/C, mob/user, params) if(is_hot(C) > 300) message_admins("Plasma airlock ignited by [key_name_admin(user)] in ([x],[y],[z] - JMP)") log_game("Plasma wall ignited by [key_name(user)] in ([x],[y],[z])") ignite(is_hot(C)) ..() -/obj/machinery/door/airlock/hatch/gamma/attackby(C as obj, mob/user as mob, params) +/obj/machinery/door/airlock/hatch/gamma/attackby(obj/C, mob/user, params) // to_chat(world, text("airlock attackby src [] obj [] mob []", src, C, user)) - if(!istype(usr, /mob/living/silicon)) + if(!issilicon(user)) if(isElectrified()) if(shock(user, 75)) return @@ -690,7 +695,7 @@ About the new airlock wires panel: return add_fingerprint(user) - if((istype(C, /obj/item/weapon/weldingtool) && !operating && density)) + if((iswelder(C) && !operating && density)) var/obj/item/weapon/weldingtool/W = C if(W.remove_fuel(0,user)) if(!welded) @@ -702,10 +707,9 @@ About the new airlock wires panel: else return - -/obj/machinery/door/airlock/highsecurity/red/attackby(C as obj, mob/user as mob, params) +/obj/machinery/door/airlock/highsecurity/red/attackby(obj/C, mob/user, params) // to_chat(world, text("airlock attackby src [] obj [] mob []", src, C, user)) - if(!istype(usr, /mob/living/silicon)) + if(!issilicon(user)) if(isElectrified()) if(shock(user, 75)) return @@ -713,7 +717,7 @@ About the new airlock wires panel: return add_fingerprint(user) - if((istype(C, /obj/item/weapon/weldingtool) && !operating && density)) + if((iswelder(C) && !operating && density)) var/obj/item/weapon/weldingtool/W = C if(W.remove_fuel(0,user)) if(!welded) @@ -725,11 +729,11 @@ About the new airlock wires panel: else return -/obj/machinery/door/airlock/open(var/forced=0) +/obj/machinery/door/airlock/open(forced=0) if(operating || welded || locked || emagged) return 0 if(!forced) - if( !arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_OPEN_DOOR) ) + if(!arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_OPEN_DOOR)) return 0 use_power(360) //360 W seems much more appropriate for an actuator moving an industrial door capable of crushing people if(forced) @@ -740,19 +744,19 @@ About the new airlock wires panel: closeOther.close() return ..() -/obj/machinery/door/airlock/close(var/forced=0, var/override = 0) +/obj/machinery/door/airlock/close(forced=0, override = 0) if((operating & !override) || welded || locked || emagged) return if(!forced) //despite the name, this wire is for general door control. //Bolts are already covered by the check for locked, above - if( !arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_OPEN_DOOR) ) + if(!arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_OPEN_DOOR)) return if(safe) for(var/turf/turf in locs) if(locate(/mob/living) in turf) // playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0) //THE BUZZING IT NEVER STOPS -Pete - spawn (60) + spawn(60) autoclose() return @@ -770,11 +774,13 @@ About the new airlock wires panel: operating = 1 do_animate("closing") layer = 3.1 - if(!override) sleep(5) + if(!override) + sleep(5) density = 1 if(!safe) crush() - if(!override) sleep(5) + if(!override) + sleep(5) update_icon() if(visible && !glass) set_opacity(1) @@ -787,34 +793,36 @@ About the new airlock wires panel: return -/obj/machinery/door/airlock/proc/lock(var/forced=0) +/obj/machinery/door/airlock/proc/lock(forced=0) if(locked) return 0 - if(operating && !forced) return 0 + if(operating && !forced) + return 0 locked = 1 playsound(src, boltDown, 30, 0, 3) update_icon() return 1 -/obj/machinery/door/airlock/proc/unlock(var/forced=0) +/obj/machinery/door/airlock/proc/unlock(forced=0) if(!locked) return if(!forced) - if(operating || !arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_DOOR_BOLTS)) return + if(operating || !arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_DOOR_BOLTS)) + return locked = 0 playsound(src,boltUp, 30, 0, 3) update_icon() return 1 -/obj/machinery/door/airlock/CanAStarPass(var/obj/item/weapon/card/id/ID) +/obj/machinery/door/airlock/CanAStarPass(obj/item/weapon/card/id/ID) //Airlock is passable if it is open (!density), bot has access, and is not bolted shut) return !density || (check_access(ID) && !locked && arePowerSystemsOn()) -/obj/machinery/door/airlock/emp_act(var/severity) +/obj/machinery/door/airlock/emp_act(severity) if(prob(40/severity)) var/duration = world.time + SecondsToTicks(30 / severity) if(duration > electrified_until) @@ -848,7 +856,6 @@ About the new airlock wires panel: if(origin) shockedby += "\[[time_stamp()]\][origin](ckey:[origin.ckey])" - /obj/machinery/door/airlock/disable_lockdown() // Must be powered and have working AI wire. if(canAIControl(src) && !stat) diff --git a/code/game/machinery/doors/airlock_control.dm b/code/game/machinery/doors/airlock_control.dm index 17ebdf96ce2..cc7da319ddd 100644 --- a/code/game/machinery/doors/airlock_control.dm +++ b/code/game/machinery/doors/airlock_control.dm @@ -1,31 +1,34 @@ #define AIRLOCK_CONTROL_RANGE 22 // This code allows for airlocks to be controlled externally by setting an id_tag and comm frequency (disables ID access) -obj/machinery/door/airlock +/obj/machinery/door/airlock var/id_tag var/frequency var/shockedby = list() var/datum/radio_frequency/radio_connection var/cur_command = null //the command the door is currently attempting to complete -obj/machinery/door/airlock/process() +/obj/machinery/door/airlock/process() if(arePowerSystemsOn() && cur_command) execute_current_command() else return PROCESS_KILL -obj/machinery/door/airlock/receive_signal(datum/signal/signal) - if(!arePowerSystemsOn()) return //no power +/obj/machinery/door/airlock/receive_signal(datum/signal/signal) + if(!arePowerSystemsOn()) + return //no power - if(!signal || signal.encryption) return + if(!signal || signal.encryption) + return - if(id_tag != signal.data["tag"] || !signal.data["command"]) return + if(id_tag != signal.data["tag"] || !signal.data["command"]) + return cur_command = signal.data["command"] spawn() execute_current_command() -obj/machinery/door/airlock/proc/execute_current_command() +/obj/machinery/door/airlock/proc/execute_current_command() if(operating || emagged) return //emagged or busy doing something else @@ -39,7 +42,7 @@ obj/machinery/door/airlock/proc/execute_current_command() if(!(src in machine_processing)) machine_processing += src -obj/machinery/door/airlock/proc/do_command(var/command) +/obj/machinery/door/airlock/proc/do_command(command) switch(command) if("open") open() @@ -70,7 +73,7 @@ obj/machinery/door/airlock/proc/do_command(var/command) send_status() -obj/machinery/door/airlock/proc/command_completed(var/command) +/obj/machinery/door/airlock/proc/command_completed(command) switch(command) if("open") return (!density) @@ -92,7 +95,7 @@ obj/machinery/door/airlock/proc/command_completed(var/command) return 1 //Unknown command. Just assume it's completed. -obj/machinery/door/airlock/proc/send_status(var/bumped = 0) +/obj/machinery/door/airlock/proc/send_status(bumped = 0) if(radio_connection) var/datum/signal/signal = new signal.transmission_method = 1 //radio signal @@ -107,33 +110,29 @@ obj/machinery/door/airlock/proc/send_status(var/bumped = 0) radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) - -obj/machinery/door/airlock/open(surpress_send) +/obj/machinery/door/airlock/open(surpress_send) . = ..() if(!surpress_send) send_status() - -obj/machinery/door/airlock/close(surpress_send) +/obj/machinery/door/airlock/close(surpress_send) . = ..() if(!surpress_send) send_status() - -obj/machinery/door/airlock/Bumped(atom/AM) +/obj/machinery/door/airlock/Bumped(atom/AM) ..(AM) if(istype(AM, /obj/mecha)) var/obj/mecha/mecha = AM - if(density && radio_connection && mecha.occupant && (src.allowed(mecha.occupant) || src.check_access_list(mecha.operation_req_access))) + if(density && radio_connection && mecha.occupant && (allowed(mecha.occupant) || check_access_list(mecha.operation_req_access))) send_status(1) return -obj/machinery/door/airlock/proc/set_frequency(new_frequency) +/obj/machinery/door/airlock/proc/set_frequency(new_frequency) radio_controller.remove_object(src, frequency) if(new_frequency) frequency = new_frequency radio_connection = radio_controller.add_object(src, frequency, RADIO_AIRLOCK) - -obj/machinery/door/airlock/initialize() +/obj/machinery/door/airlock/initialize() ..() if(frequency) set_frequency(frequency) @@ -141,20 +140,16 @@ obj/machinery/door/airlock/initialize() update_icon() -obj/machinery/door/airlock/New() +/obj/machinery/door/airlock/New() ..() if(radio_controller) set_frequency(frequency) - - - -obj/machinery/airlock_sensor +/obj/machinery/airlock_sensor icon = 'icons/obj/airlock_machines.dmi' icon_state = "airlock_sensor_off" name = "airlock sensor" - anchored = 1 power_channel = ENVIRON @@ -169,7 +164,7 @@ obj/machinery/airlock_sensor var/alert = 0 var/previousPressure -obj/machinery/airlock_sensor/update_icon() +/obj/machinery/airlock_sensor/update_icon() if(on) if(alert) icon_state = "airlock_sensor_alert" @@ -178,7 +173,7 @@ obj/machinery/airlock_sensor/update_icon() else icon_state = "airlock_sensor_off" -obj/machinery/airlock_sensor/attack_hand(mob/user) +/obj/machinery/airlock_sensor/attack_hand(mob/user) var/datum/signal/signal = new signal.transmission_method = 1 //radio signal signal.data["tag"] = master_tag @@ -187,7 +182,7 @@ obj/machinery/airlock_sensor/attack_hand(mob/user) radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) flick("airlock_sensor_cycle", src) -obj/machinery/airlock_sensor/process() +/obj/machinery/airlock_sensor/process() if(on) var/datum/gas_mixture/air_sample = return_air() var/pressure = round(air_sample.return_pressure(),0.1) @@ -207,32 +202,30 @@ obj/machinery/airlock_sensor/process() update_icon() -obj/machinery/airlock_sensor/proc/set_frequency(new_frequency) +/obj/machinery/airlock_sensor/proc/set_frequency(new_frequency) radio_controller.remove_object(src, frequency) frequency = new_frequency radio_connection = radio_controller.add_object(src, frequency, RADIO_AIRLOCK) -obj/machinery/airlock_sensor/initialize() +/obj/machinery/airlock_sensor/initialize() ..() set_frequency(frequency) -obj/machinery/airlock_sensor/New() +/obj/machinery/airlock_sensor/New() ..() if(radio_controller) set_frequency(frequency) - -obj/machinery/airlock_sensor/airlock_interior +/obj/machinery/airlock_sensor/airlock_interior command = "cycle_interior" -obj/machinery/airlock_sensor/airlock_exterior +/obj/machinery/airlock_sensor/airlock_exterior command = "cycle_exterior" -obj/machinery/access_button +/obj/machinery/access_button icon = 'icons/obj/airlock_machines.dmi' icon_state = "access_button_standby" name = "access button" - anchored = 1 power_channel = ENVIRON @@ -244,21 +237,20 @@ obj/machinery/access_button var/on = 1 - -obj/machinery/access_button/update_icon() +/obj/machinery/access_button/update_icon() if(on) icon_state = "access_button_standby" else icon_state = "access_button_off" -obj/machinery/access_button/attackby(obj/item/I as obj, mob/user as mob, params) +/obj/machinery/access_button/attackby(obj/item/I, mob/user, params) //Swiping ID on the access button if(istype(I, /obj/item/weapon/card/id) || istype(I, /obj/item/device/pda)) attack_hand(user) return ..() -obj/machinery/access_button/attack_hand(mob/user) +/obj/machinery/access_button/attack_hand(mob/user) add_fingerprint(usr) if(!allowed(user)) to_chat(user, "Access Denied") @@ -272,28 +264,25 @@ obj/machinery/access_button/attack_hand(mob/user) radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) flick("access_button_cycle", src) - -obj/machinery/access_button/proc/set_frequency(new_frequency) +/obj/machinery/access_button/proc/set_frequency(new_frequency) radio_controller.remove_object(src, frequency) frequency = new_frequency radio_connection = radio_controller.add_object(src, frequency, RADIO_AIRLOCK) - -obj/machinery/access_button/initialize() +/obj/machinery/access_button/initialize() ..() set_frequency(frequency) - -obj/machinery/access_button/New() +/obj/machinery/access_button/New() ..() if(radio_controller) set_frequency(frequency) -obj/machinery/access_button/airlock_interior +/obj/machinery/access_button/airlock_interior frequency = 1379 command = "cycle_interior" -obj/machinery/access_button/airlock_exterior +/obj/machinery/access_button/airlock_exterior frequency = 1379 command = "cycle_exterior" diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index 7c9f6d5b299..9881e58beb6 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -6,14 +6,13 @@ materials = list(MAT_METAL=50, MAT_GLASS=50) origin_tech = "engineering=2;programming=1" req_access = list(access_engine) - + toolspeed = 1 + usesound = 'sound/items/Deconstruct.ogg' var/list/conf_access = null var/one_access = 0 //if set to 1, door would receive req_one_access instead of req_access var/last_configurator = null var/locked = TRUE var/const/max_brain_damage = 60 // Maximum brain damage a mob can have until it can't use the electronics - toolspeed = 1 - usesound = 'sound/items/Deconstruct.ogg' /obj/item/weapon/airlock_electronics/attack_self(mob/user) if(!ishuman(user) && !isrobot(user)) @@ -89,7 +88,7 @@ attack_self(usr) -/obj/item/weapon/airlock_electronics/proc/toggle_access(var/access) +/obj/item/weapon/airlock_electronics/proc/toggle_access(access) if(access == "all") conf_access = null else diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index a4ce0bc7cd2..f15b923f54a 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -152,7 +152,7 @@ /obj/machinery/door/airlock/plasma/proc/PlasmaBurn(temperature) atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 500) - new/obj/structure/door_assembly( src.loc ) + new/obj/structure/door_assembly(loc) qdel(src) /obj/machinery/door/airlock/plasma/BlockSuperconductivity() //we don't stop the heat~ @@ -327,14 +327,14 @@ icon = 'icons/obj/doors/Doorplasma.dmi' is_special = 1 -/obj/machinery/door/airlock/alien/bumpopen(mob/living/user as mob) - if(istype(user,/mob/living/carbon/alien) || isrobot(user) || isAI(user)) +/obj/machinery/door/airlock/alien/bumpopen(mob/living/user) + if(isalien(user) || isrobot(user) || isAI(user)) ..(user) else to_chat(user, "You do not know how to operate this airlock's mechanism.") return -/obj/machinery/door/airlock/alien/attackby(C as obj, mob/user as mob, params) +/obj/machinery/door/airlock/alien/attackby(obj/C, mob/user, params) if(isalien(user) || isrobot(user) || isAI(user)) ..(C, user) else diff --git a/code/game/machinery/doors/alarmlock.dm b/code/game/machinery/doors/alarmlock.dm index 6ae07303752..839fb387ddb 100644 --- a/code/game/machinery/doors/alarmlock.dm +++ b/code/game/machinery/doors/alarmlock.dm @@ -3,10 +3,9 @@ icon = 'icons/obj/doors/Doorglass.dmi' opacity = 0 glass = 1 - + autoclose = 0 var/datum/radio_frequency/air_connection var/air_frequency = 1437 - autoclose = 0 /obj/machinery/door/airlock/alarmlock/New() ..() @@ -24,7 +23,6 @@ air_connection = radio_controller.add_object(src, air_frequency, RADIO_TO_AIRALARM) open() - /obj/machinery/door/airlock/alarmlock/receive_signal(datum/signal/signal) ..() if(stat & (NOPOWER|BROKEN)) @@ -42,4 +40,4 @@ close() if("minor", "clear") autoclose = 0 - open() \ No newline at end of file + open() diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 0af3f1a575d..5914d9b5d87 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -17,7 +17,7 @@ icon_state = "frame" desc = "A remote control for a door." req_access = list(access_brig) - anchored = 1.0 // can't pick it up + anchored = 1 // can't pick it up density = 0 // can walk through it. var/id = null // id of door it controls. var/releasetime = 0 // when world.timeofday reaches it - release the prisoner diff --git a/code/game/machinery/doors/checkForMultipleDoors.dm b/code/game/machinery/doors/checkForMultipleDoors.dm index 9005a7fda49..d1c3c2e2d6b 100644 --- a/code/game/machinery/doors/checkForMultipleDoors.dm +++ b/code/game/machinery/doors/checkForMultipleDoors.dm @@ -1,15 +1,15 @@ /obj/machinery/door/proc/checkForMultipleDoors() - if(!src.loc) + if(!loc) return 0 - for(var/obj/machinery/door/D in src.loc) + for(var/obj/machinery/door/D in loc) if(!istype(D, /obj/machinery/door/window) && D.density) return 0 return 1 /turf/simulated/wall/proc/checkForMultipleDoors() - if(!src.loc) + if(!loc) return 0 - for(var/obj/machinery/door/D in locate(src.x,src.y,src.z)) + for(var/obj/machinery/door/D in locate(x,y,z)) if(!istype(D, /obj/machinery/door/window) && D.density) return 0 //There are no false wall checks because that would be fucking retarded diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index c4db518ae93..8d87860705c 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -76,7 +76,8 @@ return if(isliving(AM)) var/mob/living/M = AM - if(world.time - M.last_bumped <= 10) return //Can bump-open one airlock per second. This is to prevent shock spam. + if(world.time - M.last_bumped <= 10) + return //Can bump-open one airlock per second. This is to prevent shock spam. M.last_bumped = world.time if(!M.restrained()) if(M.mob_size > MOB_SIZE_SMALL) @@ -187,29 +188,26 @@ qdel(src) return - /obj/machinery/door/emp_act(severity) if(prob(20/severity) && (istype(src,/obj/machinery/door/airlock) || istype(src,/obj/machinery/door/window)) ) spawn(0) open() ..() - /obj/machinery/door/ex_act(severity) switch(severity) - if(1.0) + if(1) qdel(src) - if(2.0) + if(2) if(prob(25)) qdel(src) - if(3.0) + if(3) if(prob(80)) var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread s.set_up(2, 1, src) s.start() return - /obj/machinery/door/update_icon() if(density) icon_state = "door1" @@ -299,7 +297,6 @@ var/turf/location = get_turf(src) L.add_splatter_floor(location) - /obj/machinery/door/proc/requiresID() return 1 diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index cad2212d0de..ee75775f151 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -18,10 +18,10 @@ glass = TRUE closed_layer = 3.11 auto_close_time = 50 + assemblytype = /obj/structure/firelock_frame var/can_force = TRUE var/force_open_time = 300 var/can_crush = TRUE - assemblytype = /obj/structure/firelock_frame var/nextstate = null var/boltslocked = TRUE var/can_deconstruct = TRUE @@ -36,9 +36,9 @@ /obj/machinery/door/firedoor/ex_act(severity) switch(severity) - if(1.0) + if(1) qdel(src) - if(2.0) + if(2) if(prob(50)) qdel(src) @@ -50,7 +50,7 @@ stat |= NOPOWER update_icon() -/obj/machinery/door/firedoor/attackby(obj/item/weapon/C as obj, mob/user as mob, params) +/obj/machinery/door/firedoor/attackby(obj/item/weapon/C, mob/user, params) add_fingerprint(user) if(operating) @@ -67,7 +67,7 @@ return if(welded) - if(istype(C, /obj/item/weapon/wrench)) + if(iswrench(C)) if(boltslocked) to_chat(user, "There are screws locking the bolts in place!") return @@ -81,7 +81,7 @@ "You undo [src]'s floor bolts.") deconstruct(TRUE) return - else if(istype(C, /obj/item/weapon/screwdriver)) + else if(isscrewdriver(C)) user.visible_message("[user] [boltslocked ? "unlocks" : "locks"] [src]'s bolts...", \ "You [boltslocked ? "unlock" : "lock"] [src]'s floor bolts...") playsound(get_turf(src), C.usesound, 50, 1) @@ -91,7 +91,7 @@ to_chat(user, "\The [src] is welded solid!") return - if(istype(C, /obj/item/weapon/crowbar) || istype(C, /obj/item/weapon/twohanded/fireaxe)) + if(iscrowbar(C) || istype(C, /obj/item/weapon/twohanded/fireaxe)) if(istype(C, /obj/item/weapon/twohanded/fireaxe)) var/obj/item/weapon/twohanded/fireaxe/F = C if(!F.wielded) @@ -228,7 +228,7 @@ else return 1 -/obj/machinery/door/firedoor/border_only/CheckExit(atom/movable/mover as mob|obj, turf/target) +/obj/machinery/door/firedoor/border_only/CheckExit(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSGLASS)) return 1 if(get_dir(loc, target) == dir) @@ -252,7 +252,7 @@ /obj/machinery/door/firedoor/heavy/ex_act(severity) switch(severity) - if(1.0) + if(1) qdel(src) /obj/item/weapon/firelock_electronics @@ -301,7 +301,7 @@ /obj/structure/firelock_frame/attackby(obj/item/weapon/C, mob/user) switch(constructionStep) if(CONSTRUCTION_PANEL_OPEN) - if(istype(C, /obj/item/weapon/crowbar)) + if(iscrowbar(C)) playsound(get_turf(src), C.usesound, 50, 1) user.visible_message("[user] starts prying something out from [src]...", \ "You begin prying out the wire cover...") @@ -315,7 +315,7 @@ constructionStep = CONSTRUCTION_WIRES_EXPOSED update_icon() return - if(istype(C, /obj/item/weapon/wrench)) + if(iswrench(C)) if(locate(/obj/machinery/door/firedoor) in get_turf(src)) to_chat(user, "There's already a firelock there.") return @@ -357,7 +357,7 @@ return if(CONSTRUCTION_WIRES_EXPOSED) - if(istype(C, /obj/item/weapon/wirecutters)) + if(iswirecutter(C)) playsound(get_turf(src), C.usesound, 50, 1) user.visible_message("[user] starts cutting the wires from [src]...", \ "You begin removing [src]'s wires...") @@ -372,7 +372,7 @@ constructionStep = CONSTRUCTION_GUTTED update_icon() return - if(istype(C, /obj/item/weapon/weldingtool)) + if(iswelder(C)) var/obj/item/weapon/weldingtool/W = C if(W.remove_fuel(1, user)) playsound(get_turf(src), C.usesound, 50, 1) @@ -389,7 +389,7 @@ update_icon() return if(CONSTRUCTION_GUTTED) - if(istype(C, /obj/item/weapon/crowbar)) + if(iscrowbar(C)) user.visible_message("[user] begins removing the circuit board from [src]...", \ "You begin prying out the circuit board from [src]...") playsound(get_turf(src), C.usesound, 50, 1) @@ -404,7 +404,7 @@ constructionStep = CONSTRUCTION_NOCIRCUIT update_icon() return - if(istype(C, /obj/item/stack/cable_coil)) + if(iscoil(C)) var/obj/item/stack/cable_coil/B = C if(B.get_amount() < 5) to_chat(user, "You need more wires to add wiring to [src].") @@ -423,7 +423,7 @@ update_icon() return if(CONSTRUCTION_NOCIRCUIT) - if(istype(C, /obj/item/weapon/weldingtool)) + if(iswelder(C)) var/obj/item/weapon/weldingtool/W = C if(W.remove_fuel(1,user)) playsound(get_turf(src), W.usesound, 50, 1) diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index 154ce951514..737271728ee 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -22,14 +22,14 @@ //"BLAST" doors are obviously stronger than regular doors when it comes to BLASTS. /obj/machinery/door/poddoor/ex_act(severity, target) switch(severity) - if(1.0) + if(1) if(prob(80)) qdel(src) else var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread s.set_up(2, 1, src) s.start() - if(2.0) + if(2) if(prob(20)) qdel(src) else @@ -37,24 +37,24 @@ s.set_up(2, 1, src) s.start() - if(3.0) + if(3) if(prob(80)) var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread s.set_up(2, 1, src) s.start() -/obj/machinery/door/poddoor/attackby(obj/item/weapon/C as obj, mob/user as mob, params) - src.add_fingerprint(user) - if(!( istype(C, /obj/item/weapon/crowbar) || (istype(C, /obj/item/weapon/twohanded/fireaxe) && C:wielded == 1) )) +/obj/machinery/door/poddoor/attackby(obj/item/weapon/C, mob/user, params) + add_fingerprint(user) + if(!(iscrowbar(C) || (istype(C, /obj/item/weapon/twohanded/fireaxe) && C:wielded == 1))) return - if((src.density && (stat & NOPOWER) && !operating)) - spawn( 0 ) + if((density && (stat & NOPOWER) && !operating)) + spawn(0) operating = 1 flick("pdoorc0", src) - src.icon_state = "pdoor0" - src.set_opacity(0) + icon_state = "pdoor0" + set_opacity(0) sleep(15) - src.density = 0 + density = 0 operating = 0 return return @@ -67,10 +67,10 @@ if(!operating) //in case of emag operating = 1 flick("pdoorc0", src) - src.icon_state = "pdoor0" - src.set_opacity(0) + icon_state = "pdoor0" + set_opacity(0) sleep(5) - src.density = 0 + density = 0 sleep(5) air_update_turf(1) update_freelook_sight() @@ -87,13 +87,13 @@ return operating = 1 flick("pdoorc1", src) - src.icon_state = "pdoor1" - src.set_opacity(initial(opacity)) + icon_state = "pdoor1" + set_opacity(initial(opacity)) air_update_turf(1) update_freelook_sight() sleep(5) crush() - src.density = 1 + density = 1 sleep(5) operating = 0 diff --git a/code/game/machinery/doors/shutters.dm b/code/game/machinery/doors/shutters.dm index 1507e22be20..05a785e1582 100644 --- a/code/game/machinery/doors/shutters.dm +++ b/code/game/machinery/doors/shutters.dm @@ -12,9 +12,9 @@ density = 0 opacity = 0 -/obj/machinery/door/poddoor/shutters/attackby(obj/item/weapon/C as obj, mob/user as mob, params) +/obj/machinery/door/poddoor/shutters/attackby(obj/item/weapon/C, mob/user, params) add_fingerprint(user) - if(!(istype(C, /obj/item/weapon/crowbar) || (istype(C, /obj/item/weapon/twohanded/fireaxe) && C:wielded == 1) )) + if(!(iscrowbar(C) || (istype(C, /obj/item/weapon/twohanded/fireaxe) && C:wielded == 1))) return if(density && (stat & NOPOWER) && !operating) operating = 1 diff --git a/code/game/machinery/doors/spacepod.dm b/code/game/machinery/doors/spacepod.dm index c661b71abce..93419b588f6 100644 --- a/code/game/machinery/doors/spacepod.dm +++ b/code/game/machinery/doors/spacepod.dm @@ -3,9 +3,9 @@ desc = "Why it no open!!!" icon = 'icons/effects/beam.dmi' icon_state = "n_beam" - var/id = 1.0 density = 0 anchored = 1 + var/id = 1.0 /obj/structure/spacepoddoor/initialize() ..() diff --git a/code/game/machinery/doors/unpowered.dm b/code/game/machinery/doors/unpowered.dm index a8236f0817c..76caba78cc6 100644 --- a/code/game/machinery/doors/unpowered.dm +++ b/code/game/machinery/doors/unpowered.dm @@ -1,24 +1,20 @@ /obj/machinery/door/unpowered autoclose = 0 - var/locked = 0 explosion_block = 1 + var/locked = 0 /obj/machinery/door/unpowered/Bumped(atom/AM) if(locked) return ..() - /obj/machinery/door/unpowered/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/card/emag) || istype(I, /obj/item/weapon/melee/energy/blade)) + if(istype(I, /obj/item/weapon/card/emag) || istype(I, /obj/item/weapon/melee/energy/blade)) return - if(locked) + if(locked) return return ..() /obj/machinery/door/unpowered/shuttle icon = 'icons/turf/shuttle.dmi' - name = "door" icon_state = "door1" - opacity = 1 - density = 1 \ No newline at end of file diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index baaf936e189..d49168720d4 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -3,12 +3,12 @@ desc = "A strong door." icon = 'icons/obj/doors/windoor.dmi' icon_state = "left" - var/base_state = "left" - var/health = 150.0 //If you change this, consider changing ../door/window/brigdoor/ health at the bottom of this .dm file visible = 0.0 flags = ON_BORDER opacity = 0 var/obj/item/weapon/airlock_electronics/electronics = null + var/base_state = "left" + var/health = 150.0 //If you change this, consider changing ../door/window/brigdoor/ health at the bottom of this .dm file /obj/machinery/door/window/New() ..() @@ -28,7 +28,6 @@ QDEL_NULL(electronics) return ..() - /obj/machinery/door/window/proc/open_and_close() open() if(check_access(null)) @@ -37,7 +36,7 @@ sleep(20) close() -/obj/machinery/door/window/Bumped(atom/movable/AM as mob|obj) +/obj/machinery/door/window/Bumped(atom/movable/AM) if(operating || !density) return if(!ismob(AM)) @@ -55,8 +54,8 @@ bumpopen(M) return -/obj/machinery/door/window/bumpopen(mob/user as mob) - if( operating || !density ) +/obj/machinery/door/window/bumpopen(mob/user) + if(operating || !density) return add_fingerprint(user) if(!requiresID()) @@ -76,17 +75,17 @@ else return 1 -/obj/machinery/door/window/CanAtmosPass(var/turf/T) +/obj/machinery/door/window/CanAtmosPass(turf/T) if(get_dir(loc, T) == dir) return !density else return 1 //used in the AStar algorithm to determinate if the turf the door is on is passable -/obj/machinery/door/window/CanAStarPass(var/obj/item/weapon/card/id/ID, var/to_dir) +/obj/machinery/door/window/CanAStarPass(obj/item/weapon/card/id/ID, to_dir) return !density || (dir != to_dir) || (check_access(ID) && !(stat & NOPOWER)) -/obj/machinery/door/window/CheckExit(atom/movable/mover as mob|obj, turf/target as turf) +/obj/machinery/door/window/CheckExit(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSGLASS)) return 1 if(get_dir(loc, target) == dir) @@ -94,7 +93,7 @@ else return 1 -/obj/machinery/door/window/open(var/forced=0) +/obj/machinery/door/window/open(forced=0) if(operating) //doors can still open when emag-disabled return 0 if(!ticker) @@ -121,7 +120,7 @@ operating = 0 return 1 -/obj/machinery/door/window/close(var/forced=0) +/obj/machinery/door/window/close(forced=0) if(operating) return 0 if(!forced) @@ -145,7 +144,7 @@ operating = 0 return 1 -/obj/machinery/door/window/proc/take_damage(var/damage) +/obj/machinery/door/window/proc/take_damage(damage) health = max(0, health - damage) if(health <= 0) var/debris = list( @@ -160,7 +159,7 @@ qdel(src) return -/obj/machinery/door/window/bullet_act(var/obj/item/projectile/Proj) +/obj/machinery/door/window/bullet_act(obj/item/projectile/Proj) if(Proj.damage) if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) take_damage(round(Proj.damage / 2)) @@ -193,7 +192,7 @@ if(user.can_advanced_admin_interact()) return attack_hand(user) -/obj/machinery/door/window/proc/attack_generic(mob/user as mob, damage = 0) +/obj/machinery/door/window/proc/attack_generic(mob/user, damage = 0) if(operating) return user.changeNext_move(CLICK_CD_MELEE) @@ -203,24 +202,24 @@ "[user] smashes against the [name].") take_damage(damage) -/obj/machinery/door/window/attack_alien(mob/living/user as mob) +/obj/machinery/door/window/attack_alien(mob/living/user) if(islarva(user)) return attack_generic(user, 25) -/obj/machinery/door/window/attack_animal(mob/living/user as mob) +/obj/machinery/door/window/attack_animal(mob/living/user) if(!isanimal(user)) return var/mob/living/simple_animal/M = user if(M.melee_damage_upper > 0 && (M.melee_damage_type == BRUTE || M.melee_damage_type == BURN)) attack_generic(M, M.melee_damage_upper) -/obj/machinery/door/window/attack_slime(mob/living/carbon/slime/user as mob) +/obj/machinery/door/window/attack_slime(mob/living/carbon/slime/user) if(!user.is_adult) return attack_generic(user, 25) -/obj/machinery/door/window/attack_hand(mob/user as mob) +/obj/machinery/door/window/attack_hand(mob/user) return attackby(user, user) /obj/machinery/door/window/emag_act(mob/user, obj/weapon) @@ -245,7 +244,7 @@ emagged = 1 return 1 -/obj/machinery/door/window/attackby(obj/item/weapon/I as obj, mob/living/user as mob, params) +/obj/machinery/door/window/attackby(obj/item/weapon/I, mob/living/user, params) //If it's in the process of opening/closing, ignore the click if(operating) @@ -258,16 +257,16 @@ emag_act(user,I) return 1 - if(istype(I, /obj/item/weapon/screwdriver)) + if(isscrewdriver(I)) if(density || operating) to_chat(user, "You need to open the door to access the maintenance panel.") return playsound(loc, I.usesound, 50, 1) - p_open = !( p_open ) + p_open = !p_open to_chat(user, "You [p_open ? "open":"close"] the maintenance panel of the [name].") return - if(istype(I, /obj/item/weapon/crowbar)) + if(iscrowbar(I)) if(p_open && !density && !operating) playsound(loc, I.usesound, 100, 1) user.visible_message("[user] removes the electronics from the [name].", \ @@ -302,7 +301,7 @@ var/obj/item/weapon/airlock_electronics/ae if(!electronics) - ae = new/obj/item/weapon/airlock_electronics( loc ) + ae = new/obj/item/weapon/airlock_electronics(loc) if(!req_access) check_access() if(req_access.len) @@ -320,7 +319,7 @@ //If windoor is unpowered, crowbar, fireaxe and armblade can force it. - if(istype(I, /obj/item/weapon/crowbar) || istype(I, /obj/item/weapon/twohanded/fireaxe)) + if(iscrowbar(I) || istype(I, /obj/item/weapon/twohanded/fireaxe)) if(stat & NOPOWER) if(density) open(2) @@ -329,10 +328,10 @@ return //If it's a weapon, smash windoor. Unless it's an id card, agent card, ect.. then ignore it (Cards really shouldnt damage a door anyway) - if(density && istype(I, /obj/item/weapon) && !istype(I, /obj/item/weapon/card) ) + if(density && istype(I, /obj/item/weapon) && !istype(I, /obj/item/weapon/card)) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) - if( (I.flags&NOBLUDGEON) || !I.force ) + if((I.flags&NOBLUDGEON) || !I.force) return var/aforce = I.force playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1) @@ -356,16 +355,13 @@ return - - /obj/machinery/door/window/brigdoor name = "secure door" icon = 'icons/obj/doors/windoor.dmi' icon_state = "leftsecure" base_state = "leftsecure" - var/id = null health = 300.0 //Stronger doors for prison (regular window door health is 200) - + var/id = null /obj/machinery/door/window/northleft dir = NORTH diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index af514a5a220..40f79e78d24 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -151,30 +151,34 @@ airlock_type = "/cult/runed" glass = -1 -/obj/structure/door_assembly/attackby(obj/item/W as obj, mob/user as mob, params) +/obj/structure/door_assembly/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/weapon/pen)) - var/t = copytext(stripped_input(user, "Enter the name for the door.", src.name, src.created_name),1,MAX_NAME_LEN) - if(!t) return - if(!in_range(src, usr) && src.loc != usr) return + var/t = copytext(stripped_input(user, "Enter the name for the door.", name, created_name),1,MAX_NAME_LEN) + if(!t) + return + if(!in_range(src, usr) && loc != usr) + return created_name = t return - if(istype(W, /obj/item/weapon/weldingtool) && ( (istext(glass)) || (glass == 1) || (!anchored) )) + if(iswelder(W) && ((istext(glass)) || (glass == 1) || !anchored )) var/obj/item/weapon/weldingtool/WT = W if(WT.remove_fuel(0, user)) - playsound(src.loc, WT.usesound, 50, 1) + playsound(loc, WT.usesound, 50, 1) if(istext(glass)) user.visible_message("[user] welds the [glass] plating off the airlock assembly.", "You start to weld the [glass] plating off the airlock assembly.") if(do_after(user, 40 * WT.toolspeed, target = src)) - if(!src || !WT.isOn()) return + if(!src || !WT.isOn()) + return to_chat(user, "You welded the [glass] plating off!") var/M = text2path("/obj/item/stack/sheet/mineral/[glass]") - new M(src.loc, 2) + new M(loc, 2) glass = 0 else if(glass == 1) user.visible_message("[user] welds the glass panel out of the airlock assembly.", "You start to weld the glass panel out of the airlock assembly.") if(do_after(user, 40 * WT.toolspeed, target = src)) - if(!src || !WT.isOn()) return + if(!src || !WT.isOn()) + return to_chat(user, "You welded the glass panel out!") if(heat_proof_finished) new /obj/item/stack/sheet/rglass(get_turf(src)) @@ -185,84 +189,90 @@ else if(!anchored) user.visible_message("[user] disassembles the airlock assembly.", "You start to disassemble the airlock assembly.") if(do_after(user, 40 * WT.toolspeed, target = src)) - if(!src || !WT.isOn()) return + if(!src || !WT.isOn()) + return to_chat(user, "You dissasembled the airlock assembly!") - new /obj/item/stack/sheet/metal(src.loc, 4) + new /obj/item/stack/sheet/metal(loc, 4) qdel(src) else to_chat(user, "You need more welding fuel.") return - else if(istype(W, /obj/item/weapon/wrench) && state == 0) - playsound(src.loc, W.usesound, 100, 1) + else if(iswrench(W) && state == 0) + playsound(loc, W.usesound, 100, 1) if(anchored) user.visible_message("[user] unsecures the airlock assembly from the floor.", "You start to unsecure the airlock assembly from the floor.") else user.visible_message("[user] secures the airlock assembly to the floor.", "You start to secure the airlock assembly to the floor.") if(do_after(user, 40 * W.toolspeed, target = src)) - if(!src) return + if(!src) + return to_chat(user, "You [anchored ? "un" : ""]secured the airlock assembly!") anchored = !anchored - else if(istype(W, /obj/item/stack/cable_coil) && state == 0 && anchored ) + else if(iscoil(W) && state == 0 && anchored) var/obj/item/stack/cable_coil/coil = W user.visible_message("[user] wires the airlock assembly.", "You start to wire the airlock assembly.") if(do_after(user, 40 * coil.toolspeed, target = src)) - if(!src) return + if(!src) + return coil.use(1) - src.state = 1 + state = 1 to_chat(user, "You wire the Airlock!") - else if(istype(W, /obj/item/weapon/wirecutters) && state == 1 ) - playsound(src.loc, W.usesound, 100, 1) + else if(iswirecutter(W) && state == 1) + playsound(loc, W.usesound, 100, 1) user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly.") if(do_after(user, 40 * W.toolspeed, target = src)) - if(!src) return + if(!src) + return to_chat(user, "You cut the airlock's wires!") if(state == 1) - new/obj/item/stack/cable_coil(src.loc, 1) - src.state = 0 + new/obj/item/stack/cable_coil(loc, 1) + state = 0 - else if(istype(W, /obj/item/weapon/airlock_electronics) && state == 1 && W:icon_state != "door_electronics_smoked") - playsound(src.loc, W.usesound, 100, 1) + else if(istype(W, /obj/item/weapon/airlock_electronics) && state == 1 && W.icon_state != "door_electronics_smoked") + playsound(loc, W.usesound, 100, 1) user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly.") user.drop_item() W.loc = src if(do_after(user, 40 * W.toolspeed, target = src)) - if(!src) return + if(!src) + return to_chat(user, "You installed the airlock electronics!") - src.state = 2 - src.name = "near finished airlock assembly" - src.electronics = W + state = 2 + name = "near finished airlock assembly" + electronics = W else - W.loc = src.loc + W.loc = loc - else if(istype(W, /obj/item/weapon/crowbar) && state == 2 ) - playsound(src.loc, W.usesound, 100, 1) + else if(iscrowbar(W) && state == 2 ) + playsound(loc, W.usesound, 100, 1) user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to install electronics into the airlock assembly.") if(do_after(user, 40 * W.toolspeed, target = src)) - if(!src) return + if(!src) + return to_chat(user, "You removed the airlock electronics!") - src.state = 1 - src.name = "wired airlock assembly" + state = 1 + name = "wired airlock assembly" var/obj/item/weapon/airlock_electronics/ae if(!electronics) - ae = new/obj/item/weapon/airlock_electronics( src.loc ) + ae = new/obj/item/weapon/airlock_electronics(loc) else ae = electronics electronics = null - ae.loc = src.loc + ae.loc = loc else if(istype(W, /obj/item/stack/sheet) && !glass) var/obj/item/stack/sheet/S = W if(S) if(S.amount>=1) if(istype(S, /obj/item/stack/sheet/rglass) || istype(S, /obj/item/stack/sheet/glass)) - playsound(src.loc, S.usesound, 100, 1) + playsound(loc, S.usesound, 100, 1) user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly.") if(do_after(user, 40 * S.toolspeed, target = src)) if(S.type == /obj/item/stack/sheet/rglass) @@ -275,19 +285,20 @@ else if(istype(S, /obj/item/stack/sheet/mineral) && S.sheettype) var/M = S.sheettype if(S.amount>=2) - playsound(src.loc, S.usesound, 100, 1) + playsound(loc, S.usesound, 100, 1) user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly.") if(do_after(user, 40 * S.toolspeed, target = src)) to_chat(user, "You installed [M] plating into the airlock assembly!") S.use(2) glass = "[M]" - else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 ) - playsound(src.loc, W.usesound, 100, 1) + else if(isscrewdriver(W) && state == 2 ) + playsound(loc, W.usesound, 100, 1) to_chat(user, "Now finishing the airlock.") if(do_after(user, 40 * W.toolspeed, target = src)) - if(!src) return + if(!src) + return to_chat(user, "You finish the airlock!") var/path if(istext(glass)) @@ -296,21 +307,21 @@ path = text2path("/obj/machinery/door/airlock[glass_type]") else path = text2path("/obj/machinery/door/airlock[airlock_type]") - var/obj/machinery/door/airlock/door = new path(src.loc) + var/obj/machinery/door/airlock/door = new path(loc) door.setDir(dir) door.assemblytype = type - door.electronics = src.electronics + door.electronics = electronics door.heat_proof = heat_proof_finished - if(src.electronics.one_access) + if(electronics.one_access) door.req_access = null - door.req_one_access = src.electronics.conf_access + door.req_one_access = electronics.conf_access else - door.req_access = src.electronics.conf_access + door.req_access = electronics.conf_access if(created_name) door.name = created_name else door.name = "[istext(glass) ? "[glass] airlock" : base_name]" - src.electronics.loc = door + electronics.loc = door qdel(src) else ..()