Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-15-10-2025

This commit is contained in:
Roxy
2025-10-15 19:34:41 -04:00
656 changed files with 24772 additions and 15866 deletions
@@ -31,6 +31,7 @@
if(!canconsume(target_mob, user))
return ITEM_INTERACT_BLOCKING
user.changeNext_move(CLICK_CD_MELEE)
if(target_mob == user)
target_mob.visible_message(span_notice("[user] attempts to [apply_method] [src]."))
if(self_delay)
@@ -44,6 +44,7 @@
if(!canconsume(target, user))
return ITEM_INTERACT_BLOCKING
user.changeNext_move(CLICK_CD_MELEE)
if(target == user)
user.visible_message(
span_notice("[user] swallows some of the contents of \the [src]."),
@@ -69,6 +69,7 @@
if(!canconsume(target_mob, user))
return ITEM_INTERACT_BLOCKING
user.changeNext_move(CLICK_CD_MELEE)
if(target_mob != user)
target_mob.visible_message(
span_danger("[user] attempts to feed [target_mob] something from [src]."),
@@ -331,6 +332,10 @@
ITEM_SLOT_DEX_STORAGE
)
/obj/item/reagent_containers/cup/bucket/Initialize(mapload)
. = ..()
AddElement(/datum/element/cuffable_item)
/datum/armor/cup_bucket
melee = 10
fire = 75
@@ -18,6 +18,8 @@
. = ..()
if(!.) //if the bottle wasn't caught
var/mob/thrower = throwingdatum?.get_thrower()
if(!istype(thrower))
return
smash(hit_atom, thrower, throwingdatum)
/obj/item/reagent_containers/cup/glass/proc/smash(atom/target, mob/thrower, datum/thrownthing/throwingdatum, break_top = FALSE)
@@ -72,6 +74,10 @@
custom_materials = list(/datum/material/gold=HALF_SHEET_MATERIAL_AMOUNT)
volume = 150
/obj/item/reagent_containers/cup/glass/trophy/gold_cup/Initialize(mapload)
. = ..()
AddElement(/datum/element/cuffable_item) //closed handles
/obj/item/reagent_containers/cup/glass/trophy/silver_cup
name = "silver cup"
desc = "Best loser!"
@@ -84,6 +90,9 @@
custom_materials = list(/datum/material/silver=SMALL_MATERIAL_AMOUNT*8)
volume = 100
/obj/item/reagent_containers/cup/glass/trophy/silver_cup/Initialize(mapload)
. = ..()
AddElement(/datum/element/cuffable_item) //closed handle
/obj/item/reagent_containers/cup/glass/trophy/bronze_cup
name = "bronze cup"
@@ -168,6 +177,10 @@
base_icon_state = "tea"
inhand_icon_state = "coffee"
/obj/item/reagent_containers/cup/glass/mug/Initialize(mapload)
. = ..()
AddElement(/datum/element/cuffable_item)
/obj/item/reagent_containers/cup/glass/mug/update_icon_state()
icon_state = "[base_icon_state][reagents.total_volume ? null : "_empty"]"
return ..()
@@ -292,7 +305,7 @@
if(prob(flip_chance)) // landed upright
src.visible_message(span_notice("[src] lands upright!"))
var/mob/living/thrower = throwingdatum?.get_thrower()
if(thrower)
if(istype(thrower))
thrower.add_mood_event("bottle_flip", /datum/mood_event/bottle_flip)
else // landed on its side
animate(src, transform = matrix(prob(50)? 90 : -90, MATRIX_ROTATE), time = 3, loop = 0)
@@ -396,6 +409,13 @@
if(icon_state == "colocup6")
desc = "A cheap, mass produced style of cup, typically used at parties. Woah, this one is in red! What the hell?"
/obj/item/reagent_containers/cup/glass/colocup/lean
name = "lean"
desc = "A cup of that purple drank, the stuff that makes you go WHEEZY BABY."
icon_state = "lean"
list_reagents = list(/datum/reagent/consumable/lean = 20)
random_sprite = FALSE
//////////////////////////drinkingglass and shaker//
//Note by Darem: This code handles the mixing of drinks. New drinks go in three places: In Chemistry-Reagents.dm (for the drink
// itself), in Chemistry-Recipes.dm (for the reaction that changes the components into the drink), and here (for the drinking glass
@@ -13,6 +13,7 @@
/obj/item/reagent_containers/cup/maunamug/Initialize(mapload, vol)
. = ..()
AddElement(/datum/element/cuffable_item)
cell = new /obj/item/stock_parts/power_store/cell(src)
/obj/item/reagent_containers/cup/maunamug/get_cell()
@@ -28,9 +28,9 @@
var/fraction = min(amount_per_transfer_from_this / reagents.total_volume, 1)
if(ismob(target))
user.changeNext_move(CLICK_CD_MELEE)
if(ishuman(target))
var/mob/living/carbon/human/victim = target
var/obj/item/safe_thing = victim.is_eyes_covered()
if(safe_thing)
@@ -45,13 +45,15 @@
to_chat(user, span_notice("You transfer [trans] unit\s of the solution."))
update_appearance()
return ITEM_INTERACT_BLOCKING
else if(isalien(target)) //hiss-hiss has no eyes!
to_chat(target, span_danger("[target] does not seem to have any eyes!"))
return ITEM_INTERACT_BLOCKING
target.visible_message(span_danger("[user] squirts something into [target]'s eyes!"), \
span_userdanger("[user] squirts something into your eyes!"))
target.visible_message(
span_danger("[user] squirts something into [target]'s eyes!"),
span_userdanger("[user] squirts something into your eyes!"),
)
SEND_SIGNAL(target, COMSIG_MOB_REAGENTS_DROPPED_INTO_EYES, user, src, reagents, fraction)
reagents.expose(target, TOUCH, fraction)
var/mob/M = target
@@ -44,6 +44,7 @@
injected += injected_reagent.name
var/contained = english_list(injected)
log_combat(user, affected_mob, "attempted to inject", src, "([contained])")
user.changeNext_move(CLICK_CD_MELEE)
if(!used_up && (ignore_flags || affected_mob.try_inject(user, injection_flags = INJECT_TRY_SHOW_ERROR_MESSAGE))) // Ignore flag should be checked first or there will be an error message.
to_chat(affected_mob, span_warning("You feel a tiny prick!"))
@@ -67,6 +67,11 @@
///You can use this var to tone down the strength of the highlight for less shiny types of plastic.
var/highlight_strenght = 1.0
/obj/item/reagent_containers/cup/jerrycan/Initialize(mapload)
. = ..()
AddElement(/datum/element/cuffable_item)
update_appearance()
/obj/item/reagent_containers/cup/jerrycan/update_overlays()
. = ..()
@@ -91,10 +96,6 @@
if(cap_type)
. += mutable_appearance(icon_file, "[base_icon_state]_cap_[cap_type]")
/obj/item/reagent_containers/cup/jerrycan/Initialize(mapload)
. = ..()
update_appearance()
/obj/item/reagent_containers/cup/jerrycan/opaque
fill_icon_thresholds = null
initial_reagent_flags = parent_type::initial_reagent_flags & ~TRANSPARENT
@@ -44,6 +44,7 @@
to_chat(user, span_warning("[src] is empty!"))
return ITEM_INTERACT_BLOCKING
user.changeNext_move(CLICK_CD_MELEE)
if(interacting_with == user)
interacting_with.visible_message(span_notice("[user] attempts to [apply_method] [src] on [user.p_them()]self."))
if(self_delay)