From 16886c391859fa28c26f1d2332df9a0e169dbb91 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 04:56:57 -0400 Subject: [PATCH 01/26] Fixes mulebots recalculating their path needlessly --- code/game/machinery/bots/mulebot.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index 28df44dc964..9d8d0a60834 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -840,7 +840,7 @@ var/global/mulebot_count = 0 recv = signal.data["beacon"] if(wires.BeaconRX()) - if(recv == new_destination) // if the recvd beacon location matches the set destination + if((recv == new_destination) && (destination != new_destination)) // if the recvd beacon location matches the set destination // the we will navigate there destination = new_destination target = signal.source.loc From ef2fc4cb143f8a804fb982fefe6d7ada555ccc56 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 05:10:23 -0400 Subject: [PATCH 02/26] Fixes C4 del'ing instead of qdel'ing --- code/game/objects/items/weapons/explosives.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index c8d2c4c20da..8c2bb4fe51e 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -107,8 +107,8 @@ target.ex_act(1) if (isobj(target)) if (target) - del(target) - del(src) + qdel(target) + qdel(src) /obj/item/weapon/c4/attack(mob/M as mob, mob/user as mob, def_zone) return \ No newline at end of file From bf5bcadc61530e22405fb67cac1c93ab9e08343b Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 05:17:09 -0400 Subject: [PATCH 03/26] Fixes runtime in pipe code I noticed it while blowing things up with C4! --- code/ATMOSPHERICS/pipes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/ATMOSPHERICS/pipes.dm b/code/ATMOSPHERICS/pipes.dm index 7332b57e7de..894798e25c9 100644 --- a/code/ATMOSPHERICS/pipes.dm +++ b/code/ATMOSPHERICS/pipes.dm @@ -426,7 +426,7 @@ universal_underlays(node2) else universal_underlays(,dir) - universal_underlays(dir, -180) + universal_underlays(,turn(dir, -180)) /obj/machinery/atmospherics/pipe/simple/visible/universal/update_underlays() ..() From cfc87813a753e1e0eead54da159bebfd2aa0a575 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 05:24:16 -0400 Subject: [PATCH 04/26] Fixes SMES destruction notification runtime --- code/modules/power/smes.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index d7fedfb7a8f..93ad222f72e 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -212,9 +212,10 @@ /obj/machinery/power/smes/Destroy() if(ticker && ticker.current_state == GAME_STATE_PLAYING) var/area/area = get_area(src) - message_admins("SMES deleted at ([area.name])") - log_game("SMES deleted at ([area.name])") - investigate_log("deleted at ([area.name])","singulo") + if(area) + message_admins("SMES deleted at ([area.name])") + log_game("SMES deleted at ([area.name])") + investigate_log("deleted at ([area.name])","singulo") if(terminal) disconnect_terminal() ..() From a52b8998638c1e032b3146402dcbacd5b811d1ce Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 05:31:10 -0400 Subject: [PATCH 05/26] Fixes Diona healing from suicide damage If they want to die, let 'em. --- code/modules/mob/living/carbon/human/life.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 7622562b9e5..0a3faac7886 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -764,7 +764,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc if(species.flags & IS_PLANT) if(nutrition > 450) nutrition = 450 - if(light_amount >= 5) //if there's enough light, heal + if((light_amount >= 5) && !suiciding) //if there's enough light, heal adjustBruteLoss(-(light_amount/2)) adjustFireLoss(-(light_amount/4)) //adjustToxLoss(-(light_amount)) From 2e8cbb3e1d41a5ac52e3cfc4779f11aabebda82b Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 06:44:33 -0400 Subject: [PATCH 06/26] Fixes catwalk deconstruction and a runtime Crowbaring them would runtime because they lack a floor tile type --- code/game/turfs/simulated/floor.dm | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index b939c54897f..307696a3a26 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -465,7 +465,7 @@ var/list/wood_icons = list("wood","wood-broken") else user << "\blue The lightbulb seems fine, no need to replace it." - if(istype(C, /obj/item/weapon/crowbar) && (!(is_plating()))) + if(istype(C, /obj/item/weapon/crowbar) && (!(is_plating())) && (!is_catwalk())) if(broken || burnt) user << "\red You remove the broken plating." else @@ -482,18 +482,26 @@ var/list/wood_icons = list("wood","wood-broken") return - if(istype(C, /obj/item/weapon/screwdriver) && is_wood_floor()) - if(broken || burnt) - return - else - if(is_wood_floor()) - user << "\red You unscrew the planks." - new floor_tile.type(src) - make_plating() - playsound(src, 'sound/items/Screwdriver.ogg', 80, 1) - if(is_catwalk()) + if(istype(C, /obj/item/weapon/screwdriver)) + if(is_wood_floor()) + if(broken || burnt) + return + else + if(is_wood_floor()) + user << "\red You unscrew the planks." + new floor_tile.type(src) + make_plating() + playsound(src, 'sound/items/Screwdriver.ogg', 80, 1) + else if(is_catwalk()) if(broken) return + user << "\red You unscrew the catwalk's rods." + new /obj/item/stack/rods(src, 2) ReplaceWithLattice() + for(var/direction in cardinal) + var/turf/T = get_step(src,direction) + if(T.is_catwalk()) + var/turf/simulated/floor/plating/airless/catwalk/CW=T + CW.update_icon(0) playsound(src, 'sound/items/Screwdriver.ogg', 80, 1) return From 41b37821e131002254c873fad70a9b5e5f687782 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 06:51:16 -0400 Subject: [PATCH 07/26] Fixes runtime in PDA pinpointer --- code/game/gamemodes/nuclear/pinpointer.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index 9b7a5eabf9f..6fb2fb349a5 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -329,6 +329,10 @@ var/turf/T = get_turf(target) var/turf/L = get_turf(src) + if((!T) || (!L)) // Someone is no longer in the world... + icon_state = "pinonnull" + return + if(T.z != L.z) icon_state = "pinonnull" else From 031581455530d914bc4ffb673d67a2e9e6c30636 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 06:58:39 -0400 Subject: [PATCH 08/26] Fixes hear_radio runtime from fake speakers --- code/modules/mob/hear_say.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index 34176d34108..9264feaa869 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -110,7 +110,8 @@ if(hard_to_hear) message = stars(message) - var/speaker_name = speaker.name + var/speaker_name = "unknown" + if(speaker) speaker_name = speaker.name if(vname) speaker_name = vname @@ -168,7 +169,7 @@ track = "[speaker_name] ([jobname])" if(istype(src, /mob/dead/observer)) - if(speaker_name != speaker.real_name && !isAI(speaker)) //Announce computer and various stuff that broadcasts doesn't use it's real name but AI's can't pretend to be other mobs. + if(speaker && (speaker_name != speaker.real_name) && !isAI(speaker)) //Announce computer and various stuff that broadcasts doesn't use it's real name but AI's can't pretend to be other mobs. speaker_name = "[speaker.real_name] ([speaker_name])" track = "[speaker_name] ([ghost_follow_link(follow_target, ghost=src)])" From 1b3a7da834365def09ec6c99f1321316d63b7326 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 07:33:51 -0400 Subject: [PATCH 09/26] Fixes runtime when attaching unbranded robolimbs And yes, it's not possible to get branded robolimbs yet, so this meant all robolimbs were runtiming. --- code/modules/organs/organ_external.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 9fa3f6e0b60..bda5d115064 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -769,7 +769,7 @@ Note that amputating the affected organ does in fact remove the infection from t /obj/item/organ/external/robotize(var/company) ..() - if(company) + if(company && istext(company)) model = company var/datum/robolimb/R = all_robolimbs[company] if(R) From adadfab2d3e6ad6fbbb4bc00b45e01ac975f6631 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 07:35:29 -0400 Subject: [PATCH 10/26] Fixes droplimb runtime --- code/modules/organs/organ_external.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index bda5d115064..d03b11715c2 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -644,9 +644,10 @@ Note that amputating the affected organ does in fact remove the infection from t parent = null spawn(1) - victim.updatehealth() - victim.UpdateDamageIcon() - victim.regenerate_icons() + if(victim) + victim.updatehealth() + victim.UpdateDamageIcon() + victim.regenerate_icons() dir = 2 switch(disintegrate) From 88e9a624729f5b7e2560baba4b2525bfcdcf6856 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 07:38:07 -0400 Subject: [PATCH 11/26] Fixes disposal expulsion runtime --- code/modules/recycling/disposal.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index efa6d2fec2a..ebb92a8474f 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -1297,7 +1297,8 @@ AM.pipe_eject(dir) if(!istype(AM,/mob/living/silicon/robot/drone)) //Drones keep smashing windows from being fired out of chutes. Bad for the station. ~Z spawn(5) - AM.throw_at(target, 3, 1) + if(AM) + AM.throw_at(target, 3, 1) H.vent_gas(src.loc) del(H) From c485b7d45b040e8cb1b966ad9c491c64dfc97ff4 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 07:42:53 -0400 Subject: [PATCH 12/26] Fixes flashbang-on-nonhuman runtime --- code/game/objects/items/weapons/grenades/flashbang.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index 2966ae54145..feb7e82fca1 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -36,7 +36,7 @@ ear_safety++ //Flash - if(!eye_safety) + if(!eye_safety && ishuman(M)) var/mob/living/carbon/human/H = M var/obj/item/organ/eyes/E = H.internal_organs_by_name["eyes"] flick("e_flash", M.flash) From 6e800d3d113eac486d96e5e3d830e9828b9a7151 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 07:46:44 -0400 Subject: [PATCH 13/26] Fixes gravity generator runtiming on turfless mobs --- code/modules/power/gravitygenerator.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 872303d3e91..9f594b46052 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -364,7 +364,7 @@ var/const/GRAV_NEEDS_WRENCH = 3 var/turf/our_turf = get_turf(src) for(var/mob/M in mob_list) var/turf/their_turf = get_turf(M) - if(their_turf.z == our_turf.z) + if(their_turf && their_turf.z == our_turf.z) M.update_gravity(M.mob_has_gravity()) if(M.client) shake_camera(M, 15, 1) From e3c677f85774a8d1d78069b8f798cdd02ab78218 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 07:50:15 -0400 Subject: [PATCH 14/26] Fixes runtime from objectiveless traitors --- code/game/gamemodes/traitor/traitor.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 59e70d3fd15..81550b232d6 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -253,7 +253,7 @@ if(uplink_true) text += " (used [TC_uses] TC) [purchases]" - if(traitor.objectives.len)//If the traitor had no objectives, don't need to process this. + if(traitor.objectives && traitor.objectives.len)//If the traitor had no objectives, don't need to process this. var/count = 1 for(var/datum/objective/objective in traitor.objectives) if(objective.check_completion()) From ce2ed448bd21cf996b2e06ef718206cdab9271e9 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 07:56:32 -0400 Subject: [PATCH 15/26] Fixes runtime in organ removal --- code/modules/organs/organ.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 064211d30b5..670aab1669e 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -229,7 +229,8 @@ var/list/organ_cache = list() loc = get_turf(owner) processing_objects |= src - var/datum/reagent/blood/organ_blood = locate(/datum/reagent/blood) in reagents.reagent_list + var/datum/reagent/blood/organ_blood + if(reagents) organ_blood = locate(/datum/reagent/blood) in reagents.reagent_list if(!organ_blood || !organ_blood.data["blood_DNA"]) owner.vessel.trans_to(src, 5, 1, 1) From 9e16ba44d51ee36e9a1c7726c9d9c5c5d98d6ffe Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 08:01:59 -0400 Subject: [PATCH 16/26] Fixes runtime in play_vox_word --- code/modules/mob/living/silicon/ai/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index 5a4398485ed..9bfa1cc1298 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -84,7 +84,7 @@ var/const/VOX_PATH = "sound/vox_fem/" for(var/mob/M in player_list) if(M.client) var/turf/T = get_turf(M) - if(T.z == z_level && !isdeaf(M)) + if(T && T.z == z_level && !isdeaf(M)) M << voice else only_listener << voice From dc67d650fe044e7dd926c329d9058bc75ad54a09 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 08:04:41 -0400 Subject: [PATCH 17/26] Fixes runtime in explosion proc --- code/game/objects/explosion.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 89203c7f193..fd4f916b90d 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -34,7 +34,7 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa // Double check for client if(M && M.client) var/turf/M_turf = get_turf(M) - if(M_turf.z == epicenter.z) + if(M_turf && M_turf.z == epicenter.z) var/dist = get_dist(M_turf, epicenter) // If inside the blast radius + world.view - 2 if(dist <= round(max_range + world.view - 2, 1)) From 5bc64c0ffd8f05975251f8a6ddf76798764a86c0 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 08:13:31 -0400 Subject: [PATCH 18/26] Fixes runtimes in cloning computers --- code/game/machinery/computer/cloning.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 2fb6ddc6f9c..d5d63057e37 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -117,9 +117,11 @@ data["autoallowed"] = 1 else data["autoallowed"] = 0 - data["occupant"] = src.scanner.occupant - data["locked"] = src.scanner.locked - data["biomass"] = src.pod1.biomass + if(src.scanner) + data["occupant"] = src.scanner.occupant + data["locked"] = src.scanner.locked + if(src.pod1) + data["biomass"] = src.pod1.biomass data["temp"] = temp data["scantemp"] = scantemp data["disk"] = src.diskette From 0d6653059feefaadc749d931c02d16eca3be3379 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 08:36:07 -0400 Subject: [PATCH 19/26] Fixes "Challenge" away mission turrets --- code/game/machinery/portable_turret.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 08d0ce9987e..196850255eb 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -79,6 +79,7 @@ /obj/machinery/porta_turret/proc/setup() var/obj/item/weapon/gun/energy/E = installation //All energy-based weapons are applicable + if(istext(installation)) E = text2path(installation) //var/obj/item/ammo_casing/shottype = E.projectile_type projectile = initial(E.projectile_type) From 0fb296ebd903be1570c49d2b2f5acc85cb9c8916 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 08:44:33 -0400 Subject: [PATCH 20/26] Fixes external organ take_damage runtime --- 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 d03b11715c2..2bb78b9c55f 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -194,8 +194,8 @@ var/list/obj/item/organ/external/possible_points = list() if(parent) possible_points += parent - if(children) - possible_points += children + if(children) for(var/organ in children) + if(organ) possible_points += organ if(forbidden_limbs.len) possible_points -= forbidden_limbs if(possible_points.len) From 3d8a70828604652428a8a1bd463c98ff7abb0f1b Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 08:53:31 -0400 Subject: [PATCH 21/26] Fixes camera bugs recursively deleting themselves --- code/game/objects/items/devices/camera_bug.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index 057cdb765fc..d7967f6ccd2 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -49,7 +49,7 @@ if(expansion) qdel(expansion) expansion = null - del(src) + return ..() /* Easier to just call del() than this nonsense get_cameras() for(var/cam_tag in bugged_cameras) From a295b2a9c3fd69ceb1675a0429987fb5b4b1ea4a Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 08:58:47 -0400 Subject: [PATCH 22/26] Fixes mediborgs not having an upgraded analyzer --- code/modules/mob/living/silicon/robot/robot_modules.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index d8adc434d40..8e16029fa08 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -100,7 +100,7 @@ New() src.modules += new /obj/item/device/flashlight(src) src.modules += new /obj/item/device/flash/cyborg(src) - src.modules += new /obj/item/device/healthanalyzer(src) + src.modules += new /obj/item/device/healthanalyzer/advanced(src) src.modules += new /obj/item/device/reagent_scanner/adv(src) src.modules += new /obj/item/weapon/borg_defib(src) src.modules += new /obj/item/roller_holder(src) From b630ad1e9793a7ec65b887658ff08c30ece2dfda Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 09:02:36 -0400 Subject: [PATCH 23/26] Fixes supermatter "glass" shards having bad icons --- code/game/objects/items/weapons/sm_shard.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/sm_shard.dm b/code/game/objects/items/weapons/sm_shard.dm index a4367cba413..e55a065c462 100644 --- a/code/game/objects/items/weapons/sm_shard.dm +++ b/code/game/objects/items/weapons/sm_shard.dm @@ -13,7 +13,7 @@ var/brightness = 2 /obj/item/weapon/shard/supermatter/New() - src.icon_state = pick("supermatter") + src.icon_state = "supermatter" + pick("large", "medium", "small") switch(src.icon_state) if("supermattersmall") src.pixel_x = rand(-12, 12) From 81dfe32cdb6df931cce4eba56c3830c715ebe38c Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 10:28:43 -0400 Subject: [PATCH 24/26] Fixes malfunctioning robolimbs dropping nothing --- code/modules/mob/living/carbon/human/human_organs.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index fd516db258a..defc3548317 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -124,8 +124,12 @@ else if(E.is_malfunctioning()) if((E.body_part == HAND_LEFT) || (E.body_part == ARM_LEFT)) + if(!l_hand) + continue unEquip(l_hand) else + if(!r_hand) + continue unEquip(r_hand) emote("me", 1, "drops what they were holding, their [E.name] malfunctioning!") From 55d8cc65878979ccb6032d268ebe960e2d1b86d8 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 10:34:01 -0400 Subject: [PATCH 25/26] Fixes husking --- code/modules/mob/living/carbon/human/human_damage.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 9469b36aec6..d72cef8de63 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -11,7 +11,7 @@ total_burn += O.burn_dam health = 100 - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute //TODO: fix husking - if( (((100 - total_burn) < config.health_threshold_dead) && stat == DEAD) && (!species.flags & IS_SYNTHETIC))//100 only being used as the magic human max health number, feel free to change it if you add a var for it -- Urist + if( (((100 - total_burn) < config.health_threshold_dead) && stat == DEAD) && (!(species.flags & IS_SYNTHETIC)))//100 only being used as the magic human max health number, feel free to change it if you add a var for it -- Urist ChangeToHusk() if (species.flags & IS_SYNTHETIC) var/obj/item/organ/external/head/H = organs_by_name["head"] From b057362c08874ed776dc459d7b06f174060c5d84 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 25 May 2015 11:09:09 -0400 Subject: [PATCH 26/26] Fixes multiple issue with limb examining --- .../mob/living/carbon/human/examine.dm | 80 +++++++++---------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 00ec9e67181..66cdd111b7e 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -272,9 +272,9 @@ var/obj/item/organ/external/E = organs_by_name[organ_tag] if(!E) - wound_flavor_text["[organ_descriptor]"] = "[t_He] is missing [t_his] [organ_descriptor].\n" + wound_flavor_text["[organ_tag]"] = "[t_He] is missing [t_his] [organ_descriptor].\n" else if(E.is_stump()) - wound_flavor_text["[organ_descriptor]"] = "[t_He] has a stump where [t_his] [organ_descriptor] should be.\n" + wound_flavor_text["[organ_tag]"] = "[t_He] has a stump where [t_his] [organ_descriptor] should be.\n" else continue @@ -282,25 +282,25 @@ if(temp) if(temp.status & ORGAN_ROBOT) if(!(temp.brute_dam + temp.burn_dam)) - if(!species.flags & IS_SYNTHETIC) - wound_flavor_text["[temp.name]"] = "[t_He] has a robot [temp.name]!\n" + if(!(species.flags & IS_SYNTHETIC)) + wound_flavor_text["[temp.limb_name]"] = "[t_He] has a robotic [temp.name]!\n" continue else - wound_flavor_text["[temp.name]"] = "[t_He] has a robot [temp.name]. It has" + wound_flavor_text["[temp.limb_name]"] = "[t_He] has a robotic [temp.name]. It has" if(temp.brute_dam) switch(temp.brute_dam) if(0 to 20) - wound_flavor_text["[temp.name]"] += " some dents" + wound_flavor_text["[temp.limb_name]"] += " some dents" if(21 to INFINITY) - wound_flavor_text["[temp.name]"] += pick(" a lot of dents"," severe denting") + wound_flavor_text["[temp.limb_name]"] += pick(" a lot of dents"," severe denting") if(temp.brute_dam && temp.burn_dam) - wound_flavor_text["[temp.name]"] += " and" + wound_flavor_text["[temp.limb_name]"] += " and" if(temp.burn_dam) switch(temp.burn_dam) if(0 to 20) - wound_flavor_text["[temp.name]"] += " some burns" + wound_flavor_text["[temp.limb_name]"] += " some burns" if(21 to INFINITY) - wound_flavor_text["[temp.name]"] += pick(" a lot of burns"," severe melting") - if(wound_flavor_text["[temp.name]"]) - wound_flavor_text["[temp.name]"] += "!\n" + wound_flavor_text["[temp.limb_name]"] += pick(" a lot of burns"," severe melting") + if(wound_flavor_text["[temp.limb_name]"]) + wound_flavor_text["[temp.limb_name]"] += "!\n" else if(temp.wounds.len > 0) var/list/wound_descriptors = list() for(var/datum/wound/W in temp.wounds) @@ -349,13 +349,13 @@ flavor_text_string += "," flavor_text_string += flavor_text[text] flavor_text_string += " on [t_his] [temp.name].
" - wound_flavor_text["[temp.name]"] = flavor_text_string + wound_flavor_text["[temp.limb_name]"] = flavor_text_string else - wound_flavor_text["[temp.name]"] = "" + wound_flavor_text["[temp.limb_name]"] = "" if(temp.status & ORGAN_BLEEDING) - is_bleeding["[temp.name]"] = 1 + is_bleeding["[temp.limb_name]"] = 1 else - wound_flavor_text["[temp.name]"] = "" + wound_flavor_text["[temp.limb_name]"] = "" //Handles the text strings being added to the actual description. //If they have something that covers the limb, and it is not missing, put flavortext. If it is covered but bleeding, add other flavortext. @@ -370,41 +370,41 @@ msg += wound_flavor_text["chest"] else if(is_bleeding["chest"]) display_chest = 1 - if(wound_flavor_text["left arm"] && (is_destroyed["left arm"] || (!w_uniform && !skipjumpsuit))) - msg += wound_flavor_text["left arm"] - else if(is_bleeding["left arm"]) + if(wound_flavor_text["l_arm"] && (is_destroyed["left arm"] || (!w_uniform && !skipjumpsuit))) + msg += wound_flavor_text["l_arm"] + else if(is_bleeding["l_arm"]) display_chest = 1 - if(wound_flavor_text["left hand"] && (is_destroyed["left hand"] || (!gloves && !skipgloves))) - msg += wound_flavor_text["left hand"] - else if(is_bleeding["left hand"]) + if(wound_flavor_text["l_hand"] && (is_destroyed["left hand"] || (!gloves && !skipgloves))) + msg += wound_flavor_text["l_hand"] + else if(is_bleeding["l_hand"]) display_gloves = 1 - if(wound_flavor_text["right arm"] && (is_destroyed["right arm"] || (!w_uniform && !skipjumpsuit))) - msg += wound_flavor_text["right arm"] - else if(is_bleeding["right arm"]) + if(wound_flavor_text["r_arm"] && (is_destroyed["right arm"] || (!w_uniform && !skipjumpsuit))) + msg += wound_flavor_text["r_arm"] + else if(is_bleeding["r_arm"]) display_chest = 1 - if(wound_flavor_text["right hand"] && (is_destroyed["right hand"] || (!gloves && !skipgloves))) - msg += wound_flavor_text["right hand"] - else if(is_bleeding["right hand"]) + if(wound_flavor_text["r_hand"] && (is_destroyed["right hand"] || (!gloves && !skipgloves))) + msg += wound_flavor_text["r_hand"] + else if(is_bleeding["r_hand"]) display_gloves = 1 if(wound_flavor_text["groin"] && (is_destroyed["groin"] || (!w_uniform && !skipjumpsuit))) msg += wound_flavor_text["groin"] else if(is_bleeding["groin"]) display_chest = 1 - if(wound_flavor_text["left leg"] && (is_destroyed["left leg"] || (!w_uniform && !skipjumpsuit))) - msg += wound_flavor_text["left leg"] - else if(is_bleeding["left leg"]) + if(wound_flavor_text["l_leg"] && (is_destroyed["left leg"] || (!w_uniform && !skipjumpsuit))) + msg += wound_flavor_text["l_leg"] + else if(is_bleeding["l_leg"]) display_chest = 1 - if(wound_flavor_text["left foot"]&& (is_destroyed["left foot"] || (!shoes && !skipshoes))) - msg += wound_flavor_text["left foot"] - else if(is_bleeding["left foot"]) + if(wound_flavor_text["l_foot"]&& (is_destroyed["left foot"] || (!shoes && !skipshoes))) + msg += wound_flavor_text["l_foot"] + else if(is_bleeding["l_foot"]) display_shoes = 1 - if(wound_flavor_text["right leg"] && (is_destroyed["right leg"] || (!w_uniform && !skipjumpsuit))) - msg += wound_flavor_text["right leg"] - else if(is_bleeding["right leg"]) + if(wound_flavor_text["r_leg"] && (is_destroyed["right leg"] || (!w_uniform && !skipjumpsuit))) + msg += wound_flavor_text["r_leg"] + else if(is_bleeding["r_leg"]) display_chest = 1 - if(wound_flavor_text["right foot"]&& (is_destroyed["right foot"] || (!shoes && !skipshoes))) - msg += wound_flavor_text["right foot"] - else if(is_bleeding["right foot"]) + if(wound_flavor_text["r_foot"]&& (is_destroyed["right foot"] || (!shoes && !skipshoes))) + msg += wound_flavor_text["r_foot"] + else if(is_bleeding["r_foot"]) display_shoes = 1 if(display_chest) msg += "[src] has blood soaking through from under [t_his] clothing!\n"