diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 78297803c2a..76623347eb9 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -18,7 +18,8 @@ var/list/injection_chems = list() //list of injectable chems except ephedrine, coz ephedrine is always avalible var/list/possible_chems = list(list("morphine", "salbutamol", "salglu_solution"), list("morphine", "salbutamol", "salglu_solution", "oculine"), - list("morphine", "salbutamol", "salglu_solution", "oculine", "charcoal", "mutadone", "mannitol", "pen_acid")) + list("morphine", "salbutamol", "salglu_solution", "oculine", "charcoal", "mutadone", "mannitol", "pen_acid"), + list("morphine", "salbutamol", "salglu_solution", "oculine", "charcoal", "mutadone", "mannitol", "omnizine")) /obj/machinery/sleeper/New() ..() component_parts = list() diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 87be0acbdf5..f04424c08a7 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -224,7 +224,7 @@ use_power(7500) //This might need tweaking. return - else if((src.occupant.cloneloss <= (100 - src.heal_level)) && (!src.eject_wait)) + else if((src.occupant.cloneloss <= (100 - src.heal_level)) && (!src.eject_wait) || src.occupant.health >= 100) src.connected_message("Cloning Process Complete.") src.locked = 0 src.go_out() diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index c57bbbfaedc..93ce6410e4f 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -16,6 +16,7 @@ var/const/SAFETY_COOLDOWN = 100 var/amount_produced = 1 var/probability_mod = 1 var/extra_materials = 0 + var/list/blacklist = list(/obj/item/pipe, /obj/item/pipe_meter, /obj/structure/disposalconstruct, /obj/item/weapon/reagent_containers, /obj/item/weapon/paper, /obj/item/stack/, /obj/item/weapon/pen, /obj/item/weapon/storage/, /obj/item/clothing/mask/cigarette) // Don't allow us to grind things we can poop out at 200 a second for free. /obj/machinery/recycler/New() // On us @@ -118,6 +119,11 @@ var/const/SAFETY_COOLDOWN = 100 /obj/machinery/recycler/proc/recycle(var/obj/item/I, var/sound = 1) I.loc = src.loc + if(is_type_in_list(I, blacklist)) + qdel(I) + if(sound) + playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) + return qdel(I) if(prob(15 + probability_mod)) var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/metal(loc) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 740ec63b06e..c87a61c076c 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -120,7 +120,8 @@ var/list/admin_verbs_debug = list( /client/proc/SDQL2_query, /client/proc/test_movable_UI, /client/proc/test_snap_UI, - /client/proc/debugNatureMapGenerator + /client/proc/debugNatureMapGenerator, + /proc/machine_upgrade ) var/list/admin_verbs_possess = list( /proc/possess, diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index f1f0b88a848..c5f1a2bb22f 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -1091,6 +1091,8 @@ var/global/list/g_fancy_list_of_types = null usr << browse(dat, "window=dellog") + + //Deathsquad /proc/equip_deathsquad(var/mob/living/carbon/human/M, var/officer) var/obj/item/device/radio/R = new /obj/item/device/radio/headset/headset_cent/alt(M) diff --git a/code/modules/food&drinks/kitchen machinery/gibber.dm b/code/modules/food&drinks/kitchen machinery/gibber.dm index 352bce8e02b..7688f2c6882 100644 --- a/code/modules/food&drinks/kitchen machinery/gibber.dm +++ b/code/modules/food&drinks/kitchen machinery/gibber.dm @@ -9,7 +9,7 @@ var/operating = 0 //Is it on? var/dirty = 0 // Does it need cleaning? var/gibtime = 40 // Time from starting until meat appears - var/typeofmeat = /obj/item/weapon/reagent_containers/food/snacks/meat/ + var/typeofmeat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human var/meat_produced = 0 var/ignore_clothing = 0 use_power = 1 @@ -97,7 +97,7 @@ /obj/machinery/gibber/attackby(obj/item/P as obj, mob/user as mob, params) if (istype(P, /obj/item/weapon/grab)) var/obj/item/weapon/grab/G = P - if(!istype(G.affecting, /mob/living/carbon/human)) + if(!istype(G.affecting, /mob/living/carbon/)) user << "This item is not suitable for the gibber!" return if(G.affecting.abiotic(1) && !ignore_clothing) @@ -159,11 +159,15 @@ src.operating = 1 update_icon() var/sourcename = src.occupant.real_name - var/sourcejob = src.occupant.job + var/sourcejob + if(ishuman(occupant)) + var/mob/living/carbon/human/gibee = occupant + sourcejob = gibee.job var/sourcenutriment = src.occupant.nutrition / 15 var/sourcetotalreagents = src.occupant.reagents.total_volume + var/gibtype = /obj/effect/decal/cleanable/blood/gibs - var/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/allmeat[meat_produced] + var/obj/item/weapon/reagent_containers/food/snacks/meat/slab/allmeat[meat_produced] if(ishuman(occupant)) var/mob/living/carbon/human/gibee = occupant @@ -171,11 +175,17 @@ typeofmeat = gibee.dna.species.meat else typeofmeat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human + else + if(iscarbon(occupant)) + var/mob/living/carbon/C = occupant + typeofmeat = C.type_of_meat + gibtype = C.gib_type for (var/i=1 to meat_produced) - var/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/newmeat = new typeofmeat + var/obj/item/weapon/reagent_containers/food/snacks/meat/slab/newmeat = new typeofmeat newmeat.name = sourcename + newmeat.name newmeat.subjectname = sourcename - newmeat.subjectjob = sourcejob + if(sourcejob) + newmeat.subjectjob = sourcejob newmeat.reagents.add_reagent ("nutriment", sourcenutriment / meat_produced) // Thehehe. Fat guys go first src.occupant.reagents.trans_to (newmeat, round (sourcetotalreagents / meat_produced, 1)) // Transfer all the reagents from the allmeat[i] = newmeat @@ -188,12 +198,15 @@ playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) operating = 0 for (var/i=1 to meat_produced) + var/list/nearby_turfs = orange(3, get_turf(src)) var/obj/item/meatslab = allmeat[i] - var/turf/Tx = locate(src.x - i, src.y, src.z) meatslab.loc = src.loc - meatslab.throw_at(Tx,i,3) - if (!Tx.density) - new /obj/effect/decal/cleanable/blood/gibs(Tx,i) + meatslab.throw_at(pick(nearby_turfs),i,3) + for (var/turfs=1 to meat_produced*3) + var/turf/gibturf = pick(nearby_turfs) + if (!gibturf.density && src in viewers(gibturf)) + new gibtype(gibturf,i) + src.operating = 0 update_icon() diff --git a/code/modules/food&drinks/kitchen machinery/processor.dm b/code/modules/food&drinks/kitchen machinery/processor.dm index b6258624497..8e9e140e605 100644 --- a/code/modules/food&drinks/kitchen machinery/processor.dm +++ b/code/modules/food&drinks/kitchen machinery/processor.dm @@ -86,7 +86,7 @@ S.loc = loc S.visible_message("[C] crawls free of the processor!") return - for(var/i = 1, i <= C * processor.rating_amount, i++) + for(var/i = 1, i <= C + processor.rating_amount, i++) new S.coretype(loc) feedback_add_details("slime_core_harvested","[replacetext(S.colour," ","_")]") ..() diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 0b33449b5ef..02d7cc2a8e2 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -12,6 +12,7 @@ ventcrawler = 2 languages = ALIEN verb_say = "hisses" + type_of_meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/xeno var/nightvision = 1 var/storedPlasma = 250 var/max_plasma = 500 @@ -28,6 +29,7 @@ var/heat_protection = 0.5 var/leaping = 0 var/list/obj/effect/proc_holder/alien/abilities = list() + gib_type = /obj/effect/decal/cleanable/xenoblood/xgibs /mob/living/carbon/alien/New() verbs += /mob/living/proc/mob_sleep diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 41a04d1273f..4026083e1ac 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -23,5 +23,7 @@ var/co2overloadtime = null var/temperature_resistance = T0C+75 has_limbs = 1 + var/obj/item/weapon/reagent_containers/food/snacks/meat/slab/type_of_meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/ var/remote_view = 0 + var/gib_type = /obj/effect/decal/cleanable/blood/gibs diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 51b73cc9a7a..a7c821c9493 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -8,6 +8,8 @@ pass_flags = PASSTABLE languages = MONKEY ventcrawler = 1 + type_of_meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/monkey + gib_type = /obj/effect/decal/cleanable/blood/gibs /mob/living/carbon/monkey/New() create_reagents(1000) diff --git a/tgstation.dme b/tgstation.dme index 55616d11204..0c99d0a42dd 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -818,6 +818,7 @@ #include "code\modules\admin\verbs\diagnostics.dm" #include "code\modules\admin\verbs\fps.dm" #include "code\modules\admin\verbs\getlogs.dm" +#include "code\modules\admin\verbs\machine_upgrade.dm" #include "code\modules\admin\verbs\mapping.dm" #include "code\modules\admin\verbs\massmodvar.dm" #include "code\modules\admin\verbs\modifyvariables.dm" @@ -1085,7 +1086,6 @@ #include "code\modules\mob\living\carbon\inventory.dm" #include "code\modules\mob\living\carbon\life.dm" #include "code\modules\mob\living\carbon\say.dm" -#include "code\modules\mob\living\carbon\update_icons.dm" #include "code\modules\mob\living\carbon\alien\alien.dm" #include "code\modules\mob\living\carbon\alien\alien_defense.dm" #include "code\modules\mob\living\carbon\alien\death.dm"