From 23c8ae02815fcf9ecea2f127da759427a6dc5c64 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sun, 16 Jun 2013 22:33:12 -0700 Subject: [PATCH 01/15] Adjustment to melee weapon embedding, so that axes don't instantly get ripped out of your hands in combat. --- code/modules/mob/living/carbon/human/human_damage.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 78038f5c84a..f281015f757 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -227,7 +227,7 @@ if(!organ) return if(istype(used_weapon,/obj/item/weapon)) var/obj/item/weapon/W = used_weapon //Sharp objects will always embed if they do enough damage. - if(damage > (5*W.w_class) && (prob(damage/W.w_class) || sharp)) //The larger it is, the harder it needs to hit to stick. + if( (damage > (10*W.w_class)) && ( (sharp && !ismob(W.loc)) || prob(damage/W.w_class) ) ) organ.implants += W visible_message("\The [W] sticks in the wound!") W.add_blood(src) @@ -237,7 +237,7 @@ W.loc = src else if(istype(used_weapon,/obj/item/projectile)) //We don't want to use the actual projectile item, so we spawn some shrapnel. - if(prob(50) && damagetype == BRUTE) + if(prob(75) && damagetype == BRUTE) var/obj/item/projectile/P = used_weapon var/obj/item/weapon/shard/shrapnel/S = new() S.name = "[P.name] shrapnel" From a2c2c1fe6296f044e725d322e75080029c7974cc Mon Sep 17 00:00:00 2001 From: Mordeth221 Date: Mon, 17 Jun 2013 15:02:14 +0100 Subject: [PATCH 02/15] Ninja update, Several nerfs and tweaks --- code/game/gamemodes/events/ninja_abilities.dm | 66 ++++--------------- code/game/gamemodes/events/ninja_equipment.dm | 4 +- code/game/gamemodes/events/space_ninja.dm | 10 --- 3 files changed, 15 insertions(+), 65 deletions(-) diff --git a/code/game/gamemodes/events/ninja_abilities.dm b/code/game/gamemodes/events/ninja_abilities.dm index 925f2f19bf0..16dfae52493 100644 --- a/code/game/gamemodes/events/ninja_abilities.dm +++ b/code/game/gamemodes/events/ninja_abilities.dm @@ -65,45 +65,11 @@ Not sure why this would be useful (it's not) but whatever. Ninjas need their smo s_coold = 1 return -//=======//9-8 TILE TELEPORT//=======// -//Click to to teleport 9-10 tiles in direction facing. -/obj/item/clothing/suit/space/space_ninja/proc/ninjajaunt() - set name = "Phase Jaunt (10E)" - set desc = "Utilizes the internal VOID-shift device to rapidly transit in direction facing." - set category = "Ninja Ability" - set popup_menu = 0 - - var/C = 100 - if(!ninjacost(C,1)) - var/mob/living/carbon/human/U = affecting - var/turf/destination = get_teleport_loc(U.loc,U,9,1,3,1,0,1) - var/turf/mobloc = get_turf(U.loc)//To make sure that certain things work properly below. - if(destination&&istype(mobloc, /turf))//The turf check prevents unusual behavior. Like teleporting out of cryo pods, cloners, mechs, etc. - spawn(0) - playsound(U.loc, "sparks", 50, 1) - anim(mobloc,src,'icons/mob/mob.dmi',,"phaseout",,U.dir) - - handle_teleport_grab(destination, U) - U.loc = destination - - spawn(0) - spark_system.start() - playsound(U.loc, 'sound/effects/phasein.ogg', 25, 1) - playsound(U.loc, "sparks", 50, 1) - anim(U.loc,U,'icons/mob/mob.dmi',,"phasein",,U.dir) - - spawn(0) - destination.kill_creatures(U)//Any living mobs in teleport area are gibbed. Check turf procs for how it does it. - s_coold = 1 - cell.charge-=(C*10) - else - U << "\red The VOID-shift device is malfunctioning, teleportation failed." - return //=======//RIGHT CLICK TELEPORT//=======// //Right click to teleport somewhere, almost exactly like admin jump to turf. /obj/item/clothing/suit/space/space_ninja/proc/ninjashift(turf/T in oview()) - set name = "Phase Shift (20E)" + set name = "Phase Shift (1E)" set desc = "Utilizes the internal VOID-shift device to rapidly transit to a destination in view." set category = null//So it does not show up on the panel but can still be right-clicked. set src = usr.contents//Fixes verbs not attaching properly for objects. Praise the DM reference guide! @@ -125,11 +91,6 @@ Not sure why this would be useful (it's not) but whatever. Ninjas need their smo playsound(U.loc, 'sound/effects/phasein.ogg', 25, 1) playsound(U.loc, 'sound/effects/sparks2.ogg', 50, 1) anim(U.loc,U,'icons/mob/mob.dmi',,"phasein",,U.dir) - - spawn(0)//Any living mobs in teleport area are gibbed. - T.kill_creatures(U) - s_coold = 1 - cell.charge-=(C*10) else U << "\red You cannot teleport into solid walls or from solid matter" return @@ -137,16 +98,16 @@ Not sure why this would be useful (it's not) but whatever. Ninjas need their smo //=======//EM PULSE//=======// //Disables nearby tech equipment. /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse() - set name = "EM Burst (25E)" + set name = "EM Burst (1,000E)" set desc = "Disable any nearby technology with a electro-magnetic pulse." set category = "Ninja Ability" set popup_menu = 0 var/C = 250 - if(!ninjacost(C,1)) + if(!ninjacost(C,100)) // EMP's now cost 1,000Energy about 30% var/mob/living/carbon/human/U = affecting playsound(U.loc, 'sound/effects/EMPulse.ogg', 60, 2) - empulse(U, 4, 6) //Procs sure are nice. Slightly weaker than wizard's disable tch. + empulse(U, 2, 3) //Procs sure are nice. Slightly weaker than wizard's disable tch. s_coold = 2 cell.charge-=(C*10) return @@ -154,13 +115,13 @@ Not sure why this would be useful (it's not) but whatever. Ninjas need their smo //=======//ENERGY BLADE//=======// //Summons a blade of energy in active hand. /obj/item/clothing/suit/space/space_ninja/proc/ninjablade() - set name = "Energy Blade (5E)" + set name = "Energy Blade (20E)" set desc = "Create a focused beam of energy in your active hand." set category = "Ninja Ability" set popup_menu = 0 var/C = 50 - if(!ninjacost(C)) + if(!ninjacost(C, 800)) //Same spawn cost but higher upkeep cost var/mob/living/carbon/human/U = affecting if(!kamikaze) if(!U.get_active_hand()&&!istype(U.get_inactive_hand(), /obj/item/weapon/melee/energy/blade)) @@ -187,13 +148,13 @@ Not sure why this would be useful (it's not) but whatever. Ninjas need their smo /*Shoots ninja stars at random people. This could be a lot better but I'm too tired atm.*/ /obj/item/clothing/suit/space/space_ninja/proc/ninjastar() - set name = "Energy Star (5E)" + set name = "Energy Star (1,000E)" set desc = "Launches an energy star at a random living target." set category = "Ninja Ability" set popup_menu = 0 var/C = 50 - if(!ninjacost(C)) + if(!ninjacost(C,1)) var/mob/living/carbon/human/U = affecting var/targets[] = list()//So yo can shoot while yo throw dawg for(var/mob/living/M in oview(loc)) @@ -212,7 +173,7 @@ This could be a lot better but I'm too tired atm.*/ A.current = curloc A.yo = targloc.y - curloc.y A.xo = targloc.x - curloc.x - cell.charge-=(C*10) + cell.charge-=(C*100)// Ninja stars now cost 100 energy, stil la fair chunk to avoid spamming, will run out of power quickly if used 3 or more times A.process() else U << "\red There are no targets in view." @@ -222,13 +183,13 @@ This could be a lot better but I'm too tired atm.*/ /*Allows the ninja to capture people, I guess. Must right click on a mob to activate.*/ /obj/item/clothing/suit/space/space_ninja/proc/ninjanet(mob/living/carbon/M in oview())//Only living carbon mobs. - set name = "Energy Net (20E)" + set name = "Energy Net (8,000E)" set desc = "Captures a fallen opponent in a net of energy. Will teleport them to a holding facility after 30 seconds." set category = null set src = usr.contents - var/C = 200 - if(!ninjacost(C,1)&&iscarbon(M)) + var/C = 500 + if(!ninjacost(C,80)&&iscarbon(M)) // Nets now cost 8,000 var/mob/living/carbon/human/U = affecting if(M.client)//Monkeys without a client can still step_to() and bypass the net. Also, netting inactive people is lame. //if(M)//DEBUG @@ -249,7 +210,7 @@ Must right click on a mob to activate.*/ E.master = U spawn(0)//Parallel processing. E.process(M) - cell.charge-=(C*10) + cell.charge-=(C*100) // Nets now cost what should be most of a standard battery, since your taking someone out of the round else U << "They are already trapped inside an energy net." else @@ -270,7 +231,6 @@ Movement impairing would indicate drugs and the like.*/ //Wouldn't need to track adrenaline boosters if there was a miracle injection to get rid of paralysis and the like instantly. //For now, adrenaline boosters ARE the miracle injection. Well, radium, really. U.SetParalysis(0) - U.SetStunned(0) U.SetWeakened(0) /* Due to lag, it was possible to adrenaline boost but remain helpless while life.dm resets player stat. diff --git a/code/game/gamemodes/events/ninja_equipment.dm b/code/game/gamemodes/events/ninja_equipment.dm index 8f66ca56a32..853f1509747 100644 --- a/code/game/gamemodes/events/ninja_equipment.dm +++ b/code/game/gamemodes/events/ninja_equipment.dm @@ -1333,10 +1333,10 @@ It is possible to destroy the net by the occupant or someone else. return process(var/mob/living/carbon/M as mob) - var/check = 30//30 seconds before teleportation. Could be extended I guess. + var/check = 60//30 seconds before teleportation. Could be extended I guess. - Extended to one minute var/mob_name = affecting.name//Since they will report as null if terminated before teleport. //The person can still try and attack the net when inside. - while(!isnull(M)&&!isnull(src)&&check>0)//While M and net exist, and 30 seconds have not passed. + while(!isnull(M)&&!isnull(src)&&check>0)//While M and net exist, and 60 seconds have not passed. check-- sleep(10) diff --git a/code/game/gamemodes/events/space_ninja.dm b/code/game/gamemodes/events/space_ninja.dm index 2314f382588..1a09a3c7825 100644 --- a/code/game/gamemodes/events/space_ninja.dm +++ b/code/game/gamemodes/events/space_ninja.dm @@ -656,7 +656,6 @@ As such, it's hard-coded for now. No reason for it not to be, really. /obj/item/clothing/suit/space/space_ninja/proc/grant_ninja_verbs() verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjashift - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjajaunt verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjasmoke verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjaboost verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse @@ -669,8 +668,6 @@ As such, it's hard-coded for now. No reason for it not to be, really. /obj/item/clothing/suit/space/space_ninja/proc/remove_ninja_verbs() verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjashift - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjajaunt - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjasmoke verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjaboost verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjablade @@ -681,11 +678,7 @@ As such, it's hard-coded for now. No reason for it not to be, really. /obj/item/clothing/suit/space/space_ninja/proc/grant_kamikaze(mob/living/carbon/U) verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjashift - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjajaunt - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjastar verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjanet - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjaslayer verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjawalk verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjamirage @@ -710,11 +703,8 @@ As such, it's hard-coded for now. No reason for it not to be, really. /obj/item/clothing/suit/space/space_ninja/proc/remove_kamikaze(mob/living/carbon/U) if(kamikaze) verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjashift - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjajaunt verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjastar - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjanet - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjaslayer verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjawalk verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjamirage From 453c0c741ca951062ca62ccabdef0055a5138caf Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Mon, 17 Jun 2013 15:45:23 -0700 Subject: [PATCH 03/15] Air alarm improvements. Adds Central Atmos Control and a buffer between server room and station. Fixes #3074 Fixes #3069 Fixes #2909 --- code/WorkInProgress/Mini/atmos_control.dm | 13 ++++---- code/game/machinery/alarm.dm | 39 +++++++++++++++++------ maps/tgstation.2.1.0.0.1.dmm | 11 ++++--- 3 files changed, 42 insertions(+), 21 deletions(-) diff --git a/code/WorkInProgress/Mini/atmos_control.dm b/code/WorkInProgress/Mini/atmos_control.dm index 37282a90ecc..15dd1c7fe95 100644 --- a/code/WorkInProgress/Mini/atmos_control.dm +++ b/code/WorkInProgress/Mini/atmos_control.dm @@ -297,13 +297,12 @@ Nitrous Oxide output += {" Main menu
Air machinery mode for the area:
    "} - var/list/modes = list( - AALARM_MODE_SCRUBBING = "Filtering", - AALARM_MODE_REPLACEMENT = "REPLACE AIR", - AALARM_MODE_PANIC = "PANIC", - AALARM_MODE_CYCLE = "CYCLE", - AALARM_MODE_FILL = "FILL",\ - AALARM_MODE_OFF = "OFFF",) + var/list/modes = list(AALARM_MODE_SCRUBBING = "Filtering - Scrubs out contaminants",\ + AALARM_MODE_REPLACEMENT = "Replace Air - Siphons out air while replacing",\ + AALARM_MODE_PANIC = "Panic - Siphons air out of the room",\ + AALARM_MODE_CYCLE = "Cycle - Siphons air before replacing",\ + AALARM_MODE_FILL = "Fill - Shuts off scrubbers and opens vents",\ + AALARM_MODE_OFF = "Off - Shuts off vents and scrubbers",) for (var/m=1,m<=modes.len,m++) if (current.mode==m) output += {"
  • [modes[m]] (selected)
  • "} diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index d52f18fdd70..0329bbe8baf 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -135,9 +135,9 @@ if(!istype(location)) return//returns if loc is not simulated var/datum/gas_mixture/environment = location.return_air() - var/temperature_dangerlevel = get_danger_level(environment.temperature, TLV["temperature"]) + //Handle temperature adjustment here. - if(temperature_dangerlevel || regulating_temperature) + if(environment.temperature < target_temperature - 10 || environment.temperature > target_temperature + 10 || regulating_temperature) //If it goes too far, we should adjust ourselves back before stopping. if(!regulating_temperature) regulating_temperature = 1 @@ -368,7 +368,8 @@ send_signal(device_id, list("power"= 0) ) proc/apply_danger_level(var/new_danger_level) - alarm_area.atmosalm = new_danger_level + if (alarm_area.atmosalert(new_danger_level)) + post_alert(new_danger_level) for (var/area/A in alarm_area.related) for (var/obj/machinery/alarm/AA in A) @@ -382,6 +383,26 @@ update_icon() + proc/post_alert(alert_level) + var/datum/radio_frequency/frequency = radio_controller.return_frequency(alarm_frequency) + if(!frequency) + return + + var/datum/signal/alert_signal = new + alert_signal.source = src + alert_signal.transmission_method = 1 + alert_signal.data["zone"] = alarm_area.name + alert_signal.data["type"] = "Atmospheric" + + if(alert_level==2) + alert_signal.data["alert"] = "severe" + else if (alert_level==1) + alert_signal.data["alert"] = "minor" + else if (alert_level==0) + alert_signal.data["alert"] = "clear" + + frequency.post_signal(src, alert_signal) + proc/refresh_danger_level() var/level = 0 for (var/area/A in alarm_area.related) @@ -828,12 +849,12 @@ Toxins: [plasma_percent]%
    if (AALARM_SCREEN_MODE) output += "Main menu
    Air machinery mode for the area:
      " - var/list/modes = list(AALARM_MODE_SCRUBBING = "Filtering",\ - AALARM_MODE_REPLACEMENT = "REPLACE AIR",\ - AALARM_MODE_PANIC = "PANIC",\ - AALARM_MODE_CYCLE = "CYCLE",\ - AALARM_MODE_FILL = "FILL",\ - AALARM_MODE_OFF = "OFFF",) + var/list/modes = list(AALARM_MODE_SCRUBBING = "Filtering - Scrubs out contaminants",\ + AALARM_MODE_REPLACEMENT = "Replace Air - Siphons out air while replacing",\ + AALARM_MODE_PANIC = "Panic - Siphons air out of the room",\ + AALARM_MODE_CYCLE = "Cycle - Siphons air before replacing",\ + AALARM_MODE_FILL = "Fill - Shuts off scrubbers and opens vents",\ + AALARM_MODE_OFF = "Off - Shuts off vents and scrubbers",) for (var/m=1,m<=modes.len,m++) if (mode==m) output += "
    • [modes[m]] (selected)
    • " diff --git a/maps/tgstation.2.1.0.0.1.dmm b/maps/tgstation.2.1.0.0.1.dmm index 946192b66b5..1325e6eb4d9 100644 --- a/maps/tgstation.2.1.0.0.1.dmm +++ b/maps/tgstation.2.1.0.0.1.dmm @@ -4183,7 +4183,7 @@ "bCw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32},/turf/simulated/floor/plating,/area/toxins/server) "bCx" = (/obj/machinery/atmospherics/pipe/simple{dir = 10},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "bCy" = (/obj/machinery/camera{c_tag = "Server Room"; dir = 2; network = list("RD"); pixel_x = 22},/obj/machinery/camera{c_tag = "Research Division Server Room"; dir = 2; network = list("SS13"); pixel_x = 0},/obj/machinery/power/apc{dir = 1; name = "Server Room APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) -"bCz" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{current_temperature = 80; dir = 2; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) +"bCz" = (/obj/machinery/computer/atmoscontrol,/turf/simulated/floor,/area/engine/break_room) "bCA" = (/obj/machinery/computer/area_atmos,/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "bot"},/area/toxins/storage) "bCB" = (/turf/simulated/floor{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/toxins/storage) "bCC" = (/obj/machinery/portable_atmospherics/scrubber/huge,/obj/structure/sign/nosmoking_2{pixel_x = 28},/turf/simulated/floor{icon_state = "bot"},/area/toxins/storage) @@ -4236,7 +4236,7 @@ "bDx" = (/obj/machinery/alarm/server{dir = 4; pixel_x = -22; pixel_y = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) "bDy" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) "bDz" = (/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) -"bDA" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_command{icon_state = "door_locked"; locked = 1; name = "Server Room"; req_access_txt = "30"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) +"bDA" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/window/westleft{dir = 8; name = "Server Room"; opacity = 1; req_access_txt = "30"},/obj/machinery/door/window/westleft{dir = 4; name = "Server Room"; opacity = 1; req_access_txt = "30"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "bDB" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "bDC" = (/obj/structure/stool/bed/chair/office/light,/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "bDD" = (/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) @@ -10035,7 +10035,8 @@ "dKY" = (/obj/effect/landmark{name = "Response Team"; tag = "Response Team"},/turf/unsimulated/floor{tag = "icon-yellow (NORTHWEST)"; icon_state = "yellow"; dir = 9},/area/centcom/control) "dKZ" = (/obj/structure/rack,/obj/item/clothing/under/psysuit,/obj/item/clothing/suit/wizrobe/psypurple,/obj/item/clothing/head/wizard/amp,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "dLa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera{c_tag = "Medbay Foyer"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = -22},/obj/structure/table/reinforced,/obj/machinery/computer/med_data/laptop,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay) - +"dLb" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{current_temperature = 80; dir = 2; on = 1},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10179,7 +10180,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnPbnPbnPbnPbnPbnPbnPbtLbtMbtLbwMbwNbkHbkHbwObwPbwQbwPbwRbwPbwSbwTbfPbwUbwVbkQbwWbkQbwXbkRbwVbwYbwZbqYbeCaIJbxabxbbxcbofbxdbxebxfbxgbxhbogbxibxjbxkbxlbxmbxnbxobxpbxqbxrbxsbxtbxubxvbxvbxwbxxbxybxzbsQbxAaIJbxBbgtbqfbxCbhZdKVbxEbxFbxGbxHbxIbxJbxKbxFbxGbxLbxLbxGbxFbxMbgubwmbxNbuNbuNbxObthbtjbxPbxQbxRbxSbqrbxTbxUbxVbxWbxXbwCbwCbxYbxZbwCbyabybbycbydbyebwCbyfbygbyhbyibyjbykbylbylbylbylbylbtHbymbgQbtIbtKbkfbnCbvnbynbyobwLbypbyqbyraaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnPbnPbnPbnPbnPbnPbnPbysbytbysbyubyvbywbywbywbywbywbyxbyybkHbtObyzaZObyAbyBbyCbyDbyEbnXbyFbyGbyHaZUaZUbyIaIJbyJbyKbszbofbyLbyMbyNbvBbyObogbyPbyQbyRbySbyTbyUbyVbyWbyXbyYbyZbsNbzabzbbzcbzdbxxbxybxzbsQbzeaIJbzfbzgbzhbzibhZdKVbzjbxFbzkbzlbzmbznbzobxFbzpbzqbzqbzrbxFbzsbhZbwmbztbuNbzubzvbzwbzxbzybzzbzzbzAbzBbzCbzDbzEbzFbzGbvebvebzHbvebzIbvebvfbvebvebvebvebzJbzKbzLbzMbzNbzObzPbzQbzRbzSbylbiEbzTbmiaabaabbkfbzUbvnbyobyobvobzVbzWbzXaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnPbnPbnPbnPbnPbnPbnPbzYbzZbAaaZOaZObAbbqNbqNbqNbAcaZOaZObAdbAebAfaZObAgbAgbAgbAhbAgbAibAjbAkbAlbAmbAibeCaIJbAnbAoaTVbofbuebApbAqbAqbArbAsbAtbAtbAubAtbAvbAwbAxbAybAzbAzbAzbAAbsObsObsObsObsObsObsObsQdKTaXudKUbxFbxFbACbADdKSbxFbxFbAFbAGbAHbAIbAIbAJbAKbALbAMbAKbANbzsbhZbwmbAObAPbAQbARbASbATbAUbARbARbAVbAWbAXbAYbAZbAZbAZbAZbAZbBabAZbAZbBbbBcbBdbBebBebBfbBgbvjbBhbzMbBibBjbBkbBlbBmbBnbylbiEbzTbpfaaaaaabkfbBobBpbkfbvobkfbkfbvobkfaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnPbnPbnPbnPbnPbnPbnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBqaabaaaaaaaaaaaabAgbBrbBsbBtbBubAibBvbBwbBxbBybAibeCaIJbBzbBAbBBbBAbBCbBDbBEbBFbBGbBHaXubBIaXubBJbBKbBLbBMbBNbBOaIJaMcbBPaMdbcSbBEbBQbBRaIJbBSbBTbzeaIJdKRbxFbBVbBWbBXdKQbBZbCabCbbCcbCdbAIbAIbCebAKbCfbCgbChbANbzsbCibwmbCjbCkbClbCmbCnbCobCpbCqbCrbqrbqrbgFbCsbAZbCtbCubCvbCwbCxbCybCzbBbbCAbCBbCCbBebBebCDbvjbBhbCEbCFbCGbCHbCIbCJbCKbylbiEbzTbgQbgQbgQbgQbgQbkfbkfaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGmaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnPbnPbnPbnPbnPbnPbnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBqaabaaaaaaaaaaaabAgbBrbBsbBtbBubAibBvbBwbBxbBybAibeCaIJbBzbBAbBBbBAbBCbBDbBEbBFbBGbBHaXubBIaXubBJbBKbBLbBMbBNbBOaIJaMcbBPaMdbcSbBEbBQbBRaIJbBSbBTbzeaIJdKRbxFbBVbBWbBXdKQbBZbCabCbbCcbCdbAIbAIbCebAKbCfbCgbChbANbzsbCibwmbCjbCkbClbCmbCnbCobCpbCqbCrbqrbqrbgFbCsbAZbCtbCubCvbCwbCxbCydLbbBbbCAbCBbCCbBebBebCDbvjbBhbCEbCFbCGbCHbCIbCJbCKbylbiEbzTbgQbgQbgQbgQbgQbkfbkfaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGmaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnPbnPbnPbnPbnPbnPbnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAgbCLbCMbCNbCObCPbCQbCRbCSbCTbAibeCbCUbCVaIJaIJaIJaIJbcSbBEbBQbCWaIJaIJbCXaIJaIJbCYbCZbDaaIJaIJaIJaIJbBPaIJbcSbBEbBQbDeaXubDcbDbbDjbDdbEybDfbDgbDhbDibEzbDkbDlbDmbDnbDobDpbzobxFbDqbDrbDsbDtbxFbzsbhZbwmbwmbwmbwmbwmbqrbqrbqrbqrbqrbqrbDubDvbDwbAZbDxbDybDzbDAbDBbDCbDDbBbbDEbDFbDGbDGbBebDHbDIbDJbDKbDLbDMbCJbDNbDObDPbylbiEbzTbgQbDQbDRbDRbgQaabaabaabaabaabaabaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabbDSbDTbDTbDUbDVbDVbDWbDWbDWbDWbDXaabaabaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnPbnPbnPbnPbnPaaaaaaaaaaaaaaaaaaaaaaaabDYbDZbEabDZbEbaaaaaaaaabAgbAgbEcbEdbCNbEdbEebEfbEgbEhbEibAibEjbeCbEkbElbtWbEmbtWbEnbEobEpbtXaIJbEqbErbjrbjrbEsaXuaXuaXuaXuaXuaXubEtbEubEvbEwbExbECbEBbEDbEAdKDbFQbECbEEdKHdKGdKFdKEbxFbxFbxGbEFbxGbxFbxFbxFbxFbxFbxFbxFbxFbzsbhZbEGbEHbEIbzjbEJbqfbEKbELbEMbENbEObEPbEQbERbAZbESbETbCvbEUbEVbEWbEXbBbbEYbDFbDGbDGbBebEZbFabFbbFcbFdbFebFfbFgbFhbFibFjbFkbFlbFlbFlbFlbFmbmiaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabbFnbFobFpbFobDVbDWbDWbFqbFrbFqbDWbDWaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLbqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFsbFtbFubFtbFsbFvbFwbFxbAgbFybEdbFzbFAbFBbFCbFDbFDbFEbFFbAibFGbFGbFHbFGaTVaTVaTVaTVbFIbFIbFIbFIbFIbFIbFIbFIbFJbbNbbNbFKbFKbFKbFKbFLbFMbFKbFKbFKbFKbFNbFObFPaIPbAEbBYbBUbFRbFSbFTbFUbFVbxFbFWbFXbFYbxGbFZbFZbGabGbbGcbGdbxGbGebhZbhZbhZbhZbhZbzsbqibGfbGgbGhbGibqfbGjbGkbGlbGlbGlbGlbGlbGlbGlbGlbGlbBbbGmbGnbGobGobBebGpbGqbGrbGsbGsbGsbGsbGtbGubGvbGwbGsbGsbGsbGsbzTbGxbGyaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacbGzbFobFobGAbDWbDWbFqbFqbGBbFqbFqbDWbDWaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10194,7 +10195,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabbRdbRebRfbRgbRgbRhbRibRjbRkbRlbRmbRnbRobRnbRpbRkbRqbRrbRsbRtbRubRvbRwbRwbRxbRybQqbRzbQsbQtbRAbQvbRBbRCbRDbREbRFbRGbRFbRHbRIbRJaabbRKbRKbRKbRKbRKaaabFNbRLbRMbOjbOkbOlbOjbRNbRObRPbRQbRNbOlbOlbOlbOlbOlbRRbRSbGlbRTbRUbRVbRWbRXbRYbRZbGlbGlbqzbSabqzbqzbqzbSbbScbSdbqzbGsbGsbGsbGsbGsbSebGsbGsbGsbGsbGsbQcbGxbSfbRcbgQaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaabDWbDWbLgbFqbFqbFqbFqbFqbFqbFqbFqbFqbFqbFqbDWbDWaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabSgaaaaabaabbShbShbShbShbShbShbShbShbSibSjbRkbSkbRlbRlbRnbSlbRpbRkbSmbSnbRsbSobSpbQnbSqbQnbSrbSsbStbSubSvbSwbRFbQvbSxbRCbSybSzbSAbSBbSCbSDbSEbSFbSGbSHbSIbSJbSKbRKaaabFNbSLbSMbSNbSObSPbSQbSRbSSbSTbSUbSRbSRbSVbSWbSRbSRbSXbGkbGlbGlbGlbGlbGlbGlbSYbGlbGlbSZbTabTbbTcbTdbqzbSabTebTfbqzbTgbThbTibTjbTkbQcbzTbzTbTlbzTbzTbQcbGxbTmbgQbgQbgQaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabbDVbDWbNGbNEbNEbFqbFqbFqbFqbFqbFqbFqbFqbDWbDWaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabTnbTobTpbTqbTqbTqbTrbTsbTtbTubTvbTwbTxbShbTybSjbRkbTzbRlbRmbRlbRnbTAbRkbTBbSnbRsbRtbTCbQnbQnbQnbTDbTEbTFbTGbTHbRFbTIbTJbRFbTKbSybSzbTLbTMbTMbTNbTObTPaabbTQbTRbSKbTSbRKaabbFNbTTbTUbFNaaaaabaaabTVbTWbTXbTYbTVaabaabaaaaabbFNbTZbUabOlbOlbOlbOlbOlbOlbOjbOlbOlbOlbOlbOkbUbbOlbRNbUcbUdbUebUfbUgbUgbUgbUgbUhbUibUgbUgbUgbUgbUgbUjbUkbUlbUmbUnbgQbgQbgQbgQaaaaabaaaaaaaaaamRamRamRaabaaaaaaaabaaaaaaaabaaaaaabHZbDWbGzbDWbDWbFqbFqbFqbFqbFqbFqbFqbDWbDWaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUobUobUobUobUobUpbUqbUrbUsbUsbUtbShbUubUvbUwbUxbUybUzbRlbRlbUAbRkbUBbUCbUDbUEbUEbUFbUGbQnbUHbUIbUJbUKbULbRFbQvbRFbUMbUNbUObUPbUQbURbUSbUTbUUbUVbUWbSHbUXbSKbSKbRKaabbFNbTcbTcbFNaaaaabaaabUYbUZbVabVbbUYaabaabaaaaabbFNbVcbVdbVebVfbKjbVgbVgbVhbVibVjbVkbSRbSRbSVbSWbSRbSRbVlbVmbVnbVobVobVpbVqbVqbVrbVobVobVpbVqbVqbVrbVobVsbzTbVtbVubVvbVwbVxbrAbVzbVAbVAbVAbVAbVAbVAbVAbVAbVAbVAbVAbVAbVAbVAbVAbVAbVBbVCbVCbVDbDWbDWbFqbFqbVEbFqbFqbDWbDWaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUobUobUobUobUobUpbUqbUrbUsbUsbUtbShbUubUvbUwbUxbUybUzbRlbRlbUAbRkbUBbUCbUDbUEbUEbUFbUGbUHbCzbUIbUJbUKbULbRFbQvbRFbUMbUNbUObUPbUQbURbUSbUTbUUbUVbUWbSHbUXbSKbSKbRKaabbFNbTcbTcbFNaaaaabaaabUYbUZbVabVbbUYaabaabaaaaabbFNbVcbVdbVebVfbKjbVgbVgbVhbVibVjbVkbSRbSRbSVbSWbSRbSRbVlbVmbVnbVobVobVpbVqbVqbVrbVobVobVpbVqbVqbVrbVobVsbzTbVtbVubVvbVwbVxbrAbVzbVAbVAbVAbVAbVAbVAbVAbVAbVAbVAbVAbVAbVAbVAbVAbVAbVBbVCbVCbVDbDWbDWbFqbFqbVEbFqbFqbDWbDWaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaabaabbVFbVGbVHbVIbVHbVJbVKbVLbVMbVMbVNbShbVObIhbRkbVPbRlbVQbRlbRlbRlbVRbTBbSnbRsbVSbPkbVTbVUbVVbVWbVXbQqbVYbVZbRFbQvbRFbWabVUbWbbWcbWdbWebWfbWgbWfbWhaabbRKbRKbRKbRKbRKaabbFNbFNbWibFNaabaabaabbWjbWkbWlbWmbWjaabaaaaaaaabbFNbFNbFNbFNbFNbWnbFNbFNbWobWpbWqbFNbFNaaaaaaaaaaaabWrbWsbWtbWubWraaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaabgQbWvbWwbWxbgQbgQbgQbgQaaaaabaaaaaaaaaamRamRamRaabaaaaaaaabaaaaaaaabaabaabbWybWzbWAbGAbDVbDWbDWbFqbFrbFqbDWbDWaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbVFbWBbWCbWDbWEbUrbWFbUrbWGbUrbWHbWIbWJbWKbRkbWLbRlbVQbRlbRlbWMbRkbWNbWObRsbWPbPkbQnbWQbWRbSvbWSbQqbWTbUMbWUbWVbWWbWXbWYbWZbXabXbbXcbSAbXdbXebXfbSGbSHbXgbXhbXhbRKaabaabbTcbXibTcaaaaabaaabXjbXkbXlbXmbXjaabaaaaaaaabaaaaaaaaabFNbXnbXobXpbFNaaaaabaaaaaaaabaaaaaaaaaaaabXqbXrbXsbXtbXqaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaabXubXubXvbXwbXuaaaaaaaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabbXxbDTbDTbDUbDVbDVbDWbDWbDWbDWbDXaabaabaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabbVFbXybXzbXAbXzbXBbXCbXDbXEbXFbXGbShbLnbIhbRkbXHbRlbXIbXJbXKbXLbRkbXMbSnbRsbXNbXObXPbXQbRIbXRbXSbXTbRIbXUbXVbXWbRIbXXbXYbXZbYabYbbRFbYcbYdbYebTPaabbTQbYfbYgbYhbRKaabaaaaaaaaaaaaaaaaaaaaabYibTVbYjbYkbYiaabaabaabaabaabaabaaabFNbYlbYmbTcbFNaaaaabaaaaaaaabaaaaaaaaaaaabYnbYobYpbYqbYnaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaabXubYrbYsbYtbXuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 91e1e848f79647070be2e7df1493b34899b4f27f Mon Sep 17 00:00:00 2001 From: Segrain Date: Tue, 18 Jun 2013 02:34:15 +0300 Subject: [PATCH 04/15] Bugfixes for windoor construction. --- baystation12.dme | 1 - .../objects/structures/windoor_assembly.dm | 38 +++++++++---------- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/baystation12.dme b/baystation12.dme index f002ef969d2..5fb16810581 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -60,7 +60,6 @@ // END_PREFERENCES // BEGIN_INCLUDE #include "code\global.dm" -#include "code\hub.dm" #include "code\names.dm" #include "code\setup.dm" #include "code\stylesheet.dm" diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 532819d0201..f199d9edd90 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)) From 79d2d578598d776073abae6fb2bc1768d9c04e27 Mon Sep 17 00:00:00 2001 From: Segrain Date: Tue, 18 Jun 2013 02:38:40 +0300 Subject: [PATCH 05/15] Code cleanup. --- code/game/machinery/doors/windowdoor.dm | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 45ff776d401..38afc122be8 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -162,15 +162,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) @@ -202,16 +196,10 @@ //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 From dcf984577aa4e3cb7a6a3a4eacd8948bb4ea5738 Mon Sep 17 00:00:00 2001 From: Segrain Date: Tue, 18 Jun 2013 02:47:24 +0300 Subject: [PATCH 06/15] Adding construction of req_one_access doors. --- code/game/machinery/doors/airlock.dm | 6 +++++- code/game/machinery/doors/airlock_electronics.dm | 8 ++++++++ code/game/objects/structures/door_assembly.dm | 6 +++++- code/game/objects/structures/windoor_assembly.dm | 12 ++++++++++-- 4 files changed, 28 insertions(+), 4 deletions(-) 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/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 f199d9edd90..478f6989baa 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -219,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 @@ -233,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 From eec4606629865c4cf4a89d4b5f395d7058acd8cd Mon Sep 17 00:00:00 2001 From: Segrain Date: Tue, 18 Jun 2013 02:51:53 +0300 Subject: [PATCH 07/15] Adding removal of electronics out of broken/emagged windoors. --- code/game/machinery/doors/windowdoor.dm | 52 +++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 38afc122be8..7230b27d18b 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 @@ -193,6 +208,43 @@ 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 airlock 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 From beff70c0147528f327cc9ab06557759467f0fad4 Mon Sep 17 00:00:00 2001 From: Segrain Date: Tue, 18 Jun 2013 02:56:35 +0300 Subject: [PATCH 08/15] Misclick fix. --- baystation12.dme | 1 + 1 file changed, 1 insertion(+) diff --git a/baystation12.dme b/baystation12.dme index 5fb16810581..f002ef969d2 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -60,6 +60,7 @@ // END_PREFERENCES // BEGIN_INCLUDE #include "code\global.dm" +#include "code\hub.dm" #include "code\names.dm" #include "code\setup.dm" #include "code\stylesheet.dm" From 6c43ff47e9fd4c78f60a66aaaac7b0710747b46c Mon Sep 17 00:00:00 2001 From: Segrain Date: Tue, 18 Jun 2013 03:05:37 +0300 Subject: [PATCH 09/15] Changelog update. --- html/changelog.html | 11 +++++++++++ 1 file changed, 11 insertions(+) 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:

      +
        +
      • Fixed some bugs in windoor construction.
      • +
      • Secure windoors are made with rods again.
      • +
      • Windoors drop their electronics when broken. Emagged windoors can have theirs removed by crowbar.
      • +
      • Airlock electronics can be configured to make door open for any single access on it instead of all of them.
      • +
      +
      +

      13.06.2013

      Kilakk updated:

      From 6f5cffa753a2b5fad25fd3684c0ffcc342a16d51 Mon Sep 17 00:00:00 2001 From: Segrain Date: Tue, 18 Jun 2013 03:20:34 +0300 Subject: [PATCH 10/15] Better term. --- code/game/machinery/doors/windowdoor.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 7230b27d18b..3c1e4c36421 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -213,7 +213,7 @@ 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 airlock electronics!" + 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)) From aa2ab80f6cb6d7da97452a31d435a483cd780b75 Mon Sep 17 00:00:00 2001 From: Segrain Date: Tue, 18 Jun 2013 03:33:56 +0300 Subject: [PATCH 11/15] Missed a line. --- code/game/machinery/doors/windowdoor.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 3c1e4c36421..66184774c49 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -190,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. From 32c16e6d196501db73806e0e12470bc5c169a77c Mon Sep 17 00:00:00 2001 From: fauxtada Date: Tue, 18 Jun 2013 03:07:09 -0700 Subject: [PATCH 12/15] Medbay Map Fixes - Adjusts New Medbay based on commentary of BEF players. - Reorganizes the surgery rest room. - Puts in correct colorations to departments. - Reorganizes Psychiatric's office and fixes their door. - Hopefully fixed the disposal pipes. - Moves delivery to next to morgue. - A bunch of other shit I can't remember, tired. Also, adds in training supplies to engineering training room, and moves starboard storage to the escape wing. --- icons/turf/floors.dmi | Bin 295019 -> 297252 bytes maps/tgstation.2.1.0.0.1.dmm | 1203 ++++++++++++++++------------------ 2 files changed, 583 insertions(+), 620 deletions(-) diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index bf16c04b8bedf5c8429f3e438ea574931d4c3a04..289b7f94e0bba12e72d43b25868139688bb72b2f 100644 GIT binary patch delta 21104 zcmZU)cQl-F*EKwPi6BA{o#+xR38IYNMU5W4OLWm)M2{|d?a5R-8nZKuH{gj|&2U9ADDufk3!VYFT%2 zUf1q>HWgV~CT@QGD=AOb&z~e5lh{M^BFVd3j?B49vD&GrrZ*l+(%W5=mjz(Bl8#EU z>+AguVZn`H!NowoG0|_VMiyM`0DizRhOR$={kn4h2%d>2BICxPS=bZtOxs;f;HTAL ziiMJHw(1A=aQkk@6=8zS*am&GyRhh9oX^H9YpeczXXaQZ7V98NM@D1)E7@*{S)^D_J9AxZJVT`BsQNd zg8(RnuPWrMc*Cv(rOFo)uS{hsb_YvLA@GXPmq=?)4~(c4*j=(lhHZS1B|G+LTU{Z(J`{NrNQ*@h#9 zw+#ISHgVjlNaTG&$d1TMBO^I71lHtakl)fY1-nniJgVNY#t z*-D2!PcRjHO5>FJ`(36xYg@cvNoUweD<&bUBic$LCqY+1yRNBbm_X1~f-ODso+!e6 zP7@`ypP2%=+e#C|!xEwF#^E);pMQIwoYnuw5AU>{0grC+3p}r4){`r)>IX`&;f+IZ zd`Qc6ZJB;Yt_6ljzgqEQriq4zAzRemAfENnQT*e{-Pbpb&p+C${O3q38La$4HWD2b zd*9;z`pn-48vo`8YBJh?;xoz+Z1c@LW%}ZSCy>msX-vzR;!!`&^_W1O@444=A5dDi za#0Z3Z-S$QaHI|7Yo4Z1K+QV|QU;CXEy%JWvMm?&DM3BhF-xz$BAe~V8H)|!ckFNCcFHqGBc9z3LMdpEeFmj%WH z8GpQ|4PdwVu?X?I+n)R{4(RWHQT+_}1Pz9&D}x@`STZc^%Fcm6C9cB}lHQ{b`v(1U zC(D7Zlo#Pyn7yqbzAUn!D0%S?HAwKV5M{>$+SV6*tt~-ks&teNDNmZ6#co}eNrK`K z!vR35qdJ}d+-2@4NYQieb!g@~$;$+Hgm{k*=}0@AGu5nZQ=2jV=JKE`_DqYJYRG2b z7;)Pe;{TOkSs7kt>#SZIMDt)a6ufRTU^;wD(DFcpDD7+ktkF|#@z%5k?^_M}uo}ul zDPqZv4`)J1>lzk5c(9%=0={QbKBBD{^#D4|{tJ(24f=#^ndv!I!D+Na*tBr59*dHw z#f}JkY=1UQ$51XtA}Tlf2qIQY#pI@<0L;C>BezXftYKH$lQZx0`v8LGMiwmm?<2>N zBj;0(K%={9+`SH4St2K(wKG-g#ak~JXWm35(g@j>2KbZ~!gS#WRqrH#A3u?gZxjgW zK_j{}99zaZ4|_jV?>k!mGIo5njhD|lpdobTQv{k_;uAnPH3ph@BSI4Y$ctu$v@?sDQZu z9{J%^EBJ7ECaO(e9ZBAMdZx-+aBJP*$POjJ5gU86>en&`9Xf8iy}2MVv&s)m3{KL$ zcbZ2|Klq9cy&wzZ?p741BN{G0uS-^Pa3({3GGun35g^L{9{_$G*!vuI3pnvJ6h5`^ zZi;l_m+Ym`*SFi{$bHAg2bqy%+Ob$bkj;~L`mGwVJSMp zrVm0G2xnv_=W6;rb(&BqvRorwzC%Kz5-rxIyDo-8{u5$j8ZK9fIr z=U;|&zQ4=dW0`X<)t$eu+lKa9m6RGtYTbuNuYTJy!kzfPSy1nR_kJJ@)ZHyNqNc0q zij!(XL$&%|(zAfTWQ~eQ_|xSUf0r2DA9rsrjMf(&D#YF*Jp~~l>Fv$fUK6uEs9hmB zj4eTo*7ap}l6?DbTdt)*4aWX+2_(X*ZIFby@B8DQ=_J!&yS6RuRZ*?`-zmo;#_TQ( zk%f9ry-4TqTZiNa)%1j+T7^?YhW_op;I~35_ch*5GF!YenZKR2?zg|Sx9i4Bl%6S2 zjfglVIa5piUoNfFI&yPCbmIu$z0iNxvFFA2>V0n#3&6)go9t5#M?NIPi(iG1%uDbz z^7*d*upqPb0ck$;B-gaSTAmv+1tZBhdR`72 zRr)KR5re`wyj4X1(UER4p!U1T@0ig^HI1L_rJ?>WM1s0R^bOt@4q@6Y8*QkdUTjE9 z`Va$93&=%ODYaXJ{)Z*&t;dJrYu>q>bbzjmgZz%31_@IBT`%(MOv4@$ll3g9NN?Z0 zR5@Ph;URHBUW?iIfFvH9O`Re&Ux+J8GV71fIs1yuHiDIiwM;OGGl7HVx^?L0PHs zwex3QzKbw~GdqONSG@X=4KfddIwIRlP$t92h-)vwab(5Q)<5(T*MK*{^a(#?qNDXh zGntmBpD7EIr(ZM4_~u>{nS~k-ezMIQeX5eyC__H+y%8>X_AqeOeS$AZy(}PQM5fZ` zWO#r1pz@En?)~);yE{ZfSvZC@y*P&tmBR)lu>{Zg77u6@PrN--gD!qzoO2f6cBby2 z)0hIc-^8yjo-Gob0sr})$IrlbOq)md-r94v>}ZC)zBCN1nTO1u`L*2--(5zew~%DM zYrTLgsdo4GH>OUkVUGIZr*4$E7|dPY9kt*Rt^XzDoiWO8{ptzEvAi=;r5HOBz_a(y~-n zp?T4`)<2%R#F=r2ZRukPnl=9nU(#B~sYu0u>@FI=`cu@-L@-M`n?#VnyusWpYt$?7E+--d-@VHYn;?s=zo9z|DKKp$>z=uMAN#%J&B07 znH-qD8H3cK*8kv)jLpB=@Iuom{*ct?)0^J@2OJdQXqNxSm}yQUj(JihZs=ZULZH2Y zF9@cIQou8WF4-a}8sM+Ky~HA?jl2IG(fb?Pg-QB2k%H+5oukCi<`gAe~EZ9jAKV7dBh&sL$7o^X~09vY<)Fg(mGh{&+Jb{^TpfP!irp zC#rn^mKTjjWg-fFr6Yn@CBSZlhs{QG=>Ln?pCPb^3#r#jV=-Tp#DQ~D6RP9IiE?Cs zpR(Dz-jfvD{mj!!fnayNQr8B9usvWy=x0mhbrK2sNXY9}8$zGKPP&Ie?%5qn@T;nZ zRk4M4ccgMGyEsVF42YUW@<=$tFKZ0t+z@5*pq>ME*nQOt@Nk*q^D|EMWpoo%H;c>0 z{pydNIKHM+c;oDC<4=FWCbxGk9|c;pkn_bY);rEa5a;orz~&!`XV0;k)BqJY1GL2J zVi(46VcJ*ABGcsIN!%Yt^l^da$YdD0XN?X+Bjnx`?RaO|Vz?lG&YUIpzZCj^1t|C3 z@p$pZ#zqAzwof=R4A(msOAVuO*A6$HszYjhtrRNRux)AO^(aO8F}m`}=*X;`)4XBG z-+Pcw@q7lzdmlhPf%xW3iIY6>f{+=f2fq-@;)$rFes!SeK$&9trkAyRk8!mBP`|vY zG6yUAbf5{PBT+dE<5+)p341`Q>+sh-j5QBk(%{OQUom~QHVkNGD}fbeezr z8@2xjGBjcyJ_iFDDqtFsu|ux^{j&e1cJ91!Y+-Z)`m=RFe9W-DUWwmk;mOyluhBi! zn&n@X+jyf8g)eK%lH44cD*6if5g1Mh=$Pe-g(_)F}-FW>W zhMQL2qR(=)DjIotw|NNW*h!SzR!WOG;}=zoVHAVze#KQw70)f zD!_+M!qwD&tlyRjg&~d`ZcS=X^7ofJqa;qO{DOu-vwx+&(Vn0l zz)}%OpF#l3O8=#`KSS&j4Wl+@zbeuH6Mggl213>C>~|XekiE0G#CF+0$=|CLkcRD3 zBS-OsyT05X`j-gv7Xep}{ZDnYAMsBIf`crGroIO;e0c)?Hi|w2x^mF4=bimMoIze{ zNwh66;ihiZp{_;a6}9uJJ;OtR;)cQRepB<)o(7OQvn?ZJ7AI=!uesR8f+ZClT^K25 z41ZJggL%(Rs*q$dX?#UarV?yRB6F(G?!-*kZq2lzq@>b}_?Ud9_gD%g8^YI($z;S{ z9m3s6_|EAytj5v`ia(YEj;I0dU{S6FOdTTX=W+>J`>+^(Y^nTyNf&??FNR%^ISkqbyj}!1Ut;|+PCF+Pu$Ln7Zh61G02Db*#iPG zf|O*XbiT5?9IZ5`zIqGIYPhd2-Cio|x44iSpOzsJ5A}iuP(FVAxXBm6C4oYY!*;mR zhCAV6ZC=|E?!?f`bwHT7IC)?Pj^9lxjsG%B?K#x*JwDU9yXuC^d&;7yq|XCe~G#S?7G){a6qT-dqS|2R!n~gF(0vF zaC`e7yX%JyW!V_gU6(Kpa=f*s7mUGtM1{88K^sjjw3N{)fQWZ9CKZUUx|NRY{X%IH76g5j#xM>A#Ut+fUye z^_cyfDTlbEbgD;W9#0qEp)`--8RR4GLpZR}9JtiuHtgh>h@`R2SH_ZQ;sF|v@$D+=!q5A%?Ggma^IpR^_|vG)okUAi zgBqWAJ>S)IIWjw5HRn6(xC~Ha>IAjkgH8JrixfJk``ZKjI;i58RDv*SAQw;LXhksl zgf9-4E6FK~P=L>&sq3@r2-JQLcHrG9J7fObP;_#dQDZ4nNk>l)Ha&3bDv6m5aO1pJ z4mN7EVJzE;knR{l-bFaPLQ%*NJt>2m6Vw#gO5@BTv zyNVeC4ddn<%F&!AF*ZAW2mg@L4zEDwhP={=|Oz66fbx=i+GD$O$hBI|( zWc2v&shCdjGT1qH^Qns2X1j+1<_m=r8DGj^zwx{Io&r=54?Yv=glt{_IV|jTM0+Ia z%OHPotnEu;8Kl#z!rK-q6G2jWN4NMOD46N@!wwZ*NKAJGaRvH{%(o&}44us?UNk&4!tz#M`kYbCVXR)A7(UacrDCa zNJ1k6{?6U-t*V*QR1g9BNbaxDk68_7bz7cTTK6L|CkqQyef|9(o5xtqKYSpv9m`hY zShcjYyuP`*zuSM10&=gIEIi$w&EermQ*OZGaI{_ughmh-A?t zpABci3fNs!!*hU3SQzbsa(fvkF;=XkBiqb1h8Q+zBZ&{~t*1gOk}>%=@WOkjrg)ew zY2&&X9FyDFEgpAsihip6*#0NmBo;I z>Kj{nroHT7q!KU#dl(ZFldoID605dtPYejh9A+&IA-%bIFS@-3H`l)@~3b&6z4H(hGWT`+nIKvL$j6 z1~t@Nzu~+fOV9$Dt;HxPTeJ%Gj3jC)juSMLiL-^}^(EN^*wgp0P1UKPnNx~%cgNDq z1vKmM@aFP3f|N{)t9ksk&v~sMe9!+jS1ih*AzT!FB)d6aTkr~XkIZxZ+e0uLXeB!j zV0BFAA&KrqzSYeB^<|p5m4Kg5U+tusV1mTp8RLwm9I~*jj&-81llN`#F;VaB3|o!J zed>+h?La=maVwlSa3jMuftS1xqW%tby7}xH@7neL*2n*%E>BJ(Zyu2?s473MS7(AF z+&%S|2gI1h+vy26BRW|T%l;hUTZIYCbLTIXGo|r%kvw&wB{AQ{(ke7D#iU9YrqImI zlZJMX?l-W4$O7x)f;-zlSjG5>+~gRk{+-z8_k8V-H@&pZe8o{Fh4ZRw_8TW3YHJy- zT|7Kq76d)h=ajLRDz3jhQNMpS*>C5866V(^dwV#LMAZ^)J66vZgf4Xi)<=LvxWFn5 zv9lM_06R(TzH-w)qMufp6!W*uxHLebrGm$T4Zh=>UYQUE!n?h&Tb}Q7?a5?bt3K?) zJ5gA_27e?ZrApjRdrgx+ugrUC`8b^EsA+>36hulUMQY~s=}BE(U3y+t_wB9NlP6F3 zz~Fc!(kFS?8vWwo;W7L433%e}?jDtNRHMVCZ*1H%HAVJ>lG2l=j_!}`nAGQF)u2c5 z(u9^eyw5s(bjGQQHRH>3AGIVo#Fqnq=w1CllU}&Ep7AC--ifm{b}`Is!GAA!oOrE9 zbTSU9b^JI>*uIC7Htpp4F+U#Ol$dT(o1Uy!D)oV^`pwVsl8*$A>;O9hi7Zj~_QxXu zSvfhqBO^qmWo7*0;#I)-__(E$6R~?=o%F|{Edj0+!qn7Mbm;#0@gx5@D>k<_BZIn1 zSimwzzxAVX!K;1N^d-n{@C5IZrP(Zig>Gs3_ak_D`%mveg^xLTVNC9jFj(36QSQ0C3lFv3esL6$d!)801Rwo7cl%fjL3{`Xt`K#{Zc zW?=jUs6!o`-8UdfkX!c}Nq%Sh9FCU^x3i;-3t)QpclLSfy_WLrt^&Ag2aNKmDlQ3t zsuq)6U~2)`s@CH=M4;YwNlaTNXj@`Gv94}wZup(FPuEn_4vh;HYHI^;NmRLAG zL-kFU;8-U$sPC0b@!Jy~Cz4+Jig=M8)1DvKP!h-> zFChM8qa;-G*azp}j~9ts7;_h+#s_*3*pAD6{F<3C3?p=uZN*sP?9|dlj0E9;6Id4> z67iN1KNBB|AvY@m`oYX@{QVbJ?1>LEAdpB+kVbg99ydoa?hjp}yZ8gFKQ^61P<`aT ze3iJ~W%1wQHtl@C+xp`mfX%maze=tYu&?$${VO-Bwdi(eZMZ&Q=$9{!6{cP067JtG zrp^f#a?;1;GpwoAA}A7a0>w*wo3r=ucu(CCYX~&%SK6uXg}8Q;EaNWoX(D8Zo``+4 zNo$X&wnbVY&1siB%7%G`vYODrf!5a3zt3pIlNb2rQ&kpr>#~|Eppf2A@R$H|Y%;^i zTa0r2x0t>k)xo^`v%rE9DX^}w^Qp%vNog#?Un(j58gjvVV>_PAZ%8?izs3zqSn zo^(7fUa%dF3fz5|rv%lf^9rPDF#f&Q*%Pj|VOIO95aF&^?Z2do6GSfkjk2`viME8R zjh{J(=(kn7V_{PBbPZB{*@vz`e{i>mu;q|ibe$}C25+O{I&x_}o95733xjW;+BU)5 z>di1+tJmot#nb2oC8iE4bP268PABAk7Lvd$0E6bG+{Sou3Lss+^@4Io}nZ@?J4(T*P z>sNhzDr>d+G2r3+Sx6OpquFLvajkQM77L(pr*2Zp<&3-_HzadcM|`>LJE$E`C!El3 z=E=ISNHS$9Uy~oU`7TQucL)58ifRQ5>RhOCfahh59f&HFZZF8qpXwWv=ZaEHTh101nCSTh zWH$UNb;HtfNp?~P+Zm6czRJYOhoPhMa|9zfquhj;U8AV~O@X91Ia*$xX{RfH0XsPq zq3xw@Jd+7VyIf@qZ`qH~f~}@YO5ZO-WQ2auet)A2=>QQ6&@zSei_^kZl8CMPL*;ad zxGd^kM??P@#4nT7yM|$>d8S$nWJMf*hi>1&;qc5}{+g^{E5%QSQmTSM#n|bWCH>9< zsb)mP8!lAZgxP~^T6r;@Tbcn>4tc_!sk(>OI=tN)buJ#eJ2Aa?5lpgLjaU(9$L@uG zYSuySh(EwO?F+r1Q;3yvp;5|F9}N_7^yPbLY2~#)UeH%UWQ>;YN{^JNScio1iK3m7 zCOtFN&ybO?WSC?(O*xo~C)%@mFsCKHN~h`G|9$0XO*ai)76(9Ne&6Lw*;r=l4KLJd z9r+ao^mndhZ_XFAEzJpfd3_j2j{&#urwtxA9&Ny4uAC|pQ<}D>L<#nGDG)Z*@uM2y z=JOKvN{7as1Mv_eK^ge~ll%rZMcuR-AL`r%cPpPyO&F$3o}#=$k8lV>oB%8t5Y?9w zsnPT?wbhYySHJJN$n=}hT2J$e@3*T%cs~u=XU$mM_lj?;%CtTRFrx9iS_9ukEHe*n z0G~LOs9XQ|PyF(2o(%x~VLaPm-eQcl9u!zEa;#MPj4vrDPs5aVyK_PQfIA5~7V{&= zA8H3NCjIKP32n3mZP_fi9h;3Q-J0xOXMHhcM;f?~{fJF^uzRkx0AnUwbji{k#R) zp!7PvNxjN-XTOBM$#%nv0mW;)oYQ|I1IVR0gJvDxp|GlsmBdy46fVD3h^LP|(grMb z#=mveKXSBH<;{I5v((Sa#H)p0As(yn^uECUv6-i3Qf>4luMNC>HT(U_DwVX2AAcB0ZobL$?qP}_ zI+}q%ZkeiF7J{qQ|52DUxC^ab16vd2^9jRgF7Pz4bEEkC^@Uo?CXYR>e!tgKvXeum zrpRGV9azC_75m)RM{0bGmX==%e&{oxM`n_@IbFwBL$m>}h-N6;?>_cQ${nJscZ>n9 z2Di_~>^H5xa(dV>$Y};WbW}2=Mx8f&W9ZsYWylvrdSX;*Qbz6ZlN`YSPPG5#d|H5I z!TK%7A55O^h)p%r@_R%JS4kphk&NB()ve6gsX2wVh5|*&XbU-Q8)|+{~L0{S5 zuH7QxF7NSn#`F4xAV@Vpyzix`jA}x~gl0aqU{j3!PY3x&C6Nhien=qzE~FW%fQWCB zpck}ov4Bg$JJb*cgyBBBPF`m75obh?CAG~}IL7;e#lLcXxmIs1YZ2LrYR(9FnI+MF zJqtv`cg7tvYP%FmrVff#e+I6s4;}FTR`{Z?U6{;36vZ~?lRdH<+|e#O<5QJV153|)g80NxxA3Op_M7|*p=MNq z;?-ydB595{I_2eDjI|ip24yg=;6@uRZ70F~TH17fLAd8dQQ z9}?Ui%=8k*bq4HAO??(1@dPPG`L{=&b-irO_8r{aBIIf`tqbpb&%(j0%9O@k=!EzF(JJ8M&?YzVNRVQ>e2)SO=`*A#_ zIKEkPd8-!YAd&}(m2W&)Ro3r#dub!U7!R(7=NNn^0^a1&;@k>*?*BTMTHfDEy~KEl zH@V07c0Q`Y-s|cu3!NJ{I@Zt`i8dB)HOx?wkG`gG;YM>QOq-4EapWZnYiIm3pnHE_ zVzp%eyjx!}C5%2kOFmt+z)G{_GGu~sAnkdCP>lGb*ckNwCsK6hEOag`A3xjD|5(oW zTzZEKs0qFWz4>YPBCVU@ZjynO7`AyMr)>P@1dkK20T&ZZc?!OhOBmuD5a}0cKYjR* zHsr(JDAFj)VJ3bUQ*2h!Qy9tCh$*Drn*J~zl!56s5QTyd4 zrT%QO7mxm=TY*M*qH0rZqw5xE8?BwuF_1g@34yp~W@PoxvrnyFEH`(t!yc8V1LD$T zIApw=#V{clk{Pk#<~J*W?t((=K5}SXPC1~3NjCp--W^_^{H}gN+Wv?23;Qh@+9tf) zZQjT8ade{L>bFR*lRxZn8_jj#z8m27`Kaul%*?L##93}RBf0y^ya1f>yEzk;7Uezcu%D9g>zRfbma61A8<=sSnL8CUG^B+(3>t`QJ&*{BT`VZa_BT zLWd&^;t`Ixta$~B>3D7y)l;f!x_ohnWC(ieW-H@MyL_OBoB|!~5)KyAlNuT%J$i1m z&G_teaXYUfAxHc^%3te>BQh2l@KbC0i+3~iFTR|%OfaYMVIfc7`cYIYpqN=P=~aSH z*o&kh%-?giymS6ru!U*6{Y<4iw{{_^<8-2LeF6Vv8h zRQ)XnBT<5dZBg5-)H^L+fP^ag_AzTb`G7Fe&*Q5ushXhtpSWub{bS=XJ!LI|9D)=&{f`IuN(CsR&^Q82L-#Erg zhiH%vS0o?NTC4K>rDNZlH1tss&P<5@0C{Qi=frgo?{6QThDrqiz zGq$HIiwqmR#L;bo5kmD)*_Gr$7n=yPp1^r z0DB`;mGhr2ul72i26n&1&v=*&IX!jFj!I8ph>QFCfZPqhyC2g^^3=##UcviVnP&6{ zkMEROh&wOSkwb_LOGfkQ^hr?=eS5-5m~8V=TzE4pIR#ZLRd>g z+u7CI=;Z|(31DcDGHakY(}1b8Uk7*E{9-!sHO4c2X6+1q>TWE&zugQan0)XX>n-m} z9$k&n>pc?T(z^pWT&~{5Vo$#~aD)=tSZ-p) zY&{NPXR0@_6DXfRi{TW0+&Gxf{(}`-uC1SAIQkVj8k~AM1{G!n#`4W%sNAf)?v-0w z8ynjhFH2|clrLj=O+S7Fg&}vBq^aR>E{Ii9gAMR|;)}TYkxNLt^1g|}QJ;19#gI4l|sjMl=Nm6;!4QIwNdO_SDH0t|MOL_A_0RA1@ zenW3u^Ic}_Q(>>k4|9xRLB~R~Dir-;8@^4*^&6@sclOMN2BbzCsvl~oebZ1lf0lQ9 zstt&zK8HJ%Qq}SY>8;;c;zVI-DCbjGg9Fw~EB&QsN!EWJl&8U1A=-?| z9t<`?8Hj9Dj9v%GFy*9Sh(Ri{^pObQ!3u-ENO)-8wCni_#VHiua!LHRE#B6ZlpBgl z8A0XU@8z9@@%l3j>dFn}+ssFbtf^+b&osY&N8iXX5oylM6*|F|UTmxk0^jxnGhc8x ztqdxjP3>{00^sSDgrzJZ?G_#K7=EaVUxN1;glv<690sN{TtO1hJ4x8!Z24>n|I^9zD{;W_Hc7|hJPuf7Wq7Rc<5F~ zd4S^;-j1^9dD>{!gEE@Kuc4hZbY_|Dn0r6 zP38QY8T0b2pk>uG!eAVr6ukcM(c1V}16m=T@!B?)GmqE8=~|D9c9rC)iDO)~Q1}N8 zx*+fi7vE!iGNzQoKrE46Uw<;M5Q|3JJBRK!&HEXHTPo#xlxSs;sU&E_*KV$|=_Xfm z2DX1~_`?{K!~^d|gr-0~A-S!gZ!+>qCt)+x_8!Wdwckl}o&dWpZC`=BH#qgDi7SK> zc1CS0XA(hslI#Y`U;8s8gdhLxx`5r#5i3(l4t!Zkw|>)1f2Ia*^Ds+2WCmwIc|}qY z$s}gIaCZ0@4?~;N7K3zly9LWU)RndsF=v#C5F|M*CBtQO{UKBoQF>QDb#G`R47@3Z zoc7UN&6G)m0enRKXjKLOJn1zKjs=7CwUY@+Hy>KR93|aw%^+mLdBC5z8ET=cI3Bi7 zHT->E-ha>6{+IgfS01fj`F}s82V@}#W~)o+KQ8x+8KVtC zd6$mf4L+?i;EjDF(EG8SmU`I1FIDV?brGF(b0IS=D@CydEt=;Q=koF^> zdm>^3_|1VJDfs;|PrTZ*OP&i%!-~$x)T-Agr|s3j+n2Gk)t2n=sRrz_y<{y51BP-Q zs)+q)N?uG$OVJ~tv0R+O-30p&IRBZ)A24)$N~9d^c7L-H_~rw|@mwlU_Yl*^$IebDO88B@SojX{#>#T z?>Bo`cT_Z`BQ`A&BKd*YR$k=Q-EXRR@?Sl{Z?@`il%>@jG2b(YVoT39+R@F(_X&7^ zfA(|WQ+#bC(??C_(VmS8{<3`pt^L@fFB%n2_tP zB+i&T=<-d1J}qCEukVc}_05wh2?qmnWA$;1C0@N@#aVXDsR=~+hu7cq(~(qu$4!(f z(eRU2T3X(SpCP_^G3I&Y}oZ>kHVbkv{eaiyFzj|Vu7N;$saXH2GT$H|R29bjbNtVzI`(a3_!;!Ti+v0b-~1}V&ZOe1QYT#sNw4_6w?;QCi(hiz#bJK^_pb%>BcI>z z4Vhk1h$wnqeX!2SCmx>koCZ{Nl+ljr+YZkZf~p~;Jf5v}m+jAZRr&cS`(eIEvFhiK zpf;ITtk*k|4z0COZ0rb;B&C2TqazZAWr-5ybT{D3BXQ@+ zfNG1-m*{*e@BXLK{oPODey;k{$JrM(Yr>XRNXL?cAdxjZk65V=LnwPZyPfZuBeKg5R8BT z8LFoe=-~<7S0VP9Ns%At94W}Z-0dzmD3k=55xG!5MX(B2{w4u@@EYZFZ2y2b%yUy;L8<1(7 z9e$pNHz7uv1r?>so{n%96f${wSdGP%pumpY#48=41+15?)}Jn!YW>eL0nI;18_$GH z0_zq#7;ZZmc9ZdY(v_HA8DaN)CnL@BBxHJNnPkP3zd+%6A5DS7B;`BU4Y_b^a#_c8 zYZhDeg*_L$Ij93A7uu9!hf=Ami7YQ>L z^>mjb=za0gGw=)A`CdH86;9ysWgrPChMa*6ZApKXx91D^f1MnVUt0^+2 z96PTSnP_kSp6&H%aw2Yr$`&k;jC1dzRbJ-v0PIoR6=Ql(_e3rhSLXMG^5-dfn^?k^ zS(Y@JGb=-owoR|ERuZvJUk7;m{i|i2TH1Aosy}UDrP%PvJFj$Pv>f+cZ355uUjJel zuC>eg_3dBc`R!pvq8s7Bb4_DfhW=fyVOjEr)8k)82&YTELU|z1;rI2&6n~(cUPgxZ z0dbOxeD1}?fBn9MsU`k**M-*|dUE&g)aP)&`zfgPSQUghjg=p@E%P*uQq878>~Y z?TZNckB??cM2HTaN>Sl1g*NI|FTeJFRmwZAvfN@+p)t~U(oQ(pt7cosm%@K@W7@PcG;JKkX zNmFd@_Fvy{{>6G3l-liWxaerBl`heg)sBAX1T2{UV9Q^S;$a=h%qgn)qaSt$7zf~XPx#|W)ig{e+P#=^Fu3#~>?wjeDk!p{kbU1a<< zVh)d4S;z|}5J3VyuTow(sQW!@Qmjv7J}Y9`>YxJK4i01#FNnO&K9f==kfJ_OTz`E# zK7cpAVw#ek3&Z~@P00FS3jav@5!jxAE(iEwLdDj%ZIYBx#2I2GswwTsiKG8)8GAHw zY426?1Z!~ei#mw{kLUwm&Xfw<-?^Kx>*BYxDSgm_&I&aP((u%4 z4eZ}e#{+Fmh)L`tF%KeQFD6<1F}hFNnSu!tuw93{yUVp#h#)c8j@fiK0I>6{sbi2P)~b@?{X(7>>QdiyXG zd^Zj5&AVI7t7^(YNEy9XlCWE%ePT5HZ&uA($4XCmpk0`7?3v4LL3cuF~*-FZa_ zz`j~CTUdB7^50bt)C>s`Z-p`fQ3pcI>g1W(aXQ{||Zqu<<*76s{$UztB@t-c2F4}axSV---r zc-DKk))^9Ye%>*4T%$cH!mr{MwKT(0nQN8dDKI-%o<;|o{MDALhwJAJoh&N7pL2`fQ^|*g)JO%tWx&mz29o!6v{6`nDonGeU%8 zTnz(+&aWTG9p=e9Y>&b*wr!ldoafeke445w{A(H3h)k-{t|fXc59*9wawya^{YTYI z(p9r>R$><*Z^VS+OL`4J8ia+XD`!1^RdC?KLYMW>Vx_=;%{cY5^#w74FaW@ z(GLWvXjdLYh@usy&(QJ$wAP$*_8dfnkS9OyMf~6sLT^~T|ED1=0Banj;Ct4KRaf4w z35E8F2;YX!#wLr*n`d$$4Nlhm=z*fx2|B&@BH~Qabn{nyd zHn`7xJJ@*Lx$$e#-w4dG@)yS<_+cN!WxX`SM&3+kkH73Us<`bm)|#^!7TN(P>s8>E ze?Y6!a?w8(5k?>H(!SON_9GuC5qMBdZ?|r@(Y!*TpTa{w3oy0a1)Q%G?~s6Y#&WPG zo_6vd%Ge4h@5y*y`=v_T&9&WKEPG$AM?4BIkcj#E*(`NQHhF|kQ1zYK_M{chs2QIJ z1L@7{KDO_X$pRF7*fD#GkvhDIIuav`4fT29;?c`0oUX_->(;Bk(a#+hUNBhA<(7t=6o(9?cUq&LUfUY> zUJJ$pfzZ1TwG1<+UFXx;Z@F-ykgc-Z)q1Rlf(~)KM?!(^_Ti-ltPT9IFvX)aW!SVt zkS}>sE=-?-d?}mU?EO5=ls4kgJEEXYlFR`L<@6TM$1*HlQUGDa8D_Xdt1*Gei}>s; zg(6KXtTi8zmo%OSPk&>XuUUF;zL;`5|3!aULLS84AN!oikVq>F(9uC^%<995kM_}J5!q*PtIaRhk&%f z0k1dB8#Leqk~qVATi1TX&gQGHRU|TqNS?s?5`k28M%D?PgP$W;K?~|Uqf1a#~uH;gmZ$1nurG=Sq9TO;&WFNKDIDy-p`kbg@XR&#-UBjo~+Lc9Y`_ zKLzp=)(Smt%HMbG#XH$sw~bsA9Vvrt&&l#%rQk<|Mq*`xI4@plT~HM&Hi#AMG6@8| zQ`Y!?o-rO7bHV-h-tfW{s({cK$ylV9EDY%C5t;;GhOF(d9lY?Q7w2!jE&fonapT#B z+e#NN^~a~nwiyQRY-!R`$&y}`>)IfoVZhGTyJ`u7O?WRyWHjFRXpzQ#1U@FkfgGk# zb!Cw9i1|tDXF{@WkPGhosHMF<23ANnS2_{7Xp>HcT8w)G;nRewVp`EpM0r>6V^Gce z4#4lP@W~R++Clv3Jp;h~^`Rp>gl4NOCrQ@w>gaL*sWIN-vSz!m3rYKJ8c;Gv4|JS2 z3!NUDwgerc`hiAfxgXku5wVKa=3Kyb>(qw#QS**rQj6(t52c!8_&6Bapb885^*`l6 zz6Ny_OOqk-ZNUy8UU#F9b7tb8Mea!ZuWz?6 zVe@YTtElTaqG?0`i*~@K@}Y5Vh3r9E-QgUB26=f%Jpo-F#7n}P_@pVSR!p67erKR; zHe%QlgI-3@-7&YfSK`h$2q@`KBsP?}EUTIH{0;RqP7zFS7rUrX@4W=oE8d(ak=^Bk>PE$U0RrG{*HqnD8aCnO7ACQx-dq<|TX9-%F4vKKkm-)%sU zo1W7+fjOggk?@_ddvAls1BYyR&|6j$F@%9Xssj*Dm$+oRxL+z-69O_an9CjyHzko1 z!yanu8WN~+18gI$zu1;yq1y#U@0(}g6CV+7Mf0eU#k%JR1Bl*(w2`x)s#I#lHIwTt zQ$!jr!q*RS-|l~0Rgo~?HveX21kzHjHiPCp zPq(w2|3TkLk^y~obpbX^#1%Ln$vYkwlT+`5Nx9BSEYV$!Q^A5< z5#U}0IZLToYked)s*|evc;wTUj77FKaJ{Y4SEKN+?CO8fUi!e6*uNq1s!ymrnDOKh zc7Y*H-(S`l&WB0gt(L&ag2a8)Zq3=9nBPKAZH|;VS#yDVB!`B~`GIVk3bXe^0IpF- zuQ*TRXcp)^ZE~4s17Z=i931hjxUraoXP4Y4GX-(@I`Bj=56k;?_^6;_Fv9+VKvBLQ z3DDbTLg@;1ntByY%?0#0t1;p+!H6ceGfcl;KBEd@STVQ18=QJ}X^ittp^89Yq z{TzwbG%@x^BP@T$KcyXu_-k)vb-H~aUiLsXE?;{ksYm=p3mA$wqrju?6bk)rq9*g} z$c#V(8v(Dc6v`Y9-=2U@cK@F?&O9Ef@Bia>$gU8wB)cM%E#$-4vqVHfmh8JqN*R-D znMT=V$#UkfP|8afH z9L*##itSQl)j%MjIT}&;=`` zh@Q29aYk(g-lMAPJ=zHAFPYH=pxFK`Iw4f4NtrsUWa4@~%8|Z%ZF#<``;xDn>ne{L zn7>_AAKc-fBPt?EZ+g6QBw#3|Q4~{7(_X zoq!>Op5a0+7fu0l!XU%cOx(H-{BW`LT2R5R-V3mkg7+ga8%QLwx3sI*2bgM)=NFhdcD`)tsFUx*5jGCLQFD0xBEtiSQWlov>OdZV5& z^M-1Wm_+*_g|biCUXn}0B|BWiGR^QUyM9P*DfTPA&>jm-+SI6B9|2%3o;1D}7){+s zEUVr1w^ph~l`5>2!8|g+FEO2h9BI)pfw-KxmU#$9;ob>iCnQDt`V zTx*TDD=%5Qfpeq$r<0C*`R{G}WnF{QQ5I?&Ega}wVNv0^HOJr5?Jlxde*m{Lc-uV3BS-55b?SuT_%7>4 zTcE88BgRMqS_LRxPZrbU(!!~5nD0sMqjiBYz+)%% z6J7r8T#?KBDtC9DAz)*O?;IRJO3IW4XqNVDkXQum4lSN=PKo-)Z5j{kD)hXs zJhx>jzDEWnkCOY0Te~OAk7J8Z29%##!~2erq;fRF4yM(fj{qn>-nz?Uy3x?O@EGlL z)hI_&acke)gTFIP8?3ha@tC)pK|U?L)t|`Pk_T zofV-yLeP>gu?2swHgov4N}VW8BE~Px6BK-6Ecb=2e{CW^u@{q;#Fj4bY~y?Dc{%Lm zTBZFD+}`)?*wK~F!DnYZ<*Q~)Zs4Bpp0g8X7}?Dh2WVj^(y$c?9CeNqt|69-n3rJVqC}P3YWo` zLz;FhjkgDT@am`r@~?O;;q?r9ZGncH5!0Mdboli4m0p?7>2cF~D0-hgpF7>OqI#{f z-vNNX-Bu9{UHvHviTV{zT0FFef$A*jY(eCdC!o`hzQmL`P?} z9&acEJra-(o{|3wt^8Wo?rhgN(*2N)pKaY(_&C(z-gEF~^jrgO#cjMKjwd`*<`oMW znd!Um2pjqCgqErEMFDBKAKsr@O*5p{^d+GkB9f63V)n=t-Mz&n@-044NY)AHGr$>F zH3-rlzp85N8krPPJ^U)^xaI`)IyBuC#F(bToeG}K*4?_iO}Cp4{! z$&HWWr+#E5oE7erp<~;9&5*`U06Xm<*nd4mHA&C#N)og1Fj!5vk}oW$bCFr(I*TbC z@htd3EByo2rB<~e5&fpp9tl9yoLCnAItGFrJ?MkxCu<6Sq&l?0{47hp3oKWIIZvi}E zF^tFJxI^#Ab#a-u-sjIwdcL)XIWYGp;{8Umo#|VE*zp%;*}9m4GOjK^Ta+en{-rRA zKXB9>8vanf--M27Vus4BS{n7>H(UG0`08z8OjU{8ga^+zxojDxg8iAbDIzw7?M`Wf z8Q7}TAW2--3oylPxzCWNT(xNEDNTOO!lLYC@yCGyQf^6hXeB(vCTRcDU-Mm;TCjjn zHhaX_l8YIgD9bp9*@(iAyiMz1`&sYn4ap;ycYx)ue=Ug~>jmUE3-8(09gR1lapb?- zU&wRL_AMm4GYRvLeZSOjQt38f;O=*^Y?ED{bbLSA(Gz@ZAt`+I!GSq3K%&$$7e0eNoWXCTLa+>nPel>W*$CwCShc_w;v7RQt+nqZ0EZ<+0UHqO9i$^|B}53gV^Qc@&%pr41Jh zeY}HswZ)IrKPl&=y7RE}lL>utvyg>}2cF+8sMX(DD!XcWvZ7i!qUqPJX;C3ESd+VP zl0Om)ORiS4Z0ze(1q!%T(aM-0%n=#%i<4j#YU8^wqpro~#=<3WD(qe$&Gr`+^wuxV zqerBzzH*dhtyb8VAH*s{*2VE6me~p}guE``vT5L}be5{{pH7lYGWT4BJsO#LwvQhP z6m{Lp)1Y%zad6i)7acsEmHESGcO@?Jh zddk&zZ@teKHoCpSu8iDf1x9PZ-C7%${@aPka$n&6r?U(Cv>3xX&Zg5*KuGMM!;MZ& zO>InQiKuw6M6i;eS}rTY#pdb7hWOLHf4~xUrO1Vubl?(!T=KCPj9sLWqtVFL`Lcb< zSUx!OM`biR04ypRz#XxVnS+f&pkg+1446A+^K zt;lkP7^i*=>*jHvc5Tg-o^8zVnt-IraVY2bRz)`S=H3_=#JYNYQoFolhlu+j0a|y* z?R@4_xks;eOrWXJLEX(g`FJ}|lF6XX zeCf?k{U&N9`x>*~T1pB%=_T$ge7}I4n(gLpG4Jk%$iuxH$|uS(8K~125{vIDmk%j*SoylcnQ2h;71ggc-be8(aShyk_UYZDw4@gAE#MKsG0N#_;Y$*p&ZtPc0PaiZ(E|ZJ=X;fPsDZ(_Z zyA3}}kQzi=Wfcd13Hbls0yn(MDbHD>_LI6pgBP@Rdtlv}H>{YY6u-Fjh;v~rMv0(b z-OU?5Yx$8ooLHAWEJA@B?r6A0dD8YPh#(K}i*}JXD3d#stj{2qjOwy175$iTUAWZt zU7wjd0i2xsmO`9bDq?3x1XET?-qKT1Q%hjXT)#I59+y3wZCFJpet&n8F_vE~QqmGE zy?2dZlk}2VtUTj6{rc`qZyvNR%yNga&*I?c$FPK>1Xq^imn(MwGGQTOS^oqiVTEwS)LmY?-CH*L{G`e%EBaEcS+uOL6nCLDE%6ToV@!YmdsB; z5~bBfEGd)US}!xM>C!nfm(`QJz{_@(5ekZCsW`-MqJsUAnJmfAgp*H;V zFUg}wB(h%K)!Ff1t1xc#+no1hGj@M7IWr@EWfy)W2VRm#+*?j_2Z~i0;~xKOZ2@Rk zK$_a)P-*RQX>N`An>ng{5P^7djy% zp8Br^(AUsVdptVql1hpApVuTFz759;RViu@9u2177IiAjw+Xlb3LNq=MNK;LXmkNL ztbW@(s}B=x59zSWN{R*g32jgFZ*z)pu#pKFq&wtlb_y)-e`(SMX=R-5-Q%#SI1;jw zc*Z7G^N+JziGoet^*g6OiYWRZeVA<)wjREDjRbE0)K3cequx?Rcbq;#CZh`qh z9%}!`y39}^i(C#3I-_AP+>a)?kl)dQzQ_(i+7Q<=x(fbwvl$-_)8FmL#1zH77~tAm zy^2S}j^rB8=4e;}0F38gV*;&1k&_Cb`guM+&E;$yA?3UQw3!HyH-j0ZfZe}avDxWN z^TLF7tuJdD_-FH;Y2o=RV4gx6>qz9z%=uI!y%xAfUZTJc9$`o}3Z*h>EK6;hN^ENH zOm-$y-s3YI4pq2<=MIELUl6Iu>RM^v>;Lz9%}y`Fz%2xj!BBMMaL8TC1<1<~opQ9* z&~NH94^ZwY_|N|j`V3$mfWV6qPQyTx&jVff^-5%2hKw=h&lxepzLog>C?vl f>CXzI2&nShqq%Nvp9*a&3D6tpUePJlatQlBR?g5! delta 18853 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 Date: Tue, 18 Jun 2013 21:24:26 -0700 Subject: [PATCH 13/15] Bug fixes for embedding/pinning code. --- .../objects/items/weapons/surgery_tools.dm | 15 +++++---- code/modules/mob/living/living_defense.dm | 31 +++++++++++-------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index da99bbfaace..fc5c5fb0c0c 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -19,7 +19,7 @@ m_amt = 10000 g_amt = 5000 flags = FPRINT | TABLEPASS | CONDUCT - w_class = 1.0 + w_class = 2.0 origin_tech = "materials=1;biotech=1" /*HAHA, SUCK IT, 2000 LINES OF SPAGHETTI CODE! @@ -133,7 +133,7 @@ LOOK FOR SURGERY.DM*/ m_amt = 5000 g_amt = 2500 flags = FPRINT | TABLEPASS | CONDUCT - w_class = 1.0 + w_class = 2.0 origin_tech = "materials=1;biotech=1" attack_verb = list("attacked", "pinched") @@ -268,7 +268,7 @@ LOOK FOR SURGERY.DM*/ m_amt = 5000 g_amt = 2500 flags = FPRINT | TABLEPASS | CONDUCT - w_class = 1.0 + w_class = 2.0 origin_tech = "materials=1;biotech=1" attack_verb = list("burnt") @@ -360,7 +360,7 @@ LOOK FOR SURGERY.DM*/ g_amt = 10000 flags = FPRINT | TABLEPASS | CONDUCT force = 15.0 - w_class = 1.0 + w_class = 2.0 origin_tech = "materials=1;biotech=1" attack_verb = list("drilled") @@ -379,7 +379,7 @@ LOOK FOR SURGERY.DM*/ icon_state = "scalpel" flags = FPRINT | TABLEPASS | CONDUCT force = 10.0 - w_class = 1.0 + w_class = 2.0 throwforce = 5.0 throw_speed = 3 throw_range = 5 @@ -631,7 +631,7 @@ LOOK FOR SURGERY.DM*/ hitsound = 'sound/weapons/circsawhit.ogg' flags = FPRINT | TABLEPASS | CONDUCT force = 15.0 - w_class = 1.0 + w_class = 2.0 throwforce = 9.0 throw_speed = 3 throw_range = 5 @@ -797,6 +797,7 @@ LOOK FOR SURGERY.DM*/ icon = 'surgery.dmi' icon_state = "bone-gel" force = 0 + w_class = 2.0 throwforce = 1.0 /obj/item/weapon/FixOVein @@ -806,6 +807,7 @@ LOOK FOR SURGERY.DM*/ force = 0 throwforce = 1.0 origin_tech = "materials=1;biotech=3" + w_class = 2.0 var/usage_amount = 10 /obj/item/weapon/bonesetter @@ -816,4 +818,5 @@ LOOK FOR SURGERY.DM*/ throwforce = 9.0 throw_speed = 3 throw_range = 5 + w_class = 2.0 attack_verb = list("attacked", "hit", "bludgeoned") \ No newline at end of file diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 4107b30d877..38da7806e0b 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -90,32 +90,37 @@ var/obj/item/weapon/W = O var/momentum = speed/2 var/dir = get_dir(M,src) - visible_message("\red [src] staggers under the impact!","\red You stagger under the impact!") + visible_message("\red [src] staggers under the impact!","\red You stagger under the impact!") src.throw_at(get_edge_target_turf(src,dir),1,momentum) - if(near_wall(dir,2) && W.w_class >= 3 && W.sharp) //If they're close to a wall and the projectile is suitable. - visible_message("[src] is pinned to the wall by [O]!","You are pinned to the wall by [O]!") - if(!istype(src,/mob/living/carbon/human)) - O.loc = src - src.embedded += O - src.anchored = 1 - src.pinned += O - else - src.anchored = 1 - src.pinned += O + if(W.w_class >= 3 && W.sharp && armor < 2) //Projectile is suitable, armour is bypassable. + var/turf/T = near_wall(dir,2) + if(T) + src.loc = T + visible_message("[src] is pinned to the wall by [O]!","You are pinned to the wall by [O]!") + if(!istype(src,/mob/living/carbon/human)) + O.loc = src + src.embedded += O + src.anchored = 1 + src.pinned += O + else + src.anchored = 1 + src.pinned += O /mob/living/proc/near_wall(var/direction,var/distance=1) var/turf/T = get_step(get_turf(src),direction) + var/turf/last_turf = src.loc var/i = 1 + while(i>0 && i<=distance) if(T.density) //Turf is a wall! - return 1 + return last_turf i++ + last_turf = T T = get_step(T,direction) return 0 - // End BS12 momentum-transfer code. \ No newline at end of file From 35b909ef3b62aed6a4644904a6b2acbfbc670a00 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 18 Jun 2013 23:39:48 -0700 Subject: [PATCH 14/15] Fix for dragging. --- code/modules/mob/mob.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 02ea1aa4e7f..69bce4a4019 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -596,7 +596,6 @@ var/list/slot_equipment_priority = list( \ M.LAssailant = null else M.LAssailant = usr - return if(pulling) var/pulling_old = pulling @@ -604,6 +603,7 @@ var/list/slot_equipment_priority = list( \ // Are we pulling the same thing twice? Just stop pulling. if(pulling_old == AM) return + src.pulling = AM AM.pulledby = src From 9a59c967f15bf3af234c97f1cf059d863a38a82f Mon Sep 17 00:00:00 2001 From: Segrain Date: Tue, 18 Jun 2013 23:49:40 +0300 Subject: [PATCH 15/15] Cyborg update. --- .../modules/mob/living/silicon/robot/robot.dm | 179 ++++++++++++------ html/changelog.html | 1 + 2 files changed, 127 insertions(+), 53 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 0f87682cdff..af99686b006 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -132,12 +132,21 @@ module = new /obj/item/weapon/robot_module/standard(src) hands.icon_state = "standard" var/icontype - if (src.name == "Lucy" && src.ckey == "rowtree") icontype = ("Lucy") - else icontype = input("Select an icon!", "Robot", null, null) in list("Basic", "Standard") - switch(icontype) - if("Basic") icon_state = "robot_old" - if("Lucy") icon_state = "rowtree-lucy" - else icon_state = "robot" + var/triesleft = 6 + while (triesleft) + triesleft-- + if (src.name == "Lucy" && src.ckey == "rowtree") + icontype = ("Lucy") + triesleft = 0 + else icontype = input("Select an icon! [triesleft ? "You would have [triesleft] more tries." : "This is your last try."]", "Robot", null, null) in list("Basic", "Standard") + switch(icontype) + if("Basic") icon_state = "robot_old" + if("Lucy") icon_state = "rowtree-lucy" + else icon_state = "robot" + if(triesleft) + switch(input("Look at your icon - is this what you want?") in list("Yes","No")) + if("Yes") + triesleft = 0 modtype = "Stand" feedback_inc("cyborg_standard",1) @@ -146,15 +155,24 @@ module = new /obj/item/weapon/robot_module/butler(src) hands.icon_state = "service" var/icontype - if (src.name == "Lucy" && src.ckey == "rowtree") icontype = ("Lucy") - else icontype = input("Select an icon!", "Robot", null, null) in list("Waitress", "Bro", "Butler", "Kent", "Rich") - switch(icontype) - if("Waitress") icon_state = "Service" - if("Kent") icon_state = "toiletbot" - if("Bro") icon_state = "Brobot" - if("Rich") icon_state = "maximillion" - if("Lucy") icon_state = "rowtree-lucy" - else icon_state = "Service2" + var/triesleft = 6 + while (triesleft) + triesleft-- + if (src.name == "Lucy" && src.ckey == "rowtree") + icontype = ("Lucy") + triesleft = 0 + else icontype = input("Select an icon! [triesleft ? "You would have [triesleft] more tries." : "This is your last try."]", "Robot", null, null) in list("Waitress", "Bro", "Butler", "Kent", "Rich") + switch(icontype) + if("Waitress") icon_state = "Service" + if("Kent") icon_state = "toiletbot" + if("Bro") icon_state = "Brobot" + if("Rich") icon_state = "maximillion" + if("Lucy") icon_state = "rowtree-lucy" + else icon_state = "Service2" + if(triesleft) + switch(input("Look at your icon - is this what you want?") in list("Yes","No")) + if("Yes") + triesleft = 0 modtype = "Butler" feedback_inc("cyborg_service",1) @@ -163,13 +181,22 @@ module = new /obj/item/weapon/robot_module/miner(src) hands.icon_state = "miner" var/icontype - if (src.name == "Lucy" && src.ckey == "rowtree") icontype = ("Lucy") - else icontype = input("Select an icon!", "Robot", null, null) in list("Basic", "Advanced Droid", "Treadhead") - switch(icontype) - if("Basic") icon_state = "Miner_old" - if("Advanced Droid") icon_state = "droid-miner" - if("Lucy") icon_state = "rowtree-lucy" - else icon_state = "Miner" + var/triesleft = 6 + while (triesleft) + triesleft-- + if (src.name == "Lucy" && src.ckey == "rowtree") + icontype = ("Lucy") + triesleft = 0 + else icontype = input("Select an icon! [triesleft ? "You would have [triesleft] more tries." : "This is your last try."]", "Robot", null, null) in list("Basic", "Advanced Droid", "Treadhead") + switch(icontype) + if("Basic") icon_state = "Miner_old" + if("Advanced Droid") icon_state = "droid-miner" + if("Lucy") icon_state = "rowtree-lucy" + else icon_state = "Miner" + if(triesleft) + switch(input("Look at your icon - is this what you want?") in list("Yes","No")) + if("Yes") + triesleft = 0 modtype = "Miner" feedback_inc("cyborg_miner",1) channels = list("Mining" = 1) @@ -179,14 +206,23 @@ module = new /obj/item/weapon/robot_module/medical(src) hands.icon_state = "medical" var/icontype - if (src.name == "Lucy" && src.ckey == "rowtree") icontype = ("Lucy") - else icontype = input("Select an icon!", "Robot", null, null) in list("Basic", "Advanced Droid", "Needles", "Hoverbot") - switch(icontype) - if("Basic") icon_state = "Medbot" - if("Advanced Droid") icon_state = "droid-medical" - if("Needles") icon_state = "medicalrobot" - if("Lucy") icon_state = "rowtree-medical" - else icon_state = "surgeon" + var/triesleft = 6 + while (triesleft) + triesleft-- + if (src.name == "Lucy" && src.ckey == "rowtree") + icontype = ("Lucy") + triesleft = 0 + else icontype = input("Select an icon! [triesleft ? "You would have [triesleft] more tries." : "This is your last try."]", "Robot", null, null) in list("Basic", "Advanced Droid", "Needles", "Hoverbot") + switch(icontype) + if("Basic") icon_state = "Medbot" + if("Advanced Droid") icon_state = "droid-medical" + if("Needles") icon_state = "medicalrobot" + if("Lucy") icon_state = "rowtree-medical" + else icon_state = "surgeon" + if(triesleft) + switch(input("Look at your icon - is this what you want?") in list("Yes","No")) + if("Yes") + triesleft = 0 modtype = "Med" status_flags &= ~CANPUSH feedback_inc("cyborg_medical",1) @@ -197,14 +233,23 @@ module = new /obj/item/weapon/robot_module/security(src) hands.icon_state = "security" var/icontype - if (src.name == "Lucy" && src.ckey == "rowtree") icontype = ("Lucy") - else icontype = input("Select an icon!", "Robot", null, null) in list("Basic", "Red Knight", "Black Knight", "Bloodhound") - switch(icontype) - if("Basic") icon_state = "secborg" - if("Red Knight") icon_state = "Security" - if("Black Knight") icon_state = "securityrobot" - if("Lucy") icon_state = "rowtree-security" - else icon_state = "bloodhound" + var/triesleft = 6 + while (triesleft) + triesleft-- + if (src.name == "Lucy" && src.ckey == "rowtree") + icontype = ("Lucy") + triesleft = 0 + else icontype = input("Select an icon! [triesleft ? "You would have [triesleft] more tries." : "This is your last try."]", "Robot", null, null) in list("Basic", "Red Knight", "Black Knight", "Bloodhound") + switch(icontype) + if("Basic") icon_state = "secborg" + if("Red Knight") icon_state = "Security" + if("Black Knight") icon_state = "securityrobot" + if("Lucy") icon_state = "rowtree-security" + else icon_state = "bloodhound" + if(triesleft) + switch(input("Look at your icon - is this what you want?") in list("Yes","No")) + if("Yes") + triesleft = 0 modtype = "Sec" //speed = -1 Secborgs have nerfed tasers now, so the speed boost is not necessary status_flags &= ~CANPUSH @@ -216,13 +261,22 @@ module = new /obj/item/weapon/robot_module/engineering(src) hands.icon_state = "engineer" var/icontype - if (src.name == "Lucy" && src.ckey == "rowtree") icontype = ("Lucy") - else icontype = input("Select an icon!", "Robot", null, null) in list("Basic", "Antique", "Landmate") - switch(icontype) - if("Basic") icon_state = "Engineering" - if("Antique") icon_state = "engineerrobot" - if("Lucy") icon_state = "rowtree-engineering" - else icon_state = "landmate" + var/triesleft = 6 + while (triesleft) + triesleft-- + if (src.name == "Lucy" && src.ckey == "rowtree") + icontype = ("Lucy") + triesleft = 0 + else icontype = input("Select an icon! [triesleft ? "You would have [triesleft] more tries." : "This is your last try."]", "Robot", null, null) in list("Basic", "Antique", "Landmate") + switch(icontype) + if("Basic") icon_state = "Engineering" + if("Antique") icon_state = "engineerrobot" + if("Lucy") icon_state = "rowtree-engineering" + else icon_state = "landmate" + if(triesleft) + switch(input("Look at your icon - is this what you want?") in list("Yes","No")) + if("Yes") + triesleft = 0 modtype = "Eng" feedback_inc("cyborg_engineering",1) channels = list("Engineering" = 1) @@ -232,13 +286,22 @@ module = new /obj/item/weapon/robot_module/janitor(src) hands.icon_state = "janitor" var/icontype - if (src.name == "Lucy" && src.ckey == "rowtree") icontype = ("Lucy") - else icontype = input("Select an icon!", "Robot", null, null) in list("Basic", "Mopbot", "Zamboni") - switch(icontype) - if("Basic") icon_state = "JanBot2" - if("Mopbot") icon_state = "janitorrobot" - if("Lucy") icon_state = "rowtree-lucy" - else icon_state = "mopgearrex" + var/triesleft = 6 + while (triesleft) + triesleft-- + if (src.name == "Lucy" && src.ckey == "rowtree") + icontype = ("Lucy") + triesleft = 0 + else icontype = input("Select an icon! [triesleft ? "You would have [triesleft] more tries." : "This is your last try."]", "Robot", null, null) in list("Basic", "Mopbot", "Zamboni") + switch(icontype) + if("Basic") icon_state = "JanBot2" + if("Mopbot") icon_state = "janitorrobot" + if("Lucy") icon_state = "rowtree-lucy" + else icon_state = "mopgearrex" + if(triesleft) + switch(input("Look at your icon - is this what you want?") in list("Yes","No")) + if("Yes") + triesleft = 0 modtype = "Jan" feedback_inc("cyborg_janitor",1) @@ -262,10 +325,14 @@ changed_name = "[(prefix ? "[prefix] " : "")][braintype]-[num2text(ident)]" real_name = changed_name name = real_name - + // if we've changed our name, we also need to update the display name for our PDA setup_PDA() + //We also need to update name of internal camera. + if (camera) + camera.c_tag = changed_name + /mob/living/silicon/robot/verb/Namepick() if(custom_name) return 0 @@ -498,6 +565,9 @@ return if (istype(W, /obj/item/weapon/weldingtool)) + if (!getBruteLoss()) + user << "Nothing to fix here!" + return var/obj/item/weapon/weldingtool/WT = W if (WT.remove_fuel(0)) adjustBruteLoss(-30) @@ -510,6 +580,9 @@ return else if(istype(W, /obj/item/weapon/cable_coil) && wiresexposed) + if (!getFireLoss()) + user << "Nothing to fix here!" + return var/obj/item/weapon/cable_coil/coil = W adjustFireLoss(-30) updatehealth() diff --git a/html/changelog.html b/html/changelog.html index ccfe5623a1c..4569a0db0e3 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -65,6 +65,7 @@ should be listed in the changelog upon commit though. Thanks. -->
    • Secure windoors are made with rods again.
    • Windoors drop their electronics when broken. Emagged windoors can have theirs removed by crowbar.
    • Airlock electronics can be configured to make door open for any single access on it instead of all of them.
    • +
    • Cyborgs can preview their icons before choosing.