diff --git a/code/__DEFINES/radio.dm b/code/__DEFINES/radio.dm index 928f364a81..a0db416fa6 100644 --- a/code/__DEFINES/radio.dm +++ b/code/__DEFINES/radio.dm @@ -65,6 +65,7 @@ #define FREQ_ENGINEERING 1357 // Engineering comms frequency, orange #define FREQ_SECURITY 1359 // Security comms frequency, red +#define FREQ_HOLOGRID_SOLUTION 1433 #define FREQ_STATUS_DISPLAYS 1435 #define FREQ_ATMOS_ALARMS 1437 // air alarms <-> alert computers #define FREQ_ATMOS_CONTROL 1439 // air alarms <-> vents and scrubbers diff --git a/code/datums/elements/snail_crawl.dm b/code/datums/elements/snail_crawl.dm new file mode 100644 index 0000000000..0e322c7c9d --- /dev/null +++ b/code/datums/elements/snail_crawl.dm @@ -0,0 +1,31 @@ +/datum/element/snailcrawl + element_flags = ELEMENT_DETACH + +/datum/element/snailcrawl/Attach(datum/target) + . = ..() + if(!ismovable(target)) + return ELEMENT_INCOMPATIBLE + var/P + if(iscarbon(target)) + P = .proc/snail_crawl + else + P = .proc/lubricate + RegisterSignal(target, COMSIG_MOVABLE_MOVED, P) + +/datum/element/snailcrawl/Detach(mob/living/carbon/target) + . = ..() + UnregisterSignal(target, COMSIG_MOVABLE_MOVED) + if(istype(target)) + target.remove_movespeed_modifier(/datum/movespeed_modifier/snail_crawl) + +/datum/element/snailcrawl/proc/snail_crawl(mob/living/carbon/snail) + if(snail.resting && !snail.buckled && lubricate(snail)) + snail.add_movespeed_modifier(/datum/movespeed_modifier/snail_crawl) + else + snail.remove_movespeed_modifier(/datum/movespeed_modifier/snail_crawl) + +/datum/element/snailcrawl/proc/lubricate(atom/movable/snail) + var/turf/open/OT = get_turf(snail) + if(istype(OT)) + OT.MakeSlippery(TURF_WET_LUBE, 20) + return TRUE diff --git a/code/game/objects/items/devices/pressureplates.dm b/code/game/objects/items/devices/pressureplates.dm index 8520571d22..2b5c8d873b 100644 --- a/code/game/objects/items/devices/pressureplates.dm +++ b/code/game/objects/items/devices/pressureplates.dm @@ -8,6 +8,7 @@ level = 1 var/trigger_mob = TRUE var/trigger_item = FALSE + var/specific_item = null var/trigger_silent = FALSE var/sound/trigger_sound = 'sound/effects/pressureplate.ogg' var/obj/item/assembly/signaler/sigdev = null @@ -35,6 +36,8 @@ . = ..() if(!can_trigger || !active) return + if(trigger_item && !istype(AM, specific_item)) + return if(trigger_mob && isliving(AM)) var/mob/living/L = AM to_chat(L, "You feel something click beneath you!") diff --git a/code/game/objects/items/puzzle_pieces.dm b/code/game/objects/items/puzzle_pieces.dm index 96256ccaa5..648ba27897 100644 --- a/code/game/objects/items/puzzle_pieces.dm +++ b/code/game/objects/items/puzzle_pieces.dm @@ -115,7 +115,6 @@ roundstart_signaller_freq = FREQ_HOLOGRID_SOLUTION //Frequency is kept on it's own default channel however. active = TRUE trigger_delay = 10 - protected = TRUE resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF var/reward = /obj/item/reagent_containers/food/snacks/cookie var/claimed = FALSE diff --git a/code/game/turfs/simulated/floor/plating/asteroid.dm b/code/game/turfs/simulated/floor/plating/asteroid.dm index 67ab6b0c88..75701991fc 100644 --- a/code/game/turfs/simulated/floor/plating/asteroid.dm +++ b/code/game/turfs/simulated/floor/plating/asteroid.dm @@ -398,9 +398,6 @@ if(istype(loc, /area/mine/explored) || istype(loc, /area/lavaland/surface/outdoors/explored)) return var/randumb = pickweight(terrain_spawn_list) - for(var/obj/structure/geyser/F in range(7, T)) - if(istype(F, randumb)) - return new randumb(T) /turf/open/floor/plating/asteroid/snow diff --git a/code/modules/ruins/icemoonruin_code/hotsprings.dm b/code/modules/ruins/icemoonruin_code/hotsprings.dm index edd011098b..b9347750cf 100644 --- a/code/modules/ruins/icemoonruin_code/hotsprings.dm +++ b/code/modules/ruins/icemoonruin_code/hotsprings.dm @@ -27,22 +27,7 @@ GLOBAL_LIST_EMPTY(cursed_minds) return GLOB.cursed_minds[L.mind] = TRUE RegisterSignal(L.mind, COMSIG_PARENT_QDELETING, .proc/remove_from_cursed) - var/random_choice = pick("Mob", "Appearance") - switch(random_choice) - if("Mob") - L = wabbajack(L, "animal") - if("Appearance") - var/mob/living/carbon/human/H = wabbajack(L, "humanoid") - randomize_human(H) - var/list/all_species = list() - for(var/stype in subtypesof(/datum/species)) - var/datum/species/S = stype - if(initial(S.changesource_flags) & RACE_SWAP) - all_species += stype - var/random_race = pick(all_species) - H.set_species(random_race) - H.dna.unique_enzymes = H.dna.generate_unique_enzymes() - L = H + L = wabbajack(L, "animal") // Appearance randomization removed so citadel players don't get randomized into some ungodly ugly creature and complain var/turf/T = find_safe_turf() L.forceMove(T) to_chat(L, "You blink and find yourself in [get_area_name(T)].") diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index e8971154f0..69eb4a6be4 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -13,6 +13,7 @@ var/view_range = 7 var/x_offset = 0 var/y_offset = 0 + var/list/whitelist_turfs = list(/turf/open/space, /turf/open/floor/plating, /turf/open/lava) var/space_turfs_only = TRUE var/see_hidden = FALSE var/designate_time = 0 @@ -22,6 +23,7 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/Initialize() . = ..() GLOB.navigation_computers += src + whitelist_turfs = typecacheof(whitelist_turfs) /obj/machinery/computer/camera_advanced/shuttle_docker/Destroy() . = ..() @@ -226,6 +228,11 @@ if(!ispath(turf_type, /turf/open/space)) return SHUTTLE_DOCKER_BLOCKED + if(length(whitelist_turfs)) + var/turf_type = hidden_turf_info ? hidden_turf_info[2] : T.type + if(!is_type_in_typecache(turf_type, whitelist_turfs)) + return SHUTTLE_DOCKER_BLOCKED + // Checking for overlapping dock boundaries for(var/i in 1 to overlappers.len) var/obj/docking_port/port = overlappers[i] diff --git a/sound/effects/gravhit.ogg b/sound/effects/gravhit.ogg new file mode 100644 index 0000000000..524ddf733f Binary files /dev/null and b/sound/effects/gravhit.ogg differ diff --git a/tgstation.dme b/tgstation.dme index b7849d8bda..1a596ae31c 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -522,6 +522,7 @@ #include "code\datums\elements\ghost_role_eligibility.dm" #include "code\datums\elements\mob_holder.dm" #include "code\datums\elements\polychromic.dm" +#include "code\datums\elements\snail_crawl.dm" #include "code\datums\elements\spellcasting.dm" #include "code\datums\elements\squish.dm" #include "code\datums\elements\swimming.dm"