From 63a2fc6bffefb700d82c7c9ec9669b6cb8a5f907 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Wed, 1 Apr 2015 06:49:31 -0700 Subject: [PATCH 1/3] Fixes #8682 --- code/modules/clothing/spacesuits/rig/rig.dm | 16 +++++++++------- .../modules/mob/living/carbon/human/inventory.dm | 5 +++-- code/modules/mob/mob.dm | 2 +- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 347d837856f..dd646a71450 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -140,12 +140,13 @@ piece.name = "[suit_type] [initial(piece.name)]" piece.desc = "It seems to be part of a [src.name]." piece.icon_state = "[initial(icon_state)]" - piece.armor = armor.Copy() piece.min_cold_protection_temperature = min_cold_protection_temperature piece.max_heat_protection_temperature = max_heat_protection_temperature piece.siemens_coefficient = siemens_coefficient piece.permeability_coefficient = permeability_coefficient piece.unacidable = unacidable + if(islist(species_restricted)) piece.species_restricted = species_restricted.Copy() + if(islist(armor)) piece.armor = armor.Copy() update_icon(1) @@ -631,14 +632,15 @@ use_obj.loc = src else if (deploy_mode != ONLY_RETRACT) - if(check_slot) - if(check_slot != use_obj) - H << "You are unable to deploy \the [piece] as \the [check_slot] [check_slot.gender == PLURAL ? "are" : "is"] in the way." - return + if(check_slot && check_slot != use_obj) + H << "You are unable to deploy \the [piece] as \the [check_slot] [check_slot.gender == PLURAL ? "are" : "is"] in the way." + return else - H << "Your [use_obj.name] [use_obj.gender == PLURAL ? "deploy" : "deploys"] swiftly." use_obj.loc = H - H.equip_to_slot(use_obj, equip_to) + if(!H.equip_to_slot_if_possible(use_obj, equip_to, 0)) + use_obj.loc = src + else + H << "Your [use_obj.name] [use_obj.gender == PLURAL ? "deploy" : "deploys"] swiftly." if(piece == "helmet" && helmet) helmet.update_light(H) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 44b212694eb..35cb9840cb1 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -215,10 +215,11 @@ This saves us from having to call add_fingerprint() any time something is put in //This is an UNSAFE proc. Use mob_can_equip() before calling this one! Or rather use equip_to_slot_if_possible() or advanced_equip_to_slot_if_possible() //set redraw_mob to 0 if you don't wish the hud to be updated - if you're doing it manually in your own proc. /mob/living/carbon/human/equip_to_slot(obj/item/W as obj, slot, redraw_mob = 1) + if(!slot) return if(!istype(W)) return if(!has_organ_for_slot(slot)) return - + if(!species || !species.hud || !(slot in species.hud.equip_slots)) return W.loc = src switch(slot) if(slot_back) @@ -337,7 +338,7 @@ This saves us from having to call add_fingerprint() any time something is put in W.layer = 20 - return + return 1 /obj/effect/equip_e name = "equip e" diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 6f4ac6543c7..82e7af84524 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -142,7 +142,7 @@ del(W) else if(!disable_warning) - src << "\red You are unable to equip that." //Only print if del_on_fail is false + src << "\red You are unable to equip \the [W]." //Only print if del_on_fail is false return 0 equip_to_slot(W, slot, redraw_mob) //This proc should not ever fail. From 5326abb67d5cb4b0f4b5111a75bd606ffa84da0b Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Wed, 1 Apr 2015 07:24:53 -0700 Subject: [PATCH 2/3] Fixes #8611 --- code/modules/reagents/Chemistry-Machinery.dm | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 1b72aa115ad..6da1a73332c 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -1020,6 +1020,9 @@ continue var/remaining_volume = beaker.reagents.maximum_volume - beaker.reagents.total_volume + if(remaining_volume <= 0) + break + if(sheet_reagents[O.type]) var/obj/item/stack/stack = O if(istype(stack)) @@ -1029,10 +1032,11 @@ beaker.reagents.add_reagent(sheet_reagents[stack.type], (amount_to_take*REAGENTS_PER_SHEET)) continue - O.reagents.trans_to(beaker, min(O.reagents.total_volume, remaining_volume)) - if(O.reagents.total_volume == 0) - remove_object(O) - if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) - break + if(O.reagents) + O.reagents.trans_to(beaker, min(O.reagents.total_volume, remaining_volume)) + if(O.reagents.total_volume == 0) + remove_object(O) + if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) + break #undef REAGENTS_PER_SHEET \ No newline at end of file From 1070a8f63ce17667a0d14f580ddfe968f488a2a1 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Wed, 1 Apr 2015 07:25:09 -0700 Subject: [PATCH 3/3] Adds weedkiller smoke checks to hydro trays and spreading plants. --- code/modules/clothing/spacesuits/rig/rig.dm | 3 +- .../hydroponics/spreading/spreading_growth.dm | 5 +++ code/modules/hydroponics/trays/tray.dm | 32 +++++++++---------- .../modules/hydroponics/trays/tray_process.dm | 5 +++ code/modules/reagents/Chemistry-Reagents.dm | 7 ++-- 5 files changed, 29 insertions(+), 23 deletions(-) diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index dd646a71450..932986938d1 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -134,7 +134,7 @@ verbs |= /obj/item/weapon/rig/proc/toggle_chest for(var/obj/item/piece in list(gloves,helmet,boots,chest)) - if(!piece) + if(!istype(piece)) continue piece.canremove = 0 piece.name = "[suit_type] [initial(piece.name)]" @@ -145,7 +145,6 @@ piece.siemens_coefficient = siemens_coefficient piece.permeability_coefficient = permeability_coefficient piece.unacidable = unacidable - if(islist(species_restricted)) piece.species_restricted = species_restricted.Copy() if(islist(armor)) piece.armor = armor.Copy() update_icon(1) diff --git a/code/modules/hydroponics/spreading/spreading_growth.dm b/code/modules/hydroponics/spreading/spreading_growth.dm index 257d2219bac..7b1eae4f218 100644 --- a/code/modules/hydroponics/spreading/spreading_growth.dm +++ b/code/modules/hydroponics/spreading/spreading_growth.dm @@ -35,6 +35,11 @@ die_off() return 0 + for(var/obj/effect/effect/smoke/chem/smoke in view(1, src)) + if(smoke.reagents.has_reagent("plantbgone")) + die_off() + return + // Handle life. var/turf/simulated/T = get_turf(src) if(istype(T)) diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index 19f181d03e7..22c227a8d4f 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -98,22 +98,22 @@ // Beneficial reagents also have values for modifying yield_mod and mut_mod (in that order). var/global/list/beneficial_reagents = list( - "beer" = list( -0.05, 0, 0 ), - "fluorine" = list( -2, 0, 0 ), - "chlorine" = list( -1, 0, 0 ), - "phosphorus" = list( -0.75, 0, 0 ), - "sodawater" = list( 0.1, 0, 0 ), - "sacid" = list( -1, 0, 0 ), - "pacid" = list( -2, 0, 0 ), - "plantbgone" = list( -2, 0, 0.2 ), - "cryoxadone" = list( 3, 0, 0 ), - "ammonia" = list( 0.5, 0, 0 ), - "diethylamine" = list( 1, 0, 0 ), - "nutriment" = list( 0.5, 0.1, 0 ), - "radium" = list( -1.5, 0, 0.2 ), - "adminordrazine" = list( 1, 1, 1 ), - "robustharvest" = list( 0, 0.2, 0 ), - "left4zed" = list( 0, 0, 0.2 ) + "beer" = list( -0.05, 0, 0 ), + "fluorine" = list( -2, 0, 0 ), + "chlorine" = list( -1, 0, 0 ), + "phosphorus" = list( -0.75, 0, 0 ), + "sodawater" = list( 0.1, 0, 0 ), + "sacid" = list( -1, 0, 0 ), + "pacid" = list( -2, 0, 0 ), + "plantbgone" = list( -2, 0, 0.2), + "cryoxadone" = list( 3, 0, 0 ), + "ammonia" = list( 0.5, 0, 0 ), + "diethylamine" = list( 1, 0, 0 ), + "nutriment" = list( 0.5, 0.1, 0 ), + "radium" = list( -1.5, 0, 0.2), + "adminordrazine" = list( 1, 1, 1 ), + "robustharvest" = list( 0, 0.2, 0 ), + "left4zed" = list( 0, 0, 0.2) ) // Mutagen list specifies minimum value for the mutation to take place, rather diff --git a/code/modules/hydroponics/trays/tray_process.dm b/code/modules/hydroponics/trays/tray_process.dm index 280ce9e6d6e..68e6fbce373 100644 --- a/code/modules/hydroponics/trays/tray_process.dm +++ b/code/modules/hydroponics/trays/tray_process.dm @@ -1,5 +1,10 @@ /obj/machinery/portable_atmospherics/hydroponics/process() + // Handle nearby smoke if any. + for(var/obj/effect/effect/smoke/chem/smoke in view(1, src)) + if(smoke.reagents.total_volume) + smoke.reagents.copy_to(src, 5) + //Do this even if we're not ready for a plant cycle. process_reagents() diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 4f08f6f0c35..64a65de467a 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -1855,12 +1855,9 @@ datum var/obj/effect/alien/weeds/alien_weeds = O alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast alien_weeds.healthcheck() - else if(istype(O,/obj/effect/plant)) //even a small amount is enough to kill it - del(O) else if(istype(O,/obj/effect/plant)) - if(prob(50)) - var/obj/effect/plant/plant = O - plant.die_off() + var/obj/effect/plant/plant = O + plant.die_off() else if(istype(O,/obj/machinery/portable_atmospherics/hydroponics)) var/obj/machinery/portable_atmospherics/hydroponics/tray = O