From a7bc8475d8a3c25f3d60cf0d2831c2e2354a4414 Mon Sep 17 00:00:00 2001 From: phil235 Date: Sat, 17 Oct 2015 16:29:11 +0200 Subject: [PATCH] Fixes winter coat hood sprite appearing as a bucket. Removing Smile, Swedish, Chav and Elvis from genetics. These mutation can still be acquired via adminspawned dna injector. Added a dna injector for laser eyes mutation. Fixes using razor on non human shaving non existent hair. Fixes chair deconstruction dropping too much metal. Adding some necessary check for mob buckling in gibber, processor and monkey recycler code, and in ventcrawling proc to fix being able to enter pipe while feeding as a slime. Fixes snapcorn not giving seeds. Fixes portable chem dispenser. --- code/__DEFINES/genetics.dm | 2 +- code/datums/mutations.dm | 4 ++ code/game/objects/items/weapons/cosmetics.dm | 4 +- .../objects/items/weapons/dna_injector.dm | 14 ++++++- .../objects/structures/beds_chairs/chair.dm | 3 ++ .../food&drinks/kitchen machinery/gibber.dm | 23 ++++++----- .../kitchen machinery/monkeyrecycler.dm | 33 +++++++++------- .../kitchen machinery/processor.dm | 10 +++-- code/modules/hydroponics/growninedible.dm | 1 + code/modules/mob/living/ventcrawling.dm | 9 +++++ code/modules/reagents/Chemistry-Machinery.dm | 7 ++-- html/changelogs/phil235-BugFixBoogalooG.yml | 37 ++++++++++++++++++ icons/mob/head.dmi | Bin 124537 -> 124541 bytes 13 files changed, 113 insertions(+), 34 deletions(-) create mode 100644 html/changelogs/phil235-BugFixBoogalooG.yml diff --git a/code/__DEFINES/genetics.dm b/code/__DEFINES/genetics.dm index 681defddba2..687cebfb786 100644 --- a/code/__DEFINES/genetics.dm +++ b/code/__DEFINES/genetics.dm @@ -64,7 +64,7 @@ #define DNA_FACIAL_HAIR_STYLE_BLOCK 6 #define DNA_HAIR_STYLE_BLOCK 7 -#define DNA_STRUC_ENZYMES_BLOCKS 24 +#define DNA_STRUC_ENZYMES_BLOCKS 20 #define DNA_UNIQUE_ENZYMES_LEN 32 //Transformation proc stuff diff --git a/code/datums/mutations.dm b/code/datums/mutations.dm index 2e5145df3e4..d999bf7bc9a 100644 --- a/code/datums/mutations.dm +++ b/code/datums/mutations.dm @@ -461,6 +461,7 @@ /datum/mutation/human/smile name = "Smile" quality = MINOR_NEGATIVE + dna_block = NON_SCANNABLE text_gain_indication = "You feel so happy. Nothing can be wrong with anything. :)" text_lose_indication = "Everything is terrible again. :(" @@ -547,6 +548,7 @@ /datum/mutation/human/swedish name = "Swedish" quality = MINOR_NEGATIVE + dna_block = NON_SCANNABLE text_gain_indication = "You feel Swedish, however that works." text_lose_indication = "The feeling of Swedishness passes." @@ -560,6 +562,7 @@ /datum/mutation/human/chav name = "Chav" quality = MINOR_NEGATIVE + dna_block = NON_SCANNABLE text_gain_indication = "Ye feel like a reet prat like, innit?" text_lose_indication = "You no longer feel like being rude and sassy." @@ -592,6 +595,7 @@ /datum/mutation/human/elvis name = "Elvis" quality = MINOR_NEGATIVE + dna_block = NON_SCANNABLE text_gain_indication = "You feel pretty good, honeydoll." text_lose_indication = "You feel a little less conversation would be great." diff --git a/code/game/objects/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm index 116b60905f8..252fff68d1d 100644 --- a/code/game/objects/items/weapons/cosmetics.dm +++ b/code/game/objects/items/weapons/cosmetics.dm @@ -120,7 +120,9 @@ /obj/item/weapon/razor/attack(mob/M, mob/user) if(ishuman(M)) var/mob/living/carbon/human/H = M - + if(H.dna.species.id != "human") + user << "There is nothing to shave!" + return var/location = user.zone_sel.selecting if(location == "mouth") if(!get_location_accessible(H, location)) diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index e94ac89b828..094faaffb86 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -373,4 +373,16 @@ name = "\improper DNA injector (Anti-Elvis)" New() ..() - remove_mutations.Add(mutations_list[ELVIS]) \ No newline at end of file + remove_mutations.Add(mutations_list[ELVIS]) + +/obj/item/weapon/dnainjector/lasereyesmut + name = "\improper DNA injector (Laser Eyes)" + New() + ..() + add_mutations.Add(mutations_list[LASEREYES]) + +/obj/item/weapon/dnainjector/antilasereyes + name = "\improper DNA injector (Anti-Laser Eyes)" + New() + ..() + remove_mutations.Add(mutations_list[LASEREYES]) \ No newline at end of file diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 337bb4b1ff1..34afa00a980 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -4,6 +4,7 @@ icon_state = "chair" buckle_lying = 0 //you sit in a chair, not lay burn_state = -1 //Not Burnable + buildstackamount = 1 /obj/structure/bed/chair/New() ..() @@ -27,6 +28,7 @@ SK.loc = E SK.master = E qdel(src) + /obj/structure/bed/chair/attack_tk(mob/user) if(buckled_mob) ..() @@ -105,6 +107,7 @@ color = rgb(255,255,255) burn_state = 0 //Burnable burntime = 30 + buildstackamount = 2 var/image/armrest = null /obj/structure/bed/chair/comfy/New() diff --git a/code/modules/food&drinks/kitchen machinery/gibber.dm b/code/modules/food&drinks/kitchen machinery/gibber.dm index 1e0b4a791a2..1e796de56c0 100644 --- a/code/modules/food&drinks/kitchen machinery/gibber.dm +++ b/code/modules/food&drinks/kitchen machinery/gibber.dm @@ -97,23 +97,26 @@ /obj/machinery/gibber/attackby(obj/item/P, mob/user, params) if (istype(P, /obj/item/weapon/grab)) var/obj/item/weapon/grab/G = P - if(!istype(G.affecting, /mob/living/carbon/)) + if(!iscarbon(G.affecting)) user << "This item is not suitable for the gibber!" return - if(G.affecting.abiotic(1) && !ignore_clothing) + var/mob/living/carbon/C = G.affecting + if(C.buckled ||C.buckled_mob) + user << "[C] is attached to something!" + return + if(C.abiotic(1) && !ignore_clothing) user << "Subject may not have abiotic items on." return user.visible_message("[user] starts to put [G.affecting] into the gibber!") src.add_fingerprint(user) - if(do_after(user, gibtime, target = src) && G && G.affecting && !occupant) + if(do_after(user, gibtime, target = src) && G && G.affecting && G.affecting == C && !C.buckled && !C.buckled_mob && !occupant) user.visible_message("[user] stuffs [G.affecting] into the gibber!") - var/mob/M = G.affecting - if(M.client) - M.client.perspective = EYE_PERSPECTIVE - M.client.eye = src - M.loc = src - src.occupant = M + if(C.client) + C.client.perspective = EYE_PERSPECTIVE + C.client.eye = src + C.loc = src + occupant = C qdel(G) update_icon() @@ -138,7 +141,7 @@ set name = "empty gibber" set src in oview(1) - if(usr.stat || !usr.canmove || usr.restrained()) + if(usr.incapacitated()) return src.go_out() add_fingerprint(usr) diff --git a/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm b/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm index 22e76bc14c8..77c1cbd695f 100644 --- a/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm +++ b/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm @@ -56,23 +56,26 @@ if(!user.Adjacent(G.affecting)) return var/grabbed = G.affecting - if(istype(grabbed, /mob/living/carbon/monkey)) + if(ismonkey(grabbed)) var/mob/living/carbon/monkey/target = grabbed if(target.stat == 0) - user << "The monkey is struggling far too much to put it in the recycler." - else - if(!user.drop_item()) - return - qdel(target) - user << "You stuff the monkey into the machine." - playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1) - var/offset = prob(50) ? -2 : 2 - animate(src, pixel_x = pixel_x + offset, time = 0.2, loop = 200) //start shaking - use_power(500) - src.grinded++ - sleep(50) - pixel_x = initial(pixel_x) //return to its spot after shaking - user << "The machine now has [grinded] monkey\s worth of material stored." + user << "The monkey is struggling far too much to put it in the recycler." + return + if(target.buckled || target.buckled_mob) + user << "The monkey is attached to something." + return + if(!user.drop_item()) + return + qdel(target) + user << "You stuff the monkey into the machine." + playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1) + var/offset = prob(50) ? -2 : 2 + animate(src, pixel_x = pixel_x + offset, time = 0.2, loop = 200) //start shaking + use_power(500) + grinded++ + sleep(50) + pixel_x = initial(pixel_x) //return to its spot after shaking + user << "The machine now has [grinded] monkey\s worth of material stored." else user << "The machine only accepts monkeys!" diff --git a/code/modules/food&drinks/kitchen machinery/processor.dm b/code/modules/food&drinks/kitchen machinery/processor.dm index 5db38bbc970..331d1c29449 100644 --- a/code/modules/food&drinks/kitchen machinery/processor.dm +++ b/code/modules/food&drinks/kitchen machinery/processor.dm @@ -152,21 +152,25 @@ default_deconstruction_crowbar(O) - var/what = O - if (istype(O, /obj/item/weapon/grab)) + var/atom/movable/what = O + if(istype(O, /obj/item/weapon/grab)) var/obj/item/weapon/grab/G = O if(!user.Adjacent(G.affecting)) return + if(G.affecting.buckled || G.affecting.buckled_mob) + user << "[G.affecting] is attached to somthing!" + return what = G.affecting var/datum/food_processor_process/P = select_recipe(what) if (!P) user << "That probably won't blend!" return 1 + user.visible_message("[user] put [what] into [src].", \ "You put the [what] into [src].") user.drop_item() - what:loc = src + what.loc = src return /obj/machinery/processor/attack_hand(mob/user) diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm index e016b244338..ddb7d17ac2e 100644 --- a/code/modules/hydroponics/growninedible.dm +++ b/code/modules/hydroponics/growninedible.dm @@ -310,6 +310,7 @@ return /obj/item/weapon/grown/snapcorn + seed = /obj/item/seeds/snapcornseed name = "snap corn" desc = "A cob with snap pops" icon_state = "snapcorn" diff --git a/code/modules/mob/living/ventcrawling.dm b/code/modules/mob/living/ventcrawling.dm index 1d74c380039..7036ebcba2e 100644 --- a/code/modules/mob/living/ventcrawling.dm +++ b/code/modules/mob/living/ventcrawling.dm @@ -18,6 +18,9 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/components/unary if(buckled_mob) src << "You can't vent crawl with [buckled_mob] on you!" return + if(buckled) + src << "You can't vent crawl while buckled!" + return var/obj/machinery/atmospherics/components/unary/vent_found @@ -68,6 +71,12 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/components/unary else src << "This ventilation duct is not connected to anything!" +/mob/living/simple_animal/slime/handle_ventcrawl(atom/A) + if(buckled) + src << "I can't vent crawl while feeding..." + return + ..() + /mob/living/proc/add_ventcrawl(obj/machinery/atmospherics/components/unary/starting_machine) if(!istype(starting_machine) || !starting_machine.returnPipenet()) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 8b42b95134d..364caabeebf 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -73,7 +73,7 @@ */ /obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null) if(stat & (BROKEN)) return - if(user.stat || user.restrained()) return + if(user.incapacitated()) return ui = SSnano.push_open_or_new_ui(user, src, ui_key, ui, "chem_dispenser.tmpl", "[uiname]", 490, 710, 0) @@ -100,7 +100,7 @@ data["beakerMaxVolume"] = null var chemicals[0] - for (var/re in dispensable_reagents) + for(var/re in dispensable_reagents) var/datum/reagent/temp = chemical_reagents_list[re] if(temp) chemicals.Add(list(list("title" = temp.name, "id" = temp.id, "commands" = list("dispense" = temp.id)))) // list in a list because Byond merges the first list... @@ -215,7 +215,8 @@ recharge_delay /= time/2 //delay between recharges, double the usual time on lowest 50% less than usual on highest for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) for(i=1, i<=M.rating, i++) - dispensable_reagents = sortList(dispensable_reagents | special_reagents[i]) + dispensable_reagents |= special_reagents[i] + dispensable_reagents = sortList(dispensable_reagents) /obj/machinery/chem_dispenser/constructable/attackby(var/obj/item/I, var/mob/user, params) ..() diff --git a/html/changelogs/phil235-BugFixBoogalooG.yml b/html/changelogs/phil235-BugFixBoogalooG.yml new file mode 100644 index 00000000000..9cf7d8b07de --- /dev/null +++ b/html/changelogs/phil235-BugFixBoogalooG.yml @@ -0,0 +1,37 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# spellcheck (typo fixes) +# experiment +# tgs (TG-ported fixes?) +################################# + +# Your name. +author: N3X15 + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Added a changelog editing system that should cause fewer conflicts and more accurate timestamps." + - rscdel: "Killed innocent kittens." diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index f9f2ff23ed79c7ed19fec424f94f491cd3df729f..3d38396674c45ca55b88b0f39eb34425ad8399e9 100644 GIT binary patch delta 52 zcmV-40L%aR%m@9<2aqHI`mrVE1stG{n&x;rcK_V{`p1{<%kN(w{}05d6U(Vp0Puq& K2Dc*y0aoAuR2yIb delta 48 zcmV-00MGyZ%m?|*2aqHI_OT`A1sDMM7VvZT>mOgbFTa0%{68;v5lx=FbvT132Dc{$ G0aoBXQx&KH