From e05b7f43410da5e8e9a72bc1c626d1274952b43e Mon Sep 17 00:00:00 2001 From: volas Date: Sat, 30 Nov 2013 15:45:53 +0400 Subject: [PATCH 01/19] 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 14171bd8697..5b54b3bd497 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 02/19] 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 7ab0440a6bc..3ec6df21250 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 16c5be21a88..e5dc20b3e13 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 4a8e7d9b0461e3bcd8db038ed5cc835375d1a128 Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Mon, 2 Dec 2013 10:47:27 -0600 Subject: [PATCH 03/19] Changelog fix, putting Yinadale's stuff up top. Hopefully done in a manner in which there shouldn't be any conflicts. --- html/changelog.html | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index 1a33e6090ee..0b546f4072b 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -35,7 +35,7 @@ Header Section
- Code: Abi79, Aryn, Cael_Aislinn, Ccomp5950,Chinsky, cib, CompactNinja, DopeGhoti, Erthilo, Hawk_v3, Head, Ispil, Lexusjjss, Melonstorm, Miniature, Mloc, NerdyBoy1104, SkyMarshal, Snapshot, Spectre, Strumpetplaya, Sunfall, Tastyfish, Uristqwerty
+ Code: Abi79, Aryn, Cael_Aislinn,Ccomp5950 ,Chinsky, cib, CompactNinja, DopeGhoti, Erthilo, Hawk_v3, Head, Ispil, Lexusjjss, Melonstorm, Miniature, Mloc, NerdyBoy1104, SkyMarshal, Snapshot, Spectre, Strumpetplaya, Sunfall, Tastyfish, Uristqwerty
Sprites: Apple_Master, Arcalane, Chinsky, CompactNinja, Deus Dactyl, Erthilo, Flashkirby, Miniature, Searif, Xenone, faux
Sounds: Aryn
Thanks To: /tg/ station, Goonstation, Animus Station, Daedalus, and original Spacestation 13 devs. Skibiliano for the IRC bot. @@ -56,23 +56,10 @@ should be listed in the changelog upon commit though. Thanks. --> -
-

23 November 2013

-

Ccomp5950 updated:

-
    -
  • Players are now no longer able to commit suicide with a lasertag gun, and will feel silly for doing so.
  • -
  • Ghosts hit with the cult book shall now actually become visible.
  • -
  • The powercells spawned with Exosuits will now properly be named to not confuse bearded roboticists.
  • -
  • Blindfolded players will now no longer require eye surgery to repair their sight, removing the blindfold will be sufficient.
  • -
  • Atmospheric Technicians will now have access to Exterior airlocks.
  • -
-
-

24 November 2013

Yinadele updated:

    -
  • Supermatter engine added! Please treat your new engine gently, and report any strangeness!
  • Rebalanced events so people don't explode into appendicitis or have their organs constantly explode.
  • Vending machines have had bottled water, iced tea, and grape soda added.
  • @@ -90,6 +77,18 @@ should be listed in the changelog upon commit though. Thanks. -->
+
+

23 November 2013

+

Ccomp5950 updated:

+
    +
  • Players are now no longer able to commit suicide with a lasertag gun, and will feel silly for doing so.
  • +
  • Ghosts hit with the cult book shall now actually become visible.
  • +
  • The powercells spawned with Exosuits will now properly be named to not confuse bearded roboticists.
  • +
  • Blindfolded players will now no longer require eye surgery to repair their sight, removing the blindfold will be sufficient.
  • +
  • Atmospheric Technicians will now have access to Exterior airlocks.
  • +
+
+

29 October 2013

Cael_Aislinn updated:

