mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 05:00:55 +01:00
Merge branch 'master' of https://github.com/tgstation/tgstation into pupstream-2025-09-07
# Conflicts: # README.md # code/__DEFINES/admin.dm # code/__DEFINES/melee.dm # code/_globalvars/traits/_traits.dm # code/controllers/subsystem/economy.dm # code/datums/components/crafting/crafting.dm # code/datums/elements/crusher_loot.dm # code/modules/antagonists/pirate/pirate_shuttle_equipment.dm # code/modules/clothing/suits/_suits.dm # code/modules/escape_menu/leave_body.dm # code/modules/jobs/job_types/_job.dm # code/modules/mining/equipment/mineral_scanner.dm # code/modules/mob/living/living.dm # code/modules/plumbing/plumbers/pill_press.dm # tgui/packages/tgui/interfaces/Vending.tsx
This commit is contained in:
@@ -460,7 +460,7 @@ That prevents a few funky behaviors.
|
||||
return
|
||||
//Transferring a carded AI to a core.
|
||||
if(interaction == AI_TRANS_FROM_CARD)
|
||||
AI.control_disabled = FALSE
|
||||
AI.set_control_disabled(FALSE)
|
||||
AI.radio_enabled = TRUE
|
||||
AI.forceMove(loc) // to replace the terminal.
|
||||
to_chat(AI, span_notice("You have been uploaded to a stationary terminal. Remote device connection restored."))
|
||||
|
||||
@@ -70,8 +70,6 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets)
|
||||
var/icon_broken = "sparking"
|
||||
/// Whether a skittish person can dive inside this closet. Disable if opening the closet causes "bad things" to happen or that it leads to a logical inconsistency.
|
||||
var/divable = TRUE
|
||||
/// true whenever someone with the strong pull component (or magnet modsuit module) is dragging this, preventing opening
|
||||
var/strong_grab = FALSE
|
||||
/// secure locker or not, also used if overriding a non-secure locker with a secure door overlay to add fancy lights
|
||||
var/secure = FALSE
|
||||
var/can_install_electronics = TRUE
|
||||
@@ -441,9 +439,8 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets)
|
||||
if(isliving(user))
|
||||
if(!(user.mobility_flags & MOBILITY_USE))
|
||||
return FALSE
|
||||
if(strong_grab)
|
||||
if(user)
|
||||
to_chat(user, span_danger("[pulledby] has an incredibly strong grip on [src], preventing it from opening."))
|
||||
if(pulledby && user && HAS_TRAIT(src, TRAIT_STRONGPULL) && user != pulledby)
|
||||
to_chat(user, span_danger("[pulledby] has an incredibly strong grip on [src], preventing it from opening."))
|
||||
return FALSE
|
||||
var/turf/T = get_turf(src)
|
||||
for(var/mob/living/L in T)
|
||||
|
||||
@@ -58,36 +58,38 @@
|
||||
ignite()
|
||||
return TRUE
|
||||
|
||||
/obj/structure/fireplace/attackby(obj/item/T, mob/user)
|
||||
if(istype(T, /obj/item/stack/sheet/mineral/wood))
|
||||
var/obj/item/stack/sheet/mineral/wood/wood = T
|
||||
/obj/structure/fireplace/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
|
||||
if(istype(tool, /obj/item/stack/sheet/mineral/wood))
|
||||
var/obj/item/stack/sheet/mineral/wood/wood = tool
|
||||
var/space_remaining = MAXIMUM_BURN_TIMER - burn_time_remaining()
|
||||
var/space_for_logs = round(space_remaining / LOG_BURN_TIMER)
|
||||
if(space_for_logs < 1)
|
||||
to_chat(user, span_warning("You can't fit any more of [T] in [src]!"))
|
||||
return
|
||||
to_chat(user, span_warning("You can't fit any more of [tool] in [src]!"))
|
||||
return ITEM_INTERACT_BLOCKING
|
||||
|
||||
var/logs_used = min(space_for_logs, wood.amount)
|
||||
wood.use(logs_used)
|
||||
adjust_fuel_timer(LOG_BURN_TIMER * logs_used)
|
||||
user.visible_message(span_notice("[user] tosses some wood into [src]."), span_notice("You add some fuel to [src]."))
|
||||
return
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
if(istype(T, /obj/item/paper_bin))
|
||||
var/obj/item/paper_bin/paper_bin = T
|
||||
user.visible_message(span_notice("[user] throws [T] into [src]."), span_notice("You add [T] to [src]."))
|
||||
if(istype(tool, /obj/item/paper_bin))
|
||||
var/obj/item/paper_bin/paper_bin = tool
|
||||
user.visible_message(span_notice("[user] throws [tool] into [src]."), span_notice("You add [tool] to [src]."))
|
||||
adjust_fuel_timer(PAPER_BURN_TIMER * paper_bin.total_paper)
|
||||
qdel(paper_bin)
|
||||
return
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
if(istype(T, /obj/item/paper))
|
||||
user.visible_message(span_notice("[user] throws [T] into [src]."), span_notice("You throw [T] into [src]."))
|
||||
if(istype(tool, /obj/item/paper))
|
||||
user.visible_message(span_notice("[user] throws [tool] into [src]."), span_notice("You throw [tool] into [src]."))
|
||||
adjust_fuel_timer(PAPER_BURN_TIMER)
|
||||
qdel(T)
|
||||
return
|
||||
qdel(tool)
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
if(try_light(T,user))
|
||||
return
|
||||
return ..()
|
||||
if(tool.ignition_effect(src, user))
|
||||
try_light(tool, user)
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
return NONE
|
||||
|
||||
/obj/structure/fireplace/update_overlays()
|
||||
. = ..()
|
||||
|
||||
@@ -52,6 +52,12 @@
|
||||
var/matrix/before_flipped_matrix
|
||||
/// Do we place people onto the table rather than slamming them?
|
||||
var/slam_gently = FALSE
|
||||
/// Where icon is our flipped table located in?
|
||||
var/flipped_table_icon = 'icons/obj/flipped_tables.dmi'
|
||||
/// What sound does the table make when unflipped?
|
||||
var/unflip_table_sound = 'sound/items/trayhit/trayhit2.ogg'
|
||||
/// What sound does the table make when we flip the table?
|
||||
var/flipped_table_sound = 'sound/items/trayhit/trayhit1.ogg'
|
||||
|
||||
/obj/structure/table/Initialize(mapload, obj/structure/table_frame/frame_used, obj/item/stack/stack_used)
|
||||
. = ..()
|
||||
@@ -109,7 +115,7 @@
|
||||
|
||||
//proc that adds elements present in normal tables
|
||||
/obj/structure/table/proc/unflip_table()
|
||||
playsound(src, 'sound/items/trayhit/trayhit2.ogg', 100)
|
||||
playsound(src, unflip_table_sound, 100)
|
||||
make_climbable()
|
||||
AddElement(/datum/element/give_turf_traits, turf_traits)
|
||||
AddElement(/datum/element/footstep_override, priority = STEP_SOUND_TABLE_PRIORITY)
|
||||
@@ -129,7 +135,7 @@
|
||||
|
||||
//proc that removes elements present in now-flipped tables
|
||||
/obj/structure/table/proc/flip_table(new_dir = SOUTH)
|
||||
playsound(src, 'sound/items/trayhit/trayhit1.ogg', 100)
|
||||
playsound(src, flipped_table_sound, 100)
|
||||
qdel(GetComponent(/datum/component/climb_walkable))
|
||||
RemoveElement(/datum/element/climbable)
|
||||
RemoveElement(/datum/element/footstep_override, priority = STEP_SOUND_TABLE_PRIORITY)
|
||||
@@ -170,7 +176,7 @@
|
||||
transform_matrix.Turn(270)
|
||||
animate(src, transform = transform_matrix, time = 0)
|
||||
else
|
||||
icon = 'icons/obj/flipped_tables.dmi'
|
||||
icon = flipped_table_icon
|
||||
icon_state = base_icon_state
|
||||
|
||||
update_appearance()
|
||||
@@ -283,14 +289,17 @@
|
||||
if(!can_flip)
|
||||
return
|
||||
|
||||
var/interaction_key = "table_flip_[REF(src)]"
|
||||
if(!is_flipped)
|
||||
user.balloon_alert_to_viewers("flipping table...")
|
||||
if(do_after(user, max_integrity * 0.25))
|
||||
if(!LAZYACCESS(user.do_afters, interaction_key)) // To avoid balloon alert spam
|
||||
user.balloon_alert_to_viewers("flipping table...")
|
||||
if(do_after(user, max_integrity * 0.25, src, interaction_key = interaction_key))
|
||||
flip_table(get_dir(user, src))
|
||||
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
|
||||
|
||||
user.balloon_alert_to_viewers("flipping table upright...")
|
||||
if(do_after(user, max_integrity * 0.25, src))
|
||||
if(!LAZYACCESS(user.do_afters, interaction_key)) // To avoid balloon alert spam
|
||||
user.balloon_alert_to_viewers("flipping table upright...")
|
||||
if(do_after(user, max_integrity * 0.25, src, interaction_key = interaction_key))
|
||||
unflip_table()
|
||||
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
|
||||
|
||||
|
||||
Reference in New Issue
Block a user