diff --git a/code/__HELPERS/_cit_helpers.dm b/code/__HELPERS/_cit_helpers.dm index 83211d7ee6..9e38d9cf1e 100644 --- a/code/__HELPERS/_cit_helpers.dm +++ b/code/__HELPERS/_cit_helpers.dm @@ -108,8 +108,8 @@ GLOBAL_VAR_INIT(miscreants_allowed, FALSE) set desc = "Sets an extended description of your character's features." set category = "IC" - var/new_flavor = (input(src, "Enter your new flavor text:", "Flavor text", null) as text|null) - if(new_flavor) + var/new_flavor = input(src, "Enter your new flavor text:", "Flavor text", null) as message|null + if(!isnull(new_flavor)) flavor_text = sanitize(new_flavor) to_chat(src, "Your flavor text has been updated.") diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 2d8b9f70ec..5e663fe411 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -1,4 +1,27 @@ GLOBAL_LIST_INIT(bitfields, list( + "appearance_flags" = list( + "LONG_GLIDE" = LONG_GLIDE, + "RESET_COLOR" = RESET_COLOR, + "RESET_ALPHA" = RESET_ALPHA, + "RESET_TRANSFORM" = RESET_TRANSFORM, + "NO_CLIENT_COLOR" = NO_CLIENT_COLOR, + "KEEP_TOGETHER" = KEEP_TOGETHER, + "KEEP_APART" = KEEP_APART, + "PLANE_MASTER" = PLANE_MASTER, + "TILE_BOUND" = TILE_BOUND, + "PIXEL_SCALE" = PIXEL_SCALE + ), + "sight" = list( + "SEE_INFRA" = SEE_INFRA, + "SEE_SELF" = SEE_SELF, + "SEE_MOBS" = SEE_MOBS, + "SEE_OBJS" = SEE_OBJS, + "SEE_TURFS" = SEE_TURFS, + "SEE_PIXELS" = SEE_PIXELS, + "SEE_THRU" = SEE_THRU, + "SEE_BLACKNESS" = SEE_BLACKNESS, + "BLIND" = BLIND + ), "obj_flags" = list( "EMAGGED" = EMAGGED, "IN_USE" = IN_USE, @@ -108,4 +131,4 @@ GLOBAL_LIST_INIT(bitfields, list( "NO_MAT_REDEMPTION_2" = NO_MAT_REDEMPTION_2, "LAVA_PROTECT_2" = LAVA_PROTECT_2 ) - )) + )) \ No newline at end of file diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index b662fd4f84..403ad06784 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -165,7 +165,7 @@ var/datum/config_entry/E = entry_type var/entry_is_abstract = initial(E.abstract_type) == entry_type if(entry_is_abstract) - CRASH("Tried to retrieve an abstract config_entry: [entry_type]") + CRASH("Tried to set an abstract config_entry: [entry_type]") E = entries_by_type[entry_type] if(!E) CRASH("Missing config entry for [entry_type]!") diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 426dc2b67e..3de0ebe439 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -226,10 +226,13 @@ /datum/config_entry/keyed_number_list/law_weight splitter = "," -/datum/config_entry/number/assistant_cap +/datum/config_entry/number/overflow_cap config_entry_value = -1 min_val = -1 +/datum/config_entry/string/overflow_job + config_entry_value = "Assistant" + /datum/config_entry/flag/starlight /datum/config_entry/flag/grey_assistants diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index e82da7dd6f..c19345f328 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -21,8 +21,21 @@ SUBSYSTEM_DEF(job) if(CONFIG_GET(flag/load_jobs_from_txt)) LoadJobs() generate_selectable_species() + set_overflow_role(CONFIG_GET(string/overflow_job)) ..() +/datum/controller/subsystem/job/proc/set_overflow_role(new_overflow_role) + var/datum/job/new_overflow = GetJob(new_overflow_role) + var/cap = CONFIG_GET(number/overflow_cap) + + new_overflow.spawn_positions = cap + new_overflow.total_positions = cap + + if(new_overflow_role != overflow_role) + var/datum/job/old_overflow = GetJob(overflow_role) + old_overflow.spawn_positions = initial(old_overflow.spawn_positions) + old_overflow.total_positions = initial(old_overflow.total_positions) + overflow_role = new_overflow_role /datum/controller/subsystem/job/proc/SetupOccupations(faction = "Station") occupations = list() diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index bffde1e335..be2b107cb8 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -56,7 +56,7 @@ SUBSYSTEM_DEF(shuttle) var/lockdown = FALSE //disallow transit after nuke goes off - var/auto_call = 99000 //CIT CHANGE - time before in deciseconds in which the shuttle is auto called. Default is 2½ hours plus 15 for the shuttle. So total is 3. + var/auto_call = 72000 //CIT CHANGE - time before in deciseconds in which the shuttle is auto called. Default is 2½ hours plus 15 for the shuttle. So total is 3. /datum/controller/subsystem/shuttle/Initialize(timeofday) ordernum = rand(1, 9000) diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index e3d783d231..16bcbebc70 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -11,9 +11,10 @@ SUBSYSTEM_DEF(traumas) #define PHOBIA_FILE "phobia.json" /datum/controller/subsystem/traumas/Initialize() + //phobia types is to pull from randomly for brain traumas, e.g. conspiracies is for special assignment only phobia_types = list("spiders", "space", "security", "clowns", "greytide", "lizards", "skeletons", "snakes", "robots", "doctors", "authority", "the supernatural", - "aliens", "strangers") + "aliens", "strangers", "birds", "falling") phobia_words = list("spiders" = strings(PHOBIA_FILE, "spiders"), "space" = strings(PHOBIA_FILE, "space"), @@ -29,7 +30,9 @@ SUBSYSTEM_DEF(traumas) "the supernatural" = strings(PHOBIA_FILE, "the supernatural"), "aliens" = strings(PHOBIA_FILE, "aliens"), "strangers" = strings(PHOBIA_FILE, "strangers"), - "conspiracies" = strings(PHOBIA_FILE, "conspiracies") + "conspiracies" = strings(PHOBIA_FILE, "conspiracies"), + "birds" = strings(PHOBIA_FILE, "birds"), + "falling" = strings(PHOBIA_FILE, "falling") ) phobia_mobs = list("spiders" = typecacheof(list(/mob/living/simple_animal/hostile/poison/giant_spider)), @@ -44,7 +47,10 @@ SUBSYSTEM_DEF(traumas) /mob/living/simple_animal/hostile/clockwork, /mob/living/simple_animal/drone/cogscarab, /mob/living/simple_animal/revenant, /mob/living/simple_animal/shade)), "aliens" = typecacheof(list(/mob/living/carbon/alien, /mob/living/simple_animal/slime)), - "conspiracies" = typecacheof(list(/mob/living/simple_animal/bot/secbot, /mob/living/simple_animal/bot/ed209, /mob/living/simple_animal/drone)) + "conspiracies" = typecacheof(list(/mob/living/simple_animal/bot/secbot, /mob/living/simple_animal/bot/ed209, /mob/living/simple_animal/drone, + /mob/living/simple_animal/pet/penguin)), + "birds" = typecacheof(list(/mob/living/simple_animal/parrot, /mob/living/simple_animal/chick, /mob/living/simple_animal/chicken, + /mob/living/simple_animal/pet/penguin)) ) phobia_objs = list("snakes" = typecacheof(list(/obj/item/rod_of_asclepius)), @@ -91,7 +97,8 @@ SUBSYSTEM_DEF(traumas) /obj/item/storage/firstaid, /obj/item/storage/pill_bottle, /obj/item/device/healthanalyzer, /obj/structure/sign/departments/medbay, /obj/machinery/door/airlock/medical, /obj/machinery/sleeper, /obj/machinery/dna_scannernew, /obj/machinery/atmospherics/components/unary/cryo_cell, /obj/item/surgical_drapes, - /obj/item/retractor, /obj/item/hemostat, /obj/item/cautery, /obj/item/surgicaldrill, /obj/item/scalpel, /obj/item/circular_saw)), + /obj/item/retractor, /obj/item/hemostat, /obj/item/cautery, /obj/item/surgicaldrill, /obj/item/scalpel, /obj/item/circular_saw, + /obj/item/clothing/suit/bio_suit/plaguedoctorsuit, /obj/item/clothing/head/plaguedoctorhat, /obj/item/clothing/mask/gas/plaguedoctor)), "authority" = typecacheof(list(/obj/item/clothing/under/rank/captain, /obj/item/clothing/under/rank/head_of_personnel, /obj/item/clothing/under/rank/head_of_security, /obj/item/clothing/under/rank/research_director, @@ -122,14 +129,21 @@ SUBSYSTEM_DEF(traumas) /obj/item/clothing/head/helmet/abductor, /obj/structure/bed/abductor, /obj/structure/table_frame/abductor, /obj/structure/table/abductor, /obj/structure/table/optable/abductor, /obj/structure/closet/abductor, /obj/item/organ/heart/gland, /obj/machinery/abductor, /obj/item/crowbar/abductor, /obj/item/screwdriver/abductor, /obj/item/weldingtool/abductor, - /obj/item/wirecutters/abductor, /obj/item/wrench/abductor, /obj/item/stack/sheet/mineral/abductor)) + /obj/item/wirecutters/abductor, /obj/item/wrench/abductor, /obj/item/stack/sheet/mineral/abductor)), + + "birds" = typecacheof(list(/obj/item/clothing/mask/gas/plaguedoctor, /obj/item/reagent_containers/food/snacks/cracker, + /obj/item/clothing/suit/chickensuit, /obj/item/clothing/head/chicken, + /obj/item/clothing/suit/toggle/owlwings, /obj/item/clothing/under/owl, /obj/item/clothing/mask/gas/owl_mask, + /obj/item/clothing/under/griffin, /obj/item/clothing/shoes/griffin, /obj/item/clothing/head/griffin, + /obj/item/clothing/head/helmet/space/freedom, /obj/item/clothing/suit/space/freedom)) ) phobia_turfs = list("space" = typecacheof(list(/turf/open/space, /turf/open/floor/holofloor/space, /turf/open/floor/fakespace)), "the supernatural" = typecacheof(list(/turf/open/floor/clockwork, /turf/closed/wall/clockwork, /turf/open/floor/plasteel/cult, /turf/closed/wall/mineral/cult)), "aliens" = typecacheof(list(/turf/open/floor/plating/abductor, /turf/open/floor/plating/abductor2, - /turf/open/floor/mineral/abductor, /turf/closed/wall/mineral/abductor)) + /turf/open/floor/mineral/abductor, /turf/closed/wall/mineral/abductor)), + "falling" = typecacheof(list(/turf/open/chasm, /turf/open/floor/fakepit)) ) phobia_species = list("lizards" = typecacheof(list(/datum/species/lizard)), diff --git a/code/datums/components/swarming.dm b/code/datums/components/swarming.dm index ee7bee30e4..c80b8ba13b 100644 --- a/code/datums/components/swarming.dm +++ b/code/datums/components/swarming.dm @@ -22,7 +22,7 @@ /datum/component/swarming/proc/leave_swarm(atom/movable/AM) GET_COMPONENT_FROM(other_swarm, /datum/component/swarming, AM) - if(!other_swarm || !other_swarm in swarm_members) + if(!other_swarm || !(other_swarm in swarm_members)) return swarm_members -= other_swarm if(!swarm_members.len) diff --git a/code/datums/traits/_trait.dm b/code/datums/traits/_trait.dm index 1b51d6a190..a0090a94fa 100644 --- a/code/datums/traits/_trait.dm +++ b/code/datums/traits/_trait.dm @@ -56,6 +56,7 @@ /datum/trait/process() if(QDELETED(trait_holder)) + trait_holder = null qdel(src) return if(trait_holder.stat == DEAD) diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index 8d161db9d5..dcaa4f4545 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -61,7 +61,7 @@ var/list/family_name = splittext(trait_holder.real_name, " ") heirloom.name = "\improper [family_name[family_name.len]] family [heirloom.name]" -/datum/trait/family_heirloom/process() +/datum/trait/family_heirloom/on_process() if(heirloom in trait_holder.GetAllContents()) trait_holder.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "family_heirloom_missing") trait_holder.SendSignal(COMSIG_ADD_MOOD_EVENT, "family_heirloom", /datum/mood_event/family_heirloom) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 3c8a42b16c..c439f7e3e5 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -383,6 +383,9 @@ if(throwing) return 1 + + if(!isturf(loc)) + return 1 if(locate(/obj/structure/lattice) in range(1, get_turf(src))) //Not realistic but makes pushing things in space easier return 1 diff --git a/code/game/turfs/simulated/chasm.dm b/code/game/turfs/simulated/chasm.dm index 1bb2a2b798..93590e935c 100644 --- a/code/game/turfs/simulated/chasm.dm +++ b/code/game/turfs/simulated/chasm.dm @@ -21,7 +21,7 @@ GET_COMPONENT(chasm_component, /datum/component/chasm) chasm_component.drop(AM) -/turf/open/chasm/MakeSlippery() +/turf/open/chasm/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent) return /turf/open/chasm/MakeDry() diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm index d3f8d00be7..650a66adf1 100644 --- a/code/game/turfs/simulated/floor/misc_floor.dm +++ b/code/game/turfs/simulated/floor/misc_floor.dm @@ -129,7 +129,7 @@ burnt_states = list("noslip-scorched1","noslip-scorched2") slowdown = -0.3 -/turf/open/floor/noslip/MakeSlippery() +/turf/open/floor/noslip/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent) return /turf/open/floor/oldshuttle diff --git a/code/game/turfs/simulated/floor/plating/asteroid.dm b/code/game/turfs/simulated/floor/plating/asteroid.dm index 34277fbdab..09335314c0 100644 --- a/code/game/turfs/simulated/floor/plating/asteroid.dm +++ b/code/game/turfs/simulated/floor/plating/asteroid.dm @@ -33,7 +33,7 @@ /turf/open/floor/plating/asteroid/burn_tile() return -/turf/open/floor/plating/asteroid/MakeSlippery() +/turf/open/floor/plating/asteroid/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent) return /turf/open/floor/plating/asteroid/MakeDry() diff --git a/code/game/turfs/simulated/lava.dm b/code/game/turfs/simulated/lava.dm index a040746a9e..a70f44ac3f 100644 --- a/code/game/turfs/simulated/lava.dm +++ b/code/game/turfs/simulated/lava.dm @@ -14,7 +14,7 @@ /turf/open/lava/ex_act(severity, target) contents_explosion(severity, target) -/turf/open/lava/MakeSlippery() +/turf/open/lava/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent) return /turf/open/lava/acid_act(acidpwr, acid_volume) diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index 4d69af1563..ed0fa395ea 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -164,7 +164,7 @@ A.newtonian_move(A.inertia_dir) -/turf/open/space/MakeSlippery() +/turf/open/space/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent) return /turf/open/space/singularity_act() diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 5e8fe119cf..75263147eb 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1094,14 +1094,18 @@ else if(href_list["deletemessage"]) if(!check_rights(R_ADMIN)) return - var/message_id = href_list["deletemessage"] - delete_message(message_id) + var/safety = alert("Delete message/note?",,"Yes","No"); + if (safety == "Yes") + var/message_id = href_list["deletemessage"] + delete_message(message_id) else if(href_list["deletemessageempty"]) if(!check_rights(R_ADMIN)) return - var/message_id = href_list["deletemessageempty"] - delete_message(message_id, browse = 1) + var/safety = alert("Delete message/note?",,"Yes","No"); + if (safety == "Yes") + var/message_id = href_list["deletemessageempty"] + delete_message(message_id, browse = TRUE) else if(href_list["editmessage"]) if(!check_rights(R_ADMIN)) diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm index eeeee03663..dae760933e 100644 --- a/code/modules/antagonists/revolution/revolution.dm +++ b/code/modules/antagonists/revolution/revolution.dm @@ -348,7 +348,20 @@ return result.Join() /datum/team/revolution/antag_listing_entry() - var/common_part = ..() + var/common_part = "" + var/list/parts = list() + parts += "[antag_listing_name()]
" + parts += "" + + var/list/heads = get_team_antags(/datum/antagonist/rev/head,TRUE) + + for(var/datum/antagonist/A in heads | get_team_antags()) + parts += A.antag_listing_entry() + + parts += "
" + parts += antag_listing_footer() + common_part = parts.Join() + var/heads_report = "Heads of Staff
" heads_report += "" for(var/datum/mind/N in SSjob.get_living_heads()) diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm index aa80178030..e7589aa15f 100644 --- a/code/modules/detectivework/scanner.dm +++ b/code/modules/detectivework/scanner.dm @@ -16,6 +16,15 @@ var/list/log = list() var/range = 8 var/view_check = TRUE + actions_types = list(/datum/action/item_action/displayDetectiveScanResults) + +/datum/action/item_action/displayDetectiveScanResults + name = "Display Forensic Scanner Results" + +/datum/action/item_action/displayDetectiveScanResults/Trigger() + var/obj/item/device/detective_scanner/scanner = target + if(istype(scanner)) + scanner.displayDetectiveScanResults(usr) /obj/item/device/detective_scanner/attack_self(mob/user) if(log.len && !scanning) @@ -36,6 +45,7 @@ P.info += jointext(log, "
") P.info += "
Notes:
" P.info_links = P.info + P.updateinfolinks() if(ismob(loc)) var/mob/M = loc @@ -165,3 +175,28 @@ /proc/get_timestamp() return time2text(world.time + 432000, ":ss") + +/obj/item/device/detective_scanner/AltClick(mob/living/user) + // Best way for checking if a player can use while not incapacitated, etc + if(!user.canUseTopic(src, be_close=TRUE)) + return + if(!LAZYLEN(log)) + to_chat(user, "Cannot clear logs, the scanner has no logs.") + return + if(scanning) + to_chat(user, "Cannot clear logs, the scanner is in use.") + return + to_chat(user, "The scanner logs are cleared.") + log = list() + +/obj/item/device/detective_scanner/proc/displayDetectiveScanResults(mob/living/user) + // No need for can-use checks since the action button should do proper checks + if(!LAZYLEN(log)) + to_chat(user, "Cannot display logs, the scanner has no logs.") + return + if(scanning) + to_chat(user, "Cannot display logs, the scanner is in use.") + return + to_chat(user, "Scanner Report") + for(var/iterLog in log) + to_chat(user, iterLog) \ No newline at end of file diff --git a/code/modules/events/anomaly_bluespace.dm b/code/modules/events/anomaly_bluespace.dm index d3f829011e..44a66e0d27 100644 --- a/code/modules/events/anomaly_bluespace.dm +++ b/code/modules/events/anomaly_bluespace.dm @@ -10,8 +10,16 @@ /datum/round_event/anomaly/anomaly_bluespace/announce(fake) - priority_announce("Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") - + if(prob(90)) + priority_announce("Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "Unstable bluespace anomaly" + P.info = "Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name]." + P.update_icon() /datum/round_event/anomaly/anomaly_bluespace/start() var/turf/T = safepick(get_area_turfs(impact_area)) diff --git a/code/modules/events/anomaly_flux.dm b/code/modules/events/anomaly_flux.dm index 30ae7e47af..cc22abe5ab 100644 --- a/code/modules/events/anomaly_flux.dm +++ b/code/modules/events/anomaly_flux.dm @@ -11,8 +11,16 @@ announceWhen = 3 /datum/round_event/anomaly/anomaly_flux/announce(fake) - priority_announce("Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") - + if(prob(90)) + priority_announce("Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "Localized hyper-energetic flux wave" + P.info = "Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name]." + P.update_icon() /datum/round_event/anomaly/anomaly_flux/start() var/turf/T = safepick(get_area_turfs(impact_area)) diff --git a/code/modules/events/anomaly_grav.dm b/code/modules/events/anomaly_grav.dm index 6c4fa46b6c..c240be50d4 100644 --- a/code/modules/events/anomaly_grav.dm +++ b/code/modules/events/anomaly_grav.dm @@ -9,7 +9,16 @@ announceWhen = 20 /datum/round_event/anomaly/anomaly_grav/announce(fake) - priority_announce("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") + if(prob(90)) + priority_announce("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "Gravitational anomaly" + P.info = "Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name]." + P.update_icon() /datum/round_event/anomaly/anomaly_grav/start() var/turf/T = safepick(get_area_turfs(impact_area)) diff --git a/code/modules/events/anomaly_pyro.dm b/code/modules/events/anomaly_pyro.dm index 85da9ca6d4..5a973db95a 100644 --- a/code/modules/events/anomaly_pyro.dm +++ b/code/modules/events/anomaly_pyro.dm @@ -9,7 +9,16 @@ announceWhen = 10 /datum/round_event/anomaly/anomaly_pyro/announce(fake) - priority_announce("Pyroclastic anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") + if(prob(90)) + priority_announce("Pyroclastic anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "Pyroclastic anomaly" + P.info = "Pyroclastic anomaly detected on long range scanners. Expected location: [impact_area.name]." + P.update_icon() /datum/round_event/anomaly/anomaly_pyro/start() var/turf/T = safepick(get_area_turfs(impact_area)) diff --git a/code/modules/events/anomaly_vortex.dm b/code/modules/events/anomaly_vortex.dm index 9fb75af002..b57fe9e67e 100644 --- a/code/modules/events/anomaly_vortex.dm +++ b/code/modules/events/anomaly_vortex.dm @@ -11,7 +11,16 @@ announceWhen = 3 /datum/round_event/anomaly/anomaly_vortex/announce(fake) - priority_announce("Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name]", "Anomaly Alert") + if(prob(90)) + priority_announce("Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name]", "Anomaly Alert") + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "Vortex anomaly" + P.info = "Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name]." + P.update_icon() /datum/round_event/anomaly/anomaly_vortex/start() var/turf/T = safepick(get_area_turfs(impact_area)) diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm index 54ba811e02..45968df0cf 100644 --- a/code/modules/events/blob.dm +++ b/code/modules/events/blob.dm @@ -14,7 +14,16 @@ fakeable = TRUE /datum/round_event/ghost_role/blob/announce(fake) - priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak5.ogg') + if(prob(75)) + priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak5.ogg') + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "level 5 biohazard" + P.info = "Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak." + P.update_icon() /datum/round_event/ghost_role/blob/spawn_role() if(!GLOB.blobstart.len) diff --git a/code/modules/events/brand_intelligence.dm b/code/modules/events/brand_intelligence.dm index c777fea85b..e33cfbd25d 100644 --- a/code/modules/events/brand_intelligence.dm +++ b/code/modules/events/brand_intelligence.dm @@ -28,8 +28,16 @@ source = initial(example.name) else if(originMachine) source = originMachine.name - priority_announce("Rampant brand intelligence has been detected aboard [station_name()]. Please stand by. The origin is believed to be \a [source].", "Machine Learning Alert") - + if(prob(50)) + priority_announce("Rampant brand intelligence has been detected aboard [station_name()]. Please stand by. The origin is believed to be \a [source].", "Machine Learning Alert") + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "Rampant brand intelligence" + P.info = "Rampant brand intelligence has been detected aboard [station_name()]. Please stand by. The origin is believed to be \a [source]." + P.update_icon() /datum/round_event/brand_intelligence/start() for(var/obj/machinery/vending/V in GLOB.machines) if(!is_station_level(V.z)) diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index 0806d065ee..71f19e5fd7 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -14,7 +14,16 @@ startWhen = rand(40, 60) /datum/round_event/carp_migration/announce(fake) - priority_announce("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert") + if(prob(50)) + priority_announce("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert") + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "Biological entities" + P.info = "Unknown biological entities have been detected near [station_name()], you may wish to break out arms." + P.update_icon() /datum/round_event/carp_migration/start() diff --git a/code/modules/events/electrical_storm.dm b/code/modules/events/electrical_storm.dm index 0ce5bdb32a..268a863ebc 100644 --- a/code/modules/events/electrical_storm.dm +++ b/code/modules/events/electrical_storm.dm @@ -12,8 +12,16 @@ announceWhen = 1 /datum/round_event/electrical_storm/announce(fake) - priority_announce("An electrical storm has been detected in your area, please repair potential electronic overloads.", "Electrical Storm Alert") - + if(prob(50)) + priority_announce("An electrical storm has been detected in your area, please repair potential electronic overloads.", "Electrical Storm Alert") + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "Electrical Storm" + P.info = "An electrical storm has been detected in your area, please repair potential electronic overloads." + P.update_icon() /datum/round_event/electrical_storm/start() var/list/epicentreList = list() diff --git a/code/modules/events/major_dust.dm b/code/modules/events/major_dust.dm index 7fb00124a9..d1570ea09d 100644 --- a/code/modules/events/major_dust.dm +++ b/code/modules/events/major_dust.dm @@ -16,4 +16,13 @@ some mild debris is expected.", "A neighbouring station is throwing rocks at you. (Perhaps they've \ grown tired of your messages.)") - priority_announce(pick(reason), "Collision Alert") + if(prob(50)) + priority_announce(pick(reason), "Collision Alert") + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "Collision Alert" + P.info = "[pick(reason)]" + P.update_icon() \ No newline at end of file diff --git a/code/modules/events/mice_migration.dm b/code/modules/events/mice_migration.dm index 0b3a8d8ea9..b01ff4237e 100644 --- a/code/modules/events/mice_migration.dm +++ b/code/modules/events/mice_migration.dm @@ -18,10 +18,18 @@ var/movement = pick("migrated", "swarmed", "stampeded", "descended") var/location = pick("maintenance tunnels", "maintenance areas", "\[REDACTED\]", "place with all those juicy wires") - - priority_announce("Due to [cause], [plural] [name] have [movement] \ + if(prob(50)) + priority_announce("Due to [cause], [plural] [name] have [movement] \ into the [location].", "Migration Alert", 'sound/effects/mousesqueek.ogg') + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "Rodent Migration" + P.info = "Due to [cause], [plural] [name] have [movement] into the [location]." + P.update_icon() /datum/round_event/mice_migration/start() SSsqueak.trigger_migration(rand(minimum_mice, maximum_mice)) diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm index 693e194d1c..07110b5aea 100644 --- a/code/modules/events/pirates.dm +++ b/code/modules/events/pirates.dm @@ -27,7 +27,7 @@ ship_name = pick(strings(PIRATE_NAMES_FILE, "ship_names")) /datum/round_event/pirates/announce() - priority_announce("Incoming subspace communication. Secure channel opened at all communication consoles.", "Incoming Message", 'sound/ai/commandreport.ogg') + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak if(!control) //Means this is false alarm, todo : explicit checks instead of using announceWhen return @@ -82,7 +82,8 @@ else notify_ghosts("Space pirates are waking up!", source = spawner, action=NOTIFY_ATTACK, flashwindow = FALSE) - priority_announce("Unidentified armed ship detected near the station.") + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') //CITADEL EDIT also metabreak here too + //Shuttle equipment diff --git a/code/modules/events/prison_break.dm b/code/modules/events/prison_break.dm index 96f5a3917d..89c7997421 100644 --- a/code/modules/events/prison_break.dm +++ b/code/modules/events/prison_break.dm @@ -30,7 +30,16 @@ /datum/round_event/grey_tide/announce(fake) if(areasToOpen && areasToOpen.len > 0) - priority_announce("Gr3y.T1d3 virus detected in [station_name()] door subroutines. Severity level of [severity]. Recommend station AI involvement.", "Security Alert") + if(prob(50)) + priority_announce("Gr3y.T1d3 virus detected in [station_name()] door subroutines. Severity level of [severity]. Recommend station AI involvement.", "Security Alert") + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "Gr3y.T1d3 virus" + P.info = "Gr3y.T1d3 virus detected in [station_name()] door subroutines. Severity level of [severity]. Recommend station AI involvement." + P.update_icon() else log_world("ERROR: Could not initate grey-tide. No areas in the list!") kill() diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm index d5fc7fc470..768be52a63 100644 --- a/code/modules/events/shuttle_loan.dm +++ b/code/modules/events/shuttle_loan.dm @@ -27,19 +27,73 @@ SSshuttle.shuttle_loan = src switch(dispatch_type) if(HIJACK_SYNDIE) - priority_announce("Cargo: The syndicate are trying to infiltrate your station. If you let them hijack your cargo shuttle, you'll save us a headache.","CentCom Counter Intelligence") + if(prob(50)) + priority_announce("Cargo: The syndicate are trying to infiltrate your station. If you let them hijack your cargo shuttle, you'll save us a headache.","CentCom Counter Intelligence") + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "Cargo Report" + P.info = "Cargo: The syndicate are trying to infiltrate your station. If you let them hijack your cargo shuttle, you'll save us a headache." + P.update_icon() if(RUSKY_PARTY) - priority_announce("Cargo: A group of angry Russians want to have a party. Can you send them your cargo shuttle then make them disappear?","CentCom Russian Outreach Program") + if(prob(50)) + priority_announce("Cargo: A group of angry Russians want to have a party. Can you send them your cargo shuttle then make them disappear?","CentCom Russian Outreach Program") + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "Cargo Report" + P.info = "Cargo: The syndicate are trying to infiltrate your station. If you let them hijack your cargo shuttle, you'll save us a headache." + P.update_icon() if(SPIDER_GIFT) - priority_announce("Cargo: The Spider Clan has sent us a mysterious gift. Can we ship it to you to see what's inside?","CentCom Diplomatic Corps") + if(prob(50)) + priority_announce("Cargo: The Spider Clan has sent us a mysterious gift. Can we ship it to you to see what's inside?","CentCom Diplomatic Corps") + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "Cargo Report" + P.info = "Cargo: The Spider Clan has sent us a mysterious gift. Can we ship it to you to see what's inside?" + P.update_icon() if(DEPARTMENT_RESUPPLY) - priority_announce("Cargo: Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?","CentCom Supply Department") + if(prob(50)) + priority_announce("Cargo: Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?","CentCom Supply Department") + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "Cargo Report" + P.info = "Cargo: Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?" + P.update_icon() thanks_msg = "The cargo shuttle should return in 5 minutes." bonus_points = 0 if(ANTIDOTE_NEEDED) - priority_announce("Cargo: Your station has been chosen for an epidemiological research project. Send us your cargo shuttle to receive your research samples.", "CentCom Research Initiatives") + if(prob(50)) + priority_announce("Cargo: Your station has been chosen for an epidemiological research project. Send us your cargo shuttle to receive your research samples.", "CentCom Research Initiatives") + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "Cargo Report" + P.info = "Cargo: Your station has been chosen for an epidemiological research project. Send us your cargo shuttle to receive your research samples." + P.update_icon() if (PIZZA_DELIVERY) - priority_announce("Cargo: It looks like a neighbouring station accidentally delivered their pizza to you instead", "CentCom Spacepizza Division") + if(prob(50)) + priority_announce("Cargo: It looks like a neighbouring station accidentally delivered their pizza to you instead.", "CentCom Spacepizza Division") + else + priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak + for(var/obj/machinery/computer/communications/C in GLOB.machines) + if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z)) + var/obj/item/paper/P = new(C.loc) + P.name = "Cargo Report" + P.info = "Cargo: It looks like a neighbouring station accidentally delivered their pizza to you instead." + P.update_icon() /datum/round_event/shuttle_loan/proc/loan_shuttle() priority_announce(thanks_msg, "Cargo shuttle commandeered by CentCom.") diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm index 988c564245..4f740f4e61 100644 --- a/code/modules/holiday/holidays.dm +++ b/code/modules/holiday/holidays.dm @@ -153,7 +153,7 @@ begin_month = APRIL /datum/holiday/april_fools/celebrate() - SSjob.overflow_role = "Clown" + SSjob.set_overflow_role("Clown") SSticker.login_music = 'sound/ambience/clown.ogg' for(var/mob/dead/new_player/P in GLOB.mob_list) if(P.client) diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm index a18fe78906..7601d2f245 100644 --- a/code/modules/jobs/job_types/assistant.dm +++ b/code/modules/jobs/job_types/assistant.dm @@ -6,8 +6,8 @@ Assistant flag = ASSISTANT department_flag = CIVILIAN faction = "Station" - total_positions = -1 - spawn_positions = -1 + total_positions = 5 + spawn_positions = 5 supervisors = "absolutely everyone" selection_color = "#dddddd" access = list() //See /datum/job/assistant/get_access() @@ -23,15 +23,6 @@ Assistant else return ..() -/datum/job/assistant/config_check() - var/ac = CONFIG_GET(number/assistant_cap) - if(ac != 0) - total_positions = ac - spawn_positions = ac - return 1 - return 0 - - /datum/outfit/job/assistant name = "Assistant" jobtype = /datum/job/assistant diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index e27c0c69dd..73b9a01780 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -868,12 +868,17 @@ .["Toggle Purrbation"] = "?_src_=vars;[HrefToken()];purrbation=[REF(src)]" /mob/living/carbon/human/MouseDrop_T(mob/living/target, mob/living/user) - if((target != pulling) || (grab_state < GRAB_AGGRESSIVE) || (user != target) || !isliving(user) || stat || user.stat)//Get consent first :^) - . = ..() - return - buckle_mob(target, TRUE, TRUE) + //If they dragged themselves and we're currently aggressively grabbing them try to piggyback + if(user == target && can_piggyback(target) && pulling == target && grab_state >= GRAB_AGGRESSIVE && stat == CONSCIOUS) + buckle_mob(target,TRUE,TRUE) . = ..() +//Can C try to piggyback at all. +/mob/living/carbon/human/proc/can_piggyback(mob/living/carbon/C) + if(istype(C) && C.stat == CONSCIOUS) + return TRUE + return FALSE + /mob/living/carbon/human/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE) if(!force)//humans are only meant to be ridden through piggybacking and special cases return @@ -882,24 +887,28 @@ return var/datum/component/riding/human/riding_datum = LoadComponent(/datum/component/riding/human) riding_datum.ride_check_rider_incapacitated = TRUE - riding_datum.ride_check_ridden_incapacitated = TRUE riding_datum.ride_check_rider_restrained = TRUE riding_datum.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 6), TEXT_SOUTH = list(0, 6), TEXT_EAST = list(-6, 4), TEXT_WEST = list( 6, 4))) if(buckled_mobs && ((M in buckled_mobs) || (buckled_mobs.len >= max_buckled_mobs)) || buckled || (M.stat != CONSCIOUS)) return - visible_message("[M] starts to climb onto [src]...") - if(do_after(M, 15, target = src)) - if(iscarbon(M)) - if(M.incapacitated(FALSE, TRUE) || incapacitated(FALSE, TRUE)) - M.visible_message("[M] can't hang onto [src]!") - return - if(!riding_datum.equip_buckle_inhands(M, 2)) //MAKE SURE THIS IS LAST!! - M.visible_message("[M] can't climb onto [src]!") - return - . = ..(M, force, check_loc) - stop_pulling() + if(can_piggyback(M)) + riding_datum.ride_check_ridden_incapacitated = TRUE + visible_message("[M] starts to climb onto [src]...") + if(do_after(M, 15, target = src)) + if(can_piggyback(M)) + if(M.incapacitated(FALSE, TRUE) || incapacitated(FALSE, TRUE)) + M.visible_message("[M] can't hang onto [src]!") + return + if(!riding_datum.equip_buckle_inhands(M, 2)) //MAKE SURE THIS IS LAST!! + M.visible_message("[M] can't climb onto [src]!") + return + . = ..(M, force, check_loc) + stop_pulling() + else + visible_message("[M] fails to climb onto [src]!") else - visible_message("[M] fails to climb onto [src]!") + . = ..(M,force,check_loc) + stop_pulling() /mob/living/carbon/human/do_after_coefficent() . = ..() diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 6aed2f241b..405c509d0a 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -137,6 +137,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) var/datum/looping_sound/supermatter/soundloop + var/moveable = TRUE + /obj/machinery/power/supermatter_shard/Initialize() . = ..() uid = gl_uid++ @@ -552,6 +554,10 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) radiation_pulse(src, 150, 4) +/obj/machinery/power/supermatter_shard/wrench_act(mob/user, obj/item/tool) + if (moveable) + default_unfasten_wrench(user, tool, time = 20) + return TRUE /obj/machinery/power/supermatter_shard/CollidedWith(atom/movable/AM) if(isliving(AM)) @@ -613,6 +619,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) anchored = TRUE gasefficency = 0.15 explosion_power = 35 + moveable = FALSE /obj/machinery/power/supermatter_shard/crystal/engine is_main_engine = TRUE diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 821fa0510c..42343f8af8 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -1397,7 +1397,7 @@ All effects don't start immediately, but rather get worse over time; the rate is color = "#cc0000" boozepwr = 35 taste_description = "an invigorating bitter freshness which suffuses your being; no enemy of the station will go unrobusted this day" - glass_icon_state = "glass_red" + glass_icon_state = "quadruple_sec" glass_name = "Quadruple Sec" glass_desc = "An intimidating and lawful beverage dares you to violate the law and make its day. Still can't drink it on duty, though." @@ -1415,7 +1415,7 @@ All effects don't start immediately, but rather get worse over time; the rate is color = "#ff3300" boozepwr = 80 taste_description = "THE LAW" - glass_icon_state = "glass_red" + glass_icon_state = "quintuple_sec" glass_name = "Quintuple Sec" glass_desc = "Now you are become law, destroyer of clowns." @@ -1436,7 +1436,7 @@ All effects don't start immediately, but rather get worse over time; the rate is color = "00ff00" boozepwr = 25 taste_description = "chocolate and mint dancing around your mouth" - glass_icon_state = "glass_green" + glass_icon_state = "grasshopper" glass_name = "Grasshopper" glass_desc = "You weren't aware edible beverages could be that green." @@ -1447,7 +1447,7 @@ All effects don't start immediately, but rather get worse over time; the rate is color = "ccff99" boozepwr = 25 taste_description = "a slap on the face in the best possible way" - glass_icon_state = "glass_white" + glass_icon_state = "stinger" glass_name = "Stinger" glass_desc = "You wonder what would happen if you pointed this at a heat source..." diff --git a/code/modules/shuttle/docking.dm b/code/modules/shuttle/docking.dm index 1d9b0f769b..df41f1f9e6 100644 --- a/code/modules/shuttle/docking.dm +++ b/code/modules/shuttle/docking.dm @@ -46,7 +46,12 @@ // The underlying old area is the area assumed to be under the shuttle's starting location // If it no longer/has never existed it will be created - var/area/underlying_old_area = locate(underlying_area_type) in GLOB.sortedAreas + var/area/underlying_old_area + for(var/i in GLOB.sortedAreas) // Locate grabs subtypes and we want a particular type + var/area/place = i + if(place.type == underlying_area_type) + underlying_old_area = place + break if(!underlying_old_area) underlying_old_area = new underlying_area_type(null) diff --git a/config/game_options.txt b/config/game_options.txt index 8896e6e3e7..b3d6f82a21 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -431,8 +431,11 @@ ROUNDSTART_RACES slimeperson ## Uncomment to give players the choice of joining as a human with mutant bodyparts before they join the game #JOIN_WITH_MUTANT_HUMANS -## Assistant slot cap. Set to -1 for unlimited. -ASSISTANT_CAP -1 +##Overflow job. Default is assistant +OVERFLOW_JOB Assistant + +## Overflow slot cap. Set to -1 for unlimited. If limited, it will still open up if every other job is full. +OVERFLOW_CAP -1 ## Starlight for exterior walls and breaches. Uncomment for starlight! ## This is disabled by default to make testing quicker, should be enabled on production servers or testing servers messing with lighting diff --git a/modular_citadel/code/modules/arousal/toys/dildos.dm b/modular_citadel/code/modules/arousal/toys/dildos.dm index 45f4f5a64a..587702762c 100644 --- a/modular_citadel/code/modules/arousal/toys/dildos.dm +++ b/modular_citadel/code/modules/arousal/toys/dildos.dm @@ -5,8 +5,9 @@ obj/item/dildo name = "dildo" desc = "Floppy!" icon = 'modular_citadel/icons/obj/genitals/dildo.dmi' - damtype = BRUTE - force = 0 + damtype = AROUSAL + force = 5 + hitsound = 'sound/weapons/tap.ogg' throwforce = 0 icon_state = "dildo_knotted_2" alpha = 192//transparent @@ -129,4 +130,4 @@ obj/item/dildo/custom can_customize = TRUE random_color = TRUE random_shape = TRUE - random_size = TRUE \ No newline at end of file + random_size = TRUE diff --git a/modular_citadel/code/modules/client/preferences.dm b/modular_citadel/code/modules/client/preferences.dm index c2dee71a4f..741e6f0935 100644 --- a/modular_citadel/code/modules/client/preferences.dm +++ b/modular_citadel/code/modules/client/preferences.dm @@ -253,8 +253,8 @@ if("input") switch(href_list["preference"]) if("flavor_text") - var/msg = stripped_multiline_input(usr,"Set the flavor text in your 'examine' verb. This can also be used for OOC notes and preferences!","Flavor Text",html_decode(features["flavor_text"]), MAX_MESSAGE_LEN*2, TRUE) as message - if(msg != null) + var/msg = stripped_multiline_input(usr,"Set the flavor text in your 'examine' verb. This can also be used for OOC notes and preferences!","Flavor Text",html_decode(features["flavor_text"]), MAX_MESSAGE_LEN*2, TRUE) as null|message + if(!isnull(msg)) msg = copytext(msg, 1, MAX_MESSAGE_LEN*2) features["flavor_text"] = msg diff --git a/strings/phobia.json b/strings/phobia.json index 10fdbd9a0c..379dd1829a 100644 --- a/strings/phobia.json +++ b/strings/phobia.json @@ -219,5 +219,43 @@ "as (unknown)", "unknown", "stranger danger" + ], + +"birds": [ + "birdemic", + "bird", + "beak", + "poly", + "wing", + "claw", + "peck", + "cracker", + "kiki yaya", + "ki ki ya ya", + "vox", + "flap", + "feather", + "avian", + "aviary", + "owl", + "griffin", + "kakaw", + "ka kaw", + "eagle", + "chick", + "fowl" + ], + +"falling": [ + "hold on", + "hang in there", + "chasm", + "pit", + "hole", + "fall", + "fell", + "let go", + "i'll catch you", + "slip" ] }