diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index 6f1be49b3b7..8341f18677e 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -166,7 +166,9 @@ Pipelines + Other Objects -> Pipe network add_fingerprint(user) var/unsafe_wrenching = FALSE - var/internal_pressure = int_air.return_pressure()-env_air.return_pressure() + var/I = int_air ? int_air.return_pressure() : 0 + var/E = env_air ? env_air.return_pressure() : 0 + var/internal_pressure = I - E playsound(src.loc, W.usesound, 50, 1) to_chat(user, "You begin to unfasten \the [src]...") diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index a0b72ed5074..80a4a36ee44 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -647,13 +647,12 @@ About the new airlock wires panel: src.attack_ai(user) /obj/machinery/door/airlock/CanPass(atom/movable/mover, turf/target, height=0) - if(src.isElectrified()) - if(istype(mover, /obj/item)) - var/obj/item/i = mover - if(i.materials[MAT_METAL]) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread - s.set_up(5, 1, src) - s.start() + if(isElectrified() && density && istype(mover, /obj/item)) + var/obj/item/I = mover + if(I.flags & CONDUCT) + var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread + s.set_up(5, 1, src) + s.start() return ..() /obj/machinery/door/airlock/attack_hand(mob/user as mob) diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index bda658ef128..0f397a51dbb 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -59,7 +59,9 @@ if(operating) return - if(istype(C, /obj/item/weapon/weldingtool)) + if(iswelder(C)) + if(!density) + return var/obj/item/weapon/weldingtool/W = C if(W.remove_fuel(0, user)) welded = !welded @@ -169,6 +171,8 @@ update_icon() /obj/machinery/door/firedoor/open(auto_close = TRUE) + if(welded) + return . = ..() latetoggle(auto_close) diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index d386fe07d0b..106c60dc650 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -58,6 +58,10 @@ /obj/effect/mine/dnascramble/mineEffect(mob/living/victim) victim.apply_effect(radiation_amount, IRRADIATE, 0) + if(ishuman(victim)) + var/mob/living/carbon/human/V = victim + if(NO_DNA in V.species.species_traits) + return randmutb(victim) domutcheck(victim ,null) diff --git a/code/game/objects/structures/fullwindow.dm b/code/game/objects/structures/fullwindow.dm index 48b2268d8cc..b0c1f2c512c 100644 --- a/code/game/objects/structures/fullwindow.dm +++ b/code/game/objects/structures/fullwindow.dm @@ -46,6 +46,10 @@ glasstype = /obj/item/stack/sheet/plasmaglass health = 120 +/obj/structure/window/full/plasmabasic/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > T0C + 32000) + hit(round(exposed_volume / 1000), 0) + ..() /obj/structure/window/full/plasmareinforced name = "reinforced plasma window" @@ -57,6 +61,8 @@ reinf = 1 health = 160 +/obj/structure/window/full/plasmareinforced/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + return /obj/structure/window/full/reinforced name = "reinforced window" diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index 498a2afb8b0..2f489f3ea2d 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -149,7 +149,10 @@ var/const/MAX_ACTIVE_TIME = 400 M.Paralyse(MAX_IMPREGNATION_TIME/6) //something like 25 ticks = 20 seconds with the default settings else if(iscorgi(M)) var/mob/living/simple_animal/pet/corgi/C = M - loc = C + if(C.facehugger) + var/obj/item/F = C.facehugger + F.forceMove(C.loc) + forceMove(C) C.facehugger = src C.regenerate_icons() @@ -161,7 +164,7 @@ var/const/MAX_ACTIVE_TIME = 400 return 1 /obj/item/clothing/mask/facehugger/proc/Impregnate(mob/living/target as mob) - if(!target || target.stat == DEAD) //was taken off or something + if(!target || target.stat == DEAD || loc != target) //was taken off or something return if(iscarbon(target)) diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 45029891575..ed08eed113e 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -60,7 +60,8 @@ if(can_collar) dat += " " dat += "Collar:[(collar && !(collar.flags&ABSTRACT)) ? collar : "Empty"]" - + if(facehugger) + dat += "Facehugger:[facehugger]" dat += {" Close "} @@ -103,11 +104,10 @@ /mob/living/simple_animal/pet/corgi/Topic(href, href_list) if(usr.stat) return - + if((!ishuman(usr) && !isrobot(usr)) || !Adjacent(usr)) + return //Removing from inventory if(href_list["remove_inv"]) - if(!Adjacent(usr) || !(ishuman(usr) || isrobot(usr) || isalienadult(usr))) - return var/remove_from = href_list["remove_inv"] switch(remove_from) if("head") @@ -143,14 +143,9 @@ else to_chat(usr, "There is nothing to remove from its [remove_from].") return - show_inv(usr) - //Adding things to inventory else if(href_list["add_inv"]) - if(!Adjacent(usr) || !(ishuman(usr) || isrobot(usr) || isalienadult(usr))) - return - var/add_to = href_list["add_inv"] switch(add_to) @@ -201,7 +196,16 @@ item_to_add.loc = src src.inventory_back = item_to_add regenerate_icons() - + show_inv(usr) +//Removing facehuggers + else if(href_list["remove_hugger"]) + if(!facehugger) + return + var/obj/item/F = facehugger + F.forceMove(loc) + facehugger = null + to_chat(usr, "You remove [F] from [src]'s face. [src] pants for air and barks.") + regenerate_icons() show_inv(usr) else ..() diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 4d5e38d17ec..342931a065c 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -16,13 +16,13 @@ // Stationary ports shouldn't move, mobile ones move themselves return 0 -/obj/machinery/door/onShuttleMove() +/obj/machinery/door/airlock/onShuttleMove() . = ..() if(!.) return addtimer(src, "close", 0, TRUE, 0, 1) // Close any nearby airlocks as well - for(var/obj/machinery/door/D in orange(1, src)) + for(var/obj/machinery/door/airlock/D in orange(1, src)) addtimer(D, "close", 0, TRUE, 0, 1) /obj/machinery/door/airlock/onShuttleMove()