diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm
index a07013a79c9..116d0418c02 100644
--- a/code/game/objects/items/weapons/storage/fancy.dm
+++ b/code/game/objects/items/weapons/storage/fancy.dm
@@ -48,7 +48,10 @@
name = "egg box"
storage_slots = 12
max_combined_w_class = 24
- can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/egg)
+ can_hold = list(
+ /obj/item/weapon/reagent_containers/food/snacks/egg,
+ /obj/item/weapon/reagent_containers/food/snacks/boiledegg
+ )
/obj/item/weapon/storage/fancy/egg_box/New()
..()
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index ba6f040060c..0604fa9caba 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -298,6 +298,21 @@
if(src) del(src)
return
+ if(seed.kitchen_tag == "grass")
+ user.show_message("You make a grass tile out of \the [src]!", 1)
+ for(var/i=0,i<2,i++)
+ var/obj/item/stack/tile/grass/G = new (user.loc)
+ G.color = seed.get_trait(TRAIT_PRODUCT_COLOUR)
+ for (var/obj/item/stack/tile/grass/NG in user.loc)
+ if(G==NG)
+ continue
+ if(NG.amount>=NG.max_amount)
+ continue
+ NG.attackby(G, user)
+ user << "You add the newly-formed grass to the stack. It now contains [G.amount] tiles."
+ del(src)
+ return
+
if(seed.get_trait(TRAIT_SPREAD) > 0)
user << "You plant the [src.name]."
new /obj/machinery/portable_atmospherics/hydroponics/soil/invisible(get_turf(user),src.seed)
diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm
index d47a6582a96..7d69393216a 100644
--- a/code/modules/hydroponics/seed_datums.dm
+++ b/code/modules/hydroponics/seed_datums.dm
@@ -685,7 +685,7 @@
name = "wheat"
seed_name = "wheat"
display_name = "wheat stalks"
- chems = list("nutriment" = list(1,25), "flour" = list(1,25))
+ chems = list("nutriment" = list(1,25), "flour" = list(15,15))
kitchen_tag = "wheat"
/datum/seed/wheat/New()
@@ -703,7 +703,7 @@
name = "rice"
seed_name = "rice"
display_name = "rice stalks"
- chems = list("nutriment" = list(1,25), "rice" = list(1,25))
+ chems = list("nutriment" = list(1,25), "rice" = list(10,15))
kitchen_tag = "rice"
/datum/seed/rice/New()
@@ -870,7 +870,8 @@
name = "grass"
seed_name = "grass"
display_name = "grass"
- chems = list("nutriment" = list(1,20), "orangejuice" = list(1,20))
+ chems = list("nutriment" = list(1,20))
+ kitchen_tag = "grass"
/datum/seed/grass/New()
..()
diff --git a/code/modules/hydroponics/seed_storage.dm b/code/modules/hydroponics/seed_storage.dm
index f111a6ebb94..469896018e8 100644
--- a/code/modules/hydroponics/seed_storage.dm
+++ b/code/modules/hydroponics/seed_storage.dm
@@ -40,7 +40,7 @@
/obj/machinery/seed_storage/garden
name = "Garden seed storage"
scanner = list("stats")
- starting_seeds = list(/obj/item/seeds/appleseed = 3, /obj/item/seeds/bananaseed = 3, /obj/item/seeds/berryseed = 3, /obj/item/seeds/cabbageseed = 3, /obj/item/seeds/carrotseed = 3, /obj/item/seeds/chantermycelium = 3, /obj/item/seeds/cherryseed = 3, /obj/item/seeds/chiliseed = 3, /obj/item/seeds/cocoapodseed = 3, /obj/item/seeds/cornseed = 3, /obj/item/seeds/eggplantseed = 3, /obj/item/seeds/grapeseed = 3, /obj/item/seeds/grassseed = 3, /obj/item/seeds/lemonseed = 3, /obj/item/seeds/limeseed = 3, /obj/item/seeds/mtearseed = 2, /obj/item/seeds/orangeseed = 3, /obj/item/seeds/peanutseed = 3, /obj/item/seeds/plumpmycelium = 3, /obj/item/seeds/poppyseed = 3, /obj/item/seeds/potatoseed = 3, /obj/item/seeds/pumpkinseed = 3, /obj/item/seeds/riceseed = 3, /obj/item/seeds/soyaseed = 3, /obj/item/seeds/sugarcaneseed = 3, /obj/item/seeds/sunflowerseed = 3, /obj/item/seeds/shandseed = 2, /obj/item/seeds/tobaccoseed = 3, /obj/item/seeds/tomatoseed = 3, /obj/item/seeds/towermycelium = 3, /obj/item/seeds/watermelonseed = 3, /obj/item/seeds/wheatseed = 3, /obj/item/seeds/whitebeetseed = 3)
+ starting_seeds = list(/obj/item/seeds/appleseed = 3, /obj/item/seeds/bananaseed = 3, /obj/item/seeds/berryseed = 3, /obj/item/seeds/cabbageseed = 3, /obj/item/seeds/carrotseed = 3, /obj/item/seeds/chantermycelium = 3, /obj/item/seeds/cherryseed = 3, /obj/item/seeds/chiliseed = 3, /obj/item/seeds/cocoapodseed = 3, /obj/item/seeds/cornseed = 3, /obj/item/seeds/eggplantseed = 3, /obj/item/seeds/grapeseed = 3, /obj/item/seeds/grassseed = 3, /obj/item/seeds/replicapod = 3, /obj/item/seeds/lemonseed = 3, /obj/item/seeds/limeseed = 3, /obj/item/seeds/mtearseed = 2, /obj/item/seeds/orangeseed = 3, /obj/item/seeds/peanutseed = 3, /obj/item/seeds/plumpmycelium = 3, /obj/item/seeds/poppyseed = 3, /obj/item/seeds/potatoseed = 3, /obj/item/seeds/pumpkinseed = 3, /obj/item/seeds/riceseed = 3, /obj/item/seeds/soyaseed = 3, /obj/item/seeds/sugarcaneseed = 3, /obj/item/seeds/sunflowerseed = 3, /obj/item/seeds/shandseed = 2, /obj/item/seeds/tobaccoseed = 3, /obj/item/seeds/tomatoseed = 3, /obj/item/seeds/towermycelium = 3, /obj/item/seeds/watermelonseed = 3, /obj/item/seeds/wheatseed = 3, /obj/item/seeds/whitebeetseed = 3)
/obj/machinery/seed_storage/xenobotany
name = "Xenobotany seed storage"
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 464fb3a0558..defe2191bea 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -21,12 +21,11 @@
if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8))
germ_level++
-/mob/living/carbon/relaymove(var/mob/user, direction)
- if(user in src.stomach_contents)
- if(prob(40))
- for(var/mob/M in hearers(4, src))
- if(M.client)
- M.show_message(text("\red You hear something rumbling inside [src]'s stomach..."), 2)
+/mob/living/carbon/relaymove(var/mob/living/user, direction)
+ if((user in src.stomach_contents) && istype(user))
+ if(user.last_special <= world.time)
+ user.last_special = world.time + 50
+ src.visible_message("You hear something rumbling inside [src]'s stomach...")
var/obj/item/I = user.get_active_hand()
if(I && I.force)
var/d = rand(round(I.force / 4), I.force)
@@ -40,9 +39,7 @@
H.updatehealth()
else
src.take_organ_damage(d)
- for(var/mob/M in viewers(user, null))
- if(M.client)
- M.show_message(text("\red [user] attacks [src]'s stomach wall with the [I.name]!"), 2)
+ user.visible_message("[user] attacks [src]'s stomach wall with the [I.name]!")
playsound(user.loc, 'sound/effects/attackblob.ogg', 50, 1)
if(prob(src.getBruteLoss() - 50))
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 5c047cd9dd2..ccbf129293d 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -712,7 +712,7 @@
if(species.has_fine_manipulation)
return 1
if(!silent)
- src << "You don't have the dexterity to use [src]!"
+ src << "You don't have the dexterity to use that!"
return 0
/mob/living/carbon/human/abiotic(var/full_body = 0)
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 5b55733a107..0bf82da6a63 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -617,7 +617,7 @@
else
apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Heat")
fire_alert = max(fire_alert, 2)
-
+
else if(breath.temperature <= species.cold_level_1)
if(breath.temperature > species.cold_level_2)
apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, "head", used_weapon = "Excessive Cold")
@@ -705,7 +705,7 @@
//Body temperature is too hot.
fire_alert = max(fire_alert, 1)
if(status_flags & GODMODE) return 1 //godmode
-
+
if(bodytemperature < species.heat_level_2)
take_overall_damage(burn=HEAT_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature")
fire_alert = max(fire_alert, 2)
@@ -719,7 +719,7 @@
else if(bodytemperature <= species.cold_level_1)
fire_alert = max(fire_alert, 1)
if(status_flags & GODMODE) return 1 //godmode
-
+
if(!istype(loc, /obj/machinery/atmospherics/unary/cryo_cell))
if(bodytemperature > species.cold_level_2)
take_overall_damage(burn=COLD_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature")
@@ -1285,6 +1285,8 @@
glasses_processed = 1
process_glasses(glasses)
+ if(!glasses_processed && (species.vision_flags > 0))
+ sight |= species.vision_flags
if(!seer && !glasses_processed)
see_invisible = SEE_INVISIBLE_LIVING
@@ -1571,7 +1573,7 @@
var/percentage_health = RoundHealth((health-config.health_threshold_crit)/(maxHealth-config.health_threshold_crit)*100)
holder.icon_state = "hud[percentage_health]"
hud_list[HEALTH_HUD] = holder
-
+
if (BITTEST(hud_updateflag, STATUS_HUD))
var/foundVirus = 0
for(var/datum/disease/D in viruses)
@@ -1608,7 +1610,7 @@
hud_list[STATUS_HUD] = holder
hud_list[STATUS_HUD_OOC] = holder2
-
+
if (BITTEST(hud_updateflag, ID_HUD))
var/image/holder = hud_list[ID_HUD]
if(wear_id)
@@ -1622,7 +1624,7 @@
hud_list[ID_HUD] = holder
-
+
if (BITTEST(hud_updateflag, WANTED_HUD))
var/image/holder = hud_list[WANTED_HUD]
holder.icon_state = "hudblank"
@@ -1648,11 +1650,11 @@
holder.icon_state = "hudreleased"
break
hud_list[WANTED_HUD] = holder
-
+
if ( BITTEST(hud_updateflag, IMPLOYAL_HUD) \
|| BITTEST(hud_updateflag, IMPCHEM_HUD) \
|| BITTEST(hud_updateflag, IMPTRACK_HUD))
-
+
var/image/holder1 = hud_list[IMPTRACK_HUD]
var/image/holder2 = hud_list[IMPLOYAL_HUD]
var/image/holder3 = hud_list[IMPCHEM_HUD]
@@ -1673,7 +1675,7 @@
hud_list[IMPTRACK_HUD] = holder1
hud_list[IMPLOYAL_HUD] = holder2
hud_list[IMPCHEM_HUD] = holder3
-
+
if (BITTEST(hud_updateflag, SPECIALROLE_HUD))
var/image/holder = hud_list[SPECIALROLE_HUD]
holder.icon_state = "hudblank"
@@ -1734,10 +1736,10 @@
/mob/living/carbon/human/handle_fire()
if(..())
return
-
+
var/burn_temperature = fire_burn_temperature()
var/thermal_protection = get_heat_protection(burn_temperature)
-
+
if (thermal_protection < 1 && bodytemperature < burn_temperature)
bodytemperature += round(BODYTEMP_HEATING_MAX*(1-thermal_protection), 1)
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index ea4f9f9d41d..1162c84236f 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -37,6 +37,7 @@
var/list/unarmed_attacks = null // For empty hand harm-intent attack
var/brute_mod = 1 // Physical damage multiplier.
var/burn_mod = 1 // Burn damage multiplier.
+ var/vision_flags = 0 // Same flags as glasses.
// Death vars.
var/gibber_type = /obj/effect/gibspawner/human
diff --git a/code/modules/mob/living/carbon/human/species/station/golem.dm b/code/modules/mob/living/carbon/human/species/station/golem.dm
index 7d7b364f5d7..f04a8cb3678 100644
--- a/code/modules/mob/living/carbon/human/species/station/golem.dm
+++ b/code/modules/mob/living/carbon/human/species/station/golem.dm
@@ -7,7 +7,7 @@
language = "Sol Common" //todo?
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/punch)
- flags = IS_RESTRICTED | NO_BREATHE | NO_PAIN | NO_BLOOD | IS_SYNTHETIC | NO_SCAN | NO_POISON
+ flags = IS_RESTRICTED | NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN | NO_POISON
siemens_coefficient = 0
breath_type = null
diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm
index 15cf1ce7281..a854d0e6db6 100644
--- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm
+++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm
@@ -42,6 +42,8 @@
breath_type = null
poison_type = null
+ vision_flags = SEE_MOBS
+
has_organ = list(
"heart" = /datum/organ/internal/heart,
"brain" = /datum/organ/internal/brain/xeno,
diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm
index 2a4c748936f..2c9813d564c 100644
--- a/code/modules/mob/living/carbon/monkey/monkey.dm
+++ b/code/modules/mob/living/carbon/monkey/monkey.dm
@@ -265,7 +265,7 @@
//Unless its monkey mode monkeys cant use advanced tools
/mob/living/carbon/monkey/IsAdvancedToolUser(var/silent)
if(!silent)
- src << "You don't have the dexterity to use [src]!"
+ src << "You don't have the dexterity to use that!"
return 0
/mob/living/carbon/monkey/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/italics=0, var/message_range = world.view, var/list/used_radios = list())
diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
index 4d0792d7898..4d7a8f7e3aa 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -16,7 +16,7 @@
speak_chance = 5
turns_per_move = 5
see_in_dark = 10
- meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat
+ meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "pokes"
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index 8d3f0016cf7..1b72aa115ad 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -870,8 +870,8 @@
if(istype(O,/obj/item/weapon/storage/bag/plants))
var/failed = 1
- for (var/obj/item/G in O.contents)
- if(!O.reagents || !O.reagents.total_volume)
+ for(var/obj/item/G in O.contents)
+ if(!G.reagents || !G.reagents.total_volume)
continue
failed = 0
O.contents -= G
@@ -885,9 +885,9 @@
return 1
if(!O.contents.len)
- user << "You fill \the [src]."
+ user << "You empty \the [O] into \the [src]."
else
- user << "You fill \the [src]. Some of the things in the plant bag aren't suitable."
+ user << "You fill \the [src] from \the [O]."
src.updateUsrDialog()
return 0
diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm
index 9ab669b4bba..502a741c6b4 100644
--- a/code/modules/reagents/reagent_containers/food/snacks.dm
+++ b/code/modules/reagents/reagent_containers/food/snacks.dm
@@ -684,7 +684,8 @@
New()
..()
- reagents.add_reagent("protein", 3)
+ reagents.add_reagent("protein", 6)
+ reagents.add_reagent("pacid",6)
src.bitesize = 6
/obj/item/weapon/reagent_containers/food/snacks/meatball
diff --git a/icons/obj/hydroponics_products.dmi b/icons/obj/hydroponics_products.dmi
index 7708c4896aa..04e0c1c7ce4 100644
Binary files a/icons/obj/hydroponics_products.dmi and b/icons/obj/hydroponics_products.dmi differ