From e05b7f43410da5e8e9a72bc1c626d1274952b43e Mon Sep 17 00:00:00 2001 From: volas Date: Sat, 30 Nov 2013 15:45:53 +0400 Subject: [PATCH 1/5] brainmob fix: decapitated head is now really dead --- code/modules/organs/organ_external.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 14171bd869..5b54b3bd49 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -866,8 +866,8 @@ obj/item/weapon/organ/head/New(loc, mob/living/carbon/human/H) H.regenerate_icons() - H.stat = 2 - H.death() + brainmob.stat = 2 + brainmob.death() obj/item/weapon/organ/head/proc/transfer_identity(var/mob/living/carbon/human/H)//Same deal as the regular brain proc. Used for human-->head brainmob = new(src) From e33490d80aa356e5c8970bdff506d374884ca483 Mon Sep 17 00:00:00 2001 From: volas Date: Sat, 30 Nov 2013 23:54:06 +0400 Subject: [PATCH 2/5] Fixes: AI won't steal fax, and mice won't flip tables anymore. --- code/WorkInProgress/kilakk/fax.dm | 11 +++++++---- code/game/objects/structures/tables_racks.dm | 2 ++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/code/WorkInProgress/kilakk/fax.dm b/code/WorkInProgress/kilakk/fax.dm index 7ab0440a6b..3ec6df2125 100644 --- a/code/WorkInProgress/kilakk/fax.dm +++ b/code/WorkInProgress/kilakk/fax.dm @@ -84,10 +84,13 @@ if(href_list["remove"]) if(tofax) - tofax.loc = usr.loc - usr.put_in_hands(tofax) - usr << "You take the paper out of \the [src]." - tofax = null + if(!ishuman(usr)) + usr << "You can't do it." + else + tofax.loc = usr.loc + usr.put_in_hands(tofax) + usr << "You take the paper out of \the [src]." + tofax = null if(href_list["scan"]) if (scan) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 16c5be21a8..e5dc20b3e1 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -423,6 +423,8 @@ set desc = "Flips a non-reinforced table" set category = "Object" set src in oview(1) + if(ismouse(usr)) + return if (!can_touch(usr)) return if(!flip(get_cardinal_dir(usr,src))) From af1150076278afe3c718c615d77a394c53aaf0c1 Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Tue, 3 Dec 2013 00:06:08 -0600 Subject: [PATCH 3/5] Bugfix: Internals HUD click action. Before: If you had a tank on your back full of nice precious oxygen, and a tank of plasma in your hand and thought "I'll play it safe and turn on internals" and click the internals icon you would start sucking down plasma like you weren't really qualified to handle such things, how do you even get those two mixed up you big dummy! Code was hardcoded junk. After: A check of what your species prefers to breath, you are an adult, I'm pretty sure you can remember if the tank on your back is oxygen or not, and you will turn on the fullest tank. Code is now nolonger hardcoded junk, and is expandable by editing a couple of variables instead of hardcoding everything. Double Rainbow, All The Way Across The Sky! Also coded in a check for "Carbon Dioxide" in the event a downstream server uses a race that breathes that or we move dionaea to breathing it in the future. --- code/_onclick/hud/screen_objects.dm | 85 +++++++++++++++++++++-------- 1 file changed, 61 insertions(+), 24 deletions(-) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 4ca8f9f5d7..47f19fd712 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -276,37 +276,74 @@ C << "You are not wearing a mask." return 1 else - if(istype(C.l_hand, /obj/item/weapon/tank)) - C << "You are now running on internals from the [C.l_hand] on your left hand." - C.internal = C.l_hand - else if(istype(C.r_hand, /obj/item/weapon/tank)) - C << "You are now running on internals from the [C.r_hand] on your right hand." - C.internal = C.r_hand - else if(ishuman(C)) + var/list/nicename = null + var/list/tankcheck = null + var/breathes = "oxygen" //default, we'll check later + var/list/contents = list() + + if(ishuman(C)) var/mob/living/carbon/human/H = C - if(istype(H.s_store, /obj/item/weapon/tank)) - H << "You are now running on internals from the [H.s_store] on your [H.wear_suit]." - H.internal = H.s_store - else if(istype(H.belt, /obj/item/weapon/tank)) - H << "You are now running on internals from the [H.belt] on your belt." - H.internal = H.belt - else if(istype(H.l_store, /obj/item/weapon/tank)) - H << "You are now running on internals from the [H.l_store] in your left pocket." - H.internal = H.l_store - else if(istype(H.r_store, /obj/item/weapon/tank)) - H << "You are now running on internals from the [H.r_store] in your right pocket." - H.internal = H.r_store + breathes = H.species.breath_type + nicename = list ("suit", "back", "belt", "right hand", "left hand", "left pocket", "right pocket") + tankcheck = list (H.s_store, C.back, H.belt, C.r_hand, C.l_hand, H.l_store, H.r_store) - //Seperate so CO2 jetpacks are a little less cumbersome. - if(!C.internal && istype(C.back, /obj/item/weapon/tank)) - C << "You are now running on internals from the [C.back] on your back." - C.internal = C.back + else + nicename = list("Right Hand", "Left Hand", "Back") + tankcheck = list(C.r_hand, C.l_hand, C.back) + + for(var/i=1, i bestcontents) + best = i + bestcontents = contents[i] + + + //We've determined the best container now we set it as our internals + + if(best) + C << "You are now running on internals from [tankcheck[best]] on your [nicename[best]]." + C.internal = tankcheck[best] + + if(C.internal) if(C.internals) C.internals.icon_state = "internal1" else - C << "You don't have an oxygen tank." + C << "You don't have a[breathes=="oxygen" ? "n oxygen" : addtext(" ",breathes)] tank." if("act_intent") usr.a_intent_change("right") if("help") From 52d328623a46dbcb844a502a29881f9b8e4d666e Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Tue, 3 Dec 2013 23:01:42 -0600 Subject: [PATCH 4/5] Tanks will also keep up with who manipulated them last. Tanks placed in canisters, scanned with PDA or other analysis tool will set the manipulated_by variable to whoever did so. The idea is that this person is aware what's in the tank and will act accordingly when you press the internals HUD icon. If the user was the last person to manipulate the tank (or it's not been manipulated) then the user is smart about selecting the proper tank. If the user was not the last person to manipulate the tank then he is only checking the pressure gauge to see what tank is fullest that matches his species breath_type If that tank has nasties in it, welp he is going to get a breathful of nasties. --- code/_onclick/hud/screen_objects.dm | 9 +++++++-- code/game/machinery/atmoalter/canister.dm | 2 ++ code/game/objects/items/devices/PDA/PDA.dm | 3 +++ code/game/objects/items/weapons/tanks/tanks.dm | 7 ++++--- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 47f19fd712..ed054ae6c8 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -295,8 +295,13 @@ for(var/i=1, i- Date: Thu, 5 Dec 2013 04:21:18 -0600 Subject: [PATCH 5/5] Added Telesci to the investigate list. Admins will now be able to select it and view who used the telescience machines --- code/modules/admin/admin_investigate.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index e601f069c6..5c26a115f0 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -22,12 +22,12 @@ F << "[time2text(world.timeofday,"hh:mm")] \ref[src] ([x],[y],[z]) || [src] [message]
" //ADMINVERBS -/client/proc/investigate_show( subject in list("hrefs","notes","singulo") ) +/client/proc/investigate_show( subject in list("hrefs","notes","singulo","telesci") ) set name = "Investigate" set category = "Admin" if(!holder) return switch(subject) - if("singulo") //general one-round-only stuff + if("singulo", "telesci") //general one-round-only stuff var/F = investigate_subject2file(subject) if(!F) src << "Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed."