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