Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion _maps/map_files/KiloStation/KiloStation.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -84194,7 +84194,7 @@
dir = 1
},
/obj/effect/turf_decal/bot,
/obj/machinery/oven/range,
/obj/machinery/smartfridge/drying,
/turf/open/floor/iron/dark,
/area/station/service/kitchen)
"wWo" = (
Expand Down
7 changes: 6 additions & 1 deletion _maps/map_files/LimaStation/LimaStation.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -40437,6 +40437,11 @@
dir = 4
},
/area/station/science/xenobiology)
"mYh" = (
/obj/machinery/smartfridge/drying,
/obj/effect/turf_decal/bot,
/turf/open/floor/iron/freezer,
/area/station/service/kitchen/coldroom)
"mYs" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
Expand Down Expand Up @@ -170970,7 +170975,7 @@ jWl
jWl
fsA
aZw
aZw
mYh
nSX
dRd
xGV
Expand Down
5 changes: 3 additions & 2 deletions _maps/map_files/OmegaStation/OmegaStation.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -12387,11 +12387,10 @@
/obj/machinery/light_switch/directional/north{
pixel_x = 5
},
/obj/structure/closet/secure_closet/freezer/meat,
/obj/machinery/smartfridge/drying,
/turf/open/floor/iron/freezer,
/area/station/service/kitchen/coldroom)
"aIS" = (
/obj/effect/turf_decal/bot,
/obj/machinery/computer/order_console/cook,
/obj/item/toy/figure/chef{
pixel_y = 0
Expand Down Expand Up @@ -12827,6 +12826,8 @@
network = list("ss13","service")
},
/obj/machinery/airalarm/directional/south,
/obj/structure/closet/secure_closet/freezer/meat,
/obj/effect/turf_decal/bot,
/turf/open/floor/iron/freezer,
/area/station/service/kitchen/coldroom)
"aKa" = (
Expand Down
10 changes: 6 additions & 4 deletions _maps/map_files/PubbyStation/PubbyStation.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -13877,14 +13877,16 @@
/area/station/maintenance/department/crew_quarters/bar)
"aYR" = (
/obj/item/radio/intercom/directional/north,
/obj/structure/rack,
/obj/item/stack/package_wrap,
/obj/item/hand_labeler,
/turf/open/floor/iron/cafeteria,
/area/station/service/kitchen)
"aYT" = (
/obj/structure/sink/kitchen/directional/south,
/turf/open/floor/iron/cafeteria,
/area/station/service/kitchen)
"aYU" = (
/obj/machinery/processor,
/obj/machinery/firealarm/directional/north,
/obj/machinery/light/directional/north,
/turf/open/floor/iron/cafeteria,
Expand Down Expand Up @@ -15319,9 +15321,7 @@
name = "Kitchen Window Shutters Control";
req_access = list("kitchen")
},
/obj/structure/rack,
/obj/item/stack/package_wrap,
/obj/item/hand_labeler,
/obj/machinery/smartfridge/drying,
/turf/open/floor/iron/cafeteria,
/area/station/service/kitchen)
"bfr" = (
Expand Down Expand Up @@ -35064,6 +35064,8 @@
/area/station/ai_monitored/turret_protected/ai)
"ftU" = (
/obj/structure/cable,
/obj/structure/table,
/obj/machinery/processor,
/turf/open/floor/iron/cafeteria,
/area/station/service/kitchen)
"ftW" = (
Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@

//Brain Damage defines
#define BRAIN_DAMAGE_MILD 50
#define BRAIN_DAMAGE_ASYNC_BLINKING 100
#define BRAIN_DAMAGE_SEVERE 150
#define BRAIN_DAMAGE_DEATH 300

Expand Down
1 change: 1 addition & 0 deletions code/game/objects/items/storage/bags.dm
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,7 @@
atom_storage.insert_preposition = "on"
atom_storage.max_slots = 8
atom_storage.max_total_storage = 16
atom_storage.storage_sound = 'maplestation_modules/sound/items/drop/food.ogg'

/obj/item/storage/bag/tray/attack(mob/living/M, mob/living/user)
. = ..()
Expand Down
1 change: 1 addition & 0 deletions code/game/objects/items/storage/fancy.dm
Original file line number Diff line number Diff line change
Expand Up @@ -544,6 +544,7 @@
/obj/item/storage/fancy/pickles_jar/Initialize(mapload)
. = ..()
atom_storage.set_holdable(/obj/item/food/pickle)
atom_storage.storage_sound = 'maplestation_modules/sound/items/drop/food.ogg'

/obj/item/storage/fancy/pickles_jar/update_icon_state()
. = ..()
Expand Down
6 changes: 5 additions & 1 deletion code/modules/client/verbs/ooc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ GLOBAL_VAR_INIT(normal_ooc_colour, "#002eb8")
set name = "OOC" //Gave this shit a shorter name so you only have to time out "ooc" rather than "ooc message" to use it --NeoFite
set category = "OOC"

if(GLOB.say_disabled) //This is here to try to identify lag problems
if(!SSticker?.HasRoundStarted())
lobby_chat(msg)
return

if(GLOB.say_disabled) // This is here to try to identify lag problems
to_chat(usr, span_danger("Speech is currently admin-disabled."))
return

Expand Down
2 changes: 1 addition & 1 deletion code/modules/clothing/head/costume.dm
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@
inhand_icon_state = null

/obj/item/clothing/head/costume/tmc
name = "Lost M.C. bandana"
name = "thin head bandana"
desc = "A small, red bandana tied thin."
icon_state = "tmc_hat"
inhand_icon_state = null
Expand Down
2 changes: 1 addition & 1 deletion code/modules/clothing/suits/costume.dm
Original file line number Diff line number Diff line change
Expand Up @@ -652,7 +652,7 @@
body_parts_covered = CHEST|GROIN|ARMS

/obj/item/clothing/suit/costume/tmc
name = "\improper Lost M.C. cut"
name = "biker cut"
desc = "Making sure everyone knows you're in the best biker gang this side of Alderney."
icon_state = "tmc_suit"
inhand_icon_state = null
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/dead/new_player/new_player.dm
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,7 @@
/client/proc/lobby_chat(message)
VALIDATE_CLIENT(src)

if(GLOB.say_disabled) //This is here to try to identify lag problems
if(GLOB.say_disabled)
to_chat(src, span_danger("Speech is currently admin-disabled."))
return
if(is_banned_from(ckey, "OOC"))
Expand Down
9 changes: 5 additions & 4 deletions code/modules/mob/living/carbon/human/emote.dm
Original file line number Diff line number Diff line change
Expand Up @@ -241,8 +241,8 @@

/datum/emote/living/carbon/human/blink/run_emote(mob/living/carbon/human/user, params, type_override, intentional)
. = ..()
// Set to update_body until update_body_parts_head_only is fixed
user.update_body() // Refreshing instantly makes the user blink
var/obj/item/organ/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
eyes.blink()

/datum/emote/living/carbon/human/blink_r
key = "blink_r"
Expand All @@ -259,9 +259,10 @@

/datum/emote/living/carbon/human/blink_r/run_emote(mob/user, params, type_override, intentional)
. = ..()
// Set to update_body until update_body_parts_head_only is fixed
var/obj/item/organ/eyes/eyes = user.get_organ_slot(ORGAN_SLOT_EYES)
for (var/i in 1 to 3)
addtimer(CALLBACK(user, TYPE_PROC_REF(/mob, update_body)), i * 0.3 SECONDS)
addtimer(CALLBACK(eyes, TYPE_PROC_REF(/obj/item/organ/eyes, blink), 0.1 SECONDS, FALSE), i * 0.2 SECONDS)
eyes.animate_eyelids(user)

/datum/emote/living/carbon/human/close_eyes
key = "close"
Expand Down
8 changes: 4 additions & 4 deletions code/modules/surgery/organs/external/tails.dm
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@
/obj/item/organ/tail/proc/start_wag(mob/living/carbon/organ_owner, stop_after = INFINITY)
if(wag_flags & WAG_WAGGING || !(wag_flags & WAG_ABLE)) // we are already wagging
return FALSE
if(organ_owner.stat == DEAD || organ_owner != owner) // no wagging when owner is dead or tail has been disembodied
if(organ_owner.stat >= SOFT_CRIT || HAS_TRAIT(organ_owner, TRAIT_KNOCKEDOUT) || organ_owner != owner) // no wagging when owner is dead or tail has been disembodied
return FALSE

if(stop_after != INFINITY)
Expand All @@ -109,12 +109,12 @@
if(tail_spines_overlay) //if there are spines, they should wag with the tail
tail_spines_overlay.wagging = TRUE
organ_owner.update_body_parts()
RegisterSignal(organ_owner, COMSIG_MOB_STATCHANGE, PROC_REF(owner_stat_change))
RegisterSignals(organ_owner, list(COMSIG_MOB_STATCHANGE, SIGNAL_ADDTRAIT(TRAIT_KNOCKEDOUT)), PROC_REF(owner_stat_change))
return TRUE

/obj/item/organ/tail/proc/owner_stat_change(mob/living/carbon/organ_owner) // Resisting the urge to replace owner with daddy
SIGNAL_HANDLER
if(organ_owner.stat >= SOFT_CRIT)
if(organ_owner.stat >= SOFT_CRIT || HAS_TRAIT(organ_owner, TRAIT_KNOCKEDOUT))
stop_wag(organ_owner)

///We need some special behaviour for accessories, wrapped here so we can easily add more interactions later
Expand All @@ -136,7 +136,7 @@
return succeeded

organ_owner.update_body_parts()
UnregisterSignal(organ_owner, COMSIG_MOB_STATCHANGE)
UnregisterSignal(organ_owner, list(COMSIG_MOB_STATCHANGE, SIGNAL_ADDTRAIT(TRAIT_KNOCKEDOUT)))
return succeeded

/obj/item/organ/tail/proc/get_butt_sprite()
Expand Down
76 changes: 58 additions & 18 deletions code/modules/surgery/organs/internal/eyes/_eyes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -327,15 +327,7 @@
eyelid_right.render_target = "*[REF(parent)]_eyelid_right"
parent.vis_contents += eyelid_left
parent.vis_contents += eyelid_right
var/sync_blinking = synchronized_blinking && (parent.get_organ_loss(ORGAN_SLOT_BRAIN) < ASYNC_BLINKING_BRAIN_DAMAGE)
// Randomize order for unsynched animations
if (sync_blinking || prob(50))
var/list/anim_times = animate_eyelid(eyelid_left, parent, sync_blinking)
animate_eyelid(eyelid_right, parent, sync_blinking, anim_times)
else
var/list/anim_times = animate_eyelid(eyelid_right, parent, sync_blinking)
animate_eyelid(eyelid_left, parent, sync_blinking, anim_times)

animate_eyelids(parent)
var/mutable_appearance/left_eyelid_overlay = mutable_appearance(layer = -BODY_LAYER, offset_spokesman = parent)
var/mutable_appearance/right_eyelid_overlay = mutable_appearance(layer = -BODY_LAYER, offset_spokesman = parent)
left_eyelid_overlay.render_source = "*[REF(parent)]_eyelid_left"
Expand All @@ -345,25 +337,73 @@
/// Animates one eyelid at a time, thanks BYOND and thanks animation chains
/obj/item/organ/eyes/proc/animate_eyelid(obj/effect/abstract/eyelid_effect/eyelid, mob/living/carbon/human/parent, sync_blinking = TRUE, list/anim_times = null)
. = list()
if(isnull(eyelid)) // Can't blink if we don't have an eyelid
return
var/prevent_loops = HAS_TRAIT(parent, TRAIT_PREVENT_BLINK_LOOPS)
animate(eyelid, alpha = 0, time = 0, loop = (prevent_loops ? 0 : -1))
for (var/i in 1 to (prevent_loops ? 1 : BLINK_LOOPS))
var/wait_time = rand(BASE_BLINKING_DELAY - RAND_BLINKING_DELAY, BASE_BLINKING_DELAY + RAND_BLINKING_DELAY)

var/wait_time = rand(BASE_BLINKING_DELAY - RAND_BLINKING_DELAY, BASE_BLINKING_DELAY + RAND_BLINKING_DELAY)
if (anim_times)
if (sync_blinking)
wait_time = anim_times[1]
else
wait_time = rand(max(BASE_BLINKING_DELAY - RAND_BLINKING_DELAY, anim_times[1] - RAND_BLINKING_DELAY), anim_times[1])

animate(time = wait_time)
. += wait_time

var/cycles = (prevent_loops ? 1 : BLINK_LOOPS)
for (var/i in 1 to cycles)
if (anim_times)
if (sync_blinking)
wait_time = anim_times[1]
anim_times.Cut(1, 2)
wait_time = anim_times[i + 1]
else
wait_time = rand(max(BASE_BLINKING_DELAY - RAND_BLINKING_DELAY, anim_times[1] - RAND_BLINKING_DELAY), anim_times[1])
wait_time = rand(max(BASE_BLINKING_DELAY - RAND_BLINKING_DELAY, anim_times[i + 1] - RAND_BLINKING_DELAY), anim_times[i + 1])
else
wait_time = rand(BASE_BLINKING_DELAY - RAND_BLINKING_DELAY, BASE_BLINKING_DELAY + RAND_BLINKING_DELAY)
. += wait_time
if (anim_times && !sync_blinking)
// Make sure that we're somewhat in sync with the other eye
animate(time = anim_times[1] - wait_time)
anim_times.Cut(1, 2)
var/offset_time = anim_times[i + 1] - wait_time
if(offset_time) // For some reason having time == 0 in this case breaks animate
animate(time = offset_time)
animate(alpha = 255, time = 0)
animate(time = BLINK_DURATION)
animate(alpha = 0, time = 0)
animate(time = wait_time)
if (i != cycles)
animate(alpha = 0, time = 0)
animate(time = wait_time)

/obj/item/organ/eyes/proc/blink(duration = BLINK_DURATION, restart_animation = TRUE)
if(!blink_animation)
return
var/left_delayed = prob(50)
// Storing blink delay so mistimed blinks of lizards don't get cut short
var/sync_blinking = synchronized_blinking && (owner.get_organ_loss(ORGAN_SLOT_BRAIN) < BRAIN_DAMAGE_ASYNC_BLINKING)
var/blink_delay = sync_blinking ? 0 : rand(0, RAND_BLINKING_DELAY)
animate(eyelid_left, alpha = 0, time = 0)
if (!sync_blinking && left_delayed)
animate(time = blink_delay)
animate(alpha = 255, time = 0)
animate(time = duration)
animate(alpha = 0, time = 0)
animate(eyelid_right, alpha = 0, time = 0)
if (!sync_blinking && !left_delayed)
animate(time = blink_delay)
animate(alpha = 255, time = 0)
animate(time = duration)
animate(alpha = 0, time = 0)
if (restart_animation)
addtimer(CALLBACK(src, PROC_REF(animate_eyelids), owner), blink_delay + duration)

/obj/item/organ/eyes/proc/animate_eyelids(mob/living/carbon/human/parent)
var/sync_blinking = synchronized_blinking && (parent.get_organ_loss(ORGAN_SLOT_BRAIN) < BRAIN_DAMAGE_ASYNC_BLINKING)
// Randomize order for unsynched animations
if (sync_blinking || prob(50))
var/list/anim_times = animate_eyelid(eyelid_left, parent, sync_blinking)
animate_eyelid(eyelid_right, parent, sync_blinking, anim_times)
else
var/list/anim_times = animate_eyelid(eyelid_right, parent, sync_blinking)
animate_eyelid(eyelid_left, parent, sync_blinking, anim_times)

/obj/effect/abstract/eyelid_effect
name = "eyelid"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
/obj/item/grenade,
/obj/item/hand_tele,
/obj/item/implanter,
/obj/item/inhaler,
/obj/item/instrument/harmonica,
/obj/item/instrument/piano_synth/headphones,
/obj/item/knife,
Expand Down
Loading