From af1150076278afe3c718c615d77a394c53aaf0c1 Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Tue, 3 Dec 2013 00:06:08 -0600 Subject: [PATCH 04/19] 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 4ca8f9f5d75..47f19fd7123 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 65d62026b0134e6682014a7b360946d7bfb4eb95 Mon Sep 17 00:00:00 2001 From: Michael Johnson Date: Tue, 3 Dec 2013 13:53:52 -0500 Subject: [PATCH 05/19] Fixes #2355 --- code/modules/power/apc.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 599d2517236..bb3bbcdb3dc 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -800,7 +800,8 @@ if(!can_use(usr, 1)) return src.add_fingerprint(usr) - usr.set_machine(src) + if(usingUI) // If we set their machine and they're not using the UI, it'll cause the UI to pop up. + usr.set_machine(src) if (href_list["apcwires"]) var/t1 = text2num(href_list["apcwires"]) if (!( istype(usr.get_active_hand(), /obj/item/weapon/wirecutters) )) From 254bba5e1a6feeaf4925200d8542dbc0709553ee Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Tue, 3 Dec 2013 17:24:29 -0600 Subject: [PATCH 06/19] Bugfix: AI's will no longer disintegrate if they click the supermatter. While hilarious this is a terrible bug. --- code/WorkInProgress/Yinadele/Supermatter.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/WorkInProgress/Yinadele/Supermatter.dm b/code/WorkInProgress/Yinadele/Supermatter.dm index 39759ff4946..7761a121105 100644 --- a/code/WorkInProgress/Yinadele/Supermatter.dm +++ b/code/WorkInProgress/Yinadele/Supermatter.dm @@ -204,6 +204,9 @@ /obj/machinery/power/supermatter/attack_hand(mob/user as mob) + if(isAI(user)) + user << "You attempt to interface with the control circuits but find they are not connected to your network." + return user.visible_message("\The [user] reaches out and touches \the [src] inducing a resonance... \his body starts to glow and catch flame before flashing into ash.",\ "You reach out and touch \the [src], everything starts burning and all you can hear is ringing. Your last thought is \"That was not a wise decision.\"",\ "You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.") From 94f8ccfddd10c9366acc037c722c80bdccf0d61b Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Tue, 3 Dec 2013 18:50:19 -0600 Subject: [PATCH 07/19] Bugfix: AI no longer dies if touching the supermatter, using attack_ai instead of a isAI() check. --- code/WorkInProgress/Yinadele/Supermatter.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/WorkInProgress/Yinadele/Supermatter.dm b/code/WorkInProgress/Yinadele/Supermatter.dm index 7761a121105..aba28a7d5b2 100644 --- a/code/WorkInProgress/Yinadele/Supermatter.dm +++ b/code/WorkInProgress/Yinadele/Supermatter.dm @@ -202,11 +202,11 @@ /obj/machinery/power/supermatter/attack_robot(mob/user as mob) return attack_hand(user) +/obj/machinery/power/supermatter/attack_ai(mob/user as mob) + user << "You attempt to interface with the control circuits but find they are not connected to your network. Maybe in a future firmware update." + /obj/machinery/power/supermatter/attack_hand(mob/user as mob) - if(isAI(user)) - user << "You attempt to interface with the control circuits but find they are not connected to your network." - return user.visible_message("\The [user] reaches out and touches \the [src] inducing a resonance... \his body starts to glow and catch flame before flashing into ash.",\ "You reach out and touch \the [src], everything starts burning and all you can hear is ringing. Your last thought is \"That was not a wise decision.\"",\ "You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.") From 52d328623a46dbcb844a502a29881f9b8e4d666e Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Tue, 3 Dec 2013 23:01:42 -0600 Subject: [PATCH 08/19] 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 47f19fd7123..ed054ae6c8a 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 09/19] 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 e601f069c68..5c26a115f0a 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." From a110cfaed7bbadf0b1dceb269670a9adb071c320 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 5 Dec 2013 21:58:33 +1030 Subject: [PATCH 10/19] Fixes #4030 --- code/game/objects/items/weapons/storage/secure.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index c023cd247c1..ee7f6ee2ccc 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -32,6 +32,9 @@ ..() usr << text("The service panel is [src.open ? "open" : "closed"].") + attack_paw(mob/user as mob) + return attack_hand(user) + attackby(obj/item/weapon/W as obj, mob/user as mob) if(locked) if ( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && (!src.emagged)) From ced5cf202086a30820ae4cb6dc1c1c1b084adad0 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 5 Dec 2013 21:59:12 +1030 Subject: [PATCH 11/19] Actually fixes #4030, previous commit fixes #4014 --- code/game/objects/items/stacks/sheets/glass.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 30fcfbdd494..5d5c9415d43 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -285,7 +285,7 @@ playsound(src.loc, 'sound/effects/glass_step.ogg', 50, 1) if(ishuman(M)) var/mob/living/carbon/human/H = M - if(!H.shoes && !(H.wear_suit.body_parts_covered & FEET)) + if( !H.shoes && ( !H.wear_suit || !(H.wear_suit.body_parts_covered & FEET) ) ) var/datum/organ/external/affecting = H.get_organ(pick("l_foot", "r_foot")) if(affecting.status & ORGAN_ROBOT) return From 17380e308e88896117b28f1a80c0898f77bd3dbb Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 5 Dec 2013 22:04:11 +1030 Subject: [PATCH 12/19] Extra check in secure case interaction for aliens. --- code/game/objects/items/weapons/storage/secure.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index ee7f6ee2ccc..8fa93d9f6ac 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -32,6 +32,9 @@ ..() usr << text("The service panel is [src.open ? "open" : "closed"].") + attack_alien(mob/user as mob) + return attack_hand(user) + attack_paw(mob/user as mob) return attack_hand(user) From 0850c30d3703ea6096c6ff553aa4318639a527f2 Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Thu, 5 Dec 2013 20:29:38 -0600 Subject: [PATCH 13/19] Become Mouse now has a confirmation window. Squeek! Now people can quit complaining about hitting it by accident. --- code/modules/mob/dead/observer/observer.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index e06d7ed2633..fb7262a5f9c 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -300,6 +300,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp src << "You may only spawn again as a mouse more than [mouse_respawn_time] minutes after your death. You have [timedifference_text] left." return + var/response = alert(src, "Are you -sure- you want to become a mouse?","Are you sure you want to squeek?","Squeek!","Nope!") + if(response != "Squeek!") return //Hit the wrong key...again. + + //find a viable mouse candidate var/mob/living/simple_animal/mouse/host var/obj/machinery/atmospherics/unary/vent_pump/vent_found From 9a6b4c6a0ddc63c9eacb7589f2527e9a5b82529a Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Fri, 6 Dec 2013 04:48:02 -0600 Subject: [PATCH 14/19] Telescience bugfixes UI will now update when clicking on stuffs Added a sanity check to make sure the teleport location isn't 0 or null on all 3 coordinates. Not sure if this will plug up the random teleporting bug but it can't hurt to have this in there. --- code/modules/telesci/telesci_computer.dm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index 85232a41068..02250c65941 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -84,6 +84,8 @@ interact(user) /obj/machinery/computer/telescience/interact(mob/user) + user.machine = src + in_use = 1 var/t = "
[temp_msg]

" t += "
Set Bearing" @@ -160,6 +162,11 @@ var/trueX = Clamp(round(proj_data.dest_x, 1), 1, world.maxx) var/trueY = Clamp(round(proj_data.dest_y, 1), 1, world.maxy) var/spawn_time = round(proj_data.time) * 10 + if(isnull(trueX) || !trueX || isnull(trueY) || !trueY || isnull(z_co) || !z_co || z_co == 2) //SANITY CHECK OH GOD (This really shouldn't happen but if it does, here we go!) + investigate_log("[key_name(usr)]/[user] Tried teleporting but range was out of boundsi","telesci") + playsound(telepad.loc, 'sound/weapons/flash.ogg', 25, 1) + temp_msg = "ERROR!
Division by Zero!" + return var/turf/target = locate(trueX, trueY, z_co) var/area/A = get_area(target) @@ -301,9 +308,10 @@ temp_msg = "NOTICE:
Bluespace crystals ejected." updateDialog() + return 1 /obj/machinery/computer/telescience/proc/recalibrate() teles_left = rand(30, 40) angle_off = rand(-25, 25) power_off = rand(-4, 0) - rotation_off = rand(-10, 10) \ No newline at end of file + rotation_off = rand(-10, 10) From f7d0d957752694188e6a82ca4099a3e387cd5f5d Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Fri, 6 Dec 2013 06:03:21 -0600 Subject: [PATCH 15/19] Removed useless sanity check. I debugged telesci with a proc that fires the teleport but bypasses all sanity checks and sets target = locate(0,0,0) or null neither case caused the teleport bugs we are seeing --- code/modules/telesci/telesci_computer.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index 02250c65941..06f968b5f10 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -162,11 +162,6 @@ var/trueX = Clamp(round(proj_data.dest_x, 1), 1, world.maxx) var/trueY = Clamp(round(proj_data.dest_y, 1), 1, world.maxy) var/spawn_time = round(proj_data.time) * 10 - if(isnull(trueX) || !trueX || isnull(trueY) || !trueY || isnull(z_co) || !z_co || z_co == 2) //SANITY CHECK OH GOD (This really shouldn't happen but if it does, here we go!) - investigate_log("[key_name(usr)]/[user] Tried teleporting but range was out of boundsi","telesci") - playsound(telepad.loc, 'sound/weapons/flash.ogg', 25, 1) - temp_msg = "ERROR!
Division by Zero!" - return var/turf/target = locate(trueX, trueY, z_co) var/area/A = get_area(target) From 4cb9cd0911e9dda3bb7a735140e5823a772791f7 Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Sat, 7 Dec 2013 00:18:40 -0600 Subject: [PATCH 16/19] Teleport bug fix Since we're unable to reproduce this bug in a testing environment and I've already concluded this isn't a telescience bug then I am leaning more towards Xenoarchiology, specifically the artifacts. This sanity check basically makes it where if there is an artifact on null terf or inside a container it won't process the effect. If it's the teleport effect of artifacts that is causing this to happen and it's based on the item being in nullspace somehow then it should squash the bug. Though the root of this is probably #4037 I cannot reproduce the runtime either. So here goes, a stab in the dark. --- .../research/xenoarchaeology/artifact/artifact_unknown.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm b/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm index 0030e31b21e..a0762ff51e3 100644 --- a/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm +++ b/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm @@ -114,6 +114,11 @@ var/list/valid_secondary_effect_types = list(\ #define TRIGGER_NITRO 12 /obj/machinery/artifact/process() + + var/turf/L = loc + if(isnull(L) || !istype(L)) // We're inside a container or on null turf, either way stop processing effects + return + if(my_effect) my_effect.process() if(secondary_effect) From fea1819260e140b57aff83a93e264f11b0fc6525 Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Sat, 7 Dec 2013 05:17:04 -0600 Subject: [PATCH 17/19] Runtime fix: It was a bad idea to have this stuff in New() So now it gives a default values and moves on. --- code/game/objects/items/weapons/cards_ids.dm | 26 ++++++-------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 12db8fc376c..870b881eda3 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -203,23 +203,12 @@ /obj/item/weapon/card/id/syndicate/New(mob/user as mob) ..() - var/t = reject_bad_name(input(user, "What name would you like to put on this card?\nNode: You can change this later by clicking on the ID card while it's in your hand.", "Agent card name", ishuman(user) ? user.real_name : user.name)) - if(!t) - alert("Invalid name.") - if(!registered_name) - registered_name = ishuman(user) ? user.real_name : user.name + if(!isnull(user)) // Runtime prevention on laggy starts or where users log out because of lag at round start. + registered_name = ishuman(user) ? user.real_name : user.name else - registered_name = t - var/u = copytext(sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")),1,MAX_MESSAGE_LEN) - if(!u) - alert("Invalid assignment.") - assignment = "Assistant" - else - assignment = u - name = "[registered_name]'s ID Card ([assignment])" - user << "\blue You successfully forge the ID card." - registered_user = user - + registered_name = "Agent Card" + assignment = "Agent" + name = "[registered_name]'s ID Card ([assignment])" /obj/item/weapon/card/id/syndicate/afterattack(var/obj/item/weapon/O as obj, mob/user as mob, proximity) if(!proximity) return @@ -239,7 +228,7 @@ return src.registered_name = t - var u = copytext(sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")),1,MAX_MESSAGE_LEN) + var u = copytext(sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Agent")),1,MAX_MESSAGE_LEN) if(!u) alert("Invalid assignment.") src.registered_name = "" @@ -250,7 +239,7 @@ registered_user = user else if(!registered_user || registered_user == user) - if(!registered_user) registered_user = user // First one to pick it up is the owner if there is ever a wild case New() doens't work. + if(!registered_user) registered_user = user // switch(alert("Would you like to display the ID, or retitle it?","Choose.","Rename","Show")) if("Rename") @@ -263,7 +252,6 @@ var u = copytext(sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")),1,MAX_MESSAGE_LEN) if(!u) alert("Invalid assignment.") - src.registered_name = "" return src.assignment = u src.name = "[src.registered_name]'s ID Card ([src.assignment])" From 570c98f0e2a5f383edfcf17ecf5ff58833c63ce2 Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Sat, 7 Dec 2013 05:18:27 -0600 Subject: [PATCH 18/19] Runtime fix: N00k agents on spawn were causing a runtime here. --- code/modules/projectiles/targeting.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/projectiles/targeting.dm b/code/modules/projectiles/targeting.dm index b8905e1ae25..06f25a7e18b 100644 --- a/code/modules/projectiles/targeting.dm +++ b/code/modules/projectiles/targeting.dm @@ -269,6 +269,7 @@ client/proc/add_gun_icons() screen += usr.gun_run_icon client/proc/remove_gun_icons() + if(isnull(usr)) return 1 // Runtime prevention on N00k agents spawning with SMG screen -= usr.item_use_icon screen -= usr.gun_move_icon if (target_can_move) From 0208cef65b62bf2e4f2918b26a39cd8728766374 Mon Sep 17 00:00:00 2001 From: Mloc Date: Sat, 7 Dec 2013 21:26:37 +0000 Subject: [PATCH 19/19] EMERGENCY HREF exploit fix. Impressive chaos, but its time is over. Signed-off-by: Mloc --- code/modules/paperwork/folders.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 379377072bc..1c491c126da 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -61,7 +61,7 @@ if(href_list["remove"]) var/obj/item/P = locate(href_list["remove"]) - if(P) + if(P && P.loc == src) P.loc = usr.loc usr.put_in_hands(P)