diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm
index 347d837856f..932986938d1 100644
--- a/code/modules/clothing/spacesuits/rig/rig.dm
+++ b/code/modules/clothing/spacesuits/rig/rig.dm
@@ -134,18 +134,18 @@
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)]"
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(armor)) piece.armor = armor.Copy()
update_icon(1)
@@ -631,14 +631,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/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/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.
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
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