From 4d8ff90857963e15de5674e8a0204a011a91c217 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Fri, 4 Dec 2015 09:48:46 +0100 Subject: [PATCH 01/14] Wizard spell Destroy() additions. Backport of #11586. Fixes #11555. --- code/_onclick/hud/spell_screen_objects.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/_onclick/hud/spell_screen_objects.dm b/code/_onclick/hud/spell_screen_objects.dm index 31f6fbcb86a..bed14ed6201 100644 --- a/code/_onclick/hud/spell_screen_objects.dm +++ b/code/_onclick/hud/spell_screen_objects.dm @@ -19,9 +19,12 @@ spell_objects.Cut() if(spell_holder) spell_holder.spell_masters -= src + if(spell_holder.client && spell_holder.client.screen) + spell_holder.client.screen -= src + spell_holder = null /obj/screen/movable/spell_master/ResetVars() - ..("spell_objects") + ..("spell_objects", args) spell_objects = list() /obj/screen/movable/spell_master/MouseDrop() From a5411f26c5e0af49ec6c6c4658fb767e3e5e5e13 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 5 Dec 2015 18:10:39 -0500 Subject: [PATCH 02/14] Fixes runtime when moving with missing legs or feet --- code/modules/mob/living/carbon/human/human_movement.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index f4b28d2b6b0..a30989df172 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -42,7 +42,7 @@ var/obj/item/organ/external/E = get_organ(organ_name) if(!E || (E.status & ORGAN_DESTROYED)) tally += 4 - if(E.status & ORGAN_SPLINTED) + else if(E.status & ORGAN_SPLINTED) tally += 0.5 else if(E.status & ORGAN_BROKEN) tally += 1.5 From 92b47c94de21840b60d6b266c5d468fa911f3bd1 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 5 Dec 2015 19:19:39 -0500 Subject: [PATCH 03/14] Makes organ/externa/attack_self() control flow easier to follow, handles embeded non-items --- code/modules/organs/organ_external.dm | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index bb51c93feff..e0e1eaa7057 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -78,15 +78,15 @@ if(istype(I,/obj/item/organ)) continue removable_objects |= I - if(!removable_objects.len) - return ..() - var/obj/item/I = pick(removable_objects) - if(!istype(I)) - return ..() - I.loc = get_turf(user) - if(!(user.l_hand && user.r_hand)) - user.put_in_hands(I) - user.visible_message("\The [user] rips \the [I] out of \the [src]!") + if(removable_objects.len) + var/obj/item/I = pick(removable_objects) + I.loc = get_turf(user) //just in case something was embedded that is not an item + if(istype(I)) + if(!(user.l_hand && user.r_hand)) + user.put_in_hands(I) + user.visible_message("\The [user] rips \the [I] out of \the [src]!") + return //no eating the limb until everything's been removed + return ..() /obj/item/organ/external/examine() ..() From b12e0941122bb6299c2dde824f0d068c7e8021d9 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 5 Dec 2015 22:30:10 -0500 Subject: [PATCH 04/14] Removes unreachable return in organ/external/remove(), smaller embedded items are no longer deleted. Implants changed to w_class 1 because seriously a w_class 3 implant makes no sense at all. --- .../objects/items/weapons/implants/implant.dm | 1 + code/modules/organs/organ_external.dm | 19 ++++++++----------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 6465a055785..2e156e7e967 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -6,6 +6,7 @@ name = "implant" icon = 'icons/obj/device.dmi' icon_state = "implant" + w_class = 1 var/implanted = null var/mob/imp_in = null var/obj/item/organ/external/part = null diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index e0e1eaa7057..fbf78f3b360 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -687,14 +687,11 @@ Note that amputating the affected organ does in fact remove the infection from t ****************************************************/ //Handles dismemberment -/obj/item/organ/external/proc/droplimb(var/clean, var/disintegrate, var/ignore_children) +/obj/item/organ/external/proc/droplimb(var/clean, var/disintegrate = DROPLIMB_EDGE, var/ignore_children = null) if(cannot_amputate || !owner) return - if(!disintegrate) - disintegrate = DROPLIMB_EDGE - switch(disintegrate) if(DROPLIMB_EDGE) if(!clean) @@ -942,7 +939,7 @@ Note that amputating the affected organ does in fact remove the infection from t H.drop_from_inventory(W) W.loc = owner -/obj/item/organ/external/removed(var/mob/living/user, var/ignore_children) +/obj/item/organ/external/removed(var/mob/living/user, var/ignore_children = 0) if(!owner) return @@ -954,11 +951,11 @@ Note that amputating the affected organ does in fact remove the infection from t status |= ORGAN_DESTROYED victim.bad_external_organs -= src - for(var/obj/item/implant in implants) - if(!istype(implant)) - return - if(implant.w_class <= 2) - qdel(implant) + for(var/atom/movable/implant in implants) + //large items and non-item objs fall to the floor, everything else stays + var/obj/item/I = implant + if(istype(I) && I.w_class < 3) + implant.loc = get_turf(victim.loc) else implant.loc = src implants.Cut() @@ -1050,7 +1047,7 @@ Note that amputating the affected organ does in fact remove the infection from t if(wound_descriptors.len) var/list/flavor_text = list() var/list/no_exclude = list("gaping wound", "big gaping wound", "massive wound", "large bruise",\ - "huge bruise", "massive bruise", "severe burn", "large burn", "deep burn", "carbonised area") + "huge bruise", "massive bruise", "severe burn", "large burn", "deep burn", "carbonised area") //note to self make this more robust for(var/wound in wound_descriptors) switch(wound_descriptors[wound]) if(1) From a7d80a93e56a8a5c23c8587378fd0465382a580e Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 5 Dec 2015 23:28:58 -0500 Subject: [PATCH 05/14] Fixes mismatching diona internal organ tags --- .../living/carbon/human/species/species.dm | 20 +++++++++++-------- code/modules/organs/organ.dm | 2 +- code/modules/organs/organ_alien.dm | 16 +++++---------- code/modules/organs/organ_external.dm | 4 ++-- 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 4169f6177d6..c130e9d91d4 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -213,15 +213,19 @@ var/obj/item/organ/O = new limb_path(H) organ_data["descriptor"] = O.name - for(var/organ in has_organ) - var/organ_type = has_organ[organ] - H.internal_organs_by_name[organ] = new organ_type(H,1) + for(var/organ_tag in has_organ) + var/organ_type = has_organ[organ_tag] + var/obj/item/organ/O = new organ_type(H,1) + if(organ_tag != O.organ_tag) + warning("[O.type] has a default organ tag \"[O.organ_tag]\" that differs from the species' organ tag \"[organ_tag]\". Updating organ_tag to match.") + O.organ_tag = organ_tag + H.internal_organs_by_name[organ_tag] = O - for(var/name in H.organs_by_name) - H.organs |= H.organs_by_name[name] - - for(var/obj/item/organ/external/O in H.organs) - O.owner = H + //These should be unnecessary + //for(var/name in H.organs_by_name) + // H.organs |= H.organs_by_name[name] + //for(var/obj/item/organ/external/O in H.organs) + // O.owner = H if(flags & IS_SYNTHETIC) for(var/obj/item/organ/external/E in H.organs) diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 0e628fa7124..beb7c22d15c 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -56,7 +56,7 @@ var/list/organ_cache = list() var/mob/living/carbon/human/H = holder if(istype(H)) if(internal) - var/obj/item/organ/external/E = H.organs_by_name[src.parent_organ] + var/obj/item/organ/external/E = H.get_organ(parent_organ) if(E) if(E.internal_organs == null) E.internal_organs = list() diff --git a/code/modules/organs/organ_alien.dm b/code/modules/organs/organ_alien.dm index d76cdab8f1d..5c1a3e9584c 100644 --- a/code/modules/organs/organ_alien.dm +++ b/code/modules/organs/organ_alien.dm @@ -158,14 +158,6 @@ name = "anchoring ligament" parent_organ = "groin" -/obj/item/organ/diona/node - name = "receptor node" - parent_organ = "head" - -/obj/item/organ/diona/nutrients - name = "nutrient vessel" - parent_organ = "chest" - /obj/item/organ/diona name = "diona nymph" icon = 'icons/obj/objects.dmi' @@ -183,8 +175,9 @@ // These are different to the standard diona organs as they have a purpose in other // species (absorbing radiation and light respectively) /obj/item/organ/diona/nutrients - name = "nutrient vessel" - organ_tag = "nutrient vessel" + name = "nutrient channel" + parent_organ = "chest" + organ_tag = "nutrient channel" icon = 'icons/mob/alien.dmi' icon_state = "claw" @@ -192,7 +185,8 @@ return /obj/item/organ/diona/node - name = "receptor node" + name = "response node" + parent_organ = "head" organ_tag = "receptor node" icon = 'icons/mob/alien.dmi' icon_state = "claw" diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index fbf78f3b360..fc51172045b 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -159,8 +159,8 @@ return -/obj/item/organ/external/New(var/mob/living/carbon/holder, var/internal) - ..() +/obj/item/organ/external/New(var/mob/living/carbon/holder) + ..(holder, 0) if(owner) replaced(owner) sync_colour_to_human(owner) From 87648e86eff6cfa1950488f9ebf149d055640876 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 6 Dec 2015 02:00:50 -0500 Subject: [PATCH 06/14] Fixes runtime when cleaning turfs with soap Partial fix of #11490 --- code/game/objects/items/weapons/clown_items.dm | 14 ++++++++++++-- code/game/objects/items/weapons/mop.dm | 16 ++-------------- code/game/turfs/turf.dm | 14 ++++++++++++++ 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index d34456e4533..5b9c0a094ab 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -15,7 +15,15 @@ /* * Soap */ -/obj/item/weapon/soap/Crossed(AM as mob|obj) //EXACTLY the same as bananapeel for now, so it makes sense to put it in the same dm -- Urist +/obj/item/weapon/soap/New() + ..() + create_reagents(5) + wet() + +/obj/item/weapon/soap/proc/wet() + reagents.add_reagent("cleaner", 5) + +/obj/item/weapon/soap/Crossed(AM as mob|obj) if (istype(AM, /mob/living)) var/mob/living/M = AM M.slip("the [src.name]",3) @@ -32,7 +40,9 @@ else if(istype(target,/turf)) user << "You scrub \the [target.name] clean." var/turf/T = target - T.clean(src) + T.clean(src, user) + else if(istype(target,/obj/structure/sink)) + wet() else user << "You clean \the [target.name]." target.clean_blood() diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index abf5e08a3be..e50ce867967 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -14,19 +14,7 @@ /obj/item/weapon/mop/New() - create_reagents(5) - -//expects an atom containing the reagents used to clean the turf -/turf/proc/clean(atom/source) - if(source.reagents.has_reagent("water", 1)) - clean_blood() - if(istype(src, /turf/simulated)) - var/turf/simulated/T = src - T.dirt = 0 - for(var/obj/effect/O in src) - if(istype(O,/obj/effect/rune) || istype(O,/obj/effect/decal/cleanable) || istype(O,/obj/effect/overlay)) - qdel(O) - source.reagents.trans_to_turf(src, 1, 10) //10 is the multiplier for the reaction effect. probably needed to wet the floor properly. + create_reagents(30) /obj/item/weapon/mop/afterattack(atom/A, mob/user, proximity) if(!proximity) return @@ -40,7 +28,7 @@ if(do_after(user, 40)) var/turf/T = get_turf(A) if(T) - T.clean(src) + T.clean(src, user) user << "You have finished mopping!" diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index e46e664eb88..de114e912d0 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -396,3 +396,17 @@ if(A.density && !(A.flags & ON_BORDER)) return 1 return 0 + +//expects an atom containing the reagents used to clean the turf +/turf/proc/clean(atom/source, mob/user) + if(source.reagents.has_reagent("water", 1) || source.reagents.has_reagent("cleaner", 1)) + clean_blood() + if(istype(src, /turf/simulated)) + var/turf/simulated/T = src + T.dirt = 0 + for(var/obj/effect/O in src) + if(istype(O,/obj/effect/rune) || istype(O,/obj/effect/decal/cleanable) || istype(O,/obj/effect/overlay)) + qdel(O) + else + user << "\The [source] is too dry to wash that." + source.reagents.trans_to_turf(src, 1, 10) //10 is the multiplier for the reaction effect. probably needed to wet the floor properly. From 5de9314803f300ca5513c1bb19dc9cb7df18fe52 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 6 Dec 2015 03:57:15 -0500 Subject: [PATCH 07/14] Clears reference to parent when removing external organs --- code/modules/organs/organ_external.dm | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index fc51172045b..350cff65b65 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -711,22 +711,21 @@ Note that amputating the affected organ does in fact remove the infection from t "You hear the sickening splatter of gore.") var/mob/living/carbon/human/victim = owner //Keep a reference for post-removed(). + var/obj/item/organ/external/parent_organ = parent removed(null, ignore_children) victim.traumatic_shock += 60 wounds.Cut() - if(parent) + if(parent_organ) var/datum/wound/lost_limb/W = new (src, disintegrate, clean) - parent.children -= src if(clean) - parent.wounds |= W - parent.update_damages() + parent_organ.wounds |= W + parent_organ.update_damages() else var/obj/item/organ/external/stump/stump = new (victim, 0, src) stump.wounds |= W victim.organs |= stump stump.update_damages() - parent = null spawn(1) victim.updatehealth() @@ -974,6 +973,10 @@ Note that amputating the affected organ does in fact remove the infection from t organ.removed() organ.loc = src + // Remove parent references + parent.children -= src + parent = null + release_restraints(victim) victim.organs -= src victim.organs_by_name[limb_name] = null // Remove from owner's vars. From 9135a609cb29d130855886aa106973f93a8ba452 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 6 Dec 2015 04:17:52 -0500 Subject: [PATCH 08/14] Replaces most instances of if(E & ORGAN_DESTROYED) with if(E.is_stump()). Fixes #11468 --- code/game/jobs/job_controller.dm | 2 +- code/game/machinery/adv_med.dm | 2 +- .../effects/decals/Cleanable/humans.dm | 2 +- .../items/weapons/surgery_limbattachment.dm | 71 ------------------- code/modules/mob/living/carbon/carbon.dm | 2 +- .../mob/living/carbon/human/examine.dm | 6 -- code/modules/mob/living/carbon/human/human.dm | 2 +- .../living/carbon/human/human_attackhand.dm | 2 +- .../mob/living/carbon/human/human_defense.dm | 3 +- .../mob/living/carbon/human/human_movement.dm | 4 +- .../mob/living/carbon/human/human_organs.dm | 2 +- .../mob/living/carbon/human/inventory.dm | 2 +- .../living/carbon/human/species/species.dm | 8 +-- .../mob/living/carbon/human/unarmed_attack.dm | 12 ++-- .../mob/living/carbon/human/update_icons.dm | 37 +++++----- .../simple_animal/borer/borer_powers.dm | 2 +- code/modules/mob/mob_grab_specials.dm | 2 +- code/modules/mob/mob_movement.dm | 2 +- code/modules/organs/organ.dm | 1 - code/modules/organs/organ_external.dm | 22 ++---- .../reagents/reagent_containers/syringes.dm | 2 +- code/modules/surgery/generic.dm | 4 +- code/setup.dm | 1 - 23 files changed, 48 insertions(+), 145 deletions(-) delete mode 100644 code/game/objects/items/weapons/surgery_limbattachment.dm diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 447e82d3b64..142190dca59 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -490,7 +490,7 @@ var/global/datum/controller/occupations/job_master if(istype(H)) //give humans wheelchairs, if they need them. var/obj/item/organ/external/l_foot = H.get_organ("l_foot") var/obj/item/organ/external/r_foot = H.get_organ("r_foot") - if((!l_foot || l_foot.status & ORGAN_DESTROYED) && (!r_foot || r_foot.status & ORGAN_DESTROYED)) + if(!l_foot || !r_foot) var/obj/structure/bed/chair/wheelchair/W = new /obj/structure/bed/chair/wheelchair(H.loc) H.buckled = W H.update_canmove() diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 635cc9097f0..51e577b596b 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -400,7 +400,7 @@ if(!AN && !open && !infected & !imp) AN = "None:" - if(!(e.status & ORGAN_DESTROYED)) + if(!e.is_stump()) dat += "[e.name][e.burn_dam][e.brute_dam][robot][bled][AN][splint][open][infected][imp][internal_bleeding][lung_ruptured]" else dat += "[e.name]--Not Found" diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index 1c723c04ada..2887a8249ad 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -60,7 +60,7 @@ var/global/list/image/splatter_cache=list() var/obj/item/organ/external/l_foot = perp.get_organ("l_foot") var/obj/item/organ/external/r_foot = perp.get_organ("r_foot") var/hasfeet = 1 - if((!l_foot || l_foot.status & ORGAN_DESTROYED) && (!r_foot || r_foot.status & ORGAN_DESTROYED)) + if((!l_foot || l_foot.is_stump()) && (!r_foot || r_foot.is_stump())) hasfeet = 0 if(perp.shoes && !perp.buckled)//Adding blood to shoes var/obj/item/clothing/shoes/S = perp.shoes diff --git a/code/game/objects/items/weapons/surgery_limbattachment.dm b/code/game/objects/items/weapons/surgery_limbattachment.dm deleted file mode 100644 index b52bb1bb3f3..00000000000 --- a/code/game/objects/items/weapons/surgery_limbattachment.dm +++ /dev/null @@ -1,71 +0,0 @@ -/obj/item/robot_parts/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob) - var/limbloc = null - - if(!istype(M)) - return ..() - - if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/structure/bed/roller, M.loc) && (M.buckled || M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat)) && prob(75) || (locate(/obj/structure/table/, M.loc) && (M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat) && prob(66)))) - return ..() - - if(!istype(M, /mob/living/carbon/human)) - return ..() - - if((user.zone_sel.selecting == "l_arm") && (istype(src, /obj/item/robot_parts/l_arm))) - limbloc = "l_hand" - else if((user.zone_sel.selecting == "r_arm") && (istype(src, /obj/item/robot_parts/r_arm))) - limbloc = "r_hand" - else if((user.zone_sel.selecting == "r_leg") && (istype(src, /obj/item/robot_parts/r_leg))) - limbloc = "r_foot" - else if((user.zone_sel.selecting == "l_leg") && (istype(src, /obj/item/robot_parts/l_leg))) - limbloc = "l_foot" - else - user << "\red That doesn't fit there!" - return ..() - - var/mob/living/carbon/human/H = M - var/datum/organ/external/S = H.organs[user.zone_sel.selecting] - if(S.status & ORGAN_DESTROYED) - if(!(S.status & ORGAN_ATTACHABLE)) - user << "\red The wound is not ready for a replacement!" - return 0 - if(M != user) - M.visible_message( \ - "\red [user] is beginning to attach \the [src] where [H]'s [S.display_name] used to be.", \ - "\red [user] begins to attach \the [src] where your [S.display_name] used to be.") - else - M.visible_message( \ - "\red [user] begins to attach a robotic limb where \his [S.display_name] used to be with [src].", \ - "\red You begin to attach \the [src] where your [S.display_name] used to be.") - - if(do_mob(user, H, 100)) - if(M != user) - M.visible_message( \ - "\red [user] finishes attaching [H]'s new [S.display_name].", \ - "\red [user] finishes attaching your new [S.display_name].") - else - M.visible_message( \ - "\red [user] finishes attaching \his new [S.display_name].", \ - "\red You finish attaching your new [S.display_name].") - - if(H == user && prob(25)) - user << "\red You mess up!" - S.take_damage(15) - - S.status &= ~ORGAN_BROKEN - S.status &= ~ORGAN_SPLINTED - S.status &= ~ORGAN_ATTACHABLE - S.status &= ~ORGAN_DESTROYED - S.status |= ORGAN_ROBOT - var/datum/organ/external/T = H.organs["[limbloc]"] - T.status &= ~ORGAN_BROKEN - T.status &= ~ORGAN_SPLINTED - T.status &= ~ORGAN_ATTACHABLE - T.status &= ~ORGAN_DESTROYED - T.status |= ORGAN_ROBOT - H.update_body() - M.updatehealth() - M.UpdateDamageIcon() - qdel(src) - - return 1 - return 0 diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 0ab0b872d97..d04e79b8ee7 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -205,7 +205,7 @@ if(40 to INFINITY) status += "peeling away" - if(org.status & ORGAN_DESTROYED) + if(org.is_stump()) status += "MISSING" if(org.status & ORGAN_MUTATED) status += "weirdly shapen" diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index f6727e69a11..11b03785459 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -269,7 +269,6 @@ var/list/organ_data = species.has_limbs[organ_tag] var/organ_descriptor = organ_data["descriptor"] - is_destroyed["organ_descriptor"] = 1 var/obj/item/organ/external/E = organs_by_name[organ_tag] if(!E) @@ -277,15 +276,10 @@ else if(E.is_stump()) wound_flavor_text["[organ_descriptor]"] = "[t_He] has a stump where [t_his] [organ_descriptor] should be.\n" else - is_destroyed["organ_descriptor"] = 0 continue for(var/obj/item/organ/external/temp in organs) if(temp) - if(temp.status & ORGAN_DESTROYED) - is_destroyed["[temp.name]"] = 1 - wound_flavor_text["[temp.name]"] = "[t_He] [t_is] missing [t_his] [temp.name].\n" - continue if(temp.status & ORGAN_ROBOT) if(!(temp.brute_dam + temp.burn_dam)) if(!species.flags & IS_SYNTHETIC) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 5da1ea100f8..df1db58a343 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -342,7 +342,7 @@ //Returns "Unknown" if facially disfigured and real_name if not. Useful for setting name when polyacided or when updating a human's name variable /mob/living/carbon/human/proc/get_face_name() var/obj/item/organ/external/head = get_organ("head") - if(!head || head.disfigured || (head.status & ORGAN_DESTROYED) || !real_name || (HUSK in mutations) ) //disfigured. use id-name if possible + if(!head || head.disfigured || head.is_stump() || !real_name || (HUSK in mutations) ) //disfigured. use id-name if possible return "Unknown" return real_name diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 24892c6d43d..9c17339e4cb 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -119,7 +119,7 @@ var/hit_zone = H.zone_sel.selecting var/obj/item/organ/external/affecting = get_organ(hit_zone) - if(!affecting || affecting.is_stump() || (affecting.status & ORGAN_DESTROYED)) + if(!affecting || affecting.is_stump()) M << "They are missing that limb!" return 1 diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 0de5729ec99..5facabb6bc0 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -182,7 +182,6 @@ emp_act if(!O) continue O.emp_act(severity) for(var/obj/item/organ/external/O in organs) - if(O.status & ORGAN_DESTROYED) continue O.emp_act(severity) for(var/obj/item/organ/I in O.internal_organs) if(I.robotic == 0) continue @@ -204,7 +203,7 @@ emp_act var/obj/item/organ/external/affecting = get_organ(target_zone) - if (!affecting || (affecting.status & ORGAN_DESTROYED) || affecting.is_stump()) + if (!affecting || affecting.is_stump()) user << "They are missing that limb!" return diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index a30989df172..d660d766a30 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -28,7 +28,7 @@ if(istype(buckled, /obj/structure/bed/chair/wheelchair)) for(var/organ_name in list("l_hand","r_hand","l_arm","r_arm")) var/obj/item/organ/external/E = get_organ(organ_name) - if(!E || (E.status & ORGAN_DESTROYED)) + if(!E || E.is_stump()) tally += 4 if(E.status & ORGAN_SPLINTED) tally += 0.5 @@ -40,7 +40,7 @@ for(var/organ_name in list("l_foot","r_foot","l_leg","r_leg")) var/obj/item/organ/external/E = get_organ(organ_name) - if(!E || (E.status & ORGAN_DESTROYED)) + if(!E || E.is_stump()) tally += 4 else if(E.status & ORGAN_SPLINTED) tally += 0.5 diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index 8598ce04b35..123aa684c5f 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -70,7 +70,7 @@ for(var/limb_tag in list("l_leg","r_leg","l_foot","r_foot")) var/obj/item/organ/external/E = organs_by_name[limb_tag] - if(!E || (E.status & (ORGAN_DESTROYED|ORGAN_DEAD))) + if(!E || (E.status & (ORGAN_MUTATED|ORGAN_DEAD)) || E.is_stump()) //should just be !E.is_usable() here but dislocation screws that up. stance_damage += 2 // let it fail even if just foot&leg else if (E.is_malfunctioning()) //malfunctioning only happens intermittently so treat it as a missing limb when it procs diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 83d57579490..420447e16d4 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -33,7 +33,7 @@ This saves us from having to call add_fingerprint() any time something is put in /mob/living/carbon/human/proc/has_organ(name) var/obj/item/organ/external/O = organs_by_name[name] - return (O && !(O.status & ORGAN_DESTROYED) && !O.is_stump()) + return (O && !O.is_stump()) /mob/living/carbon/human/proc/has_organ_for_slot(slot) switch(slot) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index c130e9d91d4..979a4fc6034 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -221,15 +221,9 @@ O.organ_tag = organ_tag H.internal_organs_by_name[organ_tag] = O - //These should be unnecessary - //for(var/name in H.organs_by_name) - // H.organs |= H.organs_by_name[name] - //for(var/obj/item/organ/external/O in H.organs) - // O.owner = H - if(flags & IS_SYNTHETIC) for(var/obj/item/organ/external/E in H.organs) - if(E.status & ORGAN_CUT_AWAY || E.status & ORGAN_DESTROYED) continue + if(E.status & ORGAN_CUT_AWAY || E.is_stump()) continue E.robotize() for(var/obj/item/organ/I in H.internal_organs) I.robotize() diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm index 1d148b96ead..e541920cb4f 100644 --- a/code/modules/mob/living/carbon/human/unarmed_attack.dm +++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm @@ -18,11 +18,11 @@ // Check if they have a functioning hand. var/obj/item/organ/external/E = user.organs_by_name["l_hand"] - if(E && !(E.status & ORGAN_DESTROYED)) + if(E && !E.is_stump()) return 1 E = user.organs_by_name["r_hand"] - if(E && !(E.status & ORGAN_DESTROYED)) + if(E && !E.is_stump()) return 1 return 0 @@ -170,11 +170,11 @@ return 0 var/obj/item/organ/external/E = user.organs_by_name["l_foot"] - if(E && !(E.status & ORGAN_DESTROYED)) + if(E && !E.is_stump()) return 1 E = user.organs_by_name["r_foot"] - if(E && !(E.status & ORGAN_DESTROYED)) + if(E && !E.is_stump()) return 1 return 0 @@ -214,11 +214,11 @@ if(target.grabbed_by == user && target.lying) return 0 var/obj/item/organ/external/E = user.organs_by_name["l_foot"] - if(E && !(E.status & ORGAN_DESTROYED)) + if(E && !E.is_stump()) return 1 E = user.organs_by_name["r_foot"] - if(E && !(E.status & ORGAN_DESTROYED)) + if(E && !E.is_stump()) return 1 return 0 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index d8f51488944..d0d723a7925 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -186,9 +186,10 @@ var/global/list/damage_icon_parts = list() for(var/obj/item/organ/external/O in organs) if(O.is_stump()) continue - if(O.status & ORGAN_DESTROYED) damage_appearance += "d" - else - damage_appearance += O.damage_state + //if(O.status & ORGAN_DESTROYED) damage_appearance += "d" //what is this? + //else + // damage_appearance += O.damage_state + damage_appearance += O.damage_state if(damage_appearance == previous_damage_appearance) // nothing to do here @@ -204,20 +205,20 @@ var/global/list/damage_icon_parts = list() for(var/obj/item/organ/external/O in organs) if(O.is_stump()) continue - if(!(O.status & ORGAN_DESTROYED)) - O.update_icon() - if(O.damage_state == "00") continue - var/icon/DI - var/cache_index = "[O.damage_state]/[O.icon_name]/[species.blood_color]/[species.get_bodytype()]" - if(damage_icon_parts[cache_index] == null) - DI = new /icon(species.damage_overlays, O.damage_state) // the damage icon for whole human - DI.Blend(new /icon(species.damage_mask, O.icon_name), ICON_MULTIPLY) // mask with this organ's pixels - DI.Blend(species.blood_color, ICON_MULTIPLY) - damage_icon_parts[cache_index] = DI - else - DI = damage_icon_parts[cache_index] - standing_image.overlays += DI + O.update_icon() + if(O.damage_state == "00") continue + var/icon/DI + var/cache_index = "[O.damage_state]/[O.icon_name]/[species.blood_color]/[species.get_bodytype()]" + if(damage_icon_parts[cache_index] == null) + DI = new /icon(species.damage_overlays, O.damage_state) // the damage icon for whole human + DI.Blend(new /icon(species.damage_mask, O.icon_name), ICON_MULTIPLY) // mask with this organ's pixels + DI.Blend(species.blood_color, ICON_MULTIPLY) + damage_icon_parts[cache_index] = DI + else + DI = damage_icon_parts[cache_index] + + standing_image.overlays += DI overlays_standing[DAMAGE_LAYER] = standing_image @@ -257,7 +258,7 @@ var/global/list/damage_icon_parts = list() for(var/organ_tag in species.has_limbs) var/obj/item/organ/external/part = organs_by_name[organ_tag] - if(isnull(part) || part.is_stump() || (part.status & ORGAN_DESTROYED)) + if(isnull(part) || part.is_stump()) icon_key += "0" else if(part.status & ORGAN_ROBOT) icon_key += "2[part.model ? "-[part.model]": ""]" @@ -336,7 +337,7 @@ var/global/list/damage_icon_parts = list() overlays_standing[HAIR_LAYER] = null var/obj/item/organ/external/head/head_organ = get_organ("head") - if(!head_organ || head_organ.is_stump() || (head_organ.status & ORGAN_DESTROYED) ) + if(!head_organ || head_organ.is_stump() ) if(update_icons) update_icons() return diff --git a/code/modules/mob/living/simple_animal/borer/borer_powers.dm b/code/modules/mob/living/simple_animal/borer/borer_powers.dm index 88be25cc245..f6b87bfd444 100644 --- a/code/modules/mob/living/simple_animal/borer/borer_powers.dm +++ b/code/modules/mob/living/simple_animal/borer/borer_powers.dm @@ -74,7 +74,7 @@ var/mob/living/carbon/human/H = M var/obj/item/organ/external/E = H.organs_by_name["head"] - if(!E || (E.status & ORGAN_DESTROYED)) + if(!E || E.is_stump()) src << "\The [H] does not have a head!" if(!H.species.has_organ["brain"]) diff --git a/code/modules/mob/mob_grab_specials.dm b/code/modules/mob/mob_grab_specials.dm index f4364dc684f..b4f8b15bbcf 100644 --- a/code/modules/mob/mob_grab_specials.dm +++ b/code/modules/mob/mob_grab_specials.dm @@ -3,7 +3,7 @@ var/obj/item/organ/external/E = H.get_organ(target_zone) - if(!E || (E.status & ORGAN_DESTROYED)) + if(!E || E.is_stump()) user << "[H] is missing that bodypart." return diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 080502361d9..cd3745a6eb9 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -295,7 +295,7 @@ var/mob/living/carbon/human/driver = mob.buckled var/obj/item/organ/external/l_hand = driver.get_organ("l_hand") var/obj/item/organ/external/r_hand = driver.get_organ("r_hand") - if((!l_hand || (l_hand.status & ORGAN_DESTROYED)) && (!r_hand || (r_hand.status & ORGAN_DESTROYED))) + if((!l_hand || l_hand.is_stump()) && (!r_hand || r_hand.is_stump())) return // No hands to drive your chair? Tough luck! //drunk wheelchair driving if(mob.confused) diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index beb7c22d15c..2f3dc289497 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -216,7 +216,6 @@ var/list/organ_cache = list() src.status &= ~ORGAN_SPLINTED src.status &= ~ORGAN_CUT_AWAY src.status &= ~ORGAN_ATTACHABLE - src.status &= ~ORGAN_DESTROYED src.status |= ORGAN_ROBOT src.status |= ORGAN_ASSISTED diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 350cff65b65..d3918aa3454 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -194,8 +194,6 @@ if((brute <= 0) && (burn <= 0)) return 0 - if(status & ORGAN_DESTROYED) - return 0 if(status & ORGAN_ROBOT ) var/brmod = 0.66 @@ -431,15 +429,10 @@ This function completely restores a damaged organ to perfect condition. /obj/item/organ/external/process() if(owner) //Dismemberment - if(status & ORGAN_DESTROYED) - if(config.limbs_can_break) - droplimb(0,DROPLIMB_EDGE) //Might be worth removing this check since take_damage handles it. - return - if(parent) - if(parent.status & ORGAN_DESTROYED) - status |= ORGAN_DESTROYED - owner.update_body(1) - return + //if(parent && parent.is_stump()) //should never happen + // warning("\The [src] ([src.type]) belonging to [owner] ([owner.type]) was attached to a stump") + // remove() + // return // Process wounds, doing healing etc. Only do this every few ticks to save processing power if(owner.life_tick % wound_update_accuracy == 0) @@ -485,7 +478,7 @@ Note that amputating the affected organ does in fact remove the infection from t */ /obj/item/organ/external/proc/update_germs() - if(status & (ORGAN_ROBOT|ORGAN_DESTROYED) || (owner.species && owner.species.flags & IS_PLANT)) //Robotic limbs shouldn't be infected, nor should nonexistant limbs. + if(status & (ORGAN_ROBOT) || (owner.species && owner.species.flags & IS_PLANT)) //Robotic limbs shouldn't be infected, nor should nonexistant limbs. germ_level = 0 return @@ -657,8 +650,6 @@ Note that amputating the affected organ does in fact remove the infection from t // new damage icon system // returns just the brute/burn damage code /obj/item/organ/external/proc/damage_state_text() - if(status & ORGAN_DESTROYED) - return "--" var/tburn = 0 var/tbrute = 0 @@ -919,7 +910,7 @@ Note that amputating the affected organ does in fact remove the infection from t return 0 /obj/item/organ/external/proc/is_usable() - return !is_dislocated() && !(status & (ORGAN_DESTROYED|ORGAN_MUTATED|ORGAN_DEAD)) + return !is_dislocated() && !(status & (ORGAN_MUTATED|ORGAN_DEAD)) /obj/item/organ/external/proc/is_malfunctioning() return ((status & ORGAN_ROBOT) && (brute_dam + burn_dam) >= 10 && prob(brute_dam + burn_dam)) @@ -947,7 +938,6 @@ Note that amputating the affected organ does in fact remove the infection from t ..() - status |= ORGAN_DESTROYED victim.bad_external_organs -= src for(var/atom/movable/implant in implants) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index f186d6d87f4..bf45a2ea01b 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -223,7 +223,7 @@ var/target_zone = ran_zone(check_zone(user.zone_sel.selecting, target)) var/obj/item/organ/external/affecting = H.get_organ(target_zone) - if (!affecting || (affecting.status & ORGAN_DESTROYED) || affecting.is_stump()) + if (!affecting || affecting.is_stump()) user << "They are missing that limb!" return diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index 1b129fbcbb9..0f178c015df 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -15,7 +15,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) if (affected == null) return 0 - if (affected.status & ORGAN_DESTROYED) + if (affected.is_stump()) return 0 if (target_zone == "head" && target.species && (target.species.flags & IS_SYNTHETIC)) return 1 @@ -290,8 +290,6 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) if (affected == null) return 0 - if (affected.status & ORGAN_DESTROYED) - return 0 return !affected.cannot_amputate begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) diff --git a/code/setup.dm b/code/setup.dm index 8371ca3cdd3..cf10303cfa8 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -512,7 +512,6 @@ #define ORGAN_ATTACHABLE 4 #define ORGAN_BLEEDING 8 #define ORGAN_BROKEN 32 -#define ORGAN_DESTROYED 64 #define ORGAN_ROBOT 128 #define ORGAN_SPLINTED 256 #define SALVED 512 From 39ab31cbf8bbdca83cdc4c9eb366980b7652bce2 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 6 Dec 2015 04:34:33 -0500 Subject: [PATCH 09/14] Removes unused ORGAN_ATTACHABLE define --- code/modules/organs/organ.dm | 1 - code/setup.dm | 1 - 2 files changed, 2 deletions(-) diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 2f3dc289497..833a90c0ead 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -215,7 +215,6 @@ var/list/organ_cache = list() src.status &= ~ORGAN_BLEEDING src.status &= ~ORGAN_SPLINTED src.status &= ~ORGAN_CUT_AWAY - src.status &= ~ORGAN_ATTACHABLE src.status |= ORGAN_ROBOT src.status |= ORGAN_ASSISTED diff --git a/code/setup.dm b/code/setup.dm index cf10303cfa8..dbb8a00beba 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -509,7 +509,6 @@ // Organ defines. #define ORGAN_CUT_AWAY 1 #define ORGAN_GAUZED 2 -#define ORGAN_ATTACHABLE 4 #define ORGAN_BLEEDING 8 #define ORGAN_BROKEN 32 #define ORGAN_ROBOT 128 From da946eda9977d4e3938768aa30a23a2473955ffc Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Wed, 2 Dec 2015 13:06:08 +0100 Subject: [PATCH 10/14] Adds energy costs to some rig equipment. Plasma cutter - 5 units Drill - 1 unit --- code/modules/clothing/spacesuits/rig/modules/utility.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/clothing/spacesuits/rig/modules/utility.dm b/code/modules/clothing/spacesuits/rig/modules/utility.dm index 55c22bf0615..a1b772f539d 100644 --- a/code/modules/clothing/spacesuits/rig/modules/utility.dm +++ b/code/modules/clothing/spacesuits/rig/modules/utility.dm @@ -33,6 +33,7 @@ interface_desc = "A self-sustaining plasma arc capable of cutting through walls." suit_overlay_active = "plasmacutter" suit_overlay_inactive = "plasmacutter" + use_power_cost = 0.5 device_type = /obj/item/weapon/pickaxe/plasmacutter @@ -53,6 +54,7 @@ interface_desc = "A diamond-tipped industrial drill." suit_overlay_active = "mounted-drill" suit_overlay_inactive = "mounted-drill" + use_power_cost = 0.1 device_type = /obj/item/weapon/pickaxe/diamonddrill From 6299f9cc130eb2ace88184b4458c1e47373f455f Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Sun, 6 Dec 2015 16:24:13 +0100 Subject: [PATCH 11/14] Fixes the broken Antag Uplink. NanoUI re-assigns src_object, rather than merely acquiring the host, causing ui_interact() updates to be called on the wrong object. Fixes #11607. --- code/modules/nano/nanoui.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/nano/nanoui.dm b/code/modules/nano/nanoui.dm index e1db4b4cc6c..a04b537fc1e 100644 --- a/code/modules/nano/nanoui.dm +++ b/code/modules/nano/nanoui.dm @@ -140,8 +140,8 @@ nanoui is used to open and update nano browser uis * @return nothing */ /datum/nanoui/proc/update_status(var/push_update = 0) - src_object = src_object.nano_host() - var/new_status = src_object.CanUseTopic(user, state) + var/obj/host = src_object.nano_host() + var/new_status = host.CanUseTopic(user, state) if(master_ui) new_status = min(new_status, master_ui.status) From 93233b6dd9b0965a3de6e42de36f443e6d140319 Mon Sep 17 00:00:00 2001 From: HarpyEagle Date: Sun, 6 Dec 2015 14:03:33 -0500 Subject: [PATCH 12/14] Adds soap wetting log message --- code/game/objects/items/weapons/clown_items.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index 5b9c0a094ab..c0847d282df 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -42,6 +42,7 @@ var/turf/T = target T.clean(src, user) else if(istype(target,/obj/structure/sink)) + user << "You wet \the [src] in the sink." wet() else user << "You clean \the [target.name]." From 908ae91a08086c6409be21e06a3dd807ab145d2e Mon Sep 17 00:00:00 2001 From: BlueNexus Date: Mon, 7 Dec 2015 11:17:12 +0000 Subject: [PATCH 13/14] Can no longer enter mechs while buckled --- code/game/mecha/mecha.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 9b193d7dfdb..c442ac25f86 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -996,6 +996,11 @@ if (usr.stat || !ishuman(usr)) return + + if (usr.buckled) + usr << "You can't climb into the exosuit while buckled!" + return + src.log_message("[usr] tries to move in.") if(iscarbon(usr)) var/mob/living/carbon/C = usr From 050c1f631a21fc5c76be5f999a086963d5fcb812 Mon Sep 17 00:00:00 2001 From: BlueNexus Date: Mon, 7 Dec 2015 11:27:33 +0000 Subject: [PATCH 14/14] Added a missing update_icon() --- code/modules/paperwork/paperbin.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index a2219b262a7..84b01539ade 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -74,6 +74,7 @@ i.loc = src user << "You put [i] in [src]." papers.Add(i) + update_icon() amount++