Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pubby Update #548

Merged
merged 85 commits into from
Sep 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
8649f68
Fixes Ceremonial Rifle crates. (#29602)
Moostard Sep 2, 2024
1ff590a
Automatic changelog for PR #29602 [ci skip]
SkyratBot Sep 2, 2024
4de12e7
Automatic changelog compile [ci skip]
actions-user Sep 3, 2024
5727992
fixes jean skirts not having body parts covered defined (#29598)
KathrinBailey Sep 3, 2024
137d961
Automatic changelog for PR #29598 [ci skip]
SkyratBot Sep 3, 2024
3163066
[MIRROR] Plexagon Crew Manifest is accessible and free to everyone. (…
SkyratBot Sep 3, 2024
ac3f8a8
Automatic changelog for PR #29592 [ci skip]
SkyratBot Sep 3, 2024
cc0e090
Automatic changelog compile [ci skip]
actions-user Sep 4, 2024
bddd4d7
Fixes teshari random wintercoat overlay appeareing near your ears, al…
Erol509 Sep 4, 2024
359ba64
Automatic changelog for PR #29599 [ci skip]
SkyratBot Sep 4, 2024
15a2df2
Automatic changelog compile [ci skip]
actions-user Sep 5, 2024
4157ca5
[MIRROR] Fixes tram crossing signal malfunctioning [NO GBP] (#29620)
SkyratBot Sep 5, 2024
9d1c3ed
[MIRROR] Bumps Icon Cutter to v4.0.0 (#29630)
SkyratBot Sep 5, 2024
22736a3
[MIRROR] Voidwalker 'Unsettle' doesn't immediately go on cooldown if …
SkyratBot Sep 5, 2024
fa1632e
[MIRROR] Cardborg costume no longer gets its appearance deleted when …
SkyratBot Sep 5, 2024
84f16aa
[MIRROR] Let ghosts use the jump emote (#29636)
SkyratBot Sep 5, 2024
2ba2557
[MIRROR] Rum can be synthetized again (#29634)
SkyratBot Sep 5, 2024
7602894
[MIRROR] Shield "las" typos fixed (#29628)
SkyratBot Sep 5, 2024
bbd4e81
Fix vox breathmask unable to eat through after adjusting (#29635)
thegrb93 Sep 5, 2024
aac4419
[MIRROR] Fixes ballistic weapons not making any firing sound (#29621)
SkyratBot Sep 5, 2024
cc85efa
Automatic changelog for PR #29629 [ci skip]
SkyratBot Sep 5, 2024
02566f0
[MIRROR] Fixes anomaly suicides and a grammar mishap in the suicide m…
SkyratBot Sep 5, 2024
5dc99e7
[MIRROR] Fix screwing radio headset in combat mode don't do anything …
SkyratBot Sep 5, 2024
eac1591
Automatic changelog for PR #29627 [ci skip]
SkyratBot Sep 5, 2024
ce944bd
[MIRROR] Pride mirror yeets you into space once again. Mirrors also n…
SkyratBot Sep 5, 2024
e67b0eb
[MIRROR] Fix spy rewards runtiming (#29615)
SkyratBot Sep 5, 2024
854a967
[MIRROR] Heretic sacrifice theme (#29608)
SkyratBot Sep 5, 2024
7551cb6
Automatic changelog for PR #29636 [ci skip]
SkyratBot Sep 5, 2024
ec08527
[MIRROR] All jaunts now kick you out if you are KO'd mid-jaunt (#29607)
SkyratBot Sep 5, 2024
1a7d67f
Automatic changelog for PR #29634 [ci skip]
SkyratBot Sep 5, 2024
3e9e12f
[MIRROR] Makes big manipulator hands move smoothly with the base when…
SkyratBot Sep 5, 2024
1b601d4
Automatic changelog for PR #29628 [ci skip]
SkyratBot Sep 5, 2024
0fa80e6
Automatic changelog for PR #29621 [ci skip]
SkyratBot Sep 5, 2024
eeeb108
Automatic changelog for PR #29631 [ci skip]
SkyratBot Sep 5, 2024
dcd4eec
Automatic changelog for PR #29635 [ci skip]
SkyratBot Sep 5, 2024
bc76792
Automatic changelog for PR #29619 [ci skip]
SkyratBot Sep 5, 2024
3ded346
Automatic changelog for PR #29617 [ci skip]
SkyratBot Sep 5, 2024
5d67c4e
Automatic changelog for PR #29615 [ci skip]
SkyratBot Sep 5, 2024
bda5c72
Automatic changelog for PR #29608 [ci skip]
SkyratBot Sep 5, 2024
ca12e2d
Automatic changelog for PR #29607 [ci skip]
SkyratBot Sep 5, 2024
03c9cac
Automatic changelog for PR #29622 [ci skip]
SkyratBot Sep 5, 2024
c2f4eb4
[MIRROR] Smartfridge no longer pops open a separate tgui input to ven…
SkyratBot Sep 5, 2024
4686196
[MIRROR] Prevents changelings from spawning bloody spiders inside of …
SkyratBot Sep 5, 2024
b6825ff
Automatic changelog for PR #29633 [ci skip]
SkyratBot Sep 5, 2024
5580bea
[MIRROR] Fixes buckling to beds in some situations making you use the…
SkyratBot Sep 5, 2024
4ec0f41
Automatic changelog for PR #29640 [ci skip]
SkyratBot Sep 5, 2024
1694992
[MIRROR] Fixes an oversight with jump boots (#29637)
SkyratBot Sep 5, 2024
c916081
Automatic changelog for PR #29624 [ci skip]
SkyratBot Sep 5, 2024
de9cbcc
Automatic changelog for PR #29637 [ci skip]
SkyratBot Sep 5, 2024
69aab8c
Automatic changelog compile [ci skip]
actions-user Sep 6, 2024
e2c52c1
[NO GBP] Fixes bonsetter borg issue and adds medical combitools. (#29…
xXPawnStarrXx Sep 6, 2024
64ad820
[MIRROR] Fixes Infinite Codicies (#29647)
SkyratBot Sep 6, 2024
52ab5aa
Automatic changelog for PR #29657 [ci skip]
SkyratBot Sep 6, 2024
619519c
Automatic changelog for PR #29647 [ci skip]
SkyratBot Sep 6, 2024
720e8f9
[MIRROR] Embed updating now actually properly adds the embed element …
SkyratBot Sep 6, 2024
ad3db6d
[MIRROR] When silicons use their radio they don't whisper (#29626)
SkyratBot Sep 6, 2024
d63fb38
[MIRROR] Fixes the die of fate deleting all your organs when rolling …
SkyratBot Sep 6, 2024
c84fc82
[MIRROR] Heretic Influences use alt appearances (so ghosts can now se…
SkyratBot Sep 6, 2024
07e3a0d
[MIRROR] Makes it so that every shields can be shieldbashed, not just…
SkyratBot Sep 6, 2024
ac5c09e
[MIRROR] Reformats rebar crossbow description, removes nonexistent mi…
SkyratBot Sep 6, 2024
46598a5
[MIRROR] (prev grey bull only) Soda and bee cans fit on tool belts - …
SkyratBot Sep 6, 2024
468fad7
[MIRROR] Adds new sprites for hellfire lasers (#29618)
SkyratBot Sep 6, 2024
6d04b0d
[MIRROR] Gravity generator sound overhaul (#29606)
SkyratBot Sep 6, 2024
c9d8751
Automatic changelog for PR #29652 [ci skip]
SkyratBot Sep 6, 2024
40a4d53
Automatic changelog for PR #29626 [ci skip]
SkyratBot Sep 6, 2024
945cc92
Automatic changelog for PR #29612 [ci skip]
SkyratBot Sep 6, 2024
5c74316
Automatic changelog for PR #29646 [ci skip]
SkyratBot Sep 6, 2024
09e06a8
Automatic changelog for PR #29653 [ci skip]
SkyratBot Sep 6, 2024
6beb41c
Automatic changelog for PR #29651 [ci skip]
SkyratBot Sep 6, 2024
51286c5
Automatic changelog for PR #29639 [ci skip]
SkyratBot Sep 6, 2024
91a3575
Automatic changelog for PR #29618 [ci skip]
SkyratBot Sep 6, 2024
8ab1e68
Automatic changelog for PR #29606 [ci skip]
SkyratBot Sep 6, 2024
87f5956
Automatic changelog compile [ci skip]
actions-user Sep 7, 2024
5cc91a9
[MIRROR] Fix in game pr announce. (#29668)
SkyratBot Sep 7, 2024
1234250
[MIRROR] Fix the task bar icon for the client (#29665)
SkyratBot Sep 7, 2024
344dc0d
[MIRROR] Removes a signal and a list from the movetype handler elemen…
SkyratBot Sep 7, 2024
b538e20
Automatic changelog for PR #29665 [ci skip]
SkyratBot Sep 7, 2024
4404180
Extended PDA cells (#29664)
lessthnthree Sep 7, 2024
410024a
Automatic changelog for PR #29664 [ci skip]
SkyratBot Sep 7, 2024
2153f6e
Automatic changelog compile [ci skip]
actions-user Sep 8, 2024
cb3631b
Add files via upload
Werenimal Sep 10, 2024
665e754
Merge branch 'SkyRat-Master'
ORCACommander Sep 10, 2024
1265497
fixes the fix
ORCACommander Sep 10, 2024
ed93ea3
linters
ORCACommander Sep 10, 2024
263256d
final ci fix
ORCACommander Sep 10, 2024
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
646 changes: 348 additions & 298 deletions _maps/map_files/PubbyStation/PubbyStation.dmm

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions code/__DEFINES/dcs/signals/signals_mind.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,6 @@

/// Called on the mind when an antagonist is being removed, after the antagonist list has updated (datum/antagonist/antagonist)
#define COMSIG_ANTAGONIST_REMOVED "antagonist_removed"

/// Called on the mob when losing an antagonist datum (datum/antagonist/antagonist)
#define COMSIG_MOB_ANTAGONIST_REMOVED "mob_antagonist_removed"
3 changes: 0 additions & 3 deletions code/__DEFINES/dcs/signals/signals_movetype.dm
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
// /datum/element/movetype_handler signals
/// Called when the floating anim has to be temporarily stopped and restarted later: (timer)
#define COMSIG_PAUSE_FLOATING_ANIM "pause_floating_anim"
/// From base of datum/element/movetype_handler/on_movement_type_trait_gain: (flag, old_movement_type)
#define COMSIG_MOVETYPE_FLAG_ENABLED "movetype_flag_enabled"
/// From base of datum/element/movetype_handler/on_movement_type_trait_loss: (flag, old_movement_type)
Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -913,6 +913,8 @@ GLOBAL_LIST_INIT(layers_to_offset, list(

/// Possible value of [/atom/movable/buckle_lying]. If set to a different (positive-or-zero) value than this, the buckling thing will force a lying angle on the buckled.
#define NO_BUCKLE_LYING -1
/// Possible value of [/atom/movable/buckle_dir]. If set to a different (positive-or-zero) value than this, the buckling thing will force a dir on the buckled.
#define BUCKLE_MATCH_DIR -1

// Flags for fully_heal().

Expand Down
3 changes: 3 additions & 0 deletions code/__DEFINES/traits/sources.dm
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,9 @@
/// Trait given by a fulton extraction pack
#define FULTON_PACK_TRAIT "fulton-pack"

/// Trait from mob/living/update_transform()
#define UPDATE_TRANSFORM_TRAIT "update_transform"

/// Trait granted by the berserker hood.
#define BERSERK_TRAIT "berserk_trait"
/// Trait granted by [/obj/item/rod_of_asclepius]
Expand Down
3 changes: 2 additions & 1 deletion code/datums/components/face_decal.dm
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,8 @@
GLOBAL_LIST_INIT(creamable, typecacheof(list(
/mob/living/carbon/human,
/mob/living/basic/pet/dog/corgi,
/mob/living/silicon/ai)))
/mob/living/silicon/ai,
)))

/datum/component/face_decal/creampie/Initialize()
. = ..()
Expand Down
56 changes: 56 additions & 0 deletions code/datums/elements/block_turf_fingerprints.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/**
* ## block_turf_fingerprints
*
* Attach to a movable, prevents mobs from leaving fingerprints on the turf below it
*/
/datum/element/block_turf_fingerprints
element_flags = ELEMENT_DETACH_ON_HOST_DESTROY

/datum/element/block_turf_fingerprints/Attach(datum/target)
. = ..()
if(!ismovable(target))
return ELEMENT_INCOMPATIBLE

var/atom/movable/target_movable = target
if(isturf(target_movable.loc))
apply_to_turf(target_movable.loc)

RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(move_turf))

/datum/element/block_turf_fingerprints/Detach(atom/movable/target)
. = ..()
if(isturf(target.loc))
remove_from_turf(target.loc)

UnregisterSignal(target, COMSIG_MOVABLE_MOVED)

/datum/element/block_turf_fingerprints/proc/apply_to_turf(turf/the_turf)
// It's possible two things with this element could be on the same turf, so let's avoid double-applying
if(the_turf.interaction_flags_atom & INTERACT_ATOM_NO_FINGERPRINT_ATTACK_HAND)
// But what if the turf has this flag by default? We still need to override register a signal.
// Otherwise we may run into a very niche bug:
// - A turf as this flag by default
// - A movable with this element is placed on the turf
// - It does not gain the flag nor register a signal
// - The turf changes, and the new turf does not gain the flag
if(initial(the_turf.interaction_flags_atom) & INTERACT_ATOM_NO_FINGERPRINT_ATTACK_HAND)
RegisterSignal(the_turf, COMSIG_TURF_CHANGE, PROC_REF(replace_our_turf), override = TRUE)
return

the_turf.interaction_flags_atom |= INTERACT_ATOM_NO_FINGERPRINT_ATTACK_HAND
RegisterSignal(the_turf, COMSIG_TURF_CHANGE, PROC_REF(replace_our_turf))

/datum/element/block_turf_fingerprints/proc/remove_from_turf(turf/the_turf)
the_turf.interaction_flags_atom &= ~INTERACT_ATOM_NO_FINGERPRINT_ATTACK_HAND
UnregisterSignal(the_turf, COMSIG_TURF_CHANGE)

/datum/element/block_turf_fingerprints/proc/move_turf(atom/movable/source, atom/old_loc)
SIGNAL_HANDLER
if(isturf(old_loc))
remove_from_turf(old_loc)
if(isturf(source.loc))
apply_to_turf(source.loc)

/datum/element/block_turf_fingerprints/proc/replace_our_turf(datum/source, path, new_baseturfs, flags, post_change_callbacks)
SIGNAL_HANDLER
post_change_callbacks += CALLBACK(src, PROC_REF(apply_to_turf))
27 changes: 2 additions & 25 deletions code/datums/elements/movetype_handler.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
element_flags = ELEMENT_DETACH_ON_HOST_DESTROY

var/list/attached_atoms = list()
var/list/paused_floating_anim_atoms = list()

/datum/element/movetype_handler/Attach(datum/target)
. = ..()
Expand All @@ -22,7 +21,6 @@
RegisterSignals(movable_target, GLOB.movement_type_removetrait_signals, PROC_REF(on_movement_type_trait_loss))
RegisterSignal(movable_target, SIGNAL_ADDTRAIT(TRAIT_NO_FLOATING_ANIM), PROC_REF(on_no_floating_anim_trait_gain))
RegisterSignal(movable_target, SIGNAL_REMOVETRAIT(TRAIT_NO_FLOATING_ANIM), PROC_REF(on_no_floating_anim_trait_loss))
RegisterSignal(movable_target, COMSIG_PAUSE_FLOATING_ANIM, PROC_REF(pause_floating_anim))
attached_atoms[movable_target] = TRUE

if(movable_target.movement_type & (FLOATING|FLYING) && !HAS_TRAIT(movable_target, TRAIT_NO_FLOATING_ANIM))
Expand All @@ -32,14 +30,12 @@
var/list/signals_to_remove = list(
SIGNAL_ADDTRAIT(TRAIT_NO_FLOATING_ANIM),
SIGNAL_REMOVETRAIT(TRAIT_NO_FLOATING_ANIM),
COMSIG_PAUSE_FLOATING_ANIM
)
signals_to_remove += GLOB.movement_type_addtrait_signals
signals_to_remove += GLOB.movement_type_removetrait_signals
UnregisterSignal(source, signals_to_remove)

attached_atoms -= source
paused_floating_anim_atoms -= source
STOP_FLOATING_ANIM(source)
return ..()

Expand All @@ -51,7 +47,7 @@
return
var/old_state = source.movement_type
source.movement_type |= flag
if(!(old_state & (FLOATING|FLYING)) && (source.movement_type & (FLOATING|FLYING)) && !paused_floating_anim_atoms[source] && !HAS_TRAIT(source, TRAIT_NO_FLOATING_ANIM))
if(!(old_state & (FLOATING|FLYING)) && (source.movement_type & (FLOATING|FLYING)) && !HAS_TRAIT(source, TRAIT_NO_FLOATING_ANIM))
DO_FLOATING_ANIM(source)
SEND_SIGNAL(source, COMSIG_MOVETYPE_FLAG_ENABLED, flag, old_state)

Expand All @@ -78,24 +74,5 @@
/// Called when the TRAIT_NO_FLOATING_ANIM trait is removed from the mob. Restarts the bobbing animation.
/datum/element/movetype_handler/proc/on_no_floating_anim_trait_loss(atom/movable/source, trait)
SIGNAL_HANDLER
if(source.movement_type & (FLOATING|FLYING) && !paused_floating_anim_atoms[source])
if(source.movement_type & (FLOATING|FLYING))
DO_FLOATING_ANIM(source)

///Pauses the floating animation for the duration of the timer... plus [tickrate - (world.time + timer) % tickrate] to be precise.
/datum/element/movetype_handler/proc/pause_floating_anim(atom/movable/source, timer)
SIGNAL_HANDLER
if(paused_floating_anim_atoms[source] < world.time + timer)
STOP_FLOATING_ANIM(source)
if(!length(paused_floating_anim_atoms))
START_PROCESSING(SSdcs, src) //1 second tickrate.
paused_floating_anim_atoms[source] = world.time + timer

/datum/element/movetype_handler/process()
for(var/_paused in paused_floating_anim_atoms)
var/atom/movable/paused = _paused
if(paused_floating_anim_atoms[paused] < world.time)
if(paused.movement_type & (FLOATING|FLYING) && !HAS_TRAIT(paused, TRAIT_NO_FLOATING_ANIM))
DO_FLOATING_ANIM(paused)
paused_floating_anim_atoms -= paused
if(!length(paused_floating_anim_atoms))
STOP_PROCESSING(SSdcs, src)
15 changes: 11 additions & 4 deletions code/datums/looping_sounds/machinery_sounds.dm
Original file line number Diff line number Diff line change
Expand Up @@ -126,10 +126,17 @@
falloff_distance = 1 //Instant falloff after initial tile

/datum/looping_sound/gravgen
mid_sounds = list('sound/machines/gravgen/gravgen_mid1.ogg' = 1, 'sound/machines/gravgen/gravgen_mid2.ogg' = 1, 'sound/machines/gravgen/gravgen_mid3.ogg' = 1, 'sound/machines/gravgen/gravgen_mid4.ogg' = 1)
mid_length = 1.8 SECONDS
extra_range = 10
volume = 20
start_sound = 'sound/machines/gravgen/grav_gen_start.ogg'
start_length = 1 SECONDS
mid_sounds = list(
'sound/machines/gravgen/grav_gen_mid1.ogg' = 12,
'sound/machines/gravgen/grav_gen_mid2.ogg' = 1,
)
mid_length = 1.1 SECONDS
end_sound = 'sound/machines/gravgen/grav_gen_end.ogg'
extra_range = 8
vary = TRUE
volume = 70
falloff_distance = 5
falloff_exponent = 20

Expand Down
69 changes: 55 additions & 14 deletions code/game/atom/alternate_appearance.dm
Original file line number Diff line number Diff line change
Expand Up @@ -35,20 +35,51 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances)
GLOB.active_alternate_appearances += src

for(var/mob in GLOB.player_list)
if(mobShouldSee(mob))
show_to(mob)
apply_to_new_mob(mob)

/datum/atom_hud/alternate_appearance/Destroy()
GLOB.active_alternate_appearances -= src
return ..()

/datum/atom_hud/alternate_appearance/proc/onNewMob(mob/M)
if(mobShouldSee(M))
show_to(M)
/// Wrapper for applying this alt hud to the passed mob (if they should see it)
/datum/atom_hud/alternate_appearance/proc/apply_to_new_mob(mob/applying_to)
if(mobShouldSee(applying_to))
if(!hud_users_all_z_levels[applying_to])
show_to(applying_to)
return TRUE
return FALSE

/// Checks if the passed mob should be seeing this hud
/datum/atom_hud/alternate_appearance/proc/mobShouldSee(mob/M)
return FALSE

/datum/atom_hud/alternate_appearance/show_to(mob/new_viewer)
. = ..()
if(!new_viewer)
return
track_mob(new_viewer)

/// Registers some signals to track the mob's state to determine if they should be seeing the hud still
/datum/atom_hud/alternate_appearance/proc/track_mob(mob/new_viewer)
return

/datum/atom_hud/alternate_appearance/hide_from(mob/former_viewer, absolute)
. = ..()
if(!former_viewer || hud_atoms_all_z_levels[former_viewer] >= 1)
return
untrack_mob(former_viewer)

/// Unregisters the signals that were tracking the mob's state
/datum/atom_hud/alternate_appearance/proc/untrack_mob(mob/former_viewer)
return

/datum/atom_hud/alternate_appearance/proc/check_hud(mob/source)
SIGNAL_HANDLER
// Attempt to re-apply the hud entirely
if(!apply_to_new_mob(source))
// If that failed, probably shouldn't be seeing it at all, so nuke it
hide_from(source, absolute = TRUE)

/datum/atom_hud/alternate_appearance/add_atom_to_hud(atom/A, image/I)
. = ..()
if(.)
Expand Down Expand Up @@ -99,6 +130,22 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances)
if(ghost_appearance)
QDEL_NULL(ghost_appearance)

/datum/atom_hud/alternate_appearance/basic/track_mob(mob/new_viewer)
RegisterSignals(new_viewer, list(
COMSIG_MOB_ANTAGONIST_REMOVED,
COMSIG_MOB_GHOSTIZED,
COMSIG_MOB_MIND_TRANSFERRED_INTO,
COMSIG_MOB_MIND_TRANSFERRED_OUT_OF,
), PROC_REF(check_hud), override = TRUE)

/datum/atom_hud/alternate_appearance/basic/untrack_mob(mob/former_viewer)
UnregisterSignal(former_viewer, list(
COMSIG_MOB_ANTAGONIST_REMOVED,
COMSIG_MOB_GHOSTIZED,
COMSIG_MOB_MIND_TRANSFERRED_INTO,
COMSIG_MOB_MIND_TRANSFERRED_OUT_OF,
))

/datum/atom_hud/alternate_appearance/basic/add_atom_to_hud(atom/A)
LAZYINITLIST(A.hud_list)
A.hud_list[appearance_key] = image
Expand Down Expand Up @@ -136,16 +183,10 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances)
/datum/atom_hud/alternate_appearance/basic/noncult

/datum/atom_hud/alternate_appearance/basic/noncult/mobShouldSee(mob/M)
if(!IS_CULTIST(M))
return TRUE
return FALSE

/datum/atom_hud/alternate_appearance/basic/cult
return !IS_CULTIST(M)

/datum/atom_hud/alternate_appearance/basic/cult/mobShouldSee(mob/M)
if(IS_CULTIST(M))
return TRUE
return FALSE
/datum/atom_hud/alternate_appearance/basic/has_antagonist/cult
antag_datum_type = /datum/antagonist/cult

/datum/atom_hud/alternate_appearance/basic/blessed_aware

Expand Down
4 changes: 2 additions & 2 deletions code/game/machinery/big_manipulator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@
return
if(!manipulator_hand)
create_manipulator_hand()
manipulator_hand.forceMove(get_turf(src))

/obj/machinery/big_manipulator/wrench_act(mob/living/user, obj/item/tool)
. = ..()
Expand Down Expand Up @@ -103,8 +102,9 @@

/// Creat manipulator hand effect on manipulator core.
/obj/machinery/big_manipulator/proc/create_manipulator_hand()
manipulator_hand = new/obj/effect/big_manipulator_hand(get_turf(src))
manipulator_hand = new/obj/effect/big_manipulator_hand(src)
manipulator_hand.dir = take_here
vis_contents += manipulator_hand

/// Check servo tier and change manipulator speed, power_use and colour.
/obj/machinery/big_manipulator/proc/manipulator_lvl()
Expand Down
9 changes: 9 additions & 0 deletions code/game/machinery/stasis.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
obj_flags = BLOCKS_CONSTRUCTION
can_buckle = TRUE
buckle_lying = 90
buckle_dir = SOUTH
circuit = /obj/item/circuitboard/machine/stasis
fair_market_price = 10
payment_department = ACCOUNT_MED
Expand All @@ -22,6 +23,7 @@
/obj/machinery/stasis/Initialize(mapload)
. = ..()
AddElement(/datum/element/elevation, pixel_shift = 6)
update_buckle_vars(dir)

/obj/machinery/stasis/examine(mob/user)
. = ..()
Expand Down Expand Up @@ -57,6 +59,13 @@
thaw_them(L)
return ..()

/obj/machinery/stasis/setDir(newdir)
. = ..()
update_buckle_vars(newdir)

/obj/machinery/stasis/proc/update_buckle_vars(newdir)
buckle_lying = newdir & NORTHEAST ? 270 : 90

/obj/machinery/stasis/proc/stasis_running()
return stasis_enabled && is_operational

Expand Down
7 changes: 6 additions & 1 deletion code/game/objects/buckling.dm
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
var/can_buckle = FALSE
/// Bed-like behaviour, forces mob.lying = buckle_lying if not set to [NO_BUCKLE_LYING].
var/buckle_lying = NO_BUCKLE_LYING
/// Bed-like behaviour, sets mob dir to buckle_dir if not set to [BUCKLE_MATCH_DIR]. If set to [BUCKLE_MATCH_DIR], makes mob dir match ours.
var/buckle_dir = BUCKLE_MATCH_DIR
/// Require people to be handcuffed before being able to buckle. eg: pipes
var/buckle_requires_restraints = FALSE
/// The mobs currently buckled to this atom
Expand Down Expand Up @@ -106,7 +108,10 @@
M.set_glide_size(glide_size)

M.Move(loc)
M.setDir(dir)
if(buckle_dir == BUCKLE_MATCH_DIR)
M.setDir(dir)
else
M.setDir(buckle_dir)

//Something has unbuckled us in reaction to the above movement
if(!M.buckled)
Expand Down
8 changes: 8 additions & 0 deletions code/game/objects/effects/phased_mob.dm
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
jaunter.forceMove(src)
if(ismob(jaunter))
var/mob/mob_jaunter = jaunter
RegisterSignal(mob_jaunter, COMSIG_MOB_STATCHANGE, PROC_REF(on_stat_change))
mob_jaunter.reset_perspective(src)

/obj/effect/dummy/phased_mob/Destroy()
Expand Down Expand Up @@ -55,6 +56,7 @@
/obj/effect/dummy/phased_mob/Exited(atom/movable/gone, direction)
. = ..()
if(gone == jaunter)
UnregisterSignal(jaunter, COMSIG_MOB_STATCHANGE)
SEND_SIGNAL(src, COMSIG_MOB_EJECTED_FROM_JAUNT, jaunter)
jaunter = null

Expand Down Expand Up @@ -98,3 +100,9 @@
newloc = can_z_move(direction, get_turf(src), newloc, ZMOVE_INCAPACITATED_CHECKS | ZMOVE_FEEDBACK | ZMOVE_ALLOW_ANCHORED, user)

return newloc

/// Signal proc for [COMSIG_MOB_STATCHANGE], to throw us out of the jaunt if we lose consciousness.
/obj/effect/dummy/phased_mob/proc/on_stat_change(mob/living/source, new_stat, old_stat)
SIGNAL_HANDLER
if(source == jaunter && source.stat != CONSCIOUS)
eject_jaunter()
4 changes: 3 additions & 1 deletion code/game/objects/items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1851,9 +1851,11 @@
/obj/item/proc/set_embed(datum/embed_data/embed)
if(embed_data == embed)
return
if(isnull(get_embed())) // Add embed on objects that did not have it added
AddElement(/datum/element/embed)
if(!GLOB.embed_by_type[embed_data?.type])
qdel(embed_data)
embed_data = ispath(embed) ? get_embed_by_type(armor) : embed
embed_data = ispath(embed) ? get_embed_by_type(embed) : embed
SEND_SIGNAL(src, COMSIG_ITEM_EMBEDDING_UPDATE)

/**
Expand Down
Loading
Loading