From fd5acc55736fc83c9f3bd6783da20be2c59360d0 Mon Sep 17 00:00:00 2001 From: AnturK Date: Sun, 1 Oct 2017 13:32:02 +0200 Subject: [PATCH 01/23] Organ initialization cleanup --- code/modules/mob/living/brain/brain_item.dm | 10 +- code/modules/mob/living/carbon/human/human.dm | 31 +-- .../mob/living/carbon/human/species.dm | 184 +++++++++++------- .../carbon/human/species_types/skeletons.dm | 16 ++ .../carbon/human/species_types/zombies.dm | 4 +- code/modules/surgery/organs/organ_internal.dm | 2 + 6 files changed, 138 insertions(+), 109 deletions(-) diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 13a34b6bae..fbff6a5285 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -18,12 +18,12 @@ vital = FALSE decoy_override = TRUE -/obj/item/organ/brain/Insert(mob/living/carbon/C, special = 0) +/obj/item/organ/brain/Insert(mob/living/carbon/C, special = 0,no_id_transfer = FALSE) ..() name = "brain" - if(C.mind && C.mind.changeling) //congrats, you're trapped in a body you don't control + if(C.mind && C.mind.changeling && !no_id_transfer) //congrats, you're trapped in a body you don't control if(brainmob && !(C.stat == DEAD || (C.status_flags & FAKEDEATH))) to_chat(brainmob, "You can't feel your body! You're still just a brain!") loc = C @@ -44,13 +44,17 @@ //Update the body's icon so it doesnt appear debrained anymore C.update_hair() -/obj/item/organ/brain/Remove(mob/living/carbon/C, special = 0) +/obj/item/organ/brain/Remove(mob/living/carbon/C, special = 0,no_id_transfer = FALSE) ..() +<<<<<<< HEAD if(!special) if(C.has_brain_worms()) var/mob/living/simple_animal/borer/B = C.has_brain_worms() B.leave_victim() //Should remove borer if the brain is removed - RR if(!gc_destroyed || (owner && !owner.gc_destroyed)) +======= + if((!gc_destroyed || (owner && !owner.gc_destroyed)) && !no_id_transfer) +>>>>>>> 85cd9e6... Organ initialization cleanup transfer_identity(C) C.update_hair() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index d66e6f808a..70a5f5225c 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -21,41 +21,12 @@ set_species(dna.species.type) //initialise organs - create_internal_organs() + create_internal_organs() //most of it is done in set_species now, this is only for parent call handcrafting = new() . = ..() -/mob/living/carbon/human/create_internal_organs() - if(!(NOHUNGER in dna.species.species_traits)) - internal_organs += new /obj/item/organ/appendix - if(!(NOBREATH in dna.species.species_traits)) - if(dna.species.mutantlungs) - internal_organs += new dna.species.mutantlungs() - else - internal_organs += new /obj/item/organ/lungs() - if(!(NOBLOOD in dna.species.species_traits)) - internal_organs += new /obj/item/organ/heart - - if(!(NOLIVER in dna.species.species_traits)) - if(dna.species.mutantliver) - internal_organs += new dna.species.mutantliver() - else - internal_organs += new /obj/item/organ/liver() - - if(!(NOSTOMACH in dna.species.species_traits)) - if(dna.species.mutantstomach) - internal_organs += new dna.species.mutantstomach() - else - internal_organs += new /obj/item/organ/stomach() - - internal_organs += new dna.species.mutanteyes - internal_organs += new dna.species.mutantears - internal_organs += new dna.species.mutanttongue - internal_organs += new /obj/item/organ/brain - ..() - /mob/living/carbon/human/OpenCraftingMenu() handcrafting.ui_interact(src) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 07f3acea48..34d4ae8e51 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -68,7 +68,8 @@ //Flight and floating var/override_float = 0 - + + var/obj/item/organ/brain/mutant_brain = /obj/item/organ/brain var/obj/item/organ/eyes/mutanteyes = /obj/item/organ/eyes var/obj/item/organ/ears/mutantears = /obj/item/organ/ears var/obj/item/mutanthands @@ -123,6 +124,113 @@ return 0 return 1 +//Will regenerate missing organs +/datum/species/proc/regenerate_organs(mob/living/carbon/C,datum/species/old_species,replace_current=TRUE) + var/obj/item/organ/brain/brain = C.getorganslot("brain") + var/obj/item/organ/heart/heart = C.getorganslot("heart") + var/obj/item/organ/lungs/lungs = C.getorganslot("lungs") + var/obj/item/organ/appendix/appendix = C.getorganslot("appendix") + var/obj/item/organ/eyes/eyes = C.getorganslot("eye_sight") + var/obj/item/organ/ears/ears = C.getorganslot("ears") + var/obj/item/organ/tongue/tongue = C.getorganslot("tongue") + var/obj/item/organ/liver/liver = C.getorganslot("liver") + var/obj/item/organ/stomach/stomach = C.getorganslot("stomach") + + var/should_have_brain = TRUE + var/should_have_heart = !(NOBLOOD in species_traits) + var/should_have_lungs = !(NOBREATH in species_traits) + var/should_have_appendix = !(NOHUNGER in species_traits) + var/should_have_eyes = TRUE + var/should_have_ears = TRUE + var/should_have_tongue = TRUE + var/should_have_liver = !(NOLIVER in species_traits) + var/should_have_stomach = !(NOSTOMACH in species_traits) + + if(brain && (replace_current || !should_have_brain)) + if(!brain.decoy_override)//Just keep it if it's fake + brain.Remove(C,TRUE,TRUE) + QDEL_NULL(brain) + if(should_have_brain && !brain) + brain = new mutant_brain() + brain.Insert(C, TRUE, TRUE) + + if(heart && (!should_have_heart || replace_current)) + heart.Remove(C,1) + QDEL_NULL(heart) + if(should_have_heart && !heart) + heart = new() + heart.Insert(C) + + if(lungs && (replace_current || !should_have_lungs)) + lungs.Remove(C,1) + QDEL_NULL(lungs) + if(should_have_lungs && !lungs) + if(mutantlungs) + lungs = new mutantlungs() + else + lungs = new() + lungs.Insert(C) + + if(liver && (!should_have_liver || replace_current)) + liver.Remove(C,1) + QDEL_NULL(liver) + if(should_have_liver && !liver) + if(mutantliver) + liver = new mutantliver() + else + liver = new() + liver.Insert(C) + + if(stomach && (!should_have_stomach || replace_current)) + stomach.Remove(C,1) + QDEL_NULL(stomach) + if(should_have_stomach && !stomach) + if(mutantstomach) + stomach = new mutantstomach() + else + stomach = new() + stomach.Insert(C) + + if(appendix && (!should_have_appendix || replace_current)) + appendix.Remove(C,1) + QDEL_NULL(appendix) + if(should_have_appendix && !appendix) + appendix = new() + appendix.Insert(C) + + if(C.get_bodypart("head")) + if(eyes && (replace_current || !should_have_eyes)) + eyes.Remove(C,1) + QDEL_NULL(eyes) + if(should_have_eyes && !eyes) + eyes = new mutanteyes + eyes.Insert(C) + + if(ears && (replace_current || !should_have_ears)) + ears.Remove(C,1) + QDEL_NULL(ears) + if(should_have_ears && !ears) + ears = new mutantears + ears.Insert(C) + + if(tongue && (replace_current || !should_have_tongue)) + tongue.Remove(C,1) + QDEL_NULL(tongue) + if(should_have_tongue && !tongue) + tongue = new mutanttongue + tongue.Insert(C) + + if(old_species) + for(var/mutantorgan in old_species.mutant_organs) + var/obj/item/organ/I = C.getorgan(mutantorgan) + if(I) + I.Remove(C) + QDEL_NULL(I) + + for(var/path in mutant_organs) + var/obj/item/organ/I = new path() + I.Insert(C) + /datum/species/proc/on_species_gain(mob/living/carbon/C, datum/species/old_species) // Drop the items the new species can't wear for(var/slot_id in no_equip) @@ -138,79 +246,7 @@ if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(FALSE) - var/obj/item/organ/heart/heart = C.getorganslot("heart") - var/obj/item/organ/lungs/lungs = C.getorganslot("lungs") - var/obj/item/organ/appendix/appendix = C.getorganslot("appendix") - var/obj/item/organ/eyes/eyes = C.getorganslot("eye_sight") - var/obj/item/organ/ears/ears = C.getorganslot("ears") - var/obj/item/organ/tongue/tongue = C.getorganslot("tongue") - - var/obj/item/organ/liver/liver = C.getorganslot("liver") - var/obj/item/organ/stomach/stomach = C.getorganslot("stomach") - - - - if((NOBLOOD in species_traits) && heart) - heart.Remove(C) - qdel(heart) - else if((!(NOBLOOD in species_traits)) && (!heart)) - heart = new() - heart.Insert(C) - - if(lungs) - qdel(lungs) - lungs = null - - QDEL_NULL(liver) - - QDEL_NULL(stomach) - - if(C.get_bodypart("head")) - if(eyes) - qdel(eyes) - eyes = new mutanteyes - eyes.Insert(C) - - if(ears) - qdel(ears) - ears = new mutantears - ears.Insert(C) - - if(tongue) - qdel(tongue) - tongue = new mutanttongue - tongue.Insert(C) - - if((!(NOBREATH in species_traits)) && !lungs) - if(mutantlungs) - lungs = new mutantlungs() - else - lungs = new() - lungs.Insert(C) - - if((!(NOLIVER in species_traits)) && (!liver)) - if(mutantliver) - liver = new mutantliver() - else - liver = new() - liver.Insert(C) - - if((!(NOSTOMACH in species_traits)) && (!stomach)) - if(mutantstomach) - stomach = new mutantstomach() - else - stomach = new() - stomach.Insert(C) - - if((NOHUNGER in species_traits) && appendix) - qdel(appendix) - else if((!(NOHUNGER in species_traits)) && (!appendix)) - appendix = new() - appendix.Insert(C) - - for(var/path in mutant_organs) - var/obj/item/organ/I = new path() - I.Insert(C) + regenerate_organs(C,old_species) if(exotic_bloodtype && C.dna.blood_type != exotic_bloodtype) C.dna.blood_type = exotic_bloodtype diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index 4302c43ff8..f9c731a4ce 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /datum/species/skeleton // 2spooky name = "Spooky Scary Skeleton" @@ -11,3 +12,18 @@ damage_overlay_type = ""//let's not show bloody wounds or burns over bones. disliked_food = NONE liked_food = NONE +======= +/datum/species/skeleton + // 2spooky + name = "Spooky Scary Skeleton" + id = "skeleton" + say_mod = "rattles" + blacklisted = 1 + sexes = 0 + meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton + species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NOHUNGER,EASYDISMEMBER,EASYLIMBATTACHMENT) + mutanttongue = /obj/item/organ/tongue/bone + damage_overlay_type = ""//let's not show bloody wounds or burns over bones. + disliked_food = NONE + liked_food = GROSS | MEAT | RAW +>>>>>>> 85cd9e6... Organ initialization cleanup diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index 04123102c0..4ce8570c2b 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -9,7 +9,7 @@ blacklisted = 1 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,NOZOMBIE,EASYDISMEMBER,EASYLIMBATTACHMENT,NOTRANSSTING) - mutant_organs = list(/obj/item/organ/tongue/zombie) + mutanttongue = /obj/item/organ/tongue/zombie var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg') disliked_food = NONE liked_food = NONE @@ -64,6 +64,6 @@ limbs_id = "zombie" //They look like zombies sexes = 0 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie - mutant_organs = list(/obj/item/organ/tongue/zombie) + mutanttongue = /obj/item/organ/tongue/zombie #undef REGENERATION_DELAY diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index f5a00d24cb..4fdda7a7bc 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -10,6 +10,8 @@ var/slot // DO NOT add slots with matching names to different zones - it will break internal_organs_slot list! var/vital = 0 + //Was this organ implanted/inserted/etc, if true will not be removed during species change. + var/external = FALSE /obj/item/organ/proc/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE) From 159835db24f68cd5e6bb996076efd758811170fc Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Tue, 3 Oct 2017 15:30:42 -0500 Subject: [PATCH 02/23] Fixes humans having no examine feedback for soft crit (#31247) * Soft crit examine * Concise --- code/modules/mob/living/carbon/human/examine.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 74ccdab19c..0ca0bed9fc 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -277,9 +277,11 @@ if(!appears_dead) if(stat == UNCONSCIOUS) msg += "[t_He] [t_is]n't responding to anything around [t_him] and seems to be asleep.\n" - else if(getBrainLoss() >= 60) - msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n" - + else + if(getBrainLoss() >= 60) + msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n" + if(InCritical()) + msg += "[t_He] is barely concious.\n" if(getorgan(/obj/item/organ/brain)) if(istype(src, /mob/living/carbon/human/interactive)) var/mob/living/carbon/human/interactive/auto = src From d98cd745ddec5a4221f937e3c6b2c16d4026f2fb Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Tue, 3 Oct 2017 18:11:06 -0400 Subject: [PATCH 04/23] Fixes morgue maintenance radstorm protection (#31253) * Morgue maint area * Fixed typo --- _maps/map_files/BoxStation/BoxStation.dmm | 199 ++++++++++++++++-- .../map_files/Deltastation/DeltaStation2.dmm | 119 ++++++++--- code/game/area/Space_Station_13_areas.dm | 6 +- icons/turf/areas.dmi | Bin 32943 -> 33086 bytes 4 files changed, 269 insertions(+), 55 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index dcd0717e29..1ef76788eb 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -24665,7 +24665,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, -/area/maintenance/aft) +/area/maintenance/department/medical/morgue) "bgp" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/white, @@ -26862,7 +26862,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/maintenance/aft) +/area/maintenance/department/medical/morgue) "blh" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/eastright{ @@ -26940,7 +26940,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/maintenance/aft) +/area/maintenance/department/medical/morgue) "blp" = ( /obj/machinery/power/apc{ dir = 8; @@ -26974,7 +26974,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/maintenance/aft) +/area/maintenance/department/medical/morgue) "blr" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -29030,7 +29030,7 @@ }, /obj/structure/disposalpipe/segment, /turf/open/floor/plating, -/area/maintenance/aft) +/area/maintenance/department/medical/morgue) "bpR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment{ @@ -60163,7 +60163,7 @@ icon_state = "2-4" }, /turf/open/floor/plating, -/area/maintenance/aft) +/area/maintenance/department/medical/morgue) "cHE" = ( /obj/machinery/door/airlock/maintenance{ name = "Mech Bay Maintenance"; @@ -63862,6 +63862,167 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"cTJ" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTK" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel/black, +/area/medical/morgue) +"cTM" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Morgue Maintenance APC"; + areastring = "/area/maintenance/department/medical/morgue"; + pixel_x = 26 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel/black, +/area/medical/morgue) +"cTN" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTS" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTT" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTU" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"cTV" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) (1,1,1) = {" aaa @@ -103574,7 +103735,7 @@ bfL bhp biB biB -biB +cTL bkU bmX bpE @@ -103831,7 +103992,7 @@ bfL bhq bhm bkb -bhm +cTM bla bmZ bpH @@ -104346,7 +104507,7 @@ bfS biC bkd bfS -bKH +cTO bmZ bpJ brc @@ -104860,7 +105021,7 @@ bfS biE bkf bfS -bKH +cTP bmZ bpL bre @@ -105117,7 +105278,7 @@ bfS biD bke bfS -bKH +cTQ bmZ bpK brd @@ -105374,7 +105535,7 @@ bfS bfS bfS bfS -bKH +cTR bmZ bon bon @@ -105626,17 +105787,17 @@ aYV baR bcb bdl -bdO +cTJ cHD bgo -bPv -bPv +cTK +cTN blq -bna -bPv +cTS +cTT bpQ -bPv -bdO +cTU +cTV btm buy bvz diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 5809176275..efae305c74 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -91795,7 +91795,7 @@ "dwO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dwP" = ( /obj/machinery/door/firedoor, /obj/structure/cable/white{ @@ -91815,7 +91815,7 @@ dir = 1 }, /turf/open/floor/plasteel, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dwQ" = ( /obj/structure/table/glass, /obj/item/clipboard, @@ -92448,7 +92448,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dyb" = ( /obj/structure/bed/roller, /obj/machinery/iv_drip, @@ -92456,12 +92456,12 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dyc" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dyd" = ( /obj/structure/cable/white{ d1 = 1; @@ -92470,7 +92470,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dye" = ( /obj/structure/table/glass, /obj/item/folder/white, @@ -92923,12 +92923,12 @@ "dzf" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dzg" = ( /obj/effect/decal/cleanable/blood/old, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dzh" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -92938,14 +92938,14 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dzi" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, /obj/item/storage/backpack/duffelbag/med, /obj/item/device/flashlight/pen, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dzj" = ( /turf/closed/wall, /area/crew_quarters/heads/cmo) @@ -93674,7 +93674,7 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dAw" = ( /obj/structure/cable/white{ d1 = 4; @@ -93687,7 +93687,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dAx" = ( /obj/structure/cable/white{ d1 = 4; @@ -93699,7 +93699,7 @@ dir = 1 }, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dAy" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -93712,7 +93712,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dAz" = ( /obj/structure/cable/white{ d1 = 1; @@ -93733,14 +93733,14 @@ dir = 4 }, /turf/open/floor/plasteel/neutral, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dAA" = ( /obj/structure/table, /obj/item/clothing/gloves/color/latex/nitrile, /obj/item/clothing/suit/apron/surgical, /obj/item/clothing/mask/breath/medical, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dAB" = ( /obj/structure/closet/secure_closet/CMO, /obj/item/clothing/under/rank/nursesuit, @@ -94324,7 +94324,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dBP" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -94334,13 +94334,13 @@ dir = 4 }, /turf/open/floor/plasteel/neutral, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dBQ" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dBR" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -94350,7 +94350,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/neutral, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dBS" = ( /obj/structure/rack, /obj/effect/decal/cleanable/dirt, @@ -94359,7 +94359,7 @@ /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dBT" = ( /obj/machinery/light{ dir = 8 @@ -95032,15 +95032,15 @@ /obj/structure/closet/secure_closet/medical3, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dDe" = ( /obj/structure/closet/wardrobe/white/medical, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dDf" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dDg" = ( /obj/structure/cable/white{ d1 = 1; @@ -95048,10 +95048,15 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/white{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, /turf/open/floor/plasteel/vault{ dir = 5 }, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dDh" = ( /obj/machinery/suit_storage_unit/cmo, /obj/effect/turf_decal/stripes/line{ @@ -95603,7 +95608,7 @@ dir = 1 }, /turf/open/floor/plasteel, -/area/medical/morgue) +/area/maintenance/department/medical/morgue) "dEn" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, @@ -113090,6 +113095,50 @@ /obj/structure/ore_box, /turf/open/floor/plating, /area/shuttle/auxillary_base) +"esz" = ( +/turf/closed/wall/r_wall, +/area/maintenance/department/medical/morgue) +"esA" = ( +/turf/closed/wall/r_wall, +/area/maintenance/department/medical/morgue) +"esB" = ( +/turf/closed/wall, +/area/maintenance/department/medical/morgue) +"esC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/maintenance/department/medical/morgue) +"esD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"esE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc{ + dir = 2; + name = "Morgue Maintenance APC"; + areastring = "/area/maintenance/department/medical/morgue"; + pixel_y = -26 + }, +/obj/structure/cable/white{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/maintenance/department/medical/morgue) +"esF" = ( +/turf/closed/wall, +/area/maintenance/department/medical/morgue) +"esG" = ( +/turf/closed/wall, +/area/maintenance/department/medical/morgue) +"esH" = ( +/turf/closed/wall, +/area/maintenance/department/medical/morgue) (1,1,1) = {" aaa @@ -155932,13 +155981,13 @@ drr dsR dur dvw -dwN +esz dya -dyY +esD dAw dBO dDd -dwK +esF dFd dGE dHP @@ -156189,13 +156238,13 @@ drs dsS drs dvx -dwN +esA dyb dzf dAx dBP dDe -dwK +esG dFe dGF dHP @@ -156960,13 +157009,13 @@ drv dlO dus dvA -dwK -dxS +esB +esC dzi dAA dBS -dxS -dwK +esE +esH dEY dGA dHP diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index 4846cc2bc2..c4b5c5caae 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -151,7 +151,11 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/maintenance/department/medical name = "Medbay Maintenance" - icon_state = "asmaint" + icon_state = "medbay_maint" + +/area/maintenance/department/medical/morgue + name = "Morgue Maintenance" + icon_state = "morgue_maint" /area/maintenance/department/science name = "Science Maintenance" diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi index ae61dc28527201c82e6fc7abc5ab5201f2b1947b..cb5499487d406c4221ad91fe4809a622eac32164 100644 GIT binary patch literal 33086 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 Sp$-UmpojO=6wBnzU;Gc4a(pcS literal 32943 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

#^9!Dp|0L0s#vCC*JZeU&uain?)Mz S!M_FqK97|(lwb-Lf&UM6b{nVw From 21cfddd4268cbb706d0b05c5f22fe42f14ee365d Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Tue, 3 Oct 2017 15:48:08 -0700 Subject: [PATCH 06/23] fixes healguardians not being able to heal people (#31228) * Update guardian.dm * Update support.dm * Update guardian.dm --- code/modules/mob/living/simple_animal/guardian/guardian.dm | 7 +++++-- .../mob/living/simple_animal/guardian/types/support.dm | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 144f7081e0..592679d35b 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -180,10 +180,13 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians new /obj/effect/temp_visual/guardian/phase(loc) /mob/living/simple_animal/hostile/guardian/canSuicide() - return 0 + return FALSE + +/mob/living/simple_animal/hostile/guardian/proc/is_deployed() + return loc != summoner /mob/living/simple_animal/hostile/guardian/AttackingTarget() - if(loc == summoner) + if(!is_deployed()) to_chat(src, "You must be manifested to attack!") return FALSE else diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm index db1581d8cb..a8a31ad89c 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/support.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/support.dm @@ -28,7 +28,7 @@ /mob/living/simple_animal/hostile/guardian/healer/AttackingTarget() . = ..() - if(. && toggle && iscarbon(target)) + if(is_deployed() && toggle && iscarbon(target)) var/mob/living/carbon/C = target C.adjustBruteLoss(-5) C.adjustFireLoss(-5) From f1dfc1b6db986c299d70ecd331dde867fd942636 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Tue, 3 Oct 2017 18:54:20 -0400 Subject: [PATCH 08/23] Merge pull request #31252 from MrStonedOne/whatthefuckcyberboss Partial revert of #30763 (datum config refactor) --- .../configuration/entries/config.dm | 35 +------------------ 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/code/controllers/configuration/entries/config.dm b/code/controllers/configuration/entries/config.dm index 62919afd06..ec96e88553 100644 --- a/code/controllers/configuration/entries/config.dm +++ b/code/controllers/configuration/entries/config.dm @@ -8,10 +8,8 @@ CONFIG_DEF(string/autoadmin_rank) // the rank for autoadmins protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(string/servername) // server name (the name of the game window) - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(string/serversqlname) // short form server name used for the DB - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(string/stationname) // station name (the name of the station in-game) @@ -24,52 +22,38 @@ CONFIG_DEF(number/round_end_countdown) // Post round murder death kill countdown min_val = 0 CONFIG_DEF(flag/hub) // if the game appears on the hub or not - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/log_ooc) // log OOC channel - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/log_access) // log login/logout - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/log_say) // log client say - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/log_admin) // log admin actions protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/log_prayer) // log prayers - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/log_law) // log lawchanges - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/log_game) // log game events - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/log_vote) // log voting - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/log_whisper) // log client whisper - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/log_attack) // log attack messages - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/log_emote) // log emotes - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/log_adminchat) // log admin chat messages protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/log_pda) // log pda messages - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/log_twitter) // log certain expliotable parrots and other such fun things in a JSON file of twitter valid phrases. - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/log_world_topic) // log all world.Topic() calls - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/allow_admin_ooccolor) // Allows admins with relevant permissions to have their own ooc colour protection = CONFIG_ENTRY_LOCKED @@ -85,14 +69,12 @@ CONFIG_DEF(number/vote_delay) // minimum time between voting sessions (decisecon CONFIG_DEF(number/vote_period) // length of voting period (deciseconds, default 1 minute) value = 600 min_val = 0 - + CONFIG_DEF(flag/default_no_vote) // vote does not default to nochange/norestart - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/no_dead_vote) // dead people can't vote CONFIG_DEF(flag/allow_metadata) // Metadata is supported. - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/popup_admin_pm) // adminPMs to non-admins show in a pop-up 'reply' window when set @@ -140,14 +122,12 @@ CONFIG_DEF(flag/admin_legacy_system) //Defines whether the server uses the legac protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(string/hostedby) - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/norespawn) CONFIG_DEF(flag/guest_jobban) CONFIG_DEF(flag/usewhitelist) - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(flag/ban_legacy_system) //Defines whether the server uses the legacy banning system with the files in /data or the SQL system. protection = CONFIG_ENTRY_LOCKED @@ -171,29 +151,22 @@ CONFIG_DEF(flag/use_exp_restrictions_other) CONFIG_DEF(flag/use_exp_restrictions_admin_bypass) CONFIG_DEF(string/server) - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(string/banappeals) - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(string/wikiurl) - protection = CONFIG_ENTRY_LOCKED value = "http://www.tgstation13.org/wiki" CONFIG_DEF(string/forumurl) - protection = CONFIG_ENTRY_LOCKED value = "http://tgstation13.org/phpBB/index.php" CONFIG_DEF(string/rulesurl) - protection = CONFIG_ENTRY_LOCKED value = "http://www.tgstation13.org/wiki/Rules" CONFIG_DEF(string/githuburl) - protection = CONFIG_ENTRY_LOCKED value = "https://www.github.com/tgstation/-tg-station" CONFIG_DEF(number/githubrepoid) - protection = CONFIG_ENTRY_LOCKED value = null min_val = 0 @@ -233,7 +206,6 @@ CONFIG_DEF(flag/useircbot) //tgs2 support CONFIG_DEF(flag/automute_on) //enables automuting/spam prevention CONFIG_DEF(string/panic_server_name) - protection = CONFIG_ENTRY_LOCKED /datum/config_entry/string/panic_server_name/ValidateAndSet(str_val) return str_val != "\[Put the name here\]" && ..() @@ -290,7 +262,6 @@ CONFIG_DEF(string/extreme_popcap_message) value = "The server is currently serving a high number of users, find alternative servers." CONFIG_DEF(flag/panic_bunker) // prevents people the server hasn't seen before from connecting - protection = CONFIG_ENTRY_LOCKED CONFIG_DEF(number/notify_new_player_age) // how long do we notify admins of a new player min_val = -1 @@ -303,7 +274,6 @@ CONFIG_DEF(flag/irc_first_connection_alert) // do we notify the irc channel when CONFIG_DEF(flag/check_randomizer) CONFIG_DEF(string/ipintel_email) - protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN /datum/config_entry/string/ipintel_email/ValidateAndSet(str_val) return str_val != "ch@nge.me" && ..() @@ -315,17 +285,14 @@ CONFIG_DEF(number/ipintel_rating_bad) max_val = 1 CONFIG_DEF(number/ipintel_save_good) - protection = CONFIG_ENTRY_LOCKED value = 12 min_val = 0 CONFIG_DEF(number/ipintel_save_bad) - protection = CONFIG_ENTRY_LOCKED value = 1 min_val = 0 CONFIG_DEF(string/ipintel_domain) - protection = CONFIG_ENTRY_LOCKED value = "check.getipintel.net" CONFIG_DEF(flag/aggressive_changelog) From 126020185d097d3e68b6ec746aeda4f712e8ae0a Mon Sep 17 00:00:00 2001 From: ExcessiveUseOfCobblestone <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> Date: Tue, 3 Oct 2017 18:55:21 -0400 Subject: [PATCH 10/23] Monkey Cubes expanding will give the new monkey an attack log with their creator (#31236) * Update snacks_meat.dm * no one wants to see that * WE'RE JUST SENDING IT TO ONE PLACE COBBY * boop * cool leoz tricks * Update snacks_meat.dm --- code/modules/food_and_drinks/food/snacks_meat.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index 7c8db01bcc..11426a4e04 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -185,7 +185,9 @@ /obj/item/reagent_containers/food/snacks/monkeycube/proc/Expand() visible_message("[src] expands!") - new /mob/living/carbon/monkey(get_turf(src)) + var/mob/spammer = get_mob_by_key(src.fingerprintslast) + var/mob/living/carbon/monkey/bananas = new(get_turf(src)) + bananas.log_message("Spawned via [src] at [COORD(src)], Last attached mob: [key_name(spammer)].", INDIVIDUAL_ATTACK_LOG) qdel(src) /obj/item/reagent_containers/food/snacks/enchiladas From 3310d73b7fa063a94cd383d11f7b6a95b3672c17 Mon Sep 17 00:00:00 2001 From: vuonojenmustaturska Date: Wed, 4 Oct 2017 02:04:02 +0300 Subject: [PATCH 12/23] Greatly speeds up bees (#31250) * Bee perf * requested changes --- .../mob/living/simple_animal/hostile/bees.dm | 25 ++++++++++--------- .../living/simple_animal/hostile/hostile.dm | 6 ++++- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index f2d29d3660..9f7a7d1bbf 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -105,22 +105,22 @@ /mob/living/simple_animal/hostile/poison/bees/CanAttack(atom/the_target) . = ..() if(!.) - return 0 + return FALSE if(isliving(the_target)) var/mob/living/H = the_target return !H.bee_friendly() /mob/living/simple_animal/hostile/poison/bees/Found(atom/A) + if(isliving(A)) + var/mob/living/H = A + return !H.bee_friendly() if(istype(A, /obj/machinery/hydroponics)) var/obj/machinery/hydroponics/Hydro = A if(Hydro.myseed && !Hydro.dead && !Hydro.recent_bee_visit) wanted_objects |= typecacheof(/obj/machinery/hydroponics) //so we only hunt them while they're alive/seeded/not visisted - return 1 - if(isliving(A)) - var/mob/living/H = A - return !H.bee_friendly() - return 0 + return TRUE + return FALSE /mob/living/simple_animal/hostile/poison/bees/AttackingTarget() @@ -187,7 +187,7 @@ if(loc == beehome) idle = min(100, ++idle) if(idle >= BEE_IDLE_ROAMING && prob(BEE_PROB_GOROAM)) - forceMove(get_turf(beehome)) + forceMove(beehome.drop_location()) else idle = max(0, --idle) if(idle <= BEE_IDLE_GOHOME && prob(BEE_PROB_GOHOME)) @@ -200,6 +200,7 @@ continue BB.bees |= src beehome = BB + break // End loop after the first compatible find. /mob/living/simple_animal/hostile/poison/bees/toxin/Initialize() . = ..() @@ -215,7 +216,7 @@ //the Queen doesn't leave the box on her own, and she CERTAINLY doesn't pollinate by herself /mob/living/simple_animal/hostile/poison/bees/queen/Found(atom/A) - return 0 + return FALSE //leave pollination for the peasent bees @@ -234,10 +235,10 @@ /mob/living/simple_animal/hostile/poison/bees/proc/reagent_incompatible(mob/living/simple_animal/hostile/poison/bees/B) if(!B) - return 0 + return FALSE if(B.beegent && beegent && B.beegent.id != beegent.id || B.beegent && !beegent || !B.beegent && beegent) - return 1 - return 0 + return TRUE + return FALSE /obj/item/queen_bee @@ -255,7 +256,7 @@ if(S.reagents.has_reagent("royal_bee_jelly")) //checked twice, because I really don't want royal bee jelly to be duped if(S.reagents.has_reagent("royal_bee_jelly",5)) S.reagents.remove_reagent("royal_bee_jelly", 5) - var/obj/item/queen_bee/qb = new(get_turf(user)) + var/obj/item/queen_bee/qb = new(user.drop_location()) qb.queen = new(qb) if(queen && queen.beegent) qb.queen.assign_reagent(queen.beegent) //Bees use the global singleton instances of reagents, so we don't need to worry about one bee being deleted and her copies losing their reagents. diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 2b29283c28..d4c9632a03 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -115,7 +115,11 @@ if(can_see(targets_from, HM, vision_range)) . += HM else - . = oview(vision_range, targets_from) + . = list() // The following code is only very slightly slower than just returning oview(vision_range, targets_from), but it saves us much more work down the line, particularly when bees are involved + for (var/obj/A in oview(vision_range, targets_from)) + . += A + for (var/mob/A in oview(vision_range, targets_from)) + . += A /mob/living/simple_animal/hostile/proc/FindTarget(var/list/possible_targets, var/HasTargetsList = 0)//Step 2, filter down possible targets to things we actually care about . = list() From baa53ba1d3da4be78a1171db914ba3a4b739a1b7 Mon Sep 17 00:00:00 2001 From: oranges Date: Wed, 4 Oct 2017 12:12:49 +1300 Subject: [PATCH 14/23] Merge pull request #31208 from ShizCalev/AINT-NOTHIN-BUT-A-FIRE-STARTA Makes mobs on fire light up --- code/__DEFINES/lighting.dm | 2 ++ .../effects/temporary_visuals/miscellaneous.dm | 2 +- .../atmospherics/environmental/LINDA_fire.dm | 14 +++++++++++++- code/modules/mob/living/living.dm | 5 +++-- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm index 6d7c9568a9..819abd032f 100644 --- a/code/__DEFINES/lighting.dm +++ b/code/__DEFINES/lighting.dm @@ -70,6 +70,8 @@ #define LIGHT_COLOR_TUNGSTEN "#FAE1AF" //Extremely diluted yellow, close to skin color (for some reason). rgb(250, 225, 175) #define LIGHT_COLOR_HALOGEN "#F0FAFA" //Barely visible cyan-ish hue, as the doctor prescribed. rgb(240, 250, 250) +#define LIGHT_RANGE_FIRE 3 //How many tiles standard fires glow. + #define LIGHTING_PLANE_ALPHA_VISIBLE 255 #define LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE 192 #define LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE 128 //For lighting alpha, small amounts lead to big changes. even at 128 its hard to figure out what is dark and what is light, at 64 you almost can't even tell. diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index 8b2d95f373..dfc5fb94d5 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -213,7 +213,7 @@ /obj/effect/temp_visual/fire icon = 'icons/effects/fire.dmi' icon_state = "3" - light_range = 3 + light_range = LIGHT_RANGE_FIRE light_color = LIGHT_COLOR_FIRE duration = 10 diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm index a39a9059f3..93862f16b4 100644 --- a/code/modules/atmospherics/environmental/LINDA_fire.dm +++ b/code/modules/atmospherics/environmental/LINDA_fire.dm @@ -49,7 +49,7 @@ icon = 'icons/effects/fire.dmi' icon_state = "1" layer = ABOVE_OPEN_TURF_LAYER - light_range = 3 + light_range = LIGHT_RANGE_FIRE light_color = LIGHT_COLOR_FIRE var/volume = 125 @@ -175,3 +175,15 @@ ..() if(isliving(L)) L.fire_act(temperature, volume) + +/obj/effect/dummy/fire + name = "fire" + desc = "OWWWWWW. IT BURNS. Tell a coder if you're seeing this." + icon_state = "nothing" + light_color = LIGHT_COLOR_FIRE + light_range = LIGHT_RANGE_FIRE + +/obj/effect/dummy/fire/Initialize() + . = ..() + if(!isliving(loc)) + qdel(src) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index e1d854c0c8..f4e85e40fb 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -884,7 +884,7 @@ on_fire = 1 src.visible_message("[src] catches fire!", \ "You're set on fire!") - src.set_light(3) + new/obj/effect/dummy/fire(src) throw_alert("fire", /obj/screen/alert/fire) update_fire() return TRUE @@ -894,7 +894,8 @@ if(on_fire) on_fire = 0 fire_stacks = 0 - src.set_light(0) + for(var/obj/effect/dummy/fire/F in src) + qdel(F) clear_alert("fire") update_fire() From 5c49bab3c5aeb75a13bf29efe2ede78d491e6698 Mon Sep 17 00:00:00 2001 From: oranges Date: Wed, 4 Oct 2017 12:14:32 +1300 Subject: [PATCH 16/23] Merge pull request #31135 from KorPhaeron/unconvertable Adds a var to minds that makes them immune to conversion --- code/datums/mind.dm | 1 + code/game/gamemodes/clock_cult/clock_cult.dm | 2 ++ code/game/gamemodes/cult/cult.dm | 2 ++ code/game/gamemodes/revolution/revolution.dm | 10 ++++++---- code/game/objects/items/implants/implant_loyality.dm | 8 ++++---- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index a3bfa7d497..093e828452 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -63,6 +63,7 @@ var/mob/living/enslaved_to //If this mind's master is another mob (i.e. adamantine golems) var/datum/language_holder/language_holder + var/unconvertable = FALSE /datum/mind/New(var/key) src.key = key diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index 0e72fe93aa..7d6f9bcdd1 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -53,6 +53,8 @@ Credit where due: return FALSE if(M.mind.enslaved_to && !is_servant_of_ratvar(M.mind.enslaved_to)) return FALSE + if(M.mind.unconvertable) + return FALSE else return FALSE if(iscultist(M) || isconstruct(M) || M.isloyal() || ispAI(M)) diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 868e02589b..01773f1ea6 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -21,6 +21,8 @@ return FALSE if(M.mind.enslaved_to && !iscultist(M.mind.enslaved_to)) return FALSE + if(M.mind.unconvertable) + return FALSE else return FALSE if(M.isloyal() || issilicon(M) || isbot(M) || isdrone(M) || is_servant_of_ratvar(M)) diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index add016dd8f..c1b6d13456 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -253,12 +253,14 @@ /datum/game_mode/proc/add_revolutionary(datum/mind/rev_mind) if(rev_mind.assigned_role in GLOB.command_positions) - return 0 + return FALSE var/mob/living/carbon/human/H = rev_mind.current//Check to see if the potential rev is implanted if(H.isloyal()) - return 0 + return FALSE if((rev_mind in revolutionaries) || (rev_mind in head_revolutionaries)) - return 0 + return FALSE + if(rev_mind.unconvertable) + return FALSE revolutionaries += rev_mind if(iscarbon(rev_mind.current)) var/mob/living/carbon/carbon_mob = rev_mind.current @@ -271,7 +273,7 @@ update_rev_icons_added(rev_mind) if(jobban_isbanned(rev_mind.current, ROLE_REV)) INVOKE_ASYNC(src, .proc/replace_jobbaned_player, rev_mind.current, ROLE_REV, ROLE_REV) - return 1 + return TRUE ////////////////////////////////////////////////////////////////////////////// //Deals with players being converted from the revolution (Not a rev anymore)// // Modified to handle borged MMIs. Accepts another var if the target is being borged at the time -- Polymorph. ////////////////////////////////////////////////////////////////////////////// diff --git a/code/game/objects/items/implants/implant_loyality.dm b/code/game/objects/items/implants/implant_loyality.dm index a1e9a0e4d5..ffaebf5a63 100644 --- a/code/game/objects/items/implants/implant_loyality.dm +++ b/code/game/objects/items/implants/implant_loyality.dm @@ -19,12 +19,12 @@ /obj/item/implant/mindshield/implant(mob/living/target, mob/user, silent = 0) if(..()) - if((target.mind in (SSticker.mode.head_revolutionaries))) + if((target.mind in (SSticker.mode.head_revolutionaries)) || target.mind.unconvertable) if(!silent) target.visible_message("[target] seems to resist the implant!", "You feel something interfering with your mental conditioning, but you resist it!") removed(target, 1) qdel(src) - return 0 + return FALSE if(target.mind in SSticker.mode.revolutionaries) SSticker.mode.remove_revolutionary(target.mind, FALSE, user) if(!silent) @@ -32,8 +32,8 @@ to_chat(target, "You feel something interfering with your mental conditioning, but you resist it!") else to_chat(target, "You feel a sense of peace and security. You are now protected from brainwashing.") - return 1 - return 0 + return TRUE + return FALSE /obj/item/implant/mindshield/removed(mob/target, silent = 0, special = 0) if(..()) From 67f0c2f41c37503b4eb9297c1b506da7d1b84ac9 Mon Sep 17 00:00:00 2001 From: AnturK Date: Wed, 4 Oct 2017 01:18:58 +0200 Subject: [PATCH 18/23] Fixes mech fab runtime (#31232) * Dunno what the initial was about, it's a list. * Proper fixup * Typo --- code/datums/components/material_container.dm | 10 ++++++++-- code/game/machinery/autolathe.dm | 11 +++++------ code/game/mecha/mech_fabricator.dm | 8 +------- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm index c790dcc1aa..d4b75e3892 100644 --- a/code/datums/components/material_container.dm +++ b/code/datums/components/material_container.dm @@ -17,6 +17,7 @@ var/show_on_examine var/list/allowed_typecache var/last_inserted_type + var/last_inserted_id var/last_amount_inserted var/last_insert_success var/datum/callback/precondition @@ -116,7 +117,7 @@ if(!amt) return 0 - insert_materials(S,amt) + last_inserted_id = insert_materials(S,amt) last_inserted_type = S.type S.use(amt) last_amount_inserted = amt @@ -133,17 +134,22 @@ if(!material_amount || !has_space(material_amount)) return 0 - insert_materials(I, multiplier) + last_inserted_id = insert_materials(I, multiplier) last_inserted_type = I.type last_amount_inserted = material_amount return material_amount /datum/component/material_container/proc/insert_materials(obj/item/I, multiplier = 1) //for internal usage only var/datum/material/M + var/primary_mat + var/max_mat_value = 0 for(var/MAT in materials) M = materials[MAT] M.amount += I.materials[MAT] * multiplier total_amount += I.materials[MAT] * multiplier + if(I.materials[MAT] > max_mat_value) + primary_mat = MAT + return primary_mat //For consuming material //mats is a list of types of material to use and the corresponding amounts, example: list(MAT_METAL=100, MAT_GLASS=200) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 9fa53765ed..4894952a69 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -134,12 +134,11 @@ if(ispath(lit, /obj/item/ore/bluespace_crystal)) use_power(max(500,M.last_amount_inserted/10)) else - var/obj/item/stack/S = lit - var/list/initmats = initial(S.materials) - if (initmats[MAT_METAL]) - flick("autolathe_o",src)//plays metal insertion animation - if (initmats[MAT_GLASS]) - flick("autolathe_r",src)//plays glass insertion animation + switch(M.last_inserted_id) + if (MAT_METAL) + flick("autolathe_o",src)//plays metal insertion animation + if (MAT_GLASS) + flick("autolathe_r",src)//plays glass insertion animation use_power(M.last_amount_inserted*100) updateUsrDialog() diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 8efc14d966..747647b1a5 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -420,13 +420,7 @@ var/datum/component/material_container/M = C if(!M.last_insert_success) return - var/lit = M.last_inserted_type - var/stack_name - if(ispath(lit, /obj/item/ore/bluespace_crystal)) - stack_name = "bluespace" - else - var/obj/item/stack/S = lit - stack_name = material2name(initial(S.materials)[1]) + var/stack_name = material2name(M.last_inserted_id) add_overlay("fab-load-[stack_name]") addtimer(CALLBACK(src, /atom/proc/cut_overlay, "fab-load-[stack_name]"), 10) updateUsrDialog() From e4d6219f1d43fdb4d8673c8f601ae163460b650b Mon Sep 17 00:00:00 2001 From: LetterJay Date: Tue, 3 Oct 2017 18:46:41 -0500 Subject: [PATCH 20/23] Update brain_item.dm --- code/modules/mob/living/brain/brain_item.dm | 8 -------- 1 file changed, 8 deletions(-) diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index fbff6a5285..fd7b8a8db3 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -46,15 +46,7 @@ /obj/item/organ/brain/Remove(mob/living/carbon/C, special = 0,no_id_transfer = FALSE) ..() -<<<<<<< HEAD - if(!special) - if(C.has_brain_worms()) - var/mob/living/simple_animal/borer/B = C.has_brain_worms() - B.leave_victim() //Should remove borer if the brain is removed - RR - if(!gc_destroyed || (owner && !owner.gc_destroyed)) -======= if((!gc_destroyed || (owner && !owner.gc_destroyed)) && !no_id_transfer) ->>>>>>> 85cd9e6... Organ initialization cleanup transfer_identity(C) C.update_hair() From dc9b438bd8527649f5c465edd918adb512b05776 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Tue, 3 Oct 2017 18:47:01 -0500 Subject: [PATCH 21/23] Update skeletons.dm --- .../carbon/human/species_types/skeletons.dm | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index f9c731a4ce..be03e591aa 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -1,18 +1,3 @@ -<<<<<<< HEAD -/datum/species/skeleton - // 2spooky - name = "Spooky Scary Skeleton" - id = "skeleton" - say_mod = "rattles" - blacklisted = 1 - sexes = 0 - meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton - species_traits = list(NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NOHUNGER,EASYDISMEMBER,EASYLIMBATTACHMENT) - mutant_organs = list(/obj/item/organ/tongue/bone) - damage_overlay_type = ""//let's not show bloody wounds or burns over bones. - disliked_food = NONE - liked_food = NONE -======= /datum/species/skeleton // 2spooky name = "Spooky Scary Skeleton" @@ -25,5 +10,4 @@ mutanttongue = /obj/item/organ/tongue/bone damage_overlay_type = ""//let's not show bloody wounds or burns over bones. disliked_food = NONE - liked_food = GROSS | MEAT | RAW ->>>>>>> 85cd9e6... Organ initialization cleanup + liked_food = NONE From e66e99776f5764e2a36e9462c8b9dc7d31940607 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 3 Oct 2017 18:49:24 -0500 Subject: [PATCH 22/23] Automatic changelog generation for PR #3096 [ci skip] --- html/changelogs/AutoChangeLog-pr-3096.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3096.yml diff --git a/html/changelogs/AutoChangeLog-pr-3096.yml b/html/changelogs/AutoChangeLog-pr-3096.yml new file mode 100644 index 0000000000..4031580453 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3096.yml @@ -0,0 +1,4 @@ +author: "Kor" +delete-after: True +changes: + - bugfix: "You can now tell when someone is in soft crit by examining them." From b7473ec008ed7c49f6c74e29da307a01674d376e Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 3 Oct 2017 19:11:26 -0500 Subject: [PATCH 23/23] Automatic changelog generation for PR #3102 [ci skip] --- html/changelogs/AutoChangeLog-pr-3102.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3102.yml diff --git a/html/changelogs/AutoChangeLog-pr-3102.yml b/html/changelogs/AutoChangeLog-pr-3102.yml new file mode 100644 index 0000000000..bc737b6a13 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3102.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - bugfix: "Bees now come with reduced amounts of free lag"