diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index e8d4078593e..045257fc71d 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1238,7 +1238,11 @@ About the new airlock wires panel: var/obj/item/weapon/airlock_electronics/ae if(!electronics) ae = new/obj/item/weapon/airlock_electronics( src.loc ) - ae.conf_access = src.req_access + if(src.req_access.len) + ae.conf_access = src.req_access + else if (src.req_one_access.len) + ae.conf_access = src.req_one_access + ae.one_access = 1 else ae = electronics electronics = null diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index 2310e85c07c..ddedf045e7e 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -11,6 +11,7 @@ req_access = list(access_engine) 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 = 1 @@ -33,6 +34,8 @@ else t1 += "Block
" + t1 += "Access requirement is set to " + t1 += one_access ? "ONE
" : "ALL
" t1 += conf_access == null ? "All
" : "All
" @@ -44,6 +47,8 @@ if (!conf_access || !conf_access.len || !(acc in conf_access)) t1 += "[aname]
" + else if(one_access) + t1 += "[aname]
" else t1 += "[aname]
" @@ -75,6 +80,9 @@ if (href_list["logout"]) locked = 1 + if (href_list["one_access"]) + one_access = !one_access + if (href_list["access"]) toggle_access(href_list["access"]) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 45ff776d401..66184774c49 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -130,6 +130,21 @@ new /obj/item/weapon/shard(src.loc) var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src.loc) CC.amount = 2 + var/obj/item/weapon/airlock_electronics/ae + if(!electronics) + ae = new/obj/item/weapon/airlock_electronics( src.loc ) + if(src.req_access.len) + ae.conf_access = src.req_access + else if (src.req_one_access.len) + ae.conf_access = src.req_one_access + ae.one_access = 1 + else + ae = electronics + electronics = null + ae.loc = src.loc + if(operating == -1) + ae.icon_state = "door_electronics_smoked" + operating = 0 src.density = 0 del(src) return @@ -162,15 +177,9 @@ if(istype(user, /mob/living/carbon/alien/humanoid) || istype(user, /mob/living/carbon/slime/adult)) if(src.operating) return - src.health = max(0, src.health - 25) playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) visible_message("\red [user] smashes against the [src.name].", 1) - if (src.health <= 0) - new /obj/item/weapon/shard(src.loc) - var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src.loc) - CC.amount = 2 - src.density = 0 - del(src) + take_damage(25) else return src.attack_hand(user) @@ -181,7 +190,7 @@ /obj/machinery/door/window/attackby(obj/item/weapon/I as obj, mob/user as mob) //If it's in the process of opening/closing, ignore the click - if (src.operating) + if (src.operating == 1) return //Emags and ninja swords? You may pass. @@ -199,19 +208,50 @@ open() return 1 + //If it's emagged, crowbar can pry electronics out. + if (src.operating == -1 && istype(I, /obj/item/weapon/crowbar)) + playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) + user.visible_message("[user] removes the electronics from the windoor.", "You start to remove electronics from the windoor.") + if (do_after(user,40)) + user << "\blue You removed the windoor electronics!" + + var/obj/structure/windoor_assembly/wa = new/obj/structure/windoor_assembly(src.loc) + if (istype(src, /obj/machinery/door/window/brigdoor)) + wa.secure = "secure_" + wa.name = "Secure Wired Windoor Assembly" + else + wa.name = "Wired Windoor Assembly" + if (src.base_state == "right" || src.base_state == "rightsecure") + wa.facing = "r" + wa.dir = src.dir + wa.state = "02" + wa.update_icon() + + var/obj/item/weapon/airlock_electronics/ae + if(!electronics) + ae = new/obj/item/weapon/airlock_electronics( src.loc ) + if(src.req_access.len) + ae.conf_access = src.req_access + else if (src.req_one_access.len) + ae.conf_access = src.req_one_access + ae.one_access = 1 + else + ae = electronics + electronics = null + ae.loc = src.loc + ae.icon_state = "door_electronics_smoked" + + operating = 0 + del(src) + 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(src.density && istype(I, /obj/item/weapon) && !istype(I, /obj/item/weapon/card)) var/aforce = I.force - if(I.damtype == BRUTE || I.damtype == BURN) - src.health = max(0, src.health - aforce) playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) visible_message("\red [src] was hit by [I].") - if (src.health <= 0) - new /obj/item/weapon/shard(src.loc) - var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src.loc) - CC.amount = 2 - src.density = 0 - del(src) + if(I.damtype == BRUTE || I.damtype == BURN) + take_damage(aforce) return diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 7ece9970d55..9930d8d84fb 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -421,7 +421,11 @@ obj/structure/door_assembly door = new src.airlock_type( src.loc ) //door.req_access = src.req_access door.electronics = src.electronics - door.req_access = src.electronics.conf_access + if(src.electronics.one_access) + door.req_access = null + door.req_one_access = src.electronics.conf_access + else + door.req_access = src.electronics.conf_access if(created_name) door.name = created_name src.electronics.loc = door diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 532819d0201..478f6989baa 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -107,17 +107,17 @@ obj/structure/windoor_assembly/Del() src.name = "Windoor Assembly" //Adding plasteel makes the assembly a secure windoor assembly. Step 2 (optional) complete. - else if(istype(W, /obj/item/stack/sheet/plasteel) && !secure) - var/obj/item/stack/sheet/plasteel/P = W - if(P.amount < 2) - user << "\red You need more plasteel to do this." + else if(istype(W, /obj/item/stack/rods) && !secure) + var/obj/item/stack/rods/R = W + if(R.amount < 4) + user << "\red You need more rods to do this." return - user << "\blue You start to reinforce the windoor with plasteel." + user << "\blue You start to reinforce the windoor with rods." if(do_after(user,40)) if(!src) return - P.use(2) + R.use(4) user << "\blue You reinforce the windoor." src.secure = "secure_" if(src.anchored) @@ -145,7 +145,7 @@ obj/structure/windoor_assembly/Del() if("02") //Removing wire from the assembly. Step 5 undone. - if(istype(W, /obj/item/weapon/wirecutters)) + if(istype(W, /obj/item/weapon/wirecutters) && !src.electronics) playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly.") @@ -156,12 +156,12 @@ obj/structure/windoor_assembly/Del() new/obj/item/weapon/cable_coil(get_turf(user), 1) src.state = "01" if(src.secure) - src.name = "Secure Wired Windoor Assembly" + src.name = "Secure Anchored Windoor Assembly" else - src.name = "Wired Windoor Assembly" + src.name = "Anchored Windoor Assembly" //Adding airlock electronics for access. Step 6 complete. - else if(istype(W, /obj/item/weapon/airlock_electronics)) + else if(istype(W, /obj/item/weapon/airlock_electronics) && W:icon_state != "door_electronics_smoked") playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly.") @@ -177,22 +177,20 @@ obj/structure/windoor_assembly/Del() W.loc = src.loc //Screwdriver to remove airlock electronics. Step 6 undone. - else if(istype(W, /obj/item/weapon/screwdriver)) + else if(istype(W, /obj/item/weapon/screwdriver) && src.electronics) playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to uninstall electronics from the airlock assembly.") if(do_after(user, 40)) - if(!src) return + if(!src || !src.electronics) return user << "\blue You've removed the airlock electronics!" - src.name = "Wired Windoor Assembly" - var/obj/item/weapon/airlock_electronics/ae - if (!electronics) - ae = new/obj/item/weapon/airlock_electronics( src.loc ) + if(src.secure) + src.name = "Secure Wired Windoor Assembly" else - ae = electronics - electronics = null - ae.loc = src.loc - + src.name = "Wired Windoor Assembly" + var/obj/item/weapon/airlock_electronics/ae = electronics + electronics = null + ae.loc = src.loc //Crowbar to complete the assembly, Step 7 complete. else if(istype(W, /obj/item/weapon/crowbar)) @@ -221,7 +219,11 @@ obj/structure/windoor_assembly/Del() windoor.dir = src.dir windoor.density = 0 - windoor.req_access = src.electronics.conf_access + if(src.electronics.one_access) + windoor.req_access = null + windoor.req_one_access = src.electronics.conf_access + else + windoor.req_access = src.electronics.conf_access windoor.electronics = src.electronics src.electronics.loc = windoor else @@ -235,7 +237,11 @@ obj/structure/windoor_assembly/Del() windoor.dir = src.dir windoor.density = 0 - windoor.req_access = src.electronics.conf_access + if(src.electronics.one_access) + windoor.req_access = null + windoor.req_one_access = src.electronics.conf_access + else + windoor.req_access = src.electronics.conf_access windoor.electronics = src.electronics src.electronics.loc = windoor diff --git a/html/changelog.html b/html/changelog.html index 44b3cd609bc..ccfe5623a1c 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -57,6 +57,17 @@ Stuff which is in development and not yet visible to players or just code relate (ie. code improvements for expandability, etc.) should not be listed here. They should be listed in the changelog upon commit though. Thanks. --> +
+

18.06.2013

+

Segrain updated:

+ +
+

13.06.2013

Kilakk updated: