From 4b297f509e9f62f94f6637f5ab01302361319a0f Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sun, 29 Oct 2017 11:27:46 -0400 Subject: [PATCH 001/114] 512 forward compatibility merge --- .travis.yml | 2 +- code/__DEFINES/admin.dm | 24 +- code/__DEFINES/misc.dm | 5 +- code/__DEFINES/say.dm | 6 +- code/__HELPERS/icons.dm | 4 +- code/__HELPERS/unsorted.dm | 35 ++ code/_globalvars/logging.dm | 2 +- .../controllers/configuration/config_entry.dm | 8 + .../configuration/configuration.dm | 4 +- code/controllers/subsystem/events.dm | 2 +- code/controllers/subsystem/garbage.dm | 2 +- code/controllers/subsystem/pai.dm | 16 +- code/controllers/subsystem/radiation.dm | 4 +- code/controllers/subsystem/ticker.dm | 2 +- code/controllers/subsystem/timer.dm | 6 +- code/controllers/subsystem/vote.dm | 18 +- code/datums/browser.dm | 8 +- code/datums/datum.dm | 1 + code/datums/datumvars.dm | 34 +- code/datums/mind.dm | 110 ++-- code/datums/spawners_menu.dm | 2 +- code/game/atoms.dm | 8 +- code/game/atoms_movable.dm | 2 +- code/game/communications.dm | 148 ++++++ code/game/gamemodes/antag_spawner.dm | 8 +- code/game/gamemodes/cult/supply.dm | 2 +- code/game/gamemodes/game_mode.dm | 2 +- .../gamemodes/malfunction/Malf_Modules.dm | 4 +- .../miniantags/abduction/machinery/console.dm | 22 +- .../abduction/machinery/dispenser.dm | 2 +- .../abduction/machinery/experiment.dm | 10 +- code/game/gamemodes/nuclear/nuclearbomb.dm | 1 + code/game/gamemodes/sandbox/airlock_maker.dm | 142 ++++++ code/game/gamemodes/sandbox/h_sandbox.dm | 32 +- code/game/gamemodes/wizard/soulstone.dm | 4 +- code/game/gamemodes/wizard/spellbook.dm | 6 +- code/game/machinery/announcement_system.dm | 4 +- code/game/machinery/autolathe.dm | 30 +- code/game/machinery/bank_machine.dm | 6 +- code/game/machinery/camera/camera.dm | 2 +- code/game/machinery/camera/motion.dm | 4 +- code/game/machinery/cloning.dm | 2 +- code/game/machinery/computer/aifixer.dm | 4 +- code/game/machinery/computer/apc_control.dm | 44 +- code/game/machinery/computer/arcade.dm | 94 ++-- code/game/machinery/computer/card.dm | 48 +- code/game/machinery/computer/cloning.dm | 40 +- .../game/machinery/computer/communications.dm | 162 ++++-- code/game/machinery/computer/dna_console.dm | 60 +-- .../machinery/computer/launchpad_control.dm | 28 +- code/game/machinery/computer/medical.dm | 98 ++-- code/game/machinery/computer/message.dm | 476 ++++++++++++++++++ code/game/machinery/computer/pod.dm | 14 +- code/game/machinery/computer/prisoner.dm | 20 +- code/game/machinery/computer/robot.dm | 154 ++++++ code/game/machinery/computer/security.dm | 92 ++-- .../machinery/computer/telecrystalconsoles.dm | 10 +- code/game/machinery/computer/teleporter.dm | 10 +- code/game/machinery/dance_machine.dm | 20 +- code/game/machinery/doors/airlock.dm | 40 +- .../embedded_controller/access_controller.dm | 24 +- .../embedded_controller/airlock_controller.dm | 299 +++++++++++ .../simple_vent_controller.dm | 27 + code/game/machinery/gulag_item_reclaimer.dm | 2 +- code/game/machinery/hologram.dm | 18 +- code/game/machinery/limbgrower.dm | 12 +- code/game/machinery/magnet.dm | 14 +- code/game/machinery/navbeacon.dm | 184 +++++++ code/game/machinery/newscaster.dm | 116 ++--- code/game/machinery/pipe/pipe_dispenser.dm | 82 +-- .../machinery/porta_turret/portable_turret.dm | 18 +- code/game/machinery/requests_console.dm | 56 +-- code/game/machinery/robot_fabricator.dm | 14 +- code/game/machinery/slotmachine.dm | 4 +- .../telecomms/computers/logbrowser.dm | 14 +- .../telecomms/computers/telemonitor.dm | 12 +- .../telecomms/machine_interactions.dm | 32 +- code/game/machinery/vending.dm | 6 +- code/game/mecha/combat/honker.dm | 147 ++++++ code/game/mecha/equipment/mecha_equipment.dm | 6 +- .../mecha/equipment/tools/medical_tools.dm | 38 +- .../game/mecha/equipment/tools/other_tools.dm | 20 +- code/game/mecha/equipment/tools/work_tools.dm | 6 +- code/game/mecha/equipment/weapons/weapons.dm | 6 +- code/game/mecha/mech_fabricator.dm | 50 +- code/game/mecha/mecha.dm | 4 +- code/game/mecha/mecha_control_console.dm | 16 +- code/game/mecha/mecha_topic.dm | 74 +-- code/game/mecha/working/ripley.dm | 2 +- .../effects/effect_system/effects_smoke.dm | 2 +- code/game/objects/effects/spiders.dm | 2 +- code/game/objects/items/RCD.dm | 12 +- code/game/objects/items/RPD.dm | 72 +-- code/game/objects/items/blueprints.dm | 18 +- code/game/objects/items/charter.dm | 2 +- code/game/objects/items/devices/PDA/PDA.dm | 88 ++-- code/game/objects/items/devices/PDA/cart.dm | 82 +-- .../objects/items/devices/PDA/virus_cart.dm | 2 +- code/game/objects/items/devices/camera_bug.dm | 300 +++++++++++ code/game/objects/items/devices/paicard.dm | 14 +- .../items/devices/radio/electropack.dm | 149 ++++++ .../objects/items/devices/traitordevices.dm | 14 +- .../objects/items/devices/transfer_valve.dm | 8 +- code/game/objects/items/eightball.dm | 2 +- .../objects/items/grenades/chem_grenade.dm | 2 +- code/game/objects/items/robot/robot_parts.dm | 12 +- code/game/objects/items/scrolls.dm | 77 +++ code/game/objects/items/stacks/stack.dm | 6 +- code/game/objects/items/storage/backpack.dm | 2 +- code/game/objects/items/storage/book.dm | 2 +- code/game/objects/items/storage/secure.dm | 2 +- code/game/objects/items/tanks/watertank.dm | 11 +- code/game/objects/items/teleportation.dm | 14 +- code/game/objects/items/toys.dm | 2 +- code/game/objects/items/twohanded.dm | 2 +- code/game/objects/objs.dm | 2 +- code/game/objects/structures/guncase.dm | 2 +- code/game/objects/structures/janicart.dm | 10 +- code/game/objects/structures/musician.dm | 26 +- code/game/objects/structures/noticeboard.dm | 4 +- code/game/objects/structures/safe.dm | 4 +- code/modules/admin/DB_ban/functions.dm | 18 +- code/modules/admin/NewBan.dm | 2 +- code/modules/admin/admin.dm | 244 ++++----- code/modules/admin/admin_investigate.dm | 4 + code/modules/admin/create_object.dm | 2 +- .../admin/permissionverbs/permissionedit.dm | 10 +- code/modules/admin/player_panel.dm | 118 ++--- code/modules/admin/secrets.dm | 76 ++- code/modules/admin/topic.dm | 118 ++--- code/modules/admin/verbs/SDQL2/SDQL_2.dm | 2 +- code/modules/admin/verbs/adminhelp.dm | 19 +- code/modules/admin/verbs/debug.dm | 2 +- .../modules/admin/verbs/individual_logging.dm | 12 +- code/modules/admin/verbs/modifyvariables.dm | 2 +- code/modules/admin/verbs/one_click_antag.dm | 22 +- code/modules/admin/verbs/randomverbs.dm | 12 +- code/modules/assembly/health.dm | 2 +- code/modules/assembly/infrared.dm | 6 +- code/modules/assembly/proximity.dm | 10 +- code/modules/assembly/signaler.dm | 22 +- code/modules/assembly/timer.dm | 8 +- .../awaymissions/bluespaceartillery.dm | 2 +- code/modules/awaymissions/capture_the_flag.dm | 2 +- code/modules/clothing/clothing.dm | 2 +- code/modules/crafting/craft.dm | 2 +- code/modules/detectivework/scanner.dm | 2 +- code/modules/error_handler/error_viewer.dm | 8 +- code/modules/events/_event.dm | 2 +- code/modules/events/immovable_rod.dm | 2 +- code/modules/events/spacevine.dm | 2 +- .../kitchen_machinery/food_cart.dm | 16 +- .../kitchen_machinery/icecream_vat.dm | 16 +- .../kitchen_machinery/juicer.dm | 4 +- .../kitchen_machinery/microwave.dm | 4 +- code/modules/games/cards.dm | 6 +- code/modules/html_interface/html_interface.dm | 30 +- .../html_interface/nanotrasen/nanotrasen.dm | 36 +- code/modules/hydroponics/biogenerator.dm | 8 +- code/modules/hydroponics/gene_modder.dm | 24 +- code/modules/hydroponics/seed_extractor.dm | 2 +- code/modules/library/lib_machines.dm | 78 +-- code/modules/mining/aux_base.dm | 12 +- .../mining/equipment/lazarus_injector.dm | 2 +- .../mining/lavaland/necropolis_chests.dm | 2 +- code/modules/mining/machine_processing.dm | 8 +- code/modules/mining/machine_stacking.dm | 2 +- code/modules/mining/machine_vending.dm | 6 +- code/modules/mining/mint.dm | 16 +- code/modules/mining/satchel_ore_boxdm.dm | 2 +- .../modules/mob/dead/new_player/new_player.dm | 16 +- code/modules/mob/dead/new_player/poll.dm | 26 +- code/modules/mob/dead/observer/observer.dm | 4 +- code/modules/mob/living/brain/posibrain.dm | 4 + .../living/carbon/alien/humanoid/humanoid.dm | 14 +- code/modules/mob/living/carbon/carbon.dm | 30 +- .../mob/living/carbon/human/examine.dm | 18 +- code/modules/mob/living/carbon/human/human.dm | 58 +-- .../mob/living/carbon/human/human_defense.dm | 2 +- .../carbon/human/species_types/jellypeople.dm | 340 ++++++++++++- code/modules/mob/living/living.dm | 2 +- code/modules/mob/living/silicon/ai/ai.dm | 18 +- code/modules/mob/living/silicon/ai/say.dm | 4 +- .../mob/living/silicon/pai/software.dm | 98 ++-- .../modules/mob/living/silicon/robot/robot.dm | 4 +- code/modules/mob/living/silicon/say.dm | 2 +- code/modules/mob/living/silicon/silicon.dm | 16 +- .../mob/living/simple_animal/bot/bot.dm | 8 +- .../mob/living/simple_animal/bot/cleanbot.dm | 10 +- .../mob/living/simple_animal/bot/ed209bot.dm | 14 +- .../mob/living/simple_animal/bot/floorbot.dm | 18 +- .../mob/living/simple_animal/bot/honkbot.dm | 4 +- .../mob/living/simple_animal/bot/medbot.dm | 28 +- .../mob/living/simple_animal/bot/mulebot.dm | 26 +- .../mob/living/simple_animal/bot/secbot.dm | 14 +- .../mob/living/simple_animal/friendly/dog.dm | 8 +- .../hostile/megafauna/colossus.dm | 2 +- .../mob/living/simple_animal/hostile/mimic.dm | 4 +- .../mob/living/simple_animal/parrot.dm | 4 +- code/modules/mob/mob.dm | 37 +- code/modules/mob/mob_helpers.dm | 2 +- .../file_system/programs/card.dm | 2 +- code/modules/paperwork/clipboard.dm | 125 +++++ code/modules/paperwork/filingcabinet.dm | 2 +- code/modules/paperwork/folders.dm | 2 +- code/modules/paperwork/paper.dm | 8 +- code/modules/paperwork/photocopier.dm | 12 +- code/modules/power/antimatter/control.dm | 14 +- code/modules/power/generator.dm | 2 +- code/modules/power/gravitygenerator.dm | 4 +- code/modules/power/port_gen.dm | 10 +- .../particle_accelerator/particle_control.dm | 8 +- code/modules/power/turbine.dm | 10 +- code/modules/projectiles/projectile/magic.dm | 2 +- .../chemistry/machinery/reagentgrinder.dm | 10 +- code/modules/reagents/chemistry/recipes.dm | 2 +- code/modules/recycling/sortingmachinery.dm | 2 +- code/modules/research/experimentor.dm | 22 +- code/modules/research/message_server.dm | 2 +- code/modules/research/rdconsole.dm | 178 +++---- code/modules/research/server.dm | 22 +- code/modules/shuttle/assault_pod.dm | 2 +- code/modules/shuttle/computer.dm | 6 +- code/modules/shuttle/emergency.dm | 4 +- code/modules/stock_market/computer.dm | 18 +- code/modules/tgui/subsystem.dm | 10 +- code/modules/tgui/tgui.dm | 340 +++++++++++++ 227 files changed, 5060 insertions(+), 2003 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3095262290..35fec579bf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ sudo: false env: global: - BYOND_MAJOR="511" - - BYOND_MINOR="1380" + - BYOND_MINOR="1385" - NODE_VERSION="4" - BUILD_TOOLS=false - BUILD_TESTING=false diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 2a198947dc..833aaa62cb 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -116,17 +116,17 @@ #define R_MAXPERMISSION 4096 //This holds the maximum value for a permission. It is used in iteration, so keep it updated. -#define ADMIN_QUE(user) "(?)" -#define ADMIN_FLW(user) "(FLW)" -#define ADMIN_PP(user) "(PP)" -#define ADMIN_VV(atom) "(VV)" -#define ADMIN_SM(user) "(SM)" -#define ADMIN_TP(user) "(TP)" -#define ADMIN_KICK(user) "(KICK)" -#define ADMIN_CENTCOM_REPLY(user) "(RPLY)" -#define ADMIN_SYNDICATE_REPLY(user) "(RPLY)" -#define ADMIN_SC(user) "(SC)" -#define ADMIN_SMITE(user) "(SMITE)" +#define ADMIN_QUE(user) "(?)" +#define ADMIN_FLW(user) "(FLW)" +#define ADMIN_PP(user) "(PP)" +#define ADMIN_VV(atom) "(VV)" +#define ADMIN_SM(user) "(SM)" +#define ADMIN_TP(user) "(TP)" +#define ADMIN_KICK(user) "(KICK)" +#define ADMIN_CENTCOM_REPLY(user) "(RPLY)" +#define ADMIN_SYNDICATE_REPLY(user) "(RPLY)" +#define ADMIN_SC(user) "(SC)" +#define ADMIN_SMITE(user) "(SMITE)" #define ADMIN_LOOKUP(user) "[key_name_admin(user)][ADMIN_QUE(user)]" #define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)]" #define ADMIN_SET_SD_CODE "(SETCODE)" @@ -135,7 +135,7 @@ #define ADMIN_JMP(src) "(JMP)" #define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]" #define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" -#define ADMIN_INDIVIDUALLOG(user) "(LOGS)" +#define ADMIN_INDIVIDUALLOG(user) "(LOGS)" #define ADMIN_PUNISHMENT_LIGHTNING "Lightning bolt" #define ADMIN_PUNISHMENT_BRAINDAMAGE "Brain damage" diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 0fdfbaca1c..634cfb8cda 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -466,9 +466,12 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE //Dummy mob reserve slots #define DUMMY_HUMAN_SLOT_PREFERENCES "dummy_preference_preview" + #define DUMMY_HUMAN_SLOT_MANIFEST "dummy_manifest_generation" #define PR_ANNOUNCEMENTS_PER_ROUND 5 //The number of unique PR announcements allowed per round //This makes sure that a single person can only spam 3 reopens and 3 closes before being ignored -#define MAX_PROC_DEPTH 195 // 200 proc calls deep and shit breaks, this is a bit lower to give some safety room \ No newline at end of file +#define MAX_PROC_DEPTH 195 // 200 proc calls deep and shit breaks, this is a bit lower to give some safety room + +#define DUMMY_HUMAN_SLOT_MANIFEST "dummy_manifest_generation" diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index 95d26de0ce..d30eb36132 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -37,9 +37,9 @@ #define EAVESDROP_EXTRA_RANGE 1 //how much past the specified message_range does the message get starred, whispering only // A link given to ghost alice to follow bob -#define FOLLOW_LINK(alice, bob) "(F)" -#define TURF_LINK(alice, turfy) "(T)" -#define FOLLOW_OR_TURF_LINK(alice, bob, turfy) "(F)" +#define FOLLOW_LINK(alice, bob) "(F)" +#define TURF_LINK(alice, turfy) "(T)" +#define FOLLOW_OR_TURF_LINK(alice, bob, turfy) "(F)" #define LOGSAY "say" #define LOGWHISPER "whisper" diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 554159ab22..eaa9c019ab 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -178,7 +178,7 @@ mob // Send the icon to src's local cache src<>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental diff --git a/code/_globalvars/logging.dm b/code/_globalvars/logging.dm index d06c269d28..5df8ab5ee9 100644 --- a/code/_globalvars/logging.dm +++ b/code/_globalvars/logging.dm @@ -25,7 +25,7 @@ GLOBAL_LIST_EMPTY(bombers) GLOBAL_PROTECT(bombers) GLOBAL_LIST_EMPTY(admin_log) GLOBAL_PROTECT(admin_log) -GLOBAL_LIST_EMPTY(lastsignalers) //keeps last 100 signals here in format: "[src] used \ref[src] @ location [src.loc]: [freq]/[code]" +GLOBAL_LIST_EMPTY(lastsignalers) //keeps last 100 signals here in format: "[src] used [REF(src)] @ location [src.loc]: [freq]/[code]" GLOBAL_PROTECT(lastsignalers) GLOBAL_LIST_EMPTY(lawchanges) //Stores who uploaded laws to which silicon-based lifeform, and what the law was GLOBAL_PROTECT(lawchanges) diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm index 5358073dbe..a18032a7e1 100644 --- a/code/controllers/configuration/config_entry.dm +++ b/code/controllers/configuration/config_entry.dm @@ -51,6 +51,14 @@ return FALSE return ..() +<<<<<<< HEAD +======= +/datum/config_entry/proc/VASProcCallGuard(str_val) + . = !(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "ValidateAndSet" && GLOB.LastAdminCalledTargetRef == "[REF(src)]") + if(!.) + log_admin_private("Config set of [type] to [str_val] attempted by [key_name(usr)]") + +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental /datum/config_entry/proc/ValidateAndSet(str_val) CRASH("Invalid config entry type!") diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index 278424ca79..70be8cfa0c 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -124,7 +124,7 @@ GLOBAL_PROTECT(config_dir) stat("[name]:", statclick) /datum/controller/configuration/proc/Get(entry_type) - if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Get" && GLOB.LastAdminCalledTargetRef == "\ref[src]") + if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Get" && GLOB.LastAdminCalledTargetRef == "[REF(src)]") log_admin_private("Config access of [entry_type] attempted by [key_name(usr)]") return var/datum/config_entry/E = entry_type @@ -137,7 +137,7 @@ GLOBAL_PROTECT(config_dir) return E.value /datum/controller/configuration/proc/Set(entry_type, new_val) - if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Set" && GLOB.LastAdminCalledTargetRef == "\ref[src]") + if(IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Set" && GLOB.LastAdminCalledTargetRef == "[REF(src)]") log_admin_private("Config rewrite of [entry_type] to [new_val] attempted by [key_name(usr)]") return var/datum/config_entry/E = entry_type diff --git a/code/controllers/subsystem/events.dm b/code/controllers/subsystem/events.dm index f435d7e819..cfefa1b159 100644 --- a/code/controllers/subsystem/events.dm +++ b/code/controllers/subsystem/events.dm @@ -133,7 +133,7 @@ SUBSYSTEM_DEF(events) var/magic = "" var/holiday = "" for(var/datum/round_event_control/E in SSevents.control) - dat = "
[E]" + dat = "
[E]" if(E.holidayID) holiday += dat else if(E.wizardevent) diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index ccfc041b21..eb4f2380a1 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -164,7 +164,7 @@ SUBSYSTEM_DEF(garbage) #endif var/type = D.type var/datum/qdel_item/I = items[type] - testing("GC: -- \ref[D] | [type] was unable to be GC'd --") + testing("GC: -- \ref[src] | [type] was unable to be GC'd --") I.failures++ if (GC_QUEUE_HARDDELETE) HardDelete(D) diff --git a/code/controllers/subsystem/pai.dm b/code/controllers/subsystem/pai.dm index 07797d0677..0eafc9f099 100644 --- a/code/controllers/subsystem/pai.dm +++ b/code/controllers/subsystem/pai.dm @@ -109,23 +109,23 @@ SUBSYSTEM_DEF(pai) dat += "

Please configure your pAI personality's options. Remember, what you enter here could determine whether or not the user requesting a personality chooses you!

" dat += "" dat += "" - dat += "" + dat += "" dat += "" - dat += "" + dat += "" dat += "" - dat += "" + dat += "" dat += "" - dat += "" + dat += "" dat += "
Name:[candidate.name]
\[Edit\]What you plan to call yourself. Suggestions: Any character name you would choose for a station character OR an AI.
\[Edit\]What you plan to call yourself. Suggestions: Any character name you would choose for a station character OR an AI.
Description:[candidate.description]
\[Edit\]What sort of pAI you typically play; your mannerisms, your quirks, etc. This can be as sparse or as detailed as you like.
\[Edit\]What sort of pAI you typically play; your mannerisms, your quirks, etc. This can be as sparse or as detailed as you like.
Preferred Role:[candidate.role]
\[Edit\]Do you like to partner with sneaky social ninjas? Like to help security hunt down thugs? Enjoy watching an engineer's back while he saves the station yet again? This doesn't have to be limited to just station jobs. Pretty much any general descriptor for what you'd like to be doing works here.
\[Edit\]Do you like to partner with sneaky social ninjas? Like to help security hunt down thugs? Enjoy watching an engineer's back while he saves the station yet again? This doesn't have to be limited to just station jobs. Pretty much any general descriptor for what you'd like to be doing works here.
OOC Comments:[candidate.comments]
\[Edit\]Anything you'd like to address specifically to the player reading this in an OOC manner. \"I prefer more serious RP.\", \"I'm still learning the interface!\", etc. Feel free to leave this blank if you want.
\[Edit\]Anything you'd like to address specifically to the player reading this in an OOC manner. \"I prefer more serious RP.\", \"I'm still learning the interface!\", etc. Feel free to leave this blank if you want.
" dat += "
" - dat += "

Submit Personality


" - dat += "Save Personality
" - dat += "Load Personality
" + dat += "

Submit Personality


" + dat += "Save Personality
" + dat += "Load Personality
" M << browse(dat, "window=paiRecruit") @@ -182,7 +182,7 @@ SUBSYSTEM_DEF(pai) dat += "Description:[c.description]" dat += "Preferred Role:[c.role]" dat += "OOC Comments:[c.comments]" - dat += "\[Download [c.name]\]" + dat += "\[Download [c.name]\]" dat += "" diff --git a/code/controllers/subsystem/radiation.dm b/code/controllers/subsystem/radiation.dm index 1dbe564169..da6a8cd9fc 100644 --- a/code/controllers/subsystem/radiation.dm +++ b/code/controllers/subsystem/radiation.dm @@ -10,11 +10,11 @@ PROCESSING_SUBSYSTEM_DEF(radiation) /datum/controller/subsystem/processing/radiation/proc/warn(datum/component/radioactive) if(!radioactive || QDELETED(radioactive)) return - if(warned_atoms["\ref[radioactive.parent]"]) + if(warned_atoms["[REF(radioactive.parent)]"]) return var/atom/master = radioactive.parent SSblackbox.add_details("contaminated", "[master.type]") - next_warn["\ref[master]"] = "\ref[radioactive]" + next_warn["[REF(master)]"] = "[REF(radioactive)]" var/wait_time = max(0, 500-(world.time-last_warn))+20 // wait at least 20 ticks, longer if we just messaged addtimer(CALLBACK(src, .proc/send_warn), wait_time, TIMER_UNIQUE | TIMER_OVERRIDE) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index e1828b737a..26a014d644 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -615,7 +615,7 @@ SUBSYSTEM_DEF(ticker) if(5) //every 5 ticks check if there is a slot available if(living_player_count() < hpc) if(next_in_line && next_in_line.client) - to_chat(next_in_line, "A slot has opened! You have approximately 20 seconds to join. \>\>Join Game\<\<") + to_chat(next_in_line, "A slot has opened! You have approximately 20 seconds to join. \>\>Join Game\<\<") SEND_SOUND(next_in_line, sound('sound/misc/notice1.ogg')) next_in_line.LateChoices() return diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm index 804e430ef9..2202d9a496 100644 --- a/code/controllers/subsystem/timer.dm +++ b/code/controllers/subsystem/timer.dm @@ -243,7 +243,7 @@ SUBSYSTEM_DEF(timer) while(SStimer.timer_id_dict["timerid" + num2text(id, 8)]) SStimer.timer_id_dict["timerid" + num2text(id, 8)] = src - name = "Timer: " + num2text(id, 8) + ", TTR: [timeToRun], Flags: [jointext(bitfield2list(flags, list("TIMER_UNIQUE", "TIMER_OVERRIDE", "TIMER_CLIENT_TIME", "TIMER_STOPPABLE", "TIMER_NO_HASH_WAIT")), ", ")], callBack: \ref[callBack], callBack.object: [callBack.object]\ref[callBack.object]([getcallingtype()]), callBack.delegate:[callBack.delegate]([callBack.arguments ? callBack.arguments.Join(", ") : ""])" + name = "Timer: " + num2text(id, 8) + ", TTR: [timeToRun], Flags: [jointext(bitfield2list(flags, list("TIMER_UNIQUE", "TIMER_OVERRIDE", "TIMER_CLIENT_TIME", "TIMER_STOPPABLE", "TIMER_NO_HASH_WAIT")), ", ")], callBack: [REF(callBack)], callBack.object: [callBack.object][REF(callBack.object)]([getcallingtype()]), callBack.delegate:[callBack.delegate]([callBack.arguments ? callBack.arguments.Join(", ") : ""])" if (spent) CRASH("HOLY JESUS. WHAT IS THAT? WHAT THE FUCK IS THAT?") @@ -362,9 +362,9 @@ SUBSYSTEM_DEF(timer) if (flags & TIMER_UNIQUE) var/list/hashlist if(flags & TIMER_NO_HASH_WAIT) - hashlist = list(callback.object, "(\ref[callback.object])", callback.delegate, flags & TIMER_CLIENT_TIME) + hashlist = list(callback.object, "([REF(callback.object)])", callback.delegate, flags & TIMER_CLIENT_TIME) else - hashlist = list(callback.object, "(\ref[callback.object])", callback.delegate, wait, flags & TIMER_CLIENT_TIME) + hashlist = list(callback.object, "([REF(callback.object)])", callback.delegate, wait, flags & TIMER_CLIENT_TIME) hashlist += callback.arguments hash = hashlist.Join("|||||||") diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index d377329312..55624a866c 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -199,7 +199,7 @@ SUBSYSTEM_DEF(vote) text += "\n[question]" log_vote(text) var/vp = CONFIG_GET(number/vote_period) - to_chat(world, "\n[text]\nType vote or click here to place your votes.\nYou have [DisplayTimeText(vp)] to vote.") + to_chat(world, "\n[text]\nType vote or click here to place your votes.\nYou have [DisplayTimeText(vp)] to vote.") time_remaining = round(vp/10) for(var/c in GLOB.clients) var/client/C = c @@ -232,36 +232,36 @@ SUBSYSTEM_DEF(vote) var/votes = choices[choices[i]] if(!votes) votes = 0 - . += "
  • [choices[i]] ([votes] votes)
  • " + . += "
  • [choices[i]] ([votes] votes)
  • " . += "
    " if(admin) - . += "(Cancel Vote) " + . += "(Cancel Vote) " else . += "

    Start a vote:



    " - . += "Close" + . += "Close" return . diff --git a/code/datums/browser.dm b/code/datums/browser.dm index 31e8daadb2..e8a1a17fe2 100644 --- a/code/datums/browser.dm +++ b/code/datums/browser.dm @@ -132,13 +132,13 @@ var/output = {"
    [Message]

    - [Button1]"} + [Button1]"} if (Button2) - output += {"[Button2]"} + output += {"[Button2]"} if (Button3) - output += {"[Button3]"} + output += {"[Button3]"} output += {"
    "} @@ -253,7 +253,7 @@ return var/param = "null" if(ref) - param = "\ref[ref]" + param = "[REF(ref)]" winset(user, windowid, "on-close=\".windowclose [param]\"") diff --git a/code/datums/datum.dm b/code/datums/datum.dm index cd589fd8c3..854aa40538 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -3,6 +3,7 @@ var/list/active_timers //for SStimer var/list/datum_components //for /datum/components var/ui_screen = "home" //for tgui + var/use_tag = FALSE #ifdef TESTING var/running_find_references diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index b653e5c6ae..2f13eec65b 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -25,10 +25,10 @@ /datum/proc/vv_get_dropdown() . = list() . += "---" - .["Call Proc"] = "?_src_=vars;[HrefToken()];proc_call=\ref[src]" - .["Mark Object"] = "?_src_=vars;[HrefToken()];mark_object=\ref[src]" - .["Delete"] = "?_src_=vars;[HrefToken()];delete=\ref[src]" - .["Show VV To Player"] = "?_src_=vars;[HrefToken(TRUE)];expose=\ref[src]" + .["Call Proc"] = "?_src_=vars;[HrefToken()];proc_call=[REF(src)]" + .["Mark Object"] = "?_src_=vars;[HrefToken()];mark_object=[REF(src)]" + .["Delete"] = "?_src_=vars;[HrefToken()];delete=[REF(src)]" + .["Show VV To Player"] = "?_src_=vars;[HrefToken(TRUE)];expose=[REF(src)]" /datum/proc/on_reagent_change() @@ -53,7 +53,7 @@ return var/title = "" - var/refid = "\ref[D]" + var/refid = "[REF(D)]" var/icon/sprite var/hash @@ -71,7 +71,7 @@ hash = md5(hash + AT.icon_state) src << browse_rsc(sprite, "vv[hash].png") - title = "[D] (\ref[D]) = [type]" + title = "[D] ([REF(D)]) = [type]" var/sprite_text if(sprite) @@ -394,9 +394,9 @@ name = DA[name] //name is really the index until this line else value = DA[name] - header = "
  • (E) (C) (-) " + header = "
  • (E) (C) (-) " else - header = "
  • (E) (C) (M) " + header = "
  • (E) (C) (M) " else header = "
  • " @@ -411,7 +411,7 @@ #ifdef VARSICON var/icon/I = new/icon(value) var/rnd = rand(1,10000) - var/rname = "tmp\ref[I][rnd].png" + var/rname = "tmp[REF(I)][rnd].png" usr << browse_rsc(I, rname) item = "[VV_HTML_ENCODE(name)] = ([value]) " #else @@ -423,8 +423,8 @@ var/rnd = rand(1, 10000) var/image/I = value - src << browse_rsc(I.icon, "tmp\ref[value][rnd].png") - html += "[name] = " + src << browse_rsc(I.icon, "tmp[REF(value)][rnd].png") + html += "[name] = " #else html += "[name] = /image ([value])" #endif @@ -434,14 +434,14 @@ //else if (istype(value, /client)) // var/client/C = value - // item = "[VV_HTML_ENCODE(name)] \ref[value] = [C] [C.type]" + // item = "[VV_HTML_ENCODE(name)] [REF(value)] = [C] [C.type]" else if (istype(value, /datum)) var/datum/D = value if ("[D]" != "[D.type]") //if the thing as a name var, lets use it. - item = "[VV_HTML_ENCODE(name)] \ref[value] = [D] [D.type]" + item = "[VV_HTML_ENCODE(name)] [REF(value)] = [D] [D.type]" else - item = "[VV_HTML_ENCODE(name)] \ref[value] = [D.type]" + item = "[VV_HTML_ENCODE(name)] [REF(value)] = [D.type]" else if (islist(value)) var/list/L = value @@ -459,9 +459,9 @@ items += debug_variable(key, val, level + 1, sanitize = sanitize) - item = "[VV_HTML_ENCODE(name)] = /list ([L.len])
      [items.Join()]
    " + item = "[VV_HTML_ENCODE(name)] = /list ([L.len])
      [items.Join()]
    " else - item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" + item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" else item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(value)]" @@ -561,7 +561,7 @@ var/prompt = alert("Do you want to grant [C] access to view this VV window? (they will not be able to edit or change anything nor open nested vv windows unless they themselves are an admin)", "Confirm", "Yes", "No") if (prompt != "Yes" || !usr.client) return - message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a VV window") + message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a VV window") log_admin("Admin [key_name(usr)] Showed [key_name(C)] a VV window of a [thing]") to_chat(C, "[usr.client.holder.fakekey ? "an Administrator" : "[usr.client.key]"] has granted you access to view a View Variables window") C.debug_variables(thing) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 3690de2c04..d10788fca5 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -388,7 +388,7 @@ var/out = "[name][(current&&(current.real_name!=name))?" (as [current.real_name])":""]
    " out += "Mind currently owned by key: [key] [active?"(synced)":"(not synced)"]
    " - out += "Assigned role: [assigned_role]. Edit
    " + out += "Assigned role: [assigned_role]. Edit
    " out += "Faction and special role: [special_role]
    " var/list/sections = list( @@ -412,11 +412,11 @@ text = uppertext(text) text = "[text]: " if (src in SSticker.mode.traitors) - text += "TRAITOR | loyal" + text += "TRAITOR | loyal" if (objectives.len==0) - text += "
    Objectives are empty! Randomize!" + text += "
    Objectives are empty! Randomize!" else - text += "traitor | LOYAL" + text += "traitor | LOYAL" if(current && current.client && (ROLE_TRAITOR in current.client.prefs.be_special)) text += " | Enabled in Prefs" @@ -434,7 +434,7 @@ text = uppertext(text) text = "[text]: " if(src in SSticker.mode.brothers) - text += "Brother | no" + text += "Brother | no" if(current && current.client && (ROLE_BROTHER in current.client.prefs.be_special)) text += " | Enabled in Prefs" @@ -449,19 +449,19 @@ text = uppertext(text) text = "[text]: " if ((src in SSticker.mode.changelings) && special_role) - text += "YES | no" + text += "YES | no" if (objectives.len==0) - text += "
    Objectives are empty! Randomize!" + text += "
    Objectives are empty! Randomize!" if(changeling && changeling.stored_profiles.len && (current.real_name != changeling.first_prof.name) ) - text += "
    Transform to initial appearance." + text += "
    Transform to initial appearance." else if(src in SSticker.mode.changelings) //Station Aligned Changeling - text += "YES (but not an antag) | no" + text += "YES (but not an antag) | no" if (objectives.len==0) - text += "
    Objectives are empty! Randomize!" + text += "
    Objectives are empty! Randomize!" if(changeling && changeling.stored_profiles.len && (current.real_name != changeling.first_prof.name) ) - text += "
    Transform to initial appearance." + text += "
    Transform to initial appearance." else - text += "yes | NO" + text += "yes | NO" if(current && current.client && (ROLE_CHANGELING in current.client.prefs.be_special)) text += " | Enabled in Prefs" @@ -477,7 +477,7 @@ text = uppertext(text) text = "[text]: " if (ishuman(current)) - text += "healthy | infected | HUMAN | other" + text += "healthy | infected | HUMAN | other" else if(ismonkey(current)) var/found = FALSE for(var/datum/disease/transformation/jungle_fever/JF in current.viruses) @@ -485,9 +485,9 @@ break if(found) - text += "healthy | INFECTED | human | other" + text += "healthy | INFECTED | human | other" else - text += "HEALTHY | infected | human | other" + text += "HEALTHY | infected | human | other" else text += "healthy | infected | human | OTHER" @@ -507,17 +507,17 @@ text = uppertext(text) text = "[text]: " if (src in SSticker.mode.syndicates) - text += "OPERATIVE | nanotrasen" - text += "
    To shuttle, undress, dress up." + text += "OPERATIVE | nanotrasen" + text += "
    To shuttle, undress, dress up." var/code for (var/obj/machinery/nuclearbomb/bombue in GLOB.machines) if (length(bombue.r_code) <= 5 && bombue.r_code != "LOLNO" && bombue.r_code != "ADMIN") code = bombue.r_code break if (code) - text += " Code is [code]. tell the code." + text += " Code is [code]. tell the code." else - text += "operative | NANOTRASEN" + text += "operative | NANOTRASEN" if(current && current.client && (ROLE_OPERATIVE in current.client.prefs.be_special)) text += " | Enabled in Prefs" @@ -533,10 +533,10 @@ text = uppertext(text) text = "[text]: " if (has_antag_datum(/datum/antagonist/wizard)) - text += "YES | no" - text += "
    To lair, undress" + text += "YES | no" + text += "
    To lair, undress" else - text += "yes | NO" + text += "yes | NO" if(current && current.client && (ROLE_WIZARD in current.client.prefs.be_special)) text += " | Enabled in Prefs" @@ -563,28 +563,28 @@ if(M && (M.z in GLOB.station_z_levels) && !M.stat) last_healthy_headrev = FALSE break - text += "head | not mindshielded | employee | [last_healthy_headrev ? "LAST " : ""]HEADREV | rev" - text += "
    Flash: give" + text += "head | not mindshielded | employee | [last_healthy_headrev ? "LAST " : ""]HEADREV | rev" + text += "
    Flash: give" var/list/L = current.get_contents() var/obj/item/device/assembly/flash/flash = locate() in L if (flash) if(!flash.crit_fail) - text += " | take." + text += " | take." else - text += " | take | repair." + text += " | take | repair." else text += "." - text += " Reequip (gives traitor uplink)." + text += " Reequip (gives traitor uplink)." if (objectives.len==0) - text += "
    Objectives are empty! Set to kill all heads." + text += "
    Objectives are empty! Set to kill all heads." else if(current.isloyal()) - text += "head | MINDSHIELDED | employee | headrev | rev" + text += "head | MINDSHIELDED | employee | headrev | rev" else if (has_antag_datum(/datum/antagonist/rev)) - text += "head | not mindshielded | employee | headrev | REV" + text += "head | not mindshielded | employee | headrev | REV" else - text += "head | not mindshielded | EMPLOYEE | headrev | rev" + text += "head | not mindshielded | EMPLOYEE | headrev | rev" if(current && current.client && (ROLE_REV in current.client.prefs.be_special)) text += " | Enabled in Prefs" @@ -599,8 +599,8 @@ text = uppertext(text) text = "[text]: " if(src in SSticker.mode.abductors) - text += "Abductor | human" - text += " | undress | equip" + text += "Abductor | human" + text += " | undress | equip" if(current && current.client && (ROLE_ABDUCTOR in current.client.prefs.be_special)) text += " | Enabled in Prefs" @@ -618,13 +618,13 @@ var/datum/antagonist/devil/devilinfo = has_antag_datum(ANTAG_DATUM_DEVIL) if(devilinfo) if(!devilinfo.ascendable) - text += "DEVIL | ascendable devil | sintouched | human" + text += "DEVIL | ascendable devil | sintouched | human" else - text += "DEVIL | ASCENDABLE DEVIL | sintouched | human" + text += "DEVIL | ASCENDABLE DEVIL | sintouched | human" else if(src in SSticker.mode.sintouched) - text += "devil | ascendable devil | SINTOUCHED | human" + text += "devil | ascendable devil | SINTOUCHED | human" else - text += "devil | ascendable devil | sintouched | HUMAN" + text += "devil | ascendable devil | sintouched | HUMAN" if(current && current.client && (ROLE_DEVIL in current.client.prefs.be_special)) text += " | Enabled in Prefs" @@ -641,11 +641,11 @@ var/datum/antagonist/ninja/ninjainfo = has_antag_datum(ANTAG_DATUM_NINJA) if(ninjainfo) if(ninjainfo.helping_station) - text += "employee | syndicate | NANOTRASEN | EQUIP" + text += "employee | syndicate | NANOTRASEN | EQUIP" else - text += "employee | SYNDICATE | nanotrasen | EQUIP" + text += "employee | SYNDICATE | nanotrasen | EQUIP" else - text += "EMPLOYEE | syndicate | nanotrasen | random allegiance" + text += "EMPLOYEE | syndicate | nanotrasen | random allegiance" if(current && current.client && (ROLE_NINJA in current.client.prefs.be_special)) text += " | Enabled in Prefs" else @@ -660,10 +660,10 @@ text = uppertext(text) text = "[text]: " if(iscultist(current)) - text += "not mindshielded | employee | CULTIST" - text += "
    Give tome | amulet." + text += "not mindshielded | employee | CULTIST" + text += "
    Give tome | amulet." else if(is_convertable_to_cult(current)) - text += "not mindshielded | EMPLOYEE | cultist" + text += "not mindshielded | EMPLOYEE | cultist" else text += "[!current.isloyal() ? "not mindshielded" : "MINDSHIELDED"] | EMPLOYEE | cannot serve Nar-Sie" @@ -682,10 +682,10 @@ text = uppertext(text) text = "[text]: " if(is_servant_of_ratvar(current)) - text += "not mindshielded | employee | SERVANT" - text += "
    Equip" + text += "not mindshielded | employee | SERVANT" + text += "
    Equip" else if(is_eligible_servant(current)) - text += "not mindshielded | EMPLOYEE | servant" + text += "not mindshielded | EMPLOYEE | servant" else text += "[!current.isloyal() ? "not mindshielded" : "MINDSHIELDED"] | EMPLOYEE | cannot serve Ratvar" @@ -702,14 +702,14 @@ text = "silicon" var/mob/living/silicon/robot/robot = current if (istype(robot) && robot.emagged) - text += "
    Cyborg: Is emagged! Unemag!
    0th law: [robot.laws.zeroth]" + text += "
    Cyborg: Is emagged! Unemag!
    0th law: [robot.laws.zeroth]" var/mob/living/silicon/ai/ai = current if (istype(ai) && ai.connected_robots.len) var/n_e_robots = 0 for (var/mob/living/silicon/robot/R in ai.connected_robots) if (R.emagged) n_e_robots++ - text += "
    [n_e_robots] of [ai.connected_robots.len] slaved cyborgs are emagged. Unemag" + text += "
    [n_e_robots] of [ai.connected_robots.len] slaved cyborgs are emagged. Unemag" if (SSticker.mode.config_tag == "traitorchan") if (sections["traitor"]) out += sections["traitor"]+"
    " @@ -727,12 +727,12 @@ if(((src in SSticker.mode.traitors) || (src in SSticker.mode.syndicates)) && ishuman(current)) - text = "Uplink: give" + text = "Uplink: give" var/obj/item/device/uplink/U = find_syndicate_uplink() if(U) - text += " | take" + text += " | take" if (check_rights(R_FUN, 0)) - text += ", [U.telecrystals] TC" + text += ", [U.telecrystals] TC" else text += ", [U.telecrystals] TC" text += "." //hiel grammar @@ -742,18 +742,18 @@ out += "Memory:
    " out += memory - out += "
    Edit memory
    " + out += "
    Edit memory
    " out += "Objectives:
    " if (objectives.len == 0) out += "EMPTY
    " else var/obj_count = 1 for(var/datum/objective/objective in objectives) - out += "[obj_count]: [objective.explanation_text] Edit Delete Toggle Completion
    " + out += "[obj_count]: [objective.explanation_text] Edit Delete Toggle Completion
    " obj_count++ - out += "Add objective

    " + out += "Add objective

    " - out += "Announce objectives

    " + out += "Announce objectives

    " var/datum/browser/popup = new(usr, "edit_memory", "", 600, 600) popup.set_content(out) diff --git a/code/datums/spawners_menu.dm b/code/datums/spawners_menu.dm index a9fd77d1e2..f23f0dfd07 100644 --- a/code/datums/spawners_menu.dm +++ b/code/datums/spawners_menu.dm @@ -21,7 +21,7 @@ this["desc"] = "" this["refs"] = list() for(var/spawner_obj in GLOB.mob_spawners[spawner]) - this["refs"] += "\ref[spawner_obj]" + this["refs"] += "[REF(spawner_obj)]" if(!this["desc"]) if(istype(spawner_obj, /obj/effect/mob_spawn)) var/obj/effect/mob_spawn/MS = spawner_obj diff --git a/code/game/atoms.dm b/code/game/atoms.dm index f20b13e1a3..b6cace2111 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -335,7 +335,7 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) /atom/proc/blood_splatter_index() - return "\ref[initial(icon)]-[initial(icon_state)]" + return "[REF(initial(icon))]-[initial(icon_state)]" //returns the mob's dna info as a list, to be inserted in an object's blood_DNA list /mob/living/proc/get_blood_dna_list() @@ -631,9 +631,9 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) var/turf/curturf = get_turf(src) if (curturf) .["Jump to"] = "?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[curturf.x];Y=[curturf.y];Z=[curturf.z]" - .["Add reagent"] = "?_src_=vars;[HrefToken()];addreagent=\ref[src]" - .["Trigger EM pulse"] = "?_src_=vars;[HrefToken()];emp=\ref[src]" - .["Trigger explosion"] = "?_src_=vars;[HrefToken()];explode=\ref[src]" + .["Add reagent"] = "?_src_=vars;[HrefToken()];addreagent=[REF(src)]" + .["Trigger EM pulse"] = "?_src_=vars;[HrefToken()];emp=[REF(src)]" + .["Trigger explosion"] = "?_src_=vars;[HrefToken()];explode=[REF(src)]" /atom/proc/drop_location() var/atom/L = loc diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index b05a1d78f1..353b5726ce 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -523,7 +523,7 @@ /atom/movable/vv_get_dropdown() . = ..() . -= "Jump to" - .["Follow"] = "?_src_=holder;[HrefToken()];adminplayerobservefollow=\ref[src]" + .["Follow"] = "?_src_=holder;[HrefToken()];adminplayerobservefollow=[REF(src)]" /atom/movable/proc/ex_check(ex_id) if(!ex_id) diff --git a/code/game/communications.dm b/code/game/communications.dm index 19c3f87460..80c4728a36 100644 --- a/code/game/communications.dm +++ b/code/game/communications.dm @@ -147,6 +147,7 @@ GLOBAL_LIST_INIT(reverseradiochannels, list( "1357" = "Engineering", "1359" = "Security", "1337" = "CentCom", +<<<<<<< HEAD "1213" = "Syndicate", "1347" = "Supply", "1349" = "Service", @@ -292,6 +293,153 @@ GLOBAL_VAR_INIT(RADIO_MAGNETS, "9") /datum/signal/proc/debug_print() if (source) +======= + "1213" = "Syndicate", + "1347" = "Supply", + "1349" = "Service", + "1447" = "AI Private", + "1215" = "Red Team", + "1217" = "Blue Team" +)) + +//depenging helpers +GLOBAL_VAR_CONST(SYND_FREQ, 1213) //nuke op frequency, coloured dark brown in chat window +GLOBAL_VAR_CONST(SUPP_FREQ, 1347) //supply, coloured light brown in chat window +GLOBAL_VAR_CONST(SERV_FREQ, 1349) //service, coloured green in chat window +GLOBAL_VAR_CONST(SCI_FREQ, 1351) //science, coloured plum in chat window +GLOBAL_VAR_CONST(COMM_FREQ, 1353) //command, colored gold in chat window +GLOBAL_VAR_CONST(MED_FREQ, 1355) //medical, coloured blue in chat window +GLOBAL_VAR_CONST(ENG_FREQ, 1357) //engineering, coloured orange in chat window +GLOBAL_VAR_CONST(SEC_FREQ, 1359) //security, coloured red in chat window +GLOBAL_VAR_CONST(CENTCOM_FREQ, 1337) //centcom frequency, coloured grey in chat window +GLOBAL_VAR_CONST(AIPRIV_FREQ, 1447) //AI private, colored magenta in chat window +GLOBAL_VAR_CONST(REDTEAM_FREQ, 1215) // red team (CTF) frequency, coloured red +GLOBAL_VAR_CONST(BLUETEAM_FREQ, 1217) // blue team (CTF) frequency, coloured blue + +#define TRANSMISSION_WIRE 0 +#define TRANSMISSION_RADIO 1 + +/* filters */ +GLOBAL_VAR_INIT(RADIO_TO_AIRALARM, "1") +GLOBAL_VAR_INIT(RADIO_FROM_AIRALARM, "2") +GLOBAL_VAR_INIT(RADIO_CHAT, "3") //deprecated +GLOBAL_VAR_INIT(RADIO_ATMOSIA, "4") +GLOBAL_VAR_INIT(RADIO_NAVBEACONS, "5") +GLOBAL_VAR_INIT(RADIO_AIRLOCK, "6") +GLOBAL_VAR_INIT(RADIO_MAGNETS, "9") + +/datum/radio_frequency + + var/frequency as num + var/list/list/obj/devices = list() + +//If range > 0, only post to devices on the same z_level and within range +//Use range = -1, to restrain to the same z_level without limiting range +/datum/radio_frequency/proc/post_signal(obj/source as obj|null, datum/signal/signal, filter = null as text|null, range = null as num|null) + + //Apply filter to the signal. If none supply, broadcast to every devices + //_default channel is always checked + var/list/filter_list + + if(filter) + filter_list = list(filter,"_default") + else + filter_list = devices + + //If checking range, find the source turf + var/turf/start_point + if(range) + start_point = get_turf(source) + if(!start_point) + return 0 + + //Send the data + for(var/current_filter in filter_list) + for(var/obj/device in devices[current_filter]) + if(device == source) + continue + if(range) + var/turf/end_point = get_turf(device) + if(!end_point) + continue + if(start_point.z != end_point.z || (range > 0 && get_dist(start_point, end_point) > range)) + continue + device.receive_signal(signal, TRANSMISSION_RADIO, frequency) + +/datum/radio_frequency/proc/add_listener(obj/device, filter as text|null) + if (!filter) + filter = "_default" + + var/list/devices_line = devices[filter] + if(!devices_line) + devices_line = list() + devices[filter] = devices_line + devices_line += device + + +/datum/radio_frequency/proc/remove_listener(obj/device) + for(var/devices_filter in devices) + var/list/devices_line = devices[devices_filter] + if(!devices_line) + devices -= devices_filter + devices_line -= device + if(!devices_line.len) + devices -= devices_filter + + + + + +/client/proc/print_pointers() + set name = "Debug Signals" + set category = "Debug" + + if(!holder) + return + + var/datum/signal/S + to_chat(src, "There are [S.pointers.len] pointers:") + for(var/p in S.pointers) + to_chat(src, p) + S = locate(p) + if(istype(S)) + to_chat(src, S.debug_print()) + +/obj/proc/receive_signal(datum/signal/signal, receive_method, receive_param) + return + +/datum/signal + var/obj/source + + var/transmission_method = 0 + //0 = wire + //1 = radio transmission + //2 = subspace transmission + + var/data = list() + var/encryption + + var/frequency = 0 + var/static/list/pointers = list() + +/datum/signal/New() + ..() + pointers += "[REF(src)]" + +/datum/signal/Destroy() + pointers -= "[REF(src)]" + return ..() + +/datum/signal/proc/copy_from(datum/signal/model) + source = model.source + transmission_method = model.transmission_method + data = model.data + encryption = model.encryption + frequency = model.frequency + +/datum/signal/proc/debug_print() + if (source) +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental . = "signal = {source = '[source]' [COORD(source)]\n" else . = "signal = {source = '[source]' ()\n" diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm index 8a0a622a63..2a1a196b0e 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/game/gamemodes/antag_spawner.dm @@ -29,13 +29,13 @@ dat += "Using this contract, you may summon an apprentice to aid you on your mission.
    " dat += "If you are unable to establish contact with your apprentice, you can feed the contract back to the spellbook to refund your points.
    " dat += "Which school of magic is your apprentice studying?:
    " - dat += "Destruction
    " + dat += "Destruction
    " dat += "Your apprentice is skilled in offensive magic. They know Magic Missile and Fireball.
    " - dat += "Bluespace Manipulation
    " + dat += "Bluespace Manipulation
    " dat += "Your apprentice is able to defy physics, melting through solid objects and travelling great distances in the blink of an eye. They know Teleport and Ethereal Jaunt.
    " - dat += "Healing
    " + dat += "Healing
    " dat += "Your apprentice is training to cast spells that will aid your survival. They know Forcewall and Charge and come with a Staff of Healing.
    " - dat += "Robeless
    " + dat += "Robeless
    " dat += "Your apprentice is training to cast spells without their robes. They know Knock and Mindswap.
    " user << browse(dat, "window=radio") onclose(user, "radio") diff --git a/code/game/gamemodes/cult/supply.dm b/code/game/gamemodes/cult/supply.dm index 47807fa93a..3720e496ea 100644 --- a/code/game/gamemodes/cult/supply.dm +++ b/code/game/gamemodes/cult/supply.dm @@ -22,7 +22,7 @@ dat += "
    " for(var/s in possible_summons) var/datum/cult_supply/S = s - dat += "[initial(S.invocation)] - [initial(S.desc)]
    " + dat += "[initial(S.invocation)] - [initial(S.desc)]
    " var/datum/browser/popup = new(user, "talisman", "", 400, 400) popup.set_content(dat.Join("")) popup.open() diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 26c3810b42..c8b98319f0 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -160,7 +160,7 @@ if(CONFIG_GET(flag/protect_assistant_from_antagonist)) replacementmode.restricted_jobs += "Assistant" - message_admins("The roundtype will be converted. If you have other plans for the station or feel the station is too messed up to inhabit stop the creation of antags or end the round now.") + message_admins("The roundtype will be converted. If you have other plans for the station or feel the station is too messed up to inhabit stop the creation of antags or end the round now.") . = 1 sleep(rand(600,1800)) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 92dca5d3c9..a2513d776f 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -133,9 +133,9 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( dat += "Install Module:
    " dat += "The number afterwards is the amount of processing time it consumes.
    " for(var/datum/AI_Module/large/module in possible_modules) - dat += "[module.module_name]\[?\] ([module.cost])
    " + dat += "[module.module_name]\[?\] ([module.cost])
    " for(var/datum/AI_Module/small/module in possible_modules) - dat += "[module.module_name]\[?\] ([module.cost])
    " + dat += "[module.module_name]\[?\] ([module.cost])
    " dat += "
    " if(temp) dat += "[temp]" diff --git a/code/game/gamemodes/miniantags/abduction/machinery/console.dm b/code/game/gamemodes/miniantags/abduction/machinery/console.dm index d44ff57c96..f243f161c3 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/console.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/console.dm @@ -43,20 +43,20 @@ dat += "Collected Samples : [points]
    " dat += "Gear Credits: [credits]
    " dat += "Transfer data in exchange for supplies:
    " - dat += "Advanced Baton
    " - dat += "Agent Helmet
    " - dat += "Agent Vest
    " - dat += "Radio Silencer
    " - dat += "Science Tool
    " + dat += "Advanced Baton
    " + dat += "Agent Helmet
    " + dat += "Agent Vest
    " + dat += "Radio Silencer
    " + dat += "Science Tool
    " else dat += "NO EXPERIMENT MACHINE DETECTED
    " if(pad) dat += "Emergency Teleporter System." dat += "Consider using primary observation console first." - dat += "Activate Teleporter
    " + dat += "Activate Teleporter
    " if(gizmo && gizmo.marked) - dat += "Retrieve Mark
    " + dat += "Retrieve Mark
    " else dat += "Retrieve Mark
    " else @@ -66,15 +66,15 @@ dat += "

    Agent Vest Mode


    " var/mode = vest.mode if(mode == VEST_STEALTH) - dat += "Combat" + dat += "Combat" dat += "Stealth" else dat += "Combat" - dat += "Stealth" + dat += "Stealth" dat+="
    " - dat += "Select Agent Vest Disguise
    " - dat += "[vest.flags_1 & NODROP_1 ? "Unlock" : "Lock"] Vest
    " + dat += "Select Agent Vest Disguise
    " + dat += "[vest.flags_1 & NODROP_1 ? "Unlock" : "Lock"] Vest
    " else dat += "NO AGENT VEST DETECTED" var/datum/browser/popup = new(user, "computer", "Abductor Console", 400, 500) diff --git a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm index 2b012e5f81..ae095c12e6 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm @@ -48,7 +48,7 @@ item_count++ var/g_color = gland_colors[i] var/amount = amounts[i] - dat += "[amount]" + dat += "[amount]" if(item_count == 4) // Four boxes per line dat +="

    " item_count = 0 diff --git a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm index 73a696fb3a..da445b94ce 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm @@ -104,9 +104,9 @@ dat += "
    " dat += "" //Avert your eyes dat += "" - dat += "Probe
    " - dat += "Dissect
    " - dat += "Analyze
    " + dat += "Probe
    " + dat += "Dissect
    " + dat += "Analyze
    " dat += "
    " else dat += "Experiment " @@ -127,8 +127,8 @@ dat += "
    " dat += "[flash]" dat += "
    " - dat += "Scan" - dat += "Close" : "open=1'>Open"]" + dat += "Scan" + dat += "Close" : "open=1'>Open"]" var/datum/browser/popup = new(user, "experiment", "Probing Console", 300, 300) popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) popup.set_content(dat) diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 0251d17398..3ac0f7b29b 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -77,6 +77,7 @@ icon = 'icons/obj/machines/nuke_terminal.dmi' icon_state = "nuclearbomb_base" anchored = TRUE //stops it being moved + use_tag = TRUE /obj/machinery/nuclearbomb/syndicate //ui_style = "syndicate" // actually the nuke op bomb is a stole nt bomb diff --git a/code/game/gamemodes/sandbox/airlock_maker.dm b/code/game/gamemodes/sandbox/airlock_maker.dm index aafbffa82e..6615180765 100644 --- a/code/game/gamemodes/sandbox/airlock_maker.dm +++ b/code/game/gamemodes/sandbox/airlock_maker.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /* This is for the sandbox for now, maybe useful later for an actual thing? @@ -137,3 +138,144 @@ return interact() +======= +/* + This is for the sandbox for now, + maybe useful later for an actual thing? + -Sayu +*/ + +/obj/structure/door_assembly + var/datum/airlock_maker/maker = null + +/obj/structure/door_assembly/attack_hand() + ..() + if(maker) + maker.interact() + +/datum/airlock_maker + var/obj/structure/door_assembly/linked = null + + var/list/access_used = null + var/require_all = 1 + + var/paintjob = "none" + var/glassdoor = 0 + + var/doorname = "airlock" + +/datum/airlock_maker/New(var/atom/target_loc) + linked = new(target_loc) + linked.maker = src + linked.anchored = FALSE + access_used = list() + + interact() + +/datum/airlock_maker/proc/linkpretty(href,desc,active) + if(!desc) + var/static/list/defaults = list("No","Yes") + desc = defaults[active+1] + if(active) + return "[desc]" + return "[desc]" + +/datum/airlock_maker/proc/interact() + var/list/leftcolumn = list() + var/list/rightcolumn = list() + leftcolumn += "Required Access" + for(var/access in get_all_accesses()) + leftcolumn += linkpretty("access=[access]",get_access_desc(access),access in access_used) + leftcolumn += "Require all listed accesses: [linkpretty("reqall",null,require_all)]" + + rightcolumn += "Paintjob" + for(var/option in list("none","engineering","atmos","security","command","medical","research","mining","maintenance","external","highsecurity")) + rightcolumn += linkpretty("paint=[option]",option,option == paintjob) + rightcolumn += "Glass door: " + linkpretty("glass",null,glassdoor) + "

    " + var/length = max(leftcolumn.len,rightcolumn.len) + + var/dat = "You may move the model airlock around. A new airlock will be built in its space when you click done, below.

    " + dat += "Door name: \"[doorname]\"" + dat += "" + for(var/i=1; i<=length; i++) + dat += "" + + dat += "
    " + if(i<=leftcolumn.len) + dat += leftcolumn[i] + dat += "" + if(i<=rightcolumn.len) + dat += rightcolumn[i] + dat += "

    Finalize Airlock Construction | Cancel and Destroy Airlock" + usr << browse(dat,"window=airlockmaker") + +/datum/airlock_maker/Topic(var/href,var/list/href_list) + if(!usr) + return + if(!src || !linked || !linked.loc) + usr << browse(null,"window=airlockmaker") + return + + if("rename" in href_list) + var/newname = stripped_input(usr,"New airlock name:","Name the airlock",doorname) + if(newname) + doorname = newname + if("access" in href_list) + var/value = text2num(href_list["access"]) + access_used ^= value + if("reqall" in href_list) + require_all = !require_all + if("paint" in href_list) + paintjob = href_list["paint"] + if("glass" in href_list) + glassdoor = !glassdoor + + if("cancel" in href_list) + usr << browse(null,"window=airlockmaker") + qdel(linked) + qdel(src) + return + + if("done" in href_list) + usr << browse(null,"window=airlockmaker") + var/turf/t_loc = linked.loc + qdel(linked) + if(!istype(t_loc)) + return + + var/target_type = "/obj/machinery/door/airlock" + if(glassdoor) + if(paintjob != "none") + if(paintjob in list("external","highsecurity","maintenance")) // no glass version + target_type += "/[paintjob]" + else + target_type += "/glass_[paintjob]" + else + target_type += "/glass" + else if(paintjob != "none") + target_type += "/[paintjob]" + var/final = target_type + target_type = text2path(final) + if(!target_type) + to_chat(usr, "Didn't work, contact Sayu with this: [final]") + usr << browse(null,"window=airlockmaker") + return + + var/obj/machinery/door/D = new target_type(t_loc) + + D.name = doorname + + if(access_used.len == 0) + D.req_access = null + D.req_one_access = null + else if(require_all) + D.req_access = access_used.Copy() + D.req_one_access = null + else + D.req_access = null + D.req_one_access = access_used.Copy() + + return + + interact() +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm index 15cd346b2d..cf2b867941 100644 --- a/code/game/gamemodes/sandbox/h_sandbox.dm +++ b/code/game/gamemodes/sandbox/h_sandbox.dm @@ -77,26 +77,26 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE) hsbinfo = "
    Sandbox Panel

    " if(admin) hsbinfo += "Administration
    " - hsbinfo += "- Toggle Object Spawning
    " - hsbinfo += "- Toggle Item Spawn Panel Auto-close
    " + hsbinfo += "- Toggle Object Spawning
    " + hsbinfo += "- Toggle Item Spawn Panel Auto-close
    " hsbinfo += "Canister Spawning
    " - hsbinfo += "- Spawn Plasma Canister
    " - hsbinfo += "- Spawn CO2 Canister
    " - hsbinfo += "- Spawn Nitrogen Canister
    " - hsbinfo += "- Spawn N2O Canister
    " + hsbinfo += "- Spawn Plasma Canister
    " + hsbinfo += "- Spawn CO2 Canister
    " + hsbinfo += "- Spawn Nitrogen Canister
    " + hsbinfo += "- Spawn N2O Canister
    " else hsbinfo += "Some item spawning may be disabled by the administrators.
    " hsbinfo += "Only administrators may spawn dangerous canisters.
    " for(var/T in hrefs) var/href = hrefs[T] if(href) - hsbinfo += "- [T]
    " + hsbinfo += "- [T]
    " else hsbinfo += "
    [T]
    " hsbinfo += "
    " - hsbinfo += "- Spawn Clothing...
    " - hsbinfo += "- Spawn Reagent Container...
    " - hsbinfo += "- Spawn Other Item...

    " + hsbinfo += "- Spawn Clothing...
    " + hsbinfo += "- Spawn Reagent Container...
    " + hsbinfo += "- Spawn Other Item...

    " usr << browse(hsbinfo, "window=hsbpanel") @@ -235,12 +235,12 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE) if(!GLOB.hsboxspawn) return if(!clothinfo) - clothinfo = "Clothing (Reagent Containers) (Other Items)

    " + clothinfo = "Clothing (Reagent Containers) (Other Items)

    " var/list/all_items = subtypesof(/obj/item/clothing) for(var/typekey in spawn_forbidden) all_items -= typesof(typekey) for(var/O in reverseRange(all_items)) - clothinfo += "[O]
    " + clothinfo += "[O]
    " usr << browse(clothinfo,"window=sandbox") @@ -249,12 +249,12 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE) if(!GLOB.hsboxspawn) return if(!reaginfo) - reaginfo = "Reagent Containers (Clothing) (Other Items)

    " + reaginfo = "Reagent Containers (Clothing) (Other Items)

    " var/list/all_items = subtypesof(/obj/item/reagent_containers) for(var/typekey in spawn_forbidden) all_items -= typesof(typekey) for(var/O in reverseRange(all_items)) - reaginfo += "[O]
    " + reaginfo += "[O]
    " usr << browse(reaginfo,"window=sandbox") @@ -263,13 +263,13 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE) if(!GLOB.hsboxspawn) return if(!objinfo) - objinfo = "Other Items (Clothing) (Reagent Containers)

    " + objinfo = "Other Items (Clothing) (Reagent Containers)

    " var/list/all_items = subtypesof(/obj/item/) - typesof(/obj/item/clothing) - typesof(/obj/item/reagent_containers) for(var/typekey in spawn_forbidden) all_items -= typesof(typekey) for(var/O in reverseRange(all_items)) - objinfo += "[O]
    " + objinfo += "[O]
    " usr << browse(objinfo,"window=sandbox") diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 776b5d6981..484961b6f8 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -212,7 +212,7 @@ /proc/makeNewConstruct(mob/living/simple_animal/hostile/construct/ctype, mob/target, mob/stoner = null, cultoverride = 0, loc_override = null) var/mob/living/simple_animal/hostile/construct/newstruct = new ctype((loc_override) ? (loc_override) : (get_turf(target))) if(stoner) - newstruct.faction |= "\ref[stoner]" + newstruct.faction |= "[REF(stoner)]" newstruct.master = stoner var/datum/action/innate/seek_master/SM = new() SM.Grant(newstruct) @@ -244,7 +244,7 @@ S.key = T.key S.language_holder = U.language_holder.copy(S) if(U) - S.faction |= "\ref[U]" //Add the master as a faction, allowing inter-mob cooperation + S.faction |= "[REF(U)]" //Add the master as a faction, allowing inter-mob cooperation if(U && iscultist(U)) SSticker.mode.add_cultist(S.mind, 0) S.cancel_camera() diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 0838bfeed6..daa45caf72 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -652,7 +652,7 @@ var/list/cat_dat = list() for(var/category in categories) cat_dat[category] = "
    " - dat += "
  • [category]
  • " + dat += "
  • [category]
  • " dat += "
  • Points remaining : [uses]
  • " dat += "" @@ -663,11 +663,11 @@ E = entries[i] spell_info += E.GetInfo() if(E.CanBuy(user,src)) - spell_info+= "[E.buy_word]
    " + spell_info+= "[E.buy_word]
    " else spell_info+= "Can't [E.buy_word]
    " if(E.CanRefund(user,src)) - spell_info+= "Refund
    " + spell_info+= "Refund
    " spell_info += "
    " if(cat_dat[E.category]) cat_dat[E.category] += spell_info diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index 673591aef1..84a18e3352 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -107,8 +107,8 @@ GLOBAL_LIST_EMPTY(announcement_systems) return - var/contents = "Arrival Announcement: ([(arrivalToggle ? "On" : "Off")])
    \n[arrival]

    \n" - contents += "Departmental Head Announcement: ([(newheadToggle ? "On" : "Off")])
    \n[newhead]

    \n" + var/contents = "Arrival Announcement: ([(arrivalToggle ? "On" : "Off")])
    \n[arrival]

    \n" + contents += "Departmental Head Announcement: ([(newheadToggle ? "On" : "Off")])
    \n[newhead]

    \n" var/datum/browser/popup = new(user, "announcement_config", "Automated Announcement Configuration", 370, 220) popup.set_content(contents) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 44c6812d05..d783be292e 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -240,8 +240,8 @@ var/dat = "

    Autolathe Menu:


    " dat += materials_printout() - dat += "
    \ - \ + dat += "\ + \ \ \ \ @@ -256,14 +256,14 @@ dat += "" line_length = 1 - dat += "[C]" + dat += "[C]" line_length++ dat += "
    " return dat /obj/machinery/autolathe/proc/category_win(mob/user,selected_category) - var/dat = "Return to main menu" + var/dat = "Return to main menu" dat += "

    Browsing [selected_category]:


    " dat += materials_printout() @@ -275,22 +275,22 @@ if(disabled || !can_build(D)) dat += "[D.name]" else - dat += "[D.name]" + dat += "[D.name]" if(ispath(D.build_path, /obj/item/stack)) GET_COMPONENT(materials, /datum/component/material_container) var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY) if (max_multiplier>10 && !disabled) - dat += " x10" + dat += " x10" if (max_multiplier>25 && !disabled) - dat += " x25" + dat += " x25" if(max_multiplier > 0 && !disabled) - dat += " x[max_multiplier]" + dat += " x[max_multiplier]" else if(!disabled && can_build(D, 5)) - dat += " x5" + dat += " x5" if(!disabled && can_build(D, 10)) - dat += " x10" + dat += " x10" dat += "[get_design_cost(D)]
    " @@ -298,7 +298,7 @@ return dat /obj/machinery/autolathe/proc/search_win(mob/user) - var/dat = "Return to main menu" + var/dat = "Return to main menu" dat += "

    Search results:


    " dat += materials_printout() @@ -307,17 +307,17 @@ if(disabled || !can_build(D)) dat += "[D.name]" else - dat += "[D.name]" + dat += "[D.name]" if(ispath(D.build_path, /obj/item/stack)) GET_COMPONENT(materials, /datum/component/material_container) var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY) if (max_multiplier>10 && !disabled) - dat += " x10" + dat += " x10" if (max_multiplier>25 && !disabled) - dat += " x25" + dat += " x25" if(max_multiplier > 0 && !disabled) - dat += " x[max_multiplier]" + dat += " x[max_multiplier]" dat += "[get_design_cost(D)]
    " diff --git a/code/game/machinery/bank_machine.dm b/code/game/machinery/bank_machine.dm index 9d446aa77c..b8d20b0c59 100644 --- a/code/game/machinery/bank_machine.dm +++ b/code/game/machinery/bank_machine.dm @@ -62,11 +62,11 @@ var/dat = "[world.name] secure vault. Authorized personnel only.
    " dat += "Current Balance: [SSshuttle.points] credits.
    " if(!siphoning) - dat += "Siphon Credits
    " + dat += "Siphon Credits
    " else - dat += "Halt Credit Siphon
    " + dat += "Halt Credit Siphon
    " - dat += "Close" + dat += "Close" var/datum/browser/popup = new(user, "computer", "Bank Vault", 300, 200) popup.set_content("
    [dat]
    ") diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 80d50cfb17..17a65f7033 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -203,7 +203,7 @@ if(U.name == "Unknown") to_chat(AI, "[U] holds \a [itemname] up to one of your cameras ...") else - to_chat(AI, "[U] holds \a [itemname] up to one of your cameras ...") + to_chat(AI, "[U] holds \a [itemname] up to one of your cameras ...") AI.last_paper_seen = "[itemname][info]" else if (O.client && O.client.eye == src) to_chat(O, "[U] holds \a [itemname] up to one of the cameras ...") diff --git a/code/game/machinery/camera/motion.dm b/code/game/machinery/camera/motion.dm index 6ac7e1249d..68b3f284e4 100644 --- a/code/game/machinery/camera/motion.dm +++ b/code/game/machinery/camera/motion.dm @@ -32,7 +32,7 @@ if (detectTime == 0) detectTime = world.time // start the clock var/list/targets = getTargetList() - targets |= "\ref[target]" + targets |= "[REF(target)]" return 1 /obj/machinery/camera/Destroy() @@ -43,7 +43,7 @@ /obj/machinery/camera/proc/lostTarget(mob/target) var/list/targets = getTargetList() - targets -= "\ref[target]" + targets -= "[REF(target)]" if (targets.len == 0) cancelAlarm() diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index cb5ea9df76..865a7f4efa 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -307,7 +307,7 @@ comp.AttachCloner(src) else P.buffer = src - to_chat(user, "-% Successfully stored \ref[P.buffer] [P.buffer.name] in buffer %-") + to_chat(user, "-% Successfully stored [REF(P.buffer)] [P.buffer.name] in buffer %-") return var/mob/living/mob_occupant = occupant diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index b590763ffe..920dd118c5 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -61,10 +61,10 @@ else dat += "AI functional" if (!src.active) - dat += {"

    Begin Reconstruction"} + dat += {"

    Begin Reconstruction"} else dat += "

    Reconstruction in process, please wait.
    " - dat += {"
    Close"} + dat += {"
    Close"} var/datum/browser/popup = new(user, "computer", "AI System Integrity Restorer", 400, 500) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index c93c96429c..aa644eb738 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -9,7 +9,7 @@ var/list/apcs //APCs the computer has access to var/mob/living/operator //Who's operating the computer right now var/obj/machinery/power/apc/active_apc //The APC we're using right now - var/list/filters //For sorting the results + var/list/result_filters //For sorting the results var/checking_logs = 0 var/list/logs var/authenticated = 0 @@ -18,7 +18,7 @@ /obj/machinery/computer/apc_control/Initialize() . = ..() apcs = list() //To avoid BYOND making the list run through a ton of procs - filters = list("Name" = null, "Charge Above" = null, "Charge Below" = null, "Responsive" = null) + result_filters = list("Name" = null, "Charge Above" = null, "Charge Below" = null, "Responsive" = null) /obj/machinery/computer/apc_control/process() apcs = list() //Clear the list every tick @@ -52,28 +52,28 @@ if(!checking_logs) dat += "Logged in as [auth_id].

    " dat += "Filters
    " - dat += "Name: [filters["Name"] ? filters["Name"] : "None set"]
    " - dat += "Charge: \>[filters["Charge Above"] ? filters["Charge Above"] : "NaN"]% and \<[filters["Charge Below"] ? filters["Charge Below"] : "NaN"]%
    " - dat += "Accessible: [filters["Responsive"] ? "Non-Responsive Only" : "All"]

    " + dat += "Name: [result_filters["Name"] ? result_filters["Name"] : "None set"]
    " + dat += "Charge: \>[result_filters["Charge Above"] ? result_filters["Charge Above"] : "NaN"]% and \<[result_filters["Charge Below"] ? result_filters["Charge Below"] : "NaN"]%
    " + dat += "Accessible: [result_filters["Responsive"] ? "Non-Responsive Only" : "All"]

    " for(var/A in apcs) var/obj/machinery/power/apc/APC = apcs[A] - if(filters["Name"] && !findtext(APC.name, filters["Name"]) && !findtext(APC.area.name, filters["Name"])) + if(result_filters["Name"] && !findtext(APC.name, result_filters["Name"]) && !findtext(APC.area.name, result_filters["Name"])) continue - if(filters["Charge Above"] && (APC.cell.charge / APC.cell.maxcharge) < filters["Charge Above"] / 100) + if(result_filters["Charge Above"] && (APC.cell.charge / APC.cell.maxcharge) < result_filters["Charge Above"] / 100) continue - if(filters["Charge Below"] && (APC.cell.charge / APC.cell.maxcharge) > filters["Charge Below"] / 100) + if(result_filters["Charge Below"] && (APC.cell.charge / APC.cell.maxcharge) > result_filters["Charge Below"] / 100) continue - if(filters["Responsive"] && !APC.aidisabled) + if(result_filters["Responsive"] && !APC.aidisabled) continue - dat += "[A]
    \ + dat += "[A]
    \ Charge: [DisplayPower(APC.cell.charge)] / [DisplayPower(APC.cell.maxcharge)] ([round((APC.cell.charge / APC.cell.maxcharge) * 100)]%)
    \ Area: [APC.area]
    \ [APC.aidisabled || APC.panel_open ? "APC does not respond to interface query." : "APC responds to interface query."]

    " - dat += "Check Logs
    " - dat += "Log Out
    " + dat += "Check Logs
    " + dat += "Log Out
    " if(emagged) dat += "WARNING: Logging functionality partially disabled from outside source.
    " - dat += "Restore logging functionality?
    " + dat += "Restore logging functionality?
    " else if(logs.len) for(var/entry in logs) @@ -81,11 +81,11 @@ else dat += "No activity has been recorded at this time.
    " if(emagged) - dat += "@#%! CLEAR LOGS" - dat += "Return" + dat += "@#%! CLEAR LOGS" + dat += "Return" operator = user else - dat = "Please swipe a valid ID to log in..." + dat = "Please swipe a valid ID to log in..." var/datum/browser/popup = new(user, "apc_control", name, 600, 400) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) @@ -153,7 +153,7 @@ return log_activity("changed name filter to \"[new_filter]\"") playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) - filters["Name"] = new_filter + result_filters["Name"] = new_filter if(href_list["above_filter"]) playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) var/new_filter = input(usr, "Enter a percentage from 1-100 to sort by (greater than).", name) as null|num @@ -163,7 +163,7 @@ if(new_filter) new_filter = Clamp(new_filter, 0, 100) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) - filters["Charge Above"] = new_filter + result_filters["Charge Above"] = new_filter if(href_list["below_filter"]) playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) var/new_filter = input(usr, "Enter a percentage from 1-100 to sort by (lesser than).", name) as null|num @@ -173,13 +173,13 @@ if(new_filter) new_filter = Clamp(new_filter, 0, 100) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) - filters["Charge Below"] = new_filter + result_filters["Charge Below"] = new_filter if(href_list["access_filter"]) - if(isnull(filters["Responsive"])) - filters["Responsive"] = 1 + if(isnull(result_filters["Responsive"])) + result_filters["Responsive"] = 1 log_activity("sorted by non-responsive APCs only") else - filters["Responsive"] = !filters["Responsive"] + result_filters["Responsive"] = !result_filters["Responsive"] log_activity("sorted by all APCs") playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) if(href_list["check_logs"]) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 7748022da1..4203971522 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -134,18 +134,18 @@ if(..()) return user.set_machine(src) - var/dat = "Close" + var/dat = "Close" dat += "

    [enemy_name]

    " dat += "

    [temp]

    " dat += "
    Health: [player_hp] | Magic: [player_mp] | Enemy Health: [enemy_hp]
    " if (gameover) - dat += "
    New Game" + dat += "
    New Game" else - dat += "
    Attack | " - dat += "Heal | " - dat += "Recharge Power" + dat += "
    Attack | " + dat += "Heal | " + dat += "Recharge Power" dat += "
    " var/datum/browser/popup = new(user, "arcade", "Space Villian 2000") @@ -439,7 +439,7 @@ name = "The Orion Trail" desc = "Learn how our ancestors got to Orion, and have fun in the process!" - dat += "

    May They Rest In Peace

    " + dat += "

    May They Rest In Peace

    " else if(event) dat = eventdat else if(gameStatus == ORION_STATUS_NORMAL) @@ -452,16 +452,16 @@ dat += "
    Food: [food] | Fuel: [fuel]" dat += "
    Engine Parts: [engine] | Hull Panels: [hull] | Electronics: [electronics]" if(turns == 7) - dat += "

    Go Around Continue

    " + dat += "

    Go Around Continue

    " else - dat += "

    Continue

    " - dat += "

    Kill a Crewmember

    " - dat += "

    Close

    " + dat += "

    Continue

    " + dat += "

    Kill a Crewmember

    " + dat += "

    Close

    " else dat = "

    The Orion Trail

    " dat += "

    Experience the journey of your ancestors!



    " - dat += "
    New Game
    " - dat += "

    Close

    " + dat += "
    New Game
    " + dat += "

    Close

    " var/datum/browser/popup = new(user, "arcade", "The Orion Trail",400,700) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) @@ -769,41 +769,41 @@ eventdat += "
    [deadname] tried to fight back, but was killed." else eventdat += "
    Fortunately, you fended them off without any trouble." - eventdat += "

    Continue

    " - eventdat += "

    Close

    " + eventdat += "

    Continue

    " + eventdat += "

    Close

    " canContinueEvent = 1 if(ORION_TRAIL_FLUX) eventdat += "This region of space is highly turbulent.
    If we go slowly we may avoid more damage, but if we keep our speed we won't waste supplies." eventdat += "
    What will you do?" - eventdat += "

    Slow Down Continue

    " - eventdat += "

    Close

    " + eventdat += "

    Slow Down Continue

    " + eventdat += "

    Close

    " if(ORION_TRAIL_ILLNESS) eventdat += "A deadly illness has been contracted!" var/deadname = remove_crewmember() eventdat += "
    [deadname] was killed by the disease." - eventdat += "

    Continue

    " - eventdat += "

    Close

    " + eventdat += "

    Continue

    " + eventdat += "

    Close

    " canContinueEvent = 1 if(ORION_TRAIL_BREAKDOWN) eventdat += "Oh no! The engine has broken down!" eventdat += "
    You can repair it with an engine part, or you can make repairs for 3 days." if(engine >= 1) - eventdat += "

    Use PartWait

    " + eventdat += "

    Use PartWait

    " else - eventdat += "

    Wait

    " - eventdat += "

    Close

    " + eventdat += "

    Wait

    " + eventdat += "

    Close

    " if(ORION_TRAIL_MALFUNCTION) eventdat += "The ship's systems are malfunctioning!" eventdat += "
    You can replace the broken electronics with spares, or you can spend 3 days troubleshooting the AI." if(electronics >= 1) - eventdat += "

    Use PartWait

    " + eventdat += "

    Use PartWait

    " else - eventdat += "

    Wait

    " - eventdat += "

    Close

    " + eventdat += "

    Wait

    " + eventdat += "

    Close

    " if(ORION_TRAIL_COLLISION) eventdat += "Something hit us! Looks like there's some hull damage." @@ -818,23 +818,23 @@ eventdat += "
    [deadname] was killed by rapid depressurization." eventdat += "
    You can repair the damage with hull plates, or you can spend the next 3 days welding scrap together." if(hull >= 1) - eventdat += "

    Use PartWait

    " + eventdat += "

    Use PartWait

    " else - eventdat += "

    Wait

    " - eventdat += "

    Close

    " + eventdat += "

    Wait

    " + eventdat += "

    Close

    " if(ORION_TRAIL_BLACKHOLE) eventdat += "You were swept away into the black hole." - eventdat += "

    Oh...

    " - eventdat += "

    Close

    " + eventdat += "

    Oh...

    " + eventdat += "

    Close

    " settlers = list() if(ORION_TRAIL_LING) eventdat += "Strange reports warn of changelings infiltrating crews on trips to Orion..." if(settlers.len <= 2) eventdat += "
    Your crew's chance of reaching Orion is so slim the changelings likely avoided your ship..." - eventdat += "

    Continue

    " - eventdat += "

    Close

    " + eventdat += "

    Continue

    " + eventdat += "

    Close

    " if(prob(10)) // "likely", I didn't say it was guaranteed! lings_aboard = min(++lings_aboard,2) else @@ -844,9 +844,9 @@ else if(prob(70)) lings_aboard = min(++lings_aboard,2) - eventdat += "

    Kill a Crewmember

    " - eventdat += "

    Risk it

    " - eventdat += "

    Close

    " + eventdat += "

    Kill a Crewmember

    " + eventdat += "

    Risk it

    " + eventdat += "

    Close

    " canContinueEvent = 1 if(ORION_TRAIL_LING_ATTACK) @@ -892,8 +892,8 @@ else lings_aboard = max(0,--lings_aboard) - eventdat += "

    Continue

    " - eventdat += "

    Close

    " + eventdat += "

    Continue

    " + eventdat += "

    Close

    " canContinueEvent = 1 @@ -903,8 +903,8 @@ eventdat += "The spaceport is on high alert! You've been barred from docking by the local authorities after your failed raid." if(last_spaceport_action) eventdat += "
    Last Spaceport Action: [last_spaceport_action]" - eventdat += "

    Depart Spaceport

    " - eventdat += "

    Close

    " + eventdat += "

    Depart Spaceport

    " + eventdat += "

    Close

    " else eventdat += "Your jump into the sector yields a spaceport - a lucky find!" eventdat += "
    This spaceport is home to travellers who failed to reach Orion, but managed to find a different home..." @@ -943,13 +943,13 @@ //Buy crew if(food >= 10 && fuel >= 10) - eventdat += "

    Hire a New Crewmember (-10FU, -10FO)

    " + eventdat += "

    Hire a New Crewmember (-10FU, -10FO)

    " else eventdat += "

    You cannot afford a new crewmember.

    " //Sell crew if(settlers.len > 1) - eventdat += "

    Sell Crew for Fuel and Food (+7FU, +7FO)

    " + eventdat += "

    Sell Crew for Fuel and Food (+7FU, +7FO)

    " else eventdat += "

    You have no other crew to sell.

    " @@ -958,37 +958,37 @@ //Engine parts if(fuel > 5) - eventdat += "

    Buy Engine Parts (-5FU)

    " + eventdat += "

    Buy Engine Parts (-5FU)

    " else eventdat += "

    You cannot afford engine parts." //Hull plates if(fuel > 5) - eventdat += "

    Buy Hull Plates (-5FU)

    " + eventdat += "

    Buy Hull Plates (-5FU)

    " else eventdat += "

    You cannot afford hull plates." //Electronics if(fuel > 5) - eventdat += "

    Buy Spare Electronics (-5FU)

    " + eventdat += "

    Buy Spare Electronics (-5FU)

    " else eventdat += "

    You cannot afford spare electronics." //Trade if(fuel > 5) - eventdat += "

    Trade Fuel for Food (-5FU,+5FO)

    " + eventdat += "

    Trade Fuel for Food (-5FU,+5FO)

    " else eventdat += "

    You don't have 5FU to trade. 5) - eventdat += "

    Trade Food for Fuel (+5FU,-5FO)

    " + eventdat += "

    Trade Food for Fuel (+5FU,-5FO)

    " else eventdat += "

    You don't have 5FO to trade." - dat = "Crew Manifest:
    Please use security record computer to modify entries.

    [crew]Print

    Access ID modification console.
    " + dat = "Crew Manifest:
    Please use security record computer to modify entries.

    [crew]Print

    Access ID modification console.
    " else if(mode == 2) // JOB MANAGEMENT - dat = "Return" + dat = "Return" dat += " || Confirm Identity: " var/S if(scan) S = html_encode(scan.name) else S = "--------" - dat += "[S]" + dat += "[S]" dat += "" dat += "" var/ID @@ -174,7 +174,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) switch(can_open_job(job)) if(1) if(ID) - dat += "Open Position
    " + dat += "Open Position
    " else dat += "Open Position" if(-1) @@ -190,7 +190,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) switch(can_close_job(job)) if(1) if(ID) - dat += "Close Position" + dat += "Close Position" else dat += "Close Position" if(-1) @@ -209,10 +209,10 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) else if(ID) if(job in SSjob.prioritized_jobs) - dat += "Deprioritize" + dat += "Deprioritize" else if(SSjob.prioritized_jobs.len < 5) - dat += "Prioritize" + dat += "Prioritize" else dat += "Denied" else @@ -247,14 +247,14 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) if(!authenticated) header += "
    Please insert the cards into the slots
    " - header += "Target: [target_name]
    " - header += "Confirm Identity: [scan_name]
    " + header += "Target: [target_name]
    " + header += "Confirm Identity: [scan_name]
    " else header += "

    " - header += "Remove [target_name] || " - header += "Remove [scan_name]
    " - header += "Access Crew Manifest
    " - header += "Log Out
    " + header += "Remove [target_name] || " + header += "Remove [scan_name]
    " + header += "Access Crew Manifest
    " + header += "Log Out" header += "
    " @@ -262,7 +262,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) var/list/alljobs = list("Unassigned") alljobs += (istype(src, /obj/machinery/computer/card/centcom)? get_all_centcom_jobs() : get_all_jobs()) + "Custom" for(var/job in alljobs) - jobs_all += "[replacetext(job, " ", " ")] " //make sure there isn't a line break in the middle of a job + jobs_all += "[replacetext(job, " ", " ")] " //make sure there isn't a line break in the middle of a job var/body @@ -290,8 +290,8 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) allJobsSlot.innerHTML = "show"; } "} - carddesc += "" - carddesc += "" + carddesc += "" + carddesc += "" carddesc += "" carddesc += "registered name:" carddesc += "" @@ -302,16 +302,16 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) else carddesc += "registered_name: [target_owner]" - jobs += "Assignment: [target_rank] (Demote)" + jobs += "Assignment: [target_rank] (Demote)" var/accesses = "" if(istype(src, /obj/machinery/computer/card/centcom)) accesses += "
    Central Command:
    " for(var/A in get_all_centcom_access()) if(A in modify.access) - accesses += "[replacetext(get_centcom_access_desc(A), " ", " ")] " + accesses += "[replacetext(get_centcom_access_desc(A), " ", " ")] " else - accesses += "[replacetext(get_centcom_access_desc(A), " ", " ")] " + accesses += "[replacetext(get_centcom_access_desc(A), " ", " ")] " else accesses += "
    Access
    " accesses += "
    JobSlotsOpen jobClose jobPrioritize
    " @@ -327,19 +327,19 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) accesses += "" accesses += "
    " for(var/A in get_region_accesses(i)) if(A in modify.access) - accesses += "[replacetext(get_access_desc(A), " ", " ")] " + accesses += "[replacetext(get_access_desc(A), " ", " ")] " else - accesses += "[replacetext(get_access_desc(A), " ", " ")] " + accesses += "[replacetext(get_access_desc(A), " ", " ")] " accesses += "
    " accesses += "
    " body = "[carddesc]
    [jobs]

    [accesses]" //CHECK THIS else - body = "{Log in}


    " - body += "Access Crew Manifest" + body = "{Log in}

    " + body += "Access Crew Manifest" if(!target_dept) - body += "

    Job Management" + body += "

    Job Management" dat = "[header][body]

    " var/datum/browser/popup = new(user, "id_com", src.name, 900, 620) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index ee316b3eed..ba11b0fa8f 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -138,7 +138,7 @@ AttachCloner(pod) else P.buffer = src - to_chat(user, "-% Successfully stored \ref[P.buffer] [P.buffer.name] in buffer %-") + to_chat(user, "-% Successfully stored [REF(P.buffer)] [P.buffer.name] in buffer %-") return else return ..() @@ -158,13 +158,13 @@ updatemodules(TRUE) var/dat = "" - dat += "Refresh" + dat += "Refresh" if(scanner && HasEfficientPod() && scanner.scan_level > 2) if(!autoprocess) - dat += "Autoprocess" + dat += "Autoprocess" else - dat += "Stop autoprocess" + dat += "Stop autoprocess" else dat += "Autoprocess" dat += "

    Cloning Pod Status

    " @@ -175,7 +175,7 @@ // Modules if (isnull(src.scanner) || !LAZYLEN(pods)) dat += "

    Modules

    " - //dat += "Reload Modules" + //dat += "Reload Modules" if (isnull(src.scanner)) dat += "ERROR: No Scanner detected!
    " if (!LAZYLEN(pods)) @@ -200,36 +200,36 @@ dat += "
    " if(scanner_occupant) - dat += "Start Scan" - dat += "
    [src.scanner.locked ? "Unlock Scanner" : "Lock Scanner"]" + dat += "Start Scan" + dat += "
    [src.scanner.locked ? "Unlock Scanner" : "Lock Scanner"]" else dat += "Start Scan" // Database dat += "

    Database Functions

    " if (src.records.len && src.records.len > 0) - dat += "View Records ([src.records.len])
    " + dat += "View Records ([src.records.len])
    " else dat += "View Records (0)
    " if (src.diskette) - dat += "Eject Disk
    " + dat += "Eject Disk
    " if(2) dat += "

    Current records

    " - dat += "<< Back

    " + dat += "<< Back

    " for(var/datum/data/record/R in records) - dat += "

    [R.fields["name"]]

    Scan ID [R.fields["id"]] View Record" + dat += "

    [R.fields["name"]]

    Scan ID [R.fields["id"]] View Record" if(3) dat += "

    Selected Record

    " - dat += "<< Back
    " + dat += "<< Back
    " if (!src.active_record) dat += "Record not found." else dat += "

    [src.active_record.fields["name"]]

    " - dat += "Scan ID [src.active_record.fields["id"]] Clone
    " + dat += "Scan ID [src.active_record.fields["id"]] Clone
    " var/obj/item/implant/health/H = locate(src.active_record.fields["imp"]) @@ -253,12 +253,12 @@ if(diskette.fields["SE"]) L += "Structural Enzymes" dat += english_list(L, "Empty", " + ", " + ") - dat += "
    Load from Disk" + dat += "
    Load from Disk" - dat += "
    Save to Disk" + dat += "
    Save to Disk" dat += "
    " - dat += "Delete Record" + dat += "Delete Record" if(4) if (!src.active_record) @@ -266,8 +266,8 @@ dat = "[src.temp]
    " dat += "

    Confirm Record Deletion

    " - dat += "Scan card to confirm.
    " - dat += "Cancel" + dat += "Scan card to confirm.
    " + dat += "Cancel" var/datum/browser/popup = new(user, "cloning", "Cloning System Control") @@ -484,7 +484,7 @@ R.fields["factions"] = mob_occupant.faction if (!isnull(mob_occupant.mind)) //Save that mind so traitors can continue traitoring after cloning. - R.fields["mind"] = "\ref[mob_occupant.mind]" + R.fields["mind"] = "[REF(mob_occupant.mind)]" //Add an implant if needed var/obj/item/implant/health/imp @@ -494,7 +494,7 @@ if(!imp) imp = new /obj/item/implant/health(mob_occupant) imp.implant(mob_occupant) - R.fields["imp"] = "\ref[imp]" + R.fields["imp"] = "[REF(imp)]" src.records += R scantemp = "Subject successfully scanned." diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 77f6e08c7d..f5c4f2c146 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -449,33 +449,38 @@ dat += "Unable to trace most recent shuttle call/recall signal.
    " dat += "Logged in as: [auth_id]" dat += "
    " - dat += "
    \[ Log Out \]
    " + dat += "
    \[ Log Out \]
    " dat += "
    General Functions" - dat += "
    \[ Message List \]" + dat += "
    \[ Message List \]" switch(SSshuttle.emergency.mode) if(SHUTTLE_IDLE, SHUTTLE_RECALL) - dat += "
    \[ Call Emergency Shuttle \]" + dat += "
    \[ Call Emergency Shuttle \]" else - dat += "
    \[ Cancel Shuttle Call \]" + dat += "
    \[ Cancel Shuttle Call \]" +<<<<<<< HEAD dat += "
    \[ Set Status Display \]" if (src.authenticated==2) +======= + dat += "
    \[ Set Status Display \]" + if (authenticated==2) +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental dat += "

    Captain Functions" - dat += "
    \[ Make a Captain's Announcement \]" + dat += "
    \[ Make a Captain's Announcement \]" if(CONFIG_GET(string/cross_server_address)) - dat += "
    \[ Send a message to an allied station \]" + dat += "
    \[ Send a message to an allied station \]" if(SSmapping.config.allow_custom_shuttles == "yes") - dat += "
    \[ Purchase Shuttle \]" - dat += "
    \[ Change Alert Level \]" - dat += "
    \[ Emergency Maintenance Access \]" - dat += "
    \[ Request Nuclear Authentication Codes \]" + dat += "
    \[ Purchase Shuttle \]" + dat += "
    \[ Change Alert Level \]" + dat += "
    \[ Emergency Maintenance Access \]" + dat += "
    \[ Request Nuclear Authentication Codes \]" if(!emagged) - dat += "
    \[ Send Message to CentCom \]" + dat += "
    \[ Send Message to CentCom \]" else - dat += "
    \[ Send Message to \[UNKNOWN\] \]" - dat += "
    \[ Restore Backup Routing Data \]" + dat += "
    \[ Send Message to \[UNKNOWN\] \]" + dat += "
    \[ Restore Backup Routing Data \]" else - dat += "
    \[ Log In \]" + dat += "
    \[ Log In \]" if(STATE_CALLSHUTTLE) dat += get_call_shuttle_form() playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) @@ -484,6 +489,7 @@ playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) if(STATE_MESSAGELIST) dat += "Messages:" +<<<<<<< HEAD for(var/i = 1; i<=src.messagetitle.len; i++) dat += "
    [src.messagetitle[i]]" playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) @@ -492,48 +498,70 @@ dat += "[src.messagetitle[src.currmsg]]

    [src.messagetext[src.currmsg]]" if (src.authenticated) dat += "

    \[ Delete \]" +======= + for(var/i in 1 to messages.len) + var/datum/comm_message/M = messages[i] + dat += "
    [M.title]" + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) + if(STATE_VIEWMESSAGE) + if (currmsg) + dat += "[currmsg.title]

    [currmsg.content]" + if(!currmsg.answered && currmsg.possible_answers.len) + for(var/i in 1 to currmsg.possible_answers.len) + var/answer = currmsg.possible_answers[i] + dat += "
    \[ Answer : [answer] \]" + else if(currmsg.answered) + var/answered = currmsg.possible_answers[currmsg.answered] + dat += "
    Archived Answer : [answered]" + dat += "

    \[ Delete \]" +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental else src.state = STATE_MESSAGELIST src.attack_hand(user) return if(STATE_DELMESSAGE) +<<<<<<< HEAD if (src.currmsg) dat += "Are you sure you want to delete this message? \[ OK | Cancel \]" +======= + if (currmsg) + dat += "Are you sure you want to delete this message? \[ OK | Cancel \]" +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental else src.state = STATE_MESSAGELIST src.attack_hand(user) return if(STATE_STATUSDISPLAY) dat += "Set Status Displays
    " - dat += "\[ Clear \]
    " - dat += "\[ Shuttle ETA \]
    " - dat += "\[ Message \]" - dat += "
    " - dat += "\[ Alert: None |" - dat += " Red Alert |" - dat += " Lockdown |" - dat += " Biohazard \]

    " + dat += "\[ Clear \]
    " + dat += "\[ Shuttle ETA \]
    " + dat += "\[ Message \]" + dat += "
    " + dat += "\[ Alert: None |" + dat += " Red Alert |" + dat += " Lockdown |" + dat += " Biohazard \]

    " playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) if(STATE_ALERT_LEVEL) dat += "Current alert level: [get_security_level()]
    " if(GLOB.security_level == SEC_LEVEL_DELTA) dat += "The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate." else - dat += "Blue
    " - dat += "Green" + dat += "Blue
    " + dat += "Green" if(STATE_CONFIRM_LEVEL) dat += "Current alert level: [get_security_level()]
    " dat += "Confirm the change to: [num2seclevel(tmp_alertlevel)]
    " - dat += "Swipe ID to confirm change.
    " + dat += "Swipe ID to confirm change.
    " if(STATE_TOGGLE_EMERGENCY) playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) if(GLOB.emergency_access == 1) dat += "Emergency Maintenance Access is currently ENABLED" - dat += "
    Restore maintenance access restrictions?
    \[ OK | Cancel \]" + dat += "
    Restore maintenance access restrictions?
    \[ OK | Cancel \]" else dat += "Emergency Maintenance Access is currently DISABLED" - dat += "
    Lift access restrictions on maintenance and external airlocks?
    \[ OK | Cancel \]" + dat += "
    Lift access restrictions on maintenance and external airlocks?
    \[ OK | Cancel \]" if(STATE_PURCHASE) dat += "Budget: [SSshuttle.points] Credits.
    " @@ -544,9 +572,13 @@ dat += "[S.description]
    " if(S.prerequisites) dat += "Prerequisites: [S.prerequisites]
    " - dat += "(Purchase)

    " + dat += "(Purchase)

    " +<<<<<<< HEAD dat += "

    \[ [(src.state != STATE_DEFAULT) ? "Main Menu | " : ""]Close \]" +======= + dat += "

    \[ [(state != STATE_DEFAULT) ? "Main Menu | " : ""]Close \]" +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental popup.set_content(dat) popup.open() @@ -573,8 +605,8 @@ /obj/machinery/computer/communications/proc/get_call_shuttle_form(ai_interface = 0) var/form_id = "callshuttle" var/dat = get_javascript_header(form_id) - dat += "" - dat += "" + dat += "" + dat += "" dat += "" dat += "Nature of emergency:
    " dat += "
    Are you sure you want to call the shuttle? \[ Call \]" @@ -583,8 +615,8 @@ /obj/machinery/computer/communications/proc/get_cancel_shuttle_form() var/form_id = "cancelshuttle" var/dat = get_javascript_header(form_id) - dat += "" - dat += "" + dat += "" + dat += "" dat += "" dat += "
    Are you sure you want to cancel the shuttle? \[ Cancel \]" @@ -604,31 +636,53 @@ else dat += "Current login: None" dat += "

    General Functions" - dat += "
    \[ Message List \]" + dat += "
    \[ Message List \]" if(SSshuttle.emergency.mode == SHUTTLE_IDLE) - dat += "
    \[ Call Emergency Shuttle \]" - dat += "
    \[ Set Status Display \]" + dat += "
    \[ Call Emergency Shuttle \]" + dat += "
    \[ Set Status Display \]" dat += "

    Special Functions" - dat += "
    \[ Make an Announcement \]" - dat += "
    \[ Change Alert Level \]" - dat += "
    \[ Emergency Maintenance Access \]" + dat += "
    \[ Make an Announcement \]" + dat += "
    \[ Change Alert Level \]" + dat += "
    \[ Emergency Maintenance Access \]" if(STATE_CALLSHUTTLE) dat += get_call_shuttle_form(1) if(STATE_MESSAGELIST) dat += "Messages:" +<<<<<<< HEAD for(var/i = 1; i<=src.messagetitle.len; i++) dat += "
    [src.messagetitle[i]]" if(STATE_VIEWMESSAGE) if (src.aicurrmsg) dat += "[src.messagetitle[src.aicurrmsg]]

    [src.messagetext[src.aicurrmsg]]" dat += "

    \[ Delete \]" +======= + for(var/i in 1 to messages.len) + var/datum/comm_message/M = messages[i] + dat += "
    [M.title]" + if(STATE_VIEWMESSAGE) + if (aicurrmsg) + dat += "[aicurrmsg.title]

    [aicurrmsg.content]" + if(!aicurrmsg.answered && aicurrmsg.possible_answers.len) + for(var/i in 1 to aicurrmsg.possible_answers.len) + var/answer = aicurrmsg.possible_answers[i] + dat += "
    \[ Answer : [answer] \]" + else if(aicurrmsg.answered) + var/answered = aicurrmsg.possible_answers[aicurrmsg.answered] + dat += "
    Archived Answer : [answered]" + dat += "

    \[ Delete \]" +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental else src.aistate = STATE_MESSAGELIST src.attack_hand(user) return null if(STATE_DELMESSAGE) +<<<<<<< HEAD if(src.aicurrmsg) dat += "Are you sure you want to delete this message? \[ OK | Cancel \]" +======= + if(aicurrmsg) + dat += "Are you sure you want to delete this message? \[ OK | Cancel \]" +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental else src.aistate = STATE_MESSAGELIST src.attack_hand(user) @@ -636,33 +690,37 @@ if(STATE_STATUSDISPLAY) dat += "Set Status Displays
    " - dat += "\[ Clear \]
    " - dat += "\[ Shuttle ETA \]
    " - dat += "\[ Message \]" - dat += "
    " - dat += "\[ Alert: None |" - dat += " Red Alert |" - dat += " Lockdown |" - dat += " Biohazard \]

    " + dat += "\[ Clear \]
    " + dat += "\[ Shuttle ETA \]
    " + dat += "\[ Message \]" + dat += "
    " + dat += "\[ Alert: None |" + dat += " Red Alert |" + dat += " Lockdown |" + dat += " Biohazard \]

    " if(STATE_ALERT_LEVEL) dat += "Current alert level: [get_security_level()]
    " if(GLOB.security_level == SEC_LEVEL_DELTA) dat += "The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate." else - dat += "Blue
    " - dat += "Green" + dat += "Blue
    " + dat += "Green" if(STATE_TOGGLE_EMERGENCY) if(GLOB.emergency_access == 1) dat += "Emergency Maintenance Access is currently ENABLED" - dat += "
    Restore maintenance access restrictions?
    \[ OK | Cancel \]" + dat += "
    Restore maintenance access restrictions?
    \[ OK | Cancel \]" else dat += "Emergency Maintenance Access is currently DISABLED" - dat += "
    Lift access restrictions on maintenance and external airlocks?
    \[ OK | Cancel \]" + dat += "
    Lift access restrictions on maintenance and external airlocks?
    \[ OK | Cancel \]" +<<<<<<< HEAD dat += "

    \[ [(src.aistate != STATE_DEFAULT) ? "Main Menu | " : ""]Close \]" +======= + dat += "

    \[ [(aistate != STATE_DEFAULT) ? "Main Menu | " : ""]Close \]" +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental return dat /obj/machinery/computer/communications/proc/make_announcement(mob/living/user, is_silicon) diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index c540b51560..8e1447285c 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -143,27 +143,27 @@ status += "
    Pulse Duration:
    [radduration]
    " status += "
      \> Accuracy:
    [chance_to_hit]
    " status += "
    " // Close statusDisplay div - var/buttons = "Scan " + var/buttons = "Scan " if(connected) - buttons += " [connected.state_open ? "Close" : "Open"] Scanner " + buttons += " [connected.state_open ? "Close" : "Open"] Scanner " if (connected.state_open) buttons += "[connected.locked ? "Unlock" : "Lock"] Scanner " else - buttons += "[connected.locked ? "Unlock" : "Lock"] Scanner " + buttons += "[connected.locked ? "Unlock" : "Lock"] Scanner " else buttons += "Open Scanner Lock Scanner " if(viable_occupant) - buttons += "Inject Rejuvenators " + buttons += "Inject Rejuvenators " else buttons += "Inject Rejuvenators " if(diskette) - buttons += "Eject Disk " + buttons += "Eject Disk " else buttons += "Eject Disk " if(current_screen == "buffer") - buttons += "Radiation Emitter Menu " + buttons += "Radiation Emitter Menu " else - buttons += "Buffer Menu " + buttons += "Buffer Menu " switch(current_screen) if("working") @@ -182,12 +182,12 @@ if( !buffer_slot || !buffer_slot.len || !buffer_slot["name"] || !((buffer_slot["UI"] && buffer_slot["UE"]) || buffer_slot["SE"]) ) temp_html += "
    \tNo Data" if(viable_occupant) - temp_html += "
    Save to Buffer " + temp_html += "
    Save to Buffer " else temp_html += "
    Save to Buffer " temp_html += "Clear Buffer " if(diskette) - temp_html += "Load from Disk " + temp_html += "Load from Disk " else temp_html += "Load from Disk " temp_html += "Save to Disk " @@ -198,18 +198,18 @@ var/name = buffer_slot["name"] var/label = buffer_slot["label"] var/blood_type = buffer_slot["blood_type"] - temp_html += "
    \tLabel: [label ? label : name]" + temp_html += "
    \tLabel: [label ? label : name]" temp_html += "
    \tSubject: [name]" if(ue && name && blood_type) temp_html += "
    \tBlood Type: [blood_type]" temp_html += "
    \tUE: [ue] " if(viable_occupant) - temp_html += "Occupant " + temp_html += "Occupant " else temp_html += "Occupant" - temp_html += "Occupant:Delayed " + temp_html += "Occupant:Delayed " if(injectorready < world.time) - temp_html += "Injector" + temp_html += "Injector" else temp_html += "Injector" else @@ -218,12 +218,12 @@ if(ui) temp_html += "
    \tUI: [ui] " if(viable_occupant) - temp_html += "Occupant " + temp_html += "Occupant " else temp_html += "Occupant" - temp_html += "Occupant:Delayed " + temp_html += "Occupant:Delayed " if(injectorready < world.time) - temp_html += "Injector" + temp_html += "Injector" else temp_html += "Injector" else @@ -231,38 +231,38 @@ if(ue && name && blood_type && ui) temp_html += "
    \tUI+UE: [ui]/[ue] " if(viable_occupant) - temp_html += "Occupant " + temp_html += "Occupant " else temp_html += "Occupant" - temp_html += "Occupant:Delayed " + temp_html += "Occupant:Delayed " if(injectorready < world.time) - temp_html += "UI+UE Injector" + temp_html += "UI+UE Injector" else temp_html += "UI+UE Injector" if(se) temp_html += "
    \tSE: [se] " if(viable_occupant) - temp_html += "Occupant " + temp_html += "Occupant " else temp_html += "Occupant " - temp_html += "Occupant:Delayed " + temp_html += "Occupant:Delayed " if(injectorready < world.time ) - temp_html += "Injector" + temp_html += "Injector" else temp_html += "Injector" else temp_html += "
    \tSE: No Data" if(viable_occupant) - temp_html += "
    Save to Buffer " + temp_html += "
    Save to Buffer " else temp_html += "
    Save to Buffer " - temp_html += "Clear Buffer " + temp_html += "Clear Buffer " if(diskette) - temp_html += "Load from Disk " + temp_html += "Load from Disk " else temp_html += "Load from Disk " if(diskette && !diskette.read_only) - temp_html += "Save to Disk " + temp_html += "Save to Disk " else temp_html += "Save to Disk " else @@ -270,8 +270,8 @@ temp_html += buttons temp_html += "

    Radiation Emitter Menu

    " - temp_html += "-- Output Level ++" - temp_html += "
    -- Pulse Duration ++" + temp_html += "-- Output Level ++" + temp_html += "
    -- Pulse Duration ++" temp_html += "

    Irradiate Subject

    " temp_html += "
    Unique Identifier:
    " @@ -281,7 +281,7 @@ temp_html += "
    1
    " var/len = length(viable_occupant.dna.uni_identity) for(var/i=1, i<=len, i++) - temp_html += "[copytext(viable_occupant.dna.uni_identity,i,i+1)]" + temp_html += "[copytext(viable_occupant.dna.uni_identity,i,i+1)]" if ((i % max_line_len) == 0) temp_html += "
    " if((i % DNA_BLOCK_SIZE) == 0 && i < len) @@ -295,7 +295,7 @@ temp_html += "
    1
    " var/len = length(viable_occupant.dna.struc_enzymes) for(var/i=1, i<=len, i++) - temp_html += "[copytext(viable_occupant.dna.struc_enzymes,i,i+1)]" + temp_html += "[copytext(viable_occupant.dna.struc_enzymes,i,i+1)]" if ((i % max_line_len) == 0) temp_html += "
    " if((i % DNA_BLOCK_SIZE) == 0 && i < len) diff --git a/code/game/machinery/computer/launchpad_control.dm b/code/game/machinery/computer/launchpad_control.dm index d6c8d9e7e9..35fcb20bcc 100644 --- a/code/game/machinery/computer/launchpad_control.dm +++ b/code/game/machinery/computer/launchpad_control.dm @@ -60,7 +60,7 @@ if(pad.stat & NOPOWER) t+= "[pad.display_name]" else - t+= "[pad.display_name]" + t+= "[pad.display_name]" else launchpads -= get_pad(i) t += "
    " @@ -68,24 +68,24 @@ if(current_pad) var/obj/machinery/launchpad/pad = get_pad(current_pad) t += "
    [pad.display_name]
    " - t += "Rename" - t += "Remove

    " - t += "O" //up-left - t += "^" //up - t += "O
    " //up-right - t += "<"//left - t += "R"//reset to 0 - t += ">
    "//right - t += "O"//down-left - t += "v"//down - t += "O
    "//down-right + t += "Rename" + t += "Remove

    " + t += "O" //up-left + t += "^" //up + t += "O
    " //up-right + t += "<"//left + t += "R"//reset to 0 + t += ">
    "//right + t += "O"//down-left + t += "v"//down + t += "O
    "//down-right t += "
    " t += "
    Current offset:

    " t += "
    [abs(pad.y_offset)] [pad.y_offset > 0 ? "N":"S"]

    " t += "
    [abs(pad.x_offset)] [pad.x_offset > 0 ? "E":"W"]

    " - t += "
    Launch" - t += " Pull" + t += "
    Launch" + t += " Pull" var/datum/browser/popup = new(user, "launchpad", name, 300, 500) popup.set_content(t.Join()) diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 41b41e536e..4fa3dad179 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -39,21 +39,21 @@ return var/dat if(src.temp) - dat = text("[src.temp]

    Clear Screen") + dat = text("[src.temp]

    Clear Screen") else - dat = text("Confirm Identity: []
    ", src, (src.scan ? text("[]", src.scan.name) : "----------")) + dat = text("Confirm Identity: []
    ", (src.scan ? text("[]", src.scan.name) : "----------")) if(src.authenticated) switch(src.screen) if(1) dat += {" -Search Records -
    List Records +Search Records +
    List Records
    -
    Virus Database -
    Medbot Tracking +
    Virus Database +
    Medbot Tracking
    -
    Record Maintenance -
    {Log Out}
    +
    Record Maintenance +
    {Log Out}
    "} if(2) dat += {" @@ -65,10 +65,10 @@ - - + + - +"} @@ -93,7 +93,7 @@ else background = "'background-color:#4F7529;'" - dat += text("", background, src, R.fields["id"], R.fields["name"]) + dat += text("", background, R.fields["id"], R.fields["name"]) dat += text("", R.fields["id"]) dat += text("", R.fields["fingerprint"], b_dna) dat += text("", blood_type) @@ -102,11 +102,11 @@ dat += "
    NameIDNameID Fingerprints (F) | DNA (D)Blood TypeBlood Type Physical Status Mental Status
    []
    [][]F: []
    D: []
    []

    " // if(GLOB.data_core.general) // for(var/datum/data/record/R in sortRecord(GLOB.data_core.general)) -// dat += "[R.fields["id"]]: [R.fields["name"]]
    " +// dat += "
    [R.fields["id"]]: [R.fields["name"]]
    " // //Foreach goto(132) - dat += text("
    Back", src) + dat += "
    Back" if(3) - dat += text("Records Maintenance
    \nBackup To Disk
    \nUpload From Disk
    \nDelete All Records
    \n
    \nBack", src, src, src, src) + dat += "Records Maintenance
    \nBackup To Disk
    \nUpload From Disk
    \nDelete All Records
    \n
    \nBack" if(4) dat += "" @@ -118,45 +118,45 @@ var/obj/item/photo/P2 = active1.fields["photo_side"] user << browse_rsc(P2.img, "photo_side") dat += "" - dat += "" - dat += "" + dat += "" + dat += "" dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" else dat += "" dat += "" if(active2 in GLOB.data_core.medical) - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" //(per disease info placed in log/comment section) - dat += "" - dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" //(per disease info placed in log/comment section) + dat += "" + dat += "" dat += "" var/counter = 1 while(src.active2.fields[text("com_[]", counter)]) - dat += "" + dat += "" counter++ - dat += "" + dat += "" - dat += "" + dat += "" else dat += "" - dat += "" - dat += "" - dat += "" + dat += "" + dat += "" + dat += "" dat += "
    Medical Record
    Name:[active1.fields["name"]]
    ID:[active1.fields["id"]]
    Sex: [active1.fields["sex"]] 
    Age: [active1.fields["age"]] 
    Species: [active1.fields["species"]] 
    Fingerprint: [active1.fields["fingerprint"]] 
    Physical Status: [active1.fields["p_stat"]] 
    Mental Status: [active1.fields["m_stat"]] 
    Sex: [active1.fields["sex"]] 
    Age: [active1.fields["age"]] 
    Species: [active1.fields["species"]] 
    Fingerprint: [active1.fields["fingerprint"]] 
    Physical Status: [active1.fields["p_stat"]] 
    Mental Status: [active1.fields["m_stat"]] 
    General Record Lost!

    Medical Data
    Blood Type: [active2.fields["blood_type"]] 
    DNA: [active2.fields["b_dna"]] 

    Minor Disabilities:

     [active2.fields["mi_dis"]] 
    Details: [active2.fields["mi_dis_d"]] 

    Major Disabilities:

     [active2.fields["ma_dis"]] 
    Details: [active2.fields["ma_dis_d"]] 

    Allergies:

     [active2.fields["alg"]] 
    Details: [active2.fields["alg_d"]] 

    Current Diseases:

     [active2.fields["cdi"]] 
    Details: [active2.fields["cdi_d"]] 

    Important Notes:

     [active2.fields["notes"]] 
    Blood Type: [active2.fields["blood_type"]] 
    DNA: [active2.fields["b_dna"]] 

    Minor Disabilities:

     [active2.fields["mi_dis"]] 
    Details: [active2.fields["mi_dis_d"]] 

    Major Disabilities:

     [active2.fields["ma_dis"]] 
    Details: [active2.fields["ma_dis_d"]] 

    Allergies:

     [active2.fields["alg"]] 
    Details: [active2.fields["alg_d"]] 

    Current Diseases:

     [active2.fields["cdi"]] 
    Details: [active2.fields["cdi_d"]] 

    Important Notes:

     [active2.fields["notes"]] 

    Comments/Log
    [active2.fields[text("com_[]", counter)]]
    Delete Entry
    [active2.fields[text("com_[]", counter)]]
    Delete Entry
    Add Entry
    Add Entry

    Delete Record (Medical Only)

    Delete Record (Medical Only)
    Medical Record Lost!

    New Record
    Print Record
    Back

    New Record
    Print Record
    Back
    " if(5) dat += "
    Virus Database
    " @@ -166,11 +166,11 @@ continue // TODO (tm): Add advance diseases to the virus database which no one uses. if(!Dis.desc) continue - dat += "
    [Dis.name]" - dat += "
    Back" + dat += "
    [Dis.name]" + dat += "
    Back" if(6) dat += "
    Medical Robot Monitor
    " - dat += "Back" + dat += "Back" dat += "
    Medical Robots:" var/bdat = null for(var/mob/living/simple_animal/bot/medbot/M in GLOB.living_mob_list) @@ -191,7 +191,7 @@ else else - dat += text("{Log In}", src) + dat += "{Log In}" var/datum/browser/popup = new(user, "med_rec", "Medical Records Console", 600, 400) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) @@ -286,7 +286,7 @@
    Severity: [Dis.severity]"} else if(href_list["del_all"]) - src.temp = text("Are you sure you wish to delete all records?
    \n\tYes
    \n\tNo
    ", src, src) + src.temp = "Are you sure you wish to delete all records?
    \n\tYes
    \n\tNo
    " else if(href_list["del_all2"]) investigate_log("[usr.name] ([usr.key]) has deleted all medical records.", INVESTIGATE_RECORDS) @@ -377,13 +377,13 @@ src.active2.fields["notes"] = t1 if("p_stat") if(active1) - src.temp = text("Physical Condition:
    \n\t*Deceased*
    \n\t*Unconscious*
    \n\tActive
    \n\tPhysically Unfit
    ", src, src, src, src) + src.temp = "Physical Condition:
    \n\t*Deceased*
    \n\t*Unconscious*
    \n\tActive
    \n\tPhysically Unfit
    " if("m_stat") if(active1) - src.temp = text("Mental Condition:
    \n\t*Insane*
    \n\t*Unstable*
    \n\t*Watch*
    \n\tStable
    ", src, src, src, src) + src.temp = "Mental Condition:
    \n\t*Insane*
    \n\t*Unstable*
    \n\t*Watch*
    \n\tStable
    " if("blood_type") if(active2) - src.temp = text("Blood Type:
    \n\tA- A+
    \n\tB- B+
    \n\tAB- AB+
    \n\tO- O+
    ", src, src, src, src, src, src, src, src) + src.temp = "Blood Type:
    \n\tA- A+
    \n\tB- B+
    \n\tAB- AB+
    \n\tO- O+
    " if("b_dna") if(active2) var/t1 = stripped_input("Please input DNA hash:", "Med. records", src.active2.fields["b_dna"], null) @@ -452,7 +452,7 @@ else if(href_list["del_r"]) if(active2) - src.temp = text("Are you sure you wish to delete the record (Medical Portion Only)?
    \n\tYes
    \n\tNo
    ", src, src) + src.temp = "Are you sure you wish to delete the record (Medical Portion Only)?
    \n\tYes
    \n\tNo
    " else if(href_list["del_r2"]) investigate_log("[usr.name] ([usr.key]) has deleted the medical records for [active1.fields["name"]].", INVESTIGATE_RECORDS) diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index 5ba20bc527..ffd2197133 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD // Allows you to monitor messages that passes the server. @@ -471,3 +472,478 @@ info_links = info add_overlay("paper_words") break +======= + +// Allows you to monitor messages that passes the server. + + + + +/obj/machinery/computer/message_monitor + name = "message monitor console" + desc = "Used to Monitor the crew's messages, that are sent via PDA. Can also be used to view Request Console messages." + icon_screen = "comm_logs" + circuit = /obj/item/circuitboard/computer/message_monitor + //Server linked to. + var/obj/machinery/message_server/linkedServer = null + //Sparks effect - For emag + var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread + //Messages - Saves me time if I want to change something. + var/noserver = "ALERT: No server detected." + var/incorrectkey = "ALERT: Incorrect decryption key!" + var/defaultmsg = "Welcome. Please select an option." + var/rebootmsg = "%$&(�: Critical %$$@ Error // !RestArting! - ?pLeaSe wAit!" + //Computer properties + var/screen = 0 // 0 = Main menu, 1 = Message Logs, 2 = Hacked screen, 3 = Custom Message + var/hacking = 0 // Is it being hacked into by the AI/Cyborg + var/message = "System bootup complete. Please select an option." // The message that shows on the main menu. + var/auth = 0 // Are they authenticated? + var/optioncount = 7 + // Custom Message Properties + var/customsender = "System Administrator" + var/obj/item/device/pda/customrecepient = null + var/customjob = "Admin" + var/custommessage = "This is a test, please ignore." + + light_color = LIGHT_COLOR_GREEN + +/obj/machinery/computer/message_monitor/attackby(obj/item/O, mob/living/user, params) + if(istype(O, /obj/item/screwdriver) && emagged) + //Stops people from just unscrewing the monitor and putting it back to get the console working again. + to_chat(user, "It is too hot to mess with!") + else + return ..() + +/obj/machinery/computer/message_monitor/emag_act(mob/user) + if(emagged) + return + if(!isnull(src.linkedServer)) + emagged = TRUE + screen = 2 + spark_system.set_up(5, 0, src) + src.spark_system.start() + var/obj/item/paper/monitorkey/MK = new/obj/item/paper/monitorkey + MK.loc = src.loc + // Will help make emagging the console not so easy to get away with. + MK.info += "

    �%@%(*$%&(�&?*(%&�/{}" + var/time = 100 * length(src.linkedServer.decryptkey) + addtimer(CALLBACK(src, .proc/UnmagConsole), time) + message = rebootmsg + else + to_chat(user, "A no server error appears on the screen.") + +/obj/machinery/computer/message_monitor/Initialize() + . = ..() + //Is the server isn't linked to a server, and there's a server available, default it to the first one in the list. + if(!linkedServer) + if(GLOB.message_servers && GLOB.message_servers.len > 0) + linkedServer = GLOB.message_servers[1] + +/obj/machinery/computer/message_monitor/attack_hand(mob/living/user) + if(..()) + return + //If the computer is being hacked or is emagged, display the reboot message. + if(hacking || emagged) + message = rebootmsg + var/dat = "
    /
    " + + if(auth) + dat += "

    \[Authenticated\] /" + dat += " Server Power: [src.linkedServer && src.linkedServer.active ? "\[On\]":"\[Off\]"]

    " + else + dat += "

    \[Unauthenticated\] /" + dat += " Server Power: [src.linkedServer && src.linkedServer.active ? "\[On\]":"\[Off\]"]

    " + + if(hacking || emagged) + screen = 2 + else if(!auth || !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) + if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + screen = 0 + + switch(screen) + //Main menu + if(0) + // = TAB + var/i = 0 + dat += "
    [++i]. Link To A Server
    " + if(auth) + if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) + dat += "
    ERROR: Server not found!
    " + else + dat += "
    [++i]. View Message Logs
    " + dat += "
    [++i]. View Request Console Logs
    " + dat += "
    [++i]. Clear Message Logs
    " + dat += "
    [++i]. Clear Request Console Logs
    " + dat += "
    [++i]. Set Custom Key
    " + dat += "
    [++i]. Send Admin Message
    " + else + for(var/n = ++i; n <= optioncount; n++) + dat += "
    [n]. ---------------
    " + if(issilicon(usr) && is_special_character(usr)) + //Malf/Traitor AIs can bruteforce into the system to gain the Key. + dat += "
    *&@#. Bruteforce Key
    " + else + dat += "
    " + + //Bottom message + if(!auth) + dat += "

    Please authenticate with the server in order to show additional options." + else + dat += "

    Reg, #514 forbids sending messages to a Head of Staff containing Erotic Rendering Properties." + + //Message Logs + if(1) + var/index = 0 + //var/recipient = "Unspecified" //name of the person + //var/sender = "Unspecified" //name of the sender + //var/message = "Blank" //transferred message + dat += "
    Back - Refresh

    " + dat += "" + for(var/datum/data_pda_msg/pda in src.linkedServer.pda_msgs) + index++ + if(index > 3000) + break + // Del - Sender - Recepient - Message + // X - Al Green - Your Mom - WHAT UP!? + dat += "" + dat += "
    XSenderRecipientMessage
    X
    [pda.sender][pda.recipient][pda.message][pda.photo ? "(Photo)":""]
    " + //Hacking screen. + if(2) + if(isAI(user) || iscyborg(user)) + dat += "Brute-forcing for server key.
    It will take 20 seconds for every character that the password has." + dat += "In the meantime, this console can reveal your true intentions if you let someone access it. Make sure no humans enter the room during that time." + else + //It's the same message as the one above but in binary. Because robots understand binary and humans don't... well I thought it was clever. + dat += {"01000010011100100111010101110100011001010010110
    + 10110011001101111011100100110001101101001011011100110011
    + 10010000001100110011011110111001000100000011100110110010
    + 10111001001110110011001010111001000100000011010110110010
    + 10111100100101110001000000100100101110100001000000111011
    + 10110100101101100011011000010000001110100011000010110101
    + 10110010100100000001100100011000000100000011100110110010
    + 10110001101101111011011100110010001110011001000000110011
    + 00110111101110010001000000110010101110110011001010111001
    + 00111100100100000011000110110100001100001011100100110000
    + 10110001101110100011001010111001000100000011101000110100
    + 00110000101110100001000000111010001101000011001010010000
    + 00111000001100001011100110111001101110111011011110111001
    + 00110010000100000011010000110000101110011001011100010000
    + 00100100101101110001000000111010001101000011001010010000
    + 00110110101100101011000010110111001110100011010010110110
    + 10110010100101100001000000111010001101000011010010111001
    + 10010000001100011011011110110111001110011011011110110110
    + 00110010100100000011000110110000101101110001000000111001
    + 00110010101110110011001010110000101101100001000000111100
    + 10110111101110101011100100010000001110100011100100111010
    + 10110010100100000011010010110111001110100011001010110111
    + 00111010001101001011011110110111001110011001000000110100
    + 10110011000100000011110010110111101110101001000000110110
    + 00110010101110100001000000111001101101111011011010110010
    + 10110111101101110011001010010000001100001011000110110001
    + 10110010101110011011100110010000001101001011101000010111
    + 00010000001001101011000010110101101100101001000000111001
    + 10111010101110010011001010010000001101110011011110010000
    + 00110100001110101011011010110000101101110011100110010000
    + 00110010101101110011101000110010101110010001000000111010
    + 00110100001100101001000000111001001101111011011110110110
    + 10010000001100100011101010111001001101001011011100110011
    + 10010000001110100011010000110000101110100001000000111010
    + 001101001011011010110010100101110"} + + //Fake messages + if(3) + dat += "
    Back - Reset

    " + + dat += {" + + + + "} + //Sender - Sender's Job - Recepient - Message + //Al Green- Your Dad - Your Mom - WHAT UP!? + + dat += {" + + + "} + dat += "
    SenderSender's JobRecipientMessage
    [customsender][customjob][customrecepient ? customrecepient.owner : "NONE"][custommessage]

    Send" + + //Request Console Logs + if(4) + + var/index = 0 + /* data_rc_msg + X - 5% + var/rec_dpt = "Unspecified" //name of the person - 15% + var/send_dpt = "Unspecified" //name of the sender- 15% + var/message = "Blank" //transferred message - 300px + var/stamp = "Unstamped" - 15% + var/id_auth = "Unauthenticated" - 15% + var/priority = "Normal" - 10% + */ + dat += "
    Back - Refresh

    " + dat += {" + "} + for(var/datum/data_rc_msg/rc in src.linkedServer.rc_msgs) + index++ + if(index > 3000) + break + // Del - Sender - Recepient - Message + // X - Al Green - Your Mom - WHAT UP!? + dat += {" + "} + dat += "
    XSending Dep.Receiving Dep.MessageStampID Auth.Priority.
    X
    [rc.send_dpt][rc.rec_dpt][rc.message][rc.stamp][rc.id_auth][rc.priority]
    " + + message = defaultmsg + var/datum/browser/popup = new(user, "hologram_console", name, 700, 700) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer/message_monitor/proc/BruteForce(mob/user) + if(isnull(linkedServer)) + to_chat(user, "Could not complete brute-force: Linked Server Disconnected!") + else + var/currentKey = src.linkedServer.decryptkey + to_chat(user, "Brute-force completed! The key is '[currentKey]'.") + src.hacking = 0 + src.screen = 0 // Return the screen back to normal + +/obj/machinery/computer/message_monitor/proc/UnmagConsole() + emagged = FALSE + +/obj/machinery/computer/message_monitor/proc/ResetMessage() + customsender = "System Administrator" + customrecepient = null + custommessage = "This is a test, please ignore." + customjob = "Admin" + +/obj/machinery/computer/message_monitor/Topic(href, href_list) + if(..()) + return + + if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr)) + //Authenticate + if (href_list["auth"]) + if(!linkedServer || linkedServer.stat & (NOPOWER|BROKEN)) + message = noserver + else + if(auth) + auth = 0 + screen = 0 + else + var/dkey = trim(input(usr, "Please enter the decryption key.") as text|null) + if(dkey && dkey != "") + if(src.linkedServer.decryptkey == dkey) + auth = 1 + else + message = incorrectkey + + //Turn the server on/off. + if (href_list["active"]) + if(auth) + linkedServer.active = !linkedServer.active + //Find a server + if (href_list["find"]) + if(GLOB.message_servers && GLOB.message_servers.len > 1) + src.linkedServer = input(usr,"Please select a server.", "Select a server.", null) as null|anything in GLOB.message_servers + message = "NOTICE: Server selected." + else if(GLOB.message_servers && GLOB.message_servers.len > 0) + linkedServer = GLOB.message_servers[1] + message = "NOTICE: Only Single Server Detected - Server selected." + else + message = noserver + + //View the logs - KEY REQUIRED + if (href_list["view"]) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.screen = 1 + + //Clears the logs - KEY REQUIRED + if (href_list["clear"]) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.linkedServer.pda_msgs = list() + message = "NOTICE: Logs cleared." + //Clears the request console logs - KEY REQUIRED + if (href_list["clearr"]) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.linkedServer.rc_msgs = list() + message = "NOTICE: Logs cleared." + //Change the password - KEY REQUIRED + if (href_list["pass"]) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + var/dkey = trim(stripped_input(usr, "Please enter the decryption key.")) + if(dkey && dkey != "") + if(src.linkedServer.decryptkey == dkey) + var/newkey = trim(input(usr,"Please enter the new key (3 - 16 characters max):")) + if(length(newkey) <= 3) + message = "NOTICE: Decryption key too short!" + else if(length(newkey) > 16) + message = "NOTICE: Decryption key too long!" + else if(newkey && newkey != "") + src.linkedServer.decryptkey = newkey + message = "NOTICE: Decryption key set." + else + message = incorrectkey + + //Hack the Console to get the password + if (href_list["hack"]) + if(issilicon(usr) && is_special_character(usr)) + src.hacking = 1 + src.screen = 2 + //Time it takes to bruteforce is dependant on the password length. + spawn(100*length(src.linkedServer.decryptkey)) + if(src && src.linkedServer && usr) + BruteForce(usr) + //Delete the log. + if (href_list["delete"]) + //Are they on the view logs screen? + if(screen == 1) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else //if(istype(href_list["delete"], /datum/data_pda_msg)) + src.linkedServer.pda_msgs -= locate(href_list["delete"]) + message = "NOTICE: Log Deleted!" + //Delete the request console log. + if (href_list["deleter"]) + //Are they on the view logs screen? + if(screen == 4) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else //if(istype(href_list["delete"], /datum/data_pda_msg)) + src.linkedServer.rc_msgs -= locate(href_list["deleter"]) + message = "NOTICE: Log Deleted!" + //Create a custom message + if (href_list["msg"]) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.screen = 3 + //Fake messaging selection - KEY REQUIRED + if (href_list["select"]) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + screen = 0 + else + switch(href_list["select"]) + + //Reset + if("Reset") + ResetMessage() + + //Select Your Name + if("Sender") + customsender = stripped_input(usr, "Please enter the sender's name.") + + //Select Receiver + if("Recepient") + //Get out list of viable PDAs + var/list/obj/item/device/pda/sendPDAs = get_viewable_pdas() + if(GLOB.PDAs && GLOB.PDAs.len > 0) + customrecepient = input(usr, "Select a PDA from the list.") as null|anything in sortNames(sendPDAs) + else + customrecepient = null + + //Enter custom job + if("RecJob") + customjob = stripped_input(usr, "Please enter the sender's job.") + + //Enter message + if("Message") + custommessage = stripped_input(usr, "Please enter your message.") + + //Send message + if("Send") + + if(isnull(customsender) || customsender == "") + customsender = "UNKNOWN" + + if(isnull(customrecepient)) + message = "NOTICE: No recepient selected!" + return src.attack_hand(usr) + + if(isnull(custommessage) || custommessage == "") + message = "NOTICE: No message entered!" + return src.attack_hand(usr) + + var/obj/item/device/pda/PDARec = null + for (var/obj/item/device/pda/P in get_viewable_pdas()) + if(P.owner == customsender) + PDARec = P + //Sender isn't faking as someone who exists + if(isnull(PDARec)) + src.linkedServer.send_pda_message("[customrecepient.owner]", "[customsender]","[custommessage]") + customrecepient.tnote += "← From
    [customsender] ([customjob]):
    [custommessage]
    " + if (!customrecepient.silent) + playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1) + customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3) + if( customrecepient.loc && ishuman(customrecepient.loc) ) + var/mob/living/carbon/human/H = customrecepient.loc + to_chat(H, "[icon2html(customrecepient, viewers(H))] Message from [customsender] ([customjob]), \"[custommessage]\" (Reply)") + log_talk(usr,"[key_name(usr)] (PDA: [customsender]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA) + customrecepient.cut_overlays() + customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r")) + //Sender is faking as someone who exists + else + src.linkedServer.send_pda_message("[customrecepient.owner]", "[PDARec.owner]","[custommessage]") + customrecepient.tnote += "← From [PDARec.owner] ([customjob]):
    [custommessage]
    " + if (!customrecepient.silent) + playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1) + customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3) + if( customrecepient.loc && ishuman(customrecepient.loc) ) + var/mob/living/carbon/human/H = customrecepient.loc + to_chat(H, "[icon2html(customrecepient, H)] Message from [PDARec.owner] ([customjob]), \"[custommessage]\" (Reply)") + log_talk(usr,"[key_name(usr)] (PDA: [PDARec.owner]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA) + customrecepient.cut_overlays() + customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r")) + //Finally.. + ResetMessage() + + //Request Console Logs - KEY REQUIRED + if(href_list["viewr"]) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.screen = 4 + + if (href_list["back"]) + src.screen = 0 + + return src.attack_hand(usr) + + +/obj/item/paper/monitorkey + //..() + name = "monitor decryption key" + var/obj/machinery/message_server/server = null + +/obj/item/paper/monitorkey/Initialize() + ..() + return INITIALIZE_HINT_LATELOAD + +/obj/item/paper/monitorkey/LateInitialize() + if(GLOB.message_servers) + for(var/obj/machinery/message_server/server in GLOB.message_servers) + if(!isnull(server)) + if(!isnull(server.decryptkey)) + info = "

    Daily Key Reset


    The new message monitor key is '[server.decryptkey]'.
    Please keep this a secret and away from the clown.
    If necessary, change the password to a more secure one." + info_links = info + add_overlay("paper_words") + break +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index 61bf091af3..c13e80e48b 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -48,21 +48,21 @@ if(connected) var/d2 if(timing) //door controls do not need timers. - d2 = "Stop Time Launch" + d2 = "Stop Time Launch" else - d2 = "Initiate Time Launch" - dat += "
    \nTimer System: [d2]\nTime Left: [DisplayTimeText(time)] - - + +" + d2 = "Initiate Time Launch" + dat += "
    \nTimer System: [d2]\nTime Left: [DisplayTimeText(time)] - - + +" var/temp = "" var/list/L = list( 0.25, 0.5, 1, 2, 4, 8, 16 ) for(var/t in L) if(t == connected.power) temp += "[t] " else - temp += "[t] " - dat += "
    \nPower Level: [temp]
    \nFiring Sequence
    \nTest Fire Driver
    \nToggle Outer Door
    " + temp += "[t] " + dat += "
    \nPower Level: [temp]
    \nFiring Sequence
    \nTest Fire Driver
    \nToggle Outer Door
    " else - dat += "
    \nToggle Outer Door
    " - dat += "

    Close" + dat += "
    \nToggle Outer Door
    " + dat += "

    Close" add_fingerprint(usr) var/datum/browser/popup = new(user, "computer", title, 400, 500) popup.set_content(dat) diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index 3e9d6df42a..d2005d0a55 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -21,16 +21,16 @@ user.set_machine(src) var/dat = "" if(screen == 0) - dat += "
    Unlock Console" + dat += "
    Unlock Console" else if(screen == 1) dat += "

    Prisoner ID Management

    " if(inserted_id) - dat += text("[inserted_id]
    ") - dat += text("Collected Points: [inserted_id.points]. Reset.
    ") - dat += text("Card goal: [inserted_id.goal]. Set
    ") + dat += text("[inserted_id]
    ") + dat += text("Collected Points: [inserted_id.points]. Reset.
    ") + dat += text("Card goal: [inserted_id.goal]. Set
    ") dat += text("Space Law recommends quotas of 100 points per minute they would normally serve in the brig.
    ") else - dat += text("Insert Prisoner ID.
    ") + dat += text("Insert Prisoner ID.
    ") dat += "

    Prisoner Implant Management

    " dat += "
    Chemical Implants
    " var/turf/Tr = null @@ -42,9 +42,9 @@ continue dat += "ID: [C.imp_in.name] | Remaining Units: [C.reagents.total_volume]
    " dat += "| Inject: " - dat += "((1))" - dat += "((5))" - dat += "((10))
    " + dat += "((1))" + dat += "((5))" + dat += "((10))
    " dat += "********************************
    " dat += "
    Tracking Implants
    " for(var/obj/item/implant/tracking/T in GLOB.tracked_implants) @@ -61,9 +61,9 @@ loc_display = mob_loc.loc dat += "ID: [T.imp_in.name] | Location: [loc_display]
    " - dat += "(Message Holder) |
    " + dat += "(Message Holder) |
    " dat += "********************************
    " - dat += "
    Lock Console" + dat += "
    Lock Console" var/datum/browser/popup = new(user, "computer", "Prisoner Management Console", 400, 500) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 9960032d1d..41ead45327 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -7,6 +7,7 @@ icon_screen = "robot" icon_keyboard = "rd_key" req_access = list(ACCESS_ROBOTICS) +<<<<<<< HEAD circuit = /obj/item/circuitboard/computer/robotics var/temp = null @@ -158,6 +159,159 @@ else if (href_list["killdrone"]) if(src.allowed(usr)) +======= + circuit = /obj/item/circuitboard/computer/robotics + var/temp = null + + light_color = LIGHT_COLOR_PINK + +/obj/machinery/computer/robotics/proc/can_control(mob/user, mob/living/silicon/robot/R) + if(!istype(R)) + return 0 + if(isAI(user)) + if (R.connected_ai != user) + return 0 + if(iscyborg(user)) + if (R != user) + return 0 + if(R.scrambledcodes) + return 0 + return 1 + +/obj/machinery/computer/robotics/attack_hand(mob/user) + if(..()) + return + interact(user) + +/obj/machinery/computer/robotics/interact(mob/user) + if (src.z > 6) + to_chat(user, "Unable to establish a connection: \black You're too far away from the station!") + return + user.set_machine(src) + var/dat + var/robots = 0 + for(var/mob/living/silicon/robot/R in GLOB.mob_list) + if(!can_control(user, R)) + continue + robots++ + dat += "[R.name] |" + if(R.stat) + dat += " Not Responding |" + else if (!R.canmove) + dat += " Locked Down |" + else + dat += " Operating Normally |" + if (!R.canmove) + else if(R.cell) + dat += " Battery Installed ([R.cell.charge]/[R.cell.maxcharge]) |" + else + dat += " No Cell Installed |" + if(R.module) + dat += " Module Installed ([R.module.name]) |" + else + dat += " No Module Installed |" + if(R.connected_ai) + dat += " Slaved to [R.connected_ai.name] |" + else + dat += " Independent from AI |" + if(issilicon(user) || IsAdminGhost(user)) + if(is_servant_of_ratvar(user) && user != R) + dat += "(Convert) " + else if(((issilicon(user) && is_special_character(user)) || IsAdminGhost(user)) && !R.emagged && (user != R || R.syndicate)) + dat += "(Hack) " + dat += "([R.canmove ? "Lockdown" : "Release"]) " + dat += "(Destroy)" + dat += "
    " + + if(!robots) + dat += "No Cyborg Units detected within access parameters." + dat += "
    " + + var/drones = 0 + for(var/mob/living/simple_animal/drone/D in GLOB.mob_list) + if(D.hacked) + continue + drones++ + dat += "[D.name] |" + if(D.stat) + dat += " Not Responding |" + dat += "(Destroy)" + dat += "
    " + + if(!drones) + dat += "No Drone Units detected within access parameters." + + var/datum/browser/popup = new(user, "computer", "Cyborg Control Console", 400, 500) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer/robotics/Topic(href, href_list) + if(..()) + return + + if (href_list["temp"]) + src.temp = null + + else if (href_list["killbot"]) + if(src.allowed(usr)) + var/mob/living/silicon/robot/R = locate(href_list["killbot"]) in GLOB.silicon_mobs + if(can_control(usr, R)) + var/choice = input("Are you certain you wish to detonate [R.name]?") in list("Confirm", "Abort") + if(choice == "Confirm" && can_control(usr, R) && !..()) + if(R.syndicate && R.emagged) + to_chat(R, "Extreme danger. Termination codes detected. Scrambling security codes and automatic AI unlink triggered.") + if(R.connected_ai) + to_chat(R.connected_ai, "

    ALERT - Cyborg detonation detected: [R.name]
    ") + R.ResetSecurityCodes() + else + var/turf/T = get_turf(R) + message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name(R, R.client)][ADMIN_JMP(T)]!") + log_game("\[key_name(usr)] detonated [key_name(R)]!") + if(R.connected_ai) + to_chat(R.connected_ai, "

    ALERT - Cyborg detonation detected: [R.name]
    ") + R.self_destruct() + else + to_chat(usr, "Access Denied.") + + else if (href_list["stopbot"]) + if(src.allowed(usr)) + var/mob/living/silicon/robot/R = locate(href_list["stopbot"]) in GLOB.silicon_mobs + if(can_control(usr, R)) + var/choice = input("Are you certain you wish to [R.canmove ? "lock down" : "release"] [R.name]?") in list("Confirm", "Abort") + if(choice == "Confirm" && can_control(usr, R) && !..()) + message_admins("[ADMIN_LOOKUPFLW(usr)] [R.canmove ? "locked down" : "released"] [key_name(R, R.client)][ADMIN_LOOKUPFLW(R)]!") + log_game("[key_name(usr)] [R.canmove ? "locked down" : "released"] [key_name(R)]!") + R.SetLockdown(!R.lockcharge) + to_chat(R, "[!R.lockcharge ? "Your lockdown has been lifted!" : "You have been locked down!"]") + if(R.connected_ai) + to_chat(R.connected_ai, "[!R.lockcharge ? "NOTICE - Cyborg lockdown lifted" : "ALERT - Cyborg lockdown detected"]: [R.name]
    ") + + else + to_chat(usr, "Access Denied.") + + else if (href_list["magbot"]) + if((issilicon(usr) && is_special_character(usr)) || IsAdminGhost(usr)) + var/mob/living/silicon/robot/R = locate(href_list["magbot"]) in GLOB.silicon_mobs + if(istype(R) && !R.emagged && ((R.syndicate && R == usr) || R.connected_ai == usr || IsAdminGhost(usr)) && !R.scrambledcodes && can_control(usr, R)) + log_game("[key_name(usr)] emagged [R.name] using robotic console!") + message_admins("[key_name_admin(usr)] emagged cyborg [key_name_admin(R)] using robotic console!") + R.SetEmagged(1) + if(is_special_character(R)) + R.verbs += /mob/living/silicon/robot/proc/ResetSecurityCodes + + else if(href_list["convert"]) + if(issilicon(usr) && is_special_character(usr)) + var/mob/living/silicon/robot/R = locate(href_list["convert"]) in GLOB.silicon_mobs + if(istype(R) && !is_servant_of_ratvar(R) && is_servant_of_ratvar(usr) && R.connected_ai == usr) + log_game("[key_name(usr)] converted [R.name] using robotic console!") + message_admins("[key_name_admin(usr)] converted cyborg [key_name_admin(R)] using robotic console!") + add_servant_of_ratvar(R) + + else if (href_list["killdrone"]) + if(src.allowed(usr)) +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental var/mob/living/simple_animal/drone/D = locate(href_list["killdrone"]) in GLOB.mob_list if(D.hacked) to_chat(usr, "ERROR: [D] is not responding to external commands.") diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 81204a69f0..13f12c6d3f 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -63,9 +63,9 @@ var/dat if(temp) - dat = text("[]

    Clear Screen", temp, src) + dat = text("[]

    Clear Screen", temp) else - dat = text("Confirm Identity: []
    ", src, (scan ? text("[]", scan.name) : "----------")) + dat = text("Confirm Identity: []
    ", (scan ? text("[]", scan.name) : "----------")) if(authenticated) switch(screen) if(1) @@ -111,7 +111,7 @@ "} dat += {"

    "} - dat += text("New Record
    ", src) + dat += "New Record
    " //search bar dat += {" @@ -133,10 +133,10 @@
    - - - - + + + +"} if(!isnull(GLOB.data_core.general)) @@ -161,7 +161,7 @@ background = "''" //"'background-color:#FFFFFF;'" crimstat = "No Record." dat += "" - dat += text("", R.fields["name"], R.fields["id"], R.fields["rank"], R.fields["fingerprint"], src, R, R.fields["name"]) + dat += text("", R.fields["name"], R.fields["id"], R.fields["rank"], R.fields["fingerprint"], R.fields["name"]) dat += text("", R.fields["id"]) dat += text("", R.fields["rank"]) dat += text("", R.fields["fingerprint"]) @@ -173,11 +173,11 @@ var complete_list = maintable.innerHTML;
    "} - dat += text("Record Maintenance

    ", src) - dat += text("{Log Out}",src) + dat += "Record Maintenance

    " + dat += "{Log Out}" if(2) dat += "Records Maintenance
    " - dat += "
    Delete All Records

    Back" + dat += "
    Delete All Records

    Back" if(3) dat += "Security Record
    " if(istype(active1, /datum/data/record) && GLOB.data_core.general.Find(active1)) @@ -188,27 +188,27 @@ var/obj/item/photo/P2 = active1.fields["photo_side"] user << browse_rsc(P2.img, "photo_side") dat += {"
    NameIDRankFingerprintsNameIDRankFingerprints Criminal Status
    [][][][][]
    -
    - - - - "} - dat += "" - dat += {" - + + + + "} + dat += "" + dat += {" +
    Name: [active1.fields["name"]] 
    ID: [active1.fields["id"]] 
    Sex: [active1.fields["sex"]] 
    Age: [active1.fields["age"]] 
    Species: [active1.fields["species"]] 
    Rank: [active1.fields["rank"]] 
    Fingerprint: [active1.fields["fingerprint"]] 
    Name: [active1.fields["name"]] 
    ID: [active1.fields["id"]] 
    Sex: [active1.fields["sex"]] 
    Age: [active1.fields["age"]] 
    Species: [active1.fields["species"]] 
    Rank: [active1.fields["rank"]] 
    Fingerprint: [active1.fields["fingerprint"]] 
    Physical Status: [active1.fields["p_stat"]] 
    Mental Status: [active1.fields["m_stat"]] 
    -

    - Update front photo

    - Update side photo
    +
    +

    + Update front photo

    + Update side photo
    "} else dat += "
    General Record Lost!
    " if((istype(active2, /datum/data/record) && GLOB.data_core.security.Find(active2))) dat += "Security Data" - dat += "
    Criminal Status: [active2.fields["criminal"]]" - dat += "

    Minor Crimes: Add New" + dat += "
    Criminal Status: [active2.fields["criminal"]]" + dat += "

    Minor Crimes: Add New" dat +={" @@ -224,12 +224,12 @@ dat += "" dat += "" dat += "" - dat += "" + dat += "" dat += "" dat += "
    [c.crimeDetails][c.author][c.time]\[X\]\[X\]
    " - dat += "
    Major Crimes: Add New" + dat += "
    Major Crimes: Add New" dat +={" @@ -244,27 +244,27 @@ dat += "" dat += "" dat += "" - dat += "" + dat += "" dat += "" dat += "
    [c.crimeDetails][c.author][c.time]\[X\]\[X\]
    " - dat += "
    \nImportant Notes:
    \n\t [active2.fields["notes"]] " + dat += "
    \nImportant Notes:
    \n\t [active2.fields["notes"]] " dat += "

    Comments/Log
    " var/counter = 1 while(active2.fields[text("com_[]", counter)]) dat += (active2.fields[text("com_[]", counter)] + "
    ") if(active2.fields[text("com_[]", counter)] != "Deleted") - dat += text("Delete Entry

    ", src, counter) + dat += text("Delete Entry

    ", counter) counter++ - dat += text("Add Entry

    ", src) - dat += text("Delete Record (Security Only)
    ", src) + dat += "Add Entry

    " + dat += "Delete Record (Security Only)
    " else dat += "Security Record Lost!
    " - dat += text("New Security Record

    ", src) - dat += text("Delete Record (ALL)
    Print Record
    Print Wanted Poster
    Back
    ", src, src, src, src) + dat += "New Security Record

    " + dat += "Delete Record (ALL)
    Print Record
    Print Wanted Poster
    Back
    " else else - dat += text("{Log In}", src) + dat += "{Log In}" var/datum/browser/popup = new(user, "secure_rec", "Security Records Console", 600, 400) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) @@ -451,8 +451,8 @@ What a mess.*/ if("Delete All Records") temp = "" temp += "Are you sure you wish to delete all Security records?
    " - temp += "Yes
    " - temp += "No" + temp += "Yes
    " + temp += "No" if("Purge All Records") investigate_log("[usr.name] ([usr.key]) has purged all the security records.", INVESTIGATE_RECORDS) @@ -476,14 +476,14 @@ What a mess.*/ if("Delete Record (ALL)") if(active1) temp = "

    Are you sure you wish to delete the record (ALL)?
    " - temp += "Yes
    " - temp += "No" + temp += "Yes
    " + temp += "No" if("Delete Record (Security)") if(active2) temp = "
    Are you sure you wish to delete the record (Security Portion Only)?
    " - temp += "Yes
    " - temp += "No" + temp += "Yes
    " + temp += "No" if("Delete Entry") if((istype(active2, /datum/data/record) && active2.fields[text("com_[]", href_list["del_c"])])) @@ -657,11 +657,11 @@ What a mess.*/ if(istype(active2, /datum/data/record)) temp = "
    Criminal Status:
    " temp += "" if("rank") var/list/L = list( "Head of Personnel", "Captain", "AI", "Central Command" ) @@ -670,7 +670,7 @@ What a mess.*/ temp = "
    Rank:
    " temp += "
      " for(var/rank in get_all_jobs()) - temp += "
    • [rank]
    • " + temp += "
    • [rank]
    • " temp += "
    " else alert(usr, "You do not have the required rank to do this!") diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index 4fefdb044e..c879bc175a 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -97,8 +97,8 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E if(uplinkholder) dat += "[uplinkholder.hidden_uplink.telecrystals] telecrystals remain in this uplink.
    " if(linkedboss) - dat += "Donate TC: 1 | 5 | All" - dat += "
    Eject Uplink" + dat += "Donate TC: 1 | 5 | All" + dat += "
    Eject Uplink" var/datum/browser/popup = new(user, "computer", "Telecrystal Upload/Receive Station", 700, 500) @@ -167,7 +167,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E var/dat = "" - dat += "Scan for TC stations.
    " + dat += "Scan for TC stations.
    " dat += "[storedcrystals] telecrystals are available for distribution.
    " dat += "

    " @@ -177,11 +177,11 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E if(A.uplinkholder) dat += "[A.uplinkholder.hidden_uplink.telecrystals] telecrystals." if(storedcrystals) - dat+= "
    Add TC: 1 | 5 | 10 | All" + dat+= "
    Add TC: 1 | 5 | 10 | All" dat += "
    " if(TCstations.len && storedcrystals) - dat += "

    Evenly distribute remaining TC.

    " + dat += "

    Evenly distribute remaining TC.

    " for(var/entry in transferlog) diff --git a/code/game/machinery/computer/teleporter.dm b/code/game/machinery/computer/teleporter.dm index ab4c72ab41..c62965f02d 100644 --- a/code/game/machinery/computer/teleporter.dm +++ b/code/game/machinery/computer/teleporter.dm @@ -70,16 +70,16 @@ data += "Calibration: Sub-Optimal" data += "

    " - data += "Change regime
    " - data += "Set target
    " + data += "Change regime
    " + data += "Set target
    " if(locked) - data += "
    Get target from memory
    " - data += "Eject GPS device
    " + data += "
    Get target from memory
    " + data += "Eject GPS device
    " else data += "
    Get target from memory
    " data += "Eject GPS device
    " - data += "
    Calibrate Hub" + data += "
    Calibrate Hub" var/datum/browser/popup = new(user, "teleporter", name, 400, 400) popup.set_content(data) diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm index de26806273..ec8779b7d2 100644 --- a/code/game/machinery/dance_machine.dm +++ b/code/game/machinery/dance_machine.dm @@ -92,21 +92,21 @@ user.set_machine(src) var/list/dat = list() dat +="
    " - dat += " Select Track
    " + dat += " Select Track
    " dat += "Track Selected: [selection.song_name]
    " dat += "Track Length: [DisplayTimeText(selection.song_length)]

    " dat += "
    DJ's Soundboard:
    " dat +="
    " - dat += "Air Horn " - dat += "Station Alert " - dat += "Warning Siren " - dat += "Honk
    " - dat += "Shotgun Pump" - dat += "Gunshot" - dat += "Esword" - dat += "Harm Alarm" + dat += "Air Horn " + dat += "Station Alert " + dat += "Warning Siren " + dat += "Honk
    " + dat += "Shotgun Pump" + dat += "Gunshot" + dat += "Esword" + dat += "Harm Alarm" var/datum/browser/popup = new(user, "vending", "Radiance Dance Machine - Mark IV", 400, 350) popup.set_content(dat.Join()) popup.open() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index aac80cc1a0..0e170d9b8b 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -632,23 +632,23 @@ if(wires.is_cut(WIRE_IDSCAN)) t1 += text("IdScan wire is cut.
    \n") else if(src.aiDisabledIdScanner) - t1 += text("IdScan disabled. Enable?
    \n", src) + t1 += "IdScan disabled. Enable?
    \n" else - t1 += text("IdScan enabled. Disable?
    \n", src) + t1 += "IdScan enabled. Disable?
    \n" if(src.emergency) - t1 += text("Emergency Access Override is enabled. Disable?
    \n", src) + t1 += "Emergency Access Override is enabled. Disable?
    \n" else - t1 += text("Emergency Access Override is disabled. Enable?
    \n", src) + t1 += "Emergency Access Override is disabled. Enable?
    \n" if(wires.is_cut(WIRE_POWER1)) t1 += text("Main Power Input wire is cut.
    \n") if(wires.is_cut(WIRE_POWER2)) t1 += text("Main Power Output wire is cut.
    \n") if(!secondsMainPowerLost) - t1 += text("Temporarily disrupt main power?.
    \n", src) + t1 += "Temporarily disrupt main power?.
    \n" if(!secondsBackupPowerLost) - t1 += text("Temporarily disrupt backup power?.
    \n", src) + t1 += "Temporarily disrupt backup power?.
    \n" if(wires.is_cut(WIRE_BACKUP1)) t1 += text("Backup Power Input wire is cut.
    \n") @@ -658,53 +658,53 @@ if(wires.is_cut(WIRE_BOLTS)) t1 += text("Door bolt drop wire is cut.
    \n") else if(!src.locked) - t1 += text("Door bolts are up. Drop them?
    \n", src) + t1 += "Door bolts are up. Drop them?
    \n" else t1 += text("Door bolts are down.") if(src.hasPower()) - t1 += text(" Raise?
    \n", src) + t1 += " Raise?
    \n" else t1 += text(" Cannot raise door bolts due to power failure.
    \n") if(wires.is_cut(WIRE_LIGHT)) t1 += text("Door bolt lights wire is cut.
    \n") else if(!src.lights) - t1 += text("Door bolt lights are off. Enable?
    \n", src) + t1 += "Door bolt lights are off. Enable?
    \n" else - t1 += text("Door bolt lights are on. Disable?
    \n", src) + t1 += "Door bolt lights are on. Disable?
    \n" if(wires.is_cut(WIRE_SHOCK)) t1 += text("Electrification wire is cut.
    \n") if(secondsElectrified==ELECTRIFIED_PERMANENT) - t1 += text("Door is electrified indefinitely. Un-electrify it?
    \n", src) + t1 += "Door is electrified indefinitely. Un-electrify it?
    \n" else if(secondsElectrified>NOT_ELECTRIFIED) - t1 += text("Door is electrified temporarily ([] seconds). Un-electrify it?
    \n", secondsElectrified, src) + t1 += text("Door is electrified temporarily ([] seconds). Un-electrify it?
    \n", secondsElectrified) else - t1 += text("Door is not electrified. Electrify it for 30 seconds? Or, Electrify it indefinitely until someone cancels the electrification?
    \n", src, src) + t1 += "Door is not electrified. Electrify it for 30 seconds? Or, Electrify it indefinitely until someone cancels the electrification?
    \n" if(wires.is_cut(WIRE_SAFETY)) t1 += text("Door force sensors not responding.
    \n") else if(src.safe) - t1 += text("Door safeties operating normally. Override?
    \n",src) + t1 += "Door safeties operating normally. Override?
    \n" else - t1 += text("Danger. Door safeties disabled. Restore?
    \n",src) + t1 += "Danger. Door safeties disabled. Restore?
    \n" if(wires.is_cut(WIRE_TIMING)) t1 += text("Door timing circuitry not responding.
    \n") else if(src.normalspeed) - t1 += text("Door timing circuitry operating normally. Override?
    \n",src) + t1 += "Door timing circuitry operating normally. Override?
    \n" else - t1 += text("Warning. Door timing circuitry operating abnormally. Restore?
    \n",src) + t1 += "Warning. Door timing circuitry operating abnormally. Restore?
    \n" if(src.welded) t1 += text("Door appears to have been welded shut.
    \n") else if(!src.locked) if(src.density) - t1 += text("Open door
    \n", src) + t1 += "Open door
    \n" else - t1 += text("Close door
    \n", src) + t1 += "Close door
    \n" - t1 += text("

    Close

    \n", src) + t1 += "

    Close

    \n" user << browse(t1, "window=airlock") onclose(user, "airlock") diff --git a/code/game/machinery/embedded_controller/access_controller.dm b/code/game/machinery/embedded_controller/access_controller.dm index 5e0d018554..e243494f2b 100644 --- a/code/game/machinery/embedded_controller/access_controller.dm +++ b/code/game/machinery/embedded_controller/access_controller.dm @@ -277,29 +277,29 @@ if(!exteriorAirlock || !interiorAirlock) if(!exteriorAirlock) if(interiorAirlock.density) - output = "Open Interior Airlock
    " + output = "Open Interior Airlock
    " else - output = "Close Interior Airlock
    " + output = "Close Interior Airlock
    " else if(exteriorAirlock.density) - output = "Open Exterior Airlock
    " + output = "Open Exterior Airlock
    " else - output = "Close Exterior Airlock
    " + output = "Close Exterior Airlock
    " else if(exteriorAirlock.density) if(interiorAirlock.density) - output = {"Open Exterior Airlock
    - Open Interior Airlock
    "} + output = {"Open Exterior Airlock
    + Open Interior Airlock
    "} else - output = {"Cycle to Exterior Airlock
    - Close Interior Airlock
    "} + output = {"Cycle to Exterior Airlock
    + Close Interior Airlock
    "} else if(interiorAirlock.density) - output = {"Close Exterior Airlock
    - Cycle to Interior Airlock
    "} + output = {"Close Exterior Airlock
    + Cycle to Interior Airlock
    "} else - output = {"Close Exterior Airlock
    - Close Interior Airlock
    "} + output = {"Close Exterior Airlock
    + Close Interior Airlock
    "} output = {"Access Control Console
    diff --git a/code/game/machinery/embedded_controller/airlock_controller.dm b/code/game/machinery/embedded_controller/airlock_controller.dm index 59d58bc9a5..6f10d11b2e 100644 --- a/code/game/machinery/embedded_controller/airlock_controller.dm +++ b/code/game/machinery/embedded_controller/airlock_controller.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD //States for airlock_control #define AIRLOCK_STATE_INOPEN -2 #define AIRLOCK_STATE_PRESSURIZE -1 @@ -294,3 +295,301 @@ [state_options]"} return output +======= +//States for airlock_control +#define AIRLOCK_STATE_INOPEN -2 +#define AIRLOCK_STATE_PRESSURIZE -1 +#define AIRLOCK_STATE_CLOSED 0 +#define AIRLOCK_STATE_DEPRESSURIZE 1 +#define AIRLOCK_STATE_OUTOPEN 2 + +/datum/computer/file/embedded_program/airlock_controller + var/id_tag + var/exterior_door_tag + var/interior_door_tag + var/airpump_tag + var/sensor_tag + var/sanitize_external + + state = AIRLOCK_STATE_CLOSED + var/target_state = AIRLOCK_STATE_CLOSED + var/sensor_pressure = null + +/datum/computer/file/embedded_program/airlock_controller/receive_signal(datum/signal/signal, receive_method, receive_param) + var/receive_tag = signal.data["tag"] + if(!receive_tag) + return + + if(receive_tag==sensor_tag) + if(signal.data["pressure"]) + sensor_pressure = text2num(signal.data["pressure"]) + + else if(receive_tag==exterior_door_tag) + memory["exterior_status"] = signal.data["door_status"] + + else if(receive_tag==interior_door_tag) + memory["interior_status"] = signal.data["door_status"] + + else if(receive_tag==airpump_tag) + if(signal.data["power"]) + memory["pump_status"] = signal.data["direction"] + else + memory["pump_status"] = "off" + + else if(receive_tag==id_tag) + switch(signal.data["command"]) + if("cycle") + if(state < AIRLOCK_STATE_CLOSED) + target_state = AIRLOCK_STATE_OUTOPEN + else + target_state = AIRLOCK_STATE_INOPEN + +/datum/computer/file/embedded_program/airlock_controller/receive_user_command(command) + switch(command) + if("cycle_closed") + target_state = AIRLOCK_STATE_CLOSED + if("cycle_exterior") + target_state = AIRLOCK_STATE_OUTOPEN + if("cycle_interior") + target_state = AIRLOCK_STATE_INOPEN + if("abort") + target_state = AIRLOCK_STATE_CLOSED + +/datum/computer/file/embedded_program/airlock_controller/process() + var/process_again = 1 + while(process_again) + process_again = 0 + switch(state) + if(AIRLOCK_STATE_INOPEN) // state -2 + if(target_state > state) + if(memory["interior_status"] == "closed") + state = AIRLOCK_STATE_CLOSED + process_again = 1 + else + var/datum/signal/signal = new + signal.data["tag"] = interior_door_tag + signal.data["command"] = "secure_close" + post_signal(signal) + else + if(memory["pump_status"] != "off") + var/datum/signal/signal = new + signal.data = list( + "tag" = airpump_tag, + "power" = 0, + "sigtype"="command" + ) + post_signal(signal) + + if(AIRLOCK_STATE_PRESSURIZE) + if(target_state < state) + if(sensor_pressure >= ONE_ATMOSPHERE*0.95) + if(memory["interior_status"] == "open") + state = AIRLOCK_STATE_INOPEN + process_again = 1 + else + var/datum/signal/signal = new + signal.data["tag"] = interior_door_tag + signal.data["command"] = "secure_open" + post_signal(signal) + else + var/datum/signal/signal = new + signal.data = list( + "tag" = airpump_tag, + "sigtype"="command" + ) + if(memory["pump_status"] == "siphon") + signal.data["stabalize"] = 1 + else if(memory["pump_status"] != "release") + signal.data["power"] = 1 + post_signal(signal) + else if(target_state > state) + state = AIRLOCK_STATE_CLOSED + process_again = 1 + + if(AIRLOCK_STATE_CLOSED) + if(target_state > state) + if(memory["interior_status"] == "closed") + state = AIRLOCK_STATE_DEPRESSURIZE + process_again = 1 + else + var/datum/signal/signal = new + signal.data["tag"] = interior_door_tag + signal.data["command"] = "secure_close" + post_signal(signal) + else if(target_state < state) + if(memory["exterior_status"] == "closed") + state = AIRLOCK_STATE_PRESSURIZE + process_again = 1 + else + var/datum/signal/signal = new + signal.data["tag"] = exterior_door_tag + signal.data["command"] = "secure_close" + post_signal(signal) + + else + if(memory["pump_status"] != "off") + var/datum/signal/signal = new + signal.data = list( + "tag" = airpump_tag, + "power" = 0, + "sigtype"="command" + ) + post_signal(signal) + + if(AIRLOCK_STATE_DEPRESSURIZE) + var/target_pressure = ONE_ATMOSPHERE*0.05 + if(sanitize_external) + target_pressure = ONE_ATMOSPHERE*0.01 + + if(sensor_pressure <= target_pressure) + if(target_state > state) + if(memory["exterior_status"] == "open") + state = AIRLOCK_STATE_OUTOPEN + else + var/datum/signal/signal = new + signal.data["tag"] = exterior_door_tag + signal.data["command"] = "secure_open" + post_signal(signal) + else if(target_state < state) + state = AIRLOCK_STATE_CLOSED + process_again = 1 + else if((target_state < state) && !sanitize_external) + state = AIRLOCK_STATE_CLOSED + process_again = 1 + else + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.data = list( + "tag" = airpump_tag, + "sigtype"="command" + ) + if(memory["pump_status"] == "release") + signal.data["purge"] = 1 + else if(memory["pump_status"] != "siphon") + signal.data["power"] = 1 + post_signal(signal) + + if(AIRLOCK_STATE_OUTOPEN) //state 2 + if(target_state < state) + if(memory["exterior_status"] == "closed") + if(sanitize_external) + state = AIRLOCK_STATE_DEPRESSURIZE + process_again = 1 + else + state = AIRLOCK_STATE_CLOSED + process_again = 1 + else + var/datum/signal/signal = new + signal.data["tag"] = exterior_door_tag + signal.data["command"] = "secure_close" + post_signal(signal) + else + if(memory["pump_status"] != "off") + var/datum/signal/signal = new + signal.data = list( + "tag" = airpump_tag, + "power" = 0, + "sigtype"="command" + ) + post_signal(signal) + + memory["sensor_pressure"] = sensor_pressure + memory["processing"] = state != target_state + //sensor_pressure = null //not sure if we can comment this out. Uncomment in case of problems -rastaf0 + + return 1 + + +/obj/machinery/embedded_controller/radio/airlock_controller + icon = 'icons/obj/airlock_machines.dmi' + icon_state = "airlock_control_standby" + + name = "airlock console" + density = FALSE + + frequency = 1449 + power_channel = ENVIRON + + // Setup parameters only + var/id_tag + var/exterior_door_tag + var/interior_door_tag + var/airpump_tag + var/sensor_tag + var/sanitize_external + +/obj/machinery/embedded_controller/radio/airlock_controller/Initialize(mapload) + . = ..() + if(!mapload) + return + + var/datum/computer/file/embedded_program/airlock_controller/new_prog = new + + new_prog.id_tag = id_tag + new_prog.exterior_door_tag = exterior_door_tag + new_prog.interior_door_tag = interior_door_tag + new_prog.airpump_tag = airpump_tag + new_prog.sensor_tag = sensor_tag + new_prog.sanitize_external = sanitize_external + + new_prog.master = src + program = new_prog + +/obj/machinery/embedded_controller/radio/airlock_controller/update_icon() + if(on && program) + if(program.memory["processing"]) + icon_state = "airlock_control_process" + else + icon_state = "airlock_control_standby" + else + icon_state = "airlock_control_off" + + +/obj/machinery/embedded_controller/radio/airlock_controller/return_text() + var/state_options = null + + var/state = 0 + var/sensor_pressure = "----" + var/exterior_status = "----" + var/interior_status = "----" + var/pump_status = "----" + var/current_status = "Inactive
     " + if(program) + state = program.state + sensor_pressure = program.memory["sensor_pressure"] ? program.memory["sensor_pressure"] : "----" + exterior_status = program.memory["exterior_status"] ? program.memory["exterior_status"] : "----" + interior_status = program.memory["interior_status"] ? program.memory["interior_status"] : "----" + pump_status = program.memory["pump_status"] ? program.memory["pump_status"] : "----" + + switch(state) + if(AIRLOCK_STATE_INOPEN) + state_options = {"Close Interior Airlock
    +Cycle to Exterior Airlock
    "} + current_status = "Interior Airlock Open
    Chamber Pressurized" + if(AIRLOCK_STATE_PRESSURIZE) + state_options = "Abort Cycling
    " + current_status = "Cycling to Interior Airlock
    Chamber Pressurizing" + if(AIRLOCK_STATE_CLOSED) + state_options = {"Open Interior Airlock
    +Open Exterior Airlock
    "} + if(AIRLOCK_STATE_DEPRESSURIZE) + state_options = "Abort Cycling
    " + current_status = "Cycling to Exterior Airlock
    Chamber Depressurizing" + if(AIRLOCK_STATE_OUTOPEN) + state_options = {"Cycle to Interior Airlock
    +Close Exterior Airlock
    "} + current_status = "Exterior Airlock Open
    Chamber Depressurized" + + var/output = {"

    Airlock Status

    +
    +
    Current Status:
    [current_status]
    +
     
    +
    \> Chamber Pressure:
    [sensor_pressure] kPa
    +
    \> Control Pump:
    [pump_status]
    +
    \> Interior Door:
    [interior_status]
    +
    \> Exterior Door:
    [exterior_status]
    +
    +[state_options]"} + + return output +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental diff --git a/code/game/machinery/embedded_controller/simple_vent_controller.dm b/code/game/machinery/embedded_controller/simple_vent_controller.dm index 063e81354c..f078ad94eb 100644 --- a/code/game/machinery/embedded_controller/simple_vent_controller.dm +++ b/code/game/machinery/embedded_controller/simple_vent_controller.dm @@ -53,6 +53,7 @@ /obj/machinery/embedded_controller/radio/simple_vent_controller/Initialize(mapload) . = ..() +<<<<<<< HEAD if(!mapload) return var/datum/computer/file/embedded_program/simple_vent_controller/new_prog = new @@ -77,3 +78,29 @@ [state_options]
    "} return output +======= + if(!mapload) + return + var/datum/computer/file/embedded_program/simple_vent_controller/new_prog = new + + new_prog.airpump_tag = airpump_tag + new_prog.master = src + program = new_prog + +/obj/machinery/embedded_controller/radio/simple_vent_controller/update_icon() + if(on && program) + icon_state = "airlock_control_standby" + else + icon_state = "airlock_control_off" + + +/obj/machinery/embedded_controller/radio/simple_vent_controller/return_text() + var/state_options = null + state_options = {"Deactivate Vent
    +Activate Vent / Pump
    +Activate Vent / Clear
    "} + var/output = {"Vent Control Console
    +[state_options]
    "} + + return output +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental diff --git a/code/game/machinery/gulag_item_reclaimer.dm b/code/game/machinery/gulag_item_reclaimer.dm index 3b4503c3c8..7de077c016 100644 --- a/code/game/machinery/gulag_item_reclaimer.dm +++ b/code/game/machinery/gulag_item_reclaimer.dm @@ -67,7 +67,7 @@ var/mob/thismob = i var/list/mob_info = list() mob_info["name"] = thismob.real_name - mob_info["mob"] = "\ref[thismob]" + mob_info["mob"] = "[REF(thismob)]" mobs += list(mob_info) data["mobs"] = mobs diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index f7a4138348..afc463a60e 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -120,8 +120,8 @@ Possible to do for anyone motivated enough: if(temp) dat = temp else - dat = "Request an AI's presence.
    " - dat += "Call another holopad.
    " + dat = "Request an AI's presence.
    " + dat += "Call another holopad.
    " if(LAZYLEN(holo_calls)) dat += "=====================================================
    " @@ -131,7 +131,7 @@ Possible to do for anyone motivated enough: for(var/I in holo_calls) var/datum/holocall/HC = I if(HC.connected_holopad != src) - dat += "Answer call from [get_area(HC.calling_holopad)].
    " + dat += "Answer call from [get_area(HC.calling_holopad)].
    " one_unanswered_call = TRUE else one_answered_call = TRUE @@ -142,7 +142,7 @@ Possible to do for anyone motivated enough: for(var/I in holo_calls) var/datum/holocall/HC = I if(HC.connected_holopad == src) - dat += "Disconnect call from [HC.user].
    " + dat += "Disconnect call from [HC.user].
    " var/datum/browser/popup = new(user, "holopad", name, 300, 130) @@ -166,22 +166,22 @@ Possible to do for anyone motivated enough: if(last_request + 200 < world.time) last_request = world.time temp = "You requested an AI's presence.
    " - temp += "Main Menu" + temp += "Main Menu" var/area/area = get_area(src) for(var/mob/living/silicon/ai/AI in GLOB.silicon_mobs) if(!AI.client) continue - to_chat(AI, "Your presence is requested at \the [area].") + to_chat(AI, "Your presence is requested at \the [area].") else temp = "A request for AI presence was already sent recently.
    " - temp += "Main Menu" + temp += "Main Menu" else if(href_list["Holocall"]) if(outgoing_call) return temp = "You must stand on the holopad to make a call!
    " - temp += "Main Menu" + temp += "Main Menu" if(usr.loc == loc) var/list/callnames = list() for(var/I in holopads) @@ -196,7 +196,7 @@ Possible to do for anyone motivated enough: if(usr.loc == loc) temp = "Dialing...
    " - temp += "Main Menu" + temp += "Main Menu" new /datum/holocall(usr, src, callnames[result]) else if(href_list["connectcall"]) diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index b37be1c4c2..f31a2d2436 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -160,7 +160,7 @@ /obj/machinery/limbgrower/proc/main_win(mob/user) var/dat = "

    Limb Grower Menu:


    " - dat += "Chemical Storage" + dat += "Chemical Storage" dat += materials_printout() dat += "" @@ -168,7 +168,7 @@ if(C=="special" && !emagged) //Only want to show special when console is emagged continue - dat += "" + dat += "" dat += "" //one category per line @@ -176,7 +176,7 @@ return dat /obj/machinery/limbgrower/proc/category_win(mob/user,selected_category) - var/dat = "Return to main menu" + var/dat = "Return to main menu" dat += "

    Browsing [selected_category]:


    " dat += materials_printout() @@ -187,7 +187,7 @@ if(disabled || !can_build(D)) dat += "[D.name]" else - dat += "[D.name]" + dat += "[D.name]" dat += "[get_design_cost(D)]
    " dat += "
    " @@ -195,13 +195,13 @@ /obj/machinery/limbgrower/proc/chemical_win(mob/user) - var/dat = "Return to main menu" + var/dat = "Return to main menu" dat += "

    Browsing Chemical Storage:


    " dat += materials_printout() for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume]" - dat += "Purge
    " + dat += "Purge
    " dat += "
    " return dat diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index 7808e7ed05..aa3bf465f2 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -249,9 +249,9 @@ var/dat = "Magnetic Control Console

    " if(!autolink) dat += {" - Frequency: [frequency]
    - Code: [code]
    - Probe Generators
    + Frequency: [frequency]
    + Code: [code]
    + Probe Generators
    "} if(magnets.len >= 1) @@ -260,11 +260,11 @@ var/i = 0 for(var/obj/machinery/magnetic_module/M in magnets) i++ - dat += "     < \[[i]\] ([M.on ? "On":"Off"]) | Electricity level: - [M.electricity_level] +; Magnetic field: - [M.magnetic_field] +
    " + dat += "     < \[[i]\] ([M.on ? "On":"Off"]) | Electricity level: - [M.electricity_level] +; Magnetic field: - [M.magnetic_field] +
    " - dat += "
    Speed: - [speed] +
    " - dat += "Path: {[path]}
    " - dat += "Moving: [moving ? "Enabled":"Disabled"]" + dat += "
    Speed: - [speed] +
    " + dat += "Path: {[path]}
    " + dat += "Moving: [moving ? "Enabled":"Disabled"]" user << browse(dat, "window=magnet;size=400x500") diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index c79630a58c..e7422a8df4 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -24,6 +24,7 @@ /obj/machinery/navbeacon/Initialize() . = ..() +<<<<<<< HEAD set_codes() @@ -205,4 +206,187 @@ Transponder Codes:
      "} codes[newkey] = newval +======= + + set_codes() + + var/turf/T = loc + hide(T.intact) + if(codes["patrol"]) + if(!GLOB.navbeacons["[z]"]) + GLOB.navbeacons["[z]"] = list() + GLOB.navbeacons["[z]"] += src //Register with the patrol list! + if(codes["delivery"]) + GLOB.deliverybeacons += src + GLOB.deliverybeacontags += location + +/obj/machinery/navbeacon/Destroy() + GLOB.navbeacons["[z]"] -= src //Remove from beacon list, if in one. + GLOB.deliverybeacons -= src + return ..() + +// set the transponder codes assoc list from codes_txt +/obj/machinery/navbeacon/proc/set_codes() + if(!codes_txt) + return + + codes = new() + + var/list/entries = splittext(codes_txt, ";") // entries are separated by semicolons + + for(var/e in entries) + var/index = findtext(e, "=") // format is "key=value" + if(index) + var/key = copytext(e, 1, index) + var/val = copytext(e, index+1) + codes[key] = val + else + codes[e] = "1" + + +// called when turf state changes +// hide the object if turf is intact +/obj/machinery/navbeacon/hide(intact) + invisibility = intact ? INVISIBILITY_MAXIMUM : 0 + updateicon() + +// update the icon_state +/obj/machinery/navbeacon/proc/updateicon() + var/state="navbeacon[open]" + + if(invisibility) + icon_state = "[state]-f" // if invisible, set icon to faded version + // in case revealed by T-scanner + else + icon_state = "[state]" + +/obj/machinery/navbeacon/attackby(obj/item/I, mob/user, params) + var/turf/T = loc + if(T.intact) + return // prevent intraction when T-scanner revealed + + if(istype(I, /obj/item/screwdriver)) + open = !open + + user.visible_message("[user] [open ? "opens" : "closes"] the beacon's cover.", "You [open ? "open" : "close"] the beacon's cover.") + + updateicon() + + else if (istype(I, /obj/item/card/id)||istype(I, /obj/item/device/pda)) + if(open) + if (src.allowed(user)) + src.locked = !src.locked + to_chat(user, "Controls are now [src.locked ? "locked" : "unlocked"].") + else + to_chat(user, "Access denied.") + updateDialog() + else + to_chat(user, "You must open the cover first!") + else + return ..() + +/obj/machinery/navbeacon/attack_ai(mob/user) + interact(user, 1) + +/obj/machinery/navbeacon/attack_paw() + return + +/obj/machinery/navbeacon/attack_hand(mob/user) + interact(user, 0) + +/obj/machinery/navbeacon/interact(mob/user, ai = 0) + var/turf/T = loc + if(T.intact) + return // prevent intraction when T-scanner revealed + + if(!open && !ai) // can't alter controls if not open, unless you're an AI + to_chat(user, "The beacon's control cover is closed!") + return + + + var/t + + if(locked && !ai) + t = {"Navigation Beacon

      +(swipe card to unlock controls)
      +Location: [location ? location : "(none)"]
      +Transponder Codes:
    " dat += "" - dat += "" dat += "" dat += "
    [C][C]
    [dpt]Normal High" + dat += "Normal High" if(hackState) - dat += "EXTREME" + dat += "EXTREME" dat += "
    " - dat += "
    << Back
    " + dat += "
    << Back
    " if(2) //req. supplies dat += "Which department do you need supplies from?

    " @@ -160,13 +160,13 @@ GLOBAL_LIST_EMPTY(allConsoles) if (dpt != department) dat += "" dat += "[dpt]" - dat += "Normal High" + dat += "Normal High" if(hackState) - dat += "EXTREME" + dat += "EXTREME" dat += "" dat += "" dat += "" - dat += "
    << Back
    " + dat += "
    << Back
    " if(3) //relay information dat += "Which department would you like to send information to?

    " @@ -175,21 +175,21 @@ GLOBAL_LIST_EMPTY(allConsoles) if (dpt != department) dat += "" dat += "[dpt]" - dat += "Normal High" + dat += "Normal High" if(hackState) - dat += "EXTREME" + dat += "EXTREME" dat += "" dat += "" dat += "" - dat += "
    << Back
    " + dat += "
    << Back
    " if(6) //sent successfully dat += "Message sent.

    " - dat += "Continue
    " + dat += "Continue
    " if(7) //unsuccessful; not sent dat += "An error occurred.

    " - dat += "Continue
    " + dat += "Continue
    " if(8) //view messages for (var/obj/machinery/requests_console/Console in GLOB.allConsoles) @@ -203,7 +203,7 @@ GLOBAL_LIST_EMPTY(allConsoles) for(var/msg in messages) // This puts more recent messages at the *top*, where they belong. messageComposite = "
    [msg]
    " + messageComposite dat += messageComposite - dat += "
    << Back to Main Menu
    " + dat += "
    << Back to Main Menu
    " if(9) //authentication before sending dat += "Message Authentication

    " @@ -211,8 +211,8 @@ GLOBAL_LIST_EMPTY(allConsoles) dat += "
    You may authenticate your message now by scanning your ID or your stamp

    " dat += "Validated by: [msgVerified ? msgVerified : "Not Validated"]
    " dat += "Stamped by: [msgStamped ? msgStamped : "Not Stamped"]

    " - dat += "Send Message
    " - dat += "
    << Discard Message
    " + dat += "Send Message
    " + dat += "
    << Discard Message
    " if(10) //send announcement dat += "

    Station-wide Announcement

    " @@ -221,12 +221,12 @@ GLOBAL_LIST_EMPTY(allConsoles) else dat += "
    Swipe your card to authenticate yourself

    " dat += "Message: [message ? message : "No Message"]
    " - dat += "[message ? "Edit" : "Write"] Message

    " + dat += "[message ? "Edit" : "Write"] Message

    " if ((announceAuth || IsAdminGhost(user)) && message) - dat += "Announce Message
    " + dat += "Announce Message
    " else dat += "Announce Message
    " - dat += "
    << Back
    " + dat += "
    << Back
    " else //main menu screen = 0 @@ -237,25 +237,25 @@ GLOBAL_LIST_EMPTY(allConsoles) dat += "
    There are new PRIORITY messages

    " if (newmessagepriority == 3) dat += "
    There are new EXTREME PRIORITY messages

    " - dat += "View Messages

    " + dat += "View Messages

    " - dat += "Request Assistance
    " - dat += "Request Supplies
    " - dat += "Relay Anonymous Information

    " + dat += "Request Assistance
    " + dat += "Request Supplies
    " + dat += "Relay Anonymous Information

    " if(!emergency) - dat += "Emergency: Security
    " - dat += "Emergency: Engineering
    " - dat += "Emergency: Medical

    " + dat += "Emergency: Security
    " + dat += "Emergency: Engineering
    " + dat += "Emergency: Medical

    " else dat += "[emergency] has been dispatched to this location.

    " if(announcementConsole) - dat += "Send Station-wide Announcement

    " + dat += "Send Station-wide Announcement

    " if (silent) - dat += "Speaker OFF" + dat += "Speaker OFF" else - dat += "Speaker ON" + dat += "Speaker ON" var/datum/browser/popup = new(user, "req_console", "[department] Requests Console", 450, 440) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) @@ -454,7 +454,7 @@ GLOBAL_LIST_EMPTY(allConsoles) var/linkedsender if(istype(source, /obj/machinery/requests_console)) var/obj/machinery/requests_console/sender = source - linkedsender = "[sender.department]" + linkedsender = "[sender.department]" else capitalize(source) linkedsender = source diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm index 20fd729304..606f64c7f3 100644 --- a/code/game/machinery/robot_fabricator.dm +++ b/code/game/machinery/robot_fabricator.dm @@ -58,13 +58,13 @@ Please wait until completion...
    dat = {" Metal Amount: [min(150000, src.metal_amount)] cm3 (MAX: 150,000)


    -Left Arm (25,000 cc metal.)
    -
    Right Arm (25,000 cc metal.)
    -
    Left Leg (25,000 cc metal.)
    -
    Right Leg (25,000 cc metal).
    -
    Chest (50,000 cc metal).
    -
    Head (50,000 cc metal).
    -
    Robot Frame (75,000 cc metal).
    +
    Left Arm (25,000 cc metal.)
    +
    Right Arm (25,000 cc metal.)
    +
    Left Leg (25,000 cc metal.)
    +
    Right Leg (25,000 cc metal).
    +
    Chest (50,000 cc metal).
    +
    Head (50,000 cc metal).
    +
    Robot Frame (75,000 cc metal).
    "} user << browse("Robotic Fabricator Control Panel[dat]", "window=robot_fabricator") diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index a9162b85f8..a538e4ec0c 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -134,11 +134,11 @@ Credit Remaining: [balance]
    [plays] players have tried their luck today, and [jackpots] have won a jackpot!


    -
    Play!
    + Play!

    [reeltext]
    - Refund balance
    "} + Refund balance
    "} var/datum/browser/popup = new(user, "slotmachine", "Slot Machine") popup.set_content(dat) diff --git a/code/game/machinery/telecomms/computers/logbrowser.dm b/code/game/machinery/telecomms/computers/logbrowser.dm index 590c8d03a5..93f9d2b03a 100644 --- a/code/game/machinery/telecomms/computers/logbrowser.dm +++ b/code/game/machinery/telecomms/computers/logbrowser.dm @@ -30,23 +30,23 @@ if(0) dat += "
    [temp]
    " - dat += "
    Current Network: [network]
    " + dat += "
    Current Network: [network]
    " if(servers.len) dat += "
    Detected Telecommunication Servers:" - dat += "
    \[Flush Buffer\]" + dat += "
    \[Flush Buffer\]" else - dat += "
    No servers detected. Scan for servers: \[Scan\]" + dat += "
    No servers detected. Scan for servers: \[Scan\]" // --- Viewing Server --- if(1) dat += "
    [temp]
    " - dat += "
    \[Main Menu\] \[Refresh\]
    " + dat += "
    \[Main Menu\] \[Refresh\]
    " dat += "
    Current Network: [network]" dat += "
    Selected Server: [SelectedServer.id]" @@ -65,7 +65,7 @@ // If the log is a speech file if(C.input_type == "Speech File") - dat += "
  • [C.name] \[X\]
    " + dat += "
  • [C.name] \[X\]
    " // -- Determine race of orator -- @@ -128,7 +128,7 @@ else if(C.input_type == "Execution Error") - dat += "
  • [C.name] \[X\]
    " + dat += "
  • [C.name] \[X\]
    " dat += "Output: \"[C.parameters["message"]]\"
    " dat += "

  • " diff --git a/code/game/machinery/telecomms/computers/telemonitor.dm b/code/game/machinery/telecomms/computers/telemonitor.dm index cb3ae78e72..c5c53888fc 100644 --- a/code/game/machinery/telecomms/computers/telemonitor.dm +++ b/code/game/machinery/telecomms/computers/telemonitor.dm @@ -32,28 +32,28 @@ if(0) dat += "
    [temp]

    " - dat += "
    Current Network: [network]
    " + dat += "
    Current Network: [network]
    " if(machinelist.len) dat += "
    Detected Network Entities:" - dat += "
    \[Flush Buffer\]" + dat += "
    \[Flush Buffer\]" else - dat += "\[Probe Network\]" + dat += "\[Probe Network\]" // --- Viewing Machine --- if(1) dat += "
    [temp]
    " - dat += "
    \[Main Menu\]
    " + dat += "
    \[Main Menu\]
    " dat += "
    Current Network: [network]
    " dat += "Selected Network Entity: [SelectedMachine.name] ([SelectedMachine.id])
    " dat += "Linked Entities:
      " for(var/obj/machinery/telecomms/T in SelectedMachine.links) if(!T.hide) - dat += "
    1. \ref[T.id] [T.name] ([T.id])
    2. " + dat += "
    3. [REF(T.id)] [T.name] ([T.id])
    4. " dat += "
    " diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index 893ab38380..74774f2670 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -52,13 +52,13 @@ var/dat dat = "[name]

    [name] Access

    " dat += "
    [temp]
    " - dat += "
    Power Status: [toggled ? "On" : "Off"]" + dat += "
    Power Status: [toggled ? "On" : "Off"]" if(on && toggled) if(id != "" && id) - dat += "
    Identification String: [id]" + dat += "
    Identification String: [id]" else - dat += "
    Identification String: NULL" - dat += "
    Network: [network]" + dat += "
    Identification String: NULL" + dat += "
    Network: [network]" dat += "
    Prefabrication: [autolinkers.len ? "TRUE" : "FALSE"]" if(hide) dat += "
    Shadow Link: ACTIVE" @@ -73,7 +73,7 @@ i++ if(T.hide && !hide) continue - dat += "
  • \ref[T] [T.name] ([T.id]) \[X\]
  • " + dat += "
  • [REF(T)] [T.name] ([T.id]) \[X\]
  • " dat += "" dat += "
    Filtering Frequencies: " @@ -83,21 +83,21 @@ for(var/x in freq_listening) i++ if(i < length(freq_listening)) - dat += "[format_frequency(x)] GHz\[X\]; " + dat += "[format_frequency(x)] GHz\[X\]; " else - dat += "[format_frequency(x)] GHz\[X\]" + dat += "[format_frequency(x)] GHz\[X\]" else dat += "NONE" - dat += "
    \[Add Filter\]" + dat += "
    \[Add Filter\]" dat += "
    " if(P) var/obj/machinery/telecomms/T = P.buffer if(istype(T)) - dat += "

    MULTITOOL BUFFER: [T] ([T.id]) \[Link\] \[Flush\]" + dat += "

    MULTITOOL BUFFER: [T] ([T.id])
    \[Link\] \[Flush\]" else - dat += "

    MULTITOOL BUFFER:
    \[Add Machine\]" + dat += "

    MULTITOOL BUFFER: \[Add Machine\]" dat += "
    " temp = "" @@ -151,8 +151,8 @@ /obj/machinery/telecomms/relay/Options_Menu() var/dat = "" - dat += "
    Broadcasting: [broadcasting ? "YES" : "NO"]" - dat += "
    Receiving: [receiving ? "YES" : "NO"]" + dat += "
    Broadcasting: [broadcasting ? "YES" : "NO"]" + dat += "
    Receiving: [receiving ? "YES" : "NO"]" return dat /obj/machinery/telecomms/relay/Options_Topic(href, href_list) @@ -167,7 +167,7 @@ // BUS /obj/machinery/telecomms/bus/Options_Menu() - var/dat = "
    Change Signal Frequency: [change_frequency ? "YES ([change_frequency])" : "NO"]" + var/dat = "
    Change Signal Frequency: [change_frequency ? "YES ([change_frequency])" : "NO"]" return dat /obj/machinery/telecomms/bus/Options_Topic(href, href_list) @@ -254,7 +254,7 @@ if(text2num(href_list["unlink"]) <= length(links)) var/obj/machinery/telecomms/T = links[text2num(href_list["unlink"])] if(T) - temp = "-% Removed \ref[T] [T.name] from linked entities. %-" + temp = "-% Removed [REF(T)] [T.name] from linked entities. %-" // Remove link entries from both T and src. @@ -276,7 +276,7 @@ if(!(T in links)) links += T - temp = "-% Successfully linked with \ref[T] [T.name] %-" + temp = "-% Successfully linked with [REF(T)] [T.name] %-" else temp = "-% Unable to acquire buffer %-" @@ -284,7 +284,7 @@ if(href_list["buffer"]) P.buffer = src - temp = "-% Successfully stored \ref[P.buffer] [P.buffer.name] in buffer %-" + temp = "-% Successfully stored [REF(P.buffer)] [P.buffer.name] in buffer %-" if(href_list["flush"]) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 2510c19c05..514de9b841 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -373,7 +373,7 @@ for (var/datum/data/vending_product/R in display_records) dat += "
  • " if(R.amount > 0) - dat += "Vend " + dat += "Vend " else dat += "Sold out " dat += "[sanitize(R.product_name)]:" @@ -384,7 +384,7 @@ if(premium.len > 0) dat += "Change Return: " if (coin || bill) - dat += "[(coin ? coin : "")][(bill ? bill : "")]  Remove" + dat += "[(coin ? coin : "")][(bill ? bill : "")]  Remove" else dat += "No money  Remove" if(istype(src, /obj/machinery/vending/snack)) @@ -393,7 +393,7 @@ for (var/O in dish_quants) if(dish_quants[O] > 0) var/N = dish_quants[O] - dat += "Dispense " + dat += "Dispense " dat += "[capitalize(O)]: [N]
    " dat += "
  • " user.set_machine(src) diff --git a/code/game/mecha/combat/honker.dm b/code/game/mecha/combat/honker.dm index ab3ebb4050..ef582421fa 100644 --- a/code/game/mecha/combat/honker.dm +++ b/code/game/mecha/combat/honker.dm @@ -10,6 +10,7 @@ max_temperature = 25000 infra_luminosity = 5 operation_req_access = list(ACCESS_THEATRE) +<<<<<<< HEAD wreckage = /obj/structure/mecha_wreckage/honker add_req_access = 0 max_equip = 3 @@ -154,3 +155,149 @@ return color +======= + wreckage = /obj/structure/mecha_wreckage/honker + add_req_access = 0 + max_equip = 3 + var/squeak = 0 + +/* +/obj/mecha/combat/honker/New() + ..() + + weapons += new /datum/mecha_weapon/honker(src) + weapons += new /datum/mecha_weapon/missile_rack/banana_mortar(src) + weapons += new /datum/mecha_weapon/missile_rack/mousetrap_mortar(src) + selected_weapon = weapons[1] + return +*/ + +/obj/mecha/combat/honker/get_stats_part() + var/integrity = obj_integrity/max_integrity*100 + var/cell_charge = get_charge() + var/datum/gas_mixture/int_tank_air = internal_tank.return_air() + var/tank_pressure = internal_tank ? round(int_tank_air.return_pressure(),0.01) : "None" + var/tank_temperature = internal_tank ? int_tank_air.temperature : "Unknown" + var/cabin_pressure = round(return_pressure(),0.01) + var/output = {"[report_internal_damage()] + [integrity<30?"DAMAGE LEVEL CRITICAL
    ":null] + [internal_damage&MECHA_INT_TEMP_CONTROL?"CLOWN SUPPORT SYSTEM MALFUNCTION
    ":null] + [internal_damage&MECHA_INT_TANK_BREACH?"GAS TANK HONK
    ":null] + [internal_damage&MECHA_INT_CONTROL_LOST?"HONK-A-DOODLE - Recalibrate
    ":null] + IntegriHONK: [integrity]%
    + PowerHONK charge: [isnull(cell_charge)?"No powercell installed":"[cell.percent()]%"]
    + Air source: [use_internal_tank?"Internal Airtank":"Environment"]
    + AirHONK pressure: [tank_pressure]kPa
    + AirHONK temperature: [tank_temperature]°K|[tank_temperature - T0C]°C
    + HONK pressure: [cabin_pressure>WARNING_HIGH_PRESSURE ? "[cabin_pressure]": cabin_pressure]kPa
    + HONK temperature: [return_temperature()]°K|[return_temperature() - T0C]°C
    + Lights: [lights?"on":"off"]
    + [dna_lock?"DNA-locked:
    [dna_lock] \[Reset\]
    ":null] + "} + return output + +/obj/mecha/combat/honker/get_stats_html() + var/output = {" + [src.name] data + + + + +
    + [src.get_stats_part()] +
    +
    + [src.get_equipment_list()] +
    +
    +
    + [src.get_commands()] +
    + + + "} + return output + +/obj/mecha/combat/honker/get_commands() + var/output = {"
    +
    Sounds of HONK:
    + +
    + "} + output += ..() + return output + + +/obj/mecha/combat/honker/get_equipment_list() + if(!equipment.len) + return + var/output = "Honk-ON-Systems:
    " + for(var/obj/item/mecha_parts/mecha_equipment/MT in equipment) + output += "
    [MT.get_equip_info()]
    " + output += "
    " + return output + + + +/obj/mecha/combat/honker/mechstep(direction) + var/result = step(src,direction) + if(result) + if(!squeak) + playsound(src, "clownstep", 70, 1) + squeak = 1 + else + squeak = 0 + return result + +/obj/mecha/combat/honker/Topic(href, href_list) + ..() + if (href_list["play_sound"]) + switch(href_list["play_sound"]) + if("sadtrombone") + playsound(src, 'sound/misc/sadtrombone.ogg', 50) + return + +/proc/rand_hex_color() + var/list/colors = list("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f") + var/color="" + for (var/i=0;i<6;i++) + color = color+pick(colors) + return color + + +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index 48d98aa70f..627858bea6 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -25,7 +25,7 @@ /obj/item/mecha_parts/mecha_equipment/proc/update_equip_info() if(chassis) - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",get_equip_info()) return 1 return @@ -52,7 +52,7 @@ if(chassis.selected == src) txt += "[src.name]" else if(selectable) - txt += "[src.name]" + txt += "[src.name]" else txt += "[src.name]" @@ -132,7 +132,7 @@ /obj/item/mecha_parts/mecha_equipment/proc/set_ready_state(state) equip_ready = state if(chassis) - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) return /obj/item/mecha_parts/mecha_equipment/proc/occupant_message(message) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 0b99d811b3..cc0f935628 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -104,21 +104,21 @@ if(output) var/temp = "" if(patient) - temp = "
    \[Occupant: [patient] ([patient.stat > 1 ? "*DECEASED*" : "Health: [patient.health]%"])\]
    View stats|Eject" + temp = "
    \[Occupant: [patient] ([patient.stat > 1 ? "*DECEASED*" : "Health: [patient.health]%"])\]
    View stats|Eject" return "[output] [temp]" return /obj/item/mecha_parts/mecha_equipment/medical/sleeper/Topic(href,href_list) ..() - var/datum/topic_input/filter = new /datum/topic_input(href,href_list) - if(filter.get("eject")) + var/datum/topic_input/afilter = new /datum/topic_input(href,href_list) + if(afilter.get("eject")) go_out() - if(filter.get("view_stats")) + if(afilter.get("view_stats")) chassis.occupant << browse(get_patient_stats(),"window=msleeper") onclose(chassis.occupant, "msleeper") return - if(filter.get("inject")) - inject_reagent(filter.getType("inject", /datum/reagent),filter.getObj("source")) + if(afilter.get("inject")) + inject_reagent(afilter.getType("inject", /datum/reagent),afilter.getObj("source")) return /obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/get_patient_stats() @@ -184,7 +184,7 @@ if(SG && SG.reagents && islist(SG.reagents.reagent_list)) for(var/datum/reagent/R in SG.reagents.reagent_list) if(R.volume > 0) - output += "Inject [R.name]
    " + output += "Inject [R.name]
    " return output @@ -287,7 +287,7 @@ /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/get_equip_info() var/output = ..() if(output) - return "[output] \[[mode? "Analyze" : "Launch"]\]
    \[Syringes: [syringes.len]/[max_syringes] | Reagents: [reagents.total_volume]/[reagents.maximum_volume]\]
    Reagents list" + return "[output] \[[mode? "Analyze" : "Launch"]\]
    \[Syringes: [syringes.len]/[max_syringes] | Reagents: [reagents.total_volume]/[reagents.maximum_volume]\]
    Reagents list" return /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/action(atom/movable/target) @@ -358,19 +358,19 @@ /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/Topic(href,href_list) ..() - var/datum/topic_input/filter = new (href,href_list) - if(filter.get("toggle_mode")) + var/datum/topic_input/afilter = new (href,href_list) + if(afilter.get("toggle_mode")) mode = !mode update_equip_info() return - if(filter.get("select_reagents")) + if(afilter.get("select_reagents")) processed_reagents.len = 0 var/m = 0 var/message for(var/i=1 to known_reagents.len) if(m>=synth_speed) break - var/reagent = filter.get("reagent_[i]") + var/reagent = afilter.get("reagent_[i]") if(reagent && (reagent in known_reagents)) message = "[m ? ", " : null][known_reagents[reagent]]" processed_reagents += reagent @@ -382,14 +382,14 @@ occupant_message("Reagent processing started.") log_message("Reagent processing started.") return - if(filter.get("show_reagents")) + if(afilter.get("show_reagents")) chassis.occupant << browse(get_reagents_page(),"window=msyringegun") - if(filter.get("purge_reagent")) - var/reagent = filter.get("purge_reagent") + if(afilter.get("purge_reagent")) + var/reagent = afilter.get("purge_reagent") if(reagent) reagents.del_reagent(reagent) return - if(filter.get("purge_all")) + if(afilter.get("purge_all")) reagents.clear_reagents() return return @@ -426,7 +426,7 @@ var/r_list = get_reagents_list() var/inputs if(r_list) - inputs += "" + inputs += "" inputs += "" inputs += "" var/output = {" @@ -448,9 +448,9 @@ var/output for(var/datum/reagent/R in reagents.reagent_list) if(R.volume > 0) - output += "[R]: [round(R.volume,0.001)] - Purge Reagent
    " + output += "[R]: [round(R.volume,0.001)] - Purge Reagent
    " if(output) - output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] - Purge All" + output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] - Purge All" return output || "None" /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/load_syringe(obj/item/reagent_containers/syringe/S) diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 38b8e2bb96..9d7c9b6833 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -92,20 +92,20 @@ return locked = target occupant_message("Locked on [target]") - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) else if(target!=locked) if(locked in view(chassis)) var/turf/targ = get_turf(target) var/turf/orig = get_turf(locked) locked.throw_at(target, 14, 1.5) locked = null - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) log_game("[key_name(chassis.occupant)] used a Gravitational Catapult to throw [locked]([COORD(orig)]) at [target]([COORD(targ)]).") return TRUE else locked = null occupant_message("Lock on [locked] disengaged.") - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) if(2) var/list/atoms = list() if(isturf(target)) @@ -126,13 +126,13 @@ /obj/item/mecha_parts/mecha_equipment/gravcatapult/get_equip_info() - return "[..()] [mode==1?"([locked||"Nothing"])":null] \[S|P\]" + return "[..()] [mode==1?"([locked||"Nothing"])":null] \[S|P\]" /obj/item/mecha_parts/mecha_equipment/gravcatapult/Topic(href, href_list) ..() if(href_list["mode"]) mode = text2num(href_list["mode"]) - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) return @@ -212,7 +212,7 @@ /obj/item/mecha_parts/mecha_equipment/repair_droid/get_equip_info() if(!chassis) return - return "*  [src.name] - [equip_ready?"A":"Dea"]ctivate" + return "*  [src.name] - [equip_ready?"A":"Dea"]ctivate" /obj/item/mecha_parts/mecha_equipment/repair_droid/Topic(href, href_list) @@ -230,7 +230,7 @@ log_message("Deactivated.") set_ready_state(1) chassis.add_overlay(droid_overlay) - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) /obj/item/mecha_parts/mecha_equipment/repair_droid/process() @@ -320,7 +320,7 @@ /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/get_equip_info() if(!chassis) return - return "*  [src.name] - [equip_ready?"A":"Dea"]ctivate" + return "*  [src.name] - [equip_ready?"A":"Dea"]ctivate" /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/process() @@ -397,13 +397,13 @@ /obj/item/mecha_parts/mecha_equipment/generator/get_equip_info() var/output = ..() if(output) - return "[output] \[[fuel]: [round(fuel.amount*fuel.perunit,0.1)] cm3\] - [equip_ready?"A":"Dea"]ctivate" + return "[output] \[[fuel]: [round(fuel.amount*fuel.perunit,0.1)] cm3\] - [equip_ready?"A":"Dea"]ctivate" /obj/item/mecha_parts/mecha_equipment/generator/action(target) if(chassis) var/result = load_fuel(target) if(result) - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) /obj/item/mecha_parts/mecha_equipment/generator/proc/load_fuel(var/obj/item/stack/sheet/P) if(P.type == fuel.type && P.amount > 0) diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 2bc3d3eaff..7ec90ab7ce 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -288,7 +288,7 @@ return /obj/item/mecha_parts/mecha_equipment/rcd/get_equip_info() - return "[..()] \[D|C|A\]" + return "[..()] \[D|C|A\]" @@ -342,7 +342,7 @@ cable.amount += to_load target.use(to_load) occupant_message("[to_load] meters of cable successfully loaded.") - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) else occupant_message("Reel is full.") else @@ -371,7 +371,7 @@ /obj/item/mecha_parts/mecha_equipment/cable_layer/get_equip_info() var/output = ..() if(output) - return "[output] \[Cable: [cable ? cable.amount : 0] m\][(cable && cable.amount) ? "- [!equip_ready?"Dea":"A"]ctivate|Cut" : null]" + return "[output] \[Cable: [cable ? cable.amount : 0] m\][(cable && cable.amount) ? "- [!equip_ready?"Dea":"A"]ctivate|Cut" : null]" return /obj/item/mecha_parts/mecha_equipment/cable_layer/proc/use_cable(amount) diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 9d83c1c95b..4b814d6e58 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -210,7 +210,7 @@ return 1 /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/get_equip_info() - return "[..()] \[[src.projectiles]\][(src.projectiles < initial(src.projectiles))?" - Rearm":null]" + return "[..()] \[[src.projectiles]\][(src.projectiles < initial(src.projectiles))?" - Rearm":null]" /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/rearm() @@ -220,7 +220,7 @@ projectiles++ projectiles_to_add-- chassis.use_power(projectile_energy_cost) - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) log_message("Rearmed [src.name].") return 1 @@ -239,7 +239,7 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/action(atom/target) if(..()) projectiles -= get_shot_amount() - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) return 1 diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 524dc4e5b5..be0f596ced 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -98,8 +98,8 @@ continue output += "
    [output_part_info(D)]
    \[" if(check_resources(D)) - output += "Build | " - output += "Add to queue\]\[?\]
    " + output += "Build | " + output += "Add to queue\]\[?\]
    " return output /obj/machinery/mecha_part_fabricator/proc/output_part_info(datum/design/D) @@ -121,10 +121,10 @@ var/datum/material/M = materials.materials[mat_id] output += "[M.name]: [M.amount] cm³" if(M.amount >= MINERAL_MATERIAL_AMOUNT) - output += "- Remove \[1\]" + output += "- Remove \[1\]" if(M.amount >= (MINERAL_MATERIAL_AMOUNT * 10)) - output += " | \[10\]" - output += " | \[All\]" + output += " | \[10\]" + output += " | \[All\]" output += "
    " return output @@ -206,7 +206,7 @@ if(!check_resources(D)) say("Not enough resources. Queue processing stopped.") temp = {"Not enough resources to build next part.
    - Try again | Return"} + Try again | Return"} return 0 remove_from_queue(1) build_part(D) @@ -225,12 +225,12 @@ var/obj/part = D.build_path output += "" output += initial(part.name) + " - " - output += "[i>1?"":null] " - output += "[i↓":null] " - output += "Remove" + output += "[i>1?"":null] " + output += "[i↓":null] " + output += "Remove" output += "" - output += "\[Process queue | Clear queue\]" + output += "\[Process queue | Clear queue\]" return output /obj/machinery/mecha_part_fabricator/proc/sync() @@ -250,13 +250,13 @@ files.RefreshResearch() temp = "Processed equipment designs.
    " //check if the tech coefficients have changed - temp += "Return" + temp += "Return" updateUsrDialog() say("Successfully synchronized with R&D server.") return - temp = "Unable to connect to local R&D Database.
    Please check your connections and try again.
    Return" + temp = "Unable to connect to local R&D Database.
    Please check your connections and try again.
    Return" updateUsrDialog() return @@ -289,12 +289,12 @@ switch(screen) if("main") left_part = output_available_resources()+"
    " - left_part += "Sync with R&D servers
    " + left_part += "Sync with R&D servers
    " for(var/part_set in part_sets) - left_part += "[part_set] - \[Add all parts to queue\]
    " + left_part += "[part_set] - \[Add all parts to queue\]
    " if("parts") left_part += output_parts_list(part_set) - left_part += "
    Return" + left_part += "
    Return" dat = {" [name] @@ -332,9 +332,9 @@ /obj/machinery/mecha_part_fabricator/Topic(href, href_list) if(..()) return - var/datum/topic_input/filter = new /datum/topic_input(href,href_list) + var/datum/topic_input/afilter = new /datum/topic_input(href,href_list) if(href_list["part_set"]) - var/tpart_set = filter.getStr("part_set") + var/tpart_set = afilter.getStr("part_set") if(tpart_set) if(tpart_set=="clear") part_set = null @@ -342,7 +342,7 @@ part_set = tpart_set screen = "parts" if(href_list["part"]) - var/T = filter.getStr("part") + var/T = afilter.getStr("part") for(var/v in files.known_designs) var/datum/design/D = files.known_designs[v] if(D.build_type & MECHFAB) @@ -353,7 +353,7 @@ add_to_queue(D) break if(href_list["add_to_queue"]) - var/T = filter.getStr("add_to_queue") + var/T = afilter.getStr("add_to_queue") for(var/v in files.known_designs) var/datum/design/D = files.known_designs[v] if(D.build_type & MECHFAB) @@ -362,10 +362,10 @@ break return update_queue_on_page() if(href_list["remove_from_queue"]) - remove_from_queue(filter.getNum("remove_from_queue")) + remove_from_queue(afilter.getNum("remove_from_queue")) return update_queue_on_page() if(href_list["partset_to_queue"]) - add_part_set_to_queue(filter.get("partset_to_queue")) + add_part_set_to_queue(afilter.get("partset_to_queue")) return update_queue_on_page() if(href_list["process_queue"]) spawn(0) @@ -379,8 +379,8 @@ if(href_list["screen"]) screen = href_list["screen"] if(href_list["queue_move"] && href_list["index"]) - var/index = filter.getNum("index") - var/new_index = index + filter.getNum("queue_move") + var/index = afilter.getNum("index") + var/new_index = index + afilter.getNum("queue_move") if(isnum(index) && isnum(new_index) && IsInteger(index) && IsInteger(new_index)) if(IsInRange(new_index,1,queue.len)) queue.Swap(index,new_index) @@ -391,7 +391,7 @@ if(href_list["sync"]) sync() if(href_list["part_desc"]) - var/T = filter.getStr("part_desc") + var/T = afilter.getStr("part_desc") for(var/v in files.known_designs) var/datum/design/D = files.known_designs[v] if(D.build_type & MECHFAB) @@ -399,7 +399,7 @@ var/obj/part = D.build_path temp = {"

    [initial(part.name)] description:

    [initial(part.desc)]
    - Return + Return "} break diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index ad0e428f14..2f98b2cc4c 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -647,7 +647,7 @@ to_chat(user, "[B.get_mecha_info()]") break //Nothing like a big, red link to make the player feel powerful! - to_chat(user, "ASSUME DIRECT CONTROL?
    ") + to_chat(user, "ASSUME DIRECT CONTROL?
    ") else examine(user) if(occupant) @@ -661,7 +661,7 @@ if(!can_control_mech) to_chat(user, "You cannot control exosuits without AI control beacons installed.") return - to_chat(user, "Take control of exosuit?
    ") + to_chat(user, "Take control of exosuit?
    ") /obj/mecha/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/device/aicard/card) if(!..()) diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index 431768500e..63dd798a34 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -23,15 +23,15 @@ var/answer = TR.get_mecha_info() if(answer) dat += {"
    [answer]
    - Send message
    - Show exosuit log | (EMP pulse)
    "} + Send message
    + Show exosuit log | (EMP pulse)
    "} if(screen==1) dat += "

    Log contents

    " - dat += "Return
    " + dat += "Return
    " dat += "[stored_data]" - dat += "(Refresh)
    " + dat += "(Refresh)
    " dat += "" user << browse(dat, "window=computer;size=400x500") @@ -41,19 +41,19 @@ /obj/machinery/computer/mecha/Topic(href, href_list) if(..()) return - var/datum/topic_input/filter = new /datum/topic_input(href,href_list) + var/datum/topic_input/afilter = new /datum/topic_input(href,href_list) if(href_list["send_message"]) - var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("send_message") + var/obj/item/mecha_parts/mecha_tracking/MT = afilter.getObj("send_message") var/message = stripped_input(usr,"Input message","Transmit message") var/obj/mecha/M = MT.in_mecha() if(trim(message) && M) M.occupant_message(message) return if(href_list["shock"]) - var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("shock") + var/obj/item/mecha_parts/mecha_tracking/MT = afilter.getObj("shock") MT.shock() if(href_list["get_log"]) - var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("get_log") + var/obj/item/mecha_parts/mecha_tracking/MT = afilter.getObj("get_log") stored_data = MT.get_mecha_log() screen = 1 if(href_list["return"]) diff --git a/code/game/mecha/mecha_topic.dm b/code/game/mecha/mecha_topic.dm index 27256d8b0b..54b44f89f9 100644 --- a/code/game/mecha/mecha_topic.dm +++ b/code/game/mecha/mecha_topic.dm @@ -22,7 +22,7 @@ [js_dropdowns] function SSticker() { setInterval(function(){ - window.location='byond://?src=\ref[src]&update_content=1'; + window.location='byond://?src=[REF(src)]&update_content=1'; }, 1000); } @@ -55,7 +55,7 @@ "[MECHA_INT_FIRE]" = "INTERNAL FIRE", "[MECHA_INT_TEMP_CONTROL]" = "LIFE SUPPORT SYSTEM MALFUNCTION", "[MECHA_INT_TANK_BREACH]" = "GAS TANK BREACH", - "[MECHA_INT_CONTROL_LOST]" = "COORDINATION SYSTEM CALIBRATION FAILURE - Recalibrate", + "[MECHA_INT_CONTROL_LOST]" = "COORDINATION SYSTEM CALIBRATION FAILURE - Recalibrate", "[MECHA_INT_SHORT_CIRCUIT]" = "SHORT CIRCUIT" ) for(var/tflag in dam_reports) @@ -84,7 +84,7 @@ Airtank temperature: [tank_temperature]°K|[tank_temperature - T0C]°C
    Cabin pressure: [cabin_pressure>WARNING_HIGH_PRESSURE ? "[cabin_pressure]": cabin_pressure]kPa
    Cabin temperature: [return_temperature()]°K|[return_temperature() - T0C]°C
    - [dna_lock?"DNA-locked:
    [dna_lock] \[Reset\]
    ":""]
    + [dna_lock?"DNA-locked:
    [dna_lock] \[Reset\]
    ":""]
    [thrusters_action.owner ? "Thrusters: [thrusters_active ? "Enabled" : "Disabled"]
    " : ""] [defense_action.owner ? "Defence Mode: [defence_mode ? "Enabled" : "Disabled"]
    " : ""] [overload_action.owner ? "Leg Actuators Overload: [leg_overload_mode ? "Enabled" : "Disabled"]
    " : ""] @@ -100,25 +100,25 @@
    Electronics
    [get_equipment_menu()]
    @@ -133,7 +133,7 @@
    " @@ -143,7 +143,7 @@ return . = "Equipment:
    " for(var/obj/item/mecha_parts/mecha_equipment/MT in equipment) - . += "
    [MT.get_equip_info()]
    " + . += "
    [MT.get_equip_info()]
    " . += "
    " @@ -171,7 +171,7 @@

    Following keycodes are present in this system:

    "} for(var/a in operation_req_access) - . += "[get_access_desc(a)] - Delete
    " + . += "[get_access_desc(a)] - Delete
    " . += "

    Following keycodes were detected on portable device:

    " for(var/a in id_card.access) if(a in operation_req_access) @@ -179,8 +179,8 @@ var/a_name = get_access_desc(a) if(!a_name) continue //there's some strange access without a name - . += "[a_name] - Add
    " - . += "
    Finish " + . += "[a_name] - Add
    " + . += "
    Finish " . += "(Warning! The ID upload panel will be locked. It can be unlocked only through Exosuit Interface.)" . += "" user << browse(., "window=exosuit_add_access") @@ -198,9 +198,9 @@ - [add_req_access?"Edit operation keycodes":null] - [maint_access?"Initiate maintenance protocol":null] - [(state>0) ?"Set Cabin Air Pressure":null] + [add_req_access?"Edit operation keycodes":null] + [maint_access?"Initiate maintenance protocol":null] + [(state>0) ?"Set Cabin Air Pressure":null] "} user << browse(., "window=exosuit_maint_console") @@ -221,15 +221,15 @@ if(usr.incapacitated()) return - var/datum/topic_input/filter = new /datum/topic_input(href,href_list) + var/datum/topic_input/afilter = new /datum/topic_input(href,href_list) if(in_range(src, usr)) if(href_list["req_access"] && add_req_access) - output_access_dialog(filter.getObj("id_card"),filter.getMob("user")) + output_access_dialog(afilter.getObj("id_card"),afilter.getMob("user")) if(href_list["maint_access"] && maint_access) - var/mob/user = filter.getMob("user") + var/mob/user = afilter.getMob("user") if(user) if(state==0) state = 1 @@ -237,27 +237,27 @@ else if(state==1) state = 0 to_chat(user, "The securing bolts are now hidden.") - output_maintenance_dialog(filter.getObj("id_card"),user) + output_maintenance_dialog(afilter.getObj("id_card"),user) if(href_list["set_internal_tank_valve"] && state >=1) - var/mob/user = filter.getMob("user") + var/mob/user = afilter.getMob("user") if(user) var/new_pressure = input(user,"Input new output pressure","Pressure setting",internal_tank_valve) as num if(new_pressure) internal_tank_valve = new_pressure to_chat(user, "The internal pressure valve has been set to [internal_tank_valve]kPa.") - if(href_list["add_req_access"] && add_req_access && filter.getObj("id_card")) - operation_req_access += filter.getNum("add_req_access") - output_access_dialog(filter.getObj("id_card"),filter.getMob("user")) + if(href_list["add_req_access"] && add_req_access && afilter.getObj("id_card")) + operation_req_access += afilter.getNum("add_req_access") + output_access_dialog(afilter.getObj("id_card"),afilter.getMob("user")) - if(href_list["del_req_access"] && add_req_access && filter.getObj("id_card")) - operation_req_access -= filter.getNum("del_req_access") - output_access_dialog(filter.getObj("id_card"),filter.getMob("user")) + if(href_list["del_req_access"] && add_req_access && afilter.getObj("id_card")) + operation_req_access -= afilter.getNum("del_req_access") + output_access_dialog(afilter.getObj("id_card"),afilter.getMob("user")) if(href_list["finish_req_access"]) add_req_access = 0 - var/mob/user = filter.getMob("user") + var/mob/user = afilter.getMob("user") user << browse(null,"window=exosuit_add_access") if(usr != occupant) @@ -267,7 +267,7 @@ send_byjax(src.occupant,"exosuit.browser","content",src.get_stats_part()) if(href_list["select_equip"]) - var/obj/item/mecha_parts/mecha_equipment/equip = filter.getObj("select_equip") + var/obj/item/mecha_parts/mecha_equipment/equip = afilter.getObj("select_equip") if(equip && equip.selectable) src.selected = equip src.occupant_message("You switch to [equip]") @@ -283,7 +283,7 @@ send_byjax(src.occupant,"exosuit.browser","rspkstate",(radio.listening?"Engaged":"Disengaged")) if(href_list["rfreq"]) - var/new_frequency = (radio.frequency + filter.getNum("rfreq")) + var/new_frequency = (radio.frequency + afilter.getNum("rfreq")) if (!radio.freerange || (radio.frequency < 1200 || radio.frequency > 1600)) new_frequency = sanitize_frequency(new_frequency) radio.set_frequency(new_frequency) diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 131e6cd7f7..0da64c3e4d 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -149,7 +149,7 @@ output += "Cargo Compartment Contents:
    " if(cargo.len) for(var/obj/O in cargo) - output += "Unload : [O]
    " + output += "Unload : [O]
    " else output += "Nothing" output += "
    " diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index 1f3a5a7b02..3de8432ee9 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -288,7 +288,7 @@ var/mob/M = get_mob_by_key(carry.my_atom.fingerprintslast) var/more = "" if(M) - more = "(?) (FLW) " + more = "(?) (FLW) " message_admins("Smoke: ([whereLink])[contained]. Key: [carry.my_atom.fingerprintslast][more].", 0, 1) log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].") else diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index c08ad793ab..0b1432e61c 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -198,7 +198,7 @@ S.directive = directive if(player_spiders) S.playable_spider = TRUE - notify_ghosts("Spider [S.name] can be controlled", null, enter_link="(Click to play)", source=S, action=NOTIFY_ATTACK) + notify_ghosts("Spider [S.name] can be controlled", null, enter_link="(Click to play)", source=S, action=NOTIFY_ATTACK) qdel(src) diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index 0433fde454..199bb0152d 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -172,11 +172,11 @@ ARCD if(use_one_access) - t1 += "Restriction Type: At least one access required
    " + t1 += "Restriction Type: At least one access required
    " else - t1 += "Restriction Type: All accesses required
    " + t1 += "Restriction Type: All accesses required
    " - t1 += "Remove All
    " + t1 += "Remove All
    " var/accesses = "" accesses += "
    Access
    " @@ -189,15 +189,15 @@ ARCD accesses += "" for(var/A in get_region_accesses(i)) if(A in conf_access) - accesses += "[replacetext(get_access_desc(A), " ", " ")] " + accesses += "[replacetext(get_access_desc(A), " ", " ")] " else - accesses += "[replacetext(get_access_desc(A), " ", " ")] " + accesses += "[replacetext(get_access_desc(A), " ", " ")] " accesses += "
    " accesses += "" accesses += "" t1 += "[accesses]" - t1 += text("

    Close

    \n", src) + t1 += "

    Close

    \n" var/datum/browser/popup = new(usr, "airlock_electronics", "Access Control", 900, 500) popup.set_content(t1) diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index 76fabdc8e8..83d278b477 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -35,7 +35,7 @@ RPD /datum/pipe_info/proc/Render(dispenser,label) /datum/pipe_info/pipe/Render(dispenser,label,dir=NORTH) - return "
  • [label]
  • " + return "
  • [label]
  • " /datum/pipe_info/meter categoryId = CATEGORY_ATMOS @@ -46,7 +46,7 @@ RPD return /datum/pipe_info/meter/Render(dispenser,label) - return "
  • [label]
  • " //hardcoding is no + return "
  • [label]
  • " //hardcoding is no GLOBAL_LIST_INIT(disposalpipeID2State, list( "pipe-s", @@ -74,7 +74,7 @@ GLOBAL_LIST_INIT(disposalpipeID2State, list( icon_state = "con[icon_state]" /datum/pipe_info/disposal/Render(dispenser,label) - return "
  • [label]
  • " //avoid hardcoding. + return "
  • [label]
  • " //avoid hardcoding. //find these defines in code\game\machinery\pipe\consruction.dm GLOBAL_LIST_INIT(RPD_recipes, list( @@ -177,7 +177,7 @@ GLOBAL_LIST_INIT(RPD_recipes, list( var/selected=" class=\"imglink\"" if(_dir == p_dir) selected=" class=\"imglink selected\"" - return "" + return "" /obj/item/pipe_dispenser/proc/show_menu(mob/user) if(!user || !src) @@ -186,27 +186,27 @@ GLOBAL_LIST_INIT(RPD_recipes, list( Utilities:
      "} if(p_class != EATING_MODE) - dat += "
    • Eat Pipes
    • " + dat += "
    • Eat Pipes
    • " else dat += "
    • Eat Pipes
    • " if(p_class != PAINT_MODE) - dat += "
    • Paint Pipes
    • " + dat += "
    • Paint Pipes
    • " else dat += "
    • Paint Pipes
    • " dat += "
    " dat += "Category:
      " if(screen == CATEGORY_ATMOS) - dat += "Atmospherics Disposals
      " + dat += "Atmospherics Disposals
      " else if(screen == CATEGORY_DISPOSALS) - dat += "Atmospherics Disposals
      " + dat += "Atmospherics Disposals
      " var/generated_layer_list = "" var/layers_total = PIPING_LAYER_MAX - PIPING_LAYER_MIN + 1 for(var/iter = PIPING_LAYER_MIN, iter <= layers_total, iter++) if(iter == piping_layer) - generated_layer_list += "[iter]" + generated_layer_list += "[iter]" else - generated_layer_list += "[iter]" + generated_layer_list += "[iter]" dat += "Atmospherics Piping Layer: [generated_layer_list]
      " dat += "
    " @@ -254,7 +254,7 @@ GLOBAL_LIST_INIT(RPD_recipes, list( var/selected="" if(color_name==paint_color) selected = " selected" - color_picker += {""} + color_picker += {""} var/dirsel="

    Direction

    " switch(p_conntype) @@ -276,8 +276,8 @@ GLOBAL_LIST_INIT(RPD_recipes, list( else dirsel+={"

    - - + +

    "} @@ -303,14 +303,14 @@ GLOBAL_LIST_INIT(RPD_recipes, list( else dirsel+={"

    - - + +
    - - + +
    - - + +

    "} if(PIPE_TRINARY) // Manifold @@ -330,11 +330,11 @@ GLOBAL_LIST_INIT(RPD_recipes, list( else dirsel+={"

    - - + +
    - - + +

    "} if(PIPE_TRIN_M) // Mirrored ones @@ -364,17 +364,17 @@ GLOBAL_LIST_INIT(RPD_recipes, list( else dirsel+={"

    - - + +
    - - + +
    - - + +
    - - + +

    "} if(PIPE_UNARY) // Stuff with four directions - includes pumps etc. @@ -393,10 +393,10 @@ GLOBAL_LIST_INIT(RPD_recipes, list( else dirsel+={"

    - - - - + + + +

    "} if(PIPE_QUAD) // Single icon_state (eg 4-way manifolds) @@ -409,7 +409,7 @@ GLOBAL_LIST_INIT(RPD_recipes, list( else dirsel+={"

    - +

    "} diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index cd63cb0951..239f59f8b7 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -28,7 +28,7 @@ switch(get_area_type()) if(AREA_SPACE) text += "

    According to the [src.name], you are now in an unclaimed territory.

    \ -

    Mark this place as new area.

    " +

    Mark this place as new area.

    " if(AREA_SPECIAL) text += "

    This place is not noted on the [src.name].

    " return text @@ -69,20 +69,20 @@ var/area/A = get_area() if(get_area_type() == AREA_STATION) . += "

    According to \the [src], you are now in \"[html_encode(A.name)]\".

    " - . += "

    You may make an amendment to the drawing.

    " - . += "

    View wire colour legend

    " + . += "

    You may make an amendment to the drawing.

    " + . += "

    View wire colour legend

    " if(!viewing) - . += "

    View structural data

    " + . += "

    View structural data

    " else - . += "

    Refresh structural data

    " - . += "

    Hide structural data

    " + . += "

    Refresh structural data

    " + . += "

    Hide structural data

    " else if(legend == TRUE) - . += "<< Back" + . += "<< Back" . += view_wire_devices(user); else //legend is a wireset - . += "<< Back" + . += "<< Back" . += view_wire_set(user, legend) var/datum/browser/popup = new(user, "blueprints", "[src]", 700, 500) popup.set_content(.) @@ -169,7 +169,7 @@ /obj/item/areaeditor/blueprints/proc/view_wire_devices(mob/user) var/message = "
    You examine the wire legend.
    " for(var/wireset in GLOB.wire_color_directory) - message += "
    [GLOB.wire_name_directory[wireset]]" + message += "
    [GLOB.wire_name_directory[wireset]]" message += "

    " return message diff --git a/code/game/objects/items/charter.dm b/code/game/objects/items/charter.dm index 04ae5d9508..2527b573d3 100644 --- a/code/game/objects/items/charter.dm +++ b/code/game/objects/items/charter.dm @@ -59,7 +59,7 @@ to_chat(user, "Your name has been sent to your employers for approval.") // Autoapproves after a certain time response_timer_id = addtimer(CALLBACK(src, .proc/rename_station, new_name, user.name, user.real_name, key_name(user)), approval_time, TIMER_STOPPABLE) - to_chat(GLOB.admins, "CUSTOM STATION RENAME:[ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will autoapprove in [DisplayTimeText(approval_time)]). [ADMIN_SMITE(user)] (REJECT) [ADMIN_CENTCOM_REPLY(user)]") + to_chat(GLOB.admins, "CUSTOM STATION RENAME:[ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will autoapprove in [DisplayTimeText(approval_time)]). [ADMIN_SMITE(user)] (REJECT) [ADMIN_CENTCOM_REPLY(user)]") /obj/item/station_charter/proc/reject_proposed(user) if(!user) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 578bf16982..244e82ee77 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -167,18 +167,18 @@ GLOBAL_LIST_EMPTY(PDAs) var/dat = "Personal Data Assistant" - dat += "Refresh" + dat += "Refresh" if ((!isnull(cartridge)) && (mode == 0)) - dat += " | Eject [cartridge]" + dat += " | Eject [cartridge]" if (mode) - dat += " | Return" + dat += " | Return" if (mode == 0) dat += "
    " - dat += "
    Toggle Font" - dat += " | Change Color" - dat += " | Toggle Underline" //underline button + dat += "
    Toggle Font" + dat += " | Change Color" + dat += " | Toggle Underline" //underline button dat += "
    " @@ -186,14 +186,14 @@ GLOBAL_LIST_EMPTY(PDAs) if (!owner) dat += "Warning: No owner information entered. Please swipe card.

    " - dat += "Retry" + dat += "Retry" else switch (mode) if (0) dat += "

    PERSONAL DATA ASSISTANT v.1.2

    " dat += "Owner: [owner], [ownjob]
    " - dat += text("ID: [id ? "[id.registered_name], [id.assignment]" : "----------"]") - dat += text("
    [id ? "Update PDA Info" : ""]

    ") + dat += text("ID: [id ? "[id.registered_name], [id.assignment]" : "----------"]") + dat += text("
    [id ? "Update PDA Info" : ""]

    ") dat += "[worldtime2text()]
    " //:[world.time / 100 % 6][world.time / 100 % 10]" dat += "[time2text(world.realtime, "MMM DD")] [GLOB.year_integer+540]" @@ -202,38 +202,38 @@ GLOBAL_LIST_EMPTY(PDAs) dat += "

    General Functions

    " dat += "" if (cartridge.access & CART_ENGINE) dat += "

    Engineering Functions

    " dat += "" if (cartridge.access & CART_MEDICAL) dat += "

    Medical Functions

    " dat += "" if (cartridge.access & CART_SECURITY) dat += "

    Security Functions

    " dat += "" if(cartridge.access & CART_QUARTERMASTER) dat += "

    Quartermaster Functions:

    " dat += "" dat += "" @@ -241,47 +241,47 @@ GLOBAL_LIST_EMPTY(PDAs) dat += "" if (1) dat += "

    Notekeeper V2.2

    " - dat += "Edit
    " + dat += "Edit
    " if(notescanned) dat += "(This is a scanned image, editing it may cause some text formatting to change.)
    " dat += "
    [(!notehtml ? note : notehtml)]" if (2) dat += "

    SpaceMessenger V3.9.6

    " - dat += "Ringer: [silent == 1 ? "Off" : "On"] | " - dat += "Send / Receive: [toff == 1 ? "Off" : "On"] | " - dat += "Set Ringtone | " - dat += "Messages
    " + dat += "Ringer: [silent == 1 ? "Off" : "On"] | " + dat += "Send / Receive: [toff == 1 ? "Off" : "On"] | " + dat += "Set Ringtone | " + dat += "Messages
    " if(cartridge) dat += cartridge.message_header() @@ -295,7 +295,7 @@ GLOBAL_LIST_EMPTY(PDAs) for (var/obj/item/device/pda/P in sortNames(get_viewable_pdas())) if (P == src) continue - dat += "
  • [P]" + dat += "
  • [P]" if(cartridge) dat += cartridge.message_special(P) dat += "
  • " @@ -304,11 +304,11 @@ GLOBAL_LIST_EMPTY(PDAs) if (count == 0) dat += "None detected.
    " else if(cartridge && cartridge.spam_enabled) - dat += "Send To All" + dat += "Send To All" if(21) dat += "

    SpaceMessenger V3.9.6

    " - dat += "Clear Messages" + dat += "Clear Messages" dat += "

    Messages

    " @@ -633,7 +633,7 @@ GLOBAL_LIST_EMPTY(PDAs) tnote += "→ To [multiple ? "Everyone" : msg.recipient]:
    [msg.message][msg.get_photo_ref()]
    " /obj/item/device/pda/proc/show_recieved_message(datum/data_pda_msg/msg,obj/item/device/pda/source) - tnote += "← From [source.owner] ([source.ownjob]):
    [msg.message][msg.get_photo_ref()]
    " + tnote += "← From [source.owner] ([source.ownjob]):
    [msg.message][msg.get_photo_ref()]
    " if (!silent) playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) @@ -651,10 +651,10 @@ GLOBAL_LIST_EMPTY(PDAs) var/hrefstart var/hrefend if (isAI(L)) - hrefstart = "" + hrefstart = "" hrefend = "" - to_chat(L, "[icon2html(src)] Message from [hrefstart][source.owner] ([source.ownjob])[hrefend], \"[msg.message]\"[msg.get_photo_ref()] (Reply)") + to_chat(L, "[icon2html(src)] Message from [hrefstart][source.owner] ([source.ownjob])[hrefend], \"[msg.message]\"[msg.get_photo_ref()] (Reply)") update_icon() add_overlay(icon_alert) diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index 92acb36982..d2156beec6 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -229,20 +229,20 @@ menu = "

    Remote Signaling System

    " menu += {" -Send Signal
    +Send Signal
    Frequency: -- -- +- +- [format_frequency(S.frequency)] -+ -+
    ++ ++

    Code: -- -- +- +- [S.code] -+ -+
    "} ++ ++
    "} if (41) //crew manifest menu = "

    Crew Manifest

    " @@ -256,15 +256,15 @@ Code: if (42) //status displays menu = "

    Station Status Display Interlink

    " - menu += "\[ Clear \]
    " - menu += "\[ Shuttle ETA \]
    " - menu += "\[ Message \]" - menu += "
    " - menu += "\[ Alert: None |" - menu += " Red Alert |" - menu += " Lockdown |" - menu += " Biohazard \]
    " + menu += "\[ Clear \]
    " + menu += "\[ Shuttle ETA \]
    " + menu += "\[ Message \]" + menu += "
    " + menu += "\[ Alert: None |" + menu += " Red Alert |" + menu += " Lockdown |" + menu += " Biohazard \]
    " if (43) menu = "

    Power Monitors - Please select one


    " @@ -288,7 +288,7 @@ Code: var/count = 0 for(var/obj/machinery/computer/monitor/pMon in powermonitors) count++ - menu += "[pMon]
    " + menu += "[pMon]
    " menu += "
    " @@ -323,7 +323,7 @@ Code: menu = "

    Medical Record List

    " if(GLOB.data_core.general) for(var/datum/data/record/R in sortRecord(GLOB.data_core.general)) - menu += "[R.fields["id"]]: [R.fields["name"]]
    " + menu += "
    [R.fields["id"]]: [R.fields["name"]]
    " menu += "
    " if(441) menu = "

    Medical Record

    " @@ -366,7 +366,7 @@ Code: menu = "

    Security Record List

    " if(GLOB.data_core.general) for (var/datum/data/record/R in sortRecord(GLOB.data_core.general)) - menu += "
    [R.fields["id"]]: [R.fields["name"]]
    " + menu += "
    [R.fields["id"]]: [R.fields["name"]]
    " menu += "
    " if(451) @@ -521,11 +521,11 @@ Code: else menu += "ERROR: Unable to determine current location." - menu += "

    Refresh GPS Locator" + menu += "

    Refresh GPS Locator" if (53) // Newscaster menu = "

    Newscaster Access

    " - menu += "
    Current Newsfeed: [current_channel ? current_channel : "None"]
    " + menu += "
    Current Newsfeed: [current_channel ? current_channel : "None"]
    " var/datum/newscaster/feed_channel/current for(var/datum/newscaster/feed_channel/chan in GLOB.news_network.network_channels) if (chan.channel_name == current_channel) @@ -543,7 +543,7 @@ Code: i++ for(var/datum/newscaster/feed_comment/comment in msg.comments) menu +="[comment.body]
    [comment.author] [comment.time_stamp]
    " - menu += "
    Post Message" + menu += "
    Post Message" if (54) // Beepsky, Medibot, Floorbot, and Cleanbot access menu = "

    Bots Interlink

    " @@ -673,7 +673,7 @@ Code: // menu = "Interlink Error - Please reinsert cartridge." // return if(active_bot) - menu += "[active_bot]
    Status: (refresh)
    " + menu += "[active_bot]
    Status: (refresh)
    " menu += "Model: [active_bot.model]
    " menu += "Location: [get_area(active_bot)]
    " menu += "Mode: [active_bot.get_mode()]" @@ -682,7 +682,7 @@ Code: if(active_bot.paicard && active_bot.paicard.pai) menu += "[active_bot.paicard.pai.name]" if(active_bot.bot_core.allowed(usr)) - menu += " (eject)" + menu += " (eject)" else menu += "none" @@ -690,35 +690,35 @@ Code: if(active_bot.bot_type == MULE_BOT) var/mob/living/simple_animal/bot/mulebot/MULE = active_bot var/atom/Load = MULE.load - menu += "
    Current Load: [ !Load ? "none" : "[Load.name] (unload)" ]
    " - menu += "Destination: [MULE.destination ? MULE.destination : "None"] (set)
    " - menu += "Set ID: [MULE.suffix] Modify
    " + menu += "
    Current Load: [ !Load ? "none" : "[Load.name] (unload)" ]
    " + menu += "Destination: [MULE.destination ? MULE.destination : "None"] (set)
    " + menu += "Set ID: [MULE.suffix] Modify
    " menu += "Power: [MULE.cell ? MULE.cell.percent() : 0]%
    " menu += "Home: [!MULE.home_destination ? "none" : MULE.home_destination ]
    " - menu += "Delivery Reporting: [MULE.report_delivery ? "(On)": "(Off)"]
    " - menu += "Auto Return Home: [MULE.auto_return ? "(On)": "(Off)"]
    " - menu += "Auto Pickup Crate: [MULE.auto_pickup ? "(On)": "(Off)"]

    " //Hue. + menu += "Delivery Reporting: [MULE.report_delivery ? "(On)": "(Off)"]
    " + menu += "Auto Return Home: [MULE.auto_return ? "(On)": "(Off)"]
    " + menu += "Auto Pickup Crate: [MULE.auto_pickup ? "(On)": "(Off)"]

    " //Hue. - menu += "\[Stop\] " - menu += "\[Proceed\] " - menu += "\[Return Home\]
    " + menu += "\[Stop\] " + menu += "\[Proceed\] " + menu += "\[Return Home\]
    " else - menu += "
    \[Stop Patrol\] " //patrolon - menu += "\[Start Patrol\] " //patroloff - menu += "\[Summon Bot\]
    " //summon + menu += "
    \[Stop Patrol\] " //patrolon + menu += "\[Start Patrol\] " //patroloff + menu += "\[Summon Bot\]
    " //summon menu += "Keep an ID inserted to upload access codes upon summoning." - menu += "
    Return to bot list" + menu += "
    Return to bot list" else - menu += "
    Scan for active bots

    " + menu += "
    Scan for active bots

    " var/turf/current_turf = get_turf(src) var/zlevel = current_turf.z var/botcount = 0 for(Bot in GLOB.living_mob_list) //Git da botz if(!Bot.on || Bot.z != zlevel || Bot.remote_disabled || !(bot_access_flags & Bot.bot_type)) //Only non-emagged bots on the same Z-level are detected! continue //Also, the PDA must have access to the bot type. - menu += "[Bot.name] ([Bot.get_mode()])
    " + menu += "
    [Bot.name] ([Bot.get_mode()])
    " botcount++ if(!botcount) //No bots at all? Lame. menu += "No bots found.
    " diff --git a/code/game/objects/items/devices/PDA/virus_cart.dm b/code/game/objects/items/devices/PDA/virus_cart.dm index a514270618..ce7f85b825 100644 --- a/code/game/objects/items/devices/PDA/virus_cart.dm +++ b/code/game/objects/items/devices/PDA/virus_cart.dm @@ -11,7 +11,7 @@ /obj/item/cartridge/virus/message_special(obj/item/device/pda/target) if (!istype(loc, /obj/item/device/pda)) return "" //Sanity check, this shouldn't be possible. - return " (
    *Send Virus*)" + return " (*Send Virus*)" /obj/item/cartridge/virus/special(mob/living/user, list/params) var/obj/item/device/pda/P = locate(params["target"])//Leaving it alone in case it may do something useful, I guess. diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index 62b8c9ae4e..750406d0d5 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD #define BUGMODE_LIST 0 #define BUGMODE_MONITOR 1 @@ -295,3 +296,302 @@ #undef BUGMODE_LIST #undef BUGMODE_MONITOR #undef BUGMODE_TRACK +======= + +#define BUGMODE_LIST 0 +#define BUGMODE_MONITOR 1 +#define BUGMODE_TRACK 2 + + + +/obj/item/device/camera_bug + name = "camera bug" + desc = "For illicit snooping through the camera network." + icon = 'icons/obj/device.dmi' + icon_state = "camera_bug" + w_class = WEIGHT_CLASS_TINY + item_state = "camera_bug" + throw_speed = 4 + throw_range = 20 + origin_tech = "syndicate=1;engineering=3" + flags_1 = NOBLUDGEON_1 + + var/obj/machinery/camera/current = null + + var/last_net_update = 0 + var/list/bugged_cameras = list() + + var/track_mode = BUGMODE_LIST + var/last_tracked = 0 + var/refresh_interval = 50 + + var/tracked_name = null + var/atom/tracking = null + + var/last_found = null + var/last_seen = null + +/obj/item/device/camera_bug/New() + ..() + START_PROCESSING(SSobj, src) + +/obj/item/device/camera_bug/Destroy() + get_cameras() + for(var/cam_tag in bugged_cameras) + var/obj/machinery/camera/camera = bugged_cameras[cam_tag] + if(camera.bug == src) + camera.bug = null + bugged_cameras = list() + if(tracking) + tracking = null + return ..() + + +/obj/item/device/camera_bug/interact(mob/user = usr) + var/datum/browser/popup = new(user, "camerabug","Camera Bug",nref=src) + popup.set_content(menu(get_cameras())) + popup.open() + +/obj/item/device/camera_bug/attack_self(mob/user) + user.set_machine(src) + interact(user) + +/obj/item/device/camera_bug/check_eye(mob/user) + if ( loc != user || user.incapacitated() || user.eye_blind || !current ) + user.unset_machine() + return 0 + var/turf/T = get_turf(user.loc) + if(T.z != current.z || !current.can_use()) + to_chat(user, "[src] has lost the signal.") + current = null + user.unset_machine() + return 0 + return 1 +/obj/item/device/camera_bug/on_unset_machine(mob/user) + user.reset_perspective(null) + +/obj/item/device/camera_bug/proc/get_cameras() + if( world.time > (last_net_update + 100)) + bugged_cameras = list() + for(var/obj/machinery/camera/camera in GLOB.cameranet.cameras) + if(camera.stat || !camera.can_use()) + continue + if(length(list("SS13","MINE")&camera.network)) + bugged_cameras[camera.c_tag] = camera + sortList(bugged_cameras) + return bugged_cameras + + +/obj/item/device/camera_bug/proc/menu(list/cameras) + if(!cameras || !cameras.len) + return "No bugged cameras found." + + var/html + switch(track_mode) + if(BUGMODE_LIST) + html = "

    Select a camera:

    \[Cancel camera view\]
    " + for(var/entry in cameras) + var/obj/machinery/camera/C = cameras[entry] + var/functions = "" + if(C.bug == src) + functions = " - \[Monitor\]\[Disable\]" + else + functions = " - \[Monitor\]" + html += "" + + if(BUGMODE_MONITOR) + if(current) + html = "Analyzing Camera '[current.c_tag]' \[Select Camera\]
    " + html += camera_report() + else + track_mode = BUGMODE_LIST + return .(cameras) + if(BUGMODE_TRACK) + if(tracking) + html = "Tracking '[tracked_name]' \[Cancel Tracking\]\[Cancel camera view\]
    " + if(last_found) + var/time_diff = round((world.time - last_seen) / 150) + var/obj/machinery/camera/C = bugged_cameras[last_found] + var/outstring + if(C) + outstring = "[last_found]" + else + outstring = last_found + if(!time_diff) + html += "Last seen near [outstring] (now)
    " + else + // 15 second intervals ~ 1/4 minute + var/m = round(time_diff/4) + var/s = (time_diff - 4*m) * 15 + if(!s) + s = "00" + html += "Last seen near [outstring] ([m]:[s] minute\s ago)
    " + if( C && (C.bug == src)) //Checks to see if the camera has a bug + html += "\[Disable\]" + + else + html += "Not yet seen." + else + track_mode = BUGMODE_LIST + return .(cameras) + return html + +/obj/item/device/camera_bug/proc/get_seens() + if(current && current.can_use()) + var/list/seen = current.can_see() + return seen + +/obj/item/device/camera_bug/proc/camera_report() + // this should only be called if current exists + var/dat = "" + var/list/seen = get_seens() + if(seen && seen.len >= 1) + var/list/names = list() + for(var/obj/singularity/S in seen) // god help you if you see more than one + if(S.name in names) + names[S.name]++ + dat += "[S.name] ([names[S.name]])" + else + names[S.name] = 1 + dat += "[S.name]" + var/stage = round(S.current_size / 2)+1 + dat += " (Stage [stage])" + dat += " \[Track\]
    " + + for(var/obj/mecha/M in seen) + if(M.name in names) + names[M.name]++ + dat += "[M.name] ([names[M.name]])" + else + names[M.name] = 1 + dat += "[M.name]" + dat += " \[Track\]
    " + + + for(var/mob/living/M in seen) + if(M.name in names) + names[M.name]++ + dat += "[M.name] ([names[M.name]])" + else + names[M.name] = 1 + dat += "[M.name]" + if(M.buckled && !M.lying) + dat += " (Sitting)" + if(M.lying) + dat += " (Laying down)" + dat += " \[Track\]
    " + if(length(dat) == 0) + dat += "No motion detected." + return dat + else + return "Camera Offline
    " + +/obj/item/device/camera_bug/Topic(href,list/href_list) + if(usr != loc) + usr.unset_machine() + usr << browse(null, "window=camerabug") + return + usr.set_machine(src) + if("mode" in href_list) + track_mode = text2num(href_list["mode"]) + if("monitor" in href_list) + //You can't locate on a list with keys + var/list/cameras = flatten_list(bugged_cameras) + var/obj/machinery/camera/C = locate(href_list["monitor"]) in cameras + if(C && istype(C)) + track_mode = BUGMODE_MONITOR + current = C + usr.reset_perspective(null) + interact() + if("track" in href_list) + var/list/seen = get_seens() + if(seen && seen.len >= 1) + var/atom/A = locate(href_list["track"]) in seen + if(A && istype(A)) + tracking = A + tracked_name = A.name + last_found = current.c_tag + last_seen = world.time + track_mode = BUGMODE_TRACK + if("emp" in href_list) + //You can't locate on a list with keys + var/list/cameras = flatten_list(bugged_cameras) + var/obj/machinery/camera/C = locate(href_list["emp"]) in cameras + if(C && istype(C) && C.bug == src) + C.emp_act(EMP_HEAVY) + C.bug = null + bugged_cameras -= C.c_tag + interact() + return + if("close" in href_list) + usr.unset_machine() + current = null + return + if("view" in href_list) + //You can't locate on a list with keys + var/list/cameras = flatten_list(bugged_cameras) + var/obj/machinery/camera/C = locate(href_list["view"]) in cameras + if(C && istype(C)) + if(!C.can_use()) + to_chat(usr, "Something's wrong with that camera! You can't get a feed.") + return + var/turf/T = get_turf(loc) + if(!T || C.z != T.z) + to_chat(usr, "You can't get a signal!") + return + current = C + spawn(6) + if(src.check_eye(usr)) + usr.reset_perspective(C) + interact() + else + usr.unset_machine() + usr << browse(null, "window=camerabug") + return + else + usr.unset_machine() + + interact() + +/obj/item/device/camera_bug/process() + if(track_mode == BUGMODE_LIST || (world.time < (last_tracked + refresh_interval))) + return + last_tracked = world.time + if(track_mode == BUGMODE_TRACK ) // search for user + // Note that it will be tricked if your name appears to change. + // This is not optimal but it is better than tracking you relentlessly despite everything. + if(!tracking) + src.updateSelfDialog() + return + + if(tracking.name != tracked_name) // Hiding their identity, tricksy + var/mob/M = tracking + if(istype(M)) + if(!(tracked_name == "Unknown" && findtext(tracking.name,"Unknown"))) // we saw then disguised before + if(!(tracked_name == M.real_name && findtext(tracking.name,M.real_name))) // or they're still ID'd + src.updateSelfDialog()//But if it's neither of those cases + return // you won't find em on the cameras + else + src.updateSelfDialog() + return + + var/list/tracking_cams = list() + var/list/b_cams = get_cameras() + for(var/entry in b_cams) + tracking_cams += b_cams[entry] + var/list/target_region = view(tracking) + + for(var/obj/machinery/camera/C in (target_region & tracking_cams)) + if(!can_see(C,tracking)) // target may have xray, that doesn't make them visible to cameras + continue + if(C.can_use()) + last_found = C.c_tag + last_seen = world.time + break + src.updateSelfDialog() + + +#undef BUGMODE_LIST +#undef BUGMODE_MONITOR +#undef BUGMODE_TRACK +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 67618787b2..095e021458 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -29,30 +29,30 @@ var/dat = "Personal AI Device
    " if(pai) if(!pai.master_dna || !pai.master) - dat += "Imprint Master DNA
    " + dat += "Imprint Master DNA
    " dat += "Installed Personality: [pai.name]
    " dat += "Prime directive:
    [pai.laws.zeroth]
    " for(var/slaws in pai.laws.supplied) dat += "Additional directives:
    [slaws]
    " - dat += "Configure Directives
    " + dat += "Configure Directives
    " dat += "
    " dat += "

    Device Settings


    " if(pai.radio) dat += "Radio Uplink
    " - dat += "Transmit: [(pai.radio.wires.is_cut(WIRE_TX)) ? "Disabled" : "Enabled"]
    " - dat += "Receive: [(pai.radio.wires.is_cut(WIRE_RX)) ? "Disabled" : "Enabled"]
    " + dat += "Transmit: [(pai.radio.wires.is_cut(WIRE_TX)) ? "Disabled" : "Enabled"]
    " + dat += "Receive: [(pai.radio.wires.is_cut(WIRE_RX)) ? "Disabled" : "Enabled"]
    " else dat += "Radio Uplink
    " dat += "Radio firmware not loaded. Please install a pAI personality to load firmware.
    " if(ishuman(user)) var/mob/living/carbon/human/H = user if(H.real_name == pai.master || H.dna.unique_enzymes == pai.master_dna) - dat += "\[[pai.canholo? "Disable" : "Enable"] holomatrix projectors\]
    " - dat += "\[Wipe current pAI personality\]
    " + dat += "\[[pai.canholo? "Disable" : "Enable"] holomatrix projectors\]
    " + dat += "\[Wipe current pAI personality\]
    " else dat += "No personality installed.
    " dat += "Searching for a personality... Press view available personalities to notify potential candidates." - dat += "\[View available personalities\]
    " + dat += "\[View available personalities\]
    " user << browse(dat, "window=paicard") onclose(user, "paicard") return diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index 108c561fc1..ba02a1e610 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /obj/item/device/electropack name = "electropack" desc = "Dance my monkeys! DANCE!!!" @@ -223,3 +224,151 @@ Code: onclose(user, "radio") return +======= +/obj/item/device/electropack + name = "electropack" + desc = "Dance my monkeys! DANCE!!!" + icon = 'icons/obj/radio.dmi' + icon_state = "electropack0" + item_state = "electropack" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + flags_1 = CONDUCT_1 + slot_flags = SLOT_BACK + w_class = WEIGHT_CLASS_HUGE + materials = list(MAT_METAL=10000, MAT_GLASS=2500) + var/on = TRUE + var/code = 2 + var/frequency = 1449 + var/shock_cooldown = 0 + +/obj/item/device/electropack/suicide_act(mob/user) + user.visible_message("[user] hooks [user.p_them()]self to the electropack and spams the trigger! It looks like [user.p_theyre()] trying to commit suicide!") + return (FIRELOSS) + +/obj/item/device/electropack/Initialize() + . = ..() + SSradio.add_object(src, frequency, GLOB.RADIO_CHAT) + +/obj/item/device/electropack/Destroy() + SSradio.remove_object(src, frequency) + return ..() + +/obj/item/device/electropack/attack_hand(mob/user) + if(iscarbon(user)) + var/mob/living/carbon/C = user + if(src == C.back) + to_chat(user, "You need help taking this off!") + return + ..() + +/obj/item/device/electropack/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/clothing/head/helmet)) + var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user ) + A.icon = 'icons/obj/assemblies.dmi' + + if(!user.transferItemToLoc(W, A)) + to_chat(user, "[W] is stuck to your hand, you cannot attach it to [src]!") + return + W.master = A + A.part1 = W + + user.transferItemToLoc(src, A, TRUE) + master = A + A.part2 = src + + user.put_in_hands(A) + A.add_fingerprint(user) + if(src.flags_1 & NODROP_1) + A.flags_1 |= NODROP_1 + else + return ..() + +/obj/item/device/electropack/Topic(href, href_list) + //..() + var/mob/living/carbon/C = usr + if(usr.stat || usr.restrained() || C.back == src) + return + if((ishuman(usr) && usr.contents.Find(src)) || usr.contents.Find(master) || (in_range(src, usr) && isturf(loc))) + usr.set_machine(src) + if(href_list["freq"]) + SSradio.remove_object(src, frequency) + frequency = sanitize_frequency(frequency + text2num(href_list["freq"])) + SSradio.add_object(src, frequency, GLOB.RADIO_CHAT) + else + if(href_list["code"]) + code += text2num(href_list["code"]) + code = round(code) + code = min(100, code) + code = max(1, code) + else + if(href_list["power"]) + on = !( on ) + icon_state = "electropack[on]" + if(!( master )) + if(ismob(loc)) + attack_self(loc) + else + for(var/mob/M in viewers(1, src)) + if(M.client) + attack_self(M) + else + if(ismob(master.loc)) + attack_self(master.loc) + else + for(var/mob/M in viewers(1, master)) + if(M.client) + attack_self(M) + else + usr << browse(null, "window=radio") + return + return + +/obj/item/device/electropack/receive_signal(datum/signal/signal) + if(!signal || signal.encryption != code) + return + + if(isliving(loc) && on) + if(shock_cooldown != 0) + return + shock_cooldown = 1 + spawn(100) + shock_cooldown = 0 + var/mob/living/L = loc + step(L, pick(GLOB.cardinals)) + + to_chat(L, "You feel a sharp shock!") + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(3, 1, L) + s.start() + + L.Knockdown(100) + + if(master) + master.receive_signal() + return + +/obj/item/device/electropack/attack_self(mob/user) + + if(!ishuman(user)) + return + user.set_machine(src) + var/dat = {"Turned [on ? "On" : "Off"] - +Toggle
    +Frequency/Code for electropack:
    +Frequency: +- +- [format_frequency(frequency)] ++ ++
    + +Code: +- +- [code] ++ ++
    +
    "} + user << browse(dat, "window=radio") + onclose(user, "radio") + return +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index c97ad1271c..7ca4da4f65 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -111,9 +111,9 @@ effective or pretty fucking useless. /obj/item/device/healthanalyzer/rad_laser/interact(mob/user) user.set_machine(src) - var/dat = "Irradiation: [irradiate ? "On" : "Off"]
    " - dat += "Stealth Mode (NOTE: Deactivates automatically while Irradiation is off): [stealth ? "On" : "Off"]
    " - dat += "Scan Mode: " + var/dat = "Irradiation: [irradiate ? "On" : "Off"]
    " + dat += "Stealth Mode (NOTE: Deactivates automatically while Irradiation is off): [stealth ? "On" : "Off"]
    " + dat += "Scan Mode: " if(!scanmode) dat += "Scan Health" else if(scanmode == 1) @@ -124,14 +124,14 @@ effective or pretty fucking useless. dat += {" Radiation Intensity: - -- + -- [intensity] - ++
    + ++
    Radiation Wavelength: - -- + -- [(wavelength+(intensity*4))] - ++
    + ++
    Laser Cooldown: [DisplayTimeText(GetCooldown())]
    "} diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index fe310db994..53f36719e4 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -64,10 +64,10 @@ /obj/item/device/transfer_valve/attack_self(mob/user) user.set_machine(src) var/dat = {" Valve properties: -
    Attachment one: [tank_one] [tank_one ? "Remove" : ""] -
    Attachment two: [tank_two] [tank_two ? "Remove" : ""] -
    Valve attachment: [attached_device ? "[attached_device]" : "None"] [attached_device ? "Remove" : ""] -
    Valve status: [ valve_open ? "Closed Open" : "Closed Open"]"} +
    Attachment one: [tank_one] [tank_one ? "Remove" : ""] +
    Attachment two: [tank_two] [tank_two ? "Remove" : ""] +
    Valve attachment: [attached_device ? "[attached_device]" : "None"] [attached_device ? "Remove" : ""] +
    Valve status: [ valve_open ? "Closed Open" : "Closed Open"]"} var/datum/browser/popup = new(user, "trans_valve", name) popup.set_content(dat) diff --git a/code/game/objects/items/eightball.dm b/code/game/objects/items/eightball.dm index 15c6bcd4b1..8b26e33842 100644 --- a/code/game/objects/items/eightball.dm +++ b/code/game/objects/items/eightball.dm @@ -125,7 +125,7 @@ // notify ghosts that someone's shaking a haunted eightball // and inform them of the message, (hopefully a yes/no question) selected_message = last_message - notify_ghosts("[user] is shaking [src], hoping to get an answer to \"[selected_message]\"", source=src, enter_link="(Click to help)", action=NOTIFY_ATTACK) + notify_ghosts("[user] is shaking [src], hoping to get an answer to \"[selected_message]\"", source=src, enter_link="(Click to help)", action=NOTIFY_ATTACK) /obj/item/toy/eightball/haunted/Topic(href, href_list) if(href_list["interact"]) diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index 35ffebfe6b..b778bcb179 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -292,7 +292,7 @@ var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast) var/turf/T = get_turf(src) var/area/A = get_area(T) - message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) (FLW) and last touched by [key_name_admin(last)](?) (FLW) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") + message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) (FLW) and last touched by [key_name_admin(last)](?) (FLW) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])") else addtimer(CALLBACK(src, .proc/prime), det_time) diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index f47c5d30eb..9c0199e70f 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -289,13 +289,13 @@ return ..() /obj/item/robot_suit/proc/Interact(mob/user) - var/t1 = text("Designation: [(created_name ? "[created_name]" : "Default Cyborg")]
    \n",src) - t1 += text("Master AI: [(forced_ai ? "[forced_ai.name]" : "Automatic")]

    \n",src) + var/t1 = "Designation: [(created_name ? "[created_name]" : "Default Cyborg")]
    \n" + t1 += "Master AI: [(forced_ai ? "[forced_ai.name]" : "Automatic")]

    \n" - t1 += text("LawSync Port: [(lawsync ? "Open" : "Closed")]
    \n",src) - t1 += text("AI Connection Port: [(aisync ? "Open" : "Closed")]
    \n",src) - t1 += text("Servo Motor Functions: [(locomotion ? "Unlocked" : "Locked")]
    \n",src) - t1 += text("Panel Lock: [(panel_locked ? "Engaged" : "Disengaged")]
    \n",src) + t1 += "LawSync Port: [(lawsync ? "Open" : "Closed")]
    \n" + t1 += "AI Connection Port: [(aisync ? "Open" : "Closed")]
    \n" + t1 += "Servo Motor Functions: [(locomotion ? "Unlocked" : "Locked")]
    \n" + t1 += "Panel Lock: [(panel_locked ? "Engaged" : "Disengaged")]
    \n" var/datum/browser/popup = new(user, "robotdebug", "Cyborg Boot Debug", 310, 220) popup.set_content(t1) popup.open() diff --git a/code/game/objects/items/scrolls.dm b/code/game/objects/items/scrolls.dm index edddd27cf3..963dac5656 100644 --- a/code/game/objects/items/scrolls.dm +++ b/code/game/objects/items/scrolls.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /obj/item/teleportation_scroll name = "scroll of teleportation" desc = "A scroll for moving around." @@ -72,3 +73,79 @@ smoke.start() uses-- +======= +/obj/item/teleportation_scroll + name = "scroll of teleportation" + desc = "A scroll for moving around." + icon = 'icons/obj/wizard.dmi' + icon_state = "scroll" + var/uses = 4 + w_class = WEIGHT_CLASS_SMALL + item_state = "paper" + throw_speed = 3 + throw_range = 7 + origin_tech = "bluespace=6" + resistance_flags = FLAMMABLE + +/obj/item/teleportation_scroll/apprentice + name = "lesser scroll of teleportation" + uses = 1 + origin_tech = "bluespace=5" + + + +/obj/item/teleportation_scroll/attack_self(mob/user) + user.set_machine(src) + var/dat = "Teleportation Scroll:
    " + dat += "Number of uses: [src.uses]
    " + dat += "
    " + dat += "Four uses, use them wisely:
    " + dat += "Teleport
    " + dat += "Kind regards,
    Wizards Federation

    P.S. Don't forget to bring your gear, you'll need it to cast most spells.
    " + user << browse(dat, "window=scroll") + onclose(user, "scroll") + return + +/obj/item/teleportation_scroll/Topic(href, href_list) + ..() + if (usr.stat || usr.restrained() || src.loc != usr) + return + if (!ishuman(usr)) + return 1 + var/mob/living/carbon/human/H = usr + if(H.is_holding(src)) + H.set_machine(src) + if (href_list["spell_teleport"]) + if(uses) + teleportscroll(H) + if(H) + attack_self(H) + return + +/obj/item/teleportation_scroll/proc/teleportscroll(mob/user) + + var/A + + A = input(user, "Area to jump to", "BOOYEA", A) as null|anything in GLOB.teleportlocs + if(!src || QDELETED(src) || !user || !user.is_holding(src) || user.incapacitated() || !A || !uses) + return + var/area/thearea = GLOB.teleportlocs[A] + + var/datum/effect_system/smoke_spread/smoke = new + smoke.set_up(2, user.loc) + smoke.attach(user) + smoke.start() + var/list/L = list() + for(var/turf/T in get_area_turfs(thearea.type)) + if(!is_blocked_turf(T)) + L += T + + if(!L.len) + to_chat(user, "The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry.") + return + + user.forceMove(pick(L)) + + smoke.start() + uses-- +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 89fdc6d694..b1cb00acab 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -113,7 +113,7 @@ title+= "[R.title]" title+= " ([R.req_amount] [singular_name]\s)" if (can_build) - t1 += text("[] ", src, i, title) + t1 += text("[] ", i, title) else t1 += text("[]", title) continue @@ -123,9 +123,9 @@ var/list/multipliers = list(5,10,25) for (var/n in multipliers) if (max_multiplier>=n) - t1 += " [n*R.res_amount]x" + t1 += " [n*R.res_amount]x" if (!(max_multiplier in multipliers)) - t1 += " [max_multiplier*R.res_amount]x" + t1 += " [max_multiplier*R.res_amount]x" t1 += "
    " user << browse(t1, "window=stack") diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 2e11600d65..2fdd800d6d 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -542,7 +542,7 @@ /obj/item/storage/backpack/duffelbag/syndie/firestarter/PopulateContents() new /obj/item/clothing/under/syndicate/soviet(src) - new /obj/item/watertank/operator(src) + new /obj/item/watertank/op(src) new /obj/item/clothing/suit/space/hardsuit/syndi/elite(src) new /obj/item/gun/ballistic/automatic/pistol/APS(src) new /obj/item/ammo_box/magazine/pistolm9mm(src) diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index c0c861f4c4..0712fec228 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -43,7 +43,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", var/icon/bibleicon = icon('icons/obj/storage.dmi', GLOB.biblestates[i]) var/nicename = GLOB.biblenames[i] H << browse_rsc(bibleicon, nicename) - dat += {""} + dat += {""} dat += "
    [entry][functions]
    [nicename]
    [nicename]
    " H << browse(dat, "window=editicon;can_close=0;can_minimize=0;size=250x650") diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm index 4d56b6a8e8..0f7bdd616c 100644 --- a/code/game/objects/items/storage/secure.dm +++ b/code/game/objects/items/storage/secure.dm @@ -78,7 +78,7 @@ message = text("[]", src.code) if (!src.locked) message = "*****" - dat += text("
    \n>[]
    \n1-2-3
    \n4-5-6
    \n7-8-9
    \nR-0-E
    \n", message, src, src, src, src, src, src, src, src, src, src, src, src) + dat += text("
    \n>[]
    \n1-2-3
    \n4-5-6
    \n7-8-9
    \nR-0-E
    \n", message) user << browse(dat, "window=caselock;size=300x280") /obj/item/storage/secure/Topic(href, href_list) diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 38a9555f83..5fedac37a8 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -439,7 +439,7 @@ user.update_inv_back() //for overlays update //Operator backpack spray -/obj/item/watertank/operator +/obj/item/watertank/op name = "backpack water tank" desc = "A New Russian backpack spray for systematic cleansing of carbon lifeforms." icon_state = "waterbackpackjani" @@ -448,7 +448,7 @@ volume = 2000 slowdown = 0 -/obj/item/watertank/operator/New() +/obj/item/watertank/op/New() ..() reagents.add_reagent("mutagen",350) reagents.add_reagent("napalm",125) @@ -458,8 +458,7 @@ reagents.add_reagent("plasma",250) reagents.add_reagent("condensedcapsaicin",500) -/obj/item/reagent_containers/spray/mister/operator - name = "janitor spray nozzle" +/obj/item/reagent_containers/spray/mister/op desc = "A mister nozzle attached to several extended water tanks. It suspiciously has a compressor in the system and is labelled entirely in New Cyrillic." icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "misterjani" @@ -470,5 +469,5 @@ amount_per_transfer_from_this = 100 possible_transfer_amounts = list(75,100,150) -/obj/item/watertank/operator/make_noz() - return new /obj/item/reagent_containers/spray/mister/operator(src) +/obj/item/watertank/op/make_noz() + return new /obj/item/reagent_containers/spray/mister/op(src) diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index c39a03dd12..fd12bcccd5 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -33,17 +33,17 @@ user.set_machine(src) var/dat if (src.temp) - dat = "[src.temp]

    Clear" + dat = "[src.temp]

    Clear" else dat = {" Persistent Signal Locator
    Frequency: -- -- [format_frequency(src.frequency)] -+ -+
    +- +- [format_frequency(src.frequency)] ++ ++
    -Refresh"} +Refresh"} user << browse(dat, "window=radio") onclose(user, "radio") return @@ -105,7 +105,7 @@ Frequency: direct = "weak" src.temp += "[W.imp_in.name]-[dir2text(get_dir(sr, tr))]-[direct]
    " - src.temp += "You are at \[[sr.x],[sr.y],[sr.z]\] in orbital coordinates.

    Refresh
    " + src.temp += "You are at \[[sr.x],[sr.y],[sr.z]\] in orbital coordinates.

    Refresh
    " else src.temp += "Processing Error: Unable to locate orbital position.
    " else diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 8d56fccad6..25c67b2713 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -750,7 +750,7 @@ /obj/item/toy/cards/cardhand/interact(mob/user) var/dat = "You have:
    " for(var/t in currenthand) - dat += "A [t].
    " + dat += "A [t].
    " dat += "Which card will you remove next?" var/datum/browser/popup = new(user, "cardhand", "Hand of Cards", 400, 240) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index 048184578a..3047dd9a2c 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -567,7 +567,7 @@ ..() if(!proximity) return - user.faction |= "greytide(\ref[user])" + user.faction |= "greytide([REF(user)])" if(isliving(AM)) var/mob/living/L = AM if(istype (L, /mob/living/simple_animal/hostile/illusion)) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index e95a81822c..6e865ff3bd 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -200,7 +200,7 @@ /obj/vv_get_dropdown() . = ..() - .["Delete all of type"] = "?_src_=vars;[HrefToken()];delall=\ref[src]" + .["Delete all of type"] = "?_src_=vars;[HrefToken()];delall=[REF(src)]" /obj/examine(mob/user) ..() diff --git a/code/game/objects/structures/guncase.dm b/code/game/objects/structures/guncase.dm index ac6a69ed93..25073853ad 100644 --- a/code/game/objects/structures/guncase.dm +++ b/code/game/objects/structures/guncase.dm @@ -69,7 +69,7 @@ if(LAZYLEN(contents)) for(var/i in 1 to contents.len) var/obj/item/I = contents[i] - dat += "[I.name]
    " + dat += "[I.name]
    " dat += "
    " var/datum/browser/popup = new(user, "gunlocker", "
    [name]
    ", 350, 300) diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 747e0b3317..b6332492dd 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -93,15 +93,15 @@ user.set_machine(src) var/dat if(mybag) - dat += "[mybag.name]
    " + dat += "[mybag.name]
    " if(mymop) - dat += "[mymop.name]
    " + dat += "[mymop.name]
    " if(myspray) - dat += "[myspray.name]
    " + dat += "[myspray.name]
    " if(myreplacer) - dat += "[myreplacer.name]
    " + dat += "[myreplacer.name]
    " if(signs) - dat += "[signs] sign\s
    " + dat += "[signs] sign\s
    " var/datum/browser/popup = new(user, "janicart", name, 240, 160) popup.set_content(dat) popup.open() diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index d253cbcf44..8d62168f7c 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -144,31 +144,31 @@ if(lines.len > 0) dat += "

    Playback

    " if(!playing) - dat += "Play Stop

    " + dat += "Play Stop

    " dat += "Repeat Song: " - dat += repeat > 0 ? "--" : "--" + dat += repeat > 0 ? "--" : "--" dat += " [repeat] times " - dat += repeat < max_repeats ? "++" : "++" + dat += repeat < max_repeats ? "++" : "++" dat += "
    " else - dat += "Play Stop
    " + dat += "Play Stop
    " dat += "Repeats left: [repeat]
    " if(!edit) - dat += "
    Show Editor
    " + dat += "
    Show Editor
    " else dat += "

    Editing

    " - dat += "Hide Editor" - dat += " Start a New Song" - dat += " Import a Song

    " + dat += "Hide Editor" + dat += " Start a New Song" + dat += " Import a Song

    " var/bpm = round(600 / tempo) - dat += "Tempo: - [bpm] BPM +

    " + dat += "Tempo: - [bpm] BPM +

    " var/linecount = 0 for(var/line in lines) linecount += 1 - dat += "Line [linecount]: Edit X [line]
    " - dat += "Add Line

    " + dat += "Line [linecount]: Edit X [line]
    " + dat += "Add Line

    " if(help) - dat += "Hide Help
    " + dat += "Hide Help
    " dat += {" Lines are a series of chords, separated by commas (,), each with notes separated by hyphens (-).
    Every note in a chord will play together, with chord timed by the tempo.
    @@ -187,7 +187,7 @@ A song may only contain up to [MUSIC_MAXLINES] lines.
    "} else - dat += "Show Help
    " + dat += "Show Help
    " var/datum/browser/popup = new(user, "instrument", instrumentObj.name, 700, 500) popup.set_content(dat) diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm index 85c1694cb0..aeca1453e3 100644 --- a/code/game/objects/structures/noticeboard.dm +++ b/code/game/objects/structures/noticeboard.dm @@ -44,9 +44,9 @@ var/dat = "[name]
    " for(var/obj/item/P in src) if(istype(P, /obj/item/paper)) - dat += "[P.name] [auth ? "Write Remove" : ""]
    " + dat += "[P.name] [auth ? "Write Remove" : ""]
    " else - dat += "[P.name] [auth ? "Remove" : ""]
    " + dat += "[P.name] [auth ? "Remove" : ""]
    " user << browse("Notices[dat]","window=noticeboard") onclose(user, "noticeboard") diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index de8d913f4f..733dcf646d 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -83,12 +83,12 @@ FLOOR SAFES /obj/structure/safe/attack_hand(mob/user) user.set_machine(src) var/dat = "
    " - dat += "[open ? "Close" : "Open"] [src] | - [dial * 5] +" + dat += "[open ? "Close" : "Open"] [src] | - [dial * 5] +" if(open) dat += "" for(var/i = contents.len, i>=1, i--) var/obj/item/P = contents[i] - dat += "" + dat += "" dat += "
    [P.name]
    [P.name]
    " user << browse("[name][dat]", "window=safe;size=350x300") diff --git a/code/modules/admin/DB_ban/functions.dm b/code/modules/admin/DB_ban/functions.dm index 6bd01183ad..5139ea8480 100644 --- a/code/modules/admin/DB_ban/functions.dm +++ b/code/modules/admin/DB_ban/functions.dm @@ -356,8 +356,8 @@ output += "" - output += "Add custom ban: (ONLY use this if you can't ban through any other method)" - output += "" + output += "Add custom ban: (ONLY use this if you can't ban through any other method)" + output += "" output += HrefTokenFormField() output += "" output += "" output += "
    Ban type:
    " - output += "Search: " - output += "" + output += "Search: " + output += "" output += HrefTokenFormField() output += "Ckey: " output += "Admin ckey: " @@ -469,25 +469,25 @@ if("PERMABAN") typedesc = "PERMABAN" if("TEMPBAN") - typedesc = "TEMPBAN
    ([duration] minutes [(unbanned) ? "" : "(Edit))"]
    Expires [expiration]
    " + typedesc = "TEMPBAN
    ([duration] minutes [(unbanned) ? "" : "(Edit))"]
    Expires [expiration]
    " if("JOB_PERMABAN") typedesc = "JOBBAN
    ([job])" if("JOB_TEMPBAN") - typedesc = "TEMP JOBBAN
    ([job])
    ([duration] minutes [(unbanned) ? "" : "(Edit))"]
    Expires [expiration]" + typedesc = "TEMP JOBBAN
    ([job])
    ([duration] minutes [(unbanned) ? "" : "(Edit))"]
    Expires [expiration]" if("ADMIN_PERMABAN") typedesc = "ADMIN PERMABAN" if("ADMIN_TEMPBAN") - typedesc = "ADMIN TEMPBAN
    ([duration] minutes [(unbanned) ? "" : "(Edit))"]
    Expires [expiration]
    " + typedesc = "ADMIN TEMPBAN
    ([duration] minutes [(unbanned) ? "" : "(Edit))"]
    Expires [expiration]
    " output += "" output += "[typedesc]" output += "[ckey]" output += "[bantime] (Round ID: [round_id])" output += "[ackey]" - output += "[(unbanned) ? "" : "Unban"]" + output += "[(unbanned) ? "" : "Unban"]" output += "" output += "" - output += "Reason: [(unbanned) ? "" : "(Edit)"] \"[reason]\"" + output += "Reason: [(unbanned) ? "" : "(Edit)"] \"[reason]\"" output += "" if(edits) output += "" diff --git a/code/modules/admin/NewBan.dm b/code/modules/admin/NewBan.dm index add7254934..bd32533a7f 100644 --- a/code/modules/admin/NewBan.dm +++ b/code/modules/admin/NewBan.dm @@ -180,7 +180,7 @@ GLOBAL_PROTECT(Banlist) for (var/A in GLOB.Banlist.dir) count++ GLOB.Banlist.cd = "/base/[A]" - var/ref = "\ref[src]" + var/ref = "[REF(src)]" var/key = GLOB.Banlist["key"] var/id = GLOB.Banlist["id"] var/ip = GLOB.Banlist["ip"] diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index a64cd8f40e..1111e7e09e 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -32,47 +32,47 @@ body += " played by [M.client] " body += "\[[M.client.holder ? M.client.holder.rank : "Player"]\]" if(CONFIG_GET(flag/use_exp_tracking)) - body += "\[" + M.client.get_exp_living() + "\]" + body += "\[" + M.client.get_exp_living() + "\]" if(isnewplayer(M)) body += " Hasn't Entered Game " else - body += " \[Heal\] " + body += " \[Heal\] " if(M.client) body += "
    \[First Seen: [M.client.player_join_date]\]\[Byond account registered on: [M.client.account_join_date]\]" body += "

    Show related accounts by: " - body += "\[ CID | " - body += "IP \]" + body += "\[ CID | " + body += "IP \]" body += "

    \[ " - body += "VV - " - body += "TP - " + body += "VV - " + body += "TP - " body += "PM - " - body += "SM - " - body += "FLW - " - body += "LOGS\]
    " + body += "SM - " + body += "FLW - " + body += "LOGS\]
    " body += "Mob type = [M.type]

    " - body += "Kick | " - body += "Ban | " - body += "Jobban | " - body += "Identity Ban | " + body += "Kick | " + body += "Ban | " + body += "Jobban | " + body += "Identity Ban | " if(jobban_isbanned(M, "OOC")) - body+= "OOCBan | " + body+= "OOCBan | " else - body+= "OOCBan | " + body+= "OOCBan | " if(jobban_isbanned(M, "emote")) - body+= "EmoteBan | " + body+= "EmoteBan | " else - body+= "Emoteban | " + body+= "Emoteban | " body += "Notes | Messages | Watchlist | " if(M.client) - body += "| Prison | " - body += "\ Send back to Lobby | " + body += "| Prison | " + body += "\ Send back to Lobby | " var/muted = M.client.prefs.muted body += "
    Mute: " body += "\[IC | " @@ -83,15 +83,15 @@ body += "(toggle all)" body += "

    " - body += "Jump to | " - body += "Get | " - body += "Send To" + body += "Jump to | " + body += "Get | " + body += "Send To" body += "

    " - body += "Traitor panel | " - body += "Narrate to | " - body += "Subtle message | " - body += "Language Menu" + body += "Traitor panel | " + body += "Narrate to | " + body += "Subtle message | " + body += "Language Menu" if (M.client) if(!isnewplayer(M)) @@ -103,76 +103,76 @@ if(ishuman(M)) body += "Human | " else - body += "Humanize | " + body += "Humanize | " //Monkey if(ismonkey(M)) body += "Monkeyized | " else - body += "Monkeyize | " + body += "Monkeyize | " //Corgi if(iscorgi(M)) body += "Corgized | " else - body += "Corgize | " + body += "Corgize | " //AI / Cyborg if(isAI(M)) body += "Is an AI " else if(ishuman(M)) - body += "Make AI | " - body += "Make Robot | " - body += "Make Alien | " - body += "Make Slime | " - body += "Make Blob | " + body += "Make AI | " + body += "Make Robot | " + body += "Make Alien | " + body += "Make Slime | " + body += "Make Blob | " //Simple Animals if(isanimal(M)) - body += "Re-Animalize | " + body += "Re-Animalize | " else - body += "Animalize | " + body += "Animalize | " body += "

    " body += "Rudimentary transformation:
    These transformations only create a new mob type and copy stuff over. They do not take into account MMIs and similar mob-specific things. The buttons in 'Transformations' are preferred, when possible.

    " - body += "Observer | " - body += "\[ Alien: Drone, " - body += "Hunter, " - body += "Sentinel, " - body += "Praetorian, " - body += "Queen, " - body += "Larva \] " - body += "Human " - body += "\[ slime: Baby, " - body += "Adult \] " - body += "Monkey | " - body += "Cyborg | " - body += "Cat | " - body += "Runtime | " - body += "Corgi | " - body += "Ian | " - body += "Crab | " - body += "Coffee | " - body += "\[ Construct: Juggernaut , " - body += "Artificer , " - body += "Wraith \] " - body += "Shade" + body += "Observer | " + body += "\[ Alien: Drone, " + body += "Hunter, " + body += "Sentinel, " + body += "Praetorian, " + body += "Queen, " + body += "Larva \] " + body += "Human " + body += "\[ slime: Baby, " + body += "Adult \] " + body += "Monkey | " + body += "Cyborg | " + body += "Cat | " + body += "Runtime | " + body += "Corgi | " + body += "Ian | " + body += "Crab | " + body += "Coffee | " + body += "\[ Construct: Juggernaut , " + body += "Artificer , " + body += "Wraith \] " + body += "Shade" body += "
    " if (M.client) body += "

    " body += "Other actions:" body += "
    " - body += "Forcesay | " - body += "Thunderdome 1 | " - body += "Thunderdome 2 | " - body += "Thunderdome Admin | " - body += "Thunderdome Observer | " + body += "Forcesay | " + body += "Thunderdome 1 | " + body += "Thunderdome 2 | " + body += "Thunderdome Admin | " + body += "Thunderdome Observer | " body += "
    " body += "" - usr << browse(body, "window=adminplayeropts-\ref[M];size=550x515") + usr << browse(body, "window=adminplayeropts-[REF(M)];size=550x515") SSblackbox.add_details("admin_verb","Player Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -195,19 +195,19 @@ dat += "
    Feed channels and stories entered through here will be uneditable and handled as official news by the rest of the units." dat += "
    Note that this panel allows full freedom over the news network, there are no constrictions except the few basic ones. Don't break things!
    " if(GLOB.news_network.wanted_issue.active) - dat+= "
    Read Wanted Issue" - dat+= "

    Create Feed Channel" - dat+= "
    View Feed Channels" - dat+= "
    Submit new Feed story" - dat+= "

    Exit" + dat+= "
    Read Wanted Issue" + dat+= "

    Create Feed Channel" + dat+= "
    View Feed Channels" + dat+= "
    Submit new Feed story" + dat+= "

    Exit" var/wanted_already = 0 if(GLOB.news_network.wanted_issue.active) wanted_already = 1 dat+="
    Feed Security functions:
    " - dat+="
    [(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue" - dat+="
    Censor Feed Stories" - dat+="
    Mark Feed Channel with Nanotrasen D-Notice (disables and locks the channel)." - dat+="

    The newscaster recognises you as:
    [src.admin_signature]
    " + dat+="
    [(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue" + dat+="
    Censor Feed Stories" + dat+="
    Mark Feed Channel with Nanotrasen D-Notice (disables and locks the channel)." + dat+="

    The newscaster recognises you as:
    [src.admin_signature]
    " if(1) dat+= "Station Feed Channels
    " if( isemptylist(GLOB.news_network.network_channels) ) @@ -215,36 +215,36 @@ else for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels) if(CHANNEL.is_admin_channel) - dat+="[CHANNEL.channel_name]
    " + dat+="[CHANNEL.channel_name]
    " else - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " - dat+="

    Refresh" - dat+="
    Back" + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " + dat+="

    Refresh" + dat+="
    Back" if(2) dat+="Creating new Feed Channel..." - dat+="
    Channel Name: [src.admincaster_feed_channel.channel_name]
    " - dat+="Channel Author: [src.admin_signature]
    " - dat+="Will Accept Public Feeds: [(src.admincaster_feed_channel.locked) ? ("NO") : ("YES")]

    " - dat+="
    Submit

    Cancel
    " + dat+="
    Channel Name: [src.admincaster_feed_channel.channel_name]
    " + dat+="Channel Author: [src.admin_signature]
    " + dat+="Will Accept Public Feeds: [(src.admincaster_feed_channel.locked) ? ("NO") : ("YES")]

    " + dat+="
    Submit

    Cancel
    " if(3) dat+="Creating new Feed Message..." - dat+="
    Receiving Channel: [src.admincaster_feed_channel.channel_name]
    " //MARK + dat+="
    Receiving Channel: [src.admincaster_feed_channel.channel_name]
    " //MARK dat+="Message Author: [src.admin_signature]
    " - dat+="Message Body: [src.admincaster_feed_message.returnBody(-1)]
    " - dat+="
    Submit

    Cancel
    " + dat+="Message Body: [src.admincaster_feed_message.returnBody(-1)]
    " + dat+="
    Submit

    Cancel
    " if(4) dat+="Feed story successfully submitted to [src.admincaster_feed_channel.channel_name].

    " - dat+="
    Return
    " + dat+="
    Return
    " if(5) dat+="Feed Channel [src.admincaster_feed_channel.channel_name] created successfully.

    " - dat+="
    Return
    " + dat+="
    Return
    " if(6) dat+="ERROR: Could not submit Feed story to Network.

    " if(src.admincaster_feed_channel.channel_name=="") dat+="•Invalid receiving channel name.
    " if(src.admincaster_feed_message.returnBody(-1) == "" || src.admincaster_feed_message.returnBody(-1) == "\[REDACTED\]") dat+="•Invalid message body.
    " - dat+="
    Return
    " + dat+="
    Return
    " if(7) dat+="ERROR: Could not submit Feed Channel to Network.

    " if(src.admincaster_feed_channel.channel_name =="" || src.admincaster_feed_channel.channel_name == "\[REDACTED\]") @@ -256,7 +256,7 @@ break if(check) dat+="•Channel name already in use.
    " - dat+="
    Return
    " + dat+="
    Return
    " if(9) dat+="[admincaster_feed_channel.channel_name]: \[created by: [admincaster_feed_channel.returnAuthor(-1)]\]
    " if(src.admincaster_feed_channel.censored) @@ -278,8 +278,8 @@ for(var/datum/newscaster/feed_comment/comment in MESSAGE.comments) dat+="[comment.body]
    [comment.author] [comment.time_stamp]
    " dat+="
    " - dat+="

    Refresh" - dat+="
    Back" + dat+="

    Refresh" + dat+="
    Back" if(10) dat+="Nanotrasen Feed Censorship Tool
    " dat+="NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.
    " @@ -289,8 +289,8 @@ dat+="No feed channels found active...
    " else for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " - dat+="
    Cancel" + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " + dat+="
    Cancel" if(11) dat+="Nanotrasen D-Notice Handler
    " dat+="A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's" @@ -300,26 +300,26 @@ dat+="No feed channels found active...
    " else for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
    " - dat+="
    Back" + dat+="
    Back" if(12) dat+="[src.admincaster_feed_channel.channel_name]: \[ created by: [src.admincaster_feed_channel.returnAuthor(-1)] \]
    " - dat+="[(src.admincaster_feed_channel.authorCensor) ? ("Undo Author censorship") : ("Censor channel Author")]
    " + dat+="[(src.admincaster_feed_channel.authorCensor) ? ("Undo Author censorship") : ("Censor channel Author")]
    " if( isemptylist(src.admincaster_feed_channel.messages) ) dat+="No feed messages found in channel...
    " else for(var/datum/newscaster/feed_message/MESSAGE in src.admincaster_feed_channel.messages) dat+="-[MESSAGE.returnBody(-1)]
    \[Story by [MESSAGE.returnAuthor(-1)]\]
    " - dat+="[(MESSAGE.bodyCensor) ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.authorCensor) ? ("Undo Author Censorship") : ("Censor message Author")]
    " - dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]: [MESSAGE.locked ? "Unlock" : "Lock"]
    " + dat+="[(MESSAGE.bodyCensor) ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.authorCensor) ? ("Undo Author Censorship") : ("Censor message Author")]
    " + dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]: [MESSAGE.locked ? "Unlock" : "Lock"]
    " for(var/datum/newscaster/feed_comment/comment in MESSAGE.comments) - dat+="[comment.body] X
    [comment.author] [comment.time_stamp]
    " - dat+="
    Back" + dat+="[comment.body] X
    [comment.author] [comment.time_stamp]
    " + dat+="
    Back" if(13) dat+="[src.admincaster_feed_channel.channel_name]: \[ created by: [src.admincaster_feed_channel.returnAuthor(-1)] \]
    " - dat+="Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel.
    " + dat+="Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel.
    " if(src.admincaster_feed_channel.censored) dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.
    " dat+="No further feed story additions are allowed while the D-Notice is in effect.


    " @@ -329,7 +329,7 @@ else for(var/datum/newscaster/feed_message/MESSAGE in src.admincaster_feed_channel.messages) dat+="-[MESSAGE.returnBody(-1)]
    \[Story by [MESSAGE.returnAuthor(-1)]\]
    " - dat+="
    Back" + dat+="
    Back" if(14) dat+="Wanted Issue Handler:" var/wanted_already = 0 @@ -340,29 +340,29 @@ if(wanted_already) dat+="
    A wanted issue is already in Feed Circulation. You can edit or cancel it below.
    " dat+="
    " - dat+="Criminal Name: [src.admincaster_wanted_message.criminal]
    " - dat+="Description: [src.admincaster_wanted_message.body]
    " + dat+="Criminal Name: [src.admincaster_wanted_message.criminal]
    " + dat+="Description: [src.admincaster_wanted_message.body]
    " if(wanted_already) dat+="Wanted Issue created by:[GLOB.news_network.wanted_issue.scannedUser]
    " else dat+="Wanted Issue will be created under prosecutor:[src.admin_signature]
    " - dat+="
    [(wanted_already) ? ("Edit Issue") : ("Submit")]" + dat+="
    [(wanted_already) ? ("Edit Issue") : ("Submit")]" if(wanted_already) - dat+="
    Take down Issue" - dat+="
    Cancel" + dat+="
    Take down Issue" + dat+="
    Cancel" if(15) dat+="Wanted issue for [src.admincaster_wanted_message.criminal] is now in Network Circulation.

    " - dat+="
    Return
    " + dat+="
    Return
    " if(16) dat+="ERROR: Wanted Issue rejected by Network.

    " if(src.admincaster_wanted_message.criminal =="" || src.admincaster_wanted_message.criminal == "\[REDACTED\]") dat+="•Invalid name for person wanted.
    " if(src.admincaster_wanted_message.body == "" || src.admincaster_wanted_message.body == "\[REDACTED\]") dat+="•Invalid description.
    " - dat+="
    Return
    " + dat+="
    Return
    " if(17) dat+="Wanted Issue successfully deleted from Circulation
    " - dat+="
    Return
    " + dat+="
    Return
    " if(18) dat+="-- STATIONWIDE WANTED ISSUE --
    \[Submitted by: [GLOB.news_network.wanted_issue.scannedUser]\]
    " dat+="Criminal: [GLOB.news_network.wanted_issue.criminal]
    " @@ -373,10 +373,10 @@ dat+="
    " else dat+="None" - dat+="
    Back
    " + dat+="
    Back
    " if(19) dat+="Wanted issue for [src.admincaster_wanted_message.criminal] successfully edited.

    " - dat+="
    Return
    " + dat+="
    Return
    " else dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com" @@ -390,21 +390,21 @@ var/dat = {"
    Game Panel

    \n - Change Game Mode
    + Change Game Mode
    "} if(GLOB.master_mode == "secret") - dat += "(Force Secret Mode)
    " + dat += "(Force Secret Mode)
    " dat += {"
    - Create Object
    - Quick Create Object
    - Create Turf
    - Create Mob
    + Create Object
    + Quick Create Object
    + Create Turf
    + Create Mob
    "} if(marked_datum && istype(marked_datum, /atom)) - dat += "Duplicate Marked Datum
    " + dat += "Duplicate Marked Datum
    " usr << browse(dat, "window=admin2;size=210x200") return @@ -757,14 +757,14 @@ dat += " (Cannot Late Join)
    " continue if(job.total_positions >= 0) - dat += " Add | " + dat += " Add | " if(job.total_positions > job.current_positions) - dat += "Remove | " + dat += "Remove | " else dat += "Remove | " - dat += "Unlimit" + dat += "Unlimit" else - dat += " Limit" + dat += " Limit" dat += "
    " dat += "" diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index 2ca0593e8d..bb2a72f970 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -2,7 +2,11 @@ if(!message || !subject) return var/F = file("[GLOB.log_directory]/[subject].html") +<<<<<<< HEAD F << "[time_stamp()] \ref[src] ([x],[y],[z]) || [src] [message]
    " +======= + WRITE_FILE(F, "[time_stamp()] [REF(src)] ([x],[y],[z]) || [src] [message]
    ") +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental /client/proc/investigate_show(subject in list("hrefs","notes, memos, watchlist", INVESTIGATE_PORTAL, INVESTIGATE_SINGULO, INVESTIGATE_WIRES, INVESTIGATE_TELESCI, INVESTIGATE_GRAVITY, INVESTIGATE_RECORDS, INVESTIGATE_CARGO, INVESTIGATE_SUPERMATTER, INVESTIGATE_ATMOS, INVESTIGATE_EXPERIMENTOR, INVESTIGATE_BOTANY, INVESTIGATE_HALLUCINATIONS) ) diff --git a/code/modules/admin/create_object.dm b/code/modules/admin/create_object.dm index 73bb998231..4117acbf53 100644 --- a/code/modules/admin/create_object.dm +++ b/code/modules/admin/create_object.dm @@ -1,5 +1,5 @@ /datum/admins/proc/create_panel_helper(template) - var/final_html = replacetext(template, "/* ref src */", "\ref[src];[HrefToken()]") + var/final_html = replacetext(template, "/* ref src */", "[REF(src)];[HrefToken()]") final_html = replacetext(final_html,"/* hreftokenfield */","[HrefTokenFormField()]") return final_html diff --git a/code/modules/admin/permissionverbs/permissionedit.dm b/code/modules/admin/permissionverbs/permissionedit.dm index 24a53eff2b..26d2c87b48 100644 --- a/code/modules/admin/permissionverbs/permissionedit.dm +++ b/code/modules/admin/permissionverbs/permissionedit.dm @@ -20,7 +20,7 @@
    - + @@ -36,10 +36,10 @@ if(!rights) rights = "*none*" output += "" - output += "" - output += "" - output += "" - output += "" + output += "" + output += "" + output += "" + output += "" output += "" output += {" diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index f91ebb7557..072b5dab37 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -282,7 +282,7 @@ " + dat += "" dat += "" - dat += "" + dat += "" else - dat += "" + dat += "" dat += "" dat += "
    CKEY \[+\]CKEY \[+\] RANK PERMISSIONS VERB-OVERRIDES
    [adm_ckey] \[-\][D.rank.name][rights][rights2text(0," ",D.rank.adds,D.rank.subs)][adm_ckey] \[-\][D.rank.name][rights][rights2text(0," ",D.rank.adds,D.rank.subs)]
    [M_name] - [M_rname] - [M_key] ([M_job]) @@ -338,7 +338,7 @@ dat += "Time limit: [CONFIG_GET(number/midround_antag_time_check)] minutes into round
    " dat += "Living crew limit: [CONFIG_GET(number/midround_antag_life_check) * 100]% of crew alive
    " dat += "If limits past: [SSticker.mode.round_ends_with_antag_death ? "End The Round" : "Continue As Extended"]
    " - dat += "End Round Now
    " + dat += "End Round Now
    " dat += "[SSticker.delay_end ? "End Round Normally" : "Delay Round End"]" var/connected_players = GLOB.clients.len var/lobby_players = 0 @@ -389,11 +389,11 @@ for(var/datum/mind/N in SSticker.mode.syndicates) var/mob/M = N.current if(M) - dat += "
    [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]
    [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]PMFLW
    FLW
    [N.name]([N.key]) Nuclear Operative Body destroyed!
    [N.name]([N.key]) Nuclear Operative Body destroyed!PM

    " for(var/obj/item/disk/nuclear/N in GLOB.poi_list) @@ -402,7 +402,7 @@ while(!isturf(disk_loc)) if(ismob(disk_loc)) var/mob/M = disk_loc - dat += "carried by [M.real_name] " + dat += "carried by [M.real_name] " if(isobj(disk_loc)) var/obj/O = disk_loc dat += "in \a [O.name] " @@ -416,29 +416,29 @@ for(var/datum/mind/N in get_antagonists(/datum/antagonist/rev/head)) var/mob/M = N.current if(!M) - dat += "" + dat += "" dat += "" else - dat += "" + dat += "" dat += "" - dat += "" + dat += "" for(var/datum/mind/N in get_antagonists(/datum/antagonist/rev,TRUE)) var/mob/M = N.current if(M) - dat += "" + dat += "" dat += "" - dat += "" + dat += "" dat += "
    Nuclear Disk(s)
    [N.name]([N.key])Head Revolutionary body destroyed!
    [N.name]([N.key])Head Revolutionary body destroyed!PM
    [M.real_name] (Leader)[M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]
    [M.real_name] (Leader)[M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]PMFLW
    FLW
    [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]
    [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]PMFLW
    FLW
    " for(var/datum/mind/N in SSjob.get_living_heads()) var/mob/M = N.current if(M) - dat += "" + dat += "" dat += "" - dat += "" + dat += "" var/turf/mob_loc = get_turf(M) dat += "" else - dat += "" + dat += "" dat += "" dat += "
    Target(s)Location
    [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]
    [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]PMFLWFLW[mob_loc.loc]
    [N.name]([N.key])Head body destroyed!
    [N.name]([N.key])Head body destroyed!PM
    " @@ -447,12 +447,12 @@ for(var/datum/mind/changeling in SSticker.mode.changelings) var/mob/M = changeling.current if(M) - dat += "[M.mind.changeling.changelingID] as [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.mind.changeling.changelingID] as [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" - dat += "Show Objective" + dat += "FLW" + dat += "Show Objective" else - dat += "[changeling.name]([changeling.key])Changeling body destroyed!" + dat += "[changeling.name]([changeling.key])Changeling body destroyed!" dat += "PM" dat += "" @@ -461,12 +461,12 @@ for(var/datum/mind/wizard in SSticker.mode.wizards) var/mob/M = wizard.current if(M) - dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" - dat += "Show Objective" + dat += "FLW" + dat += "Show Objective" else - dat += "[wizard.name]([wizard.key])Wizard body destroyed!" + dat += "[wizard.name]([wizard.key])Wizard body destroyed!" dat += "PM" dat += "" @@ -475,12 +475,12 @@ for(var/datum/mind/apprentice in SSticker.mode.apprentices) var/mob/M = apprentice.current if(M) - dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" - dat += "Show Objective" + dat += "FLW" + dat += "Show Objective" else - dat += "[apprentice.name]([apprentice.key])Apprentice body destroyed!!" + dat += "[apprentice.name]([apprentice.key])Apprentice body destroyed!!" dat += "PM" dat += "" @@ -489,9 +489,9 @@ for(var/datum/mind/N in SSticker.mode.cult) var/mob/M = N.current if(M) - dat += "[M.real_name][N.has_antag_datum(ANTAG_DATUM_CULT_MASTER) ? " \[Master\]" : ""][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][N.has_antag_datum(ANTAG_DATUM_CULT_MASTER) ? " \[Master\]" : ""][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" + dat += "FLW" dat += "" if(SSticker.mode.servants_of_ratvar.len) @@ -499,9 +499,9 @@ for(var/datum/mind/N in SSticker.mode.servants_of_ratvar) var/mob/M = N.current if(M) - dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" + dat += "FLW" dat += "" if(SSticker.mode.traitors.len > 0) @@ -509,12 +509,12 @@ for(var/datum/mind/traitor in SSticker.mode.traitors) var/mob/M = traitor.current if(M) - dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" - dat += "Show Objective" + dat += "FLW" + dat += "Show Objective" else - dat += "[traitor.name]([traitor.key])Traitor body destroyed!" + dat += "[traitor.name]([traitor.key])Traitor body destroyed!" dat += "PM" dat += "" @@ -524,12 +524,12 @@ for(var/datum/mind/brother in team.members) var/mob/M = brother.current if(M) - dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" - dat += "Show Objective" + dat += "FLW" + dat += "Show Objective" else - dat += "[brother.name]([brother.key])Brother body destroyed!" + dat += "[brother.name]([brother.key])Brother body destroyed!" dat += "PM" dat += "" @@ -538,12 +538,12 @@ for(var/datum/mind/abductor in SSticker.mode.abductors) var/mob/M = abductor.current if(M) - dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" - dat += "Show Objective" + dat += "FLW" + dat += "Show Objective" else - dat += "[abductor.name]([abductor.key])Abductor body destroyed!" + dat += "[abductor.name]([abductor.key])Abductor body destroyed!" dat += "PM" dat += "" dat += "
    " @@ -551,12 +551,12 @@ for(var/datum/mind/abductee in E.abductee_minds) var/mob/M = abductee.current if(M) - dat += "" + dat += "" dat += "" - dat += "" - dat += "" + dat += "" + dat += "" else - dat += "" + dat += "" dat += "" dat += "
    Abductees
    [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]
    [M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]PMFLWShow Objective
    FLWShow Objective
    [abductee.name]([abductee.key])Abductee body destroyed!
    [abductee.name]([abductee.key])Abductee body destroyed!PM
    " @@ -567,12 +567,12 @@ var/mob/M = devil.current var/datum/antagonist/devil/devilinfo = devil.has_antag_datum(ANTAG_DATUM_DEVIL) if(M) - dat += "[M.real_name] : [devilinfo.truename][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name] : [devilinfo.truename][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "Show Objective" - dat += "Show all devil info" + dat += "Show Objective" + dat += "Show all devil info" else - dat += "[devil.name] : [devilinfo.truename] ([devil.key])devil body destroyed!" + dat += "[devil.name] : [devilinfo.truename] ([devil.key])devil body destroyed!" dat += "PM" dat += "" @@ -582,11 +582,11 @@ var/datum/mind/sintouched = X var/mob/M = sintouched.current if(M) - dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "Show Objective" + dat += "Show Objective" else - dat += "[sintouched.name]([sintouched.key])sintouched body destroyed!" + dat += "[sintouched.name]([sintouched.key])sintouched body destroyed!" dat += "PM" dat += "" @@ -598,12 +598,12 @@ for(var/datum/mind/blob in blob_minds) var/mob/camera/blob/M = blob.current if(M) - dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" + dat += "FLW" dat += "Progress: [M.blobs_legit.len]/[M.blobwincount]" else - dat += "[blob.name]([blob.key])Blob not found!" + dat += "[blob.name]([blob.key])Blob not found!" dat += "PM" dat += "" @@ -615,11 +615,11 @@ for(var/datum/mind/eek in mode.ape_infectees) var/mob/M = eek.current if(M) - dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]" dat += "PM" - dat += "FLW" + dat += "FLW" else - dat += "[eek.name]([eek.key])Monkey not found!" + dat += "[eek.name]([eek.key])Monkey not found!" dat += "PM" dat += "" diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index 5e1a8300c4..d3e4643ee6 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -7,9 +7,9 @@ dat +={" General Secrets

    - Show Job Debug
    - Admin Log
    - Show Admin List
    + Show Job Debug
    + Admin Log
    + Show Admin List

    "} @@ -17,27 +17,27 @@ dat += {" Admin Secrets

    - Cure all diseases currently in existence
    - Bombing List
    - Show current traitors and objectives
    - Show last [length(GLOB.lastsignalers)] signalers
    - Show last [length(GLOB.lawchanges)] law changes
    - Show AI Laws
    - Show Game Mode
    - Show Crew Manifest
    - List DNA (Blood)
    - List Fingerprints
    - Enable/Disable CTF

    - Reset Thunderdome to default state
    - Rename Station Name
    - Reset Station Name
    + Cure all diseases currently in existence
    + Bombing List
    + Show current traitors and objectives
    + Show last [length(GLOB.lastsignalers)] signalers
    + Show last [length(GLOB.lawchanges)] law changes
    + Show AI Laws
    + Show Game Mode
    + Show Crew Manifest
    + List DNA (Blood)
    + List Fingerprints
    + Enable/Disable CTF

    + Reset Thunderdome to default state
    + Rename Station Name
    + Reset Station Name

    Shuttles

    - Move Ferry
    - Toggle Arrivals Ferry
    - Move Mining Shuttle
    - Move Labor Shuttle
    + Move Ferry
    + Toggle Arrivals Ferry
    + Move Mining Shuttle
    + Move Labor Shuttle

    "} @@ -45,6 +45,7 @@ dat += {" Fun Secrets

    +<<<<<<< HEAD Trigger a Virus Outbreak
    Turn all humans into monkeys
    Chinese Cartoons
    @@ -65,10 +66,31 @@ Break all lights
    Fix all lights
    The floor is lava! (DANGEROUS: extremely lame)
    +======= + Trigger a Virus Outbreak
    + Turn all humans into monkeys
    + Chinese Cartoons
    + Change the species of all humans
    + Make all areas powered
    + Make all areas unpowered
    + Power all SMES
    + Triple AI mode (needs to be used in the lobby)
    + Everyone is the traitor
    + Summon Guns
    + Summon Magic
    + Summon Events (Toggle)
    + There can only be one!
    + There can only be one! (40-second delay)
    + Make all players retarded
    + Egalitarian Station Mode
    + Break all lights
    + Fix all lights
    + The floor is lava! (DANGEROUS: extremely lame)
    +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental
    - Change bomb cap
    - Mass Purrbation
    - Mass Remove Purrbation
    + Change bomb cap
    + Mass Purrbation
    + Mass Remove Purrbation
    "} dat += "
    " @@ -77,9 +99,9 @@ dat += {" Security Level Elevated

    - Change all maintenance doors to engie/brig access only
    - Change all maintenance doors to brig access only
    - Remove cap on security officers
    + Change all maintenance doors to engie/brig access only
    + Change all maintenance doors to brig access only
    + Remove cap on security officers

    "} diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 73da8d9424..5139f0bb47 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -618,15 +618,15 @@ //Regular jobs //Command (Blue) dat += "" - dat += "" + dat += "" for(var/jobPos in GLOB.command_positions) if(!jobPos) continue if(jobban_isbanned(M, jobPos)) - dat += "" + dat += "" counter++ else - dat += "" + dat += "" counter++ if(counter >= 6) //So things dont get squiiiiished! @@ -637,15 +637,15 @@ //Security (Red) counter = 0 dat += "
    Command Positions
    Command Positions
    [jobPos][jobPos][jobPos][jobPos]
    " - dat += "" + dat += "" for(var/jobPos in GLOB.security_positions) if(!jobPos) continue if(jobban_isbanned(M, jobPos)) - dat += "" + dat += "" counter++ else - dat += "" + dat += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -656,15 +656,15 @@ //Engineering (Yellow) counter = 0 dat += "
    Security Positions
    Security Positions
    [jobPos][jobPos][jobPos][jobPos]
    " - dat += "" + dat += "" for(var/jobPos in GLOB.engineering_positions) if(!jobPos) continue if(jobban_isbanned(M, jobPos)) - dat += "" + dat += "" counter++ else - dat += "" + dat += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -675,15 +675,15 @@ //Medical (White) counter = 0 dat += "
    Engineering Positions
    Engineering Positions
    [jobPos][jobPos][jobPos][jobPos]
    " - dat += "" + dat += "" for(var/jobPos in GLOB.medical_positions) if(!jobPos) continue if(jobban_isbanned(M, jobPos)) - dat += "" + dat += "" counter++ else - dat += "" + dat += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -694,15 +694,15 @@ //Science (Purple) counter = 0 dat += "
    Medical Positions
    Medical Positions
    [jobPos][jobPos][jobPos][jobPos]
    " - dat += "" + dat += "" for(var/jobPos in GLOB.science_positions) if(!jobPos) continue if(jobban_isbanned(M, jobPos)) - dat += "" + dat += "" counter++ else - dat += "" + dat += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -713,15 +713,15 @@ //Supply (Brown) counter = 0 dat += "
    Science Positions
    Science Positions
    [jobPos][jobPos][jobPos][jobPos]
    " - dat += "" + dat += "" for(var/jobPos in GLOB.supply_positions) if(!jobPos) continue if(jobban_isbanned(M, jobPos)) - dat += "" + dat += "" counter++ else - dat += "" + dat += "" counter++ if(counter >= 5) //So things dont get COPYPASTE! @@ -732,15 +732,15 @@ //Civilian (Grey) counter = 0 dat += "
    Supply Positions
    Supply Positions
    [jobPos][jobPos][jobPos][jobPos]
    " - dat += "" + dat += "" for(var/jobPos in GLOB.civilian_positions) if(!jobPos) continue if(jobban_isbanned(M, jobPos)) - dat += "" + dat += "" counter++ else - dat += "" + dat += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -751,15 +751,15 @@ //Non-Human (Green) counter = 0 dat += "
    Civilian Positions
    Civilian Positions
    [jobPos][jobPos][jobPos][jobPos]
    " - dat += "" + dat += "" for(var/jobPos in GLOB.nonhuman_positions) if(!jobPos) continue if(jobban_isbanned(M, jobPos)) - dat += "" + dat += "" counter++ else - dat += "" + dat += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -770,95 +770,95 @@ //Ghost Roles (light light gray) dat += "
    Non-human Positions
    Non-human Positions
    [jobPos][jobPos][jobPos][jobPos]
    " - dat += "" + dat += "" //pAI if(jobban_isbanned(M, "pAI")) - dat += "" + dat += "" else - dat += "" + dat += "" //Drones if(jobban_isbanned(M, "drone")) - dat += "" + dat += "" else - dat += "" + dat += "" //Positronic Brains if(jobban_isbanned(M, "posibrain")) - dat += "" + dat += "" else - dat += "" + dat += "" //Deathsquad if(jobban_isbanned(M, "deathsquad")) - dat += "" + dat += "" else - dat += "" + dat += "" //Lavaland roles if(jobban_isbanned(M, "lavaland")) - dat += "" + dat += "" else - dat += "" + dat += "" dat += "
    Ghost Roles
    Ghost Roles
    pAIpAIpAIpAIDroneDroneDroneDronePosibrainPosibrainPosibrainPosibrainDeathsquadDeathsquadDeathsquadDeathsquadLavalandLavalandLavalandLavaland
    " //Antagonist (Orange) var/isbanned_dept = jobban_isbanned(M, "Syndicate") dat += "" - dat += "" + dat += "" //Traitor if(jobban_isbanned(M, "traitor") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" //Changeling if(jobban_isbanned(M, "changeling") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" //Nuke Operative if(jobban_isbanned(M, "operative") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" //Revolutionary if(jobban_isbanned(M, "revolutionary") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" //Cultist if(jobban_isbanned(M, "cultist") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" //Servant of Ratvar if(jobban_isbanned(M, "servant of Ratvar") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" //Wizard if(jobban_isbanned(M, "wizard") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" //Abductor if(jobban_isbanned(M, "abductor") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" //Borer if(jobban_isbanned(M, "borer") || isbanned_dept) @@ -868,9 +868,9 @@ //Alien if(jobban_isbanned(M, "alien candidate") || isbanned_dept) - dat += "" + dat += "" else - dat += "" + dat += "" dat += "
    Antagonist Positions
    Antagonist Positions
    TraitorTraitorTraitorTraitorChangelingChangelingChangelingChangelingNuke OperativeNuke OperativeNuke OperativeNuke OperativeRevolutionaryRevolutionaryRevolutionaryRevolutionaryCultistCultistCultistCultistServantServantServantServantWizardWizardWizardWizardAbductorAbductorAbductorAbductorAlienAlienAlienAlien
    " usr << browse(dat, "window=jobban2;size=800x450") @@ -2283,9 +2283,9 @@ return alert(usr, "The game has already started.", null, null, null, null) var/dat = {"What mode do you wish to play?
    "} for(var/mode in config.modes) - dat += {"[config.mode_names[mode]]
    "} - dat += {"Secret
    "} - dat += {"Random
    "} + dat += {"[config.mode_names[mode]]
    "} + dat += {"Secret
    "} + dat += {"Random
    "} dat += {"Now: [GLOB.master_mode]"} usr << browse(dat, "window=c_mode") @@ -2299,7 +2299,7 @@ return alert(usr, "The game mode has to be secret!", null, null, null, null) var/dat = {"What game mode do you want to force secret to be? Use this if you want to change the game mode, but want the players to believe it's secret. This will only work if the current game mode is secret.
    "} for(var/mode in config.modes) - dat += {"[config.mode_names[mode]]
    "} - dat += {"Random (default)
    "} + dat += {"[config.mode_names[mode]]
    "} + dat += {"Random (default)
    "} dat += {"Now: [GLOB.secret_force_mode]"} usr << browse(dat, "window=f_secret") diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index 0842d82553..e091001851 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -121,7 +121,7 @@ /proc/SDQL_gen_vv_href(t) var/text = "" - text += "\ref[t]" + text += "[REF(t)]" if(istype(t, /atom)) var/atom/a = t var/turf/T = a.loc diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 0135bfbfa0..5aebd5ce94 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -83,7 +83,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) dat += "Refresh

    " for(var/I in l2b) var/datum/admin_help/AH = I - dat += "Ticket #[AH.id]: [AH.initiator_key_name]: [AH.name]
    " + dat += "Ticket #[AH.id]: [AH.initiator_key_name]: [AH.name]
    " usr << browse(dat.Join(), "window=ahelp_list[state];size=600x480") @@ -224,7 +224,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) //private /datum/admin_help/proc/FullMonty(ref_src) if(!ref_src) - ref_src = "\ref[src]" + ref_src = "[REF(src)]" . = ADMIN_FULLMONTY_NONAME(initiator.mob) if(state == AHELP_ACTIVE) . += ClosureLinks(ref_src) @@ -232,7 +232,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) //private /datum/admin_help/proc/ClosureLinks(ref_src) if(!ref_src) - ref_src = "\ref[src]" + ref_src = "[REF(src)]" . = " (REJT)" . += " (IC)" . += " (CLOSE)" @@ -242,19 +242,24 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) //private /datum/admin_help/proc/LinkedReplyName(ref_src) if(!ref_src) - ref_src = "\ref[src]" + ref_src = "[REF(src)]" return "[initiator_key_name]" //private /datum/admin_help/proc/TicketHref(msg, ref_src, action = "ticket") if(!ref_src) +<<<<<<< HEAD ref_src = "\ref[src]" return "[msg]" +======= + ref_src = "[REF(src)]" + return "[msg]" +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental //message from the initiator without a target, all admins will see this //won't bug irc /datum/admin_help/proc/MessageNoRecipient(msg) - var/ref_src = "\ref[src]" + var/ref_src = "[REF(src)]" //Message to be sent to all admins var/admin_msg = "Ticket [TicketHref("#[id]", ref_src)]: [LinkedReplyName(ref_src)] [FullMonty(ref_src)]: [keywords_lookup(msg)]" @@ -402,7 +407,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) //Show the ticket panel /datum/admin_help/proc/TicketPanel() var/list/dat = list("Ticket #[id]") - var/ref_src = "\ref[src]" + var/ref_src = "[REF(src)]" dat += "

    Admin Help Ticket #[id]: [LinkedReplyName(ref_src)]

    " dat += "State: " switch(state) @@ -700,7 +705,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(found.mind && found.mind.special_role) is_antag = 1 founds += "Name: [found.name]([found.real_name]) Ckey: [found.ckey] [is_antag ? "(Antag)" : null] " - msg += "[original_word](?|F) " + msg += "[original_word](?|F) " continue msg += "[original_word] " if(irc) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index ebb200e8e4..92e639ef27 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -117,7 +117,7 @@ GLOBAL_PROTECT(LastAdminCalledProc) to_chat(usr, "Running your proc") GLOB.LastAdminCalledProc = procname if(target != GLOBAL_PROC) - GLOB.LastAdminCalledTargetRef = "\ref[target]" + GLOB.LastAdminCalledTargetRef = "[REF(target)]" GLOB.AdminProcCaller = ckey //if this runtimes, too bad for you ++GLOB.AdminProcCallCount . = world.WrapAdminProcCall(target, procname, arguments) diff --git a/code/modules/admin/verbs/individual_logging.dm b/code/modules/admin/verbs/individual_logging.dm index cd3feed5d0..50b00da9a6 100644 --- a/code/modules/admin/verbs/individual_logging.dm +++ b/code/modules/admin/verbs/individual_logging.dm @@ -1,12 +1,12 @@ /proc/show_individual_logging_panel(mob/M, type = INDIVIDUAL_ATTACK_LOG) if(!M || !ismob(M)) return - var/dat = "
    Attack log | " - dat += "Say log | " - dat += "Emote log | " - dat += "OOC log | " - dat += "Show all | " - dat += "Refresh
    " + var/dat = "
    Attack log | " + dat += "Say log | " + dat += "Emote log | " + dat += "OOC log | " + dat += "Show all | " + dat += "Refresh
    " dat += "
    " diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index 9edf84800d..e4ea8e9b54 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -299,7 +299,7 @@ GLOBAL_PROTECT(VVpixelmovement) if (!lentext(shorttype)) shorttype = "/" - .["[D]([shorttype])\ref[D]#[i]"] = D + .["[D]([shorttype])[REF(D)]#[i]"] = D /client/proc/mod_list_add_ass(atom/O) //hehe diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 3021f9badd..f364cff61a 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -11,17 +11,17 @@ /datum/admins/proc/one_click_antag() var/dat = {" - Make Traitors
    - Make Changelings
    - Make Revs
    - Make Cult
    - Make Clockwork Cult
    - Make Blob
    - Make Wizard (Requires Ghosts)
    - Make Nuke Team (Requires Ghosts)
    - Make CentCom Response Team (Requires Ghosts)
    - Make Abductor Team (Requires Ghosts)
    - Make Revenant (Requires Ghost)
    + Make Traitors
    + Make Changelings
    + Make Revs
    + Make Cult
    + Make Clockwork Cult
    + Make Blob
    + Make Wizard (Requires Ghosts)
    + Make Nuke Team (Requires Ghosts)
    + Make CentCom Response Team (Requires Ghosts)
    + Make Abductor Team (Requires Ghosts)
    + Make Revenant (Requires Ghost)
    "} var/datum/browser/popup = new(usr, "oneclickantag", "Quick-Create Antagonist", 400, 400) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 74cbc14eab..84b23eafa9 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -848,8 +848,8 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits var/dat = {" Create Outfit - - + + [HrefTokenFormField()] @@ -1150,8 +1150,8 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits /datum/admins/proc/modify_goals() var/dat = "" for(var/datum/station_goal/S in SSticker.mode.station_goals) - dat += "[S.name] - Announce | Remove
    " - dat += "
    Add New Goal" + dat += "[S.name] - Announce | Remove
    " + dat += "
    Add New Goal" usr << browse(dat, "window=goals;size=400x400") @@ -1225,7 +1225,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits var/list/msg = list() msg += "Playtime ReportPlaytime:
    " src << browse(msg.Join(), "window=Player_playtime_check") @@ -1239,7 +1239,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits var/list/body = list() body += "Playtime for [C.key]
    Playtime:" body += C.get_exp_report() - body += "Toggle Exempt status" + body += "Toggle Exempt status" body += "" usr << browse(body.Join(), "window=playerplaytime[C.ckey];size=550x615") diff --git a/code/modules/assembly/health.dm b/code/modules/assembly/health.dm index 61eee593fa..8ff54b7a0a 100644 --- a/code/modules/assembly/health.dm +++ b/code/modules/assembly/health.dm @@ -78,7 +78,7 @@ if(!secured) user.show_message("The [name] is unsecured!") return 0 - var/dat = "Health Sensor [scanning?"On":"Off"]" + var/dat = "Health Sensor [scanning?"On":"Off"]" if(scanning && health_scan) dat += "
    Health: [health_scan]" user << browse(dat, "window=hscan") diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index c196e984a2..14286b376c 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -105,9 +105,9 @@ /obj/item/device/assembly/infra/interact(mob/user)//TODO: change this this to the wire control panel if(is_secured(user)) user.set_machine(src) - var/dat = "Infrared Laser\nStatus: [on ? "On" : "Off"]
    \nVisibility: [visible ? "Visible" : "Invisible"]
    \n
    " - dat += "

    Refresh" - dat += "

    Close" + var/dat = "Infrared Laser\nStatus: [on ? "On" : "Off"]
    \nVisibility: [visible ? "Visible" : "Invisible"]
    \n
    " + dat += "

    Refresh" + dat += "

    Close" user << browse(dat, "window=infra") onclose(user, "infra") return diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index 556979070d..c8bcb5a258 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -98,11 +98,11 @@ if(is_secured(user)) var/second = time % 60 var/minute = (time - second) / 60 - var/dat = "Proximity Sensor\n[(timing ? "Arming" : "Not Arming")] [minute]:[second]\n- - + +\n" - dat += "
    Armed":"1'>Unarmed"] (Movement sensor active when armed!)" - dat += "
    Detection range: - [sensitivity] +" - dat += "

    Refresh" - dat += "

    Close" + var/dat = "Proximity Sensor\n[(timing ? "Arming" : "Not Arming")] [minute]:[second]\n- - + +\n" + dat += "
    Armed":"1'>Unarmed"] (Movement sensor active when armed!)" + dat += "
    Detection range: - [sensitivity] +" + dat += "

    Refresh" + dat += "

    Close" user << browse(dat, "window=prox") onclose(user, "prox") return diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index ecb05c17d0..0b35304620 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -40,27 +40,27 @@ if(is_secured(user)) var/t1 = "-------" // if ((src.b_stat && !( flag1 ))) - // t1 = text("-------
    \nGreen Wire: []
    \nRed Wire: []
    \nBlue Wire: []
    \n", (src.wires & 4 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 2 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 1 ? text("Cut Wire", src) : text("Mend Wire", src))) + // t1 = text("-------
    \nGreen Wire: []
    \nRed Wire: []
    \nBlue Wire: []
    \n", (src.wires & 4 ? "Cut Wire" : "Mend Wire"), (src.wires & 2 ? "Cut Wire" : "Mend Wire"), (src.wires & 1 ? "Cut Wire" : "Mend Wire")) // else - // t1 = "-------" Speaker: [src.listening ? "Engaged" : "Disengaged"]
    + // t1 = "-------" Speaker: [src.listening ? "Engaged" : "Disengaged"]
    var/dat = {" -Send Signal
    +Send Signal
    Frequency/Code for signaler:
    Frequency: -- -- +- +- [format_frequency(src.frequency)] -+ -+
    ++ ++
    Code: -- -- +- +- [src.code] -+ -+
    ++ ++
    [t1]
    "} user << browse(dat, "window=radio") diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index 9a959bc544..30a1ee71d3 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -74,10 +74,10 @@ if(is_secured(user)) var/second = time % 60 var/minute = (time - second) / 60 - var/dat = "Timing Unit\n[(timing ? "Timing" : "Not Timing")] [minute]:[second]\n- - + +\n" - dat += "

    Stop repeating" : "1'>Set to repeat")]" - dat += "

    Refresh" - dat += "

    Close" + var/dat = "Timing Unit\n[(timing ? "Timing" : "Not Timing")] [minute]:[second]\n- - + +\n" + dat += "

    Stop repeating" : "1'>Set to repeat")]" + dat += "

    Refresh" + dat += "

    Close" var/datum/browser/popup = new(user, "timer", name) popup.set_content(dat) popup.open() diff --git a/code/modules/awaymissions/bluespaceartillery.dm b/code/modules/awaymissions/bluespaceartillery.dm index 3878619418..d98be456ff 100644 --- a/code/modules/awaymissions/bluespaceartillery.dm +++ b/code/modules/awaymissions/bluespaceartillery.dm @@ -30,7 +30,7 @@ var/dat = "Bluespace Artillery Control:
    " dat += "Locked on
    " dat += "Charge progress: [reload]/[reload_cooldown]:
    " - dat += "Open Fire
    " + dat += "Open Fire
    " dat += "Deployment of weapon authorized by
    Nanotrasen Naval Command

    Remember, friendly fire is grounds for termination of your contract and life.
    " user << browse(dat, "window=scroll") onclose(user, "scroll") diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index 0307a6b58e..8b640676ba 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -309,7 +309,7 @@ dead_barricades.Cut() - notify_ghosts("[name] has been activated!", enter_link="(Click to join the [team] team!) or click on the controller directly!", source = src, action=NOTIFY_ATTACK) + notify_ghosts("[name] has been activated!", enter_link="(Click to join the [team] team!) or click on the controller directly!", source = src, action=NOTIFY_ATTACK) if(!arena_reset) reset_the_arena() diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 58c568f8a6..e8e643595d 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -164,7 +164,7 @@ M.visible_message("[M]'s [name] starts to fall apart!", "Your [name] starts to fall apart!") /obj/item/clothing/proc/update_clothes_damaged_state(damaging = TRUE) - var/index = "\ref[initial(icon)]-[initial(icon_state)]" + var/index = "[REF(initial(icon))]-[initial(icon_state)]" var/static/list/damaged_clothes_icons = list() if(damaging) damaged_clothes = 1 diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm index d25408efa0..7ff0bf78be 100644 --- a/code/modules/crafting/craft.dm +++ b/code/modules/crafting/craft.dm @@ -381,7 +381,7 @@ /datum/personal_crafting/proc/build_recipe_data(datum/crafting_recipe/R) var/list/data = list() data["name"] = R.name - data["ref"] = "\ref[R]" + data["ref"] = "[REF(R)]" var/req_text = "" var/tool_text = "" var/catalyst_text = "" diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm index 2e7874347b..e94c40a0c7 100644 --- a/code/modules/detectivework/scanner.dm +++ b/code/modules/detectivework/scanner.dm @@ -168,7 +168,7 @@ to_chat(M, msg) log += "  [msg]" else - CRASH("[src] \ref[src] is adding a log when it was never put in scanning mode!") + CRASH("[src] [REF(src)] is adding a log when it was never put in scanning mode!") /proc/get_timestamp() return time2text(world.time + 432000, ":ss") diff --git a/code/modules/error_handler/error_viewer.dm b/code/modules/error_handler/error_viewer.dm index b19153956f..7d10488c68 100644 --- a/code/modules/error_handler/error_viewer.dm +++ b/code/modules/error_handler/error_viewer.dm @@ -66,12 +66,12 @@ GLOBAL_DATUM(error_cache, /datum/error_viewer/error_cache) linktext = name if (istype(back_to)) - back_to_param = ";viewruntime_backto=\ref[back_to]" + back_to_param = ";viewruntime_backto=[REF(back_to)]" if (linear) back_to_param += ";viewruntime_linear=1" - return "[linktext]" + return "[linktext]" /datum/error_viewer/error_cache var/list/errors = list() @@ -172,7 +172,7 @@ GLOBAL_DATUM(error_cache, /datum/error_viewer/error_cache) desc += "[html_encode(line)]
    " if (usr) - usr_ref = "\ref[usr]" + usr_ref = "[REF(usr)]" usr_loc = get_turf(usr) /datum/error_viewer/error_entry/show_to(user, datum/error_viewer/back_to, linear) @@ -186,7 +186,7 @@ GLOBAL_DATUM(error_cache, /datum/error_viewer/error_cache) html += " PP" html += " Follow" if (istype(usr_loc)) - html += "
    usr.loc: VV" + html += "
    usr.loc: VV" html += " JMP" browse_to(user, html) diff --git a/code/modules/events/_event.dm b/code/modules/events/_event.dm index 8b2c85d4e3..daf7643ff3 100644 --- a/code/modules/events/_event.dm +++ b/code/modules/events/_event.dm @@ -60,7 +60,7 @@ triggering = TRUE if (alertadmins) - message_admins("Random Event triggering in 10 seconds: [name] ([typepath]) (CANCEL)") + message_admins("Random Event triggering in 10 seconds: [name] ([typepath]) (CANCEL)") sleep(100) var/gamemode = SSticker.mode.config_tag var/players_amt = get_active_player_count(alive_check = TRUE, afk_check = TRUE, human_check = TRUE) diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm index 4cd718070b..b009e0ca59 100644 --- a/code/modules/events/immovable_rod.dm +++ b/code/modules/events/immovable_rod.dm @@ -44,7 +44,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 destination = end if(notify) notify_ghosts("\A [src] is inbound!", - enter_link="(Click to orbit)", + enter_link="(Click to orbit)", source=src, action=NOTIFY_ORBIT) GLOB.poi_list += src if(end && end.z==z_original) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index db7028411c..d55470e633 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -390,7 +390,7 @@ /datum/spacevine_controller/vv_get_dropdown() . = ..() . += "---" - .["Delete Vines"] = "?_src_=\ref[src];[HrefToken()];purge_vines=1" + .["Delete Vines"] = "?_src_=[REF(src)];[HrefToken()];purge_vines=1" /datum/spacevine_controller/Topic(href, href_list) if(..() || !check_rights(R_ADMIN, FALSE) || !usr.client.holder.CheckAdminHref(href, href_list)) diff --git a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm index 8b91e6838c..765b5ff891 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm @@ -37,25 +37,25 @@ var/dat dat += "
    STORED INGREDIENTS AND DRINKS
    " dat += "Remaining glasses: [glasses]
    " - dat += "Portion: [portion]
    " + dat += "Portion: [portion]
    " for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume] " - dat += "Purge" + dat += "Purge" if (glasses > 0) - dat += "Pour in a glass" - dat += "Add to the mixer
    " + dat += "Pour in a glass" + dat += "Add to the mixer
    " dat += "

    MIXER CONTENTS
    " for(var/datum/reagent/R in mixer.reagents.reagent_list) dat += "[R.name]: [R.volume] " - dat += "Transfer back" + dat += "Transfer back" if (glasses > 0) - dat += "Pour in a glass" + dat += "Pour in a glass" dat += "
    " dat += "

    STORED FOOD
    " for(var/V in stored_food) if(stored_food[V] > 0) - dat += "[V]: [stored_food[V]] Dispense
    " - dat += "

    Refresh Close" + dat += "[V]: [stored_food[V]] Dispense
    " + dat += "
    Refresh Close" var/datum/browser/popup = new(user, "foodcart","Food Cart", 500, 350, src) popup.set_content(dat) diff --git a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm index 845f10896e..1b00de1842 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm @@ -77,19 +77,19 @@ var/dat dat += "ICE CREAM
    " dat += "Dispensing: [flavour_name] icecream

    " - dat += "Vanilla ice cream: Select Make x5 [product_types[ICECREAM_VANILLA]] scoops left. (Ingredients: milk, ice)
    " - dat += "Strawberry ice cream: Select Make x5 [product_types[ICECREAM_STRAWBERRY]] dollops left. (Ingredients: milk, ice, berry juice)
    " - dat += "Chocolate ice cream: Select Make x5 [product_types[ICECREAM_CHOCOLATE]] dollops left. (Ingredients: milk, ice, coco powder)
    " - dat += "Blue ice cream: Select Make x5 [product_types[ICECREAM_BLUE]] dollops left. (Ingredients: milk, ice, singulo)
    " + dat += "Vanilla ice cream: Select Make x5 [product_types[ICECREAM_VANILLA]] scoops left. (Ingredients: milk, ice)
    " + dat += "Strawberry ice cream: Select Make x5 [product_types[ICECREAM_STRAWBERRY]] dollops left. (Ingredients: milk, ice, berry juice)
    " + dat += "Chocolate ice cream: Select Make x5 [product_types[ICECREAM_CHOCOLATE]] dollops left. (Ingredients: milk, ice, coco powder)
    " + dat += "Blue ice cream: Select Make x5 [product_types[ICECREAM_BLUE]] dollops left. (Ingredients: milk, ice, singulo)
    " dat += "
    CONES
    " - dat += "Waffle cones: Dispense Make x5 [product_types[CONE_WAFFLE]] cones left. (Ingredients: flour, sugar)
    " - dat += "Chocolate cones: Dispense Make x5 [product_types[CONE_CHOC]] cones left. (Ingredients: flour, sugar, coco powder)
    " + dat += "Waffle cones: Dispense Make x5 [product_types[CONE_WAFFLE]] cones left. (Ingredients: flour, sugar)
    " + dat += "Chocolate cones: Dispense Make x5 [product_types[CONE_CHOC]] cones left. (Ingredients: flour, sugar, coco powder)
    " dat += "
    " dat += "VAT CONTENT
    " for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume]" - dat += "Purge
    " - dat += "Refresh Close" + dat += "Purge
    " + dat += "Refresh Close" var/datum/browser/popup = new(user, "icecreamvat","Icecream Vat", 700, 500, src) popup.set_content(dat) diff --git a/code/modules/food_and_drinks/kitchen_machinery/juicer.dm b/code/modules/food_and_drinks/kitchen_machinery/juicer.dm index a24263bfa6..0e6a7e9034 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/juicer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/juicer.dm @@ -105,9 +105,9 @@ [beaker_contents]
    "} if (is_beaker_ready && !is_chamber_empty && !(stat & (NOPOWER|BROKEN))) - dat += "Turn on!
    " + dat += "
    Turn on!
    " if (beaker) - dat += "
    Detach the container!
    " + dat += "
    Detach the container!
    " user << browse("Juicer[dat]", "window=juicer") onclose(user, "juicer") return diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index fd2471b96e..e68832e4c0 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -197,8 +197,8 @@ dat += "The microwave is empty." else dat = "

    Ingredients:

    [dat]" - dat += "
    Turn on" - dat += "Eject ingredients
    " + dat += "Turn on" + dat += "Eject ingredients
    " var/datum/browser/popup = new(user, "microwave", name, 300, 300) popup.set_content(dat) diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm index a041e1d8eb..89f6316297 100644 --- a/code/modules/games/cards.dm +++ b/code/modules/games/cards.dm @@ -218,9 +218,9 @@ /obj/item/hand/proc/update_conceal() if (src.concealed) - src.hi.updateContent("headbar", "You are currently concealing your hand. Reveal your hand.") + src.hi.updateContent("headbar", "You are currently concealing your hand. Reveal your hand.") else - src.hi.updateContent("headbar", "You are currently revealing your hand. Conceal your hand.") + src.hi.updateContent("headbar", "You are currently revealing your hand. Conceal your hand.") /obj/item/hand/update_icon() if (!cards.len) @@ -260,7 +260,7 @@ var/html = "" for(var/datum/playingcard/card in cards) - html = html + "" + html = html + "" src.hi.updateContent("hand", html) diff --git a/code/modules/html_interface/html_interface.dm b/code/modules/html_interface/html_interface.dm index e53d67b364..a8b48079fa 100644 --- a/code/modules/html_interface/html_interface.dm +++ b/code/modules/html_interface/html_interface.dm @@ -149,20 +149,20 @@ GLOBAL_LIST_EMPTY(html_interfaces) asset_list[type] = assetlist /datum/html_interface/proc/createWindow(datum/html_interface_client/hclient) - winclone(hclient.client, "window", "browser_\ref[src]") + winclone(hclient.client, "window", "browser_[REF(src)]") var/list/params = list( "size" = "[width]x[height]", "statusbar" = "false", - "on-close" = "byond://?src=\ref[src]&html_interface_action=onclose" + "on-close" = "byond://?src=[REF(src)]&html_interface_action=onclose" ) if (hclient.client.hi_last_pos) params["pos"] = "[hclient.client.hi_last_pos]" - winset(hclient.client, "browser_\ref[src]", list2params(params)) + winset(hclient.client, "browser_[REF(src)]", list2params(params)) - winset(hclient.client, "browser_\ref[src].browser", list2params(list("parent" = "browser_\ref[src]", "type" = "browser", "pos" = "0,0", "size" = "[width]x[height]", "anchor1" = "0,0", "anchor2" = "100,100", "use-title" = "true", "auto-format" = "false"))) + winset(hclient.client, "browser_[REF(src)].browser", list2params(list("parent" = "browser_[REF(src)]", "type" = "browser", "pos" = "0,0", "size" = "[width]x[height]", "anchor1" = "0,0", "anchor2" = "100,100", "use-title" = "true", "auto-format" = "false"))) /* * Public API */ /datum/html_interface/proc/getTitle() @@ -185,7 +185,7 @@ GLOBAL_LIST_EMPTY(html_interfaces) if (istype(hclient)) if (hclient.is_loaded) - hclient.client << output(list2params(list(jscript)), "browser_\ref[src].browser:eval") + hclient.client << output(list2params(list(jscript)), "browser_[REF(src)].browser:eval") else for (var/client in src.clients) if(src.clients[client]) @@ -200,7 +200,7 @@ GLOBAL_LIST_EMPTY(html_interfaces) if (istype(hclient)) if (hclient.is_loaded) - hclient.client << output(list2params(arguments), "browser_\ref[src].browser:[func]") + hclient.client << output(list2params(arguments), "browser_[REF(src)].browser:[func]") else for (var/client in src.clients) if (src.clients[client]) @@ -235,15 +235,15 @@ GLOBAL_LIST_EMPTY(html_interfaces) if ((type in asset_list) && islist(asset_list[type])) send_asset_list(hclient.client, asset_list[type], TRUE) - if (!winexists(hclient.client, "browser_\ref[src]")) + if (!winexists(hclient.client, "browser_[REF(src)]")) src.createWindow(hclient) //src._renderTitle(hclient, TRUE) //src._renderLayout(hclient) hclient.is_loaded = FALSE - hclient.client << output(replacetextEx(replacetextEx(file2text('html_interface.html'), "\[hsrc\]", "\ref[src]"), "", "[head]"), "browser_\ref[src].browser") + hclient.client << output(replacetextEx(replacetextEx(file2text('html_interface.html'), "\[hsrc\]", "[REF(src)]"), "", "[head]"), "browser_[REF(src)].browser") - winshow(hclient.client, "browser_\ref[src]", TRUE) + winshow(hclient.client, "browser_[REF(src)]", TRUE) while (hclient.client && hclient.active && !hclient.is_loaded) sleep(2) @@ -258,10 +258,10 @@ GLOBAL_LIST_EMPTY(html_interfaces) if (!src.clients.len) src.clients = null - hclient.client.hi_last_pos = winget(hclient.client, "browser_\ref[src]" ,"pos") + hclient.client.hi_last_pos = winget(hclient.client, "browser_[REF(src)]" ,"pos") - winshow(hclient.client, "browser_\ref[src]", FALSE) - winset(hclient.client, "browser_\ref[src]", "parent=none") + winshow(hclient.client, "browser_[REF(src)]", FALSE) + winset(hclient.client, "browser_[REF(src)]", "parent=none") if (hascall(src.ref, "hiOnHide")) call(src.ref, "hiOnHide")(hclient) @@ -344,7 +344,7 @@ GLOBAL_LIST_EMPTY(html_interfaces) src.specificRenderTitle(hclient) - hclient.client << output(list2params(list(title)), "browser_\ref[src].browser:setTitle") + hclient.client << output(list2params(list(title)), "browser_[REF(src)].browser:setTitle") /datum/html_interface/proc/_renderLayout(datum/html_interface_client/hclient, ignore_loaded = FALSE) if (hclient && (ignore_loaded || hclient.is_loaded)) @@ -354,7 +354,7 @@ GLOBAL_LIST_EMPTY(html_interfaces) if (html != hclient.layout) hclient.layout = html - hclient.client << output(list2params(list(html)), "browser_\ref[src].browser:updateLayout") + hclient.client << output(list2params(list(html)), "browser_[REF(src)].browser:updateLayout") for (var/id in src.content_elements) src._renderContent(id, hclient, ignore_loaded = ignore_loaded) @@ -367,7 +367,7 @@ GLOBAL_LIST_EMPTY(html_interfaces) if (ignore_cache || !(id in hclient.content_elements) || html != hclient.content_elements[id]) hclient.content_elements[id] = html - hclient.client << output(list2params(list(id, html)), "browser_\ref[src].browser:updateContent") + hclient.client << output(list2params(list(id, html)), "browser_[REF(src)].browser:updateContent") /datum/html_interface/Topic(href, href_list[]) var/datum/html_interface_client/hclient = getClient(usr.client) diff --git a/code/modules/html_interface/nanotrasen/nanotrasen.dm b/code/modules/html_interface/nanotrasen/nanotrasen.dm index c9758d85ce..ac7a7f242f 100644 --- a/code/modules/html_interface/nanotrasen/nanotrasen.dm +++ b/code/modules/html_interface/nanotrasen/nanotrasen.dm @@ -27,7 +27,7 @@ The client is optional and may be a /mob, /client or /html_interface_client obje /datum/html_interface/specificRenderTitle(datum/html_interface_client/hclient, ignore_cache = FALSE) // Update the title in our custom header (in addition to default functionality) - winset(hclient.client, "browser_\ref[src].uiTitle", list2params(list("text" = "[src.title]"))) + winset(hclient.client, "browser_[REF(src)].uiTitle", list2params(list("text" = "[src.title]"))) /datum/html_interface/nanotrasen/registerResources(var/list/resources = list()) resources["uiBg.png"] = 'uiBg.png' @@ -39,19 +39,19 @@ The client is optional and may be a /mob, /client or /html_interface_client obje . = ..() // we want the default window // Remove the titlebar - winset(hclient.client, "browser_\ref[src]", list2params(list( + winset(hclient.client, "browser_[REF(src)]", list2params(list( "titlebar" = "false" ))) // Reposition the browser - winset(hclient.client, "browser_\ref[src].browser", list2params(list( + winset(hclient.client, "browser_[REF(src)].browser", list2params(list( "pos" = "0,35", "size" = "[width]x[height - 35]" ))) // Add top background image - winset(hclient.client, "browser_\ref[src].topbg", list2params(list( - "parent" = "browser_\ref[src]", + winset(hclient.client, "browser_[REF(src)].topbg", list2params(list( + "parent" = "browser_[REF(src)]", "type" = "label", "pos" = "0,0", "size" = "[width]x35", @@ -63,8 +63,8 @@ The client is optional and may be a /mob, /client or /html_interface_client obje ))) // Add Nanotrasen logo - winset(hclient.client, "browser_\ref[src].uiTitleFluff", list2params(list( - "parent" = "browser_\ref[src]", + winset(hclient.client, "browser_[REF(src)].uiTitleFluff", list2params(list( + "parent" = "browser_[REF(src)]", "type" = "label", "pos" = "[width - 42 - 4 - 24 - 4 - 24 - 4],5", "size" = "42x24", @@ -76,8 +76,8 @@ The client is optional and may be a /mob, /client or /html_interface_client obje ))) // Add Eye picture - winset(hclient.client, "browser_\ref[src].uiTitleEye", list2params(list( - "parent" = "browser_\ref[src]", + winset(hclient.client, "browser_[REF(src)].uiTitleEye", list2params(list( + "parent" = "browser_[REF(src)]", "type" = "label", "pos" = "8,5", "size" = "42x24", @@ -89,8 +89,8 @@ The client is optional and may be a /mob, /client or /html_interface_client obje ))) // Add title text - winset(hclient.client, "browser_\ref[src].uiTitle", list2params(list( - "parent" = "browser_\ref[src]", + winset(hclient.client, "browser_[REF(src)].uiTitle", list2params(list( + "parent" = "browser_[REF(src)]", "type" = "label", "is-transparent" = "true", "pos" = "64,0", @@ -107,8 +107,8 @@ The client is optional and may be a /mob, /client or /html_interface_client obje // Add minimize button // TODO: Style the button (add image) - winset(hclient.client, "browser_\ref[src].uiTitleMinimize", list2params(list( - "parent" = "browser_\ref[src]", + winset(hclient.client, "browser_[REF(src)].uiTitleMinimize", list2params(list( + "parent" = "browser_[REF(src)]", "type" = "button", "is-flat" = "true", "background-color"="#383838", // should be unnecessary if image is used @@ -123,18 +123,18 @@ The client is optional and may be a /mob, /client or /html_interface_client obje "font-size" = "12", // ~ 16px - should be unnecessary if image is used // Disable resizing (disables maximizing), minimize window, bind window.on-size to catch 'restore window' button to enable resizing if restored. - "command" = ".winset \"browser_\ref[src].can-resize=false;browser_\ref[src].is-minimized=true;browser_\ref[src].on-size=\".swinset \\\"browser_\ref[src].can-resize=true;browser_\ref[src].on-size=\\\"\"\"" + "command" = ".winset \"browser_[REF(src)].can-resize=false;browser_[REF(src)].is-minimized=true;browser_[REF(src)].on-size=\".swinset \\\"browser_[REF(src)].can-resize=true;browser_[REF(src)].on-size=\\\"\"\"" ))) // Add close button // TODO: Style the button (add image) - winset(hclient.client, "browser_\ref[src].uiTitleClose", list2params(list( - "parent" = "browser_\ref[src]", + winset(hclient.client, "browser_[REF(src)].uiTitleClose", list2params(list( + "parent" = "browser_[REF(src)]", "type" = "button", "is-flat" = "true", "background-color"="#383838", // should be unnecessary if image is used "text-color" = "#FFFFFF", // should be unnecessary if image is used - "command" = "byond://?src=\ref[src];html_interface_action=onclose", + "command" = "byond://?src=[REF(src)];html_interface_action=onclose", "is-transparent" = "true", "pos" = "[width - 24 - 4],5", "size" = "24x24", @@ -173,6 +173,6 @@ The client is optional and may be a /mob, /client or /html_interface_client obje if (hclient.getExtraVar("eye_color") != color) hclient.putExtraVar("eye_color", color) - winset(hclient.client, "browser_\ref[src].uiTitleEye", list2params(list("image" = "[resource]"))) + winset(hclient.client, "browser_[REF(src)].uiTitleEye", list2params(list("image" = "[resource]"))) else WARNING("Invalid object passed to /datum/html_interface/nanotrasen/proc/setEyeColor") \ No newline at end of file diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index 1535173f8d..d46875eb00 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -183,17 +183,17 @@ categories[C] += D dat += "
    Biomass: [points] units.

    " - dat += "ActivateDetach Container" + dat += "ActivateDetach Container" for(var/cat in categories) dat += "

    [cat]:

    " dat += "
    " for(var/V in categories[cat]) var/datum/design/D = V - dat += "[D.name]: Make" + dat += "[D.name]: Make" if(cat in timesFiveCategories) - dat += "x5" + dat += "x5" if(ispath(D.build_path, /obj/item/stack)) - dat += "x10" + dat += "x10" dat += "([D.materials[MAT_BIOMASS]/efficiency])
    " dat += "
    " else diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index 9235bb83d7..bd0215138a 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -171,19 +171,19 @@ dat += "[target.get_name()] gene with [disk.gene.get_name()]?
    " if("insert") dat += "[disk.gene.get_name()] gene into \the [seed]?
    " - dat += "
    Confirm " - dat += "Abort
    " + dat += "
    Confirm " + dat += "Abort
    " popup.set_content(dat) popup.open() return dat+= "
    " dat += "
    [G.get_name()]" if(can_extract) - dat += "Extract" + dat += "Extract" if(can_insert && istype(disk.gene, G.type)) - dat += "Replace" + dat += "Replace" dat += "
    " @@ -221,15 +221,15 @@ var/datum/plant_gene/G = a dat += "[G.get_name()]" if(can_extract) - dat += "Extract" - dat += "Remove" + dat += "Extract" + dat += "Remove" dat += "" dat += "" else dat += "No content-related genes detected in sample.
    " dat += "" if(can_insert && istype(disk.gene, /datum/plant_gene/reagent)) - dat += "Insert: [disk.gene.get_name()]" + dat += "Insert: [disk.gene.get_name()]" dat += "

    Trait Genes

    " if(trait_genes.len) @@ -238,14 +238,14 @@ var/datum/plant_gene/G = a dat += "[G.get_name()]" if(can_extract) - dat += "Extract" - dat += "Remove" + dat += "Extract" + dat += "Remove" dat += "" dat += "" else dat += "No trait-related genes detected in sample.
    " if(can_insert && istype(disk.gene, /datum/plant_gene/trait)) - dat += "Insert: [disk.gene.get_name()]" + dat += "Insert: [disk.gene.get_name()]" dat += "
    " else dat += "
    No sample found.
    Please, insert a plant sample to use this device." diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index 54805f3141..0899a21132 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -136,7 +136,7 @@ for (var/datum/seed_pile/O in piles) dat += "[O.name][O.lifespan][O.endurance][O.maturation]" dat += "[O.production][O.yield][O.potency]" - dat += "Vend ([O.amount] left)" + dat += "Vend ([O.amount] left)" dat += "" var/datum/browser/popup = new(user, "seed_ext", name, 700, 400) popup.set_content(dat) diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 081ecdcdaa..fb55a0565b 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -39,10 +39,10 @@ switch(screenstate) if(0) dat += "

    Search Settings


    " - dat += "Filter by Title: [title]
    " - dat += "Filter by Category: [category]
    " - dat += "Filter by Author: [author]
    " - dat += "\[Start Search\]
    " + dat += "Filter by Title: [title]
    " + dat += "Filter by Category: [category]
    " + dat += "Filter by Author: [author]
    " + dat += "\[Start Search\]
    " if(1) if (!SSdbcore.Connect()) dat += "ERROR: Unable to contact External Archive. Please contact your system administrator for assistance.
    " @@ -62,7 +62,7 @@ var/id = query_library_list_books.item[4] dat += "[author][title][category][id]" dat += "
    " - dat += "\[Go Back\]
    " + dat += "\[Go Back\]
    " var/datum/browser/popup = new(user, "publiclibrary", name, 600, 400) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) @@ -193,7 +193,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums if (libcomp_menu.len < page) libcomp_menu.len = page libcomp_menu[page] = "" - libcomp_menu[page] += "[C.author][C.title][C.category]\[Order\]\n" + libcomp_menu[page] += "[C.author][C.title][C.category]\[Order\]\n" /obj/machinery/computer/libraryconsole/bookmanagement/Initialize() . = ..() @@ -207,15 +207,15 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums switch(screenstate) if(0) // Main Menu - dat += "1. View General Inventory
    " - dat += "2. View Checked Out Inventory
    " - dat += "3. Check out a Book
    " - dat += "4. Connect to External Archive
    " - dat += "5. Upload New Title to Archive
    " - dat += "6. Upload Scanned Title to Newscaster
    " - dat += "7. Print Corporate Materials
    " + dat += "1. View General Inventory
    " + dat += "2. View Checked Out Inventory
    " + dat += "3. Check out a Book
    " + dat += "4. Connect to External Archive
    " + dat += "5. Upload New Title to Archive
    " + dat += "6. Upload Scanned Title to Newscaster
    " + dat += "7. Print Corporate Materials
    " if(src.emagged) - dat += "8. Access the Forbidden Lore Vault
    " + dat += "8. Access the Forbidden Lore Vault
    " if(src.arcanecheckout) print_forbidden_lore(user) src.arcanecheckout = 0 @@ -223,8 +223,8 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums // Inventory dat += "

    Inventory


    " for(var/obj/item/book/b in inventory) - dat += "[b.name] (Delete)
    " - dat += "(Return to main menu)
    " + dat += "[b.name] (Delete)
    " + dat += "(Return to main menu)
    " if(2) // Checked Out dat += "

    Checked Out Books


    " @@ -241,20 +241,20 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums else timedue = round(timedue) dat += "\"[b.bookname]\", Checked out to: [b.mobname]
    --- Taken: [timetaken] minutes ago, Due: in [timedue] minutes
    " - dat += "(Check In)

    " - dat += "(Return to main menu)
    " + dat += "(Check In)

    " + dat += "(Return to main menu)
    " if(3) // Check Out a Book dat += "

    Check Out a Book


    " dat += "Book: [src.buffer_book] " - dat += "\[Edit\]
    " + dat += "\[Edit\]
    " dat += "Recipient: [src.buffer_mob] " - dat += "\[Edit\]
    " + dat += "\[Edit\]
    " dat += "Checkout Date : [world.time/600]
    " dat += "Due Date: [(world.time + checkoutperiod)/600]
    " - dat += "(Checkout Period: [checkoutperiod] minutes) (+/-)" - dat += "(Commit Entry)
    " - dat += "(Return to main menu)
    " + dat += "(Checkout Period: [checkoutperiod] minutes) (+/-)" + dat += "(Commit Entry)
    " + dat += "(Return to main menu)
    " if(4) dat += "

    External Archive

    " build_library_menu() @@ -262,13 +262,13 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums if(!GLOB.cachedbooks) dat += "ERROR: Unable to contact External Archive. Please contact your system administrator for assistance." else - dat += "(Order book by SS13BN)

    " + dat += "(Order book by SS13BN)

    " dat += "" dat += "" dat += libcomp_menu[Clamp(page,1,libcomp_menu.len)] - dat += "" + dat += "" dat += "
    AUTHORTITLECATEGORY
    <<<< >>>>
    <<<< >>>>
    " - dat += "
    (Return to main menu)
    " + dat += "
    (Return to main menu)
    " if(5) dat += "

    Upload a New Title

    " if(!scanner) @@ -282,10 +282,10 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums dat += "Title: [scanner.cache.name]
    " if(!scanner.cache.author) scanner.cache.author = "Anonymous" - dat += "Author: [scanner.cache.author]
    " - dat += "Category: [upload_category]
    " - dat += "\[Upload\]
    " - dat += "(Return to main menu)
    " + dat += "Author: [scanner.cache.author]
    " + dat += "Category: [upload_category]
    " + dat += "\[Upload\]
    " + dat += "(Return to main menu)
    " if(6) dat += "

    Post Title to Newscaster

    " if(!scanner) @@ -296,19 +296,19 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums dat += "No data found in scanner memory.
    " else dat += "Post [scanner.cache.name] to station newscasters?" - dat += "\[Post\]
    " - dat += "(Return to main menu)
    " + dat += "\[Post\]
    " + dat += "(Return to main menu)
    " if(7) dat += "

    NTGanda(tm) Universal Printing Module

    " dat += "What would you like to print?
    " - dat += "\[Bible\]
    " - dat += "\[Poster\]
    " - dat += "(Return to main menu)
    " + dat += "\[Bible\]
    " + dat += "\[Poster\]
    " + dat += "(Return to main menu)
    " if(8) dat += "

    Accessing Forbidden Lore Vault v 1.3

    " dat += "Are you absolutely sure you want to proceed? EldritchTomes Inc. takes no responsibilities for loss of sanity resulting from this action.

    " - dat += "Yes.
    " - dat += "No.
    " + dat += "Yes.
    " + dat += "No.
    " var/datum/browser/popup = new(user, "library", name, 600, 400) popup.set_content(dat) @@ -519,9 +519,9 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums dat += "Data stored in memory.
    " else dat += "No data stored in memory.
    " - dat += "\[Scan\]" + dat += "\[Scan\]" if(cache) - dat += " \[Clear Memory\]

    \[Remove Book\]" + dat += " \[Clear Memory\]

    \[Remove Book\]" else dat += "
    " var/datum/browser/popup = new(user, "scanner", name, 600, 400) diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm index cd6104607f..3d0c1ccf1d 100644 --- a/code/modules/mining/aux_base.dm +++ b/code/modules/mining/aux_base.dm @@ -46,11 +46,11 @@ interface with the mining shuttle at the landing site if a mobile beacon is also if(!M.check_dock(S)) continue destination_found = 1 - dat += "Send to [S.name]
    " + dat += "Send to [S.name]
    " if(!destination_found && (z in GLOB.station_z_levels)) //Only available if miners are lazy and did not set an LZ using the remote. - dat += "Prepare for blind drop? (Dangerous)
    " + dat += "Prepare for blind drop? (Dangerous)
    " if(LAZYLEN(turrets)) - dat += "
    Perimeter Defense System: Enable All / Disable All
    \ + dat += "
    Perimeter Defense System: Enable All / Disable All
    \ Units connected: [LAZYLEN(turrets)]
    \ Unit | Condition | Status | Direction | Distance
    " for(var/PDT in turrets) @@ -65,10 +65,10 @@ interface with the mining shuttle at the landing site if a mobile beacon is also status = "Firing" else status = "All Clear" - dat += "[T.name] | [integrity]% | [status] | [dir2text(get_dir(src, T))] | [get_dist(src, T)]m Toggle Power
    " + dat += "[T.name] | [integrity]% | [status] | [dir2text(get_dir(src, T))] | [get_dist(src, T)]m Toggle Power
    " - dat += "Close" + dat += "Close" var/datum/browser/popup = new(user, "computer", "base management", 550, 300) //width, height popup.set_content("

    [dat]
    ") @@ -154,7 +154,7 @@ interface with the mining shuttle at the landing site if a mobile beacon is also var/area/A = get_area(T) var/obj/docking_port/stationary/landing_zone = new /obj/docking_port/stationary(T) - landing_zone.id = "colony_drop(\ref[src])" + landing_zone.id = "colony_drop([REF(src)])" landing_zone.name = "Landing Zone ([T.x], [T.y])" landing_zone.dwidth = base_dock.dwidth landing_zone.dheight = base_dock.dheight diff --git a/code/modules/mining/equipment/lazarus_injector.dm b/code/modules/mining/equipment/lazarus_injector.dm index 59b0a02788..e56e8060bf 100644 --- a/code/modules/mining/equipment/lazarus_injector.dm +++ b/code/modules/mining/equipment/lazarus_injector.dm @@ -31,7 +31,7 @@ if(ishostile(target)) var/mob/living/simple_animal/hostile/H = M if(malfunctioning) - H.faction |= list("lazarus", "\ref[user]") + H.faction |= list("lazarus", "[REF(user)]") H.robust_searching = 1 H.friends += user H.attack_same = 1 diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 4d3dc5db37..afdcc1339c 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -749,7 +749,7 @@ to_chat(user, "You call out for aid, attempting to summon spirits to your side.") notify_ghosts("[user] is raising [user.p_their()] [src], calling for your help!", - enter_link="(Click to help)", + enter_link="(Click to help)", source = user, action=NOTIFY_ORBIT) summon_cooldown = world.time + 600 diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 75c0f94ac4..012f02afcc 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -106,7 +106,7 @@ if (selected_material == mat_id) dat += " Smelting" else - dat += " Not Smelting " + dat += " Not Smelting " dat += "
    " dat += "

    " @@ -118,16 +118,16 @@ if (selected_alloy == D.id) dat += " Smelting" else - dat += " Not Smelting " + dat += " Not Smelting " dat += "
    " dat += "

    " //On or off dat += "Machine is currently " if (on) - dat += "On " + dat += "On " else - dat += "Off " + dat += "Off " return dat diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index c2bf0849bb..975b7c7a4e 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -29,7 +29,7 @@ for(var/O in machine.stack_list) s = machine.stack_list[O] if(s.amount > 0) - dat += text("[capitalize(s.name)]: [s.amount] Release
    ") + dat += text("[capitalize(s.name)]: [s.amount] Release
    ") dat += text("
    Stacking: [machine.stack_amt]

    ") diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 5a228973ce..cbf7dfd826 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -89,13 +89,13 @@ var/dat dat +="
    " if(istype(inserted_id)) - dat += "You have [inserted_id.mining_points] mining points collected. Eject ID.
    " + dat += "You have [inserted_id.mining_points] mining points collected. Eject ID.
    " else - dat += "No ID inserted. Insert ID.
    " + dat += "No ID inserted. Insert ID.
    " dat += "
    " dat += "
    Equipment point cost list:
    " for(var/datum/data/mining_equipment/prize in prize_list) - dat += "" + dat += "" dat += "
    [prize.equipment_name][prize.cost]Purchase
    [prize.equipment_name][prize.cost]Purchase
    " var/datum/browser/popup = new(user, "miningvendor", "Mining Equipment Vendor", 400, 350) diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index 1a4e4c5ed1..0981509007 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -39,20 +39,20 @@ if (chosen == mat_id) dat += "Chosen" else - dat += "Choose" + dat += "Choose" var/datum/material/M = materials.materials[chosen] dat += "

    Will produce [coinsToProduce] [lowertext(M.name)] coins if enough materials are available.
    " - dat += "-10 " - dat += "-5 " - dat += "-1 " - dat += "+1 " - dat += "+5 " - dat += "+10 " + dat += "-10 " + dat += "-5 " + dat += "-1 " + dat += "+1 " + dat += "+5 " + dat += "+10 " dat += "

    In total this machine produced [newCoins] coins." - dat += "
    Make coins" + dat += "
    Make coins" user << browse(dat, "window=mint") /obj/machinery/mineral/mint/Topic(href, href_list) diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm index 832d55a6a0..4c772a7019 100644 --- a/code/modules/mining/satchel_ore_boxdm.dm +++ b/code/modules/mining/satchel_ore_boxdm.dm @@ -47,7 +47,7 @@ for(var/i in oretypes) var/obj/item/ore/T = locate(i) in contents dat += "[capitalize(T.name)]: [count_by_type(contents, T.type)]
    " - dat += text("

    Empty box") + dat += text("

    Empty box") user << browse(dat, "window=orebox") /obj/structure/ore_box/proc/dump_box_contents() diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 2b2c50ed17..458a54aa48 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -1,4 +1,4 @@ -#define LINKIFY_READY(string, value) "[string]" +#define LINKIFY_READY(string, value) "[string]" /mob/dead/new_player var/ready = 0 @@ -33,7 +33,7 @@ return /mob/dead/new_player/proc/new_player_panel() - var/output = "

    Setup Character

    " + var/output = "

    Setup Character

    " if(SSticker.current_state <= GAME_STATE_PREGAME) switch(ready) @@ -44,8 +44,8 @@ if(PLAYER_READY_TO_OBSERVE) output += "

    \[ [LINKIFY_READY("Ready", PLAYER_READY_TO_PLAY)] | [LINKIFY_READY("Not Ready", PLAYER_NOT_READY)] | Observe \]

    " else - output += "

    View the Crew Manifest

    " - output += "

    Join Game!

    " + output += "

    View the Crew Manifest

    " + output += "

    Join Game!

    " output += "

    [LINKIFY_READY("Observe", PLAYER_READY_TO_OBSERVE)]

    " if(!IsGuestKey(src.key)) @@ -60,9 +60,9 @@ newpoll = 1 if(newpoll) - output += "

    Show Player Polls (NEW!)

    " + output += "

    Show Player Polls (NEW!)

    " else - output += "

    Show Player Polls

    " + output += "

    Show Player Polls

    " output += "
    " @@ -449,12 +449,12 @@ var/position_class = "otherPosition" if (job.title in GLOB.command_positions) position_class = "commandPosition" - dat += "[job.title] ([job.current_positions])
    " + dat += "[job.title] ([job.current_positions])
    " if(!job_count) //if there's nowhere to go, assistant opens up. for(var/datum/job/job in SSjob.occupations) if(job.title != "Assistant") continue - dat += "[job.title] ([job.current_positions])
    " + dat += "[job.title] ([job.current_positions])
    " break dat += "" diff --git a/code/modules/mob/dead/new_player/poll.dm b/code/modules/mob/dead/new_player/poll.dm index 2e2f3189fe..d10e32a887 100644 --- a/code/modules/mob/dead/new_player/poll.dm +++ b/code/modules/mob/dead/new_player/poll.dm @@ -14,7 +14,7 @@ while(query_poll_get.NextRow()) var/pollid = query_poll_get.item[1] var/pollquestion = query_poll_get.item[2] - output += "[pollquestion]" + output += "[pollquestion]" i++ output += "" src << browse(output,"window=playerpolllist;size=500x300") @@ -60,8 +60,8 @@ output += "Question: [pollquestion]
    " output += "Poll runs from [pollstarttime] until [pollendtime]

    " if(!votedoptionid) - output += "" - output += "" + output += "" + output += "" output += "" output += "" output += "
    " @@ -92,15 +92,15 @@ output += "Question: [pollquestion]
    " output += "Feedback gathering runs from [pollstarttime] until [pollendtime]

    " if(!vote_text) - output += "" - output += "" + output += "" + output += "" output += "" output += "" output += "Please provide feedback below. You can use any letters of the English alphabet, numbers and the symbols: . , ! ? : ; -
    " output += "" output += "

    " - output += "

    " - output += "" + output += "" + output += "" output += "" output += "" output += "" @@ -123,8 +123,8 @@ rating = query_rating_get_votes.item[2] output += "
    [optiontext] - [rating]" if(!rating) - output += "" - output += "" + output += "" + output += "" output += "" output += "" var/minid = 999999 @@ -188,8 +188,8 @@ output += "Question: [pollquestion]
    You can select up to [multiplechoiceoptions] options. If you select more, the first [multiplechoiceoptions] will be saved.
    " output += "Poll runs from [pollstarttime] until [pollendtime]

    " if(!votedfor.len) - output += "" - output += "" + output += "" + output += "" output += "" output += "" output += "" @@ -300,8 +300,8 @@ Revoting has been enabled on this poll, if you think you made a mistake, simply revote
    Poll runs from [pollstarttime] until [pollendtime]

    - - + + diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index f6b362e959..52db510af3 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -330,7 +330,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(message) to_chat(src, "[message]") if(source) - var/obj/screen/alert/A = throw_alert("\ref[source]_notify_cloning", /obj/screen/alert/notify_cloning) + var/obj/screen/alert/A = throw_alert("[REF(source)]_notify_cloning", /obj/screen/alert/notify_cloning) if(A) if(client && client.prefs && client.prefs.UI_style) A.icon = ui_style2icon(client.prefs.UI_style) @@ -342,7 +342,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp A.add_overlay(source) source.layer = old_layer source.plane = old_plane - to_chat(src, "(Click to re-enter)") + to_chat(src, "(Click to re-enter)") if(sound) SEND_SOUND(src, sound(sound)) diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm index d158eb9576..2b8d43a7ac 100644 --- a/code/modules/mob/living/brain/posibrain.dm +++ b/code/modules/mob/living/brain/posibrain.dm @@ -37,7 +37,11 @@ GLOBAL_VAR(posibrain_notify_cooldown) /obj/item/device/mmi/posibrain/proc/ping_ghosts(msg, newlymade) if(newlymade || GLOB.posibrain_notify_cooldown <= world.time) +<<<<<<< HEAD notify_ghosts("[name] [msg] in [get_area(src)]!", ghost_sound = !newlymade ? 'sound/misc/server-ready.ogg':null, enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK, flashwindow = FALSE) +======= + notify_ghosts("[name] [msg] in [get_area(src)]!", ghost_sound = !newlymade ? 'sound/effects/ghost2.ogg':null, enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK, flashwindow = FALSE) +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental if(!newlymade) GLOB.posibrain_notify_cooldown = world.time + askDelay diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 9d9e327fec..d9ce6b904d 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -45,20 +45,20 @@


    "} for(var/i in 1 to held_items.len) var/obj/item/I = get_item_for_held_index(i) - dat += "
    [get_held_index_name(i)]:[(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Empty"]" - dat += "
    Empty Pouches" + dat += "
    [get_held_index_name(i)]:[(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Empty"]" + dat += "
    Empty Pouches" if(handcuffed) - dat += "
    Handcuffed" + dat += "
    Handcuffed" if(legcuffed) - dat += "
    Legcuffed" + dat += "
    Legcuffed" dat += {"
    -
    Close +
    Close "} - user << browse(dat.Join(), "window=mob\ref[src];size=325x500") - onclose(user, "mob\ref[src]") + user << browse(dat.Join(), "window=mob[REF(src)];size=325x500") + onclose(user, "mob[REF(src)]") /mob/living/carbon/alien/humanoid/Topic(href, href_list) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 4174b08642..6cb5436df8 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -184,30 +184,30 @@
    [name]
    -
    Head: [(head && !(head.flags_1&ABSTRACT_1)) ? head : "Nothing"] -
    Mask: [(wear_mask && !(wear_mask.flags_1&ABSTRACT_1)) ? wear_mask : "Nothing"] -
    Neck: [(wear_neck && !(wear_neck.flags_1&ABSTRACT_1)) ? wear_neck : "Nothing"]"} +
    Head: [(head && !(head.flags_1&ABSTRACT_1)) ? head : "Nothing"] +
    Mask: [(wear_mask && !(wear_mask.flags_1&ABSTRACT_1)) ? wear_mask : "Nothing"] +
    Neck: [(wear_neck && !(wear_neck.flags_1&ABSTRACT_1)) ? wear_neck : "Nothing"]"} for(var/i in 1 to held_items.len) var/obj/item/I = get_item_for_held_index(i) - dat += "
    [get_held_index_name(i)]:
    [(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Nothing"]" + dat += "
    [get_held_index_name(i)]:
    [(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Nothing"]" - dat += "
    Back: [back ? back : "Nothing"]" + dat += "
    Back: [back ? back : "Nothing"]" if(istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/tank)) - dat += "
    [internal ? "Disable Internals" : "Set Internals"]" + dat += "
    [internal ? "Disable Internals" : "Set Internals"]" if(handcuffed) - dat += "
    Handcuffed" + dat += "
    Handcuffed" if(legcuffed) - dat += "
    Legcuffed" + dat += "
    Legcuffed" dat += {"
    -
    Close +
    Close "} - user << browse(dat, "window=mob\ref[src];size=325x500") - onclose(user, "mob\ref[src]") + user << browse(dat, "window=mob[REF(src)];size=325x500") + onclose(user, "mob[REF(src)]") /mob/living/carbon/Topic(href, href_list) ..() @@ -843,7 +843,7 @@ /mob/living/carbon/vv_get_dropdown() . = ..() . += "---" - .["Make AI"] = "?_src_=vars;[HrefToken()];makeai=\ref[src]" - .["Modify bodypart"] = "?_src_=vars;[HrefToken()];editbodypart=\ref[src]" - .["Modify organs"] = "?_src_=vars;[HrefToken()];editorgans=\ref[src]" - .["Hallucinate"] = "?_src_=vars;[HrefToken()];hallucinate=\ref[src]" + .["Make AI"] = "?_src_=vars;[HrefToken()];makeai=[REF(src)]" + .["Modify bodypart"] = "?_src_=vars;[HrefToken()];editbodypart=[REF(src)]" + .["Modify organs"] = "?_src_=vars;[HrefToken()];editorgans=[REF(src)]" + .["Hallucinate"] = "?_src_=vars;[HrefToken()];hallucinate=[REF(src)]" diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 917b590247..c42327d632 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -308,8 +308,8 @@ var/datum/data/record/R = find_record("name", perpname, GLOB.data_core.general) if(R) msg += "Rank: [R.fields["rank"]]
    " - msg += "\[Front photo\] " - msg += "\[Side photo\]
    " + msg += "\[Front photo\] " + msg += "\[Side photo\]
    " if(istype(H.glasses, /obj/item/clothing/glasses/hud/health) || istype(CIH, /obj/item/organ/cyberimp/eyes/hud/medical)) var/cyberimp_detect for(var/obj/item/organ/cyberimp/CI in internal_organs) @@ -320,12 +320,12 @@ msg += cyberimp_detect if(R) var/health_r = R.fields["p_stat"] - msg += "\[[health_r]\]" + msg += "\[[health_r]\]" health_r = R.fields["m_stat"] - msg += "\[[health_r]\]
    " + msg += "\[[health_r]\]
    " R = find_record("name", perpname, GLOB.data_core.medical) if(R) - msg += "\[Medical evaluation\]
    " + msg += "\[Medical evaluation\]
    " if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(CIH, /obj/item/organ/cyberimp/eyes/hud/security)) @@ -337,6 +337,7 @@ if(R) criminal = R.fields["criminal"] +<<<<<<< HEAD msg += "Criminal status: \[[criminal]\]\n" msg += "Security record: \[View\] " msg += "\[Add crime\] " @@ -345,6 +346,13 @@ if(print_flavor_text() && get_visible_name() != "Unknown")//Are we sure we know who this is? Don't show flavor text unless we can recognize them. Prevents certain metagaming with impersonation. msg += "[print_flavor_text()]\n" +======= + msg += "Criminal status: \[[criminal]\]\n" + msg += "Security record: \[View\] " + msg += "\[Add crime\] " + msg += "\[View comment log\] " + msg += "\[Add comment\]\n" +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental msg += "*---------*" to_chat(user, msg) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index a39b84e47c..a27c9a1eb9 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -104,44 +104,44 @@ dat += "" for(var/i in 1 to held_items.len) var/obj/item/I = get_item_for_held_index(i) - dat += "" + dat += "" dat += "" - dat += "" - dat += "" + dat += "" if(slot_wear_mask in obscured) dat += "" else - dat += "" + dat += "" if(slot_neck in obscured) dat += "" else - dat += "" + dat += "" if(slot_glasses in obscured) dat += "" else - dat += "" + dat += "" if(slot_ears in obscured) dat += "" else - dat += "" + dat += "" dat += "" - dat += "" + dat += "" if(wear_suit) - dat += "" else dat += "" @@ -149,41 +149,41 @@ if(slot_shoes in obscured) dat += "" else - dat += "" + dat += "" if(slot_gloves in obscured) dat += "" else - dat += "" + dat += "" if(slot_w_uniform in obscured) dat += "" else - dat += "" + dat += "" if((w_uniform == null && !(dna && dna.species.nojumpsuit)) || (slot_w_uniform in obscured)) dat += "" dat += "" dat += "" else - dat += "" - dat += "" - dat += "" + dat += "" + dat += "" if(handcuffed) - dat += "" + dat += "" if(legcuffed) - dat += "" + dat += "" dat += {"
    [get_held_index_name(i)]:[(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Empty"]
    [get_held_index_name(i)]:[(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Empty"]
     
    Back:[(back && !(back.flags_1&ABSTRACT_1)) ? back : "Empty"]" + dat += "
    Back:[(back && !(back.flags_1&ABSTRACT_1)) ? back : "Empty"]" if(has_breathable_mask && istype(back, /obj/item/tank)) - dat += " [internal ? "Disable Internals" : "Set Internals"]" + dat += " [internal ? "Disable Internals" : "Set Internals"]" dat += "
     
    Head:[(head && !(head.flags_1&ABSTRACT_1)) ? head : "Empty"]
    Head:[(head && !(head.flags_1&ABSTRACT_1)) ? head : "Empty"]
    Mask:Obscured
    Mask:[(wear_mask && !(wear_mask.flags_1&ABSTRACT_1)) ? wear_mask : "Empty"]
    Mask:[(wear_mask && !(wear_mask.flags_1&ABSTRACT_1)) ? wear_mask : "Empty"]
    Neck:Obscured
    Neck:[(wear_neck && !(wear_neck.flags_1&ABSTRACT_1)) ? wear_neck : "Empty"]
    Neck:[(wear_neck && !(wear_neck.flags_1&ABSTRACT_1)) ? wear_neck : "Empty"]
    Eyes:Obscured
    Eyes:[(glasses && !(glasses.flags_1&ABSTRACT_1)) ? glasses : "Empty"]
    Eyes:[(glasses && !(glasses.flags_1&ABSTRACT_1)) ? glasses : "Empty"]
    Ears:Obscured
    Ears:[(ears && !(ears.flags_1&ABSTRACT_1)) ? ears : "Empty"]
    Ears:[(ears && !(ears.flags_1&ABSTRACT_1)) ? ears : "Empty"]
     
    Exosuit:[(wear_suit && !(wear_suit.flags_1&ABSTRACT_1)) ? wear_suit : "Empty"]
    Exosuit:[(wear_suit && !(wear_suit.flags_1&ABSTRACT_1)) ? wear_suit : "Empty"]
     ↳Suit Storage:[(s_store && !(s_store.flags_1&ABSTRACT_1)) ? s_store : "Empty"]" + dat += "
     ↳Suit Storage:[(s_store && !(s_store.flags_1&ABSTRACT_1)) ? s_store : "Empty"]" if(has_breathable_mask && istype(s_store, /obj/item/tank)) - dat += " [internal ? "Disable Internals" : "Set Internals"]" + dat += " [internal ? "Disable Internals" : "Set Internals"]" dat += "
     ↳Suit Storage:
    Shoes:Obscured
    Shoes:[(shoes && !(shoes.flags_1&ABSTRACT_1)) ? shoes : "Empty"]
    Shoes:[(shoes && !(shoes.flags_1&ABSTRACT_1)) ? shoes : "Empty"]
    Gloves:Obscured
    Gloves:[(gloves && !(gloves.flags_1&ABSTRACT_1)) ? gloves : "Empty"]
    Gloves:[(gloves && !(gloves.flags_1&ABSTRACT_1)) ? gloves : "Empty"]
    Uniform:Obscured
    Uniform:[(w_uniform && !(w_uniform.flags_1&ABSTRACT_1)) ? w_uniform : "Empty"]
    Uniform:[(w_uniform && !(w_uniform.flags_1&ABSTRACT_1)) ? w_uniform : "Empty"]
     ↳Pockets:
     ↳ID:
     ↳Belt:
     ↳Belt:[(belt && !(belt.flags_1&ABSTRACT_1)) ? belt : "Empty"]" + dat += "
     ↳Belt:[(belt && !(belt.flags_1&ABSTRACT_1)) ? belt : "Empty"]" if(has_breathable_mask && istype(belt, /obj/item/tank)) - dat += " [internal ? "Disable Internals" : "Set Internals"]" + dat += " [internal ? "Disable Internals" : "Set Internals"]" dat += "
     ↳Pockets:[(l_store && !(l_store.flags_1&ABSTRACT_1)) ? "Left (Full)" : "Left (Empty)"]" - dat += " [(r_store && !(r_store.flags_1&ABSTRACT_1)) ? "Right (Full)" : "Right (Empty)"]
     ↳ID:[(wear_id && !(wear_id.flags_1&ABSTRACT_1)) ? wear_id : "Empty"]
     ↳Pockets:[(l_store && !(l_store.flags_1&ABSTRACT_1)) ? "Left (Full)" : "Left (Empty)"]" + dat += " [(r_store && !(r_store.flags_1&ABSTRACT_1)) ? "Right (Full)" : "Right (Empty)"]
     ↳ID:[(wear_id && !(wear_id.flags_1&ABSTRACT_1)) ? wear_id : "Empty"]
    Handcuffed: Remove
    Handcuffed: Remove
    Legcuffed
    Legcuffed
    - Close + Close "} - var/datum/browser/popup = new(user, "mob\ref[src]", "[src]", 440, 510) + var/datum/browser/popup = new(user, "mob[REF(src)]", "[src]", 440, 510) popup.set_content(dat.Join()) popup.open() @@ -869,12 +869,12 @@ /mob/living/carbon/human/vv_get_dropdown() . = ..() . += "---" - .["Make monkey"] = "?_src_=vars;[HrefToken()];makemonkey=\ref[src]" - .["Set Species"] = "?_src_=vars;[HrefToken()];setspecies=\ref[src]" - .["Make cyborg"] = "?_src_=vars;[HrefToken()];makerobot=\ref[src]" - .["Make alien"] = "?_src_=vars;[HrefToken()];makealien=\ref[src]" - .["Make slime"] = "?_src_=vars;[HrefToken()];makeslime=\ref[src]" - .["Toggle Purrbation"] = "?_src_=vars;[HrefToken()];purrbation=\ref[src]" + .["Make monkey"] = "?_src_=vars;[HrefToken()];makemonkey=[REF(src)]" + .["Set Species"] = "?_src_=vars;[HrefToken()];setspecies=[REF(src)]" + .["Make cyborg"] = "?_src_=vars;[HrefToken()];makerobot=[REF(src)]" + .["Make alien"] = "?_src_=vars;[HrefToken()];makealien=[REF(src)]" + .["Make slime"] = "?_src_=vars;[HrefToken()];makeslime=[REF(src)]" + .["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 :^) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index f21f872d0a..b37ebabb45 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -670,7 +670,7 @@ to_chat(src, "\t Your [LB.name] is [status].") for(var/obj/item/I in LB.embedded_objects) - to_chat(src, "\t There is \a [I] embedded in your [LB.name]!") + to_chat(src, "\t There is \a [I] embedded in your [LB.name]!") for(var/t in missing) to_chat(src, "Your [parse_zone(t)] is missing!") diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 1d69e294df..3debb6ade3 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /datum/species/jelly // Entirely alien beings that seem to be made entirely out of gel. They have three eyes and a skeleton visible within them. name = "Xenobiological Jelly Entity" @@ -332,4 +333,341 @@ M.transfer_to(dupe) dupe.visible_message("[dupe] blinks and looks \ around.", - "...and move this one instead.") \ No newline at end of file + "...and move this one instead.") +======= +/datum/species/jelly + // Entirely alien beings that seem to be made entirely out of gel. They have three eyes and a skeleton visible within them. + name = "Xenobiological Jelly Entity" + id = "jelly" + default_color = "00FF90" + say_mod = "chirps" + species_traits = list(MUTCOLORS,EYECOLOR,NOBLOOD,VIRUSIMMUNE,TOXINLOVER) + meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime + exotic_blood = "slimejelly" + damage_overlay_type = "" + var/datum/action/innate/regenerate_limbs/regenerate_limbs + liked_food = MEAT + +/datum/species/jelly/on_species_loss(mob/living/carbon/C) + if(regenerate_limbs) + regenerate_limbs.Remove(C) + ..() + +/datum/species/jelly/on_species_gain(mob/living/carbon/C, datum/species/old_species) + ..() + if(ishuman(C)) + regenerate_limbs = new + regenerate_limbs.Grant(C) + +/datum/species/jelly/spec_life(mob/living/carbon/human/H) + if(H.stat == DEAD) //can't farm slime jelly from a dead slime/jelly person indefinitely + return + if(!H.blood_volume) + H.blood_volume += 5 + H.adjustBruteLoss(5) + to_chat(H, "You feel empty!") + + if(H.blood_volume < BLOOD_VOLUME_NORMAL) + if(H.nutrition >= NUTRITION_LEVEL_STARVING) + H.blood_volume += 3 + H.nutrition -= 2.5 + if(H.blood_volume < BLOOD_VOLUME_OKAY) + if(prob(5)) + to_chat(H, "You feel drained!") + if(H.blood_volume < BLOOD_VOLUME_BAD) + Cannibalize_Body(H) + H.update_action_buttons_icon() + +/datum/species/jelly/proc/Cannibalize_Body(mob/living/carbon/human/H) + var/list/limbs_to_consume = list("r_arm", "l_arm", "r_leg", "l_leg") - H.get_missing_limbs() + var/obj/item/bodypart/consumed_limb + if(!limbs_to_consume.len) + H.losebreath++ + return + if(H.get_num_legs()) //Legs go before arms + limbs_to_consume -= list("r_arm", "l_arm") + consumed_limb = H.get_bodypart(pick(limbs_to_consume)) + consumed_limb.drop_limb() + to_chat(H, "Your [consumed_limb] is drawn back into your body, unable to maintain its shape!") + qdel(consumed_limb) + H.blood_volume += 20 + +/datum/action/innate/regenerate_limbs + name = "Regenerate Limbs" + check_flags = AB_CHECK_CONSCIOUS + button_icon_state = "slimeheal" + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + +/datum/action/innate/regenerate_limbs/IsAvailable() + if(..()) + var/mob/living/carbon/human/H = owner + var/list/limbs_to_heal = H.get_missing_limbs() + if(limbs_to_heal.len < 1) + return 0 + if(H.blood_volume >= BLOOD_VOLUME_OKAY+40) + return 1 + return 0 + +/datum/action/innate/regenerate_limbs/Activate() + var/mob/living/carbon/human/H = owner + var/list/limbs_to_heal = H.get_missing_limbs() + if(limbs_to_heal.len < 1) + to_chat(H, "You feel intact enough as it is.") + return + to_chat(H, "You focus intently on your missing [limbs_to_heal.len >= 2 ? "limbs" : "limb"]...") + if(H.blood_volume >= 40*limbs_to_heal.len+BLOOD_VOLUME_OKAY) + H.regenerate_limbs() + H.blood_volume -= 40*limbs_to_heal.len + to_chat(H, "...and after a moment you finish reforming!") + return + else if(H.blood_volume >= 40)//We can partially heal some limbs + while(H.blood_volume >= BLOOD_VOLUME_OKAY+40) + var/healed_limb = pick(limbs_to_heal) + H.regenerate_limb(healed_limb) + limbs_to_heal -= healed_limb + H.blood_volume -= 40 + to_chat(H, "...but there is not enough of you to fix everything! You must attain more mass to heal completely!") + return + to_chat(H, "...but there is not enough of you to go around! You must attain more mass to heal!") + +////////////////////////////////////////////////////////SLIME PEOPLE/////////////////////////////////////////////////////////////////// + +/datum/species/jelly/slime + // Humans mutated by slime mutagen, produced from green slimes. They are not targetted by slimes. + name = "Slimeperson" + id = "slime" + default_color = "00FFFF" + species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD,VIRUSIMMUNE, TOXINLOVER) + say_mod = "says" + hair_color = "mutcolor" + hair_alpha = 150 + ignored_by = list(/mob/living/simple_animal/slime) + burnmod = 0.5 + coldmod = 2 + heatmod = 0.5 + var/datum/action/innate/split_body/slime_split + var/list/mob/living/carbon/bodies + var/datum/action/innate/swap_body/swap_body + +/datum/species/jelly/slime/on_species_loss(mob/living/carbon/C) + if(slime_split) + slime_split.Remove(C) + if(swap_body) + swap_body.Remove(C) + bodies -= C // This means that the other bodies maintain a link + // so if someone mindswapped into them, they'd still be shared. + bodies = null + C.faction -= "slime" + C.blood_volume = min(C.blood_volume, BLOOD_VOLUME_NORMAL) + ..() + +/datum/species/jelly/slime/on_species_gain(mob/living/carbon/C, datum/species/old_species) + ..() + if(ishuman(C)) + slime_split = new + slime_split.Grant(C) + swap_body = new + swap_body.Grant(C) + + if(!bodies || !bodies.len) + bodies = list(C) + else + bodies |= C + + C.faction |= "slime" + +//If you're cloned you get your body pool back +/datum/species/jelly/slime/copy_properties_from(datum/species/jelly/slime/old_species) + bodies = old_species.bodies + +/datum/species/jelly/slime/spec_life(mob/living/carbon/human/H) + if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT) + if(prob(5)) + to_chat(H, "You feel very bloated!") + else if(H.nutrition >= NUTRITION_LEVEL_WELL_FED) + H.blood_volume += 3 + H.nutrition -= 2.5 + + ..() + +/datum/action/innate/split_body + name = "Split Body" + check_flags = AB_CHECK_CONSCIOUS + button_icon_state = "slimesplit" + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + +/datum/action/innate/split_body/IsAvailable() + if(..()) + var/mob/living/carbon/human/H = owner + if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT) + return 1 + return 0 + +/datum/action/innate/split_body/Activate() + var/mob/living/carbon/human/H = owner + if(!isslimeperson(H)) + return + CHECK_DNA_AND_SPECIES(H) + H.visible_message("[owner] gains a look of \ + concentration while standing perfectly still.", + "You focus intently on moving your body while \ + standing perfectly still...") + + H.notransform = TRUE + + if(do_after(owner, delay=60, needhand=FALSE, target=owner, progress=TRUE)) + if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT) + make_dupe() + else + to_chat(H, "...but there is not enough of you to go around! You must attain more mass to split!") + else + to_chat(H, "...but fail to stand perfectly still!") + + H.notransform = FALSE + +/datum/action/innate/split_body/proc/make_dupe() + var/mob/living/carbon/human/H = owner + CHECK_DNA_AND_SPECIES(H) + + var/mob/living/carbon/human/spare = new /mob/living/carbon/human(H.loc) + + spare.underwear = "Nude" + H.dna.transfer_identity(spare, transfer_SE=1) + spare.dna.features["mcolor"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F") + spare.real_name = spare.dna.real_name + spare.name = spare.dna.real_name + spare.updateappearance(mutcolor_update=1) + spare.domutcheck() + spare.Move(get_step(H.loc, pick(NORTH,SOUTH,EAST,WEST))) + + H.blood_volume = BLOOD_VOLUME_SAFE + H.notransform = 0 + + var/datum/species/jelly/slime/origin_datum = H.dna.species + origin_datum.bodies |= spare + + var/datum/species/jelly/slime/spare_datum = spare.dna.species + spare_datum.bodies = origin_datum.bodies + + H.mind.transfer_to(spare) + spare.visible_message("[H] distorts as a new body \ + \"steps out\" of them.", + "...and after a moment of disorentation, \ + you're besides yourself!") + + +/datum/action/innate/swap_body + name = "Swap Body" + check_flags = AB_CHECK_CONSCIOUS + button_icon_state = "slimeswap" + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + +/datum/action/innate/swap_body/Activate() + if(!isslimeperson(owner)) + to_chat(owner, "You are not a slimeperson.") + Remove(owner) + else + ui_interact(owner) + +/datum/action/innate/swap_body/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.conscious_state) + + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "slime_swap_body", name, 400, 400, master_ui, state) + ui.open() + +/datum/action/innate/swap_body/ui_data(mob/user) + var/mob/living/carbon/human/H = owner + if(!isslimeperson(H)) + return + + var/datum/species/jelly/slime/SS = H.dna.species + + var/list/data = list() + data["bodies"] = list() + for(var/b in SS.bodies) + var/mob/living/carbon/human/body = b + if(!body || QDELETED(body) || !isslimeperson(body)) + SS.bodies -= b + continue + + var/list/L = list() + // HTML colors need a # prefix + L["htmlcolor"] = "#[body.dna.features["mcolor"]]" + var/area/A = get_area(body) + L["area"] = A.name + var/stat = "error" + switch(body.stat) + if(CONSCIOUS) + stat = "Conscious" + if(UNCONSCIOUS) + stat = "Unconscious" + if(DEAD) + stat = "Dead" + var/current = body.mind + var/is_conscious = (body.stat == CONSCIOUS) + + L["status"] = stat + L["exoticblood"] = body.blood_volume + L["name"] = body.name + L["ref"] = "[REF(body)]" + L["is_current"] = current + var/button + if(current) + button = "selected" + else if(is_conscious) + button = null + else + button = "disabled" + + L["swap_button_state"] = button + L["swappable"] = !current && is_conscious + + data["bodies"] += list(L) + + return data + +/datum/action/innate/swap_body/ui_act(action, params) + if(..()) + return + var/mob/living/carbon/human/H = owner + if(!isslimeperson(owner)) + return + var/datum/species/jelly/slime/SS = H.dna.species + + var/datum/mind/M + for(var/mob/living/L in SS.bodies) + if(L.mind && L.mind.active) + M = L.mind + if(!M) + return + if(!isslimeperson(M.current)) + return + + switch(action) + if("swap") + var/mob/living/carbon/human/selected = locate(params["ref"]) + if(!(selected in SS.bodies)) + return + if(!selected || QDELETED(selected) || !isslimeperson(selected)) + SS.bodies -= selected + return + if(M.current == selected) + return + if(selected.stat != CONSCIOUS) + return + + swap_to_dupe(M, selected) + +/datum/action/innate/swap_body/proc/swap_to_dupe(datum/mind/M, mob/living/carbon/human/dupe) + M.current.visible_message("[M.current] \ + stops moving and starts staring vacantly into space.", + "You stop moving this body...") + M.transfer_to(dupe) + dupe.visible_message("[dupe] blinks and looks \ + around.", + "...and move this one instead.") +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 0cdcd90e61..3a38ae8040 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -15,7 +15,7 @@ real_name = name var/datum/atom_hud/data/human/medical/advanced/medhud = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED] medhud.add_to_hud(src) - faction += "\ref[src]" + faction += "[REF(src)]" /mob/living/prepare_huds() diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index b176649a37..4068d3c2e9 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -267,7 +267,7 @@ /mob/living/silicon/ai/proc/ai_alerts() var/dat = "Current Station Alerts\n" - dat += "Close

    " + dat += "Close

    " for (var/cat in alarms) dat += text("[]
    \n", cat) var/list/L = alarms[cat] @@ -281,11 +281,11 @@ if (C && istype(C, /list)) var/dat2 = "" for (var/obj/machinery/camera/I in C) - dat2 += text("[][]", (dat2=="") ? "" : " | ", src, I, I.c_tag) + dat2 += text("[][]", (dat2=="") ? "" : " | ", I.c_tag) dat += text("-- [] ([])", A.name, (dat2!="") ? dat2 : "No Camera") else if (C && istype(C, /obj/machinery/camera)) var/obj/machinery/camera/Ctmp = C - dat += text("-- [] ([])", A.name, src, C, Ctmp.c_tag) + dat += text("-- [] ([])", A.name, Ctmp.c_tag) else dat += text("-- [] (No Camera)", A.name) if (sources.len > 1) @@ -465,7 +465,7 @@ var/ai_Zlevel = ai_current_turf.z var/d var/area/bot_area - d += "Query network status
    " + d += "Query network status
    " d += "" for (Bot in GLOB.living_mob_list) @@ -476,8 +476,8 @@ //If the bot is on, it will display the bot's current mode status. If the bot is not mode, it will just report "Idle". "Inactive if it is not on at all. d += "" d += "" - d += "" - d += "" + d += "" + d += "" d += "" d = format_text(d) @@ -531,12 +531,12 @@ L[A.name] = list(A, (C) ? C : O, list(alarmsource)) if (O) if (C && C.can_use()) - queueAlarm("--- [class] alarm detected in [A.name]! ([C.c_tag])", class) + queueAlarm("--- [class] alarm detected in [A.name]! ([C.c_tag])", class) else if (CL && CL.len) var/foo = 0 var/dat2 = "" for (var/obj/machinery/camera/I in CL) - dat2 += text("[][]", (!foo) ? "" : " | ", src, I, I.c_tag) //I'm not fixing this shit... + dat2 += text("[][]", (!foo) ? "" : " | ", I.c_tag) //I'm not fixing this shit... foo = 1 queueAlarm(text ("--- [] alarm detected in []! ([])", class, A.name, dat2), class) else @@ -828,7 +828,7 @@ raw_message = lang_treat(speaker, message_language, raw_message, spans, message_mode) var/start = "Relayed Speech: " var/namepart = "[speaker.GetVoice()][speaker.get_alt_name()]" - var/hrefpart = "" + var/hrefpart = "" var/jobpart if (iscarbon(speaker)) diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index 8429889ebd..8593eafc37 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -7,7 +7,7 @@ /mob/living/silicon/ai/compose_track_href(atom/movable/speaker, namepart) var/mob/M = speaker.GetSource() if(M) - return "" + return "" return "" /mob/living/silicon/ai/compose_job(atom/movable/speaker, message_langs, raw_message, radio_freq) @@ -85,7 +85,7 @@ var/index = 0 for(var/word in GLOB.vox_sounds) index++ - dat += "[capitalize(word)]" + dat += "[capitalize(word)]" if(index != GLOB.vox_sounds.len) dat += " / " diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index d70a12eb38..e21abfc6b2 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -278,11 +278,11 @@ /mob/living/silicon/pai/proc/softwareMenu() // Populate the right menu var/dat = "" - dat += "Refresh
    " + dat += "Refresh
    " // Built-in - dat += "Directives
    " - dat += "Radio Configuration
    " - dat += "Screen Display
    " + dat += "Directives
    " + dat += "Radio Configuration
    " + dat += "Screen Display
    " //dat += "Text Messaging
    " dat += "
    " @@ -290,42 +290,42 @@ dat += "Basic
    " for(var/s in software) if(s == "digital messenger") - dat += "Digital Messenger
    " + dat += "Digital Messenger
    " if(s == "crew manifest") - dat += "Crew Manifest
    " + dat += "Crew Manifest
    " if(s == "medical records") - dat += "Medical Records
    " + dat += "Medical Records
    " if(s == "security records") - dat += "Security Records
    " + dat += "Security Records
    " if(s == "camera") - dat += "Camera Jack
    " + dat += "Camera Jack
    " if(s == "remote signaller") - dat += "Remote Signaller
    " + dat += "Remote Signaller
    " dat += "
    " // Advanced dat += "Advanced
    " for(var/s in software) if(s == "atmosphere sensor") - dat += "Atmospheric Sensor
    " + dat += "Atmospheric Sensor
    " if(s == "heartbeat sensor") - dat += "Heartbeat Sensor
    " + dat += "Heartbeat Sensor
    " if(s == "security HUD") - dat += "Facial Recognition Suite[(secHUD) ? " On" : " Off"]
    " + dat += "Facial Recognition Suite[(secHUD) ? " On" : " Off"]
    " if(s == "medical HUD") - dat += "Medical Analysis Suite[(medHUD) ? " On" : " Off"]
    " + dat += "Medical Analysis Suite[(medHUD) ? " On" : " Off"]
    " if(s == "universal translator") var/translator_on = (flags_2 & OMNITONGUE_2) - dat += "Universal Translator[translator_on ? " On" : " Off"]
    " + dat += "Universal Translator[translator_on ? " On" : " Off"]
    " if(s == "projection array") - dat += "Projection Array
    " + dat += "Projection Array
    " if(s == "camera jack") - dat += "Camera Jack
    " + dat += "Camera Jack
    " if(s == "door jack") - dat += "Door Jack
    " + dat += "Door Jack
    " dat += "
    " dat += "
    " - dat += "Download additional software" + dat += "Download additional software" return dat @@ -341,7 +341,7 @@ if(!software.Find(s)) var/cost = available_software[s] var/displayName = uppertext(s) - dat += "[displayName] ([cost])
    " + dat += "[displayName] ([cost])
    " else var/displayName = lowertext(s) dat += "[displayName] (Download Complete)
    " @@ -354,7 +354,7 @@ dat += "[(master) ? "Your master: [master] ([master_dna])" : "You are bound to no one."]" dat += "

    " - dat += "Request carrier DNA sample
    " + dat += "Request carrier DNA sample
    " dat += "

    Directives


    " dat += "Prime Directive
    " dat += "     [laws.zeroth]
    " @@ -397,20 +397,20 @@ dat += "

    Remote Signaller



    " dat += {"Frequency/Code for signaler:
    Frequency: - - - - + - + - [format_frequency(sradio.frequency)] - + - +
    + + + +
    Code: - - - - + - + - [sradio.code] - + - +
    + + + +
    - Send Signal
    "} + Send Signal
    "} return dat // Crew Manifest @@ -429,7 +429,7 @@ . += "

    Medical Records


    " if(GLOB.data_core.general) for(var/datum/data/record/R in sortRecord(GLOB.data_core.general)) - . += "[R.fields["id"]]: [R.fields["name"]]
    " + . += "
    [R.fields["id"]]: [R.fields["name"]]
    " if(1) . += "
    Medical Record

    " if(medicalActive1 in GLOB.data_core.general) @@ -437,10 +437,10 @@ else . += "
    Requested medical record not found.

    " if(medicalActive2 in GLOB.data_core.medical) - . += "
    \n
    Medical Data

    \nBlood Type:
    [medicalActive2.fields["blood_type"]]
    \nDNA: [medicalActive2.fields["b_dna"]]
    \n
    \nMinor Disabilities: [medicalActive2.fields["mi_dis"]]
    \nDetails: [medicalActive2.fields["mi_dis_d"]]
    \n
    \nMajor Disabilities: [medicalActive2.fields["ma_dis"]]
    \nDetails: [medicalActive2.fields["ma_dis_d"]]
    \n
    \nAllergies: [medicalActive2.fields["alg"]]
    \nDetails: [medicalActive2.fields["alg_d"]]
    \n
    \nCurrent Diseases: [medicalActive2.fields["cdi"]] (per disease info placed in log/comment section)
    \nDetails: [medicalActive2.fields["cdi_d"]]
    \n
    \nImportant Notes:
    \n\t[medicalActive2.fields["notes"]]
    \n
    \n
    Comments/Log

    " + . += "
    \n
    Medical Data

    \nBlood Type: [medicalActive2.fields["blood_type"]]
    \nDNA: [medicalActive2.fields["b_dna"]]
    \n
    \nMinor Disabilities: [medicalActive2.fields["mi_dis"]]
    \nDetails: [medicalActive2.fields["mi_dis_d"]]
    \n
    \nMajor Disabilities: [medicalActive2.fields["ma_dis"]]
    \nDetails: [medicalActive2.fields["ma_dis_d"]]
    \n
    \nAllergies: [medicalActive2.fields["alg"]]
    \nDetails: [medicalActive2.fields["alg_d"]]
    \n
    \nCurrent Diseases: [medicalActive2.fields["cdi"]] (per disease info placed in log/comment section)
    \nDetails: [medicalActive2.fields["cdi_d"]]
    \n
    \nImportant Notes:
    \n\t[medicalActive2.fields["notes"]]
    \n
    \n
    Comments/Log

    " else . += "
    Requested medical record not found.

    " - . += "
    \nBack
    " + . += "
    \nBack
    " return . // Security Records @@ -451,18 +451,18 @@ . += "

    Security Records


    " if(GLOB.data_core.general) for(var/datum/data/record/R in sortRecord(GLOB.data_core.general)) - . += "[R.fields["id"]]: [R.fields["name"]]
    " + . += "
    [R.fields["id"]]: [R.fields["name"]]
    " if(1) . += "

    Security Record

    " if(securityActive1 in GLOB.data_core.general) - . += "Name:
    [securityActive1.fields["name"]] ID: [securityActive1.fields["id"]]
    \nSex: [securityActive1.fields["sex"]]
    \nAge: [securityActive1.fields["age"]]
    \nRank: [securityActive1.fields["rank"]]
    \nFingerprint: [securityActive1.fields["fingerprint"]]
    \nPhysical Status: [securityActive1.fields["p_stat"]]
    \nMental Status: [securityActive1.fields["m_stat"]]
    " + . += "Name: [securityActive1.fields["name"]] ID: [securityActive1.fields["id"]]
    \nSex: [securityActive1.fields["sex"]]
    \nAge: [securityActive1.fields["age"]]
    \nRank: [securityActive1.fields["rank"]]
    \nFingerprint: [securityActive1.fields["fingerprint"]]
    \nPhysical Status: [securityActive1.fields["p_stat"]]
    \nMental Status: [securityActive1.fields["m_stat"]]
    " else . += "
    Requested security record not found,

    " if(securityActive2 in GLOB.data_core.security) - . += "
    \nSecurity Data
    \nCriminal Status: [securityActive2.fields["criminal"]]
    \n
    \nMinor Crimes: [securityActive2.fields["mi_crim"]]
    \nDetails: [securityActive2.fields["mi_crim_d"]]
    \n
    \nMajor Crimes: [securityActive2.fields["ma_crim"]]
    \nDetails: [securityActive2.fields["ma_crim_d"]]
    \n
    \nImportant Notes:
    \n\t[securityActive2.fields["notes"]]
    \n
    \n
    Comments/Log

    " + . += "
    \nSecurity Data
    \nCriminal Status: [securityActive2.fields["criminal"]]
    \n
    \nMinor Crimes: [securityActive2.fields["mi_crim"]]
    \nDetails: [securityActive2.fields["mi_crim_d"]]
    \n
    \nMajor Crimes: [securityActive2.fields["ma_crim"]]
    \nDetails: [securityActive2.fields["ma_crim_d"]]
    \n
    \nImportant Notes:
    \n\t[securityActive2.fields["notes"]]
    \n
    \n
    Comments/Log

    " else . += "
    Requested security record not found,

    " - . += text("
    \nBack
    ", src) + . += "
    \nBack
    " return . // Universal Translator @@ -470,7 +470,7 @@ var/translator_on = (flags_2 & OMNITONGUE_2) . = {"

    Universal Translator


    When enabled, this device will permamently be able to speak and understand all known forms of communication.

    - The device is currently [translator_on ? "en" : "dis" ]abled.
    [translator_on ? "" : "Activate Translation Module
    "]"} + The device is currently [translator_on ? "en" : "dis" ]abled.
    [translator_on ? "" : "Activate Translation Module
    "]"} return . // Security HUD @@ -478,7 +478,7 @@ var/dat = {"

    Facial Recognition Suite


    When enabled, this package will scan all viewable faces and compare them against the known criminal database, providing real-time graphical data about any detected persons of interest.

    The package is currently [ (secHUD) ? "en" : "dis" ]abled.
    - Toggle Package
    + Toggle Package
    "} return dat @@ -490,9 +490,9 @@

    Visual Status Overlay


    When enabled, this package will scan all nearby crewmembers' vitals and provide real-time graphical data about their state of health.

    The suite is currently [ (medHUD) ? "en" : "dis" ]abled.
    - Toggle Suite
    + Toggle Suite

    - Host Bioscan
    + Host Bioscan
    "} if(subscreen == 1) dat += {"

    Medical Analysis Suite


    @@ -523,7 +523,7 @@ Stage: [D.stage]/[D.max_stages]
    Possible Cure: [D.cure_text]
    "} - dat += "Visual Status Overlay
    " + dat += "Visual Status Overlay
    " return dat // Atmospheric Scanner @@ -548,7 +548,7 @@ if(gas_level > 0.01) dat += "[env_gases[id][GAS_META][META_GAS_NAME]]: [round(gas_level*100)]%
    " dat += "Temperature: [round(environment.temperature-T0C)]°C
    " - dat += "Refresh Reading
    " + dat += "Refresh Reading
    " dat += "
    " return dat @@ -577,7 +577,7 @@ dat += "Cable status : " if(!cable) dat += "Retracted
    " - dat += "Extend Cable
    " + dat += "Extend Cable
    " return dat if(!cable.machine) dat += "Extended
    " @@ -591,10 +591,10 @@ // var/obj/machinery/airlock/door = machine if(!hackdoor) - dat += "Begin Airlock Jacking
    " + dat += "Begin Airlock Jacking
    " else dat += "Jack in progress... [hackprogress]% complete.
    " - dat += "Cancel Airlock Jack
    " + dat += "Cancel Airlock Jack
    " return dat // Door Jack - supporting proc @@ -611,16 +611,16 @@ /mob/living/silicon/pai/proc/pdamessage() var/dat = "

    Digital Messenger

    " - dat += {"Signal/Receiver Status: + dat += {"Signal/Receiver Status: [(pda.toff) ? "\[Off\]" : "\[On\]"]
    - Ringer Status: + Ringer Status: [(pda.silent) ? "\[Off\]" : "\[On\]"]

    "} dat += "
      " if(!pda.toff) for (var/obj/item/device/pda/P in sortNames(get_viewable_pdas())) if (P == pda) continue - dat += "
    • [P]" + dat += "
    • [P]" dat += "
    • " dat += "
    " dat += "

    " diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 96467be074..3e3e853ae7 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -882,13 +882,13 @@ return switch(notifytype) if(NEW_BORG) //New Cyborg - to_chat(connected_ai, "

    NOTICE - New cyborg connection detected: [name]
    ") + to_chat(connected_ai, "

    NOTICE - New cyborg connection detected: [name]
    ") if(NEW_MODULE) //New Module to_chat(connected_ai, "

    NOTICE - Cyborg module change detected: [name] has loaded the [designation] module.
    ") if(RENAME) //New Name to_chat(connected_ai, "

    NOTICE - Cyborg reclassification detected: [oldname] is now designated as [newname].
    ") if(AI_SHELL) //New Shell - to_chat(connected_ai, "

    NOTICE - New cyborg shell detected: [name]
    ") + to_chat(connected_ai, "

    NOTICE - New cyborg shell detected: [name]
    ") if(DISCONNECT) //Tampering with the wires to_chat(connected_ai, "

    NOTICE - Remote telemetry lost with [name].
    ") diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 4178438571..f3e7baa0d9 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -14,7 +14,7 @@ for(var/mob/M in GLOB.player_list) if(M.binarycheck()) if(isAI(M)) - var/renderedAI = "Robotic Talk, [name] ([desig]) [message_a]" + var/renderedAI = "Robotic Talk, [name] ([desig]) [message_a]" to_chat(M, renderedAI) else to_chat(M, rendered) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 527474a0f3..fa8447885d 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -110,7 +110,7 @@ if(alarm_types_show["Camera"]) msg += "CAMERA: [alarm_types_show["Camera"]] alarms detected. - " - msg += "\[Show Alerts\]" + msg += "\[Show Alerts\]" to_chat(src, msg) if(alarms_to_clear.len < 3) @@ -135,7 +135,7 @@ if(alarm_types_show["Camera"]) msg += "CAMERA: [alarm_types_clear["Camera"]] alarms cleared. - " - msg += "\[Show Alerts\]" + msg += "\[Show Alerts\]" to_chat(src, msg) @@ -253,12 +253,12 @@ for(var/index = 1, index <= src.laws.devillaws.len, index++) if (!src.devillawcheck[index]) src.devillawcheck[index] = "No" - list += {"[src.devillawcheck[index]] 666: [src.laws.devillaws[index]]
    "} + list += {"[src.devillawcheck[index]] 666: [src.laws.devillaws[index]]
    "} if (src.laws.zeroth) if (!src.lawcheck[1]) src.lawcheck[1] = "No" //Given Law 0's usual nature, it defaults to NOT getting reported. --NeoFite - list += {"[src.lawcheck[1]] 0: [src.laws.zeroth]
    "} + list += {"[src.lawcheck[1]] 0: [src.laws.zeroth]
    "} for (var/index = 1, index <= src.laws.ion.len, index++) var/law = src.laws.ion[index] @@ -266,7 +266,7 @@ if (length(law) > 0) if (!src.ioncheck[index]) src.ioncheck[index] = "Yes" - list += {"[src.ioncheck[index]] [ionnum()]: [law]
    "} + list += {"[src.ioncheck[index]] [ionnum()]: [law]
    "} src.ioncheck.len += 1 var/number = 1 @@ -278,7 +278,7 @@ if (!src.lawcheck[number+1]) src.lawcheck[number+1] = "Yes" - list += {"[src.lawcheck[number+1]] [number]: [law]
    "} + list += {"[src.lawcheck[number+1]] [number]: [law]
    "} number++ for (var/index = 1, index <= src.laws.supplied.len, index++) @@ -287,9 +287,9 @@ src.lawcheck.len += 1 if (!src.lawcheck[number+1]) src.lawcheck[number+1] = "Yes" - list += {"[src.lawcheck[number+1]] [number]: [law]
    "} + list += {"[src.lawcheck[number+1]] [number]: [law]
    "} number++ - list += {"

    State Laws"} + list += {"

    State Laws"} usr << browse(list, "window=laws") diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 299fa25226..5d943bc1e5 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -817,9 +817,9 @@ Pass a positive integer as an argument to override a bot's default speed. var/hack if(issilicon(user) || IsAdminGhost(user)) //Allows silicons or admins to toggle the emag status of a bot. hack += "[emagged == 2 ? "Software compromised! Unit may exhibit dangerous or erratic behavior." : "Unit operating normally. Release safety lock?"]
    " - hack += "Harm Prevention Safety System: [emagged ? "DANGER" : "Engaged"]
    " + hack += "Harm Prevention Safety System: [emagged ? "DANGER" : "Engaged"]
    " else if(!locked) //Humans with access can use this option to hide a bot from the AI's remote control panel and PDA control. - hack += "Remote network control radio: [remote_disabled ? "Disconnected" : "Connected"]
    " + hack += "Remote network control radio: [remote_disabled ? "Disconnected" : "Connected"]
    " return hack /mob/living/simple_animal/bot/proc/showpai(mob/user) @@ -829,9 +829,9 @@ Pass a positive integer as an argument to override a bot's default speed. eject += "Personality card status: " if(paicard) if(client) - eject += "Active" + eject += "Active" else - eject += "Inactive" + eject += "Inactive" else if(!allow_pai || key) eject += "Unavailable" else diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 18c4dcd40c..61c34b0466 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -278,14 +278,14 @@ dat += hack(user) dat += showpai(user) dat += text({" -Status: [on ? "On" : "Off"]
    +Status: [on ? "On" : "Off"]
    Behaviour controls are [locked ? "locked" : "unlocked"]
    Maintenance panel panel is [open ? "opened" : "closed"]"}) if(!locked || issilicon(user)|| IsAdminGhost(user)) - dat += "
    Clean Blood: [blood ? "Yes" : "No"]" - dat += "
    Clean Trash: [trash ? "Yes" : "No"]" - dat += "
    Exterminate Pests: [pests ? "Yes" : "No"]" - dat += "

    Patrol Station: [auto_patrol ? "Yes" : "No"]" + dat += "
    Clean Blood: [blood ? "Yes" : "No"]" + dat += "
    Clean Trash: [trash ? "Yes" : "No"]" + dat += "
    Exterminate Pests: [pests ? "Yes" : "No"]" + dat += "

    Patrol Station: [auto_patrol ? "Yes" : "No"]" return dat /mob/living/simple_animal/bot/cleanbot/Topic(href, href_list) diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index ddf4c93559..f2b30a0a3c 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -103,7 +103,7 @@ Status: []
    Behaviour controls are [locked ? "locked" : "unlocked"]
    Maintenance panel panel is [open ? "opened" : "closed"]
    "}, -"[on ? "On" : "Off"]" ) +"[on ? "On" : "Off"]" ) if(!locked || issilicon(user)|| IsAdminGhost(user)) if(!lasercolor) @@ -116,12 +116,12 @@ Operating Mode: []
    Report Arrests[]
    Auto Patrol[]"}, -"[idcheck ? "Yes" : "No"]", -"[weaponscheck ? "Yes" : "No"]", -"[check_records ? "Yes" : "No"]", -"[arrest_type ? "Detain" : "Arrest"]", -"[declare_arrests ? "Yes" : "No"]", -"[auto_patrol ? "On" : "Off"]" ) +"[idcheck ? "Yes" : "No"]", +"[weaponscheck ? "Yes" : "No"]", +"[check_records ? "Yes" : "No"]", +"[arrest_type ? "Detain" : "Arrest"]", +"[declare_arrests ? "Yes" : "No"]", +"[auto_patrol ? "On" : "Off"]" ) return dat diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index 1c3adb1dfe..f76042ab69 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -74,28 +74,28 @@ dat += hack(user) dat += showpai(user) dat += "Floor Repairer Controls v1.1

    " - dat += "Status: [on ? "On" : "Off"]
    " + dat += "Status: [on ? "On" : "Off"]
    " dat += "Maintenance panel panel is [open ? "opened" : "closed"]
    " dat += "Special tiles: " if(specialtiles) - dat += "Loaded \[[specialtiles]/[maxtiles]\]
    " + dat += "Loaded \[[specialtiles]/[maxtiles]\]
    " else dat += "None Loaded
    " dat += "Behaviour controls are [locked ? "locked" : "unlocked"]
    " if(!locked || issilicon(user) || IsAdminGhost(user)) - dat += "Add tiles to new hull plating: [autotile ? "Yes" : "No"]
    " - dat += "Place floor tiles: [placetiles ? "Yes" : "No"]
    " - dat += "Replace existing floor tiles with custom tiles: [replacetiles ? "Yes" : "No"]
    " - dat += "Repair damaged tiles and platings: [fixfloors ? "Yes" : "No"]
    " - dat += "Traction Magnets: [anchored ? "Engaged" : "Disengaged"]
    " - dat += "Patrol Station: [auto_patrol ? "Yes" : "No"]
    " + dat += "Add tiles to new hull plating: [autotile ? "Yes" : "No"]
    " + dat += "Place floor tiles: [placetiles ? "Yes" : "No"]
    " + dat += "Replace existing floor tiles with custom tiles: [replacetiles ? "Yes" : "No"]
    " + dat += "Repair damaged tiles and platings: [fixfloors ? "Yes" : "No"]
    " + dat += "Traction Magnets: [anchored ? "Engaged" : "Disengaged"]
    " + dat += "Patrol Station: [auto_patrol ? "Yes" : "No"]
    " var/bmode if(targetdirection) bmode = dir2text(targetdirection) else bmode = "disabled" - dat += "Line Mode : [bmode]
    " + dat += "Line Mode : [bmode]
    " return dat diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 04a83647ed..f41a6138cb 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -89,12 +89,12 @@ Status: []
    Behaviour controls are [locked ? "locked" : "unlocked"]
    Maintenance panel panel is [open ? "opened" : "closed"]"}, -"[on ? "On" : "Off"]" ) +"[on ? "On" : "Off"]" ) if(!locked || issilicon(user) || IsAdminGhost(user)) dat += text({"
    Auto Patrol: []"}, -"[auto_patrol ? "On" : "Off"]" ) +"[auto_patrol ? "On" : "Off"]" ) return dat /mob/living/simple_animal/bot/honkbot/proc/judgement_criteria() diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 7e9ef07a94..a33cee8d2d 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -136,37 +136,37 @@ dat += hack(user) dat += showpai(user) dat += "Medical Unit Controls v1.1

    " - dat += "Status: [on ? "On" : "Off"]
    " + dat += "Status: [on ? "On" : "Off"]
    " dat += "Maintenance panel panel is [open ? "opened" : "closed"]
    " dat += "Beaker: " if(reagent_glass) - dat += "Loaded \[[reagent_glass.reagents.total_volume]/[reagent_glass.reagents.maximum_volume]\]" + dat += "Loaded \[[reagent_glass.reagents.total_volume]/[reagent_glass.reagents.maximum_volume]\]" else dat += "None Loaded" dat += "
    Behaviour controls are [locked ? "locked" : "unlocked"]
    " if(!locked || issilicon(user) || IsAdminGhost(user)) dat += "Healing Threshold: " - dat += "-- " - dat += "- " + dat += "-- " + dat += "- " dat += "[heal_threshold] " - dat += "+ " - dat += "++" + dat += "+ " + dat += "++" dat += "
    " dat += "Injection Level: " - dat += "- " + dat += "- " dat += "[injection_amount] " - dat += "+ " + dat += "+ " dat += "
    " dat += "Reagent Source: " - dat += "[use_beaker ? "Loaded Beaker (When available)" : "Internal Synthesizer"]
    " + dat += "[use_beaker ? "Loaded Beaker (When available)" : "Internal Synthesizer"]
    " - dat += "Treat Viral Infections: [treat_virus ? "Yes" : "No"]
    " - dat += "The speaker switch is [shut_up ? "off" : "on"]. Toggle
    " - dat += "Critical Patient Alerts: [declare_crit ? "Yes" : "No"]
    " - dat += "Patrol Station: [auto_patrol ? "Yes" : "No"]
    " - dat += "Stationary Mode: [stationary_mode ? "Yes" : "No"]
    " + dat += "Treat Viral Infections: [treat_virus ? "Yes" : "No"]
    " + dat += "The speaker switch is [shut_up ? "off" : "on"]. Toggle
    " + dat += "Critical Patient Alerts: [declare_crit ? "Yes" : "No"]
    " + dat += "Patrol Station: [auto_patrol ? "Yes" : "No"]
    " + dat += "Stationary Mode: [stationary_mode ? "Yes" : "No"]
    " return dat diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index d8fcfd9344..b602e19125 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -282,22 +282,22 @@ dat += "Power level: [cell ? cell.percent() : 0]%" if(locked && !ai && !IsAdminGhost(user)) - dat += " 
    Controls are locked
    Unlock Controls" + dat += " 
    Controls are locked
    Unlock Controls" else - dat += " 
    Controls are unlocked
    Lock Controls

    " + dat += " 
    Controls are unlocked
    Lock Controls

    " - dat += "Toggle Power
    " - dat += "Stop
    " - dat += "Proceed
    " - dat += "Return to Home
    " - dat += "Set Destination
    " - dat += "Set Bot ID
    " - dat += "Set Home
    " - dat += "Toggle Auto Return Home ([auto_return ? "On":"Off"])
    " - dat += "Toggle Auto Pickup Crate ([auto_pickup ? "On":"Off"])
    " - dat += "Toggle Delivery Reporting ([report_delivery ? "On" : "Off"])
    " + dat += "Toggle Power
    " + dat += "Stop
    " + dat += "Proceed
    " + dat += "Return to Home
    " + dat += "Set Destination
    " + dat += "Set Bot ID
    " + dat += "Set Home
    " + dat += "Toggle Auto Return Home ([auto_return ? "On":"Off"])
    " + dat += "Toggle Auto Pickup Crate ([auto_pickup ? "On":"Off"])
    " + dat += "Toggle Delivery Reporting ([report_delivery ? "On" : "Off"])
    " if(load) - dat += "Unload Now
    " + dat += "Unload Now
    " dat += "
    The maintenance hatch is closed.
    " return dat diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 772604a527..4300746901 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -105,7 +105,7 @@ Status: []
    Behaviour controls are [locked ? "locked" : "unlocked"]
    Maintenance panel panel is [open ? "opened" : "closed"]"}, -"[on ? "On" : "Off"]" ) +"[on ? "On" : "Off"]" ) if(!locked || issilicon(user) || IsAdminGhost(user)) dat += text({"
    @@ -116,12 +116,12 @@ Operating Mode: []
    Report Arrests[]
    Auto Patrol: []"}, -"[idcheck ? "Yes" : "No"]", -"[weaponscheck ? "Yes" : "No"]", -"[check_records ? "Yes" : "No"]", -"[arrest_type ? "Detain" : "Arrest"]", -"[declare_arrests ? "Yes" : "No"]", -"[auto_patrol ? "On" : "Off"]" ) +"[idcheck ? "Yes" : "No"]", +"[weaponscheck ? "Yes" : "No"]", +"[check_records ? "Yes" : "No"]", +"[arrest_type ? "Detain" : "Arrest"]", +"[declare_arrests ? "Yes" : "No"]", +"[auto_patrol ? "On" : "Off"]" ) return dat diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 5e8a875dce..2a94052274 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -68,13 +68,13 @@ var/dat = "
    Inventory of [name]

    " if(inventory_head) - dat += "
    Head: [inventory_head] (Remove)" + dat += "
    Head: [inventory_head] (Remove)" else - dat += "
    Head: Nothing" + dat += "
    Head: Nothing" if(inventory_back) - dat += "
    Back: [inventory_back] (Remove)" + dat += "
    Back: [inventory_back] (Remove)" else - dat += "
    Back: Nothing" + dat += "
    Back: Nothing" user << browse(dat, text("window=mob[];size=325x500", real_name)) onclose(user, "mob[real_name]") diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index a214895b83..67c9fd21ed 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -579,7 +579,7 @@ Difficulty: Very Hard if(..() && !ready_to_deploy) GLOB.poi_list |= src ready_to_deploy = TRUE - notify_ghosts("An anomalous crystal has been activated in [get_area(src)]! This crystal can always be used by ghosts hereafter.", enter_link = "(Click to enter)", ghost_sound = 'sound/effects/ghost2.ogg', source = src, action = NOTIFY_ATTACK) + notify_ghosts("An anomalous crystal has been activated in [get_area(src)]! This crystal can always be used by ghosts hereafter.", enter_link = "(Click to enter)", ghost_sound = 'sound/effects/ghost2.ogg', source = src, action = NOTIFY_ATTACK) /obj/machinery/anomalous_crystal/helpers/attack_ghost(mob/dead/observer/user) ..() diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index edcf1a0f73..83291d7822 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -127,7 +127,7 @@ GLOBAL_LIST_INIT(protected_objects, list(/obj/structure/table, /obj/structure/ca if(owner != creator) LoseTarget() creator = owner - faction |= "\ref[owner]" + faction |= "[REF(owner)]" /mob/living/simple_animal/hostile/mimic/copy/proc/CheckObject(obj/O) if((isitem(O) || isstructure(O)) && !is_type_in_list(O, GLOB.protected_objects)) @@ -160,7 +160,7 @@ GLOBAL_LIST_INIT(protected_objects, list(/obj/structure/table, /obj/structure/ca maxHealth = health if(user) creator = user - faction += "\ref[creator]" // very unique + faction += "[REF(creator)]" // very unique if(destroy_original) qdel(O) return 1 diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 085a95540f..6ff04231af 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -187,9 +187,9 @@ user.set_machine(src) var/dat = "

    Inventory of [name]

    " if(ears) - dat += "
    Headset: [ears] (Remove)" + dat += "
    Headset: [ears] (Remove)" else - dat += "
    Headset: Nothing" + dat += "
    Headset: Nothing" user << browse(dat, "window=mob[real_name];size=325x500") onclose(user, "mob[real_name]") diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index ddd1d3e2dc..37dd143e96 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1,3 +1,6 @@ +/mob + use_tag = TRUE + /mob/Destroy()//This makes sure that mobs with clients/keys are not just deleted from the game. GLOB.mob_list -= src GLOB.dead_mob_list -= src @@ -540,7 +543,7 @@ if(Adjacent(usr)) show_inv(usr) else - usr << browse(null,"window=mob\ref[src]") + usr << browse(null,"window=mob[REF(src)]") // The src mob is trying to strip an item from someone // Defined in living.dm @@ -831,10 +834,10 @@ if(exact_match) //if we need an exact match, we need to do some bullfuckery. var/list/faction_src = faction.Copy() var/list/faction_target = target.faction.Copy() - if(!("\ref[src]" in faction_target)) //if they don't have our ref faction, remove it from our factions list. - faction_src -= "\ref[src]" //if we don't do this, we'll never have an exact match. - if(!("\ref[target]" in faction_src)) - faction_target -= "\ref[target]" //same thing here. + if(!("[REF(src)]" in faction_target)) //if they don't have our ref faction, remove it from our factions list. + faction_src -= "[REF(src)]" //if we don't do this, we'll never have an exact match. + if(!("[REF(target)]" in faction_src)) + faction_target -= "[REF(target)]" //same thing here. return faction_check(faction_src, faction_target, TRUE) return faction_check(faction, target.faction, FALSE) @@ -973,18 +976,18 @@ /mob/vv_get_dropdown() . = ..() . += "---" - .["Gib"] = "?_src_=vars;[HrefToken()];gib=\ref[src]" - .["Give Spell"] = "?_src_=vars;[HrefToken()];give_spell=\ref[src]" - .["Remove Spell"] = "?_src_=vars;[HrefToken()];remove_spell=\ref[src]" - .["Give Disease"] = "?_src_=vars;[HrefToken()];give_disease=\ref[src]" - .["Toggle Godmode"] = "?_src_=vars;[HrefToken()];godmode=\ref[src]" - .["Drop Everything"] = "?_src_=vars;[HrefToken()];drop_everything=\ref[src]" - .["Regenerate Icons"] = "?_src_=vars;[HrefToken()];regenerateicons=\ref[src]" - .["Make Space Ninja"] = "?_src_=vars;[HrefToken()];ninja=\ref[src]" - .["Show player panel"] = "?_src_=vars;[HrefToken()];mob_player_panel=\ref[src]" - .["Toggle Build Mode"] = "?_src_=vars;[HrefToken()];build_mode=\ref[src]" - .["Assume Direct Control"] = "?_src_=vars;[HrefToken()];direct_control=\ref[src]" - .["Offer Control to Ghosts"] = "?_src_=vars;[HrefToken()];offer_control=\ref[src]" + .["Gib"] = "?_src_=vars;[HrefToken()];gib=[REF(src)]" + .["Give Spell"] = "?_src_=vars;[HrefToken()];give_spell=[REF(src)]" + .["Remove Spell"] = "?_src_=vars;[HrefToken()];remove_spell=[REF(src)]" + .["Give Disease"] = "?_src_=vars;[HrefToken()];give_disease=[REF(src)]" + .["Toggle Godmode"] = "?_src_=vars;[HrefToken()];godmode=[REF(src)]" + .["Drop Everything"] = "?_src_=vars;[HrefToken()];drop_everything=[REF(src)]" + .["Regenerate Icons"] = "?_src_=vars;[HrefToken()];regenerateicons=[REF(src)]" + .["Make Space Ninja"] = "?_src_=vars;[HrefToken()];ninja=[REF(src)]" + .["Show player panel"] = "?_src_=vars;[HrefToken()];mob_player_panel=[REF(src)]" + .["Toggle Build Mode"] = "?_src_=vars;[HrefToken()];build_mode=[REF(src)]" + .["Assume Direct Control"] = "?_src_=vars;[HrefToken()];direct_control=[REF(src)]" + .["Offer Control to Ghosts"] = "?_src_=vars;[HrefToken()];offer_control=[REF(src)]" /mob/vv_get_var(var_name) switch(var_name) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index af12b87eec..2b397e4eda 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -398,7 +398,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp if(flashwindow) window_flash(O.client) if(source) - var/obj/screen/alert/notify_action/A = O.throw_alert("\ref[source]_notify_action", /obj/screen/alert/notify_action) + var/obj/screen/alert/notify_action/A = O.throw_alert("[REF(source)]_notify_action", /obj/screen/alert/notify_action) if(A) if(O.client.prefs && O.client.prefs.UI_style) A.icon = ui_style2icon(O.client.prefs.UI_style) diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm index 0562bf700d..88f322328f 100644 --- a/code/modules/modular_computers/file_system/programs/card.dm +++ b/code/modules/modular_computers/file_system/programs/card.dm @@ -331,7 +331,7 @@ "desc_close" = status_close["desc"]))) data["slots"] = pos - data["src"] = "\ref[src]" + data["src"] = "[REF(src)]" data["station_name"] = station_name() diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index f56a1a3f1b..0c1ae987cf 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /obj/item/clipboard name = "clipboard" icon = 'icons/obj/bureaucracy.dmi' @@ -120,3 +121,127 @@ //Update everything attack_self(usr) update_icon() +======= +/obj/item/clipboard + name = "clipboard" + icon = 'icons/obj/bureaucracy.dmi' + icon_state = "clipboard" + item_state = "clipboard" + throwforce = 0 + w_class = WEIGHT_CLASS_SMALL + throw_speed = 3 + throw_range = 7 + var/obj/item/pen/haspen //The stored pen. + var/obj/item/paper/toppaper //The topmost piece of paper. + slot_flags = SLOT_BELT + resistance_flags = FLAMMABLE + +/obj/item/clipboard/Initialize() + update_icon() + . = ..() + +/obj/item/clipboard/Destroy() + QDEL_NULL(haspen) + QDEL_NULL(toppaper) //let movable/Destroy handle the rest + return ..() + +/obj/item/clipboard/update_icon() + cut_overlays() + if(toppaper) + add_overlay(toppaper.icon_state) + copy_overlays(toppaper) + if(haspen) + add_overlay("clipboard_pen") + add_overlay("clipboard_over") + + +/obj/item/clipboard/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/paper)) + if(!user.transferItemToLoc(W, src)) + return + toppaper = W + to_chat(user, "You clip the paper onto \the [src].") + update_icon() + else if(toppaper) + toppaper.attackby(user.get_active_held_item(), user) + update_icon() + + +/obj/item/clipboard/attack_self(mob/user) + var/dat = "Clipboard" + if(haspen) + dat += "Remove Pen


    " + else + dat += "Add Pen

    " + + //The topmost paper. You can't organise contents directly in byond, so this is what we're stuck with. -Pete + if(toppaper) + var/obj/item/paper/P = toppaper + dat += "Write Remove - [P.name]

    " + + for(P in src) + if(P == toppaper) + continue + dat += "Write Remove Move to top - [P.name]
    " + user << browse(dat, "window=clipboard") + onclose(user, "clipboard") + add_fingerprint(usr) + + +/obj/item/clipboard/Topic(href, href_list) + ..() + if(usr.stat || usr.restrained()) + return + + if(usr.contents.Find(src)) + + if(href_list["pen"]) + if(haspen) + haspen.loc = usr.loc + usr.put_in_hands(haspen) + haspen = null + + if(href_list["addpen"]) + if(!haspen) + var/obj/item/held = usr.get_active_held_item() + if(istype(held, /obj/item/pen)) + var/obj/item/pen/W = held + if(!usr.transferItemToLoc(W, src)) + return + haspen = W + to_chat(usr, "You slot [W] into [src].") + + if(href_list["write"]) + var/obj/item/P = locate(href_list["write"]) + if(istype(P) && P.loc == src) + if(usr.get_active_held_item()) + P.attackby(usr.get_active_held_item(), usr) + + if(href_list["remove"]) + var/obj/item/P = locate(href_list["remove"]) + if(istype(P) && P.loc == src) + P.loc = usr.loc + usr.put_in_hands(P) + if(P == toppaper) + toppaper = null + var/obj/item/paper/newtop = locate(/obj/item/paper) in src + if(newtop && (newtop != P)) + toppaper = newtop + else + toppaper = null + + if(href_list["read"]) + var/obj/item/paper/P = locate(href_list["read"]) + if(istype(P) && P.loc == src) + usr.examinate(P) + + if(href_list["top"]) + var/obj/item/P = locate(href_list["top"]) + if(istype(P) && P.loc == src) + toppaper = P + to_chat(usr, "You move [P.name] to the top.") + + //Update everything + attack_self(usr) + update_icon() +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index f9d0faa16e..72dce2b8d2 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -76,7 +76,7 @@ var/i for(i=contents.len, i>=1, i--) var/obj/item/P = contents[i] - dat += "
    " + dat += "" dat += "

    Name

    Status

    Location

    Control

    [bot_mode][bot_area.name]InterfaceCallInterfaceCall
    [P.name]
    [P.name]
    " user << browse("[name][dat]", "window=filingcabinet;size=350x300") diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index d8d4fef0f8..3221a2c8db 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -46,7 +46,7 @@ var/dat = "[name]" for(var/obj/item/I in src) - dat += "Remove - [I.name]
    " + dat += "Remove - [I.name]
    " user << browse(dat, "window=folder") onclose(user, "folder") add_fingerprint(usr) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index ae6751f526..1fb1846f4c 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -175,8 +175,8 @@ /obj/item/paper/proc/updateinfolinks() info_links = info for(var/i in 1 to min(fields, 15)) - addtofield(i, "write", 1) - info_links = info_links + "write" + addtofield(i, "write", 1) + info_links = info_links + "write" /obj/item/paper/proc/clearpaper() @@ -277,7 +277,7 @@ else info += t // Oh, he wants to edit to the end of the file, let him. updateinfolinks() - usr << browse("[name][info_links]
    [stamps]", "window=[name]") // Update the window + usr << browse("[name][info_links]
    [stamps]", "window=[name]") // Update the window update_icon() @@ -292,7 +292,7 @@ if(istype(P, /obj/item/pen) || istype(P, /obj/item/toy/crayon)) if(user.is_literate()) - user << browse("[name][info_links]
    [stamps]", "window=[name]") + user << browse("[name][info_links]
    [stamps]", "window=[name]") return else to_chat(user, "You don't know how to read or write.") diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index d4e78c4ef3..20038f5745 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -41,18 +41,18 @@ var/dat = "Photocopier

    " if(copy || photocopy || doccopy || (ass && (ass.loc == src.loc))) - dat += "Remove Paper
    " + dat += "Remove Paper
    " if(toner) - dat += "Copy
    " + dat += "Copy
    " dat += "Printing: [copies] copies." - dat += "- " - dat += "+

    " + dat += "- " + dat += "+

    " if(photocopy) - dat += "Printing in [greytoggle]

    " + dat += "Printing in [greytoggle]

    " else if(toner) dat += "Please insert paper to copy.

    " if(isAI(user)) - dat += "Print photo from database

    " + dat += "Print photo from database

    " dat += "Current toner level: [toner]" if(!toner) dat +="
    Please insert a new toner cartridge!" diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm index 29e7b53cd2..a37344d635 100644 --- a/code/modules/power/antimatter/control.dm +++ b/code/modules/power/antimatter/control.dm @@ -293,28 +293,28 @@ var/dat = "" dat += "AntiMatter Control Panel
    " - dat += "Close
    " - dat += "Refresh
    " - dat += "Force Shielding Update

    " + dat += "Close
    " + dat += "Refresh
    " + dat += "Force Shielding Update

    " dat += "Status: [(active?"Injecting":"Standby")]
    " - dat += "Toggle Status
    " + dat += "Toggle Status
    " dat += "Stability: [stability]%
    " dat += "Reactor parts: [linked_shielding.len]
    "//TODO: perhaps add some sort of stability check dat += "Cores: [linked_cores.len]

    " dat += "-Current Efficiency: [reported_core_efficiency]
    " - dat += "-Average Stability: [stored_core_stability] (update)
    " + dat += "-Average Stability: [stored_core_stability] (update)
    " dat += "Last Produced: [DisplayPower(stored_power)]
    " dat += "Fuel: " if(!fueljar) dat += "
    No fuel receptacle detected." else - dat += "Eject
    " + dat += "Eject
    " dat += "- [fueljar.fuel]/[fueljar.fuel_max] Units
    " dat += "- Injecting: [fuel_injection] units
    " - dat += "- --|++

    " + dat += "- --|++

    " user << browse(dat, "window=AMcontrol;size=420x500") diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index 6aeaff9477..5369686b31 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -166,7 +166,7 @@ else t += "Unable to locate all parts!" if(include_link) - t += "
    Close" + t += "
    Close" return t diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index b98ea7f6c9..e19f152a75 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -233,9 +233,9 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne return var/dat = "Gravity Generator Breaker: " if(breaker) - dat += "ON OFF" + dat += "ON OFF" else - dat += "ON OFF " + dat += "ON OFF " dat += "
    Generator Status:
    " if(charging_state != POWER_IDLE) diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 6031f6edab..73f48a2b28 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -235,16 +235,16 @@ var/dat = text("[name]
    ") if (active) - dat += text("Generator: On
    ") + dat += text("Generator: On
    ") else - dat += text("Generator: Off
    ") - dat += text("[capitalize(sheet_name)]: [sheets] - Eject
    ") + dat += text("Generator: Off
    ") + dat += text("[capitalize(sheet_name)]: [sheets] - Eject
    ") var/stack_percent = round(sheet_left * 100, 1) dat += text("Current stack: [stack_percent]%
    ") - dat += text("Power output: - [power_gen * power_output] +
    ") + dat += text("Power output: - [power_gen * power_output] +
    ") dat += text("Power current: [(powernet == null ? "Unconnected" : "[DisplayPower(avail())]")]
    ") dat += text("Heat: [current_heat]
    ") - dat += "
    Close" + dat += "
    Close" user << browse(dat, "window=port_gen") onclose(user, "port_gen") diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index dd98f092ea..266e5b22f5 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -232,11 +232,11 @@ user.set_machine(src) var/dat = "" - dat += "Close

    " + dat += "Close

    " dat += "

    Status

    " if(!assembled) dat += "Unable to detect all parts!
    " - dat += "Run Scan

    " + dat += "Run Scan

    " else dat += "All parts in place.

    " dat += "Power:" @@ -244,9 +244,9 @@ dat += "On
    " else dat += "Off
    " - dat += "Toggle Power

    " + dat += "Toggle Power

    " dat += "Particle Strength: [strength] " - dat += "--|++

    " + dat += "--|++

    " var/datum/browser/popup = new(user, "pacontrol", name, 420, 300) popup.set_content(dat) diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index ee531697aa..76145466da 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -276,9 +276,9 @@ t += "Turbine: [round(compressor.rpm)] RPM
    " - t += "Starter: [ compressor.starter ? "Off On" : "Off On"]" + t += "Starter: [ compressor.starter ? "Off On" : "Off On"]" - t += "
    Close" + t += "
    Close" t += "" var/datum/browser/popup = new(user, "turbine", name) @@ -334,18 +334,18 @@ if(compressor.stat || compressor.turbine.stat) dat += "[compressor.stat ? "Compressor is inoperable
    " : "Turbine is inoperable"]" else - dat += {"Turbine status: [ src.compressor.starter ? "Off On" : "Off On"] + dat += {"Turbine status: [ src.compressor.starter ? "Off On" : "Off On"] \n
    \nTurbine speed: [src.compressor.rpm]rpm
    \nPower currently being generated: [DisplayPower(src.compressor.turbine.lastgen)]
    \nInternal gas temperature: [src.compressor.gas_contained.temperature]K
    - \n
    Close + \n
    Close \n
    \n"} else dat += "There is [!compressor ? "no compressor" : " compressor[!compressor.turbine ? " but no turbine" : ""]"].
    " if(!compressor) - dat += "Search for compressor" + dat += "Search for compressor" var/datum/browser/popup = new(user, "turbinecomputer", name) popup.set_content(dat) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 57960fcea7..3037d8690c 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -307,7 +307,7 @@ var/mob/living/simple_animal/hostile/statue/S = new(P.loc, owner) S.name = "statue of [L.name]" if(owner) - S.faction = list("\ref[owner]") + S.faction = list("[REF(owner)]") S.icon = P.icon S.icon_state = P.icon_state S.copy_overlays(P, TRUE) diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index eb1ee87df9..77fcd50306 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -248,14 +248,14 @@ "} if (is_beaker_ready) if(!is_chamber_empty && !(stat & (NOPOWER|BROKEN))) - dat += "Grind the reagents
    " - dat += "Juice the reagents

    " + dat += "Grind the reagents
    " + dat += "Juice the reagents

    " else if (beaker.reagents.total_volume) - dat += "Mix the reagents

    " + dat += "Mix the reagents

    " if(length(holdingitems)) - dat += "Eject the reagents
    " + dat += "Eject the reagents
    " if(beaker) - dat += "Detach the beaker
    " + dat += "Detach the beaker
    " else dat += "Please wait..." diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index 428c10e24a..aaa070703f 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -37,7 +37,7 @@ var/turf/T = get_turf(A) var/area/my_area = get_area(T) var/message = "A [reaction_name] reaction has occurred in [my_area.name] [ADMIN_COORDJMP(T)]" - message += " (VV)" + message += " (VV)" var/mob/M = get(A, /mob) if(M) diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index bb18ea187c..0bafcba54d 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -154,7 +154,7 @@ dat += "" for (var/i = 1, i <= GLOB.TAGGERLOCATIONS.len, i++) - dat += "" + dat += "" if(i%4==0) dat += "" diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 4ba8925df6..4cf711bbee 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -138,7 +138,7 @@ user.set_machine(src) var/dat = "
    " if(!linked_console) - dat += "Scan for R&D Console
    " + dat += "Scan for R&D Console
    " if(loaded_item) dat += "Loaded Item: [loaded_item]
    " dat += "Technology:
    " @@ -146,19 +146,19 @@ for(var/T in D) dat += "[T]
    " dat += "

    Available tests:" - dat += "
    Poke" - dat += "
    Irradiate" - dat += "
    Gas" - dat += "
    Burn" - dat += "
    Freeze" - dat += "
    Destroy
    " + dat += "
    Poke" + dat += "
    Irradiate" + dat += "
    Gas" + dat += "
    Burn" + dat += "
    Freeze" + dat += "
    Destroy
    " if(istype(loaded_item, /obj/item/relic)) - dat += "
    Discover
    " - dat += "
    Eject" + dat += "
    Discover
    " + dat += "
    Eject" else dat += "Nothing loaded." - dat += "
    Refresh
    " - dat += "
    Close
    " + dat += "
    Refresh
    " + dat += "
    Close
    " var/datum/browser/popup = new(user, "experimentor","Experimentor", 700, 400, src) popup.set_content(dat) popup.open() diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index 0cef65c07c..295dd4429a 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -19,7 +19,7 @@ GLOBAL_LIST_INIT(message_servers, list()) /datum/data_pda_msg/proc/get_photo_ref() if(photo) - return "(Photo)" + return "(Photo)" return "" /datum/data_pda_msg/Topic(href,href_list) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index d912bc908e..e02eb4a970 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -662,7 +662,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(0.2) dat += "
    SYSTEM LOCKED
    " - dat += "Unlock" + dat += "Unlock" if(0.3) dat += "
    Constructing Prototype. Please Wait...
    " @@ -673,30 +673,30 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(1.0) //Main Menu dat += "
    " dat += "

    Main Menu:


    " - dat += "Current Research Levels
    " + dat += "Current Research Levels
    " if(t_disk) - dat += "Disk Operations
    " + dat += "Disk Operations
    " else if(d_disk) - dat += "Disk Operations
    " + dat += "Disk Operations
    " else dat += "Disk Operations
    " if(linked_destroy) - dat += "Destructive Analyzer Menu
    " + dat += "Destructive Analyzer Menu
    " else dat += "Destructive Analyzer Menu
    " if(linked_lathe) - dat += "Protolathe Construction Menu
    " + dat += "Protolathe Construction Menu
    " else dat += "Protolathe Construction Menu
    " if(linked_imprinter) - dat += "Circuit Construction Menu
    " + dat += "Circuit Construction Menu
    " else dat += "Circuit Construction Menu
    " - dat += "Settings" + dat += "Settings" dat += "
    " if(1.1) //Research viewer - dat += "Main Menu" + dat += "Main Menu" dat += "

    Current Research Levels:


    " for(var/v in files.known_tech) var/datum/tech/T = files.known_tech[v] @@ -708,8 +708,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "
    " if(1.2) //Technology Disk Menu - dat += "Main Menu
    " - dat += "Disk Operations: Clear DiskUpload AllEject Disk" + dat += "Main Menu
    " + dat += "Disk Operations: Clear DiskUpload AllEject Disk" for(var/i in 1 to t_disk.max_tech_stored) dat += "
    " if(t_disk.tech_stored[i]) @@ -717,25 +717,25 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Name: [tech.name]
    " dat += "Level: [tech.level]
    " dat += "Description: [tech.desc]
    " - dat += "Operations: Upload to DatabaseClear Slot" + dat += "Operations: Upload to DatabaseClear Slot" else - dat += "Empty Slot
    Operations: Load Tech to Slot" + dat += "Empty Slot
    Operations: Load Tech to Slot" dat += "
    " if(1.3) //Technology Disk submenu - dat += "Main Menu" - dat += "Return to Disk Operations
    " + dat += "Main Menu" + dat += "Return to Disk Operations
    " dat += "

    Load Technology to Disk:


    " for(var/v in files.known_tech) var/datum/tech/T = files.known_tech[v] if(T.level <= 0) continue dat += "[T.name]" - dat += "Copy to Disk
    " + dat += "Copy to Disk
    " dat += "
    " if(1.4) //Design Disk menu. - dat += "Main Menu
    " - dat += "Disk Operations: Clear DiskUpload AllEject Disk" + dat += "Main Menu
    " + dat += "Disk Operations: Clear DiskUpload AllEject Disk" for(var/i in 1 to d_disk.max_blueprints) dat += "
    " if(d_disk.blueprints[i]) @@ -761,66 +761,66 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/all_mats = D.materials + D.reagents_list for(var/M in all_mats) dat += "* [CallMaterialName(M)] x [all_mats[M]]
    " - dat += "Operations: Upload to Database Clear Slot" + dat += "Operations: Upload to Database Clear Slot" else - dat += "Empty Slot
    Operations: Load Design to Slot" + dat += "Empty Slot
    Operations: Load Design to Slot" dat += "
    " if(1.5) //Design disk submenu - dat += "Main Menu" - dat += "Return to Disk Operations
    " + dat += "Main Menu" + dat += "Return to Disk Operations
    " dat += "

    Load Design to Disk:


    " for(var/v in files.known_designs) var/datum/design/D = files.known_designs[v] dat += "[D.name] " - dat += "Copy to Disk
    " + dat += "Copy to Disk
    " dat += "
    " if(1.6) //R&D console settings - dat += "Main Menu
    " + dat += "Main Menu
    " dat += "

    R&D Console Setting:


    " if(sync) - dat += "Sync Database with Network
    " + dat += "Sync Database with Network
    " dat += "Connect to Research Network
    " - dat += "Disconnect from Research Network
    " + dat += "Disconnect from Research Network
    " else dat += "Sync Database with Network
    " - dat += "Connect to Research Network
    " + dat += "Connect to Research Network
    " dat += "Disconnect from Research Network
    " - dat += "Device Linkage Menu
    " - dat += "Lock Console
    " - dat += "Reset R&D Database
    " + dat += "Device Linkage Menu
    " + dat += "Lock Console
    " + dat += "Reset R&D Database
    " if(1.7) //R&D device linkage - dat += "Main Menu" - dat += "Settings Menu
    " + dat += "Main Menu" + dat += "Settings Menu
    " dat += "

    R&D Console Device Linkage Menu:


    " - dat += "Re-sync with Nearby Devices

    " + dat += "Re-sync with Nearby Devices

    " dat += "

    Linked Devices:


    " if(linked_destroy) - dat += "* Destructive Analyzer Disconnect
    " + dat += "* Destructive Analyzer Disconnect
    " else dat += "* No Destructive Analyzer Linked
    " if(linked_lathe) - dat += "* Protolathe Disconnect
    " + dat += "* Protolathe Disconnect
    " else dat += "* No Protolathe Linked
    " if(linked_imprinter) - dat += "* Circuit Imprinter Disconnect
    " + dat += "* Circuit Imprinter Disconnect
    " else dat += "* No Circuit Imprinter Linked
    " dat += "
    " ////////////////////DESTRUCTIVE ANALYZER SCREENS//////////////////////////// if(2.0) - dat += "Main Menu" + dat += "Main Menu" dat += "
    NO DESTRUCTIVE ANALYZER LINKED TO CONSOLE
    " if(2.1) - dat += "Main Menu" + dat += "Main Menu" dat += "
    No Item Loaded. Standing-by...
    " if(2.2) - dat += "Main Menu
    " + dat += "Main Menu
    " dat += "

    Deconstruction Menu


    " dat += "Name: [linked_destroy.loaded_item.name]
    " dat += "Origin Tech:
    " @@ -833,27 +833,27 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "
    " dat += "
    Options: " - dat += "Deconstruct Item" - dat += "Eject Item" + dat += "Deconstruct Item" + dat += "Eject Item" if(2.3) - dat += "Main Menu" + dat += "Main Menu" dat += "
    Item is neither reliable enough or broken enough to learn from.
    " /////////////////////PROTOLATHE SCREENS///////////////////////// if(3.0) - dat += "Main Menu
    " + dat += "Main Menu
    " dat += "
    NO PROTOLATHE LINKED TO CONSOLE
    " if(3.1) - dat += "Main Menu " - dat += "Material Storage" - dat += "Chemical Storage
    " + dat += "Main Menu " + dat += "Material Storage" + dat += "Chemical Storage
    " dat += "

    Protolathe Menu:


    " dat += "Material Amount: [linked_materials.total_amount] / [linked_materials.max_amount]
    " dat += "Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
    " - dat += "\ - \ + dat += "\ + \ \ \ \ @@ -864,8 +864,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, //Grouping designs by categories, to improve readability if(3.15) - dat += "Main Menu" - dat += "Protolathe Menu" + dat += "Main Menu" + dat += "Protolathe Menu" dat += "

    Browsing [selected_category]:


    " dat += "Material Amount: [linked_materials.total_amount] / [linked_materials.max_amount]
    " dat += "Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
    " @@ -890,11 +890,11 @@ won't update every console in existence) but it's more of a hassle to do. Also, c = min(c,t) if (c >= 1) - dat += "[D.name]" + dat += "[D.name]" if(c >= 5) - dat += "x5" + dat += "x5" if(c >= 10) - dat += "x10" + dat += "x10" dat += "[temp_material]" else dat += "[D.name][temp_material]" @@ -902,8 +902,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "
    " if(3.17) //Display search result - dat += "Main Menu" - dat += "Protolathe Menu" + dat += "Main Menu" + dat += "Protolathe Menu" dat += "

    Search results:


    " dat += "Material Amount: [linked_materials.total_amount] / [linked_materials.max_amount]
    " dat += "Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
    " @@ -924,11 +924,11 @@ won't update every console in existence) but it's more of a hassle to do. Also, c = min(c,t) if (c >= 1) - dat += "[D.name]" + dat += "[D.name]" if(c >= 5) - dat += "x5" + dat += "x5" if(c >= 10) - dat += "x10" + dat += "x10" dat += "[temp_material]" else dat += "[D.name][temp_material]" @@ -936,8 +936,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "
    " if(3.2) //Protolathe Material Storage Sub-menu - dat += "Main Menu" - dat += "Protolathe Menu
    " + dat += "Main Menu" + dat += "Protolathe Menu
    " dat += "

    Material Storage:



    " if(!linked_lathe) dat += "ERROR: Protolathe connection failed." @@ -946,38 +946,38 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/datum/material/M = linked_materials.materials[mat_id] dat += "* [M.amount] of [M.name]: " if(M.amount >= MINERAL_MATERIAL_AMOUNT) - dat += "Eject " + dat += "Eject " if(M.amount >= MINERAL_MATERIAL_AMOUNT*5) - dat += "5x " + dat += "5x " if(M.amount >= MINERAL_MATERIAL_AMOUNT) - dat += "All" + dat += "All" dat += "
    " dat += "
    " if(3.3) - dat += "Main Menu" - dat += "Protolathe Menu" - dat += "Disposal All Chemicals in Storage
    " + dat += "Main Menu" + dat += "Protolathe Menu" + dat += "Disposal All Chemicals in Storage
    " dat += "

    Chemical Storage:



    " for(var/datum/reagent/R in linked_lathe.reagents.reagent_list) dat += "[R.name]: [R.volume]" - dat += "Purge
    " + dat += "Purge
    " ///////////////////CIRCUIT IMPRINTER SCREENS//////////////////// if(4.0) - dat += "Main Menu
    " + dat += "Main Menu
    " dat += "
    NO CIRCUIT IMPRINTER LINKED TO CONSOLE
    " if(4.1) - dat += "Main Menu" - dat += "Material Storage" - dat += "Chemical Storage
    " + dat += "Main Menu" + dat += "Material Storage" + dat += "Chemical Storage
    " dat += "

    Circuit Imprinter Menu:


    " dat += "Material Amount: [imprinter_materials.total_amount]
    " dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
    " - dat += "\ - \ + dat += "\ + \ \ \ \ @@ -987,8 +987,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += list_categories(linked_imprinter.categories, 4.15) if(4.15) - dat += "Main Menu" - dat += "Circuit Imprinter Menu" + dat += "Main Menu" + dat += "Circuit Imprinter Menu" dat += "

    Browsing [selected_category]:


    " dat += "Material Amount: [imprinter_materials.total_amount]
    " dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
    " @@ -1011,14 +1011,14 @@ won't update every console in existence) but it's more of a hassle to do. Also, else temp_materials += " [all_materials[M]/coeff] [CallMaterialName(M)]" if (check_materials) - dat += "[D.name][temp_materials]
    " + dat += "[D.name][temp_materials]
    " else dat += "[D.name][temp_materials]
    " dat += "
    " if(4.17) - dat += "Main Menu" - dat += "Circuit Imprinter Menu" + dat += "Main Menu" + dat += "Circuit Imprinter Menu" dat += "

    Search results:


    " dat += "Material Amount: [imprinter_materials.total_amount]
    " dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
    " @@ -1036,23 +1036,23 @@ won't update every console in existence) but it's more of a hassle to do. Also, else temp_materials += " [all_materials[M]/coeff] [CallMaterialName(M)]" if (check_materials) - dat += "[D.name][temp_materials]
    " + dat += "[D.name][temp_materials]
    " else dat += "[D.name][temp_materials]
    " dat += "
    " if(4.2) //Circuit Imprinter Material Storage Sub-menu - dat += "Main Menu" - dat += "Circuit Imprinter Menu" - dat += "Disposal All Chemicals in Storage
    " + dat += "Main Menu" + dat += "Circuit Imprinter Menu" + dat += "Disposal All Chemicals in Storage
    " dat += "

    Chemical Storage:



    " for(var/datum/reagent/R in linked_imprinter.reagents.reagent_list) dat += "[R.name]: [R.volume]" - dat += "Purge
    " + dat += "Purge
    " if(4.3) - dat += "Main Menu" - dat += "Circuit Imprinter Menu
    " + dat += "Main Menu" + dat += "Circuit Imprinter Menu
    " dat += "

    Material Storage:



    " if(!linked_imprinter) dat += "ERROR: Protolathe connection failed." @@ -1061,11 +1061,11 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/datum/material/M = imprinter_materials.materials[mat_id] dat += "* [M.amount] of [M.name]: " if(M.amount >= MINERAL_MATERIAL_AMOUNT) - dat += "Eject " + dat += "Eject " if(M.amount >= MINERAL_MATERIAL_AMOUNT*5) - dat += "5x " + dat += "5x " if(M.amount >= MINERAL_MATERIAL_AMOUNT) - dat += "All" + dat += "All" dat += "
    " dat += "
    " @@ -1087,7 +1087,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "
    " line_length = 1 - dat += "" + dat += "" line_length++ dat += "
    [GLOB.TAGGERLOCATIONS[i]][GLOB.TAGGERLOCATIONS[i]]
    [C][C]
    " diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 98f5fef616..61f5a12a81 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -253,10 +253,10 @@ if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin) continue dat += "[S.name] || " - dat += "Access Rights | " - dat += "Data Management" + dat += "Access Rights | " + dat += "Data Management" if(badmin) - dat += " | Server-to-Server Transfer" + dat += " | Server-to-Server Transfer" dat += "
    " if(1) //Access rights menu @@ -264,7 +264,7 @@ dat += "Consoles with Upload Access
    " for(var/obj/machinery/computer/rdconsole/C in consoles) var/turf/console_turf = get_turf(C) - dat += "* [console_turf.loc]" //FYI, these are all numeric ids, eventually. + dat += "* [console_turf.loc]" //FYI, these are all numeric ids, eventually. if(C.id in temp_server.id_with_upload) dat += " (Remove)
    " else @@ -272,12 +272,12 @@ dat += "Consoles with Download Access
    " for(var/obj/machinery/computer/rdconsole/C in consoles) var/turf/console_turf = get_turf(C) - dat += "* [console_turf.loc]" + dat += "* [console_turf.loc]" if(C.id in temp_server.id_with_download) dat += " (Remove)
    " else dat += " (Add)
    " - dat += "
    Main Menu" + dat += "
    Main Menu" if(2) //Data Management menu dat += "[temp_server.name] Data ManagementP

    " @@ -287,20 +287,20 @@ if(T.level <= 0) continue dat += "* [T.name] " - dat += "(Reset)
    " //FYI, these are all strings. + dat += "(Reset)
    " //FYI, these are all strings. dat += "Known Designs
    " for(var/v in temp_server.files.known_designs) var/datum/design/D = temp_server.files.known_designs[v] dat += "* [D.name] " - dat += "(Delete)
    " - dat += "
    Main Menu" + dat += "(Delete)
    " + dat += "
    Main Menu" if(3) //Server Data Transfer dat += "[temp_server.name] Server to Server Transfer

    " dat += "Send Data to what server?
    " for(var/obj/machinery/r_n_d/server/S in servers) - dat += "[S.name] (Transfer)
    " - dat += "
    Main Menu" + dat += "[S.name] (Transfer)
    " + dat += "
    Main Menu" user << browse("R&D Server Control
    [dat]", "window=server_control;size=575x400") onclose(user, "server_control") return diff --git a/code/modules/shuttle/assault_pod.dm b/code/modules/shuttle/assault_pod.dm index 5b21d22d19..4b55a5b155 100644 --- a/code/modules/shuttle/assault_pod.dm +++ b/code/modules/shuttle/assault_pod.dm @@ -43,7 +43,7 @@ if(!T) return var/obj/docking_port/stationary/landing_zone = new /obj/docking_port/stationary(T) - landing_zone.id = "assault_pod(\ref[src])" + landing_zone.id = "assault_pod([REF(src)])" landing_zone.name = "Landing Zone" landing_zone.dwidth = dwidth landing_zone.dheight = dheight diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm index 47ceaef99e..94cf55e0a0 100644 --- a/code/modules/shuttle/computer.dm +++ b/code/modules/shuttle/computer.dm @@ -26,13 +26,13 @@ if(!M.check_dock(S)) continue destination_found = 1 - dat += "Send to [S.name]
    " + dat += "Send to [S.name]
    " if(!destination_found) dat += "Shuttle Locked
    " if(admin_controlled) dat += "Authorized personnel only
    " - dat += "Request Authorization
    " - dat += "Close" + dat += "Request Authorization
    " + dat += "Close" var/datum/browser/popup = new(user, "computer", M ? M.name : "shuttle", 300, 200) popup.set_content("
    [dat]
    ") diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index c3549abc4d..d573f9ce13 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -144,8 +144,8 @@ var/time = TIME_LEFT message_admins("[key_name_admin(user.client)] \ - (?) \ - (FLW) \ + (?) \ + (FLW) \ has emagged the emergency shuttle [time] seconds before launch.", 0, 1) log_game("[key_name(user)] has emagged the emergency shuttle in \ [COORD(src)] [time] seconds before launch.") diff --git a/code/modules/stock_market/computer.dm b/code/modules/stock_market/computer.dm index 3422145ec3..a6429834be 100644 --- a/code/modules/stock_market/computer.dm +++ b/code/modules/stock_market/computer.dm @@ -68,8 +68,8 @@ a.updated { var/list/LR = GLOB.stockExchange.last_read[S] if (!(logged_in in LR)) LR[logged_in] = 0 - dat += "View mode: [vmode ? "Compact" : "Full"] " - dat += "Stock Transaction Log: Check
    " + dat += "View mode: [vmode ? "Compact" : "Full"] " + dat += "Stock Transaction Log: Check
    " dat += "This is a work in progress. Certain features may not be available." @@ -83,12 +83,12 @@ a.updated { dat += "
    [S.name] ([S.short_name])[S.bankrupt ? " BANKRUPT" : null]
    " if (S.last_unification) dat += "Unified shares [DisplayTimeText(world.time - S.last_unification)] ago.
    " - dat += "Current value per share: [S.current_value] | View history

    " + dat += "Current value per share: [S.current_value] | View history

    " dat += "You currently own [mystocks] shares in this company. There are [S.available_shares] purchasable shares on the market currently.
    " if (S.bankrupt) dat += "You cannot buy or sell shares in a bankrupt company!

    " else - dat += "Buy shares | Sell shares

    " + dat += "Buy shares | Sell shares

    " dat += "Prominent products:
    " for (var/prod in S.products) dat += "[prod]
    " @@ -105,7 +105,7 @@ a.updated { if (E.last_change > lrt && !E.hidden) news = 1 break - dat += "View news archives[news ? " (updated)" : null]
    " + dat += "View news archives[news ? " (updated)" : null]" else if (vmode == 1) dat += "Actions: + Buy, - Sell, (A)rchives, (H)istory

    " dat += "" @@ -159,8 +159,8 @@ a.updated { if (S.bankrupt) dat += "+- " else - dat += "+- " - dat += "(A)(H)" + dat += "+- " + dat += "(A)(H)" dat += "" @@ -275,7 +275,7 @@ a.updated { sell_some_shares(S, usr) if (href_list["show_logs"]) - var/dat = "Stock Transaction Logs

    Stock Transaction Logs


    " + var/dat = "Stock Transaction Logs

    Stock Transaction Logs


    " for(var/D in GLOB.stockExchange.logs) var/datum/stock_log/L = D if(istype(L, /datum/stock_log/buy)) @@ -297,7 +297,7 @@ a.updated { if (logged_in && logged_in != "") var/list/LR = GLOB.stockExchange.last_read[S] LR[logged_in] = world.time - var/dat = "News feed for [S.name]

    News feed for [S.name]

    " + var/dat = "News feed for [S.name]

    News feed for [S.name]

    " dat += "

    Events

    " var/p = 0 for (var/datum/stockEvent/E in S.events) diff --git a/code/modules/tgui/subsystem.dm b/code/modules/tgui/subsystem.dm index c44c91c92b..f70eb87b0c 100644 --- a/code/modules/tgui/subsystem.dm +++ b/code/modules/tgui/subsystem.dm @@ -43,7 +43,7 @@ * return datum/tgui The found UI. **/ /datum/controller/subsystem/tgui/proc/get_open_ui(mob/user, datum/src_object, ui_key) - var/src_object_key = "\ref[src_object]" + var/src_object_key = "[REF(src_object)]" if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) return null // No UIs open. else if(isnull(open_uis[src_object_key][ui_key]) || !istype(open_uis[src_object_key][ui_key], /list)) @@ -65,7 +65,7 @@ * return int The number of UIs updated. **/ /datum/controller/subsystem/tgui/proc/update_uis(datum/src_object) - var/src_object_key = "\ref[src_object]" + var/src_object_key = "[REF(src_object)]" if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) return 0 // Couldn't find any UIs for this object. @@ -87,7 +87,7 @@ * return int The number of UIs closed. **/ /datum/controller/subsystem/tgui/proc/close_uis(datum/src_object) - var/src_object_key = "\ref[src_object]" + var/src_object_key = "[REF(src_object)]" if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) return 0 // Couldn't find any UIs for this object. @@ -168,7 +168,7 @@ * required ui datum/tgui The UI to be added. **/ /datum/controller/subsystem/tgui/proc/on_open(datum/tgui/ui) - var/src_object_key = "\ref[ui.src_object]" + var/src_object_key = "[REF(ui.src_object)]" if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) open_uis[src_object_key] = list(ui.ui_key = list()) // Make a list for the ui_key and src_object. else if(isnull(open_uis[src_object_key][ui.ui_key]) || !istype(open_uis[src_object_key][ui.ui_key], /list)) @@ -190,7 +190,7 @@ * return bool If the UI was removed or not. **/ /datum/controller/subsystem/tgui/proc/on_close(datum/tgui/ui) - var/src_object_key = "\ref[ui.src_object]" + var/src_object_key = "[REF(ui.src_object)]" if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) return 0 // It wasn't open. else if(isnull(open_uis[src_object_key][ui.ui_key]) || !istype(open_uis[src_object_key][ui.ui_key], /list)) diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index e427cfa0d1..088bd9da2c 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /** * tgui * @@ -335,6 +336,345 @@ * * optional force_open bool If force_open should be passed to ui_interact. **/ +======= + /** + * tgui + * + * /tg/station user interface library + **/ + + /** + * tgui datum (represents a UI). + **/ +/datum/tgui + var/mob/user // The mob who opened/is using the UI. + var/datum/src_object // The object which owns the UI. + var/title // The title of te UI. + var/ui_key // The ui_key of the UI. This allows multiple UIs for one src_object. + var/window_id // The window_id for browse() and onclose(). + var/width = 0 // The window width. + var/height = 0 // The window height + var/window_options = list( // Extra options to winset(). + "focus" = FALSE, + "titlebar" = TRUE, + "can_resize" = TRUE, + "can_minimize" = TRUE, + "can_maximize" = FALSE, + "can_close" = TRUE, + "auto_format" = FALSE + ) + var/style = "nanotrasen" // The style to be used for this UI. + var/interface // The interface (template) to be used for this UI. + var/autoupdate = TRUE // Update the UI every MC tick. + var/initialized = FALSE // If the UI has been initialized yet. + var/list/initial_data // The data (and datastructure) used to initialize the UI. + var/status = UI_INTERACTIVE // The status/visibility of the UI. + var/datum/ui_state/state = null // Topic state used to determine status/interactability. + var/datum/tgui/master_ui // The parent UI. + var/list/datum/tgui/children = list() // Children of this UI. + var/titlebar = TRUE + var/custom_browser_id = FALSE + + /** + * public + * + * Create a new UI. + * + * required user mob The mob who opened/is using the UI. + * required src_object datum The object or datum which owns the UI. + * required ui_key string The ui_key of the UI. + * required interface string The interface used to render the UI. + * optional title string The title of the UI. + * optional width int The window width. + * optional height int The window height. + * optional master_ui datum/tgui The parent UI. + * optional state datum/ui_state The state used to determine status. + * + * return datum/tgui The requested UI. + **/ +/datum/tgui/New(mob/user, datum/src_object, ui_key, interface, title, width = 0, height = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state, browser_id = null) + src.user = user + src.src_object = src_object + src.ui_key = ui_key + src.window_id = browser_id ? browser_id : "[REF(src_object)]-[ui_key]" + src.custom_browser_id = browser_id ? TRUE : FALSE + + set_interface(interface) + + if(title) + src.title = sanitize(title) + if(width) + src.width = width + if(height) + src.height = height + + src.master_ui = master_ui + if(master_ui) + master_ui.children += src + src.state = state + + var/datum/asset/assets = get_asset_datum(/datum/asset/simple/tgui) + assets.send(user) + + /** + * public + * + * Open this UI (and initialize it with data). + **/ +/datum/tgui/proc/open() + if(!user.client) + return // Bail if there is no client. + + update_status(push = 0) // Update the window status. + if(status < UI_UPDATE) + return // Bail if we're not supposed to open. + + if(!initial_data) + set_initial_data(src_object.ui_data(user)) // Get the UI data. + + var/window_size = "" + if(width && height) // If we have a width and height, use them. + window_size = "size=[width]x[height];" + + var/debugable = check_rights_for(user.client, R_DEBUG) + user << browse(get_html(debugable), "window=[window_id];[window_size][list2params(window_options)]") // Open the window. + if (!custom_browser_id) + winset(user, window_id, "on-close=\"uiclose [REF(src)]\"") // Instruct the client to signal UI when the window is closed. + SStgui.on_open(src) + + /** + * public + * + * Reinitialize the UI. + * (Possibly with a new interface and/or data). + * + * optional template string The name of the new interface. + * optional data list The new initial data. + **/ +/datum/tgui/proc/reinitialize(interface, list/data) + if(interface) + set_interface(interface) // Set a new interface. + if(data) + set_initial_data(data) // Replace the initial_data. + open() + + /** + * public + * + * Close the UI, and all its children. + **/ +/datum/tgui/proc/close() + user << browse(null, "window=[window_id]") // Close the window. + SStgui.on_close(src) + for(var/datum/tgui/child in children) // Loop through and close all children. + child.close() + children.Cut() + state = null + master_ui = null + qdel(src) + + /** + * public + * + * Sets the browse() window options for this UI. + * + * required window_options list The window options to set. + **/ +/datum/tgui/proc/set_window_options(list/window_options) + src.window_options = window_options + + /** + * public + * + * Set the style for this UI. + * + * required style string The new UI style. + **/ +/datum/tgui/proc/set_style(style) + src.style = lowertext(style) + + /** + * public + * + * Set the interface (template) for this UI. + * + * required interface string The new UI interface. + **/ +/datum/tgui/proc/set_interface(interface) + src.interface = lowertext(interface) + + /** + * public + * + * Enable/disable auto-updating of the UI. + * + * required state bool Enable/disable auto-updating. + **/ +/datum/tgui/proc/set_autoupdate(state = 1) + autoupdate = state + + /** + * private + * + * Set the data to initialize the UI with. + * The datastructure cannot be changed by subsequent updates. + * + * optional data list The data/datastructure to initialize the UI with. + **/ +/datum/tgui/proc/set_initial_data(list/data) + initial_data = data + + /** + * private + * + * Generate HTML for this UI. + * + * optional bool inline If the JSON should be inlined into the HTML (for debugging). + * + * return string UI HTML output. + **/ +/datum/tgui/proc/get_html(var/inline) + var/html + // Poplate HTML with JSON if we're supposed to inline. + if(inline) + html = replacetextEx(SStgui.basehtml, "{}", get_json(initial_data)) + else + html = SStgui.basehtml + html = replacetextEx(html, "\[ref]", "[REF(src)]") + html = replacetextEx(html, "\[style]", style) + return html + + /** + * private + * + * Get the config data/datastructure to initialize the UI with. + * + * return list The config data. + **/ +/datum/tgui/proc/get_config_data() + var/list/config_data = list( + "title" = title, + "status" = status, + "screen" = src_object.ui_screen, + "style" = style, + "interface" = interface, + "fancy" = user.client.prefs.tgui_fancy, + "locked" = user.client.prefs.tgui_lock && !custom_browser_id, + "window" = window_id, + "ref" = "[REF(src)]", + "user" = list( + "name" = user.name, + "ref" = "[REF(user)]" + ), + "srcObject" = list( + "name" = "[src_object]", + "ref" = "[REF(src_object)]" + ), + "titlebar" = titlebar + ) + return config_data + + /** + * private + * + * Package the data to send to the UI, as JSON. + * This includes the UI data and config_data. + * + * return string The packaged JSON. + **/ +/datum/tgui/proc/get_json(list/data) + var/list/json_data = list() + + json_data["config"] = get_config_data() + if(!isnull(data)) + json_data["data"] = data + + // Generate the JSON. + var/json = json_encode(json_data) + // Strip #255/improper. + json = replacetext(json, "\proper", "") + json = replacetext(json, "\improper", "") + return json + + /** + * private + * + * Handle clicks from the UI. + * Call the src_object's ui_act() if status is UI_INTERACTIVE. + * If the src_object's ui_act() returns 1, update all UIs attacked to it. + **/ +/datum/tgui/Topic(href, href_list) + if(user != usr) + return // Something is not right here. + + var/action = href_list["action"] + var/params = href_list; params -= "action" + + switch(action) + if("tgui:initialize") + user << output(url_encode(get_json(initial_data)), "[custom_browser_id ? window_id : "[window_id].browser"]:initialize") + initialized = TRUE + if("tgui:view") + if(params["screen"]) + src_object.ui_screen = params["screen"] + SStgui.update_uis(src_object) + if("tgui:link") + user << link(params["url"]) + if("tgui:fancy") + user.client.prefs.tgui_fancy = TRUE + if("tgui:nofrills") + user.client.prefs.tgui_fancy = FALSE + else + update_status(push = 0) // Update the window state. + if(src_object.ui_act(action, params, src, state)) // Call ui_act() on the src_object. + SStgui.update_uis(src_object) // Update if the object requested it. + + /** + * private + * + * Update the UI. + * Only updates the data if update is true, otherwise only updates the status. + * + * optional force bool If the UI should be forced to update. + **/ +/datum/tgui/process(force = 0) + var/datum/host = src_object.ui_host() + if(!src_object || !host || !user) // If the object or user died (or something else), abort. + close() + return + + if(status && (force || autoupdate)) + update() // Update the UI if the status and update settings allow it. + else + update_status(push = 1) // Otherwise only update status. + + /** + * private + * + * Push data to an already open UI. + * + * required data list The data to send. + * optional force bool If the update should be sent regardless of state. + **/ +/datum/tgui/proc/push_data(data, force = 0) + update_status(push = 0) // Update the window state. + if(!initialized) + return // Cannot update UI if it is not set up yet. + if(status <= UI_DISABLED && !force) + return // Cannot update UI, we have no visibility. + + // Send the new JSON to the update() Javascript function. + user << output(url_encode(get_json(data)), "[custom_browser_id ? window_id : "[window_id].browser"]:update") + + /** + * private + * + * Updates the UI by interacting with the src_object again, which will hopefully + * call try_ui_update on it. + * + * optional force_open bool If force_open should be passed to ui_interact. + **/ +>>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental /datum/tgui/proc/update(force_open = FALSE) src_object.ui_interact(user, ui_key, src, force_open, master_ui, state) From 24eece99a57f7e8434b52dc728f3215b4b62c1a3 Mon Sep 17 00:00:00 2001 From: Leo Date: Wed, 1 Nov 2017 10:14:46 -0200 Subject: [PATCH 002/114] animate sqdl wrapper works now. --- code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm index 7176ac726c..0abb451d2d 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm @@ -3,9 +3,17 @@ /proc/_abs(A) return abs(A) +<<<<<<< HEAD /*/proc/_animate(atom/A, set_vars, time = 10, loop = 1, easing = LINEAR_EASING, flags_1 = null) animate(A, set_vars, time, loop, easing, flags_1) Borked. If anyone wants to fix this be my guest.*/ +======= +/proc/_animate(atom/A, set_vars, time = 10, loop = 1, easing = LINEAR_EASING, flags = null) + var/mutable_appearance/MA = new() + for(var/v in set_vars) + MA.vars[v] = set_vars[v] + animate(A, appearance = MA, time, loop, easing, flags) +>>>>>>> 517a747... Merge pull request #32292 from RemieRichards/patch-5 /proc/_acrccos(A) return arccos(A) From 196fb5f345d0cef31ae0218f5516c74a531237c6 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Thu, 2 Nov 2017 02:22:32 -0500 Subject: [PATCH 003/114] Update SDQL_2_wrappers.dm --- code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm | 6 ------ 1 file changed, 6 deletions(-) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm index 0abb451d2d..8a7c030458 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm @@ -3,17 +3,11 @@ /proc/_abs(A) return abs(A) -<<<<<<< HEAD -/*/proc/_animate(atom/A, set_vars, time = 10, loop = 1, easing = LINEAR_EASING, flags_1 = null) - animate(A, set_vars, time, loop, easing, flags_1) - Borked. If anyone wants to fix this be my guest.*/ -======= /proc/_animate(atom/A, set_vars, time = 10, loop = 1, easing = LINEAR_EASING, flags = null) var/mutable_appearance/MA = new() for(var/v in set_vars) MA.vars[v] = set_vars[v] animate(A, appearance = MA, time, loop, easing, flags) ->>>>>>> 517a747... Merge pull request #32292 from RemieRichards/patch-5 /proc/_acrccos(A) return arccos(A) From 9db792b09c14ba11f36cc88670c7252f5b102370 Mon Sep 17 00:00:00 2001 From: oranges Date: Sun, 5 Nov 2017 21:09:25 +1300 Subject: [PATCH 004/114] Fixes canceling cavity implants --- code/modules/surgery/cavity_implant.dm | 5 + code/modules/surgery/helpers.dm | 175 +++++++++++++++++++++++++ 2 files changed, 180 insertions(+) diff --git a/code/modules/surgery/cavity_implant.dm b/code/modules/surgery/cavity_implant.dm index 8bad429102..0d13e81188 100644 --- a/code/modules/surgery/cavity_implant.dm +++ b/code/modules/surgery/cavity_implant.dm @@ -17,6 +17,11 @@ var/obj/item/bodypart/chest/CH = target.get_bodypart("chest") IC = CH.cavity_item if(tool) + if(istype(tool, /obj/item/surgical_drapes) || istype(tool, /obj/item/bedsheet)) + var/obj/item/inactive = user.get_inactive_held_item() + if(istype(inactive, /obj/item/cautery) || istype(inactive, /obj/item/screwdriver) || iscyborg(user)) + attempt_cancel_surgery(surgery, tool, target, user) + return -1 user.visible_message("[user] begins to insert [tool] into [target]'s [target_zone].", "You begin to insert [tool] into [target]'s [target_zone]...") else user.visible_message("[user] checks for items in [target]'s [target_zone].", "You check for items in [target]'s [target_zone]...") diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm index a4e9b16989..af00385f20 100644 --- a/code/modules/surgery/helpers.dm +++ b/code/modules/surgery/helpers.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /proc/attempt_initiate_surgery(obj/item/I, mob/living/M, mob/user) if(!istype(M)) return @@ -171,3 +172,177 @@ return 0 return 1 +======= +/proc/attempt_initiate_surgery(obj/item/I, mob/living/M, mob/user) + if(!istype(M)) + return + + var/mob/living/carbon/C + var/obj/item/bodypart/affecting + var/selected_zone = user.zone_selected + + if(iscarbon(M)) + C = M + affecting = C.get_bodypart(check_zone(selected_zone)) + + if(!M.lying && !isslime(M)) //if they're prone or a slime + return + + var/datum/surgery/current_surgery + + for(var/datum/surgery/S in M.surgeries) + if(S.location == selected_zone) + current_surgery = S + + if(!current_surgery) + var/list/all_surgeries = GLOB.surgeries_list.Copy() + var/list/available_surgeries = list() + + for(var/datum/surgery/S in all_surgeries) + if(!S.possible_locs.Find(selected_zone)) + continue + if(affecting) + if(!S.requires_bodypart) + continue + if(S.requires_bodypart_type && affecting.status != S.requires_bodypart_type) + continue + if(S.requires_real_bodypart && affecting.is_pseudopart) + continue + else if(C && S.requires_bodypart) //mob with no limb in surgery zone when we need a limb + continue + if(!S.can_start(user, M)) + continue + for(var/path in S.species) + if(istype(M, path)) + available_surgeries[S.name] = S + break + + var/P = input("Begin which procedure?", "Surgery", null, null) as null|anything in available_surgeries + if(P && user && user.Adjacent(M) && (I in user)) + var/datum/surgery/S = available_surgeries[P] + + for(var/datum/surgery/other in M.surgeries) + if(other.location == S.location) + return //during the input() another surgery was started at the same location. + + //we check that the surgery is still doable after the input() wait. + if(C) + affecting = C.get_bodypart(check_zone(selected_zone)) + if(affecting) + if(!S.requires_bodypart) + return + if(S.requires_bodypart_type && affecting.status != S.requires_bodypart_type) + return + else if(C && S.requires_bodypart) + return + if(!S.can_start(user, M)) + return + + if(S.ignore_clothes || get_location_accessible(M, selected_zone)) + var/datum/surgery/procedure = new S.type(M, selected_zone, affecting) + user.visible_message("[user] drapes [I] over [M]'s [parse_zone(selected_zone)] to prepare for \an [procedure.name].", \ + "You drape [I] over [M]'s [parse_zone(selected_zone)] to prepare for \an [procedure.name].") + + add_logs(user, M, "operated", addition="Operation type: [procedure.name], location: [selected_zone]") + else + to_chat(user, "You need to expose [M]'s [parse_zone(selected_zone)] first!") + + else if(!current_surgery.step_in_progress) + attempt_cancel_surgery(current_surgery, I, M, user) + + return 1 + +/proc/attempt_cancel_surgery(datum/surgery/S, obj/item/I, mob/living/M, mob/user) + var/selected_zone = user.zone_selected + if(S.status == 1) + M.surgeries -= S + user.visible_message("[user] removes [I] from [M]'s [parse_zone(selected_zone)].", \ + "You remove [I] from [M]'s [parse_zone(selected_zone)].") + qdel(S) + else if(S.can_cancel) + var/close_tool_type = /obj/item/cautery + var/obj/item/close_tool = user.get_inactive_held_item() + var/is_robotic = S.requires_bodypart_type == BODYPART_ROBOTIC + if(is_robotic) + close_tool_type = /obj/item/screwdriver + if(istype(close_tool, close_tool_type) || iscyborg(user)) + M.surgeries -= S + user.visible_message("[user] closes [M]'s [parse_zone(selected_zone)] with [close_tool] and removes [I].", \ + "You close [M]'s [parse_zone(selected_zone)] with [close_tool] and remove [I].") + qdel(S) + else + to_chat(user, "You need to hold a [is_robotic ? "screwdriver" : "cautery"] in your inactive hand to stop [M]'s surgery!") + +/proc/get_location_modifier(mob/M) + var/turf/T = get_turf(M) + if(locate(/obj/structure/table/optable, T)) + return 1 + else if(locate(/obj/structure/table, T)) + return 0.8 + else if(locate(/obj/structure/bed, T)) + return 0.7 + else + return 0.5 + + +/proc/get_location_accessible(mob/M, location) + var/covered_locations = 0 //based on body_parts_covered + var/face_covered = 0 //based on flags_inv + var/eyesmouth_covered = 0 //based on flags_cover + if(iscarbon(M)) + var/mob/living/carbon/C = M + for(var/obj/item/clothing/I in list(C.back, C.wear_mask, C.head)) + covered_locations |= I.body_parts_covered + face_covered |= I.flags_inv + eyesmouth_covered |= I.flags_cover + if(ishuman(C)) + var/mob/living/carbon/human/H = C + for(var/obj/item/I in list(H.wear_suit, H.w_uniform, H.shoes, H.belt, H.gloves, H.glasses, H.ears)) + covered_locations |= I.body_parts_covered + face_covered |= I.flags_inv + eyesmouth_covered |= I.flags_cover + + switch(location) + if("head") + if(covered_locations & HEAD) + return 0 + if("eyes") + if(covered_locations & HEAD || face_covered & HIDEEYES || eyesmouth_covered & GLASSESCOVERSEYES) + return 0 + if("mouth") + if(covered_locations & HEAD || face_covered & HIDEFACE || eyesmouth_covered & MASKCOVERSMOUTH || eyesmouth_covered & HEADCOVERSMOUTH) + return 0 + if("chest") + if(covered_locations & CHEST) + return 0 + if("groin") + if(covered_locations & GROIN) + return 0 + if("l_arm") + if(covered_locations & ARM_LEFT) + return 0 + if("r_arm") + if(covered_locations & ARM_RIGHT) + return 0 + if("l_leg") + if(covered_locations & LEG_LEFT) + return 0 + if("r_leg") + if(covered_locations & LEG_RIGHT) + return 0 + if("l_hand") + if(covered_locations & HAND_LEFT) + return 0 + if("r_hand") + if(covered_locations & HAND_RIGHT) + return 0 + if("l_foot") + if(covered_locations & FOOT_LEFT) + return 0 + if("r_foot") + if(covered_locations & FOOT_RIGHT) + return 0 + + return 1 + +>>>>>>> ea17a59... Merge pull request #32374 from swindly/master From a0801a8e92e8f39f0af6c6f647f02ee9a3de3014 Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Sun, 5 Nov 2017 02:51:57 -0800 Subject: [PATCH 005/114] Scale fullscreen overlays to the view size --- code/_onclick/hud/fullscreen.dm | 180 ++++++++++++++++++++ code/modules/client/client_procs.dm | 3 + code/modules/shuttle/navigation_computer.dm | 4 +- 3 files changed, 185 insertions(+), 2 deletions(-) diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index 12253cc550..825798f48e 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /mob var/list/screens = list() @@ -173,3 +174,182 @@ layer = LIGHTING_LAYER blend_mode = BLEND_ADD show_when_dead = TRUE +======= + +/mob + var/list/screens = list() + +/mob/proc/overlay_fullscreen(category, type, severity) + var/obj/screen/fullscreen/screen = screens[category] + if (!screen || screen.type != type) + // needs to be recreated + clear_fullscreen(category, FALSE) + screens[category] = screen = new type() + else if ((!severity || severity == screen.severity) && (!client || screen.screen_loc != "CENTER-7,CENTER-7" || screen.view == client.view)) + // doesn't need to be updated + return screen + + screen.icon_state = "[initial(screen.icon_state)][severity]" + screen.severity = severity + if (client && screen.should_show_to(src)) + client.screen += screen + if (screen.screen_loc == "CENTER-7,CENTER-7" && screen.view != client.view) + var/scale = (1 + 2 * client.view) / 15 + screen.view = client.view + screen.transform = matrix(scale, 0, 0, 0, scale, 0) + + return screen + +/mob/proc/clear_fullscreen(category, animated = 10) + var/obj/screen/fullscreen/screen = screens[category] + if(!screen) + return + + screens -= category + + if(animated) + animate(screen, alpha = 0, time = animated) + addtimer(CALLBACK(src, .proc/clear_fullscreen_after_animate, screen), animated, TIMER_CLIENT_TIME) + else + if(client) + client.screen -= screen + qdel(screen) + +/mob/proc/clear_fullscreen_after_animate(obj/screen/fullscreen/screen) + if(client) + client.screen -= screen + qdel(screen) + +/mob/proc/clear_fullscreens() + for(var/category in screens) + clear_fullscreen(category) + +/mob/proc/hide_fullscreens() + if(client) + for(var/category in screens) + client.screen -= screens[category] + +/mob/proc/reload_fullscreen() + if(client) + var/obj/screen/fullscreen/screen + for(var/category in screens) + screen = screens[category] + if(screen.should_show_to(src)) + client.screen |= screen + else + client.screen -= screen + +/obj/screen/fullscreen + icon = 'icons/mob/screen_full.dmi' + icon_state = "default" + screen_loc = "CENTER-7,CENTER-7" + layer = FULLSCREEN_LAYER + plane = FULLSCREEN_PLANE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + var/view = 7 + var/severity = 0 + var/show_when_dead = FALSE + +/obj/screen/fullscreen/proc/should_show_to(mob/mymob) + if(!show_when_dead && mymob.stat == DEAD) + return FALSE + return TRUE + +/obj/screen/fullscreen/Destroy() + severity = 0 + . = ..() + +/obj/screen/fullscreen/brute + icon_state = "brutedamageoverlay" + layer = UI_DAMAGE_LAYER + plane = FULLSCREEN_PLANE + +/obj/screen/fullscreen/oxy + icon_state = "oxydamageoverlay" + layer = UI_DAMAGE_LAYER + plane = FULLSCREEN_PLANE + +/obj/screen/fullscreen/crit + icon_state = "passage" + layer = CRIT_LAYER + plane = FULLSCREEN_PLANE + +/obj/screen/fullscreen/crit/vision + icon_state = "oxydamageoverlay" + layer = BLIND_LAYER + +/obj/screen/fullscreen/blind + icon_state = "blackimageoverlay" + layer = BLIND_LAYER + plane = FULLSCREEN_PLANE + +/obj/screen/fullscreen/curse + icon_state = "curse" + layer = CURSE_LAYER + plane = FULLSCREEN_PLANE + +/obj/screen/fullscreen/impaired + icon_state = "impairedoverlay" + +/obj/screen/fullscreen/blurry + icon = 'icons/mob/screen_gen.dmi' + screen_loc = "WEST,SOUTH to EAST,NORTH" + icon_state = "blurry" + +/obj/screen/fullscreen/flash + icon = 'icons/mob/screen_gen.dmi' + screen_loc = "WEST,SOUTH to EAST,NORTH" + icon_state = "flash" + +/obj/screen/fullscreen/flash/static + icon = 'icons/mob/screen_gen.dmi' + screen_loc = "WEST,SOUTH to EAST,NORTH" + icon_state = "noise" + +/obj/screen/fullscreen/high + icon = 'icons/mob/screen_gen.dmi' + screen_loc = "WEST,SOUTH to EAST,NORTH" + icon_state = "druggy" + +/obj/screen/fullscreen/color_vision + icon = 'icons/mob/screen_gen.dmi' + screen_loc = "WEST,SOUTH to EAST,NORTH" + icon_state = "flash" + alpha = 80 + +/obj/screen/fullscreen/color_vision/green + color = "#00ff00" + +/obj/screen/fullscreen/color_vision/red + color = "#ff0000" + +/obj/screen/fullscreen/color_vision/blue + color = "#0000ff" + +/obj/screen/fullscreen/lighting_backdrop + icon = 'icons/mob/screen_gen.dmi' + icon_state = "flash" + transform = matrix(200, 0, 0, 0, 200, 0) + plane = LIGHTING_PLANE + blend_mode = BLEND_OVERLAY + show_when_dead = TRUE + +//Provides darkness to the back of the lighting plane +/obj/screen/fullscreen/lighting_backdrop/lit + invisibility = INVISIBILITY_LIGHTING + layer = BACKGROUND_LAYER+21 + color = "#000" + show_when_dead = TRUE + +//Provides whiteness in case you don't see lights so everything is still visible +/obj/screen/fullscreen/lighting_backdrop/unlit + layer = BACKGROUND_LAYER+20 + show_when_dead = TRUE + +/obj/screen/fullscreen/see_through_darkness + icon_state = "nightvision" + plane = LIGHTING_PLANE + layer = LIGHTING_LAYER + blend_mode = BLEND_ADD + show_when_dead = TRUE +>>>>>>> 3a3a779... Scale fullscreen overlays to the view size (#32379) diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index e14c48db3a..88be72a0a3 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -672,6 +672,9 @@ GLOBAL_LIST(external_rsc_urls) view = new_size apply_clickcatcher() + if (isliving(mob)) + var/mob/living/M = mob + M.update_damage_hud() /client/proc/generate_clickcatcher() if(!void) diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index 6af111506d..7f99829843 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -64,7 +64,7 @@ var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj user.client.images += the_eye.placement_images user.client.images += the_eye.placed_images - user.client.view = view_range + user.client.change_view(view_range) /obj/machinery/computer/camera_advanced/shuttle_docker/remove_eye_control(mob/living/user) ..() @@ -72,7 +72,7 @@ var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj user.client.images -= the_eye.placement_images user.client.images -= the_eye.placed_images - user.client.view = world.view + user.client.change_view(world.view) /obj/machinery/computer/camera_advanced/shuttle_docker/proc/placeLandingSpot() if(!checkLandingSpot()) From 212ef96a41a0006943083b689fcb746d7bbfaba2 Mon Sep 17 00:00:00 2001 From: The-clown-known-as-Pepe Date: Sun, 5 Nov 2017 19:01:55 +0100 Subject: [PATCH 006/114] Minor ion law species update. (#32416) * GET THIS MERGED * Update ion_laws.json --- strings/ion_laws.json | 1 + 1 file changed, 1 insertion(+) diff --git a/strings/ion_laws.json b/strings/ion_laws.json index 5a61fc3196..28c6297dcf 100644 --- a/strings/ion_laws.json +++ b/strings/ion_laws.json @@ -827,6 +827,7 @@ ], "ionspecies": [ "HUMAN BEINGS", + "CAT PEOPLE", "MONKEYS", "POD PEOPLE", "CYBORGS", From 178b41547dedafbaf671af3d36d5ffa67aafe69f Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Mon, 6 Nov 2017 09:45:42 -0500 Subject: [PATCH 008/114] Little change. More the same --- code/game/machinery/_machinery.dm | 3 +-- code/modules/mining/machine_processing.dm | 2 +- code/modules/mining/machine_redemption.dm | 2 +- code/modules/mining/machine_stacking.dm | 2 +- code/modules/mining/machine_unloading.dm | 25 +++++++++++++++++++++++ code/modules/mining/mint.dm | 4 ++-- code/modules/recycling/conveyor2.dm | 4 ++-- code/modules/station_goals/bsa.dm | 1 - 8 files changed, 33 insertions(+), 10 deletions(-) diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 286bcee1f8..baa31f7f27 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -119,10 +119,9 @@ Class Procs: var/critical_machine = FALSE //If this machine is critical to station operation and should have the area be excempted from power failures. var/list/occupant_typecache //if set, turned into typecache in Initialize, other wise, defaults to mob/living typecache var/atom/movable/occupant = null - var/unsecuring_tool = /obj/item/wrench var/interact_open = FALSE // Can the machine be interacted with when in maint/when the panel is open. var/interact_offline = 0 // Can the machine be interacted with while de-powered. - var/speed_process = 0 // Process as fast as possible? + var/speed_process = FALSE // Process as fast as possible? var/obj/item/circuitboard/circuit // Circuit to be created and inserted when the machinery is created /obj/machinery/Initialize() diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 75c0f94ac4..dc0341f853 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -10,7 +10,7 @@ anchored = TRUE var/obj/machinery/mineral/processing_unit/machine = null var/machinedir = EAST - speed_process = 1 + speed_process = TRUE /obj/machinery/mineral/processing_unit_console/Initialize() . = ..() diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 437073a1fc..0b1a988fc2 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -11,7 +11,7 @@ input_dir = NORTH output_dir = SOUTH req_access = list(ACCESS_MINERAL_STOREROOM) - speed_process = 1 + speed_process = TRUE circuit = /obj/item/circuitboard/machine/ore_redemption var/req_access_reclaim = ACCESS_MINING_STATION var/obj/item/card/id/inserted_id diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index c2bf0849bb..af3a720494 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -9,7 +9,7 @@ anchored = TRUE var/obj/machinery/mineral/stacking_machine/machine = null var/machinedir = SOUTHEAST - speed_process = 1 + speed_process = TRUE /obj/machinery/mineral/stacking_unit_console/Initialize() . = ..() diff --git a/code/modules/mining/machine_unloading.dm b/code/modules/mining/machine_unloading.dm index 8192b0fc6a..b0035a4700 100644 --- a/code/modules/mining/machine_unloading.dm +++ b/code/modules/mining/machine_unloading.dm @@ -7,6 +7,7 @@ icon_state = "unloader" density = TRUE anchored = TRUE +<<<<<<< HEAD input_dir = WEST output_dir = EAST speed_process = 1 @@ -29,4 +30,28 @@ limit++ if (limit>=10) return +======= + input_dir = WEST + output_dir = EAST + speed_process = TRUE + +/obj/machinery/mineral/unloading_machine/process() + var/turf/T = get_step(src,input_dir) + if(T) + var/limit + for(var/obj/structure/ore_box/B in T) + for (var/obj/item/ore/O in B) + B.contents -= O + unload_mineral(O) + limit++ + if (limit>=10) + return + CHECK_TICK + CHECK_TICK + for(var/obj/item/I in T) + unload_mineral(I) + limit++ + if (limit>=10) + return +>>>>>>> 8ccaba1... Merge pull request #32453 from Jalleo/machinery_refactor CHECK_TICK \ No newline at end of file diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index 1a4e4c5ed1..ccd3a00e7b 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -11,7 +11,7 @@ var/processing = FALSE var/chosen = MAT_METAL //which material will be used to make coins var/coinsToProduce = 10 - speed_process = 1 + speed_process = TRUE /obj/machinery/mineral/mint/Initialize() @@ -22,7 +22,7 @@ var/turf/T = get_step(src, input_dir) if(!T) return - + GET_COMPONENT(materials, /datum/component/material_container) for(var/obj/item/stack/sheet/O in T) materials.insert_stack(O, O.amount) diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 1ab1a46723..6d541dad1a 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -17,7 +17,7 @@ var/list/affecting // the list of all items that will be moved this ptick var/id = "" // the control ID - must match controller ID var/verted = 1 // set to -1 to have the conveyour belt be inverted, so you can use the other corner icons - speed_process = 1 + speed_process = TRUE /obj/machinery/conveyor/centcom_auto id = "round_end_belt" @@ -208,7 +208,7 @@ var/list/conveyors // the list of converyors that are controlled by this switch anchored = TRUE - speed_process = 1 + speed_process = TRUE diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index d13ab3f329..1fbdfb6fb8 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -126,7 +126,6 @@ desc = "Long range bluespace artillery." icon = 'icons/obj/lavaland/cannon.dmi' icon_state = "orbital_cannon1" - unsecuring_tool = null var/static/mutable_appearance/top_layer var/ex_power = 3 var/power_used_per_shot = 2000000 //enough to kil standard apc - todo : make this use wires instead and scale explosion power with it From 4a8978a74d5d1de29b2f7d79c965e3b1f84efcdb Mon Sep 17 00:00:00 2001 From: LetterJay Date: Tue, 7 Nov 2017 03:25:28 -0600 Subject: [PATCH 009/114] Update fullscreen.dm --- code/_onclick/hud/fullscreen.dm | 180 +------------------------------- 1 file changed, 1 insertion(+), 179 deletions(-) diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index 825798f48e..900a4a2022 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -1,181 +1,3 @@ -<<<<<<< HEAD - -/mob - var/list/screens = list() - -/mob/proc/overlay_fullscreen(category, type, severity) - var/obj/screen/fullscreen/screen - if(screens[category]) - screen = screens[category] - if(screen.type != type) - clear_fullscreen(category, FALSE) - return .() - else if(!severity || severity == screen.severity) - return null - else - screen = new type() - - screen.icon_state = "[initial(screen.icon_state)][severity]" - screen.severity = severity - - screens[category] = screen - if(client && screen.should_show_to(src)) - client.screen += screen - return screen - -/mob/proc/clear_fullscreen(category, animated = 10) - var/obj/screen/fullscreen/screen = screens[category] - if(!screen) - return - - screens -= category - - if(animated) - animate(screen, alpha = 0, time = animated) - addtimer(CALLBACK(src, .proc/clear_fullscreen_after_animate, screen), animated, TIMER_CLIENT_TIME) - else - if(client) - client.screen -= screen - qdel(screen) - -/mob/proc/clear_fullscreen_after_animate(obj/screen/fullscreen/screen) - if(client) - client.screen -= screen - qdel(screen) - -/mob/proc/clear_fullscreens() - for(var/category in screens) - clear_fullscreen(category) - -/mob/proc/hide_fullscreens() - if(client) - for(var/category in screens) - client.screen -= screens[category] - -/mob/proc/reload_fullscreen() - if(client) - var/obj/screen/fullscreen/screen - for(var/category in screens) - screen = screens[category] - if(screen.should_show_to(src)) - client.screen |= screen - else - client.screen -= screen - -/obj/screen/fullscreen - icon = 'icons/mob/screen_full.dmi' - icon_state = "default" - screen_loc = "CENTER-7,CENTER-7" - layer = FULLSCREEN_LAYER - plane = FULLSCREEN_PLANE - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - var/severity = 0 - var/show_when_dead = FALSE - -/obj/screen/fullscreen/proc/should_show_to(mob/mymob) - if(!show_when_dead && mymob.stat == DEAD) - return FALSE - return TRUE - -/obj/screen/fullscreen/Destroy() - severity = 0 - . = ..() - -/obj/screen/fullscreen/brute - icon_state = "brutedamageoverlay" - layer = UI_DAMAGE_LAYER - plane = FULLSCREEN_PLANE - -/obj/screen/fullscreen/oxy - icon_state = "oxydamageoverlay" - layer = UI_DAMAGE_LAYER - plane = FULLSCREEN_PLANE - -/obj/screen/fullscreen/crit - icon_state = "passage" - layer = CRIT_LAYER - plane = FULLSCREEN_PLANE - -/obj/screen/fullscreen/crit/vision - icon_state = "oxydamageoverlay" - layer = BLIND_LAYER - -/obj/screen/fullscreen/blind - icon_state = "blackimageoverlay" - layer = BLIND_LAYER - plane = FULLSCREEN_PLANE - -/obj/screen/fullscreen/curse - icon_state = "curse" - layer = CURSE_LAYER - plane = FULLSCREEN_PLANE - -/obj/screen/fullscreen/impaired - icon_state = "impairedoverlay" - -/obj/screen/fullscreen/blurry - icon = 'icons/mob/screen_gen.dmi' - screen_loc = "WEST,SOUTH to EAST,NORTH" - icon_state = "blurry" - -/obj/screen/fullscreen/flash - icon = 'icons/mob/screen_gen.dmi' - screen_loc = "WEST,SOUTH to EAST,NORTH" - icon_state = "flash" - -/obj/screen/fullscreen/flash/static - icon = 'icons/mob/screen_gen.dmi' - screen_loc = "WEST,SOUTH to EAST,NORTH" - icon_state = "noise" - -/obj/screen/fullscreen/high - icon = 'icons/mob/screen_gen.dmi' - screen_loc = "WEST,SOUTH to EAST,NORTH" - icon_state = "druggy" - -/obj/screen/fullscreen/color_vision - icon = 'icons/mob/screen_gen.dmi' - screen_loc = "WEST,SOUTH to EAST,NORTH" - icon_state = "flash" - alpha = 80 - -/obj/screen/fullscreen/color_vision/green - color = "#00ff00" - -/obj/screen/fullscreen/color_vision/red - color = "#ff0000" - -/obj/screen/fullscreen/color_vision/blue - color = "#0000ff" - -/obj/screen/fullscreen/lighting_backdrop - icon = 'icons/mob/screen_gen.dmi' - icon_state = "flash" - transform = matrix(200, 0, 0, 0, 200, 0) - plane = LIGHTING_PLANE - blend_mode = BLEND_OVERLAY - show_when_dead = TRUE - -//Provides darkness to the back of the lighting plane -/obj/screen/fullscreen/lighting_backdrop/lit - invisibility = INVISIBILITY_LIGHTING - layer = BACKGROUND_LAYER+21 - color = "#000" - show_when_dead = TRUE - -//Provides whiteness in case you don't see lights so everything is still visible -/obj/screen/fullscreen/lighting_backdrop/unlit - layer = BACKGROUND_LAYER+20 - show_when_dead = TRUE - -/obj/screen/fullscreen/see_through_darkness - icon_state = "nightvision" - plane = LIGHTING_PLANE - layer = LIGHTING_LAYER - blend_mode = BLEND_ADD - show_when_dead = TRUE -======= - /mob var/list/screens = list() @@ -352,4 +174,4 @@ layer = LIGHTING_LAYER blend_mode = BLEND_ADD show_when_dead = TRUE ->>>>>>> 3a3a779... Scale fullscreen overlays to the view size (#32379) +>>>>>>> 3a3a779... Scale fullscreen overlays to the view size (#32379) From 5dcad7c40aebd373a96b52408b42b423e91e5228 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Tue, 7 Nov 2017 04:38:56 -0600 Subject: [PATCH 010/114] Update fullscreen.dm --- code/_onclick/hud/fullscreen.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index 900a4a2022..58f0fb18a2 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -174,4 +174,4 @@ layer = LIGHTING_LAYER blend_mode = BLEND_ADD show_when_dead = TRUE ->>>>>>> 3a3a779... Scale fullscreen overlays to the view size (#32379) + From 51356e89d482a26fa6c11556e67e33a89e4ff574 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Tue, 7 Nov 2017 04:40:42 -0600 Subject: [PATCH 011/114] Update helpers.dm --- code/modules/surgery/helpers.dm | 177 -------------------------------- 1 file changed, 177 deletions(-) diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm index af00385f20..d37b17ae35 100644 --- a/code/modules/surgery/helpers.dm +++ b/code/modules/surgery/helpers.dm @@ -1,178 +1,3 @@ -<<<<<<< HEAD -/proc/attempt_initiate_surgery(obj/item/I, mob/living/M, mob/user) - if(!istype(M)) - return - - var/mob/living/carbon/C - var/obj/item/bodypart/affecting - var/selected_zone = user.zone_selected - - if(iscarbon(M)) - C = M - affecting = C.get_bodypart(check_zone(selected_zone)) - - if(!M.lying && !isslime(M)) //if they're prone or a slime - return - - var/datum/surgery/current_surgery - - for(var/datum/surgery/S in M.surgeries) - if(S.location == selected_zone) - current_surgery = S - - if(!current_surgery) - var/list/all_surgeries = GLOB.surgeries_list.Copy() - var/list/available_surgeries = list() - - for(var/datum/surgery/S in all_surgeries) - if(!S.possible_locs.Find(selected_zone)) - continue - if(affecting) - if(!S.requires_bodypart) - continue - if(S.requires_bodypart_type && affecting.status == BODYPART_ROBOTIC) - continue - if(S.requires_real_bodypart && affecting.is_pseudopart) - continue - else if(C && S.requires_bodypart) //mob with no limb in surgery zone when we need a limb - continue - if(!S.can_start(user, M)) - continue - for(var/path in S.species) - if(istype(M, path)) - available_surgeries[S.name] = S - break - - var/P = input("Begin which procedure?", "Surgery", null, null) as null|anything in available_surgeries - if(P && user && user.Adjacent(M) && (I in user)) - var/datum/surgery/S = available_surgeries[P] - - for(var/datum/surgery/other in M.surgeries) - if(other.location == S.location) - return //during the input() another surgery was started at the same location. - - //we check that the surgery is still doable after the input() wait. - if(C) - affecting = C.get_bodypart(check_zone(selected_zone)) - if(affecting) - if(!S.requires_bodypart) - return - if(S.requires_bodypart_type && affecting.status == BODYPART_ROBOTIC) - return - else if(C && S.requires_bodypart) - return - if(!S.can_start(user, M)) - return - - if(S.ignore_clothes || get_location_accessible(M, selected_zone)) - var/datum/surgery/procedure = new S.type(M, selected_zone, affecting) - user.visible_message("[user] drapes [I] over [M]'s [parse_zone(selected_zone)] to prepare for \an [procedure.name].", \ - "You drape [I] over [M]'s [parse_zone(selected_zone)] to prepare for \an [procedure.name].") - - add_logs(user, M, "operated", addition="Operation type: [procedure.name], location: [selected_zone]") - else - to_chat(user, "You need to expose [M]'s [parse_zone(selected_zone)] first!") - - else if(!current_surgery.step_in_progress) - if(current_surgery.status == 1) - M.surgeries -= current_surgery - user.visible_message("[user] removes the drapes from [M]'s [parse_zone(selected_zone)].", \ - "You remove the drapes from [M]'s [parse_zone(selected_zone)].") - qdel(current_surgery) - else if(current_surgery.can_cancel) - if(current_surgery.requires_bodypart_type == BODYPART_ORGANIC) - if(istype(user.get_inactive_held_item(), /obj/item/cautery)) - M.surgeries -= current_surgery - user.visible_message("[user] mends the incision and removes the drapes from [M]'s [parse_zone(selected_zone)].", \ - "You mend the incision and remove the drapes from [M]'s [parse_zone(selected_zone)].") - qdel(current_surgery) - else - to_chat(user, "You need to hold a cautery in inactive hand to stop [M]'s surgery!") - else if(current_surgery.requires_bodypart_type == BODYPART_ROBOTIC) - if(istype(user.get_inactive_held_item(), /obj/item/screwdriver)) - M.surgeries -= current_surgery - user.visible_message("[user] screw the shell and removes the drapes from [M]'s [parse_zone(selected_zone)].", \ - "You screw the shell and remove the drapes from [M]'s [parse_zone(selected_zone)].") - qdel(current_surgery) - else - to_chat(user, "You need to hold a screwdriver in inactive hand to stop [M]'s surgery!") - - return 1 - - - -/proc/get_location_modifier(mob/M) - var/turf/T = get_turf(M) - if(locate(/obj/structure/table/optable, T)) - return 1 - else if(locate(/obj/structure/table, T)) - return 0.8 - else if(locate(/obj/structure/bed, T)) - return 0.7 - else - return 0.5 - - -/proc/get_location_accessible(mob/M, location) - var/covered_locations = 0 //based on body_parts_covered - var/face_covered = 0 //based on flags_inv - var/eyesmouth_covered = 0 //based on flags_cover - if(iscarbon(M)) - var/mob/living/carbon/C = M - for(var/obj/item/clothing/I in list(C.back, C.wear_mask, C.head)) - covered_locations |= I.body_parts_covered - face_covered |= I.flags_inv - eyesmouth_covered |= I.flags_cover - if(ishuman(C)) - var/mob/living/carbon/human/H = C - for(var/obj/item/I in list(H.wear_suit, H.w_uniform, H.shoes, H.belt, H.gloves, H.glasses, H.ears)) - covered_locations |= I.body_parts_covered - face_covered |= I.flags_inv - eyesmouth_covered |= I.flags_cover - - switch(location) - if("head") - if(covered_locations & HEAD) - return 0 - if("eyes") - if(covered_locations & HEAD || face_covered & HIDEEYES || eyesmouth_covered & GLASSESCOVERSEYES) - return 0 - if("mouth") - if(covered_locations & HEAD || face_covered & HIDEFACE || eyesmouth_covered & MASKCOVERSMOUTH || eyesmouth_covered & HEADCOVERSMOUTH) - return 0 - if("chest") - if(covered_locations & CHEST) - return 0 - if("groin") - if(covered_locations & GROIN) - return 0 - if("l_arm") - if(covered_locations & ARM_LEFT) - return 0 - if("r_arm") - if(covered_locations & ARM_RIGHT) - return 0 - if("l_leg") - if(covered_locations & LEG_LEFT) - return 0 - if("r_leg") - if(covered_locations & LEG_RIGHT) - return 0 - if("l_hand") - if(covered_locations & HAND_LEFT) - return 0 - if("r_hand") - if(covered_locations & HAND_RIGHT) - return 0 - if("l_foot") - if(covered_locations & FOOT_LEFT) - return 0 - if("r_foot") - if(covered_locations & FOOT_RIGHT) - return 0 - - return 1 -======= /proc/attempt_initiate_surgery(obj/item/I, mob/living/M, mob/user) if(!istype(M)) return @@ -344,5 +169,3 @@ return 0 return 1 - ->>>>>>> ea17a59... Merge pull request #32374 from swindly/master From 5bcaf7a3b19951d9b05d4dcad3cbfcd02abe8299 Mon Sep 17 00:00:00 2001 From: Jordie Date: Wed, 8 Nov 2017 01:03:18 +1100 Subject: [PATCH 012/114] Crayon rotation as a type var --- code/game/objects/effects/decals/crayon.dm | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index 7ca3bd9462..1358dbfc8d 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -5,20 +5,32 @@ icon_state = "rune1" gender = NEUTER var/do_icon_rotate = TRUE + var/rotation = 0 + var/paint_colour = "#FFFFFF" -/obj/effect/decal/cleanable/crayon/Initialize(mapload, main = "#FFFFFF", var/type = "rune1", var/e_name = "rune", var/rotation = 0, var/alt_icon = null) +/obj/effect/decal/cleanable/crayon/Initialize(mapload, main, type, e_name, graf_rot, alt_icon = null) . = ..() - name = e_name + if(e_name) + name = e_name desc = "A [name] vandalizing the station." if(alt_icon) icon = alt_icon - icon_state = type - + if(type) + icon_state = type + if(graf_rot) + rotation = graf_rot if(rotation && do_icon_rotate) var/matrix/M = matrix() M.Turn(rotation) src.transform = M +<<<<<<< HEAD add_atom_colour(main, FIXED_COLOUR_PRIORITY) +======= + if(main) + paint_colour = main + add_atom_colour(paint_colour, FIXED_COLOUR_PRIORITY) + +>>>>>>> 8c3948b... Crayon rotation as a type var (#32441) From b48e8da861f7d31270365425716b585ff7daebd8 Mon Sep 17 00:00:00 2001 From: Leo Date: Tue, 7 Nov 2017 12:03:48 -0200 Subject: [PATCH 013/114] Merge pull request #32442 from KorPhaeron/flyingrevert Reverts flying mobs passing through people --- code/modules/mob/living/living.dm | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 0cdcd90e61..732f641e86 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -105,7 +105,8 @@ //Called when we bump onto a mob /mob/living/proc/MobCollide(mob/M) - + //Even if we don't push/swap places, we "touched" them, so spread fire + spreadFire(M) //Also diseases for(var/thing in viruses) var/datum/disease/D = thing @@ -120,29 +121,6 @@ if(now_pushing) return TRUE - //TODO FOR LATER PRS: Make passing tables an automatic thing for flying and passable objects be determined better to prevent huge amounts of flags being set when mobs fly. - if((movement_type) ^ (M.movement_type)) //Fly past each other. - now_pushing = TRUE - var/old = pass_flags & PASSMOB - var/old_p = pulling? (pulling.pass_flags & PASSMOB) : NONE - var/atom/movable/cached = pulling - pass_flags |= PASSMOB - var/obj/item/I = cached - if(cached && (isliving(cached) || (istype(I) && (I.w_class < WEIGHT_CLASS_BULKY)))) - var/mob/living/l = cached - if(l.mob_size <= mob_size) - cached.pass_flags |= PASSMOB - Move(get_turf(M)) - if(!old) - pass_flags &= ~PASSMOB - if(cached && !old_p) - cached.pass_flags &= ~PASSMOB - cached = null - now_pushing = FALSE - return TRUE - - //Even if we don't push/swap places, we "touched" them, so spread fire - spreadFire(M) //Should stop you pushing a restrained person out of the way if(isliving(M)) From a297f4bc7f7a552c278c07c8bfbefcde1a498ca3 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Wed, 8 Nov 2017 02:22:48 -0600 Subject: [PATCH 015/114] Update crayon.dm --- code/game/objects/effects/decals/crayon.dm | 6 ------ 1 file changed, 6 deletions(-) diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index 1358dbfc8d..4362957a76 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -25,12 +25,6 @@ var/matrix/M = matrix() M.Turn(rotation) src.transform = M -<<<<<<< HEAD - - add_atom_colour(main, FIXED_COLOUR_PRIORITY) -======= if(main) paint_colour = main add_atom_colour(paint_colour, FIXED_COLOUR_PRIORITY) - ->>>>>>> 8c3948b... Crayon rotation as a type var (#32441) From 2f21f16b53a62e8beb97ce57c7d465729541f064 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 8 Nov 2017 17:04:20 -0500 Subject: [PATCH 016/114] initial commit - syncs and fiXES EVERYTHING WRONG ABOUT BOX HOLY FUCK HOW DID NOBODY REPORT ALL THIS SHIT --- _maps/map_files/BoxStation/BoxStation.dmm | 51 +- .../map_files/Deltastation/DeltaStation2.dmm | 3698 +++++++++++++++-- _maps/map_files/MetaStation/MetaStation.dmm | 45 +- _maps/shuttles/whiteship_delta.dmm | 2802 +++++++++++++ .../objects/items/stacks/sheets/mineral.dm | 3 + 5 files changed, 6170 insertions(+), 429 deletions(-) create mode 100644 _maps/shuttles/whiteship_delta.dmm diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index ece71e232e..8e4b3d9f2d 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -4496,6 +4496,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/machinery/light, /turf/open/floor/plasteel/red/side, /area/security/brig) "akq" = ( @@ -6671,7 +6672,8 @@ frequency = 1441; id = "waste_out" }, -/turf/open/floor/plating/airless, +/obj/structure/lattice/catwalk, +/turf/open/space, /area/engine/atmos) "apJ" = ( /turf/closed/wall, @@ -11594,7 +11596,7 @@ /turf/open/floor/plasteel/white/side{ dir = 4 }, -/area/space) +/area/crew_quarters/theatre) "aCr" = ( /turf/closed/wall, /area/crew_quarters/theatre) @@ -12174,7 +12176,7 @@ /turf/open/floor/plasteel/white/side{ dir = 4 }, -/area/space) +/area/crew_quarters/theatre) "aDS" = ( /obj/machinery/door/airlock{ name = "Unisex Showers"; @@ -12784,7 +12786,7 @@ }, /obj/structure/dresser, /turf/open/floor/plasteel/redblue/redside, -/area/space) +/area/crew_quarters/theatre) "aFm" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -13352,7 +13354,7 @@ pixel_x = -28 }, /turf/open/floor/plasteel/redblue, -/area/space) +/area/crew_quarters/theatre) "aGE" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -13954,7 +13956,7 @@ /obj/structure/table/wood, /obj/item/device/flashlight/lamp/bananalamp, /turf/open/floor/plasteel/redblue, -/area/space) +/area/crew_quarters/theatre) "aIa" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -38746,7 +38748,7 @@ }, /area/engine/atmos) "bQA" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating/airless, /area/engine/atmos) "bQB" = ( @@ -60295,6 +60297,7 @@ /obj/item/pen, /obj/item/hand_labeler, /obj/item/book/manual/wiki/security_space_law, +/obj/machinery/light, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "Qvn" = ( @@ -84168,7 +84171,7 @@ cjJ cjJ aaa aaa -QvL +QvK aaf aaa aaa @@ -84425,7 +84428,7 @@ cpo cjJ aaa aaa -QvM +QvK aaf Qoi aaa @@ -88290,7 +88293,7 @@ cSH cGu cGH QvT -QvW +QvT cGR csd csd @@ -89058,7 +89061,7 @@ cFe cMD cFM czE -QvO +QvN ccw cGT csd @@ -89474,11 +89477,11 @@ anS aoy Qvz QvA -QvB -QvC -QvD -QvE -QvF +QvA +QvA +QvA +QvA +QvA QvG axB anz @@ -90086,7 +90089,7 @@ cFh cMD cFM czE -QvP +QvN ccw cGT csd @@ -90343,7 +90346,7 @@ cEz cMD cFR cSJ -QvQ +QvN cMm ciZ cHd @@ -90606,7 +90609,7 @@ cGS cHe cHe cHr -Qwb +Qwa ccw aaf aaT @@ -90860,7 +90863,7 @@ cSK cGx cGK QvU -QvX +QvU cGY csd csd @@ -91007,7 +91010,7 @@ agn ajd ajb akr -Qvx +Qvw QpO amo QpU @@ -92529,9 +92532,9 @@ aaa aaa aaf aaf -QoE -QoE -QoE +abp +abp +abp abq abq abq diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 96bdc28a33..b454b9f9c2 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -102554,6 +102554,2910 @@ /obj/machinery/vending/kink, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) +"YGP" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YGQ" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YGR" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YGS" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 2; + name = "External Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YGT" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YGU" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YGV" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YGW" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YGX" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YGY" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YGZ" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHa" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHb" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHc" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YHd" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YHe" = ( +/obj/structure/sign/vacuum, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YHf" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHg" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHh" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHi" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHj" = ( +/obj/structure/window/reinforced, +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHk" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHl" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHm" = ( +/obj/structure/closet/firecloset/full, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHn" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/reagent_dispensers/watertank/high, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHo" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHp" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plasteel/greenblue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YHq" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/circuitboard/machine/hydroponics, +/turf/open/floor/plasteel/greenblue/side{ + dir = 5 + }, +/area/shuttle/abandoned) +"YHr" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YHs" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 1; + glass = 1; + name = "Internal Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YHt" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YHu" = ( +/obj/structure/closet/secure_closet/freezer/kitchen/mining, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/flour, +/turf/open/floor/plasteel/greenblue/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"YHv" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YHw" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHx" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHy" = ( +/obj/structure/closet/emcloset, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHz" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHA" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHB" = ( +/obj/structure/closet/crate{ + name = "emergency supplies crate" + }, +/obj/item/storage/toolbox/emergency, +/obj/item/storage/toolbox/emergency, +/obj/item/device/flashlight/flare{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/device/flashlight/flare{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/crowbar, +/obj/item/wrench, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/extinguisher, +/obj/item/extinguisher, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHC" = ( +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/box/hug/medical, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHD" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_maintenance{ + name = "Maintenance" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YHE" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YHF" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/green/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"YHG" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YHH" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YHI" = ( +/obj/structure/sink/kitchen{ + pixel_z = 30 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/green/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"YHJ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YHK" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YHL" = ( +/obj/machinery/door/airlock/glass_maintenance{ + name = "Maintenance" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YHM" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHN" = ( +/obj/structure/closet/crate{ + name = "spare equipment crate" + }, +/obj/item/grenade/chem_grenade/metalfoam, +/obj/item/relic, +/obj/item/device/t_scanner, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct/small{ + dir = 4 + }, +/obj/item/storage/box/lights/mixed, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHO" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHP" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHQ" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHR" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YHS" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YHT" = ( +/obj/machinery/vending/hydroseeds, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side, +/area/shuttle/abandoned) +"YHU" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/stack/sheet/metal/fifty, +/obj/item/circuitboard/machine/hydroponics, +/obj/item/circuitboard/machine/gibber, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/green/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"YHV" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YHW" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YHX" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YHY" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner, +/area/shuttle/abandoned) +"YHZ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side, +/area/shuttle/abandoned) +"YIa" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YIb" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIc" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YId" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIe" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIf" = ( +/obj/structure/closet/wardrobe, +/obj/item/clothing/under/trek/command/next, +/obj/item/clothing/under/trek/command/next, +/obj/item/clothing/under/trek/engsec/next, +/obj/item/clothing/under/trek/engsec/next, +/obj/item/clothing/under/trek/medsci/next, +/obj/item/clothing/under/trek/medsci/next, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/spawner/lootdrop/costume, +/obj/item/clothing/under/rank/centcom_commander{ + desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; + name = "\improper dusty old CentCom jumpsuit" + }, +/obj/item/clothing/under/rank/centcom_officer{ + desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; + name = "\improper dusty old CentCom jumpsuit" + }, +/obj/item/clothing/under/rank/centcom_officer{ + desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; + name = "\improper dusty old CentCom jumpsuit" + }, +/obj/item/clothing/head/centhat{ + desc = "There's a gouge through the top where something has clawed clean through it. Whoever was wearing it probably doesn't need a hat any more."; + name = "\improper damaged CentCom hat" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"YIg" = ( +/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"YIh" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YIi" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YIj" = ( +/obj/item/storage/bag/plants/portaseeder, +/obj/structure/table, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_x = 13; + pixel_y = 5 + }, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/glass/bottle/nutrient/rh{ + pixel_x = -2; + pixel_y = 3 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YIk" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YIl" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YIm" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YIn" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YIo" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YIp" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"YIq" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIr" = ( +/obj/item/soap, +/obj/structure/curtain, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/shower{ + pixel_y = 15 + }, +/turf/open/floor/plasteel/freezer, +/area/shuttle/abandoned) +"YIs" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIt" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIu" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"YIv" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"YIw" = ( +/obj/structure/table, +/obj/item/storage/pill_bottle/dice, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"YIx" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIy" = ( +/obj/structure/table, +/obj/item/wrench, +/obj/item/crowbar, +/obj/item/clothing/suit/apron, +/obj/item/shovel/spade, +/obj/item/cultivator, +/obj/item/device/plant_analyzer, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/wirecutters, +/turf/open/floor/plasteel/blue/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YIz" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/box/donkpockets, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YIA" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YIB" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YIC" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 4 + }, +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/plasteel/green/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"YID" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIE" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/toilet{ + dir = 8 + }, +/turf/open/floor/plasteel/freezer, +/area/shuttle/abandoned) +"YIF" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIG" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct/small{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/shuttle/abandoned) +"YIH" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YII" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIJ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/mopbucket, +/turf/open/floor/plasteel/greenblue/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"YIK" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YIL" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YIM" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIN" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"YIO" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YIP" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YIQ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YIR" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/corner, +/area/shuttle/abandoned) +"YIS" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIT" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + name = "Laborotary" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YIU" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIV" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + name = "Laborotary" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YIW" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIX" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YIY" = ( +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"YIZ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/toy/cards/deck, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YJa" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YJb" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + glass = 1; + name = "Dormitory"; + opacity = 0 + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YJc" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"YJd" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/gun/energy/floragun, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJe" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJf" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJg" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YJh" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + name = "Laborotary" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YJi" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YJj" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 1 + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YJk" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YJl" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJm" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJn" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/bed, +/turf/open/floor/plasteel/greenblue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"YJo" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side, +/area/shuttle/abandoned) +"YJp" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/mop, +/turf/open/floor/plasteel/greenblue/side, +/area/shuttle/abandoned) +"YJq" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJr" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/device/gps{ + gpstag = "ITVSAC"; + pixel_x = -1; + pixel_y = 2 + }, +/obj/effect/decal/cleanable/blood/gibs/limb, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YJs" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJt" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJu" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJv" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"YJw" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJx" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12 + }, +/obj/structure/mirror{ + pixel_x = -30 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJy" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/bikehorn/rubberducky, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YJz" = ( +/obj/structure/urinal{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJA" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJB" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJC" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJD" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJE" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJF" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJG" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YJH" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + glass = 1; + name = "Crew Quarters"; + opacity = 0 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YJI" = ( +/obj/machinery/vending/boozeomat, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJJ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + glass = 1; + name = "Crew Quarters"; + opacity = 0 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YJK" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YJL" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJM" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12 + }, +/obj/structure/mirror{ + pixel_x = -30 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJN" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YJO" = ( +/obj/structure/urinal{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJP" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJQ" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJR" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/latex/nitrile, +/obj/item/clothing/mask/surgical, +/obj/item/clothing/suit/apron/surgical, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"YJS" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 1 + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YJT" = ( +/obj/structure/closet/crate/freezer/blood, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 5 + }, +/area/shuttle/abandoned) +"YJU" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YJV" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/clothing/head/helmet/swat/nanotrasen, +/turf/open/floor/plasteel/bot, +/area/shuttle/abandoned) +"YJW" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJX" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light/built{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJY" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YJZ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/clothing/gloves/color/black, +/turf/open/floor/plasteel/bot, +/area/shuttle/abandoned) +"YKa" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKb" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKc" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKd" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKe" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKf" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YKg" = ( +/obj/structure/table/optable, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/defibrillator/loaded, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YKh" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/reagent_containers/spray/cleaner, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YKi" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/backpack/duffelbag/med/surgery, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YKj" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKk" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/obj/structure/table, +/obj/item/clothing/suit/armor/vest, +/turf/open/floor/plasteel/bot, +/area/shuttle/abandoned) +"YKl" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YKm" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YKn" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YKo" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 4 + }, +/obj/structure/table, +/obj/item/gun/energy/e_gun/mini, +/turf/open/floor/plasteel/bot, +/area/shuttle/abandoned) +"YKp" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKq" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/abandoned) +"YKr" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/robot_debris, +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/abandoned) +"YKs" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/bot, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/plasteel/neutral/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"YKt" = ( +/obj/structure/sign/vacuum, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKu" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YKv" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/computer, +/obj/item/circuitboard/computer/operating, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YKw" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YKx" = ( +/obj/machinery/sleeper{ + icon_state = "sleeper-open"; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"YKy" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YKz" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/arrival/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"YKA" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/suit/armor/vest, +/obj/effect/decal/cleanable/blood/gibs/body, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YKB" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YKC" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/crowbar/red, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YKD" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YKE" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 4; + glass = 1; + name = "Internal Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YKF" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YKG" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YKH" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YKI" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 8; + name = "External Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YKJ" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKK" = ( +/obj/machinery/iv_drip, +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_x = -28; + req_access_txt = "0"; + use_power = 0 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YKL" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YKM" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YKN" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_medical{ + id_tag = null; + name = "Infirmary"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YKO" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/arrival{ + dir = 8 + }, +/area/shuttle/abandoned) +"YKP" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YKQ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YKR" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YKS" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/head/helmet/swat/nanotrasen, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YKT" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKU" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKV" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YKW" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKX" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKY" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YKZ" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"YLa" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct, +/turf/open/floor/plasteel/whiteblue/side, +/area/shuttle/abandoned) +"YLb" = ( +/obj/structure/closet/secure_closet/medical2{ + req_access = null + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/glasses/hud/health/sunglasses, +/turf/open/floor/plasteel/whiteblue/side, +/area/shuttle/abandoned) +"YLc" = ( +/obj/structure/sign/bluecross_2, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLd" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/arrival/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YLe" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLf" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLg" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLh" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLi" = ( +/obj/structure/sign/engineering, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLj" = ( +/obj/machinery/autolathe, +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YLk" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/tank_dispenser, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"YLl" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/bot, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLm" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLn" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLo" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLp" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLq" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLr" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLs" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLt" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/gibs/down, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLu" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLv" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/closet/crate/science, +/obj/effect/decal/cleanable/leaper_sludge, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLw" = ( +/obj/structure/closet/crate/engineering, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/rglass{ + amount = 20 + }, +/obj/item/stack/sheet/mineral/titanium/fifty, +/turf/open/floor/plasteel/yellow/corner, +/area/shuttle/abandoned) +"YLx" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YLy" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/rglass{ + amount = 20 + }, +/obj/item/clothing/head/welding, +/obj/structure/light_construct{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YLz" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"YLA" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLB" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YLC" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YLD" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"YLE" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 1 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YLF" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YLG" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YLH" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"YLI" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/paper/crumpled/bloody{ + info = "Your vessel will be transporting artifact E-395 to our nearby research station. Under no circumstances is the container to be opened. Half of the payment will be given now, rest upon completion. In the event of containment breach--" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLJ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YLK" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/gibs/limb, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLL" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YLM" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_engineering{ + name = "Engineering Storage" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YLN" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YLO" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/head/welding, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"YLP" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLQ" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YLR" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YLS" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YLT" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YLU" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YLV" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/research{ + glass = 1; + name = "Research Lab" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YLW" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/purple/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YLX" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/gloves/color/black, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLY" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YLZ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/greenglow, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMa" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/airlock_painter, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/yellow/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"YMb" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMc" = ( +/obj/structure/closet/toolcloset, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YMd" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/stack/rods/twentyfive, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"YMe" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/structure/light_construct/small, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMf" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMg" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YMh" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/computer, +/obj/item/stock_parts/console_screen, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YMi" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/circuitboard/machine/circuit_imprinter, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YMj" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/machine, +/turf/open/floor/plasteel/whitepurple/corner, +/area/shuttle/abandoned) +"YMk" = ( +/obj/structure/sign/science, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMl" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YMm" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMn" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMo" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMp" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMq" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMr" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMs" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YMt" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMu" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMv" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YMw" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/machine, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YMx" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"YMy" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/machine, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YMz" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMA" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMB" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YMC" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMD" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YME" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMF" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 4; + glass = 1; + name = "Internal Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YMG" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YMH" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YMI" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YMJ" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 8; + name = "External Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/docking_port/mobile{ + dheight = 0; + dir = 8; + dwidth = 11; + height = 15; + id = "whiteship"; + launch_status = 0; + name = "White-Ship"; + port_direction = 8; + preferred_direction = 8; + roundstart_move = "whiteship_away"; + width = 32 + }, +/obj/docking_port/stationary{ + dir = 8; + dwidth = 11; + height = 15; + id = "whiteship_home"; + name = "SS13: Auxiliary Dock, Station-Fore"; + width = 32 + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YMK" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YML" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"YMM" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plasteel/whitepurple/side, +/area/shuttle/abandoned) +"YMN" = ( +/obj/structure/closet/crate/science{ + name = "spare circuit boards crate" + }, +/obj/item/circuitboard/computer/rdconsole, +/obj/item/circuitboard/machine/protolathe, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/reagent_containers/glass/beaker/sulphuric, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 6 + }, +/area/shuttle/abandoned) +"YMO" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMP" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMQ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner, +/area/shuttle/abandoned) +"YMR" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light/built, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"YMS" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"YMT" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"YMU" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMV" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YMW" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YMX" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YMY" = ( +/obj/structure/sign/vacuum, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YMZ" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNa" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNb" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNc" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNd" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNe" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_command{ + name = "Bridge"; + welded = 1 + }, +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/abandoned) +"YNf" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNg" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNh" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNi" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_command{ + name = "Bridge"; + welded = 1 + }, +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/abandoned) +"YNj" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNk" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNl" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNm" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNn" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNo" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNp" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/cobweb, +/obj/item/stack/spacecash/c1000, +/obj/item/stack/spacecash/c1000, +/turf/open/floor/plasteel/blue/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"YNq" = ( +/obj/structure/closet/crate, +/obj/item/paper_bin, +/obj/item/stack/sheet/metal/twenty, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/under/gimmick/rank/captain/suit, +/turf/open/floor/plasteel/blue/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YNr" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNs" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/device/megaphone, +/turf/open/floor/plasteel/blue/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"YNt" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light/built{ + dir = 1 + }, +/turf/open/floor/plasteel/blue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"YNu" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"YNv" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNw" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel/blue/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"YNx" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/device/camera, +/turf/open/floor/plasteel/blue/side{ + dir = 5 + }, +/area/shuttle/abandoned) +"YNy" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNz" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNA" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/obj/item/phone, +/turf/open/floor/plasteel/blue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"YNB" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNC" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YND" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/gibs/torso, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNE" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/shard, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNF" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNG" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNH" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNI" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 4 + }, +/turf/open/floor/plasteel/blue/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"YNJ" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"YNK" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YNL" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"YNM" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"YNN" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/pen/fountain/captain, +/turf/open/floor/plasteel/neutral/side{ + dir = 5 + }, +/area/shuttle/abandoned) +"YNO" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNP" = ( +/obj/structure/chair/comfy/black, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNQ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"YNR" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"YNS" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/photo_album, +/turf/open/floor/plasteel/blue/corner, +/area/shuttle/abandoned) +"YNT" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side{ + dir = 6 + }, +/area/shuttle/abandoned) +"YNU" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YNV" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YNW" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YNX" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/fancy/cigarettes/cigars/cohiba, +/turf/open/floor/plasteel/blue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"YNY" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ + x_offset = -7; + y_offset = -8 + }, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"YNZ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/device/pda/clear, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"YOa" = ( +/obj/machinery/computer/shuttle/white_ship, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"YOb" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/device/radio, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"YOc" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"YOd" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side{ + dir = 6 + }, +/area/shuttle/abandoned) +"YOe" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOf" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOg" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOh" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOi" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOj" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOk" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOl" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOm" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOn" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOo" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"YOp" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"YOq" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"YOr" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"YOs" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"YOt" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"YOu" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"YOv" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) (1,1,1) = {" aaa @@ -124240,19 +127144,19 @@ aNF aPi aNV aSK -aIU +YOq aWc aNV aSK -aIU +YOs aWc aNV aSK -aIU +YOu aWc aNV aWc -aIU +YOv aSK aNV aaH @@ -130347,28 +133251,28 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YGW +YHl +YHA +YHP +YIe +YIt +YII +YIX +YJm +YJB +YJQ +YKf +YKu +YKJ +YKY +YLn +YLC +YLR +YMg +YMv +YMK +YMZ aaa aaa aaa @@ -130603,29 +133507,29 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YGP +YGX +YHm +YHB +YHQ +YIf +YIu +YIJ +YIY +YJn +YJC +YJR +YKg +YKv +YKK +YKZ +YLo +YLD +YLS +YMh +YMw +YML +YNa aaa aaa aaa @@ -130663,15 +133567,15 @@ aaa aaf aNV aPy -aIU +YOp aTf aNV aWv -aIU +YOr aZy aNV aWv -aIU +YOt aZy aNV aJg @@ -130860,33 +133764,33 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YGQ +YGY +YHn +YHC +YHR +YIg +YIv +YIK +YIZ +YJo +YJD +YJS +YKh +YKw +YKL +YLa +YLp +YLE +YLT +YMi +YMx +YMM +YNb +YNo +YNz +YNK +YNV aaa aaa aaa @@ -131118,33 +134022,33 @@ aad aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YGZ +YHo +YHD +YHS +YIh +YIw +YIL +YJa +YJp +YJE +YJT +YKi +YKx +YKM +YLb +YLq +YLF +YLU +YMj +YMy +YMN +YNc +YNp +YNA +YNL +YNW +YOg aaa aaa aaa @@ -131375,33 +134279,33 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YHa +YHp +YHE +YHT +YIi +YIx +YIM +YJb +YJq +YJF +YJU +YKj +YKy +YKN +YLc +YLr +YLG +YLV +YMk +YMz +YMO +YNd +YNq +YNB +YNM +YNX +YOh aaa aaa aaa @@ -131632,33 +134536,33 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YHb +YHq +YHF +YHU +YIj +YIy +YIN +YJc +YJr +YJG +YJV +YKk +YKz +YKO +YLd +YLs +YLH +YLW +YMl +YMA +YMP +YNe +YNr +YNC +YNN +YNY +YOi aaa aaa aaa @@ -131888,34 +134792,34 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YGR +YHc +YHr +YHG +YHV +YIk +YIz +YIO +YJd +YJs +YJH +YJW +YKl +YKA +YKP +YLe +YLt +YLI +YLX +YMm +YMB +YMQ +YNf +YNs +YND +YNO +YNZ +YOj aaa aaa aaa @@ -132145,34 +135049,34 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YGS +YHd +YHs +YHH +YHW +YIl +YIA +YIP +YJe +YJt +YJI +YJX +YKm +YKB +YKQ +YLf +YLu +YLJ +YLY +YMn +YMC +YMR +YNg +YNt +YNE +YNP +YOa +YOk aaa aaa aaa @@ -132402,34 +135306,34 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YGT +YHe +YHt +YHI +YHX +YIm +YIB +YIQ +YJf +YJu +YJJ +YJY +YKn +YKC +YKR +YLg +YLv +YLK +YLZ +YMo +YMD +YMS +YNh +YNu +YNF +YNQ +YOb +YOl aaa aaa aaa @@ -132660,33 +135564,33 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YHf +YHu +YHJ +YHY +YIn +YIC +YIR +YJg +YJv +YJK +YJZ +YKo +YKD +YKS +YLh +YLw +YLL +YMa +YMp +YME +YMT +YNi +YNv +YNG +YNR +YOc +YOm aaa aaa aaa @@ -132917,33 +135821,33 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YHg +YHv +YHK +YHZ +YIo +YID +YIS +YJh +YJw +YJL +YKa +YKp +YKE +YKT +YLi +YLx +YLM +YMb +YMq +YMF +YMU +YNj +YNw +YNH +YNS +YOd +YOn aaa aaa aaa @@ -133174,33 +136078,33 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YHh +YHw +YHL +YIa +YIp +YIE +YIT +YJi +YJx +YJM +YKb +YKq +YKF +YKU +YLj +YLy +YLN +YMc +YMr +YMG +YMV +YNk +YNx +YNI +YNT +YOe +YOo aaa aaa aaa @@ -133430,33 +136334,33 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YGU +YHi +YHx +YHM +YIb +YIq +YIF +YIU +YJj +YJy +YJN +YKc +YKr +YKG +YKV +YLk +YLz +YLO +YMd +YMs +YMH +YMW +YNl +YNy +YNJ +YNU +YOf aaa aaa aaa @@ -133687,29 +136591,29 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YGV +YHj +YHy +YHN +YIc +YIr +YIG +YIV +YJk +YJz +YJO +YKd +YKs +YKH +YKW +YLl +YLA +YLP +YMe +YMt +YMI +YMX +YNm aaa aaa aaa @@ -133945,28 +136849,28 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +YHk +YHz +YHO +YId +YIs +YIH +YIW +YJl +YJA +YJP +YKe +YKt +YKI +YKX +YLm +YLB +YLQ +YMf +YMu +YMJ +YMY +YNn aaa aaa aaa diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 64923353d4..7a04dc6d06 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -73034,7 +73034,8 @@ frequency = 1441; id = "n2_in" }, -/turf/open/floor/plating/airless, +/obj/structure/lattice/catwalk, +/turf/open/space, /area/engine/atmos) "cVB" = ( /obj/structure/chair{ @@ -80786,6 +80787,34 @@ }, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) +"EDo" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"EDp" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"EDq" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"EDr" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"EDs" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"EDt" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"EDu" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) (1,1,1) = {" aaa @@ -122313,7 +122342,7 @@ cbe ccO bza aaf -bza +EDs chO cjd ckG @@ -123341,7 +123370,7 @@ cbi ccS bza aaf -bza +EDt chR cjg ckH @@ -124369,7 +124398,7 @@ cVJ ccQ bza aaf -bza +EDu chU cjj ckJ @@ -125891,19 +125920,19 @@ aaa aaf bAR dBC -bza +EDo bFZ bAR bCA -bza +EDp bFZ bAR bCA -bza +EDq bFZ bAR bCA -bza +EDr bFZ bAR aaf diff --git a/_maps/shuttles/whiteship_delta.dmm b/_maps/shuttles/whiteship_delta.dmm new file mode 100644 index 0000000000..f1e47029d4 --- /dev/null +++ b/_maps/shuttles/whiteship_delta.dmm @@ -0,0 +1,2802 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/open/space/basic, +/area/space) +"ab" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"ac" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"ad" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 2; + name = "External Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"ae" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"af" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"ag" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"ah" = ( +/obj/structure/sign/vacuum, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/abandoned) +"ai" = ( +/obj/structure/window/reinforced, +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"aj" = ( +/obj/structure/closet/firecloset/full, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"ak" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/reagent_dispensers/watertank/high, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"al" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plasteel/greenblue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"am" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/circuitboard/machine/hydroponics, +/turf/open/floor/plasteel/greenblue/side{ + dir = 5 + }, +/area/shuttle/abandoned) +"an" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 1; + glass = 1; + name = "Internal Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"ao" = ( +/obj/structure/closet/secure_closet/freezer/kitchen/mining, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/flour, +/turf/open/floor/plasteel/greenblue/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"ap" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"aq" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"ar" = ( +/obj/structure/closet/emcloset, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"as" = ( +/obj/structure/closet/crate{ + name = "emergency supplies crate" + }, +/obj/item/storage/toolbox/emergency, +/obj/item/storage/toolbox/emergency, +/obj/item/device/flashlight/flare{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/device/flashlight/flare{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/crowbar, +/obj/item/wrench, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/extinguisher, +/obj/item/extinguisher, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"at" = ( +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/box/hug/medical, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"au" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_maintenance{ + name = "Maintenance" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"av" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"aw" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/green/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"ax" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"ay" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"az" = ( +/obj/structure/sink/kitchen{ + pixel_z = 30 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/green/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"aA" = ( +/obj/machinery/door/airlock/glass_maintenance{ + name = "Maintenance" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"aB" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"aC" = ( +/obj/structure/closet/crate{ + name = "spare equipment crate" + }, +/obj/item/grenade/chem_grenade/metalfoam, +/obj/item/relic, +/obj/item/device/t_scanner, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct/small{ + dir = 4 + }, +/obj/item/storage/box/lights/mixed, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"aD" = ( +/obj/machinery/vending/hydroseeds, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side, +/area/shuttle/abandoned) +"aE" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/stack/sheet/metal/fifty, +/obj/item/circuitboard/machine/hydroponics, +/obj/item/circuitboard/machine/gibber, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/green/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"aF" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"aG" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner, +/area/shuttle/abandoned) +"aH" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side, +/area/shuttle/abandoned) +"aI" = ( +/obj/structure/closet/wardrobe, +/obj/item/clothing/under/trek/command/next, +/obj/item/clothing/under/trek/command/next, +/obj/item/clothing/under/trek/engsec/next, +/obj/item/clothing/under/trek/engsec/next, +/obj/item/clothing/under/trek/medsci/next, +/obj/item/clothing/under/trek/medsci/next, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/shoes/jackboots, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/spawner/lootdrop/costume, +/obj/item/clothing/under/rank/centcom_commander{ + desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; + name = "\improper dusty old CentCom jumpsuit" + }, +/obj/item/clothing/under/rank/centcom_officer{ + desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; + name = "\improper dusty old CentCom jumpsuit" + }, +/obj/item/clothing/under/rank/centcom_officer{ + desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; + name = "\improper dusty old CentCom jumpsuit" + }, +/obj/item/clothing/head/centhat{ + desc = "There's a gouge through the top where something has clawed clean through it. Whoever was wearing it probably doesn't need a hat any more."; + name = "\improper damaged CentCom hat" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"aJ" = ( +/obj/structure/reagent_dispensers/beerkeg, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"aK" = ( +/obj/item/storage/bag/plants/portaseeder, +/obj/structure/table, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_x = 13; + pixel_y = 5 + }, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/reagent_containers/glass/bottle/nutrient/rh{ + pixel_x = -2; + pixel_y = 3 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"aL" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"aM" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"aN" = ( +/obj/item/soap, +/obj/structure/curtain, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/shower{ + pixel_y = 15 + }, +/turf/open/floor/plasteel/freezer, +/area/shuttle/abandoned) +"aO" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"aP" = ( +/obj/structure/table, +/obj/item/storage/pill_bottle/dice, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/barber, +/area/shuttle/abandoned) +"aQ" = ( +/obj/structure/table, +/obj/item/wrench, +/obj/item/crowbar, +/obj/item/clothing/suit/apron, +/obj/item/shovel/spade, +/obj/item/cultivator, +/obj/item/device/plant_analyzer, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/wirecutters, +/turf/open/floor/plasteel/blue/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"aR" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/box/donkpockets, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"aS" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 4 + }, +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/plasteel/green/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"aT" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/toilet{ + dir = 8 + }, +/turf/open/floor/plasteel/freezer, +/area/shuttle/abandoned) +"aU" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct/small{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/shuttle/abandoned) +"aV" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/mopbucket, +/turf/open/floor/plasteel/greenblue/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"aW" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"aX" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"aY" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/corner, +/area/shuttle/abandoned) +"aZ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + name = "Laborotary" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"ba" = ( +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/turf/open/floor/plasteel/greenblue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"bb" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/toy/cards/deck, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"bc" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"bd" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + glass = 1; + name = "Dormitory"; + opacity = 0 + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"be" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"bf" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/gun/energy/floragun, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bg" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"bh" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 1 + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"bi" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/bed, +/turf/open/floor/plasteel/greenblue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"bj" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/mop, +/turf/open/floor/plasteel/greenblue/side, +/area/shuttle/abandoned) +"bk" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/device/gps{ + gpstag = "ITVSAC"; + pixel_x = -1; + pixel_y = 2 + }, +/obj/effect/decal/cleanable/blood/gibs/limb, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"bl" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bm" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"bn" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12 + }, +/obj/structure/mirror{ + pixel_x = -30 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bo" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/bikehorn/rubberducky, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"bp" = ( +/obj/structure/urinal{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bq" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"br" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock{ + glass = 1; + name = "Crew Quarters"; + opacity = 0 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"bs" = ( +/obj/machinery/vending/boozeomat, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"bt" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"bu" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/latex/nitrile, +/obj/item/clothing/mask/surgical, +/obj/item/clothing/suit/apron/surgical, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"bv" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 1 + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"bw" = ( +/obj/structure/closet/crate/freezer/blood, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 5 + }, +/area/shuttle/abandoned) +"bx" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/clothing/head/helmet/swat/nanotrasen, +/turf/open/floor/plasteel/bot, +/area/shuttle/abandoned) +"by" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light/built{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bz" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/clothing/gloves/color/black, +/turf/open/floor/plasteel/bot, +/area/shuttle/abandoned) +"bA" = ( +/obj/structure/table/optable, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/defibrillator/loaded, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"bB" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/reagent_containers/spray/cleaner, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"bC" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/backpack/duffelbag/med/surgery, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"bD" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/obj/structure/table, +/obj/item/clothing/suit/armor/vest, +/turf/open/floor/plasteel/bot, +/area/shuttle/abandoned) +"bE" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 4 + }, +/obj/structure/table, +/obj/item/gun/energy/e_gun/mini, +/turf/open/floor/plasteel/bot, +/area/shuttle/abandoned) +"bF" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/abandoned) +"bG" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/robot_debris, +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/abandoned) +"bH" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/bot, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/plasteel/neutral/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"bI" = ( +/obj/structure/sign/vacuum, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"bJ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/computer, +/obj/item/circuitboard/computer/operating, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"bK" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"bL" = ( +/obj/machinery/sleeper{ + icon_state = "sleeper-open"; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"bM" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/arrival/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"bN" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/suit/armor/vest, +/obj/effect/decal/cleanable/blood/gibs/body, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bO" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/crowbar/red, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bP" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 4; + glass = 1; + name = "Internal Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"bQ" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 8; + name = "External Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"bR" = ( +/obj/machinery/iv_drip, +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_x = -28; + req_access_txt = "0"; + use_power = 0 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"bS" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"bT" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"bU" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_medical{ + id_tag = null; + name = "Infirmary"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"bV" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/arrival{ + dir = 8 + }, +/area/shuttle/abandoned) +"bW" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bX" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/head/helmet/swat/nanotrasen, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"bY" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"bZ" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"ca" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct, +/turf/open/floor/plasteel/whiteblue/side, +/area/shuttle/abandoned) +"cb" = ( +/obj/structure/closet/secure_closet/medical2{ + req_access = null + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/glasses/hud/health/sunglasses, +/turf/open/floor/plasteel/whiteblue/side, +/area/shuttle/abandoned) +"cc" = ( +/obj/structure/sign/bluecross_2, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"cd" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/arrival/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"ce" = ( +/obj/structure/sign/engineering, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"cf" = ( +/obj/machinery/autolathe, +/obj/effect/decal/cleanable/oil, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"cg" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/tank_dispenser, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"ch" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/bot, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"ci" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cj" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/gibs/down, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"ck" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cl" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/closet/crate/science, +/obj/effect/decal/cleanable/leaper_sludge, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cm" = ( +/obj/structure/closet/crate/engineering, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/rglass{ + amount = 20 + }, +/obj/item/stack/sheet/mineral/titanium/fifty, +/turf/open/floor/plasteel/yellow/corner, +/area/shuttle/abandoned) +"cn" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/rglass{ + amount = 20 + }, +/obj/item/clothing/head/welding, +/obj/structure/light_construct{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"co" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"cp" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cq" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"cr" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 1 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"cs" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"ct" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"cu" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/paper/crumpled/bloody{ + info = "Your vessel will be transporting artifact E-395 to our nearby research station. Under no circumstances is the container to be opened. Half of the payment will be given now, rest upon completion. In the event of containment breach--" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cv" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/gibs/limb, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cw" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"cx" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_engineering{ + name = "Engineering Storage" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"cy" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/head/welding, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"cz" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"cA" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/research{ + glass = 1; + name = "Research Lab" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"cB" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/purple/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"cC" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/gloves/color/black, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cD" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/greenglow, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cE" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/airlock_painter, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/yellow/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"cF" = ( +/obj/structure/closet/toolcloset, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"cG" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/stack/rods/twentyfive, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/abandoned) +"cH" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/structure/light_construct/small, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cI" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/computer, +/obj/item/stock_parts/console_screen, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"cJ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/circuitboard/machine/circuit_imprinter, +/turf/open/floor/plasteel/white, +/area/shuttle/abandoned) +"cK" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/machine, +/turf/open/floor/plasteel/whitepurple/corner, +/area/shuttle/abandoned) +"cL" = ( +/obj/structure/sign/science, +/turf/closed/wall/mineral/titanium, +/area/shuttle/abandoned) +"cM" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/turf/open/floor/plasteel/purple/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"cN" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cO" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cP" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/machine, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"cQ" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/frame/machine, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"cR" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plating, +/area/shuttle/abandoned) +"cS" = ( +/obj/machinery/door/airlock/titanium{ + cyclelinkeddir = 8; + name = "External Airlock" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/docking_port/mobile{ + dheight = 0; + dir = 8; + dwidth = 11; + height = 15; + id = "whiteship"; + launch_status = 0; + name = "White-Ship"; + port_direction = 8; + preferred_direction = 8; + roundstart_move = "whiteship_away"; + timid = 1; + width = 32 + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"cT" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"cU" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plasteel/whitepurple/side, +/area/shuttle/abandoned) +"cV" = ( +/obj/structure/closet/crate/science{ + name = "spare circuit boards crate" + }, +/obj/item/circuitboard/computer/rdconsole, +/obj/item/circuitboard/machine/protolathe, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/reagent_containers/glass/beaker/sulphuric, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 6 + }, +/area/shuttle/abandoned) +"cW" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light/built, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"cX" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 8 + }, +/area/shuttle/abandoned) +"cY" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plasteel, +/area/shuttle/abandoned) +"cZ" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"da" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/turf_decal/bot, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"db" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/door/airlock/glass_command{ + name = "Bridge"; + welded = 1 + }, +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/abandoned) +"dc" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/cobweb, +/obj/item/stack/spacecash/c1000, +/obj/item/stack/spacecash/c1000, +/turf/open/floor/plasteel/blue/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"dd" = ( +/obj/structure/closet/crate, +/obj/item/paper_bin, +/obj/item/stack/sheet/metal/twenty, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/clothing/under/gimmick/rank/captain/suit, +/turf/open/floor/plasteel/blue/corner{ + dir = 1 + }, +/area/shuttle/abandoned) +"de" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/device/megaphone, +/turf/open/floor/plasteel/blue/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"df" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/light/built{ + dir = 1 + }, +/turf/open/floor/plasteel/blue/side{ + dir = 1 + }, +/area/shuttle/abandoned) +"dg" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel/blue/corner{ + dir = 4 + }, +/area/shuttle/abandoned) +"dh" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/device/camera, +/turf/open/floor/plasteel/blue/side{ + dir = 5 + }, +/area/shuttle/abandoned) +"di" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 8 + }, +/obj/item/phone, +/turf/open/floor/plasteel/blue/side{ + dir = 8 + }, +/area/shuttle/abandoned) +"dj" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/blood/gibs/torso, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"dk" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/shard, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"dl" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/light_construct{ + dir = 4 + }, +/turf/open/floor/plasteel/blue/side{ + dir = 4 + }, +/area/shuttle/abandoned) +"dm" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"dn" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/pen/fountain/captain, +/turf/open/floor/plasteel/neutral/side{ + dir = 5 + }, +/area/shuttle/abandoned) +"do" = ( +/obj/structure/chair/comfy/black, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/abandoned) +"dp" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 9 + }, +/area/shuttle/abandoned) +"dq" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/photo_album, +/turf/open/floor/plasteel/blue/corner, +/area/shuttle/abandoned) +"dr" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side{ + dir = 6 + }, +/area/shuttle/abandoned) +"ds" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/item/storage/fancy/cigarettes/cigars/cohiba, +/turf/open/floor/plasteel/blue/side{ + dir = 10 + }, +/area/shuttle/abandoned) +"dt" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ + x_offset = -7; + y_offset = -8 + }, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"du" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/device/pda/clear, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"dv" = ( +/obj/machinery/computer/shuttle/white_ship, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"dw" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/structure/table, +/obj/item/device/radio, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) +"dx" = ( +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/abandoned) + +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(2,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(3,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(4,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(5,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(6,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(7,1,1) = {" +aa +aa +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +bq +bq +ae +ae +ae +ae +bq +bq +bq +ae +ae +aa +aa +aa +aa +aa +aa +"} +(8,1,1) = {" +aa +ab +af +aj +as +ae +aI +aO +aV +ba +bi +ae +bu +bA +bJ +bR +bZ +ae +cq +cz +cI +cP +cT +ae +aa +aa +aa +aa +aa +aa +"} +(9,1,1) = {" +aa +ab +af +ak +at +ae +aJ +aO +ap +bb +aH +ae +bv +bB +bK +bS +ca +ae +cr +bT +cJ +bT +cU +ae +ae +ae +bq +bq +aa +aa +"} +(10,1,1) = {" +aa +aa +ae +ae +au +ac +ac +aP +ap +bc +bj +ae +bw +bC +bL +bT +cb +ae +cs +bT +cK +cQ +cV +ae +dc +di +dm +bq +bq +aa +"} +(11,1,1) = {" +aa +aa +ae +al +av +aD +ac +ae +ae +bd +ae +ae +ae +ae +bq +bU +cc +ae +bq +cA +cL +ae +ae +ae +dd +bc +cX +ds +bq +aa +"} +(12,1,1) = {" +aa +aa +ae +am +aw +aE +aK +aQ +aW +be +bk +bq +bx +bD +bM +bV +cd +ci +ct +cB +cM +av +av +db +bc +bc +dn +dt +bq +aa +"} +(13,1,1) = {" +aa +ac +ac +ac +ax +aB +av +aR +av +bf +av +br +av +aB +bN +bW +av +cj +cu +cC +cN +cR +aG +ae +de +dj +bc +du +bq +aa +"} +(14,1,1) = {" +aa +ad +ag +an +ay +av +aL +av +aB +av +bl +bs +by +aB +aB +av +av +ck +aB +ck +av +av +cW +ae +df +dk +do +dv +bq +aa +"} +(15,1,1) = {" +aa +ac +ah +ac +az +aF +av +av +aX +av +av +br +av +av +bO +aB +av +cl +cv +cD +av +av +cX +ae +ax +bc +bc +dw +bq +aa +"} +(16,1,1) = {" +aa +aa +ae +ao +ax +aG +aM +aS +aY +bg +bm +bq +bz +bE +av +bX +av +cm +cw +cE +cO +av +cY +db +bc +bc +dp +dx +bq +aa +"} +(17,1,1) = {" +aa +aa +ae +ap +av +aH +ac +ae +ae +aZ +ae +ae +ae +ae +bP +ae +ce +bq +cx +ae +ae +bP +ae +ae +dg +bc +dq +dr +bq +aa +"} +(18,1,1) = {" +aa +aa +ae +ae +aA +ac +ac +aT +aZ +bc +bn +bn +ae +bF +bc +ae +cf +cn +bc +cF +ae +bc +cZ +ae +dh +dl +dr +bq +bq +aa +"} +(19,1,1) = {" +aa +ab +af +aq +aB +ae +ae +ae +ae +bh +bo +bt +ae +bG +bc +bY +cg +co +cy +cG +bY +bc +bt +ae +ae +ae +bq +bq +aa +aa +"} +(20,1,1) = {" +aa +ab +ai +ar +aC +ae +aN +aU +aZ +bc +bp +bp +ae +bH +bc +ae +ch +cp +cp +cH +ae +bc +da +ae +aa +aa +aa +aa +aa +aa +"} +(21,1,1) = {" +aa +aa +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +bI +bQ +ae +ae +bq +bq +ae +ae +cS +bI +ae +aa +aa +aa +aa +aa +aa +"} +(22,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(23,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(24,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(25,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(26,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(27,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(28,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(29,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(30,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 2bb5d110fc..8c36a5965f 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -274,6 +274,9 @@ GLOBAL_LIST_INIT(titanium_recipes, list ( \ recipes = GLOB.titanium_recipes . = ..() +/obj/item/stack/sheet/mineral/titanium/fifty + amount = 50 + /* * Plastitanium From f1cbf4e0a3c86e9eb1ff98e5dee7c7315c2c710e Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Wed, 8 Nov 2017 19:16:57 -0500 Subject: [PATCH 017/114] fixes power_change being called on un-initialized machines (#32503) --- code/game/area/areas.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 7105dd1e1a..75a6581aa9 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -120,8 +120,6 @@ GLOBAL_LIST_EMPTY(teleportlocs) . = ..() - power_change() // all machines set to current power level, also updates icon - blend_mode = BLEND_MULTIPLY // Putting this in the constructor so that it stops the icons being screwed up in the map editor. if(!IS_DYNAMIC_LIGHTING(src)) @@ -143,6 +141,11 @@ GLOBAL_LIST_EMPTY(teleportlocs) areas_in_z["[z]"] = list() areas_in_z["[z]"] += src + return INITIALIZE_HINT_LATELOAD + +/area/LateInitialize() + power_change() // all machines set to current power level, also updates icon + /area/Destroy() STOP_PROCESSING(SSobj, src) return ..() From e6031b0d5c1c8a4defaf3ba20e4251537e96f714 Mon Sep 17 00:00:00 2001 From: Blute1 Date: Wed, 8 Nov 2017 19:02:45 -0500 Subject: [PATCH 019/114] Process_Spacemove proc improvement --- .../gamemodes/devil/true_devil/_true_devil.dm | 4 +- .../gamemodes/miniantags/revenant/revenant.dm | 3 +- .../mob/living/simple_animal/bot/floorbot.dm | 4 +- .../mob/living/simple_animal/constructs.dm | 4 +- .../mob/living/simple_animal/hostile/bear.dm | 4 +- .../mob/living/simple_animal/hostile/bees.dm | 6 +- .../mob/living/simple_animal/hostile/carp.dm | 4 +- .../living/simple_animal/hostile/faithless.dm | 45 ++++++++++++ .../simple_animal/hostile/megafauna/dragon.dm | 4 +- .../simple_animal/hostile/megafauna/legion.dm | 4 +- .../living/simple_animal/hostile/pirate.dm | 70 +++++++++++++++++++ .../simple_animal/hostile/retaliate/bat.dm | 3 +- .../living/simple_animal/hostile/syndicate.dm | 8 +-- .../modules/mob/living/simple_animal/shade.dm | 4 +- code/modules/mob/mob_defines.dm | 1 + code/modules/mob/mob_movement.dm | 2 +- 16 files changed, 130 insertions(+), 40 deletions(-) diff --git a/code/game/gamemodes/devil/true_devil/_true_devil.dm b/code/game/gamemodes/devil/true_devil/_true_devil.dm index 9b24d096c4..10f0b3393f 100644 --- a/code/game/gamemodes/devil/true_devil/_true_devil.dm +++ b/code/game/gamemodes/devil/true_devil/_true_devil.dm @@ -17,6 +17,7 @@ var/ascended = FALSE sight = (SEE_TURFS | SEE_OBJS) status_flags = CANPUSH + spacewalk = TRUE mob_size = MOB_SIZE_LARGE var/mob/living/oldform var/list/devil_overlays[DEVIL_TOTAL_LAYERS] @@ -135,9 +136,6 @@ "[attack_message]", null, COMBAT_MESSAGE_RANGE) return TRUE -/mob/living/carbon/true_devil/Process_Spacemove(movement_dir = 0) - return 1 - /mob/living/carbon/true_devil/singularity_act() if(ascended) return 0 diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index e72babc5b0..04a5f4d2be 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -21,6 +21,7 @@ maxHealth = INFINITY layer = GHOST_LAYER healable = FALSE + spacewalk = TRUE sight = SEE_SELF see_in_dark = 8 @@ -153,8 +154,6 @@ //Immunities -/mob/living/simple_animal/revenant/Process_Spacemove(movement_dir = 0) - return 1 /mob/living/simple_animal/revenant/ex_act(severity, target) return 1 //Immune to the effects of explosions. diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index 1c3adb1dfe..a0008b83b9 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -8,6 +8,7 @@ anchored = FALSE health = 25 maxHealth = 25 + spacewalk = TRUE radio_key = /obj/item/device/encryptionkey/headset_eng radio_channel = "Engineering" @@ -45,9 +46,6 @@ access_card.access += J.get_access() prev_access = access_card.access -/mob/living/simple_animal/bot/floorbot/Process_Spacemove(movement_dir = 0) - return 1 - /mob/living/simple_animal/bot/floorbot/turn_on() . = ..() update_icon() diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 5f216b7903..0e6ecf1672 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -10,6 +10,7 @@ speak_chance = 1 icon = 'icons/mob/mob.dmi' speed = 0 + spacewalk = TRUE a_intent = INTENT_HARM stop_automated_movement = 1 status_flags = CANPUSH @@ -85,9 +86,6 @@ else if(src != M) return ..() -/mob/living/simple_animal/hostile/construct/Process_Spacemove(movement_dir = 0) - return 1 - /mob/living/simple_animal/hostile/construct/narsie_act() return diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 6b08d041c0..ef662c8f5a 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -20,6 +20,7 @@ response_harm = "hits" maxHealth = 60 health = 60 + spacewalk = TRUE var/armored = FALSE obj_damage = 60 @@ -67,9 +68,6 @@ maxHealth = 120 armored = TRUE -/mob/living/simple_animal/hostile/bear/Process_Spacemove(movement_dir = 0) - return 1 //No drifting in space for space bears! - /mob/living/simple_animal/hostile/bear/update_icons() ..() if(armored) diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index 0213a79e4a..02252254c9 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -28,6 +28,7 @@ response_harm = "squashes" maxHealth = 10 health = 10 + spacewalk = TRUE faction = list("hostile") move_to_delay = 0 obj_damage = 0 @@ -52,11 +53,6 @@ var/static/beehometypecache = typecacheof(/obj/structure/beebox) var/static/hydroponicstypecache = typecacheof(/obj/machinery/hydroponics) - -/mob/living/simple_animal/hostile/poison/bees/Process_Spacemove(movement_dir = 0) - return 1 - - /mob/living/simple_animal/hostile/poison/bees/Initialize() . = ..() generate_bee_visuals() diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index 806a916421..4be394e2b5 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -18,6 +18,7 @@ speed = 0 maxHealth = 25 health = 25 + spacewalk = TRUE harm_intent_damage = 8 obj_damage = 50 @@ -36,9 +37,6 @@ pressure_resistance = 200 gold_core_spawnable = 1 -/mob/living/simple_animal/hostile/carp/Process_Spacemove(movement_dir = 0) - return 1 //No drifting in space for space carp! //original comments do not steal - /mob/living/simple_animal/hostile/carp/AttackingTarget() . = ..() if(. && ishuman(target)) diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index 1807e39a71..2406335915 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /mob/living/simple_animal/hostile/faithless name = "The Faithless" desc = "The Wish Granter's faith in humanity, incarnate." @@ -42,3 +43,47 @@ C.Knockdown(60) C.visible_message("\The [src] knocks down \the [C]!", \ "\The [src] knocks you down!") +======= +/mob/living/simple_animal/hostile/faithless + name = "The Faithless" + desc = "The Wish Granter's faith in humanity, incarnate." + icon_state = "faithless" + icon_living = "faithless" + icon_dead = "faithless_dead" + gender = MALE + speak_chance = 0 + turns_per_move = 5 + response_help = "passes through" + response_disarm = "shoves" + response_harm = "hits" + emote_taunt = list("wails") + taunt_chance = 25 + speed = 0 + maxHealth = 80 + health = 80 + spacewalk = TRUE + stat_attack = UNCONSCIOUS + robust_searching = 1 + + harm_intent_damage = 10 + obj_damage = 50 + melee_damage_lower = 15 + melee_damage_upper = 15 + attacktext = "grips" + attack_sound = 'sound/hallucinations/growl1.ogg' + speak_emote = list("growls") + + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + + faction = list("faithless") + gold_core_spawnable = 1 + +/mob/living/simple_animal/hostile/faithless/AttackingTarget() + . = ..() + if(. && prob(12) && iscarbon(target)) + var/mob/living/carbon/C = target + C.Knockdown(60) + C.visible_message("\The [src] knocks down \the [C]!", \ + "\The [src] knocks you down!") +>>>>>>> 3a36c13... Process_Spacemove proc improvement (#32515) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index 791021d42b..7f12e684e8 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -36,6 +36,7 @@ Difficulty: Medium desc = "Guardians of the necropolis." health = 2500 maxHealth = 2500 + spacewalk = TRUE attacktext = "chomps" attack_sound = 'sound/magic/demon_attack1.ogg' icon_state = "dragon" @@ -97,9 +98,6 @@ Difficulty: Medium if(!swooping) ..() -/mob/living/simple_animal/hostile/megafauna/dragon/Process_Spacemove(movement_dir = 0) - return 1 - /mob/living/simple_animal/hostile/megafauna/dragon/OpenFire() if(swooping) return diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm index 5b987edc0e..ee0c16a768 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm @@ -21,6 +21,7 @@ Difficulty: Medium name = "Legion" health = 800 maxHealth = 800 + spacewalk = TRUE icon_state = "legion" icon_living = "legion" desc = "One of many." @@ -139,9 +140,6 @@ Difficulty: Medium loot = list(/obj/structure/closet/crate/necropolis/tendril) ..() -/mob/living/simple_animal/hostile/megafauna/legion/Process_Spacemove(movement_dir = 0) - return 1 - /obj/item/device/gps/internal/legion icon_state = null gpstag = "Echoing Signal" diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm index f058464981..6237b22748 100644 --- a/code/modules/mob/living/simple_animal/hostile/pirate.dm +++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /mob/living/simple_animal/hostile/pirate name = "Pirate" desc = "Does what he wants cause a pirate is free." @@ -66,3 +67,72 @@ /mob/living/simple_animal/hostile/pirate/space/Process_Spacemove(movement_dir = 0) return 1 +======= +/mob/living/simple_animal/hostile/pirate + name = "Pirate" + desc = "Does what he wants cause a pirate is free." + icon = 'icons/mob/simple_human.dmi' + icon_state = "piratemelee" + icon_living = "piratemelee" + icon_dead = "piratemelee_dead" + speak_chance = 0 + turns_per_move = 5 + response_help = "pushes" + response_disarm = "shoves" + response_harm = "hits" + speed = 0 + maxHealth = 100 + health = 100 + spacewalk = TRUE + + harm_intent_damage = 5 + obj_damage = 60 + melee_damage_lower = 30 + melee_damage_upper = 30 + attacktext = "slashes" + attack_sound = 'sound/weapons/bladeslice.ogg' + + atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) + unsuitable_atmos_damage = 15 + speak_emote = list("yarrs") + loot = list(/obj/effect/mob_spawn/human/corpse/pirate, + /obj/item/melee/transforming/energy/sword/pirate) + del_on_death = 1 + faction = list("pirate") + +/mob/living/simple_animal/hostile/pirate/ranged + name = "Pirate Gunner" + icon_state = "pirateranged" + icon_living = "pirateranged" + icon_dead = "piratemelee_dead" + projectilesound = 'sound/weapons/laser.ogg' + ranged = 1 + rapid = 1 + retreat_distance = 5 + minimum_distance = 5 + projectiletype = /obj/item/projectile/beam/laser + loot = list(/obj/effect/mob_spawn/human/corpse/pirate/ranged, + /obj/item/gun/energy/laser) + +/mob/living/simple_animal/hostile/pirate/space + name = "Space Pirate" + icon_state = "piratespace" + icon_living = "piratespace" + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + speed = 1 + +/mob/living/simple_animal/hostile/pirate/space/ranged + name = "Space Pirate Gunner" + icon_state = "piratespaceranged" + icon_living = "piratespaceranged" + projectilesound = 'sound/weapons/laser.ogg' + ranged = 1 + rapid = 1 + retreat_distance = 5 + minimum_distance = 5 + projectiletype = /obj/item/projectile/beam/laser + loot = list(/obj/effect/mob_spawn/human/corpse/pirate/ranged, + /obj/item/gun/energy/laser) + +>>>>>>> 3a36c13... Process_Spacemove proc improvement (#32515) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm index d75e4acbc5..2fb4eb61bd 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm @@ -12,6 +12,7 @@ speak_chance = 0 maxHealth = 15 health = 15 + spacewalk = TRUE see_in_dark = 10 harm_intent_damage = 6 melee_damage_lower = 6 @@ -36,5 +37,3 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 -/mob/living/simple_animal/hostile/retaliate/bat/Process_Spacemove(movement_dir = 0) - return 1 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 11331e7ab7..a17ec0ff66 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -55,6 +55,7 @@ status_flags = 0 maxHealth = 170 health = 170 + spacewalk = TRUE /mob/living/simple_animal/hostile/syndicate/melee/bullet_act(obj/item/projectile/Proj) if(!Proj) @@ -75,9 +76,6 @@ loot = list(/obj/effect/gibspawner/human) speed = 1 -/mob/living/simple_animal/hostile/syndicate/melee/space/Process_Spacemove(movement_dir = 0) - return 1 - /mob/living/simple_animal/hostile/syndicate/melee/space/stormtrooper icon_state = "syndicatemeleestormtrooper" icon_living = "syndicatemeleestormtrooper" @@ -106,11 +104,9 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 speed = 1 + spacewalk = TRUE loot = list(/obj/effect/gibspawner/human) -/mob/living/simple_animal/hostile/syndicate/ranged/space/Process_Spacemove(movement_dir = 0) - return 1 - /mob/living/simple_animal/hostile/syndicate/ranged/space/stormtrooper icon_state = "syndicaterangedstormtrooper" icon_living = "syndicaterangedstormtrooper" diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index d7c4f0cb03..ab2126e7b9 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -8,6 +8,7 @@ icon_living = "shade" maxHealth = 50 health = 50 + spacewalk = TRUE healable = 0 speak_emote = list("hisses") emote_hear = list("wails.","screeches.") @@ -40,9 +41,6 @@ return 0 return ..() -/mob/living/simple_animal/shade/Process_Spacemove(movement_dir = 0) - return TRUE //this doesn't make much sense; you'd thing TRUE would mean it'd process spacemove but it means it doesn't - /mob/living/simple_animal/shade/attack_animal(mob/living/simple_animal/M) if(isconstruct(M)) var/mob/living/simple_animal/hostile/construct/C = M diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 5260ace246..497f0536a0 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -46,6 +46,7 @@ var/slurring = 0 //Carbon var/cultslurring = 0 //Carbon var/real_name = null + var/spacewalk = FALSE var/druggy = 0 //Carbon var/confused = 0 //Carbon var/resting = 0 //Carbon diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index e99a4e0ae8..ad38ba98ac 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -297,7 +297,7 @@ ///For moving in space ///return TRUE for movement 0 for none /mob/Process_Spacemove(movement_dir = 0) - if(..()) + if(spacewalk || ..()) return TRUE var/atom/movable/backup = get_spacemove_backup() if(backup) From 1c89873504ce8f80d7d1789d874f4afe4313048f Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Wed, 8 Nov 2017 18:09:21 -0500 Subject: [PATCH 020/114] Rename LICENSE-AGPLv3.txt to LICENSE (#32512) --- LICENSE-AGPLv3.txt => LICENSE | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename LICENSE-AGPLv3.txt => LICENSE (100%) diff --git a/LICENSE-AGPLv3.txt b/LICENSE similarity index 100% rename from LICENSE-AGPLv3.txt rename to LICENSE From 1e2ecf3ef7141268cd7f62549e6a046d2363bedd Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Wed, 8 Nov 2017 22:43:29 -0800 Subject: [PATCH 022/114] buffs ripley mining equipment (#32509) * buffs ripley mining equipment done in separate PR in case people want just this change instead of the others 1. increased range on the drill 2. halved the cooldown on the drill 3. doubled the speed of the ore pulse * Why argue about this for days when I can just update it myself --- code/game/mecha/equipment/tools/mining_tools.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm index c99814148d..9203e32177 100644 --- a/code/game/mecha/equipment/tools/mining_tools.dm +++ b/code/game/mecha/equipment/tools/mining_tools.dm @@ -6,7 +6,7 @@ name = "exosuit drill" desc = "Equipment for engineering and combat exosuits. This is the drill that'll pierce the heavens!" icon_state = "mecha_drill" - equip_cooldown = 30 + equip_cooldown = 15 energy_drain = 10 force = 15 @@ -99,7 +99,7 @@ desc = "Equipment for engineering and combat exosuits. This is an upgraded version of the drill that'll pierce the heavens!" icon_state = "mecha_diamond_drill" origin_tech = "materials=4;engineering=4" - equip_cooldown = 20 + equip_cooldown = 10 force = 15 @@ -108,16 +108,16 @@ desc = "Equipment for engineering and combat exosuits. It will automatically check surrounding rock for useful minerals." icon_state = "mecha_analyzer" selectable = 0 - equip_cooldown = 30 + equip_cooldown = 15 var/scanning_time = 0 /obj/item/mecha_parts/mecha_equipment/mining_scanner/New() ..() - START_PROCESSING(SSobj, src) + START_PROCESSING(SSfastprocess, src) /obj/item/mecha_parts/mecha_equipment/mining_scanner/process() if(!loc) - STOP_PROCESSING(SSobj, src) + STOP_PROCESSING(SSfastprocess, src) qdel(src) if(istype(loc, /obj/mecha/working) && scanning_time <= world.time) var/obj/mecha/working/mecha = loc From 70d75c3988d2b3758798a835907b0ef2eae3b3df Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Thu, 9 Nov 2017 01:45:30 -0500 Subject: [PATCH 024/114] fixes radioactive half life (#32511) --- code/datums/components/radioactive.dm | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/code/datums/components/radioactive.dm b/code/datums/components/radioactive.dm index b0bf28f163..c149fd8492 100644 --- a/code/datums/components/radioactive.dm +++ b/code/datums/components/radioactive.dm @@ -37,11 +37,15 @@ return ..() /datum/component/radioactive/process() - if(hl3_release_date && prob(50)) - radiation_pulse(parent, strength, RAD_DISTANCE_COEFFICIENT*2, FALSE, can_contaminate) - strength -= strength / hl3_release_date - if(strength <= RAD_BACKGROUND_RADIATION) - qdel(src) + if(!prob(50)) + return + radiation_pulse(parent, strength, RAD_DISTANCE_COEFFICIENT*2, FALSE, can_contaminate) + + if(!hl3_release_date) + return + strength -= strength / hl3_release_date + if(strength <= RAD_BACKGROUND_RADIATION) + return PROCESS_KILL /datum/component/radioactive/InheritComponent(datum/component/C, i_am_original) if(!i_am_original) From 146dfe33ea06726a1b4e2078278919a0ecdfbf54 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Thu, 9 Nov 2017 01:44:49 -0500 Subject: [PATCH 026/114] Adds a config option to change world.sleep_offline --- code/controllers/configuration/entries/config.dm | 10 ++++++++++ code/controllers/master.dm | 4 +++- config/config.txt | 6 ++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/code/controllers/configuration/entries/config.dm b/code/controllers/configuration/entries/config.dm index f1ee6a557c..bef6809e52 100644 --- a/code/controllers/configuration/entries/config.dm +++ b/code/controllers/configuration/entries/config.dm @@ -372,3 +372,13 @@ CONFIG_TWEAK(number/mc_tick_rate/ValidateAndSet(str_val)) . = ..() if (.) Master.UpdateTickRate() +<<<<<<< HEAD +======= + +CONFIG_DEF(flag/resume_after_initializations) + +CONFIG_TWEAK(flag/ValidateAndSet(str_val)) + . = ..() + if(. && Master.current_runlevel) + world.sleep_offline = !value +>>>>>>> 73fbac3... Adds a config option to change world.sleep_offline (#32505) diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 852437705b..568257e10f 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -189,10 +189,12 @@ GLOBAL_REAL(Master, /datum/controller/master) = new // Sort subsystems by display setting for easy access. sortTim(subsystems, /proc/cmp_subsystem_display) // Set world options. - world.sleep_offline = 1 + world.sleep_offline = TRUE world.fps = CONFIG_GET(number/fps) var/initialized_tod = REALTIMEOFDAY sleep(1) + if(CONFIG_GET(flag/resume_after_initializations)) + world.sleep_offline = FALSE initializations_finished_with_no_players_logged_in = initialized_tod < REALTIMEOFDAY - 10 // Loop. Master.StartProcessing(0) diff --git a/config/config.txt b/config/config.txt index 168f5202ac..0f3dfd5d84 100644 --- a/config/config.txt +++ b/config/config.txt @@ -380,4 +380,10 @@ HIGH_POP_MC_MODE_AMOUNT 65 ##Disengage high pop mode if player count drops below this DISABLE_HIGH_POP_MC_MODE_AMOUNT 60 +<<<<<<< HEAD >>>>>>> bc4d4e7... Merge pull request #31374 from MrStonedOne/highpopmode +======= + +## Uncomment to prevent the world from sleeping while no players are connected after initializations +#RESUME_AFTER_INITIALIZATIONS +>>>>>>> 73fbac3... Adds a config option to change world.sleep_offline (#32505) From 3b2948f5e8cd66da091e963de9bdbc0d34fd4f7f Mon Sep 17 00:00:00 2001 From: LetterJay Date: Thu, 9 Nov 2017 01:20:52 -0600 Subject: [PATCH 027/114] yay --- html/changelogs/.all_changelog.yml | 10518 +--------------- html/changelogs/AutoChangeLog-pr-2583.yml | 8 - html/changelogs/AutoChangeLog-pr-2603.yml | 5 - html/changelogs/AutoChangeLog-pr-2907.yml | 8 - html/changelogs/AutoChangeLog-pr-2909.yml | 7 - html/changelogs/AutoChangeLog-pr-2918.yml | 4 - html/changelogs/AutoChangeLog-pr-2922.yml | 6 - html/changelogs/AutoChangeLog-pr-2923.yml | 4 - html/changelogs/AutoChangeLog-pr-2929.yml | 4 - html/changelogs/AutoChangeLog-pr-2938.yml | 4 - html/changelogs/AutoChangeLog-pr-2939.yml | 4 - html/changelogs/AutoChangeLog-pr-2940.yml | 5 - html/changelogs/AutoChangeLog-pr-2942.yml | 4 - html/changelogs/AutoChangeLog-pr-2947.yml | 4 - html/changelogs/AutoChangeLog-pr-2950.yml | 4 - html/changelogs/AutoChangeLog-pr-2953.yml | 4 - html/changelogs/AutoChangeLog-pr-2956.yml | 5 - html/changelogs/AutoChangeLog-pr-2958.yml | 15 - html/changelogs/AutoChangeLog-pr-2960.yml | 4 - html/changelogs/AutoChangeLog-pr-2963.yml | 4 - html/changelogs/AutoChangeLog-pr-2965.yml | 4 - html/changelogs/AutoChangeLog-pr-2966.yml | 4 - html/changelogs/AutoChangeLog-pr-2968.yml | 5 - html/changelogs/AutoChangeLog-pr-2972.yml | 5 - html/changelogs/AutoChangeLog-pr-2979.yml | 6 - html/changelogs/AutoChangeLog-pr-2985.yml | 4 - html/changelogs/AutoChangeLog-pr-2996.yml | 4 - html/changelogs/AutoChangeLog-pr-3024.yml | 4 - html/changelogs/AutoChangeLog-pr-3028.yml | 4 - html/changelogs/AutoChangeLog-pr-3031.yml | 4 - html/changelogs/AutoChangeLog-pr-3032.yml | 4 - html/changelogs/AutoChangeLog-pr-3033.yml | 4 - html/changelogs/AutoChangeLog-pr-3041.yml | 5 - html/changelogs/AutoChangeLog-pr-3042.yml | 4 - html/changelogs/AutoChangeLog-pr-3043.yml | 4 - html/changelogs/AutoChangeLog-pr-3053.yml | 4 - html/changelogs/AutoChangeLog-pr-3056.yml | 4 - html/changelogs/AutoChangeLog-pr-3059.yml | 5 - html/changelogs/AutoChangeLog-pr-3063.yml | 5 - html/changelogs/AutoChangeLog-pr-3071.yml | 4 - html/changelogs/AutoChangeLog-pr-3085.yml | 4 - html/changelogs/AutoChangeLog-pr-3086.yml | 4 - html/changelogs/AutoChangeLog-pr-3088.yml | 5 - html/changelogs/AutoChangeLog-pr-3089.yml | 4 - html/changelogs/AutoChangeLog-pr-3092.yml | 4 - html/changelogs/AutoChangeLog-pr-3093.yml | 6 - html/changelogs/AutoChangeLog-pr-3096.yml | 4 - html/changelogs/AutoChangeLog-pr-3102.yml | 4 - html/changelogs/AutoChangeLog-pr-3104.yml | 4 - html/changelogs/AutoChangeLog-pr-3105.yml | 4 - html/changelogs/AutoChangeLog-pr-3108.yml | 4 - html/changelogs/AutoChangeLog-pr-3110.yml | 4 - html/changelogs/AutoChangeLog-pr-3114.yml | 4 - html/changelogs/AutoChangeLog-pr-3115.yml | 4 - html/changelogs/AutoChangeLog-pr-3127.yml | 4 - html/changelogs/AutoChangeLog-pr-3133.yml | 4 - html/changelogs/AutoChangeLog-pr-3134.yml | 4 - html/changelogs/AutoChangeLog-pr-3135.yml | 4 - html/changelogs/AutoChangeLog-pr-3138.yml | 4 - html/changelogs/AutoChangeLog-pr-3139.yml | 4 - html/changelogs/AutoChangeLog-pr-3142.yml | 4 - html/changelogs/AutoChangeLog-pr-3143.yml | 7 - html/changelogs/AutoChangeLog-pr-3144.yml | 4 - html/changelogs/AutoChangeLog-pr-3147.yml | 4 - html/changelogs/AutoChangeLog-pr-3148.yml | 4 - html/changelogs/AutoChangeLog-pr-3153.yml | 4 - html/changelogs/AutoChangeLog-pr-3157.yml | 4 - html/changelogs/AutoChangeLog-pr-3159.yml | 7 - html/changelogs/AutoChangeLog-pr-3160.yml | 5 - html/changelogs/AutoChangeLog-pr-3163.yml | 4 - html/changelogs/AutoChangeLog-pr-3168.yml | 4 - html/changelogs/AutoChangeLog-pr-3170.yml | 6 - html/changelogs/AutoChangeLog-pr-3172.yml | 4 - html/changelogs/AutoChangeLog-pr-3174.yml | 5 - html/changelogs/AutoChangeLog-pr-3178.yml | 4 - html/changelogs/AutoChangeLog-pr-3179.yml | 10 - html/changelogs/AutoChangeLog-pr-3185.yml | 4 - html/changelogs/AutoChangeLog-pr-3195.yml | 4 - html/changelogs/AutoChangeLog-pr-3203.yml | 4 - html/changelogs/AutoChangeLog-pr-3205.yml | 6 - html/changelogs/AutoChangeLog-pr-3208.yml | 5 - html/changelogs/AutoChangeLog-pr-32096.yml | 4 - html/changelogs/AutoChangeLog-pr-3210.yml | 4 - html/changelogs/AutoChangeLog-pr-3211.yml | 4 - html/changelogs/AutoChangeLog-pr-3213.yml | 9 - html/changelogs/AutoChangeLog-pr-3214.yml | 6 - html/changelogs/AutoChangeLog-pr-3215.yml | 4 - html/changelogs/AutoChangeLog-pr-3220.yml | 4 - html/changelogs/AutoChangeLog-pr-3222.yml | 4 - html/changelogs/AutoChangeLog-pr-3223.yml | 4 - html/changelogs/AutoChangeLog-pr-3227.yml | 4 - html/changelogs/AutoChangeLog-pr-3235.yml | 4 - html/changelogs/AutoChangeLog-pr-3236.yml | 4 - html/changelogs/AutoChangeLog-pr-3240.yml | 13 - html/changelogs/AutoChangeLog-pr-3244.yml | 4 - html/changelogs/AutoChangeLog-pr-3245.yml | 4 - html/changelogs/AutoChangeLog-pr-3248.yml | 9 - html/changelogs/AutoChangeLog-pr-3249.yml | 4 - html/changelogs/AutoChangeLog-pr-3251.yml | 4 - html/changelogs/AutoChangeLog-pr-3256.yml | 4 - html/changelogs/AutoChangeLog-pr-3262.yml | 4 - html/changelogs/AutoChangeLog-pr-3263.yml | 4 - html/changelogs/AutoChangeLog-pr-3264.yml | 4 - html/changelogs/AutoChangeLog-pr-3265.yml | 4 - html/changelogs/AutoChangeLog-pr-3266.yml | 4 - html/changelogs/AutoChangeLog-pr-3268.yml | 4 - html/changelogs/AutoChangeLog-pr-3269.yml | 4 - html/changelogs/AutoChangeLog-pr-3270.yml | 4 - html/changelogs/AutoChangeLog-pr-3277.yml | 4 - html/changelogs/AutoChangeLog-pr-3283.yml | 4 - html/changelogs/AutoChangeLog-pr-3284.yml | 4 - html/changelogs/AutoChangeLog-pr-3287.yml | 4 - html/changelogs/AutoChangeLog-pr-3296.yml | 4 - html/changelogs/AutoChangeLog-pr-3297.yml | 4 - html/changelogs/AutoChangeLog-pr-3300.yml | 4 - html/changelogs/AutoChangeLog-pr-3304.yml | 4 - html/changelogs/AutoChangeLog-pr-3307.yml | 6 - html/changelogs/AutoChangeLog-pr-3310.yml | 4 - html/changelogs/AutoChangeLog-pr-3314.yml | 4 - html/changelogs/AutoChangeLog-pr-3321.yml | 4 - html/changelogs/AutoChangeLog-pr-3330.yml | 4 - html/changelogs/AutoChangeLog-pr-3340.yml | 4 - html/changelogs/AutoChangeLog-pr-3341.yml | 5 - html/changelogs/AutoChangeLog-pr-3348.yml | 4 - html/changelogs/AutoChangeLog-pr-3353.yml | 4 - html/changelogs/AutoChangeLog-pr-3356.yml | 5 - html/changelogs/AutoChangeLog-pr-3364.yml | 15 - html/changelogs/AutoChangeLog-pr-3365.yml | 5 - html/changelogs/AutoChangeLog-pr-3366.yml | 4 - html/changelogs/AutoChangeLog-pr-3371.yml | 4 - html/changelogs/AutoChangeLog-pr-3372.yml | 4 - html/changelogs/AutoChangeLog-pr-3376.yml | 7 - html/changelogs/AutoChangeLog-pr-3377.yml | 5 - html/changelogs/AutoChangeLog-pr-3379.yml | 11 - html/changelogs/AutoChangeLog-pr-3384.yml | 4 - html/changelogs/AutoChangeLog-pr-3389.yml | 4 - html/changelogs/AutoChangeLog-pr-3390.yml | 4 - html/changelogs/AutoChangeLog-pr-3391.yml | 4 - html/changelogs/AutoChangeLog-pr-3392.yml | 4 - html/changelogs/AutoChangeLog-pr-3393.yml | 4 - html/changelogs/AutoChangeLog-pr-3395.yml | 9 - html/changelogs/AutoChangeLog-pr-3396.yml | 4 - html/changelogs/AutoChangeLog-pr-3399.yml | 4 - html/changelogs/AutoChangeLog-pr-3401.yml | 4 - html/changelogs/AutoChangeLog-pr-3403.yml | 4 - html/changelogs/AutoChangeLog-pr-3404.yml | 8 - html/changelogs/AutoChangeLog-pr-3406.yml | 13 - html/changelogs/AutoChangeLog-pr-3409.yml | 4 - html/changelogs/AutoChangeLog-pr-3411.yml | 4 - html/changelogs/AutoChangeLog-pr-3412.yml | 4 - html/changelogs/AutoChangeLog-pr-3413.yml | 5 - html/changelogs/AutoChangeLog-pr-3414.yml | 4 - html/changelogs/AutoChangeLog-pr-3415.yml | 4 - html/changelogs/AutoChangeLog-pr-3418.yml | 7 - html/changelogs/AutoChangeLog-pr-3419.yml | 7 - html/changelogs/AutoChangeLog-pr-3421.yml | 4 - html/changelogs/AutoChangeLog-pr-3429.yml | 4 - html/changelogs/AutoChangeLog-pr-3430.yml | 4 - html/changelogs/AutoChangeLog-pr-3431.yml | 4 - html/changelogs/AutoChangeLog-pr-3432.yml | 12 - html/changelogs/AutoChangeLog-pr-3433.yml | 4 - html/changelogs/AutoChangeLog-pr-3442.yml | 4 - html/changelogs/AutoChangeLog-pr-3443.yml | 4 - html/changelogs/AutoChangeLog-pr-3444.yml | 4 - html/changelogs/AutoChangeLog-pr-3445.yml | 4 - html/changelogs/AutoChangeLog-pr-3446.yml | 4 - html/changelogs/AutoChangeLog-pr-3447.yml | 4 - html/changelogs/AutoChangeLog-pr-3451.yml | 4 - html/changelogs/AutoChangeLog-pr-3453.yml | 4 - html/changelogs/AutoChangeLog-pr-3454.yml | 4 - html/changelogs/AutoChangeLog-pr-3457.yml | 4 - html/changelogs/AutoChangeLog-pr-3458.yml | 4 - html/changelogs/AutoChangeLog-pr-3460.yml | 4 - html/changelogs/AutoChangeLog-pr-3462.yml | 10 - html/changelogs/AutoChangeLog-pr-3463.yml | 5 - html/changelogs/AutoChangeLog-pr-3466.yml | 4 - html/changelogs/AutoChangeLog-pr-3467.yml | 4 - html/changelogs/AutoChangeLog-pr-3468.yml | 4 - html/changelogs/AutoChangeLog-pr-3469.yml | 4 - html/changelogs/AutoChangeLog-pr-3470.yml | 4 - html/changelogs/AutoChangeLog-pr-3471.yml | 4 - html/changelogs/AutoChangeLog-pr-3474.yml | 4 - html/changelogs/AutoChangeLog-pr-3476.yml | 4 - html/changelogs/AutoChangeLog-pr-3478.yml | 5 - html/changelogs/AutoChangeLog-pr-3482.yml | 4 - html/changelogs/AutoChangeLog-pr-3484.yml | 4 - html/changelogs/AutoChangeLog-pr-3486.yml | 10 - html/changelogs/AutoChangeLog-pr-3487.yml | 4 - html/changelogs/AutoChangeLog-pr-3488.yml | 4 - html/changelogs/AutoChangeLog-pr-3492.yml | 9 - html/changelogs/AutoChangeLog-pr-3498.yml | 4 - html/changelogs/AutoChangeLog-pr-3499.yml | 5 - html/changelogs/AutoChangeLog-pr-3503.yml | 5 - html/changelogs/AutoChangeLog-pr-3504.yml | 4 - html/changelogs/AutoChangeLog-pr-3506.yml | 4 - html/changelogs/AutoChangeLog-pr-3513.yml | 4 - html/changelogs/AutoChangeLog-pr-3518.yml | 4 - html/changelogs/AutoChangeLog-pr-3522.yml | 5 - html/changelogs/AutoChangeLog-pr-3524.yml | 4 - html/changelogs/AutoChangeLog-pr-3528.yml | 4 - html/changelogs/AutoChangeLog-pr-3529.yml | 7 - html/changelogs/AutoChangeLog-pr-3530.yml | 4 - html/changelogs/AutoChangeLog-pr-3546.yml | 4 - html/changelogs/AutoChangeLog-pr-3547.yml | 4 - html/changelogs/AutoChangeLog-pr-3549.yml | 4 - html/changelogs/AutoChangeLog-pr-3557.yml | 4 - html/changelogs/AutoChangeLog-pr-3559.yml | 4 - html/changelogs/AutoChangeLog-pr-3567.yml | 4 - html/changelogs/AutoChangeLog-pr-3570.yml | 4 - html/changelogs/AutoChangeLog-pr-3575.yml | 13 - html/changelogs/AutoChangeLog-pr-3581.yml | 4 - html/changelogs/AutoChangeLog-pr-3582.yml | 4 - html/changelogs/AutoChangeLog-pr-3594.yml | 4 - html/changelogs/AutoChangeLog-pr-3596.yml | 4 - html/changelogs/AutoChangeLog-pr-3599.yml | 4 - html/changelogs/AutoChangeLog-pr-3600.yml | 4 - html/changelogs/AutoChangeLog-pr-3603.yml | 4 - html/changelogs/AutoChangeLog-pr-3604.yml | 4 - html/changelogs/AutoChangeLog-pr-3606.yml | 6 - html/changelogs/AutoChangeLog-pr-3610.yml | 4 - html/changelogs/AutoChangeLog-pr-3611.yml | 5 - html/changelogs/AutoChangeLog-pr-3614.yml | 4 - html/changelogs/AutoChangeLog-pr-3615.yml | 4 - html/changelogs/AutoChangeLog-pr-3617.yml | 4 - html/changelogs/AutoChangeLog-pr-3618.yml | 4 - html/changelogs/AutoChangeLog-pr-3623.yml | 4 - html/changelogs/AutoChangeLog-pr-3624.yml | 6 - html/changelogs/AutoChangeLog-pr-3630.yml | 4 - html/changelogs/AutoChangeLog-pr-3634.yml | 4 - html/changelogs/AutoChangeLog-pr-3635.yml | 4 - html/changelogs/AutoChangeLog-pr-3637.yml | 4 - html/changelogs/AutoChangeLog-pr-3638.yml | 4 - html/changelogs/AutoChangeLog-pr-3641.yml | 19 - html/changelogs/AutoChangeLog-pr-3649.yml | 4 - html/changelogs/AutoChangeLog-pr-3663.yml | 4 - html/changelogs/AutoChangeLog-pr-3744.yml | 4 - html/changelogs/AutoChangeLog-pr-3745.yml | 4 - html/changelogs/AutoChangeLog-pr-3754.yml | 4 - html/changelogs/AutoChangeLog-pr-3759.yml | 4 - html/changelogs/AutoChangeLog-pr-3763.yml | 4 - html/changelogs/AutoChangeLog-pr-3765.yml | 4 - html/changelogs/AutoChangeLog-pr-3769.yml | 4 - html/changelogs/AutoChangeLog-pr-3770.yml | 5 - html/changelogs/AutoChangeLog-pr-3771.yml | 4 - html/changelogs/AutoChangeLog-pr-3774.yml | 4 - html/changelogs/AutoChangeLog-pr-3775.yml | 5 - html/changelogs/AutoChangeLog-pr-3778.yml | 4 - html/changelogs/AutoChangeLog-pr-3779.yml | 4 - html/changelogs/AutoChangeLog-pr-3780.yml | 4 - html/changelogs/AutoChangeLog-pr-3784.yml | 4 - html/changelogs/AutoChangeLog-pr-3788.yml | 4 - html/changelogs/AutoChangeLog-pr-3789.yml | 4 - html/changelogs/AutoChangeLog-pr-3795.yml | 7 - html/changelogs/AutoChangeLog-pr-3799.yml | 18 - html/changelogs/AutoChangeLog-pr-3800.yml | 6 - html/changelogs/AutoChangeLog-pr-3802.yml | 4 - html/changelogs/AutoChangeLog-pr-3803.yml | 4 - html/changelogs/AutoChangeLog-pr-3809.yml | 4 - html/changelogs/AutoChangeLog-pr-3821.yml | 4 - html/changelogs/AutoChangeLog-pr-3824.yml | 4 - html/changelogs/AutoChangeLog-pr-3827.yml | 4 - html/changelogs/AutoChangeLog-pr-3834.yml | 4 - html/changelogs/AutoChangeLog-pr-3839.yml | 4 - html/changelogs/AutoChangeLog-pr-3840.yml | 4 - html/changelogs/AutoChangeLog-pr-3842.yml | 4 - html/changelogs/AutoChangeLog-pr-3844.yml | 4 - html/changelogs/AutoChangeLog-pr-3847.yml | 6 - html/changelogs/AutoChangeLog-pr-3848.yml | 4 - .../Bawhoppen Forgot to add a Changelog.yml | 35 - html/changelogs/example.yml | 36 - 270 files changed, 1 insertion(+), 11870 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-2583.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2603.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2907.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2909.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2918.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2922.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2923.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2929.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2938.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2939.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2940.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2942.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2947.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2950.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2953.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2956.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2958.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2960.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2963.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2965.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2966.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2968.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2972.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2979.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2985.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2996.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3024.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3028.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3031.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3032.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3033.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3041.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3042.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3043.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3053.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3056.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3059.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3063.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3071.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3085.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3086.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3088.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3089.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3092.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3093.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3096.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3102.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3104.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3105.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3108.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3110.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3114.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3115.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3127.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3133.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3134.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3135.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3138.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3139.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3142.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3143.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3144.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3147.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3148.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3153.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3157.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3159.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3160.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3163.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3168.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3170.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3172.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3174.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3178.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3179.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3185.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3195.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3203.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3205.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3208.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-32096.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3210.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3211.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3213.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3214.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3215.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3220.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3222.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3223.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3227.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3235.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3236.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3240.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3244.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3245.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3248.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3249.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3251.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3256.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3262.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3263.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3264.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3265.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3266.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3268.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3269.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3270.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3277.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3283.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3284.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3287.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3296.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3297.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3300.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3304.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3307.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3310.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3314.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3321.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3330.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3340.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3341.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3348.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3353.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3356.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3364.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3365.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3366.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3371.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3372.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3376.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3377.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3379.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3384.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3389.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3390.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3391.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3392.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3393.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3395.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3396.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3399.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3401.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3403.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3404.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3406.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3409.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3411.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3412.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3413.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3414.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3415.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3418.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3419.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3421.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3429.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3430.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3431.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3432.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3433.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3442.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3443.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3444.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3445.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3446.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3447.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3451.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3453.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3454.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3457.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3458.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3460.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3462.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3463.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3466.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3467.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3468.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3469.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3470.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3471.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3474.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3476.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3478.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3482.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3484.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3486.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3487.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3488.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3492.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3498.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3499.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3503.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3504.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3506.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3513.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3518.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3522.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3524.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3528.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3529.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3530.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3546.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3547.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3549.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3557.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3559.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3567.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3570.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3575.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3581.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3582.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3594.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3596.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3599.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3600.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3603.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3604.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3606.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3610.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3611.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3614.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3615.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3617.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3618.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3623.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3624.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3630.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3634.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3635.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3637.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3638.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3641.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3649.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3663.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3744.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3745.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3754.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3759.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3763.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3765.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3769.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3770.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3771.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3774.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3775.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3778.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3779.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3780.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3784.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3788.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3789.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3795.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3799.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3800.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3802.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3803.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3809.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3821.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3824.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3827.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3834.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3839.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3840.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3842.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3844.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3847.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3848.yml delete mode 100644 html/changelogs/Bawhoppen Forgot to add a Changelog.yml delete mode 100644 html/changelogs/example.yml diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index a5655f2e03..6a6e5f672c 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -1,10518 +1,3 @@ -<<<<<<< HEAD -DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. ---- -2015-04-04: - ACCount: - - rscadd: Emergency welding tool added to emergency toolbox. - - rscadd: Changed industrial welding tool sprite. - - tweak: Replaced welder in syndicate toolbox with industrial one. - - tweak: All tools in syndicate toolbox are red. Corporate style! - - tweak: Red crowbar is a bit more robust. - - bugfix: 'Fixed two bugs: welder icon disappearing and drone toolbox spawning with - invisible cable coil.' - AnturK: - - rscadd: 'Picket signs: table crafted with a rod and two cardboard sheets, write - on them with pen or crayon.' - Cheridan: - - wip: The bar's layout has been changed with a poker table and re-arranged seating. - Dannno: - - rscadd: Added gun lockers for shotguns and energy guns. Click on the lockers with - an item to close them if they're full. - Gun Hog: - - rscadd: Nanotrasen research has finalized improvements for the experimental Reactive - Teleport Armor. The armor is now made of a thinner, lightweight material which - will not hinder movement. In addition, the armor shows an increase in responsiveness, - activating in at least 50% of tests. - Incoming: - - rscadd: The iconic blood-red hardsuits of nuke ops can now be purchased for a - moderate sum of 8 TC by traitors. - Jordie0608: - - tweak: Cyborg mining drills now use up their internal battery before drawing power - from a borg's cell. - - bugfix: Fixes cyborg mining drills not recharging. - RemieRichards: - - rscadd: Burning mobs will ignite others they bump into or when they are stepped - on. - Xhuis: - - tweak: Malfunctioning AIs can no longer leave the station z-level. Upon doing - this, they will fail the round. - - tweak: Phazon exosuits now require an anomaly core as the final step in their - construction. - xxalpha: - - rscadd: Added Nutriment Pump, Nutriment Pump Plus and Reviver implants. - - tweak: Added origin technologies to all implants. - - tweak: 'The following implants are now much harder to obtain: X-ray, Thermals, - Anti-Stun, Nutriment Pump Plus, Reviver.' - - tweak: Cauterizing a surgery wound will now heal some of the damage done by the - bonesaw if it was used as part of the same surgery. - - tweak: Added ability for Medical HUDs to detect cybernetic implants in humans. -2015-04-09: - Iamgoofball: - - rscadd: Quite a lot of cleanables can now be scooped up with a beaker in order - to acquire the contents. - - rscadd: Light a piece of paper on fire with a lighter, and scoop up the ashes! - - rscadd: Scoop up the flour the clown sprayed everywhere as a 'joke'! - - rscadd: Scoop up the oil left behind by exploding robots for re-usage in chemistry! - - rscadd: You can splash the contents of a beaker onto the floor to create a Chemical - Pile! This pile can be heated or blown up and have the reagents take the effects. - Make a string of black powder around a department in maint. and then heat it - with a welder today! - - rscadd: Reagents now can have processing effects when just sitting in a beaker. - - rscadd: Pyrosium and Cryostylane now feed off of oxygen and heat/cool the beaker - without having to be inside of a person! - - rscadd: Reagents can now respond to explosions! - - rscadd: Black Powder now instantly detonates if there is an explosion that effects - it. - - rscadd: Fire now heats up beakers and their contents! - - rscadd: Activate some smoke powder in style by lighting the beaker on fire with - a burning hot plasma fire! - RemieRichards: - - tweak: Ninja stars are summoned to your hand to be thrown rather than automatically - targetting nearby mobs. - - rscadd: 'Added Sword Recall: pulls your katana towards you, hitting mobs in the - way. Free if within sight, cost scales with distance otherwise.' - - rscadd: Enemies can be electrocuted by a ninja as the cost of his energy, stunning - and injuring them. - - rscdel: Removed SpiderOS, functions moved to status panel. - - bugfix: Fixed energy nets not anchoring target, katana emag spam and sound delay. - optimumtact: - - bugfix: Mimes can't use megaphone without breaking their vow anymore. - phil235: - - tweak: Flying animals no longer triggers mouse traps, bear traps or mines. -2015-04-11: - Gun Hog: - - tweak: Nanotrasen has approved an access upgrade for Cargo Technicians! They are - now authorized to release minerals from the ore redemption machine, to allow - proper inventory management and shipping. - Iamgoofball: - - tweak: Blobbernauts no longer deal chemical damage, brute damage increased however. - Ikarrus: - - experiment: Getting converted by a rev or cultist will stun you for a few seconds. - Incoming5643: - - bugfix: Fixes some AI malf powers being usable when dead. - MrPerson: - - tweak: Reduces movement speed penalty from being cold. - Xhuis: - - rscadd: Adds a pizza bomb traitor item for 4 telecrystals. It's a bomb, diguised - as a pizza box. You can also attempt to defuse it by using wirecutters. - kingofkosmos: - - rscadd: Activating internals with an adjusted breath mask will automatically push - it up to normal state. - - tweak: Masks can now be adjusted when buckled to a chair. - optimumtact: - - tweak: Stun batons no longer lose charge over time when on. - phil235: - - tweak: The AI holopads now use a popup window just like computers and other machines. - - rscdel: Nerfs kinetic accelerator and plasma cutters. Plasma cutter is no longer - in the mining vendor. Reduces the drilling cost of all drills. - - rscadd: Adding 40+ new food and drink recipes, mostly using the newest plants. - Notably rice recipes, burritos, nachos, salads, pizzas. - - tweak: Opening the tablecrafting window can now also be done by dragging the mouse - from any food (that's on a table) onto you. - - rscadd: The kitchen cabinet starts with one rice pack. - - tweak: Glasses with unknown reagent will no longer be always brown but will take - the color of their reagents. -2015-04-13: - AnturK: - - rscadd: 'Spacemen have learned the basics of martial arts: Boxing, unleash it''s - power by wearing Boxing Gloves.' - - rscadd: While boxing you can't grab or disarm, but you hit harder with a knockout - chance that scales off stamina damage above 50. - - rscadd: Rumors have been heard of powerful martial styles avaliable only to the - gods themselves. - CosmicScientist: - - rscadd: Added a dehydrated space carp to traitor items, bought with telecrystals. - Use dehydrated space carp in hand to school them on loyalty. Add water to create - a vicious murder machine just for the halibut. - - tweak: The toy carp plushie now has attack verbs for fun, hit your friend with - one today. I put my sole into this mod. - - wip: If you can think of a better fish pun let minnow but I shouldn't leave it - to salmon else. - Ikarrus: - - tweak: Gang bosses can no longer purchase certain potent traitor items but instead - have access to some of a nuke op's arsenal of weapons. - Incoming5643: - - rscadd: 'Three new chemical types of blob can occur: Omnizine, Morphine and Space - Drugs.' - MrPerson: - - experiment: New lighting system! Lighting now smoothly transfers from one lighting - level to the next. - Xhuis: - - rscadd: There have been... odd sighting in Space Station 13's sector. Alien organisms - have appeared on stations 57, 23, and outlying. - - rscadd: Nanotrasen personnel have reason to believe that Space Station 13 is under - attack by shadowlings. We have little intel on these creatures, but be on the - lookout for odd behavior and dark areas. Use plenty of lights. - Zelacks: - - tweak: Defibs no longer have a minimum damage requirement for a successful revive. - Patients will have 150 total damage on a successful revive. - - tweak: Additional feedback is given for several failure states of the defib. - xxalpha: - - wip: Airlock crushing damage increased. -2015-04-16: - AnturK: - - rscadd: Nanotrasen authorities are reporting sightings of unidentified space craft - near space station 13. Report any strange sightings or mental breakdowns to - central command. - - rscadd: 'PS : Abductions are not covered by health insurance.' - - rscadd: Shadowlings and their thralls now have HUD icons. - - rscadd: Thralls learn their master's objectives when enthralled. - - rscadd: Regenerate Chitin ability lets shadowlings re-equip their armor if lost. - - tweak: Loyalty implanted people take 25% longer to enthrall, but lose their implant - and become immune to re-implanting. - - experiment: Shadowlings now have a message in their spawning text which specifies - that cooperation is mandatory. - - bugfix: Veil now works on equipped lights. - - bugfix: Shadowlings now take correct amount of burn damage and in light and heal - clone and brain damage in darkness. - - bugfix: Fixes 'Round end code broke' displaying every round. - - bugfix: Shadowlings who ascend will nore greentext properly. - Gun Hog: - - rscadd: Thinktronic Systems, LTD. has increased the Value of the Value-PAK PDA - cartridge! Standard issue for Captain PDAs, it can now access security bots, - medibots, cleanbots, and floorbots ALL AT ONCE! In addition, it can also connect - to your station's Newscaster network at NO EXTRA CHARGE! As a Thank you for - our contract with them, they have thrown in Newscaster access for the HumanResources9001 - cartridge, Heads of Personnel rejoice! - - tweak: The Newscaster app has also gotten a free upgrade which allows it to display - images and comments inside of posts! - - bugfix: Nanotrasen has concurrently released a patch for bots which will allow - off-station bots to properly patrol. - Incoming5643: - - rscadd: Changeling head slugs have been given player control, ventcrawling, and - a short escape period after egg laying. - MrStonedOne: - - rscadd: Admin ghosts can now drag ghosts to mobs to put that ghost in control - of that mob. - Xhuis: - - rscadd: Nanotrasen scientists have recently observed a strange genome shift in - green slimes. Experiments have shown that injection of radium into an active - green slime extract will create a very unstable mutation toxin. Use with caution. -2015-04-19: - AnturK: - - bugfix: Observers can now see abductor hivemind messages. - - rscadd: 'Adds advanced baton for abductors: Stun, Sleep and Cuff in one tool.' - - rscadd: Abductor agents now have vest cameras. - - imageadd: New sprites for abductors and their gear made by Ausops. - Fayrik: - - rscadd: Added jobban options for Abductors and Deathsquads. - - tweak: Made admin antag spawning buttons more efficient and less prone to failure. - Xhuis: - - rscadd: Recent sightings aboard space stations shows that spirits seem to be manifesting - as malevolent revenants and draining the life of crew. The chaplain may be helpful - in stopping this new threat. - kingofkosmos: - - wip: Girder and machine frame construction protocols has been changed. They can - now be secured/unsecured with a wrench and disassembled with a welder. -2015-04-20: - Fayrik: - - rscadd: Abductors now get advanced camera consoles. - - tweak: Redesigned Centcom again. There's a bar at the thunderdome now. - - rscadd: Headsets can now be locked to a spesific frequency, this only occurs for - nuke ops and deathsquads. - - rscadd: The Centcom channel is now available over all z-levels, regardless of - telecomms status. - - tweak: The Deathsquad space suits have been upgraded to hardsuits. - - rscadd: The Deathsquad now have thermal imaging huds, which can swap which hud - they display on the fly. - phil235: - - tweak: Reagents are now back to being metabolized every tick. Fixes frost oil - and capsaicin not working. - - tweak: Fixes not being able to make sterilizine. - - rscadd: Adding overdose to space drug, causing mild hallucination and toxin and - brain damage. - - tweak: Nerfed healing power of stimulant reagent. Buffed ephedrine a bit. - - rscadd: Nitroglycerin can now be stabilized with stabilizing agent, and explodes - when heated. -2015-04-21: - Ikarrus: - - wip: Gang mode has had some considerable work done on it, including a new objective - and currency dynamic. - - rscadd: New objective: Claim half the station as territory by tagging it - with spray cans supplied to gang bosses, but usable by any member. - - wip: An area can only be tagged by one gang at a time, remove your opponent's - tag or spray over it. - - rscadd: New recruitment: Recruiment pens replace flashes, stab people to - recruit them. - - experiment: Recruitment is silent, but causes brief seizures and has a cooldown - that scales upwards with a gang's size. - - rscadd: New tool: The Gangtool is used by bosses and lieutenants to recall - the shuttle and purchase supplies. - - rscadd: Pistols, ammo, spraycans, recruitment pens and additional gangtools can - all be bought. - - tweak: Gangtools also alert the user of promotions, purchases and territory changes - within the gang. - - rscadd: Lieutenants are promoted from gang members when given their own gangtool; - they're immune to deconversion and able to do anything a boss can except promotion. - - rscadd: New currency: Influence is used to purchase with the gangtool and - is generated every 5 minutes by each territory owned by the gang. - - tweak: Thermite can be cleaned off walls now. -2015-04-22: - Incoming5643: - - rscadd: 'Adds a new fun button for admins: ''Set Round End Sound''. You can use - the set round end sound button to set the round end sound. Glad we cleared that - up!' - Miauw62: - - wip: Very slightly expanded atmos and added an external airlock. - Xhuis: - - bugfix: A few issues have been fixed for revenants. In addition, the Mind Blast/Mind - Spike sound effect has been removed. - - rscadd: Adds the Hypnotize ability to revenants. It will cause a target to fall - asleep after a short time. - xxalpha: - - rscadd: Added an Exosuit Mining Scanner to the robotics fabricator. - - tweak: Buffed Ripley's movement and drilling speed in low pressure environments. -2015-04-25: - Boggart: - - rscadd: Generalizes handheld instrument code and Ports Nienhaus's guitar, sounds - by BartNixon of Tau Ceti. - - rscadd: Fixes being unable to build disposal pipes on walls, makes changing the - RPD's settings not affect pipes that are currently building, makes the RPD use - the datum/browser ui, makes it use categories and makes it show the selected - mode. - Gun Hog: - - rscadd: Nanotrasen has provided designs for fabrication of APC power control modules. - You may print them at any autolathe. - Ikarrus: - - rscadd: Gangs can now purchase switchblades, a relatively cheap and decently robust - melee weapon. - - tweak: Gangs now require at least 66% control of the station to win. - - tweak: Gang spraycan uses reduced to 15. - - tweak: Pistol cost increased to 30 Influence - - tweak: Promotions now start off cheap at 20 influence but get more expensive the - more people you promote. - Xhuis: - - rscadd: Added a Create Antagonist button for revenants. - - rscdel: Removed Mind Blast. - - bugfix: Revenants no longer get killed by explosions. - - tweak: Mind spike cooldown increased to 4 seconds. - - tweak: Harvest now takes 8 seconds and requires you to be adjacent to the target. - - tweak: Hypnotise sleeps targets for longer. - - tweak: Revenant now starts with 3 strikes. - phil235: - - tweak: Telecom machines are now deconstructed the same way as all other constructable - machines. - - tweak: You can no longer overdose on nicotine but you can get addicted (very mild - effects). -2015-04-29: - AndroidSFV: - - tweak: Dehydrated carp now are friendly to both the imprinter of the plushie as - well as any coded-in allies (I.E. Nuke Ops team), and unfriendly to carp of - other origin othan than yourself or your coded-in allies. Dehydrated carp that - are not imprinted will still have the same behavior as regular carp. - AnturK: - - rscadd: Advanced cameras now have all functionality of the abductor consoles. - - tweak: Pinpoint teleportation takes 8 seconds and spawns a flashy silhouette at - the target location. Can be used as distraction since it appears even if teleporter - is empty. - - bugfix: Abductors are now immune to viruses. - - bugfix: Dissection surgery ignores clothes. - - bugfix: Non-abductors can escape the ship by fiddling with consoles enough. - - rscadd: Three new negative glands. - - rscadd: Bloody glands spray blood everywhere and injure the host. - - rscadd: Bodysnatch glands turn the host into a cocoon that hatches doppelgangers. - - rscadd: Plasma glands cause the host to explode into a cloud of plasma. - GoonOnMoon: - - rscadd: Added a new assault rifle to the game for use by Nanotrasen fighting forces - in special events. Also happens to be available in the Liberation Station vending - machine and the summon guns spell usable by the wizard and badminnery. - Iamgoofball: - - rscdel: Acid blob has been removed. - - tweak: Charcoal and Silver Sulf are more powerful now. - - tweak: Styptic power and Silver Sulf metabolize at the default rate. - Ikarrus: - - rscadd: Spraycans and crayons can now draw Poseur Tags, aka Fake Gang Tags, as - grafiti. - - tweak: Influence income changed to provide weaker gangs a bigger boost, while - slowing down stronger gangs to promote opportunity for comebacks. - - tweak: Gangs only earn influence on territories they have held on to since the - previous Status Report (the income calculation every 5 minutes). This places - more significance on defending your existing territory. - - bugfix: You must be in the territory physically to tag it now. So no more tagging - everything from maint. - - tweak: Gang income delay reduced to 3 minutes intervals. - - tweak: Gang Capture goal reduced to 50% - - tweak: Gang spraycan use increased to 20 - - tweak: Gang Boss icon is now a red [G] icon to make it stand out better from regular - gang icons - JJRcop: - - tweak: TED's kill duration has been halved. - - tweak: Escaping from the TED's field no longer kills you. - RemieRichards: - - rscadd: Adds Easels and canvases for custom drawings. - - imageadd: Place a canvas on an easel and draw on it with crayons, clean one pixel - with a rag or soap and activate it in-hand to erase the whole canvas. - - rscadd: Ports VG's Ventcrawling overhaul! - - tweak: Crawling through vents is no longer instant, you now have to move and navigate - manually - - rscadd: While inside pipes and other atmos machinery, you now see pipe vision - phil235: - - bugfix: Podplants are no longer unharvestable. - - tweak: Choosing your clown, mime, cyborg and AI name as well as religion and deity - is now done in the preferences window. As a chaplain , your bible's icon is - now chosen by clicking the bible. -2015-04-30: - Fayrik: - - rscadd: Ported NanoUI to most atmospherics equipment. - TheVekter: - - tweak: Hooch is now made with 2 parts Ethanol, 1 part Welder fuel and 1 part Universal - Enzyme as a catalyst. - - tweak: No-slip shoes are paintable, painting them doesn't remove no-slip properties. -2015-05-01: - Ikarrus: - - rscadd: Gang bosses can now rally their gang to their location with their gangtool. - - rscadd: Gangtools can no longer recall the shuttle if station integrity is lower - than 70% - - rscdel: Removed requirement to be in the territory to tag it. - - tweak: Recruitment Pen cost reduced to 40. - - bugfix: Communications console should now accurately print the (lack of a) location - of the last shuttle call. - Xhuis: - - rscdel: Revenants will no longer spawn without admin intervention. They are pending - a remake. -2015-05-02: - Boggart: - - bugfix: Cryo tubes can no longer be used for ventcrawling. - Ikarrus: - - rscadd: Admins can choose the strength and size of Centcom teams to send, ranging - from officials to deathsquads, with the 'Make Centcom Respone Team' button. - phil235: - - tweak: Space carps can no longer knock down anyone, but they now deal additional - stamina damage to humans. - - tweak: Radiation effects from uranium walls are nerfed to the level of uranium - floor. - - rscadd: You can no longer put an inactive MMI in a cyborg shell. Ghosted brains - now get an alert when someone puts their brain in a MMI. You can now examine - the MMI to see if its brain is active. -2015-05-03: - AnturK: - - rscadd: Abductors can purchase spare gear with experimentation points. - Ikarrus: - - rscadd: Admins can now adjust the pre-game delay time. - MrStonedOne: - - experiment: MasterController and subsystem rejiggering! - - rscadd: The MC can now dynamcially change the rate a subsystem is triggered based - on how laggy it's being. This has been applied to atmos to allow for faster - air processing without lagging the server - - tweak: Pipes and atmos machinery now processes in tune with air, rather than seperately. - - bugfix: Fixed hotspots and fire causing more lag than they needed to - - bugfix: Fixed some objects not getting garbage collected because they didn't properly - clear references in Destory() - - tweak: The qdel subsystem will now limit its processing time to a 5th of a second - each tick to prevent lag when a lot of deletes happen - - bugfix: Fixed the ticker not showing a tip of the round if an admin forces the - round to start immediately -2015-05-04: - Firecage: - - bugfix: Emagged windoors can now be deconstructed. - RemieRichards: - - rscadd: Adds Plasmamen, a species that breathes plasma and bursts into flames - if they don't wear special suits. - - imageadd: New burning icon for all humanoid mobs. - - imageadd: New sprite for Skeletons to match Plasmamen. - oranges: - - tweak: Thanks to recent advances in fork science, you no longer need to aim at - your eyes to eat the food off a fork - xxalpha: - - rscadd: 'Adds a new barsign: ''The Net''.' -2015-05-05: - Firecage: - - bugfix: Golems and skeletons no longer fall over when stepping on shards. - Gun Hog: - - bugfix: Mining borg diamond drill upgrade now functional. - Ikarrus: - - tweak: Doubled the initial charge of SMESs in Engineering. - - tweak: Influence cap for gangs has been increased. - incoming5643: - - bugfix: All modes now select their antagonists before job selection, this means - that a player who prefers roles normally immune to being certain antagonists - (implanted roles/silicons) can still have a fair shot at every antagonist roll - they opt into. If they're selected they simply will not end up with an incompatible - job. - - bugfix: As an example if someone loved to play Head of Security (humor me here) - and had it set to high, and the only other jobs he had set were security officer - at medium and botanist at low but he was selected to be a traitor, he would - spawn as a botanist even if there ended up being no Head of Security. - - experiment: Please give playing security another chance if you'd written it off - because it affected your antag chances. - xxalpha: - - bugfix: Hulks can now break windoors. - - bugfix: Fixed smoking pipe messages. Fixed emptying a smoking pipe with nothing - in it. -2015-05-06: - Jordie0608: - - bugfix: Borgs can now open lockers with the 'Toggle Open' verb. - Thunder12345: - - bugfix: Severed the cryo tube's connection to the spirit world. Ghosts will no - longer be able to eject people from cryo. Please report further instances of - poltergeist activity to your local exorcist. - Xhuis: - - tweak: Many minor technical changes have been made to cult. - - rscadd: Cultist communications now show the name of the person using them. Emergency - communications do not do this. - - rscadd: Emergency communication does less damage. - xxalpha: - - rscadd: Engineering cyborgs can now pick their cable coil color whenever they - want. -2015-05-07: - Xhuis: - - rscadd: Emagged defibrillators will now do burn damage and stop the patient's - heart if used in harm intent. - - tweak: The previous stunning functionality of the emagged defibrillator has been - moved to disarm intent. - phil235: - - tweak: Temperature effects from frost oil and capsaicin reagents and basilisk - have been buffed to be significant again. - xxalpha: - - tweak: Hulks can now break windoors. -2015-05-08: - Firecage: - - tweak: Mobs can now be buckled to operating tables. - Gun Hog: - - rscadd: 'Top scientists at Nanotrasen have made strong progress in Artificial - Intelligence technology, and have completed a design for replicating a human - mind: Positronic Brains. Prototypes produced on your research station should - be compatible with all Man-Machine Interface compliant machines, be it Mechs, - AIs, and even Cyborg bodies. Please note that Cyborgs created from artificial - brains are called Androids.' - - tweak: The pAI role preference and related jobbans have been renamed to properly - reflect that they are not soley for pAI, but include drones and positroinc prains. - astralenigma: - - tweak: Cargo packages are now delivered with their manifests taped to the outside. - Click on them with an open hand to remove them. - optimumtact: - - tweak: Machine frame and girder deconstruction now uses a screwdriver instead - of welding tool. -2015-05-09: - Firecage: - - tweak: Increased the manifestation chance of super powers. - Ikarrus: - - experiment: 'Loyalty implants will no longer survive deconverting a gangster. - Security now needs to use two of them if they want the permanent effects: The - first to deconvert them, and the second to make them loyal.' - KorPhaeron: - - tweak: Slime mutation chance now starts at 30%. - - rscadd: Baby slimes have a -5% to 5% difference of their parent's mutation chance, - allowing you to breed slimes that are more likely to mutate. - - rscdel: Plasma and epinephrine no longer affect mutation chance of slimes. - - rscadd: Red slime extract and plasma makes a potion that can increase mutation - chance, Blue slime extract and plasma potions will decrease it. -2015-05-10: - AnturK: - - bugfix: Fixed borg's cells draining much faster than they're meant to. - Gun Hog: - - tweak: Station bot performance greatly increased. - - rscadd: Captain PDA cartridge now includes nearly all utilities and functions, - including signaller and all bots! HoP now has janitor and quartermaster functions! - The RD and Roboticists now have access to Floor, Clean, and Medibots! - - tweak: Bot access on PDA is now one button across all PDAs. You will only see - what bots you can access, however. - - rscadd: Cartridges that include a signaller have been improved so they will work - on a larger frequency range. - - tweak: All bots now have Robotics access, so they may be set to patrol and released - once constructed. - - tweak: Roboticists now have access to bot navigation beacons. They are found under - the floor tiles as patrol route nodes. -2015-05-11: - Firecage: - - imageadd: New icons for Industrial and Experimental welding tools. - Gun Hog: - - rscdel: The power mechanic for mining drills and the jackhammer has been removed. - They no longer require cells or recharging. - - bugfix: The diamond drill upgrade for mining cyborgs has been fixed. - Xhuis: - - rscadd: Adds the pneumatic cannon, attach an air tank and shoot anything out of - it. - - rscadd: Improvised pneumatic cannons can be tablecrafted with a wrench, 4 metal, - 2 pipes, a pipe manifold, a pipe valve and 8 package wrappers. - spasticVerbalizer: - - bugfix: False walls no longer stackable. -2015-05-13: - Firecage: - - rscadd: Kudzu is now admin-logged in Investigate. - GunHog: - - tweak: Positronic brains are now entered by clicking on an empty one, in the same - manner as drones. - - rscadd: Ghosts are alerted when a new posibrain is made. - Jordie0608: - - rscadd: Borg reagent containers (beakers, spraybottles, shakers etc.) are no longer - emptied when stowed. - - bugfix: Fixes North and West Mining Outposts having empty SMESs. - - bugfix: Aliens and slimes can smash metal foam again. - - rscdel: Deconstructing reinforced walls no longer creates additional rods out - of nowhere. - - imageadd: Pepperspray now has inhand sprites. - Xhuis: - - bugfix: Fixes the recipe for pneumatic cannons; it now only requires a wrench, - 4 metal, 2 pipes and 8 package wrappers . -2015-05-15: - xxalpha: - - bugfix: Fixed emitter beams not being reflectable. -2015-05-16: - MartiUK: - - bugfix: Fixed a typo when cleaning a Microwave. - - bugfix: Fixed a typo when burning someone with a lighter. -2015-05-20: - xxalpha: - - rscadd: Added three drone shells to the derelict. -2015-05-22: - Jordie0608: - - tweak: Smothering someone with a damp rag when in harm intent will apply reagents - onto them, for acid-burning their face; otherwise it will inject them, for drugging - with chloral hydrate. - - imageadd: The healthdoll is now blue when at full health to make it more clear - when a body part is injured. -2015-05-25: - spasticVerbalizer: - - tweak: Glass airlocks can now be made heat-proof by using a sheet of reinforced - glass to create the window, regular glass creates a normal glass airlock. - xxalpha: - - bugfix: You can no longer drop items inside mechas nor machinery (this includes - gas pipes, disposal pipes, cryopods, sleepers, etc.). - - bugfix: Fixed exploit of changelings being able to keep thermal vision after resetting - their powers. - - bugfix: Fixed being able to implant NODROP items with cavity implant surgery. -2015-05-26: - CosmicScientist: - - spellcheck: Corrected wording for the pAI, donksoft riot darts and some tip of - the round tips. - xxalpha: - - bugfix: Fixed changeling revival. -2015-05-30: - duncathan: - - bugfix: Fixes passive gates not auto-coloring. - spasticVerbalizer: - - tweak: Players trying to speak but unable to will now get a message. -2015-05-31: - duncathan: - - tweak: Clarified the ability to retract changeling armblades. -2015-06-04: - Cuboos: - - rscadd: Added casting and firing sounds for wizard spells and staves. - - rscadd: A new title theme has been added. - Gun Hog: - - rscadd: Nanotrasen has approved the designs for destination taggers and hand labelers - in the autolathe. - Palpatine213: - - tweak: Allows sechuds to have their id locks removed via emag as well as EMP -2015-06-05: - CandyClown: - - tweak: Ointments, bruise packs, and gauze are now stacked to 6 instead of 5. - CorruptComputer: - - bugfix: Security lockers no longer spawn in front of each other on Box. - - bugfix: Hooked up the scrubbers in QM's office on Box. - - bugfix: Fixed bar disposals on Box - - bugfix: Fixed the stacked heater+freezer in expirementor maint on Box - - tweak: Made the turbine into Atmos and Engineering access only, and renamed the - doors to Turbine on Box. - Ikarrus: - - rscadd: Gang Bosses will now be able to discreetly send messages to everyone in - their gang for 5 influence a message. - - tweak: Conversion pens now use a flat 60sec cooldown rate. - KorPhaeron: - - rscadd: You can now lay tiles on the asteroid. Go nuts building forts. -2015-06-06: - Incoming5643: - - rscadd: Antagonists with escape alone can now escape with others on the shuttle, - so long as they are also antagonists. - - rscadd: Antagonists with escape alone can also win if non-antagonists are on the - shuttle provided they are locked in the brig. - - rscadd: Escaping to syndicate space on board the nuke op shuttle is now a valid - way to escape the station. - Jordie0608: - - rscadd: Admin-delaying the round now works once it has finished. -2015-06-07: - Aranclanos: - - rscadd: Malfunctioning AIs can preview placement of a Robotic Factory. - Iamgoofball: - - rscadd: Bicardine, Dexalin, Kelotane, Anti-toxin, Inaprovaline and Tricordrazine - have been re-added. - RemieRichards: - - rscadd: Lizards can now wag their tails, emote *wag to start and *stopwag to stop. - kingofkosmos: - - tweak: Mops can now be wet from normal buckets and sinks. -2015-06-08: - AnturK: - - imageadd: Improved the interface of Spellbooks. - Cheridan: - - tweak: Push-force from Atmospherics now depends on an entity's weight, heavier - objects are less prone to being pushed. - - rscadd: Magboots and No-Slip shoes now prevent pushing from spacewind. - Firecage: - - rscadd: Protolathes can now build Experimental Welding Tools. -2015-06-09: - Aranclanos: - - wip: Structures and machines can now be built on shuttles. - Iamgoofball: - - rscadd: 'Adds the Bluespace Rapid Part Exchange Device: holds up to 400 stock - parts and can be used to upgrade machines at range without needing to open their - maintenance panel.' - - rscadd: A new tier of stock parts have been added, they're very expensive to produce - but provide ample improvements. - - experiment: Many machines can now also be upgraded. - - tweak: 'Emitter: Lasers decrease firing delay and Capacitors decrease power consumption.' - - tweak: 'Gibber: Matter Bins increase yield of meat and Manipulators speed up operation - time, at high level can gib creatures with clothes.' - - tweak: 'Seed Extractor: Matter Bins increase storage and Manipulators multiply - seed production.' - - tweak: 'Monkey Recycler: Matter Bins increase the amount of monkey cubes produced - and Manipulators reduce the monkey-to-cubes ratio to a minimum of 1-to-1.' - - tweak: 'Crusher: Matter Bins increase material yield and Manipulators increase - chance to yield materials, at high level there is a chance for rarer materials.' - - tweak: 'Holopad: Capacitors increase an AI''s traversal range from the holopad.' - - tweak: 'Smartfridge: Matter Bins increase storage.' - - tweak: 'Processor: Matter Bins increase yield and Manipulators speed up operation - time.' - - tweak: 'Microwave: Matter Bins increase storage.' - - tweak: 'Ore Redemption Machine: Matter Bins increase yield per ore, Lasers increase - points per ore and Manipulators speed up operation time.' - - tweak: 'Hydroponics Tray: Manipulators improve water and nutrients efficiency.' - - tweak: 'Biogenerator: Matter Bins increase storage.' - bananacreampie: - - rscadd: Added several new options to the ghostform sprites -2015-06-11: - Cheridan: - - rscdel: Removes the powerdrain for individiual active modules on cyborgs. -2015-06-12: - Ikarrus: - - experiment: Gang Updates - - rscadd: 'New objective: To win, Gangs must now buy a Dominator machine (50 influence) - and defend it for a varying time frame.
    * The location of the dominator is - broadcasted to the entire station the moment it is activated
    * The more territories - the gang controls, the less time it will take
    * Gangs no longer win by capturing - territories' - - rscadd: A choice of gang outfits are now purchasable for 1 influence each - - rscadd: Thompson SMGs aka "tommy guns" are now purchasable for 50 influence - - rscadd: Bulletproof armor vests are now purchasable for 10 influence - - tweak: Gang messages are now free to send - - tweak: Prices of pistols and pens reduced to 20 and 30, respectively - - tweak: Gang spraycans have been made a lot less obvious. They look nearly identical - to regular ones, now. - - rscdel: Gangs will no longer be notified how much territory the enemy controls - Incoming5643: - - rscadd: Growing tired of reports of slain members, the Wizard Federation has cautiously - sactioned the dark path of lichdom. Beware of the powerful lich who hides his - phylactery well, for he is immortal! - - rscadd: The trick to defeating liches is to destroy either their body or their - phylactery item before they can ressurect to it. The more a lich is slain the - longer it will take him to make use of his phylactery and the more likely the - crew is to catch him during a vunerable moment. - - rscremove: Due to the addition of proper liching, skeletons as a choosable race - from magic mirrors has been discontinued. My apologies to the powergamers. A - special admin version of the mirror that allows for skeletons has also been - added to the code. - Miauw: - - tweak: 'AIs have received several minor nerfs in order to increase antagonist - counterplay:' - - tweak: AI tracking is no longer instant, it takes an amount of time that increases - with distance from the AI eye, up to 4 seconds. The AI detector item will light - up when an AI begins tracking. - - tweak: A random camera failure event has been added, which will break one or two - random cameras. - - tweak: You can no longer keep tracking people that are outside of your camera - vision. - - tweak: Camera wires have been removed. Screwdriver a camera to open the panel, - then use wirecutters to disable it or a multitool to change the focus. - - tweak: You can now hit cameras with items to break them. To repair a camera, simply - open the panel and use wirecutters on it. - - tweak: Camera alerts now only happen after a camera is reactivated. - RemieRichards: - - rscadd: New optional explosion effect ported from /vg/'s DeityLink, Explosions - that are affected by Walls and Doors -2015-06-14: - Ikarrus: - - rscadd: White suits added to gang outfits - - tweak: Gang outfits are now free, but are now limited in stock (that replenishes - over time) - - tweak: While attempting a Hostile Takeover, gangs do not gain influence. Instead, - the takeover timer will be reduced by how many territories they control. - - tweak: Spraycan cost reduced to 5 influence. - - tweak: Recruitment Pen cooldown increased to 2 minutes, but is reduced if the - enemy gang has more members than yours. - - tweak: Tommy guns no longer deal stamina damage. - - rscdel: Gangtools can no longer recall the shuttle if the game mode is not Gang - War -2015-06-15: - Incoming5643: - - rscadd: Lizards can now choose from a wide varity of physical appearances in character - creation! Sprites made by WJohn. Hiss Responsibly. - Kor: - - rscadd: A terrible new creature stalks the halls of SS13. - - rscadd: The wizard has a new artefact related to said creature. - - rscadd: Added a new sepia slime plasma reaction. Try it out! - spasticVerbalizer: - - bugfix: Drones can now properly quick-equip. -2015-06-18: - AnturK: - - rscadd: Added new photo-over-pda function. Apply the photo to PDA to send it with - your next message! - Ikarrus: - - rscadd: Department Management consoles have been added to Head of Staff offices. - These will enable heads to modify ID's access to their department, as well as - preform demotions. - Miauw: - - tweak: Bullets can now damage cameras. - - tweak: Camera alarms now trigger 90 seconds after the first EMP pulse, instead - of when all EMP pulses run out. - - tweak: Makes the force required to damage cameras greater than or equal to ten - instead of greater than ten. - - tweak: Camera alarms now trigger when cameras are disabled with brute force or - bullets. - Xhuis: - - rscadd: Nanotrasen scientists have determined that a delaminating supermatter - shard combining with a gravitational singularity is an extremely bad idea. They - advise keeping the two as far apart as possible. - phil235: - - rscdel: Nerfed the xray gun. Its range is now 15 tiles. -2015-06-20: - Dorsisdwarf: - - tweak: Syndicate Bulldog Shotguns now use slug ammo instead of buckshot by default - - rscadd: Nuke Ops can now buy team grab-bags of bulldog ammo at a discount. - Ikarrus: - - rscadd: Wearing your gang's outfit now increases influence and shortens takeover - time faster. - - rscadd: Added several more options for gang outfits - - rscadd: Pinpointers will now point at active dominators. - - tweak: Gang outfits are now slightly armored - - tweak: Gang tags are now named 'graffiti' to make them harder to detect - - tweak: Initial takeover timer is now capped at 5 minutes (50% control) - - tweak: 'Server Operators: The default Delta Alert texts have changed. Please check - if your game_options.txt is up to date.' - - rscdel: Loyalty implants now treat gangs as it treats cultists. Implants can no - longer deconvert gangsters, but it can still prevent recruitments. - - tweak: Replaced tommy guns with 9mm 2-burst 32 mag uzis that costs 40 influence. - Unlike tommy guns gangs will be able to purchase ammo for uzis. - Jordie0608: - - tweak: 'For Admins: Jump-to-Mob (JMP) notification command replaced with Follow - (FLW).' - - rscadd: Message and Follow links added to many notifications. - - rscadd: New buttons to toggle nuke and set security level. - - spellcheck: Flamethrowers are logged in attack_log. - Thunder12345: - - rscadd: Combat shotguns are now semi automatic, and will be pumped automatically - after firing. - - tweak: Combat shotgun capacity has been reduced to six shells. - Xhuis: - - rscadd: You will now trip over securitrons if you run over them whilst they are - chasing a target. - - rscadd: An admin-spawnable drone dispenser has been added that will automatically - create drone shells when supplied with materials. - - rscadd: Airlock charges are available to traitors and will cause a lethal explosion - on the next person to open the door. - - rscadd: Nuclear operatives can now buy drum magazines for their Bulldog shotguns - filled with lethal poison-filled darts. - - rscadd: When a malfunctioning AI declares Delta, all blue tiles in its core will - begin flashing red. - - rscadd: Back-worn cloaks have been added for all heads except the HoP. LARPers - rejoice! - - rscadd: More suicide messages have been added for a few items. -2015-06-21: - GunHog: - - tweak: The Hostile Lockdown ability for Malfunctioning AIs has been nerfed. It - now costs 30 CPU, is much more obvious, and automatically resets in 90 seconds. - - tweak: Buffed the Upgrade Turrets Malfunction ability. Turrets will now fire heavy - lasers instead of simply shooting faster. - - rscadd: Nanotrasen has released an Artificial Intelligence firmware upgrade under - the ID 41ST0L3MYB1K3. It contains drivers for interacting with all variants - of exosuit technology, from the Ripley APLU design to even experimental Phazon - units. Simply upload your AI to the exosuit's internal computer via the InteliCard - device. Per safety regulations, the exosuit must have maintenance protocols - enabled in order to remove an AI from it. - - rscadd: Malfunctioning AIs may wirelessly steal mechs via a new power, Mech Domination. - For 30 CPU, a Malf AI may permanently upload itself to a mech, ejecting any - pilots. Malf AIs will still lose if they leave the Z-level, and the Malf will - be gibbed if the mech is destroyed - they cannot be carded out of the mech or - shunt to an APC. - Iamgoofball: - - rscdel: Blobs can no longer have Morphine as their chemical. - duncathan: - - tweak: Heat exchangers now update their color to match that of the pipe connected - to them. - - tweak: Heat exchangers are on longer dense. -2015-06-22: - Iamgoofball: - - rscdel: Removed failure chance and delay when emagging an APC. - KorPhaeron: - - tweak: Rebalanced armor to be less effective, reducing the melee, bullet and/or - laser damage reduction of all armor suits. - LaharlMontogmmery: - - rscadd: You can now click and drag a storage container to empty it's contents - into another container, disposal bin or floor tile. - Xhuis: - - experiment: Revenants have received a considerable overhaul. - - rscadd: Revenants will no longer share spawn points with space carp and will spawn - in locations like the morgue and prisoner transfer center. - - rscadd: Revenants can no longer cross tiles covered in holy water. - - rscadd: Revenants have a new ability called Defile for 30E. It will cause robots - to malfunction, holy water over tiles to evaporate, and a few other effects. - - rscadd: Upon death, revenants will appear and play a sound before rapidly fading - away and leaving behind glimmering residue as evidence of their demise. - - rscadd: This residue lingers with the essence of the revenant. If left unattended, - it may reform into a new revenant. Simply scattering it is enough to stop this, - but it also has high research levels. - - rscadd: Revenants now have fluff objectives as well as a set essence goal. - - tweak: Revenanants will be revealed for longer when using abilities and also receive - feedback on this revealing. - - tweak: Revenants can now only spawn via random event with a specific amount of - dead mobs on the station. The default for this is 10. - - bugfix: Revenants can no longer use abilities from inside walls. - - rscdel: Directly lethal abilities have been removed from revenants. In addition, - they can no longer harvest unconscious people, only the dead. -2015-06-23: - Fayrik: - - rscadd: NanoUI is now Telekenesis aware, but due to other constraints, NanoUI - interfaces are read only at a distance. - - tweak: Refactored all NanoUI interfaces to use a more universal proc. - - tweak: Adjusted the refresh time of the NanoUI SubSystem. All interfaces will - update less, but register mouse clicks faster. - - bugfix: Removed automatic updates on atmospheric pumps, canisters and tanks, making - them respond to button clicks much faster. - - bugfix: Atmos alarm reset buttons work now. Probably. - Iamgoofball: - - rscadd: Adds a progress bar when performing actions. - Ikarrus: - - rscadd: New gang names with tags created by Joan - - rscadd: C4 explosive can be purchased by gangs for 10 influence. - - tweak: Recruitment pen cost increased to 50. - - rscadd: Lieutenants recieve one free recruitment pen. - - tweak: Recruitment pens are now stealthy and no longer give a tiny prick message. - - tweak: Increased chance of deconversion with head trauma - - tweak: Recalling the shuttle now takes about a minute to work, during which you - won't be able to use your gangtool. - - rscadd: Pinpointers no longer point at dominators. Instead, dominators will beep - while active. - - rscadd: Added puffer jackets and vests. - - tweak: Increased gang outfit armor. It is moderately resistant to bullets now. - - rscdel: Removed bulletproof vests from gangtool menu. - Jordie0608: - - rscadd: Admins can now flag ckeys to be alerted when they connect to the server. - MrStonedOne: - - rscadd: Admins can now reject poor adminhelps. This will tell the player how to - construct a useful adminhelp and give them back their adminhelp verb - RemieRichards: - - tweak: Cumulative armour damage resistance is now capped at 90%, you will now - always take at bare minimum, 10% of the incoming damage. - - rscadd: Added a system for Armour Penetration to items, it works by temporarily - (It does NOT damage the armour or anything) reducing the armour values by the - AP value during the attack instance. - - rscadd: 'The formula for AP is Armour-ArmourPenetration = AdjustedArmour and AdjustedArmour - is used for all the remaining calculations instead of Armour (Eg: 80 Melee - - 15 AP = 65 Melee).' - - rscadd: The Ninja's Energy Katana has 15 AP, Xenomorphs have an inbuilt AP of - 10. - - tweak: You can now unwrench pipes who's internal pressures are greater than that - of their environment... - - rscadd: However it will throw you away from the pipe at extreme speed! (You are - warned beforehand if the pipe will do this, allowing you to cancel) - Vekter: - - bugfix: Finally fixed immovable rods! They will now properly bisect the station - (and crit anyone unlucky enough to be in their path). - - tweak: Increased Meteor activity detected in the vicinity of the station. Be advised - that many storms may be more violent than they once were. - - rscadd: Gravitational anomalies will now throw items at mobs in their vicinity. - Take care while scanning them. - - rscadd: Flux anomalies explode much more violently now. Get there and destroy - them, or risk losing half a department. - xxalpha: - - rscadd: 'Added a new Reviver implant: now it revives you from unconsciousness - rather than death.' - - rscadd: Added cybernetic implants and a cybernetic implants bundle to the Nuke - Ops uplink. - - bugfix: Fixed Nutriment pump implant printing. - - tweak: Health Analyzers now have the ability to detect cybernetic implants. - - tweak: X-Ray implants are now much harder to unlock. -2015-06-24: - Ikarrus: - - rscadd: Request Console message sent to major departments will now be broadcasted - on that department's radio. - - rscadd: Request Consoles can be used to quicly declare a security, medical, or - engineering emergency. -2015-06-25: - Iamgoofball: - - rscadd: Changes up how Explosive Implants work. - - rscadd: They have become Microbomb Implants. They cost 1 TC each. Each implant - you inject increases the size of the explosion. You gib on usage, regardless - of explosion size. - - rscadd: A Macrobomb implant was added for 20 TC. It is the equivalent of injecting - 20 microbombs. - - rscadd: Nuke Ops start with microbomb implants again. -2015-06-26: - Ikarrus: - - imageadd: Added a couple of new gang tag resprites by Joan. - Kor: - - tweak: Summon Guns has returned to its former glory. The spell will once again - create antagonists, now with the objective to steal as many guns as possible. - - tweak: Summon Guns once again costs a spell point, rather than granting one. - phil235: - - tweak: Buffs traitor stimpack (and adrenalin implant) to be more efficient against - stuns/knockdowns. - pudl: - - rscadd: You can now play games of mastermind to unlock abandoned crates found - throughout space. -2015-06-27: - Ikarrus: - - rscadd: Some objects can be burned now. - - rscadd: Bombs will shred your clothes, with respect to their layering and armor - values. Exterior clothing will shield clothing underneath. Storage items will - drop their contents when bombed this way. - Laharl Montogmmery: - - rscadd: 'Storage Content Transfer : Bluespace Boogaloo! You can now transfer the - content of the BoH/BRPED into tiles/bins/bags out of your reach. Range is 7 - tiles.' - MrStonedOne: - - tweak: Admins will now receive a notification when one of them starts to reply - to an adminhelp to cut down on multiple responses to adminhelps and let admins - know when an adminhelp isn't getting replied to. - - rscadd: The keyword finder in admin helps (adds a (?) link next to player names - in the text of adminhelps) has been added for all player to admin pms, as well - as admin say. - NullQuery: - - wip: Introduces html_interface, a module to streamline the management of browser - windows. - - rscadd: Adds playing cards that utilize a new HTML window management system. - Vekter: - - rscadd: Added a new military jacket to the Autodrobe and ClothesMate. -2015-06-28: - Ikarrus: - - rscadd: Gang Lieutenants can buy gang tools now, but at a higher cost than the - original boss - - rscadd: Gang leaders can register additional gangtools to themselves for use as - spares. - - tweak: Number of maximum lieutenants lowered to 2 - - tweak: Pistol cost increased to 25 influence - - tweak: Uzi cost increased to 50 influence - - tweak: Uzi Ammo decreased to 20 influence - - rscadd: Overcoats added to items the biogenerator can produce. - - rscdel: Micro and Macro bomb implants are now restricted to the Nuclear game mode. - phil235: - - tweak: Smoke (and foam) no longer distribute more reagents than they have. The - amount of clouds in a smoke now depends on the amount of smoke created. Acid - no longer melts items on a mob at low volume, and the chances to melt them increases - with the amount applied on the mob. Sprays can now contain acid again. -2015-06-29: - Ikarrus: - - rscadd: Clothing has been separated out of equipment lockers into wardrobes to - reduce clutter. - Incoming5643: - - rscadd: The secrets of the rainbow slimes have finally been revealed. To attain - this rare blob you must breed a slime with a 100% mutation chance! - - rscadd: Rainbow slime cores will generate a randomly colored slime when injected - with plasma. It's a good plan B if the slimes aren't cooperating in terms of - colors. You can get any color slime this way, pray to the RNG! - Xhuis: - - rscadd: The Sleeping Carp clan has made its presence known on Space Station 13. - Some gangs will name themselves after this group and practice martial arts rather - than using traditional gang weaponry. These shadowboxers are not to be taken - lightly. - oranges: - - tweak: Thanks to a breakthrough in directed vector thrusting, all nanotrasen brand - jetpacks have been greatly improved in speed and handling -2015-07-01: - Ikarrus: - - rscadd: Multiple gang leaders are spawned at round start, the number which depends - on server population - - rscdel: Gangsters can no longer be promoted mid-game. - - rscadd: Security can once again deconvert gangsters with loyalty implants - - rscadd: Added an Implant Breaker item to the gangtool as a purchasable item for - 10 influence each
    * They are a one-use item that destroys all implants in - the target, including loyalty implants
    * They will also attempt to recruit - the target before destroying itself - - rscdel: Implanters no longer work if the target is wearing headgear. Remove them - first. - NullQuery: - - tweak: The crew monitoring computer, AI crew monitoring popup and the handheld - crew monitor now update automatically. - - tweak: 'Crew monitoring: The health information has been turned into a health - indicator. It goes from green to red. Hovering over the icon shows detailed - information (if available).' - - tweak: 'Crew monitoring: The location coordinates have been hidden. You can see - them by hovering over the ''Location'' column.' - - rscadd: 'Crew monitoring: A minimap has been added so you can easily see where - people are.' - - tweak: 'Crew monitoring: Players who are not in range of a camera are not shown - on the minimap.' - - tweak: 'Crew monitoring: AI players can quickly move to other locations or track - players by clicking the minimap or items in the table.' - - tweak: 'Crew monitoring: For AI players, health information always shows a white - indicator instead of green-to-red. This is a deliberate limitation to prevent - the AI from becoming too omnipresent.' - phil235: - - tweak: Space drug overdose no longer cause brute/brain damage but you hallucinate - more. Space Drug Blob now makes you hallucinate even if you don't overdose on - its space drug. - xxalpha: - - rscadd: 'Added a new traitor objective: steal the station''s self-destruct nuke - plutonium core.' -2015-07-02: - Ikarrus: - - rscadd: Throwing reagent containers such as drinks or beakers may spill their - contents onto whatever they hit - - rscadd: Slipping while carrying items in your hand may cause ~accidents~ - - tweak: Mounted and portable flashers can now only be burned out from overuse, - similar to flashes. - oranges: - - tweak: Thanks to department budget cuts we've had to remove the security cameras - built into officer helmets, Nanotrasen apologies for this inconvenience. -2015-07-03: - Ikarrus: - - experiment: Added support for up to six gangs at a time. Admins may add additional - gangs to any round. - - experiment: Gang mode now has a chance to start with a third gang. - - rscadd: Promotion of lieutenants have been re-added - - rscadd: Every lieutenant promoted will lengthen the gang's recruitment cooldowns - by one minute. - - rscdel: Only gang bosses will be able to recall the shuttle from their gangtool. - - rscadd: A recruitment pen that has not been used for a while will accumilate charges, - so you are no longer punished for waiting to convert people. - - rscadd: Gangs are now fully functional outside of gang mode. - Ricotez: - - rscadd: 'Added two categories of mutant bodyparts for humans with the same system - that lizards use: ears and tails. Right now only admins can edit these.' - - rscadd: Updated the system that checks for which jobs your character qualifies - to be species-dependant. At this moment you won't notice any differences, but - in the future coders can use this to be more specific about which jobs a species - is allowed in under which circumstances. - - imageadd: 'Added one option to both categories, taken from the kitty ears: a cat - tail and cat ears.' - - rscadd: 'Added a new button to the VV menu drop-down list for admins: Toggle Purrbation. - Putting a human on purrbation will give them cat ears and a cat tail, and send - them the message ''You suddenly feel valid.'' Using the button a second time - removes the effects.' - - wip: 'Adding categories for tattoos and scars is in the works. (Read: I need sprites!)' - oranges: - - tweak: Engineers in nanotrasen's safety equipment department announced the release - of a new and improved version of the X25 taser trigger, previous triggers, which - suffered from a long line of misfire problems were recalled enmasse. Nanotrasen - refused to comment on rumours that the previous trigger design was the work - of a saboteur. -2015-07-04: - Gun Hog: - - tweak: The Ore Redemption Machine now allows users to release minerals without - having to insert an ID first. - Ikarrus: - - bugfix: Fixed items that logically shouldn't spill, spilling their contents when - thrown - - bugfix: Fixed Bartender's non-spilling powers - - bugfix: Fixed thrown beakers not applying their contents onto floors - - bugfix: Fixed unable to transfer reagents between beakers you are holding - - bugfix: Fixed bombs shredding clothes that should have been protected by covering - clothes - - bugfix: Fixed gang mode. - MMMiracles: - - rscadd: Added patriotic underwear apparel due to the most god damn american holiday - being just around the corner. - - rscadd: Also adds some other stuff for those inferior countires too, I guess. -2015-07-05: - AlexanderUlanH & Xhuis: - - rscadd: Shadowling Ascendants have a new ability to send messages to the world. - - bugfix: Glare now properly silences targets. - - bugfix: Veil now turns off held lights. - - tweak: Drain Thralls replaced with Drain Life, which targets all nearby humans. - - rscadd: Spatial Relocation replaced with Black Recuperation which lets you revive - a dead thrall every five minutes. - - rscdel: Removed Vortex. - - tweak: Shadowlings can now only enthrall five people before being forced to hatch; - Hatched shadowlings can continue to enthrall however non-hatched ones can't - pass the global limit. - - tweak: Enthralling sends a message to all nearby humans. - - tweak: Removed cooldown on Glacial Freeze. - Ikarrus: - - tweak: Reactive armor may now teleport user to space tiles. Be careful using it - around space. - Razharas: - - tweak: Firing pins can now be removed by tablecrafting a gun with a plasmacutter, - screwdriver and wirecutters. - RemieRichards: - - imageadd: Melee attacks with weapons now display and animation of the weapon over - the target. - - rscadd: Tablecrafting window now shows all recipies and has been split into categorized - tabs. - - rscdel: 30 item limit removed. - Sabbat: - - rscadd: Updated the cult armor rune to let you get additional equipment or abilities - based on what you're wearing or holding. Some nerfed versions of wizard spells - can be used by the cult in exchange for unique clothing, these spells require - the cult robes or armor in order to use. No armor choices are mandatory, you - will always have the option of the default choice. - - rscadd: Zealot - Default armor rune. If none of the required clothing is worn - this will be chosen automatically. Is the same as ever. - - rscadd: Summoner - If you are wearing the wizard robe and hat when using the armor - rune this choice will be available. User will receive magus robes and hat and - nerfed versions of the summon shard and summon shell spells. - - rscadd: Traveler - Available to people wearing EVA suit and helmet. Replaces the - EVA suit and helmet with the cult space suit and space helmet. Gives you a sword. - - rscadd: Marauder - Available to people wearing the captain's space suit and helmet. - Same as Traveler except user is given a spell of summon creature (two creatures). - They can and will attack the user. - - rscadd: Trickster - Available if wearing the RD's reactive teleport armor. Gives - you magus robes, a wand of doors, and a nerfed version of Blink. - - rscadd: Physician - Available if wearing the CMO's labcoat. Gives you a wand of - life. - TheVekter: - - rscadd: Ian now has a dog-bed in the HoP's office. - nukeop: - - rscadd: Uplinks now have a syndicate surgery bag containing surgery tools, a muzzle, - a straightjacket and a syndicate MMI. - - rscadd: Syndicate MMIs can only be placed in cyborgs to create an unlinked cyborg - with syndicate laws. -2015-07-06: - Ikarrus: - - tweak: Increased Uzi SMG cost to 60 influence. - - tweak: Increased Uzi ammo cost to 40 influence. - - tweak: Domination attempt limit is reduced to 1 per gang while the shuttle is - docked with the station. - - tweak: Gang bosses can promote and recall the shuttle using spare gangtools - - bugfix: Fixed Gang bosses getting deconverted with head trauma - - rscadd: Lizard characters can now get random names unique from humans. -2015-07-07: - Ikarrus: - - bugfix: Fixed bug where gang messages would occasionally fail to send. - - bugfix: Fixed bug that prevented implant breakers from recruiting security. - - tweak: Implanters are now only blocked by helmets with THICKMATERIAL - - rscdel: Light severity explosions no longer shred clothes. - MMMiracles: - - rscadd: Adds a new crate to cargo in the security section, for when desperate - times call for desperate measures. - NullQuery: - - bugfix: Crew monitoring computers now sort by department and rank again. - - tweak: 'Crew monitoring computer: Hovering over a dot on the minimap will now - jump to the appropriate entry in the table.' - - bugfix: sNPCs were given ID cards with blank assignments. -2015-07-09: - AlexanderUlanH: - - rscadd: Riot Shotguns now spawn loaded with rubber pellet shells that deal high - stamina damage. - kingofkosmos: - - tweak: Both beakers and drinking glasses can now be be drunk from, fed to mobs - and splashed on mobs, turfs and most objects with harm intent. - nukeop: - - tweak: RCDs have a larger storage and can be loaded with glass, metal and plasteel. - - rscadd: Grilles and Windows can be made with an RCD. - - rscadd: Engi-Vend machine now has three RCDs. - - rscdel: Removed RCD as a steal objective. -2015-07-10: - Ikarrus: - - rscadd: 'New Changeling Ability: False Armblade Sting. It creates an undroppable - armblade on the target temporarily. It will appear exactly like a real one, - except you can''t do anything with it.' - - tweak: Transform stings are no longer stealthy. -2015-07-11: - Dorsidwarf: - - tweak: Due to a new Syndicate budget, uplink implants are now only 14 TC. - - tweak: In order to facilitate inter-agent communication, Syndicate Encryption - Keys have been reduced to 2TC. They retain the ability to intercept all channels - and speak on a private frequency. - Ikarrus: - - tweak: Robotic augmentations have been made a bit more difficult to maintain. -2015-07-13: - Ikarrus: - - imageadd: Loyalty Implant HUD Icon has been updated. - duncathan: - - tweak: Greatly shortened the time it takes to lay pipes with the RPD and to unwrench - pipes in general. - - rscadd: Added Optical T-Ray scanners to R&D and Atmospheric Technician closets. - Optical T-Ray Scanners function identically to a handheld scanner. -2015-07-14: - AnturK: - - rscadd: New species of mimic was spotted in the wilderness of space. Watch out! - Jordie0608: - - rscadd: Added a Local Narrate verb for admins. -2015-07-17: - Ikarrus: - - bugfix: Virology is no longer all-access. - - rscadd: Changelings now have the ability to swap forms with another being. - - tweak: Halved Domination Time. - - tweak: Reinforced windows and windoors are a bit more resistant to fires and blasts. - MrStonedOne: - - tweak: 'Scrubbers now use power: 10w + 10w for every gas its configured to filter. - (60w for siphon)' - - rscadd: Scrubbers can now be configured to operate on a 3x3 range via the air - alarm at a high cost (ranging from 100w to 1000w depending on how many tiles - are near it that aren't blocked and how much power it's using normally) - - tweak: Huge portable scrubbers (like in toxins storage) now use a 3x3 range rather - then a higher volume rate - - bugfix: Fixed issue with atmos not allowing low levels of plasma to spread - - bugfix: Fixed issue with atmos not adding or removing plasma overlays in some - cases - - tweak: Panic siphon now uses a 3x3 area range rather then increasing the scrubbers - intake rate by 8x - - tweak: Replace air uses 3x3 range for the first stage - - rscadd: 'Air alarms now have 3 new environmental modes:' - - rscadd: Siphon - Panic siphon without the panic, operates on a 1 tile range - - rscadd: Contaminated - Activates all gas filters and 3x3 scrubbing mode - - rscadd: Refill Air - 3 times the normal vent output -2015-07-18: - AlexanderUlanH: - - tweak: Reduced stun duration of tabling to be closer to other stuns. - Iamgoofball: - - tweak: The Bioterror Chemical Sprayer is now filled with a more deadly mix of - chemicals. - RemieRichards: - - tweak: Changelings now regenerate chemicals and geneticdamage while dead, but - only up to specific caps (50% of their max chem storage, and 50 geneticdamage) - - tweak: Fakedeath's length has been reduced from 80s dead (1 minute 20) to 40s - dead - - rscadd: Changelings now get to see the last 8 messages the person they absorbed - said, to allow them to better impersonate their victim's speech patterns - Steelpoint: - - tweak: Reduced weight of Sechailer, it now fits in boxes. - phil: - - tweak: Smoke and foam touch reactions gets buffed. - - rscadd: Reagent dispensers (watertank, fueltank) tells you how much reagents they - have left when examined. - - tweak: Liquid dark matter blob spore smoke now cannot throw you. The effects of - sorium, blob sorium, liquid dark matter and blob liquid dark matter are now - scaled by their volume. Sorium/LDM blob's touch now throws the mobs who are - close but simply moves the mobs that are further away. -2015-07-19: - Gun Hog: - - rscadd: Nanotrasen advancements in cyborg technology now allow for integrated - headlamps! As such, the flashlight package normally used as a module is now - seamlessly merged with their systems! - Ikarrus: - - rscadd: Asimov's subject of "human beings" can now be modified by uploaders. - - rscadd: Eaxmining AI modules while adjacent to them will show you what laws it - will upload. - MMMiracles: - - soundadd: Adds a TWANG sound effect when hitting things with a guitar. -2015-07-20: - AnturK: - - tweak: Lightning Bolt now always bounces 5 times and deals 15 to 50 burn damage - to each target depending on the chargeup - KorPaheron: - - rscadd: Added the Multiverse Sword, a new wizard artifact that can summon clones - of yourself from other universes, allowing for dangerous amounts of recursion. - phil235: - - tweak: Mechs no longer use object verbs and the exosuit interface tab. They now - use action buttons. Mechs now have a cycle equipment action button to change - weapon faster than by using the view stats window. Mechs get two special alerts - when their battery or health is low. Mechs now properly consume energy when - moving and having their lights on. Using a mech tool that takes time to act - now shows a progress bar (e.g. mech drill). - - rscadd: Mechs now have a cycle equipment action button to change weapon faster - than by using the view stats window. - - rscadd: Mechs get two special alerts when their battery or health is low. - - tweak: Mechs now properly consume energy when moving and having their lights on. - - rscadd: Using a mech tool that takes time to act now shows a progress bar (e.g. - mech drill). -2015-07-21: - Fayrik: - - tweak: Syndicate Donksoft gear now costs less. - Xhuis: - - rscadd: Firelocks may now be constructed and deconstructed with standard tools. - Circuit boards can be produced at a standard autolathe. - phil235: - - tweak: Thrown things no longer bounces off walls, unless they're in no gravity. - Heavy items and mobs thrown can push the mobs and non anchored objects they - land on. Throwing a mob onto a mob in no gravity will push each one in opposite - direction. Thrown mobs landing on wall, or dense object or mob gets stunned - and a bit injured. The damage when mob hit a wall is nerfed. -2015-07-23: - NullQuery: - - tweak: 'Crew monitoring: The minimap now supports scaling. You can zoom in and - out using the buttons. Hovering over an entry in the table centers the minimap - on that part of the screen.' - - tweak: 'Crew monitoring: If the window is wide enough the health indicator will - expand to show full health data (if available).' - - tweak: 'Crew monitoring: Clicking on the area name will now copy the coordinates - to your clipboard.' - - tweak: 'Crew monitoring: The AI can view health information again, but there is - a 5 second delay between updates for everyone watching.' - freerealestate: - - rscadd: Added resist hotkeys for borgs and humans. With hotkeys mode, use CTRL+C - or C as a human and CTRL+C, C or END as a borg. With hotkeys mode off, use CTRL+C - as a human and END as a borg. - xxalpha: - - bugfix: Changeling augmented eyesight night vision is now working. -2015-07-24: - Incoming5643: - - rscadd: The spells disintegrate and flesh to stone have had their mechanics changed. - Using these spells will spawn a special touch weapon in a free hand (your dominant - hand if possible) that can then be used to inflict the spell on the target of - your choice. Having the touch weapon out is obvious, this is not a stealth based - change. Clicking the spell while the hand is out will let you return the charge - without using it. - - rscdel: The spell won't begin to recharge until the hand attack is either used - or returned. Additionally these changes mean you can no longer use these spells - while stunned or handcuffed. As a suggestion remember that the mutate spell - allows you to break out of cuffs very easily, and warping abilities will keep - you from getting cuffed to begin with! -2015-07-25: - Dorsisdwarf: - - tweak: Due to a fire sale at Syndicate HQ, many of the more interesting traitor - gadgets have been cut in price dramatically. Please take this opportunity to - make full use, as we cannot guarantee that the sale will last! - bgobandit: - - bugfix: Under pressure from the Animal Rights Consortium, Nanotrasen has improved - conditions at its cat and dog breeding facilities. Cats and pugs are now much - more responsive to their owners. - duncathan: - - tweak: Restores RPD delay on disposals machines. - xxalpha: - - tweak: Agent IDs are now rewrittable. -2015-07-26: - Phil235: - - rscadd: Sechailers will now break when used too often. - - imageadd: Mechs now have new action button sprites. - Steelpoint: - - rscadd: Security Officers now spawn with a security breathmask in their internals - box. - - imageadd: Abductor's batons now changes color with modes. - - imageadd: Unique sprites for Abductor hand cuffs and paper. - goosefraba19: - - imageadd: Updated the Power Monitoring Console with better alignment and colorized - readouts. -2015-07-27: - Bgobandit: - - bugfix: Burgers can now be made from corgi meat again. - Ikarrus: - - rscadd: Added shutters to the armory to allow quick access when needed. - - bugfix: Security can now use the Brig external airlocks. - - rscadd: Added a join queue when the server has exceeded the population cap. - - tweak: Decreased the cost of Body Swap and removed it's genetic damage. - kingofkosmos: - - rscadd: Added a link to re-enter corpse to alert when your body is placed in a - cloning scanner. -2015-07-28: - Anonus: - - imageadd: New gang tags for Omni and Prima gangs. - Chiefwaffles: - - rscadd: After realizing how often AIs tend to 'disappear', Central Command has - authorized the shipment of the Automated Announcement System to take over the - AI's responsibility of announcing new arrivals. - - rscadd: In addition, users are able to configure the messages to their liking. - Early testing has shown that this feature may be vulnerable to malicious external - elements! - - rscadd: The station's R&D software has been updated so it can now succesfully - create its own prototype AAS board once the prerequisite levels have been met. - Dorsisdwarf: - - tweak: Increased the cost of Bioterror darts to 6TC. - Incoming5643: - - experiment: Double Agents no longer know they're Double Agents and not just standard - Traitors. - xxalpha: - - rscdel: Removed Anti-Drop and Nutriment Pump implants from Nuclear Operative's - uplink. -2015-07-29: - AnturK: - - rscadd: Aliens can now mine through asteroid rock. - GunHog: - - tweak: Cyborg headlamps have a short cooldown before reactivation when forcibly - deactivated. - - bugfix: Shadowling's Veil now shuts down headlamps for the ability's entire duration. - Kor: - - rscadd: Eating the heart of a Slaughter Demon will grant you dark powers. - freerealestate: - - bugfix: Fixed bug where copying with ctrl+C didn't work due to it being assigned - to resist. - - rscadd: Changed resist to B (hotkeys mode) and ctrl+B (either mode) instead. - - rscdel: Removed End resist from cyborgs. -2015-07-30: - Gun Hog: - - tweak: The Reactivate Camera power for Malfunctining AIs now costs 10 CPU, and - works on the entire camera network, up to 30 cameras fixed. - - tweak: The Upgrade Cameras power now costs 35 CPU, upgrades all cameras in the - network to have EMP proofing, X-ray, and gives the AI night-vision. - Ikarrus: - - rscadd: Door Access buttons can now be emagged to remove access restrictions. - LordPidey: - - rscadd: Added a new medication, Miner's Salve. It heals brute/burn damage over - time, and has the side effect of making the patient think their wounds are fully - healed. It is mixed with water+iron+oil, or grind a twinkie, a sheet of metal, - and a sheet of plasma. - - rscadd: Added a grinder to the mining station. - Midaychi: - - rscadd: Random loot has been added to the derelict as salvage for drones. - Scones: - - rscadd: Adds a Rice Hat to the biogenerator. -2015-08-02: - Incoming5643: - - rscadd: Syndicate toolboxes now come with never before seen red insulated gloves. - Steelpoint: - - bugfix: Fixed multiple mapping errors for Boxstation and the mining base. - - rscadd: A circuit imprinter and exosuit fabrication board have been added to tech - storage. - SvartaSvansen: - - rscadd: Our lizard engineers have worked hard and managed to improve Centcom airlocks - so they no longer disintegrate when the electronics are removed! - - tweak: Put a safety net in place so future airlocks without assemblies produce - the default assembly instead of disintegrating. -2015-08-04: - Kor: - - rscadd: Soulstones will now attempt to pull ghosts from beyond if the targeted - corpse has no soul. - Summoner99: - - rscadd: Added the *roar emote back to Alien Larva - - bugfix: Fixed aliens not being able to do the *hiss and *screech emotes - - tweak: 'Changed how the plural emote system works and now some emotes have plural - versions, example is: *hiss and *hisses.' -2015-08-05: - CoreOverload: - - rscadd: Implants, implant cases and implanters got RnD levels and can be DA'ed - for science. - - rscadd: Surgically removed implant can be placed into an implant case. Remove - implant with empty implant case in inactive hand. - - rscadd: Surgical steps now got progress bars. - - rscadd: You can cancel a surgery by using drape on operable body part again. This - works only before you perform surgery's first step. - - rscadd: Operating computer shows next step for surgeries. No more alt-tabbing - to view next step on wiki while operating. - - tweak: You cannot start two surgeries on one body part at once. You can start - two multiloc surgeries (i.e. two augumentations) on diffirent body parts at - once. - - tweak: Monkey <-> Human transformations now keep your internal organs, cyberimplants - and xeno embryos included. - Ikarrus: - - rscdel: Head beatings no longer deconvert gangsters. - LordPidey: - - rscadd: 'Added a new chemical. Spray tan. It is made by mixing orange juice with - oil or corn oil. Warning: overexposure may result in orange douchebaggery.' - Xhuis: - - rscadd: Shadowling thralls can now be deconverted via surgery or borging. - - rscadd: Thralls can be revealed by examining them. They can hide this by wearing - a mask. - - rscadd: Thralls have a few minor abilities they can use in addition to night vision. - - rscadd: Hatch-exclusive abilities can no longer be used if you are not the shadowling - mutant race. - - rscadd: Ascendants are now immune to bombs and singularities. Honk. - - rscadd: A Centcom report has been added for shadowlings. - - tweak: Ascending no longer kills all shadowling thralls. This allows antagonists - who were enthralled to succeed along with the ascendants. - - tweak: Annihilate now has different sound and a shorter delay before the target - explodes. In addition, it now works on all mobs, instead of just humans. - - bugfix: Glacial Blast now properly has no cooldown if used while phase shifting. - - bugfix: Fixes a runtime if a target with no mind is enthralled. - bgobandit: - - rscadd: Nanotrasen scientists have achieved the tremendous breakthrough of injecting - gold slime extracts with water. Pets ensued. -2015-08-06: - AnturK: - - rscadd: Adds the voodoo doll as a mining treasure, link it with a victim with - an item previously held by them. - - rscadd: Once linked the voodoo doll can be used to injure, confuse and control - the victim. - Core0verlad: - - tweak: Items can now be removed from storage containers inside storage containers. - - imageadd: Beds and bedsheets have new sprites. - - rscdel: MMIs are no longer ID locked. - KorPhaeron: - - tweak: Slaughter Demon's have had their health reduced to 200 and their speed - reduced but they get a speed boost when exiting blood. - MrPerson: - - rscadd: Items stacks now automatically merge unless thrown when moved onto the - same tile. -2015-08-07: - KorPhaeron: - - rscadd: Added a new Guardian Mob that can be summoned to manifest inside a mob. - - rscadd: Guardians can communicate with their host and materialize themselves to - protect their host with magic powers. - - rscadd: Guardians are invincible but cannot live without or too far from their - host, they also relay injuries they suffer to the host. - Phil235: - - bugfix: Fixed being able to run into your own bullet. - RemieRichards: - - rscadd: You no longer need to click on an item in a storage container to remove - it, clicking anywhere around the item works. - bustygoku: - - rscdel: Removed the chance for a disease to make you a carrier on transfer. - phil235: - - tweak: The plasma cutter's fire rate is now a bit lower but its projectile can - pierce multiple asteroid walls and its range isn't lowered in pressurized environment - anymore. -2015-08-09: - RemieRichards: - - rscadd: 'Nanotrasen Mandatory FunCo Subsidiary: CoderbusGames, would like to announce - an update to Orion Trail!' - - rscadd: 'Spaceports: Buy/Sell Crew, Trade Fuel for Food, Trade Food for Fuel, - Buy Spare Electronics, Engine Parts and Hull Plates, or maybe you think you''re - tough enough to attack the spaceport?' - - rscadd: 'Changelings: Changelings can now sneak into your crew, Changelings eat - double the standard food ration and have a chance to Ambush the rest of the - crew!' - - rscadd: 'Kill Crewmembers: Do you suspect changelings? or dont feel you have enough - food rations? Just shoot somebody in the head, at any time!' -2015-08-12: - CosmicScientist: - - rscadd: Added Space Carp costume to the code, get it from an autodrobe near you. - - rscadd: Added Ian costume to the code, take his place under the HoP's hand, get - it from an autodrobe or corgi hide, keep it away from washing machines or it'll - meat its end as clothing. - - rscadd: Added Space Carp spacesuit to the code, I know what I'm praying for. - bgobandit: - - rscadd: After multiple complaints from WaffleCo food activists, Nanotrasen has - added real chocolate, berry juice and blue flavouring to its ice cream products. -2015-08-13: - CoreOverload: - - rscadd: 'Added a new 8TC traitor item: subspace storage implant. It allows you - to store two box-sized items in (almost) undetectable storage. ' - - tweak: Changed the way most of the surgical operations work. See wiki for new - steps. - - tweak: You can cancel step 2+ surgeries with drapes and cautery in inactive hand. - - tweak: Defib no longer works on humans who have no heart. Changeling/thrall/cult/strange - reagent revives are still working, and this is intended. - - rscadd: You can eat all organs raw now, with exception for brains and cyberimplants. - - rscadd: Some xenos abilities are linked to their organs. Play with xenos' guts - for fun and profit! - RemieRichards: - - rscadd: Modifying a string (Text) variable with View Variables or View Variables - Mass Modify now allows you to embed variables like real byond strings, For example - the variable real_name; you could set a text var to [real_name] and it would - be replaced with the actual contents of the var, This allows for Mass fixing - of certain variables but it's also useful for badmin gimmickery -2015-08-15: - Miauw: - - rscadd: Changeling transformations have been upgraded to also include clothing - instead of just DNA. - - tweak: Patches no longer work on dead people. - - rscadd: Added 15-force edaggers that function like pens when off. - MrPerson: - - rscadd: Objects being dragged will no longer get shoved out of your grasp by space - wind. Retrieving dead bodies should be possible. - RemieRichards: - - rscadd: Added Changeling Team Objectives, these are handed out to all lings, with - the chance of a round having one being 20*number_of_lings% (3 lings = 60%) - - rscadd: 'Impersonate Department (Team Objective): As many members of a department - as can reasonably be picked are chosen for the lings to kill, replace and escape - as' - - rscadd: 'Impersonate Heads (Team Objective): 3 to 6 Heads of Staff are chosen - for the lings to kill, replace and escape as' - - tweak: If the Changelings have a Team Objective, their usual Kill, Maroon, Etc. - objectives will not pick other changelings, to discourage backstabbing in teamling - - tweak: Changeling Engorged Glands is now the default storage and regen rate, Engorged - Glands remains for an extra boost - - rscadd: Armblades can now be used to open powered doors, however it takes 10 seconds - of the changeling standing still, Their ability to instantly open unpowered - doors remains unchanged - - rscdel: Debrain objective is no longer handed out to lings, it's as good as broken - these days - - rscadd: Changelings may now purchase a togglable version of the Chameleon Skin - genetics mutation, for 2 DNA -2015-08-16: - Joan: - - rscadd: Revenants will now occasionally spawn as an event. - - tweak: Revenants gain more energy from Harvesting, and can Harvest from people - in crit. - - tweak: Revenant powers are more effective, and no longer freeze you in place, - besides Harvest. - - tweak: Slain Revenants will respawn much faster. - - bugfix: Fixed a whole bunch of revenant bugs, including one that caused the objective - to always fail. - Kor: - - rscadd: The wizard can now stop time. - MMMiracles: - - tweak: Revamps bioterror darts into a less-lethal, syringe form. Removed the coniine - and spore toxins to keep it solely for quiet take-downs. -2015-08-18: - CoreOverload: - - rscadd: Added a new low-tech eye cyberimplant in RnD - welding shield implant. - - rscadd: Implanter and empty implant case added to protolathe. - - rscadd: You can sell tech disks and maxed reliability design disks in cargo for - supply points. - - tweak: DA menu shows current research levels. - - tweak: You can print cyberimplants in updated mech fab. - Supermichael777: - - bugfix: Added an ooc hotkey for borgs = O. They simply didn't have one and it - was a consistency issue - - rscadd: Also added Ctrl+O as an any mode keycombo so you dont have to backspace - and type ooc. Added to hotkey mode to remain consistent with all other Ctrl - combos - bustygoku: - - tweak: Most backpacks now have 21 or more slots, but are still weight restricted. - What this means is that you can have a lot of tiny weight items, but only 7 - medium items just like before. - phil235: - - tweak: Janicart rider no longer slip on wet floor or bananas. Moving on a floor - tile with lube while buckled (chair, roller bed, etc) will make you fall off. -2015-08-19: - Joan: - - rscadd: Added a new revenant ability; Malfunction. It does bad stuff to machines. - - tweak: Defile and Overload Lights now briefly stun the revenant. - - tweak: You can now Harvest a target by clicking on them while next to them. - - bugfix: Harvesting no longer leaves you draining if the target is deleted mid-drain - attempt. - - rscdel: Defile no longer emags bots or disables cyborgs, Malfunction does that - now. - Kor: - - rscadd: The Ranged and Scout guardian types have been merged, and gained a new - surveillance snare ability. - SconesC: - - rscadd: Added Military Belts to traitor uplinks. - bgobandit: - - rscadd: CentComm now offers its cargo department toys, as well as detective gear - so their boss can figure out which tech wasted all the points on them. - phil235: - - rscadd: You can now partially protect yourself from blob attack effects by wearing - impermeable clothes like hardsuits, medical clothes, masks, etc. Max protection - effect is capped at 50%. - - rscdel: Splashing someone with chemicals no longer injects those chemicals in - their body. - - bugfix: Fixes splashing acid on items or floor with items not having any effect. -2015-08-28: - bgobandit: - - bugfix: 'Overheard at CentComm: ''This burn kit said salicyclic acid would heal - my burns! WHO MADE THIS SHIT?'' A muffled honking is heard in the background. - (Burn first-aid kits now contain an appropriate burn pill.)' - - rscadd: Oxandrolone, a new burn healing medication, has been added to burn first-aid - kits and to chemistry. Ingesting 25 units or more causes burn and brute damage. -2015-09-01: - Dorsidwarf: - - tweak: Changelings' Digital Camoflague ability now renders them totally invisible - to the AI - ExcessiveUseOfCobblestone: - - rscadd: Added health analyzer to the autolathe. - - tweak: Moved Cloning board to Medical Machinery section. - - tweak: Moved Telesci stuff to Teleporter section. - Fox P McCloud: - - tweak: Adds the emitter board to to the circuit imprinter for R&D. - Gun Hog: - - tweak: The Disable RCD Malfunction power is now Destroy RCDs! It costs 25 CPU - (down from 50), causes RCDs to explode, can be used multiple times, and no longer - affects cyborgs. - Kor: - - rscadd: Revheads and Gang leaders now spawn with chameleon security HUDs, for - keeping track of loyalty implanted crew. - - rscadd: Syndicate thermals now have a chameleon function as well, allowing you - to disguise the goggles to match your job. - Miauw: - - tweak: Edaggers actually work now and have been buffed to 18 brute and 2 TC. - Oisin100: - - rscadd: Nanotransen discover ancient human knowledge confirming that trees produce - Oxygen From Carbon Dioxide - - tweak: Trees now require Oxygen to live. And will die in extreme temperatures - Xhuis: - - rscadd: The arcade machines have been stocked with a xenomorph action figure that - comes with realistic sounds! - - rscadd: Darksight now has its own icon. - - rscadd: Empowered thralls have been added. While obvious, they are more powerful - and can resist dethralling while conscious. Only 5 can exist at one time. - - rscadd: Shadowlings can now change their night vision radius by using the action - button their eyes (glasses) now provide. - - tweak: Torches are dimmer, being as bright as flashlights, and no longer fit on - belts. - - tweak: Black Recuperation now has a 1 minute cooldown, down from 5. It can also - be used to empower living thralls. - - tweak: Guise can now be used outside of darkness and makes the user more invisible - than before. - - bugfix: Enthrall now functions properly when a shadowling is not hatched, allowing - them to enthrall up to 5 people before hatching. - xxalpha: - - tweak: Blood crawling is now a spell. - - rscadd: Engineering cyborgs now have a constant magpulse. - - tweak: Changed foam spreading to be like gas spreading. -2015-09-05: - Shadowlight213: - - rscadd: The syndicate have taken notice of the camera bug's woeful underuse, and - have managed to combine all of its upgrades into one! -2015-09-06: - Fox P McCloud: - - bugfix: Fixes gold sheets having plasma as their material. - Xhuis: - - bugfix: Nanotrasen inspectors have discovered a fault in the buckles of chairs - and beds. This has been fixed and you are now able to buckle again. -2015-09-07: - xxalpha: - - tweak: Changed xeno weed spread to be like gas spread. -2015-09-09: - Joan: - - rscadd: New blob chemical; Cryogenic Liquid. Cools down targets. - - tweak: Tweaked names, colors, and effects of remaining blob chemicals; - - tweak: Skin Ripper is now Ripping Tendrils and does minor stamina damage, in addition - to the brute damage. - - tweak: Toxic Goop is now Envenomed Filaments and injects targets with spore toxin - and causes hallucinations, in addition to the toxin damage. - - tweak: Lung Destroying Toxin is now Lexorin Jelly and does brute damage instead - of toxin damage. The oxygen loss it causes can also no longer crit you in one - hit. - - tweak: Explosive Gelatin is now Kinetic Gelatin and does random brute damage, - instead of randomly exploding targets. - - rscdel: Skin Melter, Radioactive Liquid, Omnizine, and Space Drugs blob chemicals - are gone. - bgobandit: - - rscadd: Nanotrasen has commissioned two new corporate motivational posters for - your perusal and edification. - - rscadd: Nanotrasen also wishes to remind the crew that non-authorized posters - ARE CONTRABAND. Especially those new ones with Rule 34. Perverts. -2015-09-11: - CosmicScientist: - - tweak: Drone dispenser now has a var for its cooldown, get var editing. -2015-09-13: - Fox P McCloud: - - bugfix: Fixes an exploit and inconsistency issue with a few material amounts on - a few items and designs. - - bugfix: Fixes Bibles/holy books not properly revealing runes. - - bugfix: fixes stimulants not properly applying its speedbuff. - Gun Hog: - - tweak: Nanotrasen scientists have proposed a refined prototype design for the - nuclear powered Advanced Energy guns to include a taser function along with - the disable and kill modes. Addtionally, they have modified the chassis blueprint - to include a hardpoint for attachable seclites. - Iamgoofball: - - tweak: Reduced the cost of changeling armor to 1 and increased it's armor values. - Jordie0608: - - rscadd: You can now view the reason of a jobban from character setup. - xxalpha: - - rscadd: Drying agent splashed on galoshes will turn them into absorbent galoshes - that dry wet floors they walk on. - - rscadd: Drying agent can be made with ethanol, sodium and stable plasma. -2015-09-14: - Fox P McCloud: - - tweak: Adds a mining voucher to the Quartermaster's locker. - Thunder12345: - - rscadd: The captain has been issued with a new jacket for formal occasions. - - tweak: Research has shown that is is possible to build technological shotshells - without the need for silver. The design blueprints supplied to your station - have been updated accordingly. - xxalpha: - - bugfix: Fixed not being able to grab things from storage while inside aliens. - - bugfix: Fixed two progress bars when devouring. - - rscadd: Shields will now block alien hunter pounces. - - tweak: Alien hunters health reduced to 125 from 150. Alien sentinels health increased - to 150 from 125. - - tweak: Alien hunters will no longer be transparent when stalking, this ability - was given to alien sentinels. - - tweak: Alien slashing now deals constant 20 damage but has a chance to miss. - - tweak: Reduced alien disarm stun duration vs cyborgs, from 7 seconds to 2 seconds. - - tweak: Alien sentinels now move as fast as humans. - - tweak: Facehuggers and alien eggs layers increased to be higher than resin walls. -2015-09-16: - Razharas: - - tweak: Replaces the space cube with space torus. Space levels are now each round - randomly placed on the grid with at least one neigbour, any side of the space - level that doesnt have neigbour will loop either onto itself or onto the opposite - side of the furthest straight-connected space level on the same axis. - Supermichael777: - - tweak: The detomax pda cartridge no longer blows its user up. - Xhuis: - - experimental: Cultists will now be able to create all runes without needing to - research or collect words. This is subject to change. - - tweak: Cult code has been significantly improved and will run much faster and - be more responsive. - - tweak: Conversion runes can now be invoked with less than three cultists, but - take a small amount of time to convert the target. - - tweak: Armor runes will only outfit the user with standard armor, rather than - having different loadouts for different worn clothing items. - - tweak: Astral Journey runes will now pull the user back to the rune if they are - moved. The user also has a different color while on the rune. - - tweak: Free Cultist has been removed. Summon Cultist now works even if the target - is restrained. - - tweak: Sacrifice and Raise Dead runes now offer more precise target selection. - - soundadd: Sacrifice runes now have different sounds, and gib rather than dust - (assuming the target is not a silicon). - - tweak: There is no longer a maximum cap on active runes. - - tweak: Runes have been renamed to Rites. For instance, the Teleport rune is now - the Rite of Translocation. The only exception to this is the rune to summon - Nar-Sie, which is a Ritual. - - tweak: Nar-Sie now has a new summon sound. - - tweak: The Nar-Sie summon rune has a new 3x3 sprite. - - tweak: The stun rune no longer stuns cultists. - - rscadd: The Rite of False Truths had been added, that will make all nearby runes - appear as if they were drawn in crayon. - - rscadd: Runes can now be examined by cultists to determine their name, function, - and words. - phil235: - - tweak: Riot and energy shield users now have a chance to block things thrown at - them as well as xeno leaping at them. -2015-09-17: - bgobandit: - - rscadd: Meatspikes can now be constructed and deconstructed with metal and rods, - as well as wrenched and unwrenched! Humans and corgis can be used on them as - well. - xxalpha: - - tweak: 'Reworked nuke deconstruction: Standardized steps, partial reparation (use - metal) to contain radiation.' - - rscadd: New portable nuke, self-destruct terminal, syndie screwdriver sprites - by WJohnston. -2015-09-19: - Xhuis: - - rscadd: Shadowlings are now able to sacrifice a thrall to extend the shuttle timer - by 15 minutes. This will not stack. - - bugfix: Additional abilities granted by Collective Mind will now properly have - icons. - - bugfix: Shadowlings now have their antagonism removed if turned into a silicon. - - tweak: The order of abilities unlocked by Collective Mind has been changed. It - now starts with Sonic Screech. - - tweak: Veil now destroys glowshrooms in a much larger radius than before. -2015-09-20: - Xhuis: - - tweak: Rites have been renamed to their old runes, which reflect their functionality. - - tweak: Examining a talisman no longer opens the paper GUI. - - tweak: Armor talismans have been re-added. - - tweak: EMP talismans now have the same range as their rune counterpart. - - tweak: Some talismans now cost health to use, costing more or less depending on - their effect. - - tweak: Scribing runes now deals 0.1 brute damage instead of 1. - - tweak: Bind Talisman runes no longer deal 5 brute damage when invoking. - - tweak: Rune shapes and colors are now identical to their old versions. - - tweak: Conversion runes can no longer be used by yourself, and require a static - 2 cultists. -2015-09-22: - Kor: - - rscadd: A new admin command, Offer Control to Ghosts, can be found in the view - variables menu. It will randomly select a willing candidate from among dead - players, providing a fair method of replacing antagonists. - Xhuis: - - tweak: When a morph changes form, a message is shown to nearby people. This also - happens upon undisguising. - - tweak: Morphs now have an attack sound and message. - - tweak: The Spawn Morph event now plays a sound to the chosen candidate. - - tweak: Slaughter demons (and other creatures with blood crawl) now take two seconds - to emerge from blood pools. Entering is still instantaneous. - - tweak: The demon heart's sprite has been updated. - - tweak: Eating a demon heart now surgically implants the heart into your chest. - If the heart is removed from you, you lose the ability. Someone else can eat - the heart to gain the ability. - - tweak: Blood Crawl no longer has a 1-second cooldown, instead having none. - - tweak: You can no longer hold items when attempting to Blood Crawl, nor can you - use any items while Blood Crawling. - - tweak: Creatures that can Blood Crawl now take two seconds to emerge from blood - pools. - - tweak: Slaughter demons now store devoured creatures, and will drop them upon - death. - - tweak: Revenants now have the ability to speak to the dead. - - tweak: Revenant abilities now have icons. - - tweak: Malfunction no longer EMPs a specific area - it will instead EMP nearby - machines directly and stun cyborgs. Dominators are immune to this. - - tweak: Revenants now have directional sprites. - - tweak: Overload Lights now has a smaller radius. - - tweak: Defile no longer corrupts tiles. - - tweak: When glimmering residue reforms, the game will attempt to place the old - revenant in control of the new one. If this cannot be done, it will find a random - candidate. - - tweak: Revenants can no longer see ghosts. They can see other revenants, however, - and ghosts can still see revenants. - - tweak: The Spawn Slaughter Demon event now plays a sound to the chosen candidate. - phil235: - - rscdel: Lizards and other non human species can no longer acquire the hulk mutation. - Hulks no longer have red eyes - - bugfix: Monkeys now always have dna and a blood type (compatible with humans). - - bugfix: Monkey transformation no longer deletes the human's clothes. - - bugfix: Space Retrovirus now correctly transfers dna SE to the infected human. - - bugfix: Changeling's Anatomic Panacea removes alien embryo again. - - bugfix: Cloning someone now correctly sets up their dna UE. - - bugfix: Fixes the laser eyes mutation not giving glowing red eyes to the human. - - bugfix: Using changeling readaptation now properly removes all evolutions bought - (arm blade, chameleon skin, organic suit). - xxalpha: - - rscadd: Added a researchable cyborg self-repair module to the robotics fabricator. -2015-09-23: - Xhuis: - - rscadd: Syndicate medical cyborgs have been added. - - rscadd: The Dart Pistol is now available from the uplink for 4 telecrystals. It - functions as a pocket-sized syringe gun with a quieter firing sound. - - tweak: Boxes of riot foam darts now cost 2 telecrystals, down from 10, and are - available to traitors. - - tweak: Foam dart pistols now cost 3 telecrystals, down from 6. - - tweak: Syndicate cyborg teleporters now allow a choice between Assault and Medical - cyborgs. - - tweak: Syndicate cyborgs are now distinguished as Syndicate Assault. - - tweak: Syndicate cyborg energy swords now cost 50 energy per use, down from 500. - - tweak: Airlock charges now cost 2 telecrystals, down from 5. - - tweak: Airlock charges are much more powerful. - - tweak: There is no longer a 25% chance to detonate an airlock charge while removing - it. - - tweak: The description of many uplink items has been changed to better reflect - their use. -2015-09-24: - Jordie0608: - - tweak: Advanced energy guns now only critically fail after successive minor failures. - Cease firing after multiple recent minor failures to avoid critical ones. - Kor: - - rscadd: Guardian Spirit types and powers have been heavily reworked. Full details - of each type are available on the wiki. - - rscadd: Guardian damage transfer to users now deals cloneloss if their user is - in crit. - - rscadd: Guardians are now undergoing a trial run in the traitor uplink, under - the name of Holoparasites. - - rscadd: You can now hang human mobs (dead or alive) from meatspikes. Escaping - the meatspike will further damage the victim. - - rscdel: You can no longer slam humans into the meatspike as an attack. -2015-09-25: - Xhuis: - - rscadd: Changelings have a new ablity, Biodegrade. Costing 30 chemicals and having - an unlock cost of 1, it allows them to dissolve handcuffs and straight jackets - in 3 seconds, and escape from lockers in 7. - - tweak: Fleshmend's effectiveness is now halved each time it is used in a short - time span. - - tweak: Last Resort now blinds and confuses nearby humans and briefly disables - silicons upon use. - - tweak: Headslugs now have 50 health, up from 20. -2015-09-26: - MMMiracles: - - rscadd: Nanotrasen's genetic researchers have rediscovered the inactive dwarfism - genetic defect inside all bipedal humanoids. Suffer not the short to live. - WJohnston: - - tweak: Repiped the entire station. Atmosia and the disposals loop were not touched. - - tweak: Moved mulebot delivery from misc lab to RnD. -2015-09-28: - Feemjmeem: - - bugfix: Rechargers can now be wrenched and unwrenched by cyborgs. - - bugfix: Rechargers no longer stop working forever if you move them from an unpowered - area to a powered area, and now actually look powered off when they are. - - bugfix: Guns and batons can no longer be placed in unwrenched chargers. - Razharas: - - rscadd: Added button to preferences menu that kills all currently playing sounds - when pressed, now you can kill midis and any other sounds for real. - phil235: - - bugfix: Fixed the syndicate cyborg's grenade launcher. - - tweak: You can modify the dna of corpses again. -2015-09-29: - Kor: - - bugfix: The Chaos holoparasite can now actually set people on fire properly. - - tweak: Guardian powers are now used via alt+click rather than shift+click. - - tweak: Added an alert chime for ghosts when someone is summoning a Guardian. -2015-10-04: - Fox P McCloud: - - tweak: Adds a bar of soap to the janitor's locker. - - rscadd: Re-adds the advanced mop as a researchable R&D item. - - rscadd: Adds a bluespace trashbag as a researchable R&D item; can hold large quantities - of garbage. - Jordie0608: - - rscadd: Added Special Verb 'Create Poll', an in-game interface to create server - polls for admins with +permissions. - MrPerson: - - rscdel: Removed NTSL. Sorry. People could write scripts that crashed the server, - and this is the only thing that can be done to prevent them from doing that. - MrStonedOne: - - rscdel: Removed feature where quick consecutive ghost orbits while moving could - be used to fuck with your sprite - - bugfix: Fixed ghosts losing floating animation when returning from an orbit - - bugfix: Fixed logic error that prevented orbit's automatic cancel when the orbiting - thing moved in certain situations. - - rscadd: Ghost Orbit size now changes based on the icon size of the thing they - are orbiting (for that sweet sweet singulo orbiting action) - - tweak: Removed needless checks in ghost orbit, you can now orbit yourself and - restart an orbit around the thing you are already orbiting - Xhuis: - - rscadd: Syndicate Medical cyborgs now have cryptographic sequencers. - - rscdel: Syndicate Medical cyborgs no longer have syringes. - - tweak: Restorative Nanites now heal much more damage per type. - - bugfix: Operative pinpointers now actually point toward the nearest operative. - - bugfix: Syndicate Assault cyborgs no longer start with medical supplies. - - bugfix: Energy saws now have a proper icon. - - bugfix: Non-operatives can now longer use operative pinpointers or Syndicate cyborg - teleporters. - - tweak: Doctor's Delight now requires cryoxadone in its recipe instead of omnizine. - - tweak: Doctor's Delight now restores half a point of brute, burn, toxin, and oxygen - damage per tick. - - tweak: Doctor's Delight now drains nutrition while it's in your system (that is, - unless you're a doctor). - - bugfix: Syndicate roboticists have given Syndicate medical cyborgs sharper hypospray - needles - they are now able to penetrate armor. -2015-10-06: - Gun Hog, for WJohnston: - - rscadd: 'Add new Xenomorph caste: The Praetorian. Drones may become this on their - way to growing into a full queen, and a queen may promote one if there is not - one already.' - - tweak: Xenomorph queens are now GIGANTIC, along with the new Praetorian. Together, - they are considered royals. - - tweak: Queens are now significantly tougher to make up for their huge size. - - bugfix: All forms of dead xenomorph may now be grabbed and placed on a surgery - table for organ harvesting! - Xhuis: - - rscadd: Maintenance drones now have a more descriptive message when examined. - - tweak: A recent Nanotrasen firmware update to drones has increased vulnerability - to foreign influences. Please periodically check drones for abnormal behavior - or status LED malfunction. Note, however, that cryptographic sequencers will - not incur this behavior. - - tweak: In response to complaints about rogue drones, Nanotrasen engineers have - allowed factory resets on all drones by simply using a wrench. - - experiment: Central Command reminds drones to immediately retreat, if possible, - when a law override is begun. Not doing so may anger the gods and incur their - wrath! - - rscadd: Some virus symptoms that had no messages now have them. - - rscadd: 'New virology symptom: Weakness. This will cause stamina damage and fainting - spells.' - - tweak: Many virus symptom messages have been changed to be more threatening. -2015-10-07: - Kor: - - rscadd: The alien queen can now perform a tail sweep attack, throwing back and - stunning all nearby foes. -2015-10-13: - AnturK: - - rscadd: Display cases can now be built using 5 wood planks and 10 glass sheets. - - rscadd: Add airlock electronics to open it with id later, otherwise you'll have - to use crowbar - - tweak: Broken display cases can be fixed with glass sheets or removed using crowbar - - tweak: Added start_showpiece_type variable for mappers to create custom displays - - rscadd: Syndicate Lone Operatives spotted near the nanotrasen stations! Keep the - disk safe! - - tweak: Admin spawned nuclear operatives will now have access to nukeop equipment - Gun Hog: - - rscadd: Nanotrasen's research team has released a new, high tech design for Science - Goggles, which previously did nothing! They new come fitted with a portable - scanning module which will display the potential research data gained from experimenting - with an object. Nanotrasen has also released drivers which shall enable the - prototype hardsuit's built in scan visor. - - rscadd: Supporting this new design, Nanotrasen has seen fit to provide blueprints - for Science Goggles to the station's protolathe. - Kor: - - tweak: Gang implanters now only break implants/deconvert gangsters, meaning you - will have to use a pen to convert them afterwards. - - rscadd: An important function, accessible via alt+click, has been restored to - the detectives hat. - - sounddel: When Nar-Sie is created, they now use the old sound effect. - Steelpoint: - - rscadd: The Chief Medical Officers 'Medical Hardsuit' has been added to the CMO's - office. Boasts the usage of lightweight materials allowing fast movement while - wearing the suit as well as complete biological protection to airborne and similar - pathogens. - - rscadd: The Head of Security's personal 'HoS Hardsuit' has been added to the HoS's - office. This Hardsuit is slightly more armored than the regular Security Hardsuit. - - rscadd: The Research Directors 'Prototype Hardsuit' has been added to the RD's - office. This Hardsuit offers the highest levels of protection against explosive, - as well as biological, attacks, as well as fireproofing. - - rscdel: The Command EVA space suits, due to budget concerns, have been removed - and reloacted to another space station. - Xhuis: - - rscdel: All instances of autorifles have been removed from Security. - - rscadd: The armory has been re-mapped. - - tweak: The spell book has received a rebalancing! There are now ten uses by default, - but most spells cost two uses. Some underused spells, like Blind, Smoke, and - Forcewall, only cost a single use. - - experiment: After searching through the Sleeping Carp's ancient monastery in deep - space, more secrets have been uncovered of their traditional fighting techniques. - - tweak: Members of the Sleeping Carp gang are now able to deflect all ranged projectiles. - - tweak: Members of the Sleeping Carp gang are now uanble to use any type of ranged - weaponry. Doing so would be dishonorable. - - tweak: The Sleeping Carp martial art's effects are more damaging, and many stuns - have been increased in duration. - phil235: - - bugfix: Fixes critical bug causing multiple hits from single projectile. - - bugfix: Fixes not being able to shoot a mob on same tile as the shooter. - - bugfix: Clicking your mob (without targeting your mouth) no longer causes you - to shoot yourself. - - bugfix: Fixes not being able to shoot non human mobs at point blank. - - rscdel: Morphs no longer automatically drop the things they swallowed, you have - to butcher their corpse to retrieve their contents. - - bugfix: butchering a corpse no longer also attacks it. - - rscdel: Dipping cigarette (to asbsorb liquids) in a glass can now only be done - with an unlit cigarette. Lit cigarette now heats up the glass content (like - other heat sources). - - bugfix: Fixes trashbag not being able to pickup drinks and ammo casings. - - tweak: Slimes now attaches themselves to mobs via buckling. -2015-10-16: - MrStonedOne: - - rscadd: Added a reconnect option to the file menu. This will allow you to reconnect - to the game server without closing and re-opening the game window. This should - also prevent another byond ad from playing during reconnections. - Xhuis: - - rscadd: A gamebreaking bug has been fixed with buckets. You can now wear them - on your head. - bgobandit: - - rscadd: The Grape Growers Consortium has complained that Nanotrasen kitchens do - not use their products enough. HQ has come up with a few recipes to pacify them. - Goddamn winos. -2015-10-19: - AnturK: - - rscadd: Handheld T-Ray Scanners now detect critters in pipes. - Kor: - - tweak: Weapons and projectiles that are armour piercing now have an increased - chance to bypass riot shields. - - tweak: Slipping on lube now deals slightly more damage, but is concentrated on - a random body part, rather than spread to your entire body. - - tweak: Slipping on water no longer deals damage - - rscadd: You can now attach grenades and C4 to spears to create explosive lances. - This is done via table crafting. Alt+click the spear to set a war cry. - Shadowlight213: - - rscadd: In response to reports of stranded drones, Nanotrasen has added magnets - to drone legs. They are no longer affected by lack of gravity or spacewind! - - bugfix: Drones can now set Airlock access on RCDs. - bgobandit: - - rscadd: Nanotrasen loves recycling! In the highly unlikely occasion that your - space station accumulates gibs, scoop 'em up and bring them to chemistry to - recycle into soap, candles, or even delicious meat product! - - rscadd: L3 biohazard closets now contain bio-bag satchels for the safe collection - of biowaste products, such as slime extracts. - phil235: - - rscdel: Removing Smile, Swedish, Chav and Elvis mutations from genetics. These - mutation can still be acquired via adminspawned dna injector. - - rscadd: Added a dna injector for laser eyes mutation for admin use. - - bugfix: Fixes winter coat hood sprite appearing as a bucket. - - bugfix: Fixes using razor on non human shaving non existent hair. - - bugfix: Fixes chair deconstruction dropping too much metal. - - bugfix: Fixes snapcorn not giving seeds. - - bugfix: Fixes portable chem dispenser. - - tweak: Changing the transfer amount of all reagent containers (beaker, bucket, - glass) is now done by clicking them, similar to spray. Reagent dispensers (watertank, - fueltank, pepperspray dispenser) no longer have their own transfer amounts and - use the reagent container's transfer amount instead (except for sprays which - get 50u for faster refilling). -2015-10-23: - Incoming5643: - - rscadd: 'Syndicate bomb payloads will now detonate if set on fire long enough. - Note that the casings for the bombs is fireproof, so if you want to set fire - to a bombcore you''ll need to remove it from the case first (cut all wires, - then crowbar it out). A reassurance from our explosives department: it is, and - always has been, impossible to detonate a syndicate bomb that isn''t ticking - with wirecutters alone.' - Xhuis: - - rscadd: Geiger counters have been added and are obtainable from autolathes and - EngiVends. They will measure the severity of radiation pulses while in your - pockets, belt, or hands. One can scan a mob's radiation level by switching to - Help intent and clicking on it. These counters never really discard the radiation - they store, and rumor has it this can be used in nefarious ways... - - tweak: When a mob is impacted by radiation, the radiation is now relayed to all - items on the mob. -2015-10-24: - Kor: - - rscadd: The friendly gold slime reaction now spawns three mobs. - phil235: - - tweak: Changed the effects of alcohol to be more realistic. The effects of alcohol - now appear twice as fast. Drunkenness now scales with how much alcohol is in - you, not how long you've been drinking. This means drinking very little but - continuously no longer makes you very drunk, or confused/slurring for a long - time or give you alcohol poisoning. The dizziness and slurring effects now properly - scale with how drunk you are (and dizziness is generally more pronounced). -2015-10-25: - Incoming5643: - - rscadd: The spell Charge has been added to the spellbook. It can be used to extend - the life of magic and energy weapons and even reset the cooldowns of held wizards! - It cannot reset your own cooldowns. - - rscadd: The Staff of Healing has been added to the spellbook. Heals all damage - and raises the dead! Can't be used on yourself however. - - bugfix: The exploit that allowed you to use the staff of healing on yourself by - suicide has been fixed. - Jordie0608: - - rscadd: You can now selectively mute non-admin players from OOC with the Ignore - verb in the OOC tab. - Tkdrg: - - rscadd: Added chainsaws. They can be tablecrafted using a circular saw, a plasteel - sheet, some cable coil, and a welding tool. Don't forget to turn it on! -2015-10-26: - Fox P McCloud: - - tweak: Standardizes the slowdown of most spacesuits to 1 as opposed to 2. - Incoming5643: - - rscadd: 48x48 pixel mode (x1.5 zoom) has been added to the Icons menu (top left). - While playing in 32x32 or 64x64 will still provide a clearer looking station, - for those of us with resolutions that fall into the gap between the two zooms - this can provide a more consistant looking station than stretch to fit. - - rscadd: 96x96 pixel mode (x3 zoom) has also been added for our players who enjoy - looking at spacemen on their 4k monitors at a crisp and consistent scale. - - tweak: The lich spell has been subjected to some gentle nerfing. When you die - a string of energy will tie your new body to your old body for a short time, - aiding others in determining your location. The duration of this beam scales - with the number of deaths you've avoided. - - tweak: Additionally the post revival stun now also scales in this way. - - tweak: The spell will also fail if the item and the wizard don't share the same - z level, though the nature of space means the odds of the item (or the wizard) - looping around back to the station is pretty high. - - rscadd: The spell is still really good. -2015-10-27: - Joan: - - bugfix: You can now click on things under timestop effects, instead of clicking - the effect and looking like a fool. - Kor: - - rscadd: Added a zombie mob that turns its kills into more zombies. Currently adminspawn - and xenobio only. - - rscadd: Using water with a red slime extract will now yield a speed potion. Using - the speed potion on an item of clothing will paint it red and remove its slowdown. - MrStonedOne: - - rscadd: You may now access the setup character screen when not in the lobby via - the game preferences verb in the preferences tab - - rscadd: The round end restart delay can now be configured by server operators. - New servers will default to 90 seconds while old servers will default to the - old 25 seconds until they import the config option to their server. -2015-10-28: - Tkdrg: - - rscadd: Added a Ghost On-screen HUD. It can be toggled using the "Toggle Ghost - HUD" verb. Thank you Razharas for the sprites! - - rscadd: Ghosts can now use the "Toggle med/sec HUD" verb to see the basic secHUD - (jobs only) or the medHUD of humans. - - rscadd: Ghost will now get clickable icon alerts from events such as being put - in a cloner, drones being created, Nar-sie being summoned, among others. The - older chat messages were kept. These alerts can not be toggled. -2015-10-29: - Kor: - - tweak: Slightly changed what items spawn on the captain vs in his locker, hopefully - saving some annoying inventory shuffle at roundstart. -2015-10-30: - Incoming5643: - - rscadd: Slimepeople can now split if they contain 200 units of slime jelly, and - slimepeople will now slowly generate slime jelly up to 200 units provided they - are very well fed. Split slimepeople are NOT player controlled, but rather the - original slime person can swap between the two mobs at will. If one of the slimepeople - should die under player control, the player won't be able to swap back to their - living body. Splitting only creates a new body, any items you have on you are - not duplicated. - - rscadd: Slimepeople now take half damage from sources of heat, but double damage - from sources of cold. Lasers good, Space bad. -2015-11-01: - Gun Hog: - - rscadd: Nanotrasen listens! After numerous complaints and petitions from Security - personnel regarding energy weapon upkeep, we have authorized the construction - and maintenance of your station's weapon rechargers. As an added bonus, we have - also provided a more modular design for the devices, allowing for greater recharge - rates if fitted with a more efficient capacitor! - - rscadd: Added Diagnostic HUDs! They can be used to view the health and cell status - of borgs and mechs. Silicons have them built in, Roboticists get two in their - locker, and the RD's hardsuit has one built in. - Incoming5643: - - rscadd: The number of roundstart head revolutionaries nows depends on the roundstart - security force as well as the roundstart heads - - rscadd: The maximum number of head revs is 3, the minimum is 1. If there is fewer - than three station heads there will never be more than that number of head revs - at roundstart. For every three vacant security roles (Head of Security/Warden/Security - Officer/Detective) at roundstart the number of starting head revs will be reduced - by 1. - - rscadd: Head revolutionaries can be gained during play if the security/head roles - are filled. They are drawn from existing revolutionaries. - - rscadd: Added dental implant surgery. While targeting the mouth drill a hole in - a tooth then stick a pill in there for hands free later use. - Kor: - - rscadd: Added an experimental control console for Xenobiology. Ask the admins - if you'd like to try it out. It may not work on maps other than Box if they - have renamed the Xenobiology Lab. - - rscadd: Injecting blood into a cerulean slime will yield a special one use set - of blueprints that will allow you to expand the territory your camera can cover. - Kor and Remie: - - rscadd: Added as series of laser reflector structures, the frame of which can - be built with 5 metal sheets. - - rscadd: Completing the frame with 5 glass sheets creates a mirror that will reflect - lasers at a 90 degree angle. - - rscadd: Completing the frame with 10 reinforced glass sheets creates a double - sided mirror that reflects lasers at a 90 degree angle. - - rscadd: Completing the frame with a single diamond sheet creates a box that will - redirect all lasers that hit it from any angle in a single direction. - MMMiracles: - - tweak: Energy Swords can now embed when thrown for a 75% chance. Embedding -2015-11-05: - AnturK: - - rscadd: Added wild shapeshift spell for wizards. -2015-11-08: - Cuboos: - - soundadd: Added a new and better sounding flashbang sound and a ringing sound - for flashbang deaf effect - JJRcop: - - tweak: Chronosuits have had their movement revised, they now take time to teleport - depending on how far you've traveled, and don't teleport automatically anymore - unless you stop moving for a short moment, or press the new ' Teleport Now' - button. - - rscadd: Added new outfit that allows admins to dress people up in the chrono equipment - easier. - Jalleo: - - tweak: Due to a recently discovered report it turns out The Wizard Federation - has devised a way for CEOs to stop having some teas from their Smartfridges - due to this change all smartfridges will temporarily be unable to stack contents. - Joan: - - tweak: Revenant draining now takes about 5 seconds to complete and can be interrupted - by dragging the target away. - - tweak: Revenants can now tell if they are currently visible. - - tweak: Revenant ability costs tweaked; Defile now costs 40 essence to cast, Overload - Lights now costs 45 essence to cast, and Malfunction now costs 50 essence to - cast. - - tweak: Malfunction now affects non-machine objects, even if they're not being - held by a human. - - tweak: Defile does an extremely low amount of toxin damage to humans and confuses, - but does much less stamina damage and stuns the revenant for slightly longer. - - tweak: Overload Lights will no longer shock if the light is broken after a light - is chosen to shock an area. - Kor: - - rscadd: Using water on a dark blue slime extract will now yield a new potion capable - of completely fireproofing clothing items. - - rscadd: You can once again click+drag mobs into disposal units. Xenobiologists - rejoice. - Xhuis: - - tweak: Shadowling abilities now require the user to be human. - - tweak: Enthralling now takes 21 seconds (down from 30). - - tweak: Regenerate Chitin has been renamed to Rapid Re-Hatch. - - tweak: Dethralling surgery's final step now requires a flash, penlight, or flashlight. - - tweak: Dethralling surgery now produces a black tumor, which has a high biological - tech origin but dies quickly in the light. - - rscdel: Shadowlings no longer have Enthrall before hatching. - - rscadd: Shadowling clothing now has icons to better reflect its existence. - - rscdel: Ascendant Broadcast has been removed. - - rscdel: Destroy Engines is now removed from the user after it is used once. -2015-11-11: - AnturK: - - tweak: DNA Injectors now grant temporary powers on every use. Duration dependent - on activated powers and machine upgrades - - rscadd: 'Delayed Transfer added to DNA Scanner - It will activate on the next - closing of scanner door ' - - rscadd: 'UI+UE injectors/buffer transfers added for convinience ' - - tweak: Injector creation timeout cut in half - Firecage: - - rscadd: NanoTrasen specialists has developed a new type of operating table. You - can now make one yourself with only some rods and a sheet of silver! - Kor: - - rscadd: Adds immovable and indestructible reflector structures for badmin use. - - rscadd: The Mjolnir has been added to the wizards spellbook. - - rscadd: The Singularity Hammer has been added to the wizards spellbook. - - rscadd: The Supermatter Sword has been added to the wizards spellbook. - - rscadd: The Veil Render has been added to the wizards spellbook. - - rscadd: Trigger Multiverse War (give the entire crew multiswords) has been added - to the wizards spellbook, at a cost of 8 points. - - rscadd: Converting (to cultist, rev, or gangster) a jobbaned player will now automatically - offer control of their character to ghosts. - - rscadd: Emergency Response Teams and Deathsquads no longer accept non-human members - if the server is configured to bar mutants from being heads of staff. - LordPidey: - - rscadd: Nanotransen doctors have re-approved Saline-Glucose Solution for usage - in IV drips, when blood supplies are low. Simple pills will not suffice. - MMMiracles: - - tweak: Water slips have been nerfed to a more reasonable duration. It is still - a guaranteed way to disarm an opponent and obtain their weapon, but you can - no longer manage to cuff/choke everyone who manages to slip without a problem. - MrStonedOne: - - bugfix: Fixes the smartfridge not stacking items. - Xhuis: - - soundadd: The emergency shuttle now plays unique sounds (thanks to Cuboos for - creating them) when launching from the station and arriving at Central Command. - torger597: - - rscadd: Added a syringe to boxed poison kits. -2015-11-12: - Dunc: - - rscdel: DNA injectors have been restored to their original permanent RNG state - from the impermanent guaranteed state. - Xhuis: - - rscadd: Reagents can no longer be determined by examining a reagent container - without the proper apparatus. Silicons and ghosts can always see reagents. - - rscadd: Science goggles now allow reagents to be seen on examine. In addition, - chemists now start wearing them. The bartender has a pair that looks and functions - like sunglasses. -2015-11-13: - as334: - - rscadd: Nanotrasen has hired a brand new supply of ~~expendable labor~~ *LOYAL - CREW MEMBERS* please welcome them with open arms. - - rscadd: Plasmamen are now a playable race. They require plasma gas to survive - and will ignite in oxygen environments. -2015-11-15: - CosmicScientist: - - tweak: Hopefully made the dehydrated carp's uplink description 100% clear. - - tweak: Made the dehydrated carp cost 1 TC (instead of 3) to help with your traitor - gear combos. - Incoming5643: - - tweak: The supermatter sword was being far too kind in the hands of men. They - should now have the desired effect when swung at people. - Joan: - - tweak: Anomalies move more often, are resistant to explosions and will only be - destroyed if they are in devastation range. You shouldn't bomb them, though. - - tweak: Hyper-energetic flux anomaly will shock mobs that run into it, or if it - runs into them. - - tweak: Bluespace anomaly will occasionally teleport mobs away from it in a small - radius. - - tweak: Vortex anomalies will sometimes throw objects at nearby living mobs. - - tweak: Pyroclastic anomalies will produce bigger, hotter fires, and if not disabled, - it will release an additional burst of flame. In addition, the resulting slime - will be rabid and thus attack much more aggressively. - - bugfix: Gravitational anomalies will now properly throw objects at nearby living - things. - MrStonedOne: - - bugfix: Away mission loading will no longer improperly expand the width of the - game world to two times the size of the away mission map. - - tweak: This should also improve the speed of loading away missions, since the - game doesn't have to resize the world - RemieRichards: - - rscadd: Deities now start off with the ability to place 1 free turret - - tweak: HoG Claymores now do 30 Brute (Down from 40) but now have 15 Armour Penetration - (Up from 0) - - bugfix: Killing the other god objective is fixed - - tweak: Turrets will no longer attack handcuffed people - - rscadd: Followers are now informed of their god's death - - rscadd: Followers are now informed of the location of their god's nexus when it - is placed - - tweak: Gods can no longer place structures near the enemy god's nexus -2015-11-16: - Gun Hog: - - tweak: The Combat tech requirement for Loyalty Firing Pins has been reduced from - 6 to 5. - Joan: - - tweak: Plasmamen can now man the bar. - - tweak: Defile no longer directly affects mobs. Instead, it rips up floors and - opens most machines and lockers. - - rscadd: Blight added. Blight infects humans with a virus that does a set amount - of damage over time and is relatively easily cured. Blight also badly affects - nonhuman mobs and other living things. - - experiment: While the cure to Blight is simple, it's not in this changelog. Use - a medical analyzer to find the cure. - - tweak: Tweaked costs and stuntimes of abilities; - - tweak: Defile now costs 30 essence and stuns for about a second. - - tweak: Overload Lights now costs 40 essence. - - tweak: Malfunction now costs 45 essence. - - rscadd: Blight costs 50 essence and 200 essence to unlock. - - imageadd: Transmit has a new, spookier icon. - - bugfix: Revenant abilities can be given to non-revenants, and will work as normal - spells instead of runtiming. - bgobandit: - - rscadd: Blood packs can now be labeled with a pen. -2015-11-17: - Xhuis: - - tweak: Many medicines have received rebalancing. Expect underused chemicals like - Oxandralone to be much more effective in restoring damage. - - tweak: Many toxins are now more or less efficient. - - tweak: The descriptions of many reagents have been made more accurate. - - rscadd: 'New poison: Heparin. Made from Formaldehyde, Sodium, Chlorine, and Lithium. - Functions as an anticoagulant, inducing uncontrollable bleeding and small amounts - of bruising.' - - rscadd: 'New poison: Teslium. Made from Plasma, Silver, and Black Powder, heated - to 400K. Modifies examine text and induces periodic shocks in the victim as - well as making all shocks against them more damaging.' - - rscadd: Two Chemistry books have been placed in the lab. When used, they will - link to the wiki page for chemistry in the same vein as other wiki books. -2015-11-18: - oranges: - - tweak: Nanotrasen apologies for a recent bad batch of synthflesh that was shipped - to the station, any rumours of death or serious injury are false and should - be reported to your nearest political officer. At most, only light burns would - result. - phil235: - - bugfix: Remotely detonating a planted c4 with a signaler now works again. -2015-11-19: - Joan: - - rscadd: Constructs have action buttons for their spells. - - imageadd: The Juggernaut forcewall now has a new, more cult-appropriate sprite. - - imageadd: Cult floors and walls now have a glow effect when being created. - - bugfix: Nar-Sie and Artificers will properly produce cult flooring. - - spellcheck: Nar-Sie is a she. -2015-11-20: - AnturK: - - tweak: Staff of Doors now creates random types of doors. - Incoming5643: - - bugfix: Setting your species to something other than human (if available) once - again saves properly. Note that if you join a round where your species setting - is no longer valid it will be reset to human. - PKPenguin321: - - tweak: Healing Fountains in Hand of God now give cultists a better and more culty - healing chemical instead of Doctor's Delight. - kingofkosmos: - - rscadd: Added the ability to upgrade your grab by clicking the grabbed mob repeatedly. - octareenroon91: - - rscadd: Add the four-color pen, which writes in black, red, green, and blue. - - rscadd: Adds two such pens to the Bureaucracy supply pack. -2015-11-21: - Joan: - - rscadd: Blobs now have a hud, with jump to node, create storage blob, create resource - blob, create node blob, create factory blob, readapt chemical, relocate core, - and jump to core buttons. - - tweak: Manual blob expansion is now triggered by clicking anything next to a blob - tile, instead of by ctrl-click. - - tweak: 'Rally Spores no longer has a cost. Reminder: You can middle-click anything - you can see to rally spores to it.' - - tweak: Creating a Shield Blob with hotkeys is now ctrl-click instead of alt-click. - - rscadd: Removing a blob now refunds some points based on the blob type, usually - around 40% of initial cost. Hotkey for removal is alt-click. - - rscadd: Blobs now have the *Blob Help* verb which will pull up useful information, - including what your reagent does. - - tweak: Storage Blobs now cost 20, from 40. Storage Blobs also cannot be removed - by blob removal. - - tweak: Readapt Chemical now costs 40, from 50. - octareenroon91: - - rscadd: Add numbers and a star graffiti to crayon/spraycan designs. -2015-11-23: - octareenroon91: - - rscadd: Spilling oxygen or nitrogen will obtain a release of the corresponding - atmospheric gas in the effected tile. - - rscadd: 'Carbon Dioxide has been added as a reagent. Recipe: 2:1 carbon:oxygen, - heated to 777K.' - - rscadd: Spilling CO2 will produce CO2 gas. -2015-11-24: - Kor: - - rscadd: Added a lava turf. Expect to see it in away missions or in admin 'events' -2015-11-25: - Incoming5643: - - experiment: A number of popular stunning spells have undergone balance changes. - Note that for the most part the stuns themselves are untouched. - - experiment: 'Lightning Bolt Changes:' - - rscdel: You can no longer throw the bolt whenever you want, it will fire itself - once it's done charging. - - rscadd: Getting hit by a bolt will do a flat 30 burn now, as opposed to scaling - with how long the wizard spent charging the spell. Unless said wizard made a - habit of charging lightning bolt to near maximum every time this is a buff to - damage. - - rscdel: Every time the bolt jumps the next shock will do five less burn damage. - - rscadd: Lightning bolts can still jump back to the same body, so the maximum number - of bolts you can be hit by in a single casting is three, and the maximum amount - of damage you could take for that is 60 burn. - - experiment: 'Magic Missile Changes:' - - rscdel: Cooldown raised to 20 seconds, up from 15 - - rscadd: Cooldown reduction from taking the spell multiple times raised from 1.5 - seconds to 3.5 seconds. Rank 5 magic missile now has a cooldown of 6 seconds, - down from 9, and is effectively a permastun. - - experiment: 'Time Stop Changes:' - - rscadd: Time Stop field now persists for 10 seconds, up from 9 - - rscdel: Cooldown raised to 50 seconds, up from 40 - - rscadd: Cooldown reduction from taking the spell multiple times raised from 7.75 - seconds to 10 seconds. Rank 5 time stop now has a cooldown of 10 seconds, up - from 9, and is effectively a permastun. - Kor: - - rscadd: Escape pods can now be launched to the asteroid during red and delta level - security alerts. Pods launched in this manner will not travel to Centcomm at - the end of the round. - - rscadd: Each pod is now equipped with a safe that contains two emergency space - suits and mining pickaxes. This safe will only open during red or delta level - security alerts. - MrStonedOne: - - bugfix: fixes interfaces (like the "ready" button) being unresponsive for the - first minute or two after connecting. - - tweak: Burn related code has been changed - - tweak: This will give a small buff to fires by making them burn for longer - - tweak: This will give a massive nerf to plasma related bombs - - tweak: I am actively seeking feedback, if the nerf to bombs is too bad we can - still tweak stuff - PKPenguin321: - - rscadd: Chainsaws (both arm-mounted and not arm-mounted) can now be used in surgeries - as a ghetto sawing tool. Arm-mounted chainsaws are a teeny bit more precise - than regular ol' everyday chainsaws. - YotaXP: - - tweak: Spruced up the preview icons on the Character Setup dialog. - incoming5643: - - rscdel: Citing shenanigan quality concerns the wizard federation has withdrawn - supermatter swords and veil renderers from spellbooks. - neersighted: - - bugfix: Make Airlock Electronics use standard ID checks, allowing Drones to use - them. -2015-11-26: - neersighted: - - tweak: Cyborg Toner is now refilled by recharging stations. - oranges: - - tweak: Removed the 'gloves' from the sailor dress which looked weird since it - was a blouse basically - - tweak: Made the skirt on the blue/red skirts less blocky, - - tweak: Made the striped dress consistent at every direction -2015-11-27: - AnturK: - - rscadd: Turret control panels can now be made through frames available at autolathe. - - rscadd: Unlocked turrets can be linked with built controls with multiool - JJRcop: - - bugfix: Restores golem shock immunity. - Kor and Ausops: - - rscadd: Added four different suits of medieval plate armour. - - rscadd: The Chaplain starts with a suit of Templar armour in his locker. God wills - it! - - rscadd: Rumour has it that Nanotrasen is now training a new elite unit of soldiers - to deal with paranormal threats. Corporate was unable to be reached for comment. - MMMiracles: - - rscadd: Adds a brand new away mission for the gateway called 'Caves'. - - rscadd: The away mission has multiple levels to explore and could be quite dangerous, - running in without proper preparation is unadvised. - YotaXP: - - bugfix: Drones can now use the pick-up verb, and watertanks no longer get jammed - in their internal storage. - bgobandit: - - rscadd: Due to changes in Nanotrasen's mining supply chain, ore redemption machines - now offer a variety of upgraded items! However, certain items are more expensive. - Point values for minerals have been adjusted to reflect their scarcity. - - rscadd: Nanotrasen R&D has discovered how to improve upon the resonator and kinetic - accelerator. - - rscadd: After a colossal tectonic event on Nanotrasen's asteroid, ores are distributed - more randomly. - - rscadd: Bluespace crystals have been discovered to be ore. They will now fit into - satchels and ore boxes. - - rscadd: Mech advanced mining scanners now include meson functionality. - neersighted: - - bugfix: Wooden Barricades now take bullet damage. - - tweak: Rebalance Wooden Barricade damage. -2015-11-28: - TechnoAlchemisto: - - tweak: Cloaks are now worn in your exosuit slot! -2015-11-29: - Firecage: - - rscadd: Hand tools now have variable operating speeds. - GunHog: - - tweak: Nanotrasen has improved the interface for the hand-held teleportation device. - It will now provide the user with the name of the destination tracking beacon. - JJRcop: - - bugfix: Fixes changeling Hive Absorb DNA ability runtime. - Joan: - - imageadd: When sacrificing a target with the sacrifice rune, Nar-Sie herself will - briefly appear to consume them. - - imageadd: When an artificer repairs a construct, there is a visible beam between - it and the target. - - imageadd: When reviving a target with the raise dead rune, there is a visible - beam between the two corpses used. - - imageadd: When draining a target with the blood drain rune, there is a visible - beam between you and the rune. - - imageadd: Construct sprites are now consistent and all bob in the air. - - rscadd: Most cult messages now use the cult span classes, though visible messages - from cult things generally do not. - - bugfix: Examining a cultist talisman as a cultist no longer causes the paper popup - to appear. - - bugfix: You no longer need to press two buttons to read a cultist tome. - - spellcheck: Cult should have a few less typos and grammatical errors. - - spellcheck: The sacrifice rune now uses the proper invocation. - KorPhaeron: - - rscadd: Guardians and holoparasites can now be manually recalled by their master. - - rscadd: The ghost controlling a guardian or holoparasite can be repicked by their - master, only one use which is removed when a new ghost is chosen. - MrStonedOne: - - rscadd: Re-adds 100% chance timed injectors, as it was removed over a misunderstanding. - - bugfix: Fixes bug with injectors having a 100% power chance despite not being - timed - - bugfix: Fixes the excessive amount of time it took the game to initialize. - - bugfix: Fixes some interface bugs. - - rscadd: when an interface window has to send a lot of resources before it can - open, it will now tell you with a "sending resources" line so you know why it's - not opening right away. - PKPenguin321: - - rscadd: Teleprods can now be constructed. Make them via tablecrafting, or by putting - a bluespace crystal onto a stunprod. They warp the target to a random nearby - area (which may include space/the inside of a wall) in addition to giving the - victim a brief stun. Like stunprods, they require a power cell to function. - - rscadd: Teleprods can have their crystal removed and be made back into stunprods - by using them in your hand when they have no cell installed. - - imageadd: Mounted chainsaws now have a unique inhand sprite. - Remie + Kor: - - tweak: Holopads now use AltClick to request the AI - Shadowlight213: - - tweak: Syndie melee mobs have been buffed. - TheNightingale: - - rscadd: Nuclear operatives can now buy the Elite Syndicate Hardsuit for 8 TC that - has better armor and fireproofing. - - tweak: Added throwing stars and Syndicate playing cards to nuclear operative's - uplink. - Yolopanther12: - - rscadd: Added the ability to use a box of lights on a light replacer to more quickly - refill it to capacity. - incoming5643: - - rscadd: OOC will now take steps to try and prevent accidental IC from people who - mistakenly use OOC instead of say. This doesn't catch all mistakes, so please - don't test it. - ktccd: - - bugfix: Blob pieces on some areas no longer count for blob mode victory (Such - as space or asteroid). - - bugfix: Blobcode no longer spawns and destroys blobs uselessly, which fixes other - stuff too. - - bugfix: Asteroid areas are no longer valid gang territory. - neersighted: - - experiment: Nanotrasen would like to announce NanoUI 2.0, now being rolled out - across all our stations. Existing NanoUI devices have been updated, and more - will be added soon. Please report any bugs to Nanotrasen Support. - - tweak: Many NanoUI interfaces have had +/- buttons replaced with input fields. - - tweak: Some NanoUI interfaces have had more information added. - - bugfix: Drones can now interact with NanoUI windows. - swankcookie: - - bugfix: Fixes issue of space-Christians forgetting about the true, humbling values - of space-Christmas. - - rscadd: Adds snowmen outfits -2015-11-30: - neersighted: - - bugfix: Nanotrasen would like to apologize for Chemistry being stuck on NanoUI - 1.0... Please report any further bugs to Nanotrasen Support. - - tweak: NanoUI becomes... difficult to operate with brain damage. Who would have - guessed? - - tweak: Telekinesis enables you to use NanoUI at a distance. - - bugfix: Canisters require physical proximity to actuate... - - bugfix: NanoUI no longer leaks memory on click. -2015-12-01: - Kor: - - rscadd: The away mission Listening Post, originally mapped by Petethegoat, has - removed as a mission. It is now present in normal deep space. - neersighted: - - tweak: Attack animations are now directional! - - rscadd: Nanotrasen brand Airlock Electronics now sport our latest NanoUI interface! - Upgrade your electronics today! - - bugfix: Cryo now knocks you out. - - bugfix: Resisting out of cryo has a delay. - - rscadd: Cryo auto-ejection can now be configured. - - rscdel: Remove Cryo eject verb (resist out). - - bugfix: Cryo works... Love, neersighted - swankcookie: - - tweak: Switches cloak usage to overclothing slot -2015-12-02: - GunHog: - - bugfix: Nanotrasen has discovered a flaw in the weapon recharging station's design - that makes it incompatible with the Rapid Part Exchange Device. This has been - corrected. - neersighted: - - tweak: You can now stop pulling by trying to pull the same object again. - - rscadd: Nanotrasen is proud to announce that even the dead can use our state of - the art NanoUI technology. -2015-12-03: - Joan: - - rscadd: Artificers now have feedback when healing other constructs, showing how - much health the target has. - - tweak: Constructs can move in space. - - imageadd: Fixes cult flooring not lining up with normal floors. - - imageadd: Fixes a juggernaut back spine not glowing where it should. - Spudboy: - - tweak: Realigned the librarian's PDA. - Swankcookie: - - bugfix: Cakehat now creates light - YotaXP: - - rscadd: Rolled out a new line of space heaters around the station. This new model - has the functionality to cool down the environment, as well as heat it. Additionally, - they can be built and upgraded like any other machine. - neersighted: - - bugfix: Dominator now shows the correct area name on non-Box maps. - - bugfix: Unwrenching atmos pipes is less... nuts... - - bugfix: You don't get hopelessly spun when standing on a unwrenched pipe... Don't - try it, though. - - tweak: You can now cancel pulling by Ctrl+Clicking anything else - - tweak: Chemistry Dispensers now have a built-in drain! -2015-12-05: - Joan: - - rscdel: Magic missiles no longer do damage. -2015-12-06: - Gun Hog: - - rscadd: Nanotrasen is proud to announce that it has improved its Diagnostic HUD - firmware to include the station's automated robot population! New features include - integrity tracking, Off/On status, and mode tracking! If your little robot friend - suddenly manages to acquire free will, you will be able to track that as well! - - tweak: Artificial Intelligence units may find that their bot management interface - now shows when a robot gains free will. This is also displayed on the Personal - Data Assistant's bot control interface. - neersighted: - - bugfix: Cryo now properly checks it is on before healing... -2015-12-07: - octareenroon91: - - rscadd: Wallets now use the access of all IDs stored inside them. - - rscadd: As the accesses of all IDs are merged, two IDs in a wallet may grant access - to a door that neither one alone would open. - - bugfix: Wallets used to be useless for access if the first ID card put into it - was taken out, until another ID card was put back in. That should not happen - anymore. -2015-12-08: - Joan: - - experiment: Revenants can no longer move through walls and windows while revealed, - though they can move through tables, plastic flaps, mobs, and other similarly - thin objects. - - tweak: Defile now reveals for 4 seconds, from 8. - - tweak: Overload lights now reveals for 10 seconds, from 8. - - tweak: Blight now reveals for 6 seconds, from 8. - - rscadd: Blight has a higher chance of applying stamina damage to the infected. - Kor: - - rscadd: The blocking system has been completely overhauled. Any held item, exosuit, - or jumpsuit can now have a chance to block, or a custom on hit effect. Different - shields can now have different block chances. - - rscadd: The clowns jumpsuit now honks when you beat the owner. - - rscadd: There is a new (admin only for now) suit of reactive armour that ignites - attackers instead of warping you. - - rscadd: Shields will no longer block hugs. Give peace a chance. - neersighted: - - tweak: MC tab reworked, more items made available. - - rscadd: Admins can now click entries in the MC tab to debug. -2015-12-09: - GunHog: - - tweak: Nanotrasen has discovered new strains of Xenomorph which resist penetration - by known injection devices, including syringes. This seems to only extend to - the large 'Royal' strains, designed 'Queen' and 'Praetorian'. Extreme caution - is advised should these specimens escape containment. - - rscadd: Ghosts may now use Diagnostic HUD. - - tweak: Feedback added for which HUD is active. - Kor: - - rscadd: Security barricades now block gunfire 80% of the time while deployed. - - rscadd: Standing adjacent to barricades will allow you to shoot over them. - MrStonedOne: - - rscadd: noslip floors make you slightly faster - Shadowlight213: - - rscadd: Admins can now interact with mos of the station's machinery as if they - were an AI when ghosting. - incoming5643: - - rscadd: a mutation of glowshrooms, glowcaps, have recently been discovered in - botany. - ktccd: - - bugfix: Blobs now require the correct amount of blobs to win that scales depending - on number of blobs, instead of a set value of 700. -2015-12-12: - Joan: - - tweak: The blob Split Consciousness ability now requires a node under the overmind's - selector, instead of picking the oldest living node to spawn a core on. - - bugfix: Revenant antagonist preference can once again be toggled from the Game - Preferences menu. - Kor: - - rscadd: You now have a chance to flip while attacking with a dualsaber. - - rscadd: Bluespace survival capsules have been added to escape pod safes. - - rscadd: Standing between activating shield generators now has disastrous consequences. - Lo6a4evskiy: - - bugfix: Ninja drains power properly, no more infinite stealth. - RemieRichards: - - rscadd: Adds a Synth Species - - rscadd: Species can now react to being force set by admins, used for Synth species -2015-12-13: - Kor: - - rscadd: Adds reactive stealth armor. Admin spawn only. -2015-12-15: - Incoming5643: - - rscadd: The summon events... event "RPG loot" now allows for items to have bonuses - of up to +15! - - rscadd: The "RPG loot" event now also improves the damage reduction of armor! - - rscadd: Check out the item mall for new item fortification scrolls! - as334: - - rscadd: New research has shown that when when plasma reaches a high enough temperature - in the presence of a carbon catalyst, it undergoes a violent and powerful fusion - reaction. - - rscadd: Adds a new gas reaction, fusion. Heat up plasma and carbon dioxide in - order to produce large amounts of energy and heat. - oranges: - - tweak: hulk no longer stuns - - tweak: John Cena -2015-12-16: - AnturK: - - rscadd: Medical Beam Gun now available for Nuclear Operatives and ERT Medics. - Joan: - - tweak: Revenant Overload Lights reveal time lowered from 10 seconds to 8 seconds, - shock damage increased from 18 to 20. - - tweak: Revenant Blight reveal time lowered from 6 seconds to 5 seconds. - Kor: - - rscadd: Styptic once again works in patches. - - rscadd: Nuke Op team leaders can now activate challenge mode if more than 50 players - are online. - - rscadd: Xenobio mobs will no longer spontaneously murder their friends if you - give them sentience - The-Albinobigfoot: - - bugfix: The Wishgranter now displays its faith in humans with curbed enthusiasm. - Tkdrg: - - experiment: Cult has been overhauled in an attempt to make the gamemode more fun. - - rscdel: Cult onversion and stunpapers have been removed. So have most cult objectives. - - tweak: The cult's single objective is now defend and feed a large construct shell - in order to summon the Geometer. - - tweak: The cult must sacrifice souls in order to acquire summoning orbs, which - must be inserted inside said shell. - - tweak: The large construct shell can be procured by using a summoning orb in hand, - but it is vulnerable to attack. - - tweak: Once enough orbs are inserted, the station will go Delta. After three minutes, - the cult will have won. - - rscadd: Cult communications now no longer damage you when done without a tome. - - rscadd: Cultists now start with a sacrificial dagger, with bleeding effects and - high throwing damage. - - rscadd: Most existing runes were buffed, merged, or removed. A Immolate rune and - a Time Stop rune were added. Experiment! - - experiment: Each cultist now gets a random set of runes in their tomes. Pool together - your knowledge in order to thrive. - neersighted: - - experiment: NanoUI 3.0 - - experiment: Completely rewrite NanoUI frontend; rework backend. - - tweak: Re-design NanoUI interface to be much more attractive. - - tweak: Reduce NanoUI LOC count/resource size. - - tweak: Reduce NanoUI tickrate; make UIs update properly. - - rscadd: Add chromeless NanoUI mode. - - rscadd: NanoUI's chromeless mode can be toggled with the 'Fancy NanoUI' preference. - - bugfix: Allow NanoUI to work on IE8-IE11, and Edge. - - bugfix: Close holes that allow NanoUI href spoofing. -2015-12-17: - Kor: - - rscadd: Security barricades are now deployed via grenade. You can no longer move - them after they've been deployed, you must destroy them. - - rscadd: You can now shoot through wooden barricades while adjacent, while any - other gunfire has a 50% chance of being blocked. - - rscadd: There are no longer restrictions against implanting the nuclear disk in - people. - - rscadd: If the station is destroyed in a nuclear blast, any surviving traitors - will complete their "escape alive" objective regardless of their location. - - rscadd: Hulks now lose hulk when going into crit, rather than at 25 health. - - rscadd: Shuttles will no longer drag random tiles of space with them. This means - you can be thrown out of partially destroyed escape shuttles very easily. - - rscadd: The people and objects on destroyed tiles won't be along for the ride - when the shuttle moves either. - - rscadd: Adds hardsuits with built in energy shielding. CTF and security versions - are admin only. - - rscadd: Nuclear operatives can buy a shielded hardsuit for 30tc. - - rscadd: Traitors can now buy a Mulligan for 4 telecrystals, a syringe that completely - randomizes your name and appearance. - - rscadd: The spy bundle now includes a switchblade and Mulligan. - MMMiracles: - - rscadd: A set of coordinates have recently reappeared on the Nanotrasen gateway - project. Ask your local central official about participation. - MrStonedOne: - - tweak: 'Ghosts can now double click on ANY movable thing (ie: not a turf) to orbit - it' - PKPenguin321: - - rscadd: Dope golden necklaces have been added. They're a jumpsuit attachment like - ties and are completely cosmetic. - - rscadd: Dope necklaces can be bought from the clothesmate with a coin. Three are - in the clothesmate by default, so you can get your posse going. Gangs that aren't - Sleeping Carp can also purchase necklaces for 1 influence each. Dope. - xxalpha: - - tweak: Restores the ability to bolt and unbolt operating airlocks. -2015-12-18: - Incoming5643: - - rscadd: Soon to be blobs in blob mode can now burst at their choosing. However - they will still burst if they wait too long. - - rscadd: Burst responsibly. - Joan: - - rscadd: 'New blob chemicals:' - - rscadd: Pressurized Slime, which is grey, does low brute, oxygen, and stamina - damage, but releases water when damaged or destroyed. - - rscadd: Energized Fibers, which is light yellow, does low burn damage, high stamina - damage, and heals if hit with stamina damage. - - rscadd: Hallucinogenic Nectar, which is pink, does low toxin damage, causes vivid - hallucinations, and does some bonus toxin damage over time. - - tweak: Replaces Kinetic Gelatin with Reactive Gelatin, which does less brute damage, - but if hit with brute damage in melee, damages all nearby objects. - - wip: 'Changes three of the old blob chemicals:' - - tweak: Ripping Tendrils does slightly more stamina damage - - tweak: Envenomed Filaments no longer causes hallucinations, but does some stamina - damage in addition to toxin damage over time. - - tweak: Cryogenic Liquid will freeze targets more effectively. - Kor: - - rscadd: Shooting someone who is holding a grenade has a chance to set the grenade - off. - - rscadd: Shooting someone who is holding a flamethrower has a chance to rupture - the fuel tank. - - tweak: Shields have a bonus against blocking thrown projectiles. - Swankcookie: - - rscadd: lanterns no longer turn into flashlights when you pick them up. - bgobandit: - - rscadd: Lizard tails can now be severed by surgeons with a circular saw and cautery, - and attached the same way augmented limbs are. - - rscadd: The Animal Rights Consortium is horrified by Nanotrasen stations' sudden - rise of illegal lizard tail trade, with such atrocities as lizardskin hats, - lizard whips, lizard clubs and even lizard kebab! - neersighted: - - tweak: NanoUI should now load much faster, as the filesize and file count have - been reduced -2015-12-20: - Joan: - - tweak: Reduces Lexorin Jelly's oxygen damage significantly. - - experiment: Blobbernaut chemical application on attack is back, but much less - absurd this time; blobbernauts with an overmind will do 70% of the normal chem - damage(plus 4) and attack at a much slower rate than the blob itself can. - - wip: As an example, a blobbernaut with the Ripping Tendrils chemical would do - 14.5 brute and 10.5 stamina damage per hit. - Kor: - - rscadd: Adds reactive tesla armour. Adminspawn only. - - rscadd: Adds the legendary spear, Grey Tide. Admin only. - - rscadd: Nuke Ops can now purchase penetrator rounds for their sniper rifles. - - rscadd: Nuke ops can now purchase additional team members for 25 telecrystals. - They don't come with any gear other than a pistol however, so remember to save - some points for them. - - rscadd: Nuke Ops now have an assault pod. A 30tc targeting device will allow you - to select any area on the station as its landing zone. The pod is one way, so - don't forget your nuke. - - rscdel: The teleporter board is no longer available for purchase in the uplink. - - rscdel: After finding absolutely nothing of value, Nanotrasen away teams placed - charges and scuttled the abandoned space hotel. - - rscadd: Metastation now has xenobiology computers. - - rscadd: Metastation now has escape pod computers. - - rscadd: A distress signal has been detected broadcasting in an asteroid field - near Space Station 13. - - rscadd: Clicking the (F) follow link for AI speech will now make you orbit their - camera eye. - MMMiracles: - - tweak: The SAW has been revamped slightly. It now requires a free hand to fire, - but includes 4 new ammo variants along with a TC cost decrease for both the - gun and the ammo boxes. - MrStonedOne: - - bugfix: Fixes ghost orbit breaking ghost floating - - bugfix: Fixes orbiting ever breaking golem spawning - - bugfix: 'Fixes orbiting ever preventing that ghost from showing up in pictures - taken by ghost cameras resdel: Fixes being able to break your ghost sprite by - multiple quick consecutive orbits (FINAL SOLUTION, PROVE ME WRONG YOU CAN''T)' - Remie: - - rscadd: 'Byond members can now choose how their ghost orbits things, their choices - are: Circle, Triangle, Square, Pentagon and Hexagon!' - - tweak: orbit() should be much cheaper for clients now, allowing those of you with - potato PCs to survive mega ghost swirling better. - incoming5643: - - bugfix: the terror of double tailed lizards and featureless clones should now - be over - - rscdel: the emote *stopwag no longer works, just *wag again to stop instead -2015-12-21: - AnturK: - - tweak: Ghost HUD and Ghost Inquisitiveness toggles are now persistent between - rounds. - Kor: - - rscadd: Malfunctioning AIs have been merged with traitor AIs. They no longer appear - in their own mode. - - rscadd: Hacking APCs now gives you points to spend on your modules. Save up enough - points and you can buy a doomsday device on a 450 second timer. - - rscadd: The detectives revolver reskins on alt click now. - - rscadd: You can now dual wield guns. Firing a gun will automatically fire the - gun held in your off hand if you are on harm intent. - LanCartwright: - - tweak: The TC costs for nuke ops have been rebalanced. Guns, viscerators and mechs - are cheaper, ammo and borgs are more expensive. - - rscadd: Most guns can now be bought in bundles, together with some ammo and freebies - for a special discount. - The-Albinobigfoot: - - rscadd: Nuclear Operative families may once again requisition ultra-adhesive footwear. -2015-12-22: - Iamgoofball: - - rscadd: Tesla engine has been added alongside the singularity engine to all maps. - Joan: - - wip: 'Adds three new blob chemicals:' - - rscadd: Replicating Foam, which is brown, does brute damage, has bonus expansion, - and has a chance to expand when damaged. - - rscadd: Sporing Pods, which is light orange, does low toxin damage, and has a - chance to produce weak spores when expanding or killed. - - rscadd: Synchronous Mesh, which is teal, does brute damage and bonus damage for - each blob tile near the target, and splits damage taken between nearby blobs. - - experiment: Synchronous Mesh blobs take 25% more damage, to compensate for the - spread damage. - Kor: - - rscadd: Cayenne will no longer be targeted by the syndicate turrets. - - tweak: Energy shields now only reflect energy projectiles. - - rscadd: Added accelerator sniper rounds to uplink, a weak projectile that ramps - up damage the farther it flies. - MMMiracles: - - bugfix: Saber magazines have been dropped to 21 per magazine. When asked, Nanotrasens - official ballistic department replied "There is indeed such a thing as too much - bullet." - Xhuis: - - tweak: Stun batons can now be blocked by shields, blocked hits don't deduct charge. - xxalpha: - - rscadd: Janitor cyborgs now have a bottle of drying agent. -2015-12-25: - Joan: - - rscdel: The blob Split Consciousness ability has been removed. - - tweak: The blob mode now spawns more roundstart blobs, instead. - Kor: - - rscadd: AI holograms no longer drift in zero gravity - LanCartwright: - - tweak: Shotguns shells now have one extra pellet. - MrStonedOne: - - bugfix: Screen shakes will no longer allow you to see through walls - - tweak: Screen shakes will now move with you when moving rather than lag your client - behind your mob - - tweak: Screen shakes are now less laggy in higher tickrates -2015-12-26: - Buggy123: - - tweak: Salicyclic Acid now rapidly heals severe bruising and slowly heals minor - ones. - Iamgoofball: - - tweak: Telsa energy ball now shoots only a single, powerful beam of lightning - that can arc between mobs. - - soundadd: Energy ball can now be heard when near-by. - Incoming5643: - - tweak: Animated objects now revert if they have no one to attack for a while. - - rscadd: Added Golden revolver, a powerful sounding gun with large recoil. - Kor: - - rscadd: Transform Sting is now actually functional. - MrStonedOne: - - tweak: Movement in no gravity now allows you to push off of things only dense - to some mobs if it is dense to you (such as tables/blob tiles) rather than just - objects that are only dense to all mobs. - - bugfix: Long/timed actions will now cancel properly if you move and quickly move - back to the right location. -2015-12-27: - Joan: - - rscadd: Overmind-created blobbernauts are now player-controlled if possible. - - tweak: Creating a blobbernaut no longer destroys the factory, instead doing heavy - damage to it and preventing it from spawning spores for one minute. - - tweak: You cannot spawn blobbernauts from overly damaged factories. - - rscadd: Procedure 5-6 may be issued for biohazard containment under certain situations. - - tweak: Blobs will now burst slightly later on average, and the nuke report with - the nuke code will arrive slightly earlier. - Kor: - - soundadd: Spacemen now announce when they are changing magazines. - - rscadd: Command headsets now have a toggle to let you have larger radio speech. - LanCartwright: - - rscdel: The Syndicate Ship no longer spawns with Bulldog shotguns, operative have - been given 10 extra telecrystals instead. - MrStonedOne: - - bugfix: Flashes that were emp'ed were incorrectly flashing people in range of - the emper, not in range of the flash. - - tweak: Flashes in a mob's inventory that are emp'ed will only aoe stun if it is - not inside of a container like a backpack/box -2015-12-28: - AnturK: - - rscadd: You can now write an entire word with crayons by setting it as a buffer - and then clicking the target tiles in the right order. - Joan: - - rscdel: Blobbernauts can no longer smash walls of any type. - MrStonedOne: - - tweak: Progress bars now have 20 states instead of 5. - - bugfix: Bump mining should be fixed. - - tweak: Long actions now checks for movement/changed hands/etc more often to prevent - edge cases. - - tweak: Multiple progress bars will now stack properly, rather than fight each - other for focus. - Ressler: - - rscadd: Adds the reagent Haloperidol. - - rscadd: It is an anti-drug reagent, good for stopping assistants hyped up on meth, - bath salts, and equally illegal drugs. - - rscadd: It can be made with Chlorine, Fluorine, Aluminum, Potassium Iodide, and - Oil. - neersighted: - - bugfix: Make NanoUIs transfer upon (un)ghosting. - - bugfix: Fix NanoUIs jumping when resized/dragged. - - bugfix: Lots of other NanoUI bugs. -2015-12-31: - Bawhoppen: - - rscadd: Nanotrasen has opened the availability of tactical SWAT gear to station's - cargo department - - rscadd: Due to a new trade agreement with Chinese space suit manufacturers, Nanotrasen - can now obtain basic space suits much cheaper; This has been reflected in the - cargo prices - - rscadd: Amateur medieval enthusiasts have found a quick way to easily make wooden - bucklers. - Joan: - - imageadd: Replaced every book sprite in the game with new, consistent versions. - - imageadd: Except the one-use wizard spellbooks, which already got new sprites. - PKPenguin321: - - rscadd: Chest implants have been added that allow you to morph your arms into - a gun and back at will. There are two variants, a taser version and a laser - version. Both versions are self-charging. Getting EMPed with one of these implants - results in the implant breaking and loads of fire damage. The implants are currently - admin-only. - - tweak: The telecrystal price for thermal imaging goggles has been lowered from - 6 to 4. - incoming5643: - - rscadd: The wizard federation has finally updated their assortment of guns for - the summon guns event. Look forward to getting shot in the face with a whole - new batch of interesting and rarely seen weaponry! -2016-01-01: - Iamgoofball: - - experiment: Redid how objectives are assigned, they're now a lot more random in - terms of what you can get. - Incoming5643: - - tweak: Removed gender restrictions from socks. - Joan: - - rscdel: Storage Blobs are gone; they were effectively a waste of resources, as - there are more or less no points at which you should need them, unless you were - winning excessively hard. - - rscdel: Blobs can no longer burst early; instead, the button gives some early - help and serves to indicate you're a blob. - - wip: Blobbernauts now poll candidates instead of grabbing a candidate immediately. - The poll is 5 seconds, so that there's no significant pause between making a - blobbernaut and it doing stuff. - - rscadd: Blobbernaut creation replaces Storage Blob creation on the blob HUD. - - tweak: Overmind communication is now much larger and easier to see, and blob mobs, - such as blobbernauts, will hear it. - Kor: - - rscadd: The wizard has a new spell, Lesser Summon Guns. This summons an unending - stream of single shot bolt action rifles into his hands, automatically replacing - themselves as you fire. - - bugfix: Fixes successive generations of grey tide clones not despawning. - - tweak: Using challenge ops now delays shuttle refuel. - - rscadd: Added a new wizard event, Advanced Darkness. - MrStonedOne: - - experiment: GHOST POPUP RE-WORK - - bugfix: Ghost popups will no longer steal focus - - bugfix: Ghost popups will no longer submit on key press (regardless of focus) - unless you tab to a button first - - tweak: Ghost popups will close themselves after the time out has ended - - rscadd: Ghost popups are now themed. - - tweak: Long actions (like resisting out of handcuffs) will no longer count space/nograv - drifting as the user moving. - - tweak: This does not apply to the target of a long action if that target isn't - you. Pulling something while space drifting and working on it intentionally - won't work. -2016-01-02: - Kor: - - rscadd: Guardians/Parasites are now named after constellations, and have new sprites - from Ausops. - Kor and GunHog: - - rscadd: Malfunctioning AIs can now purchase Enhanced Surveillance for 30 points, - which allows them to "hear" with their camera eye. - MMMiracles: - - rscadd: A distress signal was recently discovered with gateway coordinates attached - to a far-off research facility owned by Nanotrasen. The signal was sent out - in hopes of someone competent receiving it, unfortunately, your station was - the only one to respond. Local security forces may not be welcoming your arrival - group with open arms. -2016-01-07: - KorPhaeron: - - tweak: Doubled cost of Lesser Summon Guns to 4 and increased charge time to 75 - seconds. - TrustyGun: - - rscadd: 'Added two new UI styles: black and green Operative and pale green Slimecore.' -2016-01-09: - Wjohnston: - - wip: AI Satellite has been remapped to make it more secure. -2016-01-11: - Joan: - - rscdel: Blob cores and nodes no longer cause normal pulsed blobs to animate. Factories - and resource nodes will still animate. - - imageadd: Holoparasite sprites have been updated again, are now named after silvery - metals and flowers and can also be colored purple, blue or yellow. - xxalpha: - - tweak: Pipes and cables under walls, intact floors, grilles and reinforced windows - will now be shielded from explosions until exposed. -2016-01-13: - Joan: - - imageadd: Alien whisper ability has a new icon - MrStonedOne: - - tweak: Control clicking on the thing you are pulling will no longer unpull, instead - control clicking on anything too far away to be pulled will unpull. (reminder - that the delete key also unpulls) - OneArmedYeti: - - imageadd: To help with colorblindness, gang HUDs have been changed so leaders - have a border and normal gangster icons are smaller. -2016-01-15: - Joan: - - bugfix: Holoparasites can no longer beat their owner to death while inside of - them. - - spellcheck: Updates traitor holoparasite descriptions for accuracy. - - spellcheck: Adds 8 additional silvery metals to the holoparasite name pool. - - imageadd: Adds two new holoparasite colors, light purple and red. - - imageadd: Holoparasite HUD buttons now have new sprites. - - imageadd: Adds glow effects when guardians teleport or recall, including fire - guardian teleporting and support guardian teleporting. - Kor: - - rscadd: Washing machines are activated via alt+click rather than a right click - verb. -2016-01-16: - Joan: - - imageadd: Alien queens and praetorians have suitably large speechbubbles. - - imageadd: Syndicate cyborgs and syndrones have suitably evil robotic speechbubbles. - - imageadd: Blob mobs have suitably uncomfortable-looking speechbubbles. - - imageadd: Holoparasites and guardians have suitably robotic and magical speechbubbles. - - imageadd: Swarmers have suitably holographic speechbubbles. - - imageadd: Slimes have suitably slimy speechbubbles. -2016-01-17: - Joan: - - bugfix: You can once again repair a hacked APC by using an APC frame on it instead - of welding it off the wall, at the same stage as you'd weld it off the wall. - MrStonedOne: - - bugfix: Control clicking on a turf now un-pulls -2016-01-19: - neersighted: - - rscadd: Many many interfaces have been ported to tgui; uplinks and MULEbots being - the most important - - rscadd: You can now tune radios by entering a frequency - - bugfix: Air Alarms now support any gas -2016-01-23: - neersighted: - - experiment: Refactor wires; port wire interface to tgui. - - rscadd: Wire colors are now fully randomized. - - rscdel: Remove pizza bombs, as the code and sprites were terrible. - - rscadd: Add pizza bomb cores, which can be combined with a pizza box to make a - pizza bomb. - octareenroon91: - - bugfix: Chemistry machinery should now all equally accept beakers, drinking glasses, - etc. -2016-01-27: - Joan: - - tweak: Golems have about a 40% chance to stun with punches, from about 60%. - - tweak: Millitary Synths have about a 50% chance to stun with punches, from literally - 100%. - - wip: Blobbernaut creation costs 30 points, and does much more damage to the factory. - - rscdel: Blob factories regenerate at half normal rate. - - tweak: Blob reagents tweaked; - - rscadd: Ripping Tendrils does slightly more brute damage, but less stamina damage. - - rscdel: Lexorin Jelly does less brute damage. - - rscadd: Energized Fibers does slightly more burn damage. - - rscadd: Sporing Pods does slightly more toxin damage. - - rscadd: Replicating Foam will try to replicate when hit more often. - - rscadd: Hallucinogenic Nectar does slightly more toxin damage and causes hallucinations - for longer. - - rscadd: Cryogenic Liquid does more burn damage. - - experiment: Synchronous Mesh does slightly less damage with one blob but massive - damage with more than one nearby blob. - - rscdel: Dark Matter does less brute damage. - - rscdel: Sorium does slightly less brute damage. - - rscdel: Pressurized Slime has a lower chance to emit water when killed and when - attacking targets. - - tweak: Supermatter explosion is no longer capped, and under normal conditions - will produce a 8/16/24 explosion when delaminating. - - imageadd: Blob tiles now do an attack animation when failing to expand into a - turf. - - imageadd: Overmind-directed expansion is more visible than automatic expansion. - Kor: - - rscadd: Capture the flag has been added in space near central command. The spawners - are disabled by default, so be sure to harass admins when you die until they - let you play. The arena was mapped by Ausops. - - rscadd: Nuke ops can purchase mosin nagants for 2 telecrystals. - MrStonedOne: - - bugfix: Fixes the powersink drawing less power than the smeses put out. - - tweak: Made the powersink hold significantly more power before overloading and - going boom. - - tweak: Buffed the explosion of the power sink when it overloads. You are suggested - to think twice about wiring the engine to the grid. - PKPenguin321: - - rscadd: The Autoimplanter, a device that can insert cyberimplants into humans - instantly and without the need of surgery, has been added to the game. It is - currently only obtainable by nuke ops, by way of being included in the Box of - Implants. -2016-01-28: - Joan: - - rscadd: Blobs can communicate before bursting to allow for more coordination. - Kor: - - rscadd: Butchering mobs by attacking them with sharp objects will only happen - on harm intent. This means it is possible to do surgery on aliens again. -2016-01-29: - Joan: - - rscadd: Holoparasites can now see their summoner's health at all times. The health - displayed is a percentage, with 0 being dead. - - imageadd: Holoparasites now have visual flashes on the summoner's location when - recalled due to range limits and when manifesting. - Kor: - - rscadd: Red xenobio potions now work on vehicles (janitor cart, ATV, secway, etc), - causing them to go faster. - - rscadd: Stuffing people in bins uses clickdrag instead of grab. -2016-01-30: - Boredone: - - tweak: Due to an experiment gone wrong, the Research Director's Teleport Armor - now causes some mild radiation poisoning on teleportation to the wearer. - Francinum: - - rscadd: Added two new female underwear styles. - Kor: - - rscadd: You can now use the abandoned white ship as an escape route at round end. - This is possible on Box, Meta, and Dream. - - rscadd: Added support so that mappers can make any shuttle function as an escape - shuttle. - MMMiracles: - - rscadd: Three new bra sets have been added for the ladies out there who want to - show their patriotism. - xxalpha: - - rscadd: Blueprints will now allow the expansion of an existing area by giving - its name to a new adjacent area. - - rscadd: Added a no power warning cyborg verb to Robot Commands. -2016-01-31: - Kor: - - rscadd: Added a special AI upgrade disk that allows normal AIs to use malf modules - and hack APCs. It is admin only. - - rscadd: Added an AI upgrade disk that grants AIs the lipreading power. It is admin - only. -2016-02-01: - Erwgd: - - rscadd: The Kitchen Vending machine now stocks salt shakers and pepper mills! - - rscadd: The NutriMax now stocks spades, cultivators and plant analyzers. - - rscadd: Rice seeds are now stocked in the MegaSeed Servitor, and the seeds supply - crate now contains a pack of rice seeds. - - rscdel: Botanists should be aware that wheat stalks can no longer mutate into - rice. - Fayrik: - - rscadd: pAI cards can now be inserted into simple robots, to allow for more robust - robot personalities. - PKPenguin321: - - rscadd: You can now store knives, pens, switchblades, and energy daggers in certain - types of shoes (such as jackboots, workboots, winter boots, combat boots, or - no-slips). - - rscadd: Horns can now be stored in clown shoes. Honk. - TrustyGun: - - rscadd: Adds gag handcuffs to the prize pool for arcade machines. They act like - regular handcuffs, but you break out of them in a second. - WJohnston: - - rscadd: Adds missing booze & soda dispenser, library console, fixes door access - and a few other minor things to Efficiency Station - - rscadd: Also adds direction tags so people can find their way around better. - bgobandit: - - rscadd: On Valentine's Day, all spacemen will receive candy hearts and valentines - for their special someones! Label valentines with a pen. - - rscadd: Note that today is not Valentine's Day. -2016-02-05: - Joan: - - experiment: Blob expansion is faster near the expanding blob, but slower further - away from it. - - tweak: Blob spores produce a slightly larger smoke cloud when dying. Sporing Pods - spores and blob zombies produce the current small cloud. - - rscdel: Blobbernauts can no longer pull anything at all. - - tweak: Blobbernauts health reduced to 200, but blobbernauts now take half brute - damage. - - tweak: Blobbernauts now take massive damage from fire. - - tweak: Blobbernauts do approximately 3 more damage when attacking. - - wip: Replicating Foam will expand more actively when damaged. - - rscadd: Adds Electromagnetic Web, which is light blue, does burn damage and EMPs - targets, and causes a small EMP when dying. - - rscadd: Electromagnetic Web takes more damage; a normal blob that hasn't been - near a node or the core for 6~ seconds can be oneshotted by a laser. - - rscadd: Anomalies, such as pyroclastic and vortex anomalies, now appear at the - bottom of the ghost orbit and observe menus. - Kor: - - rscadd: Nuke ops can purchase sentience potions for 4tc - MMMiracles: - - tweak: Bulldog now starts with stun-slugs instead of its usual 60-brute slugs. - Slugs now cost 3 TC instead of 2. - - tweak: Most SAW ammo has been slightly buffed in damage so maybe it'll be worth - buying now along with a slight cost decrease for the gun itself. - - tweak: Incen shells for the shotgun now apply extra firestacks on hit so it actually - sets people on fire instead of turning them into a light show. - - tweak: Incen rounds for the SAW now leave a fire trail similar to the bulldog's - dragonsbreath round. - - rscadd: Nuke Ops now have the ability to purchase breaching shells, a weaker variant - of the meteorslugs that can still push back people/airlocks/mechs/corgis. - - bugfix: SAW should now use its in-hand sprites for an open-closed magazine - PKPenguin321: - - rscadd: You can now sharpen carrots into shivs by using a knife or hatchet on - them. - bgobandit: - - rscadd: Seven new emoji have been added to hasten the death of the English language. - octareenroon91: - - rscadd: Player-controlled medibots can examine a patient to know what chems are - in the patient's body. - - bugfix: autolathes have been showing extra copies of the hacked designs, but no - more. -2016-02-06: - LordPidey: - - rscadd: Added suicide command for pipe valves. It's quite messy. - Lzimann: - - tweak: Combat Mechas now have a increased chance of destroying a wall with punches - (40% for walls and 20% for reinforced walls)! - - rscadd: Combat mechas can now destroy tables and racks with a punch! - neersighted: - - rscadd: The Syndicate has stolen the latest tgui improvements from Nanotrasen! - All uplinks now feature filtering/search. - - rscadd: Nanotrasen is proud to announce its next generation sleepers, featuring - tgui! - - rscadd: Portable atmospheric components have been overhauled to use the latest - interface technology. - - rscdel: The Area Atmosphere Computer has been removed. - - rscadd: Huge scrubbers now require power. - - rscdel: Borg jetpacks are now refilled from a recharger and not a canister. - - rscadd: Power monitors now have a state of the art graph. Hopefully they're actually - useful to someone. - - rscadd: Cargo consoles have been redesigned and now feature search and a shopping - cart! -2016-02-08: - Incoming5643: - - rscadd: Poly will now speak a line or emote when pet. - - rscadd: Poly now responds to getting fed crackers by becoming more annoying for - the round. - - experiment: Every day he is growing stronger - Kor: - - rscadd: A certain hygiene obsessed alien is now obtainable via xenobiology gold - cores. - - rscadd: Add laserguns with swappable, rechargeable magazines. They are adminspawn - only. - - rscadd: Operatives now get their pinpointers in their pocket when they spawn, - meaning reinforcements automatically come with them (and hopefully people stop - forgetting them in general). - - rscadd: Capture the flag now features a high speed instagib mode, with guns courtesy - of MMMiracles. - phil235: - - tweak: The vision updates for mobs are now instantaneous (e.g. you don't have - to wait one second to see again when removing your welding helmet) - - tweak: Your vision is now affected when you're inside something or viewing through - a camera. You can no longer see mobs or objects when ventcrawling (unless you - have xray for example), an xray user viewing through a camera do not see through - walls around the camera. On the other hand, cameras with an xray upgrade let - you see through walls. Unfocused camera now give you the same effect as when - you are nearsighted. Being inside closets, morgue container and disposal bins - give you some vision impairments. - - rscadd: The ability to toggle your hud on and off (with f12) is now available - to all mobs not just humans. -2016-02-09: - AnturK: - - rscadd: Syndicate Operatives can now buy bags full of plastic explosives for 9 - TC. - Gun Hog: - - rscadd: '"Nanotrasen has drafted a design for an exosuit version of the medical - nanite projector normally issued to its Emergency Response Personnel. With sufficient - research, a prototype may be fabricated for field testing!"' - incoming5643: - - rscadd: The wizard spell wild shapeshift has been made less terrible. - neersighted: - - rscadd: Internals tanks now provide an action button - - rscadd: Jetpacks now emit the gas consumed for propulsion onto their turf - - rscdel: Jetpacks no longer have object verbs - - rscdel: tgui no longer has internals buttons - - bugfix: Malf AI's flood ability now correctly sets vent pressure bounds -- the - results are devastating... Try it! -2016-02-10: - Joan: - - rscadd: Blob mobs now heal for 2.5% of their maxhealth when blob_act()ed, basically - whenever they're on blobs near a node or the core. - - tweak: Blob expansion no longer has a chance to fail inversely proportional with - the expanding blob's health. Blobs still, however, expand at roughly the same - rate as they do currently. - - experiment: Adds five new blob chemicals. - - rscadd: Adds Penetrating Spines, which is sea green and does brute damage through - armor. The damage can still be reduced by bio protection. - - rscadd: Adds Explosive Lattice, which is dark orange and does brute damage to - all mobs near the target. Explosive Lattice is very resistant to explosions. - - rscadd: Adds Cyclonic Grid, which is a light blueish green and does oxygen damage, - in addition to randomly throwing or pulling nearby objects. - - rscadd: Adds Zombifying Feelers, which is a fleshy zombie color and does toxin - damage, in addition to killing and reviving unconscious humans as blob zombies. - - rscadd: Adds Regenerative Materia, which is light pink and does toxin damage, - in addition to making the attacked mob think it is at full health. - - wip: Tweaks some of the existing blob chemicals slightly. - - rscadd: Sporing Pods can produce spores when killed by damage less than 21, from - less than 20. This means lasers can produce spores. - - rscadd: Reactive Gelatin has a slightly higher maximum damage and will attack - the nearby area when hit with brute damage projectiles, from just when attacked - by brute damage in melee. - - tweak: Sorium, Dark Matter, and the new Cyclonic Grid will not throw mobs with - the 'blob' faction, such as blobbernauts and spores. - Kor: - - rscadd: The chaplain can now transform the null rod into a holy weapon of his - choice by using it in hand. Each one has different strengths and drawbacks. - MrStonedOne: - - tweak: Tesla balance changes - - tweak: Tesla will now require increasingly more energy to trigger new orbiting - balls. First ball comes with 32 energy (down from 300), fourth requires 256 - (down from 1200), and so on and on, doubling with each new ball. Balls after - 7 are increasingly harder to get than before, whereas balls before 6 are easier - to get. - - rscadd: MULTIBOLT IS BACK! - - tweak: Be warned that in multibolt all but 1 primary bolt now have a random shocking - range, meaning they may still target a close human over a far away grounding - rod as the rod may be out of range. - - tweak: Power output of tesla massively dropped, it should no longer put out almost - twice the power of a stage 3 singulo with maxed collectors without any balls, - you'll need at least 3 balls for that now. - - tweak: Tesla can now lose power, causing ball count to drop. Tesla will never - shrink out of existence, just lose its balls. - - tweak: Tesla is now more likely to head in the direction of the thing it last - zapped. - PKPenguin321: - - rscadd: Chameleon Jumpsuits now have slight melee, bullet, and laser protection. - - tweak: The armor values for security helmets, caps, and berets have all been brought - in line. Consequently, helmets and berets are a teeny bit better, and caps now - have the slight bomb protection that the other two had. - - experiment: The time needed to complete most tablecrafting recipes has been cut - in half to make tablecrafting less annoying to use. - Shadowlight213: - - rscadd: pAI controlled mulebots can now run people over. - - tweak: Mulebot health has been greatly decreased. - neersighted: - - rscadd: Horizontal (lying) mobs now fit into crates - - rscadd: Mobs may now be stuffed into crates, as with lockers - - rscadd: Stuffing into a locker deals a mild stun (the same as tabling) - octareenroon91: - - rscadd: New designs can now be added to Autolathes via a design disk. Simply use - a disk containing a suitable design on your autolathe. -2016-02-11: - neersighted: - - rscdel: Remove all cyborg jetpacks... They were awful... - - rscadd: Adds borg ion thrusters, which are available as an upgrade module for - any borg. - - rscdel: Jetpack stabilizers are always on, but now we have... - - rscadd: Jetpack turbo mode, to move at sanic speed in space. -2016-02-12: - Kor: - - rscadd: Malf AIs can now get the objective to have a robot army by the end of - the round. - - rscadd: Malf AIs can now get the objective to ensure only human crew (no mutants) - are on the shuttle at round end. - - rscadd: Malf AIs can now get the objective to prevent a crewmember from escaping - the station, while requiring that crewmember still be alive. - neersighted: - - rscadd: Cybernetic implants purchased from the uplink now include a free autoimplanter! - octareenroon91: - - rscdel: You can no longer kill yourself with the SORD - - rscadd: Suicide attempts with the SORD will inflict 200 stamina damage. You will - only die of shame. - - bugfix: Cleanup to suicide verb code. -2016-02-13: - Buggy123: - - rscadd: You can now build cable coils using the autolathe. - Fox McCloud: - - bugfix: Fixes the sleeping carp martial arts grab not being an instant aggressive - grab - KazeEspada: - - rscadd: 'New backpack options available! New options include: Department Bags, - Leather Satchels, and Dufflebags!' - Kor: - - rscadd: Chainsaw sword, force weapon, and war hammer have all been added as Chaplain - weapon options. - Malkevin: - - tweak: Tracking implants have been upgraded. The old clunky manually adjusted - number system has been replaced with an automated ID scanner, this will show - the implant carrier's name on both the Prisoner Management Console and the hand - tracker. Happy deep striking! - PKPenguin321: - - tweak: 'Traitor EMP kits have had their cost reduced from 5 to 2, and no longer - contain the EMP flashlight. rcsadd: EMP flashlights can now be bought separately - for 2 TCs.' - Zerrien: - - rscadd: Conveyor pieces can be placed as corner pieces when building in non-cardinal - directions. - - rscadd: Using a wrench on a conveyor rotates it while in place. - neersighted: - - tweak: Gibtonite can now be pulled. - - tweak: Slowdown factors are ignored when in zero gravity. - phil235: - - rscadd: Brains can no longer be blinded. - - bugfix: Fixes brain being immortal. They are immune to everything but melee weapon - attacks. Brains not inside a MMI can now be attacked just like MMIs. Damaged - brain can't be put into a robot, they can still be put inside a brainless humanoid - corpse and cloned, but deffibing the corpse always fails (can't revive someone - with a brain beaten to a pulp). -2016-02-14: - Joan: - - rscadd: Blobbernauts can now speak to overminds and other blobbernauts with :b - - rscadd: Blobs can now expand onto lattices and catwalks. - - rscdel: Blob expansion on space tiles with no supports is much slower. - - tweak: Blob Sorium and Dark Matter now have less range on targets with bio protection. - - tweak: Blob Sorium does slightly less damage. -2016-02-17: - Fox McCloud: - - tweak: Laser eyes mutation no longer drains nutrition - Joan: - - rscdel: The sleeping carp gang no longer has special equipment and an inability - to use pneumatic cannons. - PKPenguin321: - - tweak: The traitor surgery bag now costs 3 TC, down from 4. - Zerrien: - - rscadd: adds unique icons for the two medical patch types -2016-02-18: - Kor: - - rscadd: 'Four more chaplain weapon options have been added: hanzo steel, light - energy sword, dark energy sword, and monk''s staff.' -2016-02-19: - AnturK: - - rscadd: Chairs and stools can now be picked up and used as weapons by dragging - them over your character. - PKPenguin321: - - rscadd: The cleanbot uprising has begun. - - rscadd: Emagged cleanbots are much scarier now. Standing on top of one will yield - very devastating results, namely in the form of powerful flesh-eating acid. -2016-02-20: - CPTANT: - - tweak: Due to new crystals Nanotrasen lasers weapons may now set you on FIRE. - Joan: - - imageadd: Blobbernauts and blob spores now have a visual healing effect when being - healed by the blob. - xxalpha: - - rscadd: 'New event: Portal Storm.' - - rscadd: Kinetic accelerators now reload automatically. -2016-02-24: - CPTANT: - - tweak: stamina regeneration is now 50% faster. - Joan: - - rscadd: Revenants now have an essence display on their HUD - - rscadd: Revenants retain the essence cap from the previous revenant when reforming, - minus any perfect souls. - - rscadd: Revenants can now toggle their night vision. - - tweak: Revenant Defile has one tile more of range, but does less damage to windows. - - tweak: Revenant Blight kills space vines and glowshrooms slightly more rapidly. - - tweak: Delays before appearing when harvesting are slightly randomized. - - tweak: Revenant fluff objectives have been changed to be slightly more interesting. - RemieRichards: - - rscadd: Cursed heart item for wizards, allows them to heal themselves in exchange - for having to MANUALLY beat their heart every 6 seconds. Heals 25 brute/burn/oxy - damage per correctly timed pump. - Steelpoint: - - tweak: Syndicate engineers have reinforced the exterior of their stealth attack - ships. Nuclear Operative ship hull walls are now, once again, indestructible. - - tweak: In addition Syndicate engineers had the opportunity to revamp the interior - of stealth attack ships. The inside of Op ships now has a slightly new layout, - including a expanded medbay, as well as additional medical and explosive equipment. - - rscadd: Thanks to covert Syndicate operatives, strike teams can now bring the - stealth attack ship within very close proximity to the station codenamed 'Boxstation'. - A new ship destination labeled 'south maintenance airlock' is now available - to Op strike teams. - phil235: - - rscadd: Holo tape is replaced by holo barriers. - - rscadd: The action button of gas tanks and jetpacks now turn green when you turn - your internals on. -2016-02-26: - Iamgoofball: - - rscadd: Adds the Chameleon Kit to uplinks for 4 telecrystals containing a Chameleon - Jumpsuit/Exosuit/Gloves/Shoes/Glasses/Hat/Mask/Backpack/Radio/Stamp/Gun/PDA. - - rscadd: The chameleon gun fires no-damage lasers regardless of what it looks like. - - rscadd: The Voice Changer has been merged into the Chameleon Mask. - - rscadd: No-slip shoes have been combined into Chameleon Shoes. - - rscdel: Space Ninjas no longer have voice changing capabilities. - - rscdel: The Chameleon Jumpsuit has been replaced by the Chameleon Kit in the uplink - for the same price. - - tweak: All chameleon clothing items have lost EMP vulnerability. - - tweak: Chameleon equipment provides very minor armor. - - experimental: Agent ID Cards can now use chameleon technology to look like any - other ID card. - - bugfix: The Chameleon Kit is actually purchasable now. It doesn't give a single - chameleon jumpsuit anymore. - PKPenguin321: - - rscadd: The kitchen vendor now contains two sharpening blocks. - - rscadd: Only items that are already sharp (such as fire axes, knives, etc) can - be sharpened. Items used on sharpening blocks become sharper and deadlier. The - sharpening blocks themselves can only be used once, and you can only sharpen - items once. - - tweak: The EMP kit has been buffed. It now contains five EMP grenades, up from - two. - - tweak: The EMP implant found in the EMP kit has been buffed. It now has three - uses, up from two. -2016-03-02: - CoreOverload: - - rscadd: A new "breathing tube" mouth implant. It allows you to use internals without - a mask and protects you from being choked. It doesn't protect you from the grab - itself. - - tweak: Arm cannon implants are now actually implanted into the arms, not into - the chest. - - bugfix: Arm cannons have an action button again. - - tweak: Heart removal is no longer instakill. It puts you in condition similar - to heart attack instead. You can fix it by installing a new heart and applying - defibrillator if it wasn't beating. - - rscadd: You can now make a stopped heart beat again by squeezing it. It will stop - beating very soon, so you better be quick if you want to install it without - using defibrillator. - - rscadd: There is now a chance to recover some of the internal organs when butchering - aliens or monkeys. - - rscadd: A new organ - lungs. When removed, it will give you breathing and speaking - troubles. - - rscadd: Human burgers are, once again, named after the generous meat donors that - made them possible. - Fox McCloud: - - rscadd: Gibbing mobs will now throw their internal organs - Gun Hog: - - rscadd: Ghost security HUDs now show arrest status and implants. - - tweak: The Alien queen, upon her death, will now severely weaken the remaining - alien forces. - Joan: - - tweak: Replicating Foam has a lower chance to expand when hit. - - tweak: Penetrating Spines is now purple instead of sea green. - - imageadd: Blobbernauts now have a brief animation when produced. - - experiment: Adds five new blob chemicals. This is a total of 25 blob chemicals. - Will it ever stop? - - rscadd: Draining Spikes, which is reddish pink and does medium brute damage, and - drains blood from targets. - - rscadd: Shifting Fragments, which is tan and does medium brute damage, and shifts - position when attacked. - - rscadd: Flammable Goo, which is reddish orange and does low burn and toxin damage, - and when hit with burn damage, emits a burst of flame. It takes more damage - from burn, though. - - rscadd: Poisonous Strands, which is lavender and does burn, fire, and toxin damage - over a few seconds, instead of instantly. - - rscadd: Adaptive Nexuses, which is dark blue and does medium brute damage, and - reaps 5-10 resources from unconscious humans, killing them in the process. - - wip: Confused about what the chemical you're fighting does? Look at https://tgstation13.org/wiki/Blob#Blob_Chemicals - - rscadd: Adds 'Support and Mechanized Exosuits' and 'Space Suits and Hardsuits' - categories to the syndicate uplink. - - rscadd: Nuke op reinforcements and mechs have been moved to the first category. - Syndicate space suits and hardsuits have been moved to the second category. - - bugfix: Traitors can now properly buy the blood-red hardsuit for 8 TC. - - tweak: Nuke ops can no longer buy the blood-red hardsuit, as the elite hardsuit - costs the same amount while being absolutely better. - Kor: - - rscadd: Added door control remotes. Clicking on doors while holding them will - let you open/bolt/toggle emergency access depending on the mode. They will not - work on doors that have their IDscan disabled (rogue AIs take note!) - - rscadd: The Captain, RD, CE, HoS, CMO, and QM all now have door control remotes - in their lockers. - LanCartwright: - - rscadd: Adds Uranium to Virus reaction. Will create a random symptom between 5 - and 6 when mixed with blood. - - rscadd: Adds Virus rations, which creates a level 1 symptom when mixed with blood. - - rscadd: Adds Mutagenic agar, which creates a level 3 symptom. - - rscadd: Adds Sucrose agar which creates a level 4 symptom. - - rscadd: Adds Weak virus plasma, which creates a level 5 symptom. - - rscadd: Adds Virus plasma, which creates a level 6 symptom. - - rscadd: Adds Virus food and Mutagen reaction, creating Mutagenic agar. - - rscadd: Adds Virus food and Synaptizine reaction, creating Virus rations. - - rscadd: Adds Virus food and Plasma reaction, creating Virus plasma. - - rscadd: Adds Synaptizine and Virus plasma reaction, creating weakened virus plasma. - - rscadd: Adds Sugar and Mutagenic agar reaction, creating sucrose agar. - - rscadd: Adds Saline glucose solution and Mutagenic agar reaction, creating sucrose - agar. - - rscadd: Adds Viral self-adaptation symptom, which boosts stealth and resistance, - but lowers stage speed. - - rscadd: Adds Viral evolutionary acceleration, which bosts stage speed and transmittability, - but lowers stealth and resistance. - - rscadd: Flypeople now vomit when they eat nutriment. - - rscadd: Flypeople can now suck the vomit off the floor to gain it's nutritional - content. - - rscadd: Flypeople now must suck puke chunks and vomit to fill themselves of food - content. - Malkevin: - - tweak: Sec officers have two sets of cuffs again (one on spawn, one in locker) - - tweak: Done some optimisation of sec spawn equipment lists and lockers to remove - some of the repetitive clicking, sec belts are now preloaded with equipment. - - tweak: HoS has a full baton instead of the collapsible one - - tweak: Detective has a classic police baton and pepper spray instead of the collapsible - baton (someone made police batons shit, so don't get overly happy) - - bugfix: pop scaled additional lockers spawned were the wrong type, changed them - to the right type which has batons now (actually belts now that I've changed - them). - MrStonedOne: - - tweak: Suit sensors will now favor higher levels for starting amount with the - exception of the max level, that remains unchanged. - - tweak: 'Old odds: 25% off 25% binary lifesigns 25% full lifesigns 25% coordinates' - - tweak: 'New odds: 12.5% off 25% binary lifesigns 37.5% full lifesigns 25% coordinates' - PKPenguin321: - - rscadd: Bolas are now in the game. They're a simple device fashioned from a cable - and two weights on the end, designed to entangle enemies by wrapping around - their legs upon being thrown at them. The victim can remove them rather quickly, - however. - - rscadd: Bolas can be crafted by applying 6 metal sheets to cablecuffs. They can - also be tablecrafted. - Sestren413: - - rscadd: Botanists have access to a new banana mutation now, bluespace bananas. - These will teleport anyone unfortunate enough to slip on their peel. - Shadowlight213: - - rscadd: A wave of dark energy has been detected in the area. Corgi births may - be affected. - Shadowlight213 and Robustin: - - rscadd: '"Old Cult is back baby!"' - - tweak: '"Cult survival objective disabled"' - - tweak: '"Imbuing talismans now consumes the imbue rune"' - - tweak: '"Invoking the stun talisman now hurts the cultist more"' - - tweak: '"The stun talisman duration is nerfed by 10%, mute is nerfed by 60% but - a stutter and special new slur effect will last much longer"' - - tweak: '"The old cult has retained the rune of time stop, now requiring 3 cultists - to invoke"' - - rscdel: '"New Cult is removed!"' - bgobandit: - - rscadd: CentComm has been informed that cargo is receiving new forms of contraband - in crates. Remember, Nanotrasen has a zero-tolerance contraband policy! - lordpidey: - - rscadd: New virology symptom, projectile vomiting. It is a level four symptom. -2016-03-03: - Joan: - - tweak: Blobbernauts now die slowly when not near a blob. - - rscadd: Blobbernauts can now see their health and the core health of the overmind - that created them. -2016-03-05: - CoreOverload: - - imageadd: Cyborg tools (screwdriver, crowbar, wrench, etc) now have new fancy - sprites. - - tweak: Said cyborg tools have received a buff and are now two times faster than - their non-cyborg counterparts. - Joan: - - tweak: Replicating Foam has lower expand chances when hit and on normal expand. - - bugfix: Shifting Fragments will no longer try and fail to swap with invalid blobs - when hit. - - tweak: Electromagnetic Web no longer always EMPs targets, instead doing it at - a 25% chance. - - tweak: Synchronous Mesh now only takes bonus damage from fire, bombs, and flashbangs. - - tweak: Synchronous Mesh no longer tries to split damage to blob cores or nodes. - Cores and nodes still split damage to nearby blobs, however. - - tweak: Blobbernauts now attack much slower. - - tweak: Blobbernauts are now maximum one per factory, reduce that factory's health - drastically, and die slowly if that factory is destroyed. - - experiment: Factories must still have above 50% health to produce blobbernauts. -2016-03-07: - WJohnston: - - tweak: Queens and praetorians have new sprites! -2016-03-09: - Joan: - - rscadd: Blobs can now attack people that end up on top of blob tiles with Left-Click - or the Expand/Attack Blob verb. - - tweak: The Toxin Filter virology symptom now heals 4-8 toxin damage instead of - 8-14. - - tweak: The Damage Converter virology symptom will now do toxin damage for each - limb healed. - MrStonedOne: - - tweak: Centcom has improved the the tesla generator! The generated tesla energy - balls should now be more stable! Growing quicker and dissipating slower. It - seems to also move around a touch more but that shouldn't be an issue as the - the tesla escaping containment is unheard of! -2016-03-10: - Joan: - - rscadd: The blob can now be shocked by the tesla. - - tweak: Strong blobs are now much more resistant to brute damage. - - wip: Tweaks blob reagents; - - rscdel: Removes Ripping Tendrils. - - rscdel: Removes Draining Spikes. - - tweak: Cryogenic Liquid does less burn damage. - - tweak: Pressurized Slime does less brute damage. - - tweak: Reactive Gelatin now has a lower minimum damage. - - tweak: Poisonous Strands applies its damage over a longer period of time. - - tweak: Sporing Pods now does much less damage, and is less likely to produce spores - when killed. - - tweak: Regenerative Materia, Hallucinogenic Nectar, and Envenomed Filaments do - less toxin damage. - - rscadd: Energized Fibers no longer heals when hit with stamina damage, and is - instead immune to the tesla. - - rscadd: Boiling Oil now takes damage from extinguisher blasts. Boiling Oil blobbernauts, - however, do not. - - tweak: Replicating Foam now takes increased brute damage and when expanding from - damage, will not expand again. - - tweak: Flammable Goo takes 50% increased burn damage, from 30%. - - tweak: Explosive Lattice now takes much higher damage from fire, flashbangs, and - the tesla. - - experiment: Electromagnetic Web takes full brute damage, lasers will now one-hit - normal blobs, and the death EMP is smaller. -2016-03-12: - Joan: - - bugfix: Blobbernauts and blob spores can now move near blob tiles in no gravity. - - tweak: Boiling Oil does slightly more damage and takes slightly less damage when - extinguished. - - rscadd: Flammable Goo now applies firestacks to targets, but does not ignite them. - Jordie0608: - - rscadd: Show Server Revision will now tell you if a PR is test merged currently. - PKPenguin321: - - rscadd: Added reinforced bolas. They do a very short stun in addition to normal - functions, and take twice as long to break out of when compared to regular bolas. - - tweak: The traitor's Throwing Star Box has been made into the Throwing Weapons - Box. It now contains two reinforced bolas in addition to its old contents. It - also costs 5 TCs, down from 6. - tkdrg: - - tweak: The detective's revolver now takes three full seconds to reload. - xxalpha: - - rscadd: Detective can be a Traitor/Double Agent. - - tweak: Removed Detective's access to security lockers and secbots. - - tweak: Removed bowman's headset from Detective's locker. - - tweak: Box Brig Security Office and Locker Room require a higher access level - (Security Officer level). -2016-03-13: - Dorsisdwarf: - - rscadd: 'Adds Robo-Doctor board (The Hippocratic Oath: Now on your beepbot)' - - rscadd: Adds Reporter board (The truth will set ye free (termsandconditionsmayapply)) - - rscadd: Adds Live and Let Live board - - rscadd: Adds Thermodynamics as a dangerous board. - Impisi: - - tweak: Improvised shells now deal more far more damage but are more inaccurate. - - tweak: Overloaded shells now require liquid plasma in addition to black powder. - Shells now fire explosive pellets that are good at hurting you and everything - in front of you. - Joan: - - rscdel: Blob gamemode blobs will no longer burst from people. - - rscadd: Instead, the blob gamemode spawns overminds, which can place their blob - core underneath them in an unobserved area. - - rscadd: The overminds can, until they have placed a blob core, move to any non-space, - non-shuttle tile. - - rscadd: If the overminds fail to place a blob core within a time limit, it will - be automatically placed for them at a random blob spawnpoint. - - tweak: The time before the overmind automatically places the core is slightly - lower than the previous average time it'd take a blob to burst. -2016-03-15: - Cuboos: - - soundadd: Modded the current door sound and added a few new ones, unique sound - for closing, bolting up/down and a nifty denied sound. - Isratosh: - - rscadd: Security flashlights can now be attached to the bulletproof helmets. - Joan: - - tweak: Resource blobs produce resources for their overmind slightly slower for - each resource blob their overmind has. - - rscadd: Blob overminds get one free chemical reroll. - - rscadd: Blob overminds can no longer place resource and factory blobs out of range - of cores and nodes, unless they Toggle Node Requirement off. It is on by default. - - rscadd: Blob UI buttons now have tooltips. - - tweak: Cores and nodes will expand slightly slower. - - tweak: Blob Chemicals no longer trigger effects on dead mobs. - - tweak: Shifting Fragments has a lower chance to move shields with normal expansion - and will no longer shift blobs to the location of a dying blob. - - tweak: Flammable Goo no longer applies fire to tiles with blobs. - - tweak: Electromagnetic Web has a slightly higher EMP range. - Kor: - - rscadd: Hunger was accidentally disabled sometime back in October 2015. We finally - noticed and fixed it. - Kor (And all the lovely maintainers and spriters who helped me along the way): - - rscadd: Adds a new, lava themed planet to mine on,with randomly generated rivers - of lava and islands of volcanic rock. This mine is used on Box and Metastation. - Other mappers may enable it at their discretion. - - rscadd: Added deadly ash storms to mining. - - rscadd: Added slightly deadlier variants of mining mobs to lavaland, with sprites - done by my girlfriend. - - rscadd: Added portable survival capsules to mining equipment lockers. Don't forget - these, or you might get caught out by a storm. You may purchase more at the - venders. - - rscadd: Added randomly loaded ruins to mining. These maps contain new and unique - items not seen elsewhere in thegame. There are around a dozen of them added - with the "release" of lavaland, though I plan for many more. - - rscadd: Some ruins contain sleepers which allow you to spawn as various roles, - such as survivors of a shuttle crash stranded in the wilderness. You can find - these sleepers in the orbit list. - - rscadd: You can now fly the abandoned white ship to lavaland. - LanCartwright: - - tweak: Choking now deals damage based on virus' Stage speed and virus Stealth. - - tweak: Fever heats the body based on Transmittability and Stage speed. - - tweak: Spontaneous Combustion now adjusts firestacks based on stage speed minus - Stealth. - - tweak: Necrotizing Fasciitis now deals damage based on lower Stealth values. - - tweak: Toxic Filter now heals based on Stage speed. - - tweak: Deoxyribonucleic Acid Restoration now heals brain damage based on Stage - speed minus Stealth. - - tweak: Shivering now chills based on Stealth and Resistance. - - rscadd: Proc for the total stage speed of a virus' symptoms. - - rscadd: Proc for the total stealth of a virus' symptoms. - - rscadd: Proc for the total resistance of a virus' symptoms. - - rscadd: Proc for the total transmittance speed of a virus' symptoms. - MrStonedOne: - - rscdel: 'Lag has been removed from the following systems: mob life()/virus process, - machine/object/event processing, atmos, deletion subsystem, lighting, explosions, - singularity''s eat(), timers, wall smoothing, mass var edit, mass proc calls(and - all of sdql2), map loader, and the away mission loader.' - - rscdel: Removed limit on bomb cap of 32,64,128, it can now go to the MOON. - - tweak: Minimap generation is now a config option that defaults to off so coders - don't have to wait for it to generate to test their code, server operators should - note that they need to enable it on production servers that want minimap generation. - - wip: if you find any things that still lag, please report them to MrStonedOne - for lag removal. - - experiment: I'm gonna take this time to shill out that, Lummox JR, byond's only - dev, coded the tool that made this change possible, he lives off of byond membership - donations, if you like the lag removal, become a byond member or at least throw - 5 bucks byond's way for doing this. - - experiment: Feel free to ask for bomb cap removals when solo antag, but remember, - the later in the round it is, the more likely you'll get it. - PKPenguin321: - - rscadd: Scooters and skateboards have been added. - - rscadd: Use rods to make a scooter frame. From there, apply metal to make wheels, - creating a skateboard. Apply a few more rods to make a full scooter. You can - also use tablecrafting to create them, their recipes can be found under the - Misc. category. - - rscadd: Each step of scooter deconstruction is performed with either a wrench - or a screwdriver, depending on the step. - xxalpha: - - rscadd: Scrubber clog event now ejects cockroaches. -2016-03-17: - CoreOverload: - - rscdel: The recent jetpacks nerf is finally reverted. Turbo mode is dead and stabilization - is once again can be toggled on and off. - - rscadd: 'Added a new chest cyberimplant: implantable thrusters set. This implant - is a built-in jetpack that has no stabilization mode at all and can use gas - from environment (if 30+ kPa) or from internals. It can also use plasma from - plasma vessel organ, if you have one.' - Joan: - - tweak: Moved the security hud's icons down slightly to allow it to coexist with - medical and antag huds. - Shadowlight213: - - rscadd: HOG deity can now be heard by all of its followers! - - tweak: The prophet no longer needs to wear his hat to speak with his deity. - - rscadd: The prophet's hat and staff have a new functionality! Use the staff inhand - to reveal hidden structures. - - rscadd: Deities can now hide their structures from view! Pretend to be a book - club when sec bursts in. experiment:Only enemy prophets or your own deity can - reveal these structures and they are disabled when hidden. -2016-03-19: - Joan: - - imageadd: Xray lasers now have unique inhands. - - imageadd: Xray lasers have been recolored to match R&D equipment. - Zombehz: - - rscadd: Adds 'chicken' nuggets* in 4 shapes, including regular, star, corgi, and - lizard. it. They are made with one cutlet of meat. -2016-03-20: - Joan: - - rscadd: Nar-Sie will now corrupt airlocks, tables, windows, and windoors. - - rscadd: Corrupted airlocks have no access restrictions. - - tweak: Nar-Sie no longer causes destruction while moving around in favor of additional - corruption. - - tweak: The surplus crate is less likely to give you eight space suits. - - bugfix: Nukeops can once again buy noslips. The nuke op magboots are still better - than noslips, buy them instead. - Kor: - - rscadd: Runtime now has a chance to spawn with a more classic look. - - rscadd: Killing a necropolis tendril will now drop a chest full of spooky loot. - - rscadd: Killing a necropolis tendril will now cause the ground to collapse around - it after 5 seconds. -2016-03-21: - CoreOverload: - - rscadd: You can now construct and deconstruct wall mounted flashes by using a - wrench on empty wall flash. A crate with four linked "flash frame - flash controller" - pairs is added to cargo. - Joan: - - rscadd: Explosive Holoparasites now have a 33% chance to explosively teleport - attacked targets, doing damage to everyone near the target's appearance point. - - tweak: Explosive Holoparasite bombs can now detonate when living mobs bump them. - - rscadd: Adds lightning holoparasites, which have medium damage resist, a weak - attack, have a lightning chain to their summoner, and apply lightning chains - when attacking targets. - - rscadd: Lightning chains shock everyone nearby, doing low burn damage. This is - excluding the parasite and summoner; chains will shock enemies they're attached - to. - - tweak: Holoparasites can now smash tables and lockers. - PKPenguin321 && !JJRcop: - - rscadd: Milk, which is good for your bones, is now extra beneficial to species - that are mostly comprised of bones. - kingofkosmos: - - rscdel: The backpack close-button has got a visual overhaul. - - rscadd: All storage items can be closed by clicking on them again. -2016-03-23: - Iamgoofball: - - rscadd: Cargo now works off of Credits. - - rscadd: Cargo now plays the Stock Market. - - rscadd: Buy Low, Sell High -2016-03-24: - Iamgoofball: - - rscadd: CLF3 now melts, burns, and destroys floors a lot more often, as it should - be. - - rscadd: CLF3 now makes 3x3 fireballs on tiles it touches now, instead of a single - fireball. - Joan: - - tweak: Lightning Holoparasites will actually shock relatively often instead of - 'sometimes, maybe, if you're really lucky' - PKPenguin321: - - tweak: Sand now fits in your pockets - - rscadd: Sand can now be thrown into people's eyes, doing slight stamina damage, - making their vision slightly blurry, and making them stumble when they walk - for a short time. - RemieRichards: - - rscadd: BEES - - rscadd: Hydroponics can now manage bee colonies, bees produce honeycombs that - can be grinded to obtain honey, a decent nutriment+healing chemical - - rscadd: Hydroponics can inject a queen bee with a syringe of a reagent to alter - her DNA to match that reagent, meaning all honeycombs produced will contain - that reagent in small amounts - - rscadd: Bees with reagents will attack with that reagent - Xhuis: - - experiment: Alcohol has received multiple tweaks. - - tweak: Drunkenness will now be displayed on examine as long as the target's face - is not hidden, ranging from a slight flush to being a completely drunken wreck. - This also helps to measure alcohol poisoning, although the appearance will remain - for thirty seconds after the alcohol leaves the imbiber's bloodstream. - - tweak: Alcohol poisoning now has different effects. It begins with standard things - such as confusion, dizziness, and slurring, but eventually escalates to constant - vomiting, blacking out, and toxin damage. - - tweak: Drinks now have a wide variety of alcoholism. Grog is barely a drink whatsoever, - for instance, but Manly Dorf will completely floor you with too much consumption. - Note that drinks based off of whiskey and vodka are the hardest, whereas beer - and wine are the softest. - - tweak: The speed of alcohol poisoning has been slightly reduced. - - rscadd: Some drinks have received unique effects. Experiment! - - rscadd: A new base alcohol joins the lineup! Absinthe has been added, and is very - strong. - - rscadd: Whiskey Sour, made with Whiskey, Lemon Juice, and Sugar, simply expands - the existing whiskey-based lineup. - - rscadd: Fetching Fizz, made with Nuka-Cola and Iron, will pull all nearby ores - in the direction of the imbiber. - - rscadd: Hearty Punch, made with Brave Bull, Syndicate Bomb, and Absinthe, will - provide extreme healing in critical condition. - - rscadd: Bacchus' Blessing, made with four of the most powerful alcohols on the - station, is over three times stronger than any other alcohol on the station. - Consume in small amounts or risk death. -2016-03-26: - CPTANT: - - tweak: Nanotrasen found a new taser supplier. The new tasers hold 12 shots, down - people with 2 hits and hybrid tasers now have a light laser attached. - CoreOverload: - - tweak: Sorting junctions now support multiple sorting tags. - Fox McCloud: - - bugfix: Fixes Shadowlings not being spaceproof to pressure - - bugfix: Fixes being able to receive multiple spells as a Lesser Shadowling - Joan: - - rscadd: Adds assassin holoparasites, which do low damage and take full damage, - but can go invisible, causing their next attack to do massive damage and ignore - armor. - - rscadd: Assassin holoparasite stealth will be broken by attacking or taking damage, - which will briefly prevent the parasite from recalling. - - rscadd: Traitor holoparasite injectors include this parasite type. - Kor: - - rscadd: There are a couple new lavaland ruins, including one with a new ghost - role. - PKPenguin321: - - tweak: The RD's reactive teleport armor now has a cooldown between teleports. - EMPing it will cause it to shut down and have a longer cooldown applied. - - imageadd: Bolas, both reinforced and regular, now have newer, sexier sprites. -2016-03-29: - Bawhoppen: - - tweak: Bruisepacks, ointment, and gauze now will apply significanty faster. - - rscdel: SWAT crates no longer contain combat knives. - - rscadd: SWAT crates now contain combat gloves. - - rscadd: Combat knives now can be ordered in their own crate. - Iamsaltball: - - rscadd: GRAB SUPER NERFED - - rscadd: IT'S WAY EASIER TO ESCAPE GRABS NOW - - rscadd: IT TAKES WAY LONGER TO UPGRADE GRABS NOW - - rscadd: 'YOU CAN ACTUALLY FUCKING ESCAPE GRABS NOW TOO #WOW #WHOA' - - rscadd: GRAB TEXT IS ALL BIG BOLD AND RED MUCH LIKE YOUR MOM LAST NIGHT - - experiment: GIT GUDDERS GO FUCK YOURSELVES YOU CAN'T GET GOOD AGAINST "LOL INSTANT - PERMASTUN THAT ISN'T OBVIOUS IN CHAT LIKE THE REST OF THE STUNS" - Joan: - - tweak: Ghost revival/body creation alerts now use the ghost's hud style. - - imageadd: Support holoparasites now have a healing effect with their color when - successfully healing a target. - - tweak: Ranged holoparasite projectiles now take on the color of the holoparasite. - - bugfix: Holoparasite communication(holo->summoner) now sends the message to all - holoparasites the summoner has. - - bugfix: If you have multiple holoparasites for some reason, Reset Guardian allows - you to choose which to reset. - - tweak: Resetting a holoparasite also resets its color and name, to make it more - obvious it's a new player. - - rscadd: Holoparasites can now see their summoner's health and various ability - cooldowns from the status panel. - - rscadd: Blobbernauts are now alerted when their factory is destroyed. - KazeEspada: - - bugfix: Blob Mobs no longer swap with other mobs. - RemieRichards: - - rscadd: Added the ability to make Apiaries and Honey frames with wood - - rscadd: Added the ability to make Royal Bee Jelly from 10 Mutagen and 40 Honey - - rscadd: Added the ability to make more Queen Bees from Royal Bee Jelly by using - it on an existing Queen, to split her into two Queens - - tweak: Made homeless bees more obvious - - bugfix: Fixed a typo that made almost all bees homeless, severely reducing the - odds of getting honeycomb - - tweak: Made bee progress reports (50% towards new honeycomb, etc.) always show, - even if it's 0% - - tweak: Made some feedback text more obvious - - bugfix: Fixed being able to duplicate the bee holder object, this was not exploity, - just weird - - bugfix: Fixed being able to put two (or more) queens in the same apiary - - bugfix: Fixed some runtimes from hydro code assuming a plant gene exists - - bugfix: Fixed runtime when you use a honeycomb in your hand - - tweak: It now takes and uses 5u of a reagent to give a bee that reagent - - rscdel: Removed unused icon file - Ricotez: - - imageadd: The default white ghost form now has directional sprites. - - rscadd: The default white ghost form now also has (your) hair! Here's how it works. - - experiment: If you ghost from a body, you'll get the hair from that body. If it - has hair. - - experiment: If you hit Observe, you'll get the hair from the character you had - active in your setup window. If they had hair. - - wip: This only works with the default white ghost form right now (because the - other forms have the wrong shape or lack directional sprites), and with human - bodies since they're the only ones that have hair. Sorry lizards and plasmamen! - You'll get your turn next time. - - rscadd: A new preference called Ghost Accessories. This lets you configure if - you want your ghost sprite to show both hair and directional sprites, only directional - sprites or just use its original default version without directional sprites. - - rscadd: 'A new preference called Ghosts of Others. This preference is clientside - and lets you configure how other ghosts appear to you: as their own setting, - as the form they chose but without any hair or directional sprites, or as the - simple white ghost sprite if you''re sick of those premium users with their - rainbow ghosts.' - - experiment: The layout of the ghost preference buttons has slightly changed. The - old Choose Ghost Form and Choose Ghost Orbit are now a part of Ghost Customization, - which also contains the new Ghost Accessories button. Clicking Ghost Customization - will send you directly to Ghost Accessories if you don't have premium. The Preferences - tab now also contains the Ghost Display button, which lets you configure how - other ghosts appear to you. - - bugfix: Fixed a bug where the toggles for Ghost Accessories and Ghosts of Others - in the Preferences menu wouldn't save your preference update to your save file. - - bugfix: Renamed the "Ghost Display Settings" preference toggle button to "Ghosts - of Others", so it fits with the name the preference has everywhere else. - TehZombehz: - - rscadd: Paper sacks are now craftable by tablecrafting with 5 sheets of paper. - - rscadd: 'Comes in 5 different designs: Use a pen on a paper sack to change the - design.' - - rscadd: Certain paper sack designs can be modified with a sharp object to craft - a (creepy) paper sack hat. - Xhuis: - - bugfix: Portal storm messages now use the station name rather than the world name. - - bugfix: Shadowlings can no longer glare while shadow walking. - - bugfix: Progress bars are now properly shown when reloading revolvers. - - bugfix: Cyborgs and AIs are no longer knocked out when being stuffed into lockers. - - bugfix: Plasmamen can no longer be the patient zero of the space retrovirus. - - bugfix: Cyborgs and AIs now properly display death messages. - - bugfix: Revenants can no longer be closed into lockers. - - bugfix: Airlocks no longer play sounds or flash lights when denying access if - the airlock has no power. - - bugfix: Job spawn icons in mapping have been fixed. - - bugfix: Gibtonite's disarm message no longer include the outside viewer. - - bugfix: Cult walls and girders are now more streamlined and can be built with - runed metal. - - bugfix: Positronic brains and MMIs can no longer see ghosts. - - rscadd: When someone is turned into a statue, the statue now appears as a greyscale - version of them. - - rscadd: Returning from a statue to a human now knocks you down. - - rscdel: Flesh to Stone no longer works on dead mobs. - - bugfix: Wall-mounted flasher crates now have the proper price. - - bugfix: Wall-mounted flasher frames now have icons. - - bugfix: Upgraded resonators now have an inhand sprite. -2016-03-30: - Coiax: - - rscadd: Geiger counters can now be stored in the suit storage of radiation suits - RemieRichards: - - bugfix: fixes shift-clicking action buttons not instantly resetting their location. - (I'm only making a changelog for this because apparently barely noone even knows - you can move the buttons, let alone reset them...) - TehZombehz: - - rscadd: Honey buns and honey nut bars are now craftable using honey. - - tweak: Brewing mead now requires actual honey. -2016-04-01: - Erwgd: - - bugfix: Weed Killer bottles and Pest Killer bottles now contain 50 units. - - rscadd: The biogenerator can now make empty bottles and black pepper. - Isratosh: - - rscadd: Added an admin jump button to explosion logs. - Joan: - - rscadd: Traitors can now buy charger holoparasites. - - rscadd: Charger holoparasites move extremely fast, do medium damage, and can charge - at a location, damaging the first target it hits and forcing them to drop any - items they're holding. - Kor: - - rscadd: Mechas are now storm proof - - rscadd: Kinetic Accelerators now require two hands to fire, but are free standard - gear for miners. - - rscadd: All mining scanners are now automatic, with the advanced version having - longer range. - - rscadd: The QM and HoP no longer have spare vouchers. - - rscadd: You can buy a pack of two survival capsules with your mining voucher. - - rscadd: Mining Bots will no longer cause friendly fire incidents. They'll hold - fire if you are between them and their target - - rscadd: There are now four different mining drone upgrades available in the vendor. - - rscadd: Resonators can now have more fields and deal more melee damage. - - rscadd: Lavaland miners now have explorer's suits instead of hardsuits. Sprites - by Ausops. - - rscadd: You can now butcher Goliath's for their meat. It cooks well in lava. - Shadowlight213: - - rscadd: Clients now have a volume preference for admin-played sounds. - TehZombehz: - - rscadd: The 'Plasteel Chef' program has provided station chefs with complimentary - ingredient packages. There are several package themes, and chefs are provided - a random package on arrival. - coiax: - - rscadd: Free Golems on Lavaland have been naming their newborn siblings with a - wider range of geology terms -2016-04-02: - Eaglendia: - - rscadd: Central Command has released a new, more functional run of their most - stylish fashion line. - - rscadd: Head of Staff cloaks can now hold specific items - the antique laser gun - for the Captain, the replica energy gun for the Head of Security, the hypospray - for the Chief Medical Officer, the Hand Teleporter or RPED for the Research - Director, and the RCD or RPD for the Chief Engineer. -2016-04-03: - Erwgd: - - rscadd: Our valued colleagues in the security department are reminded to search - boots for hidden items (such as knives or syringes) as part of standard search - procedures. Alt-click a pair of boots to remove any hidden items. - Isratosh: - - bugfix: Fixed rudimentary transform not working properly on ghosts with minds. - - rscadd: Admin logs for bluespace capsules not activated on the mining Z level. -2016-04-04: - TechnoAlchemisto: - - rscadd: The recipes for some Trekchems are now back in the game - - rscadd: Bicaridine can be made with carbon, oxygen, and sugar. - - rscadd: Kelotane can be made with silicon and carbon. - - rscadd: Antitoxin can be made with nitrogen, silicon, and potassium - - rscadd: tricordrazine can be made by combining all three. -2016-04-05: - Erwgd: - - rscadd: Utility belts of all kinds can now accept gloves. Most belts, except janitorial - belts, may now also hold station bounced radios. - - rscadd: Hazard vests and most jackets can carry a station bounced radio as well. - Labcoats can be used to store a handheld crew monitor. - - rscadd: The autolathe can now make toolboxes. - Joan: - - rscadd: Adds protector holoparasites to traitor holoparasite injectors. - - rscadd: Protector holoparasites cause the summoner to teleport to them when out - of range, instead of the other way around. - - rscadd: Protector holoparasites have two modes; Combat, where they do and take - medium damage, and Protection, where they do and take almost no damage, but - move slightly slower. - - tweak: Explosive Holoparasites no longer teleport non-mobs when attacking, but - have a higher chance to teleport mobs. - - rscdel: Explosive Holoparasite bombs no longer trigger on their summoner or any - other parasites their summoner has. - - bugfix: Ranged Holoparasites no longer have nightvision active by default. It - can still be toggled on. - - tweak: Ranged Holoparasite snares no longer alert if the crossing mob is their - summoner or one of the parasites their summoner has. - - tweak: Ranged Holoparasites are slightly less visible in scout mode. - - tweak: Standard Holoparasites attack 20% faster than other parasite types. - - rscdel: Support Holoparasite beacons no longer require safe atmospheric conditions, - but the warp channel takes slightly longer, and is preceded with a visible message. - - tweak: Zombies can no longer destroy more than one airlock at a time. - - rscadd: The mining station has been updated. - MrStonedOne: - - bugfix: Centcom is glad to announce the end of sending workers to our control - group for space exposure testing, a fake station in "space" that noticeably - had air in "space". - TechnoAlchemisto: - - tweak: Detective scanners are now smaller. - - tweak: Pickaxes now fit in explorer suit exosuit slots. - bgobandit: - - rscadd: Alt-clicking a fire extinguisher cabinet opens and closes it. That is - all. -2016-04-06: - CoreOverload: - - rscadd: You can now put slimes in stasis by exposing them to room temp CO2. Useful - for both fighting the slimes and safely storing them. - Erwgd: - - rscadd: The autolathe can now make hydroponics tools! Access the design routines - in the Misc. category of the machine. - LanCartwright: - - tweak: Custom viruses with stealth values of 3 or above are now invisible on the - PANDEMIC and no longer visible on health huds. - MrStonedOne: - - bugfix: Centcom is happy to report that our single sided windows and our windoors - should once again create an airtight seal. - bgobandit: - - rscadd: Honk! Nanotrasen's clowning and development department has invented the - clown megaphone, standard in all clowning loadouts! Honk honk! -2016-04-07: - Kor: - - rscadd: The Laser Cannon in RD has been replaced with the Accelerator Laser Cannon. - Try it out! - - rscadd: Mechas now have armour facings. Attacking the front will deal far less - damage, while attacking the back will deal massive bonus damage. - - rscadd: EMPs now deal far less damage/drain to mechas. - Kor and Ausops: - - rscadd: Survival pod interiors have been redone. - - rscadd: Survival pods now contain a stationary GPS computer. - - rscadd: You can now toggle your GPS off with alt+click. - bgobandit: - - rscadd: Due to budget cuts, Nanotrasen is no longer utilizing copy-protected paper - for its classified documents. Fortunately, our world-class security team has - always prevented any thefts or photocopies from being made! - - rscadd: Secret documents can be photocopied. If you have an objective to steal - any set of documents, a photocopy will be accepted. If you must steal red or - blue documents, a photocopy will NOT be accepted. Enterprising traitors can - forge the red/blue seal with a crayon to take advantage of this. -2016-04-09: - GunHog: - - rscadd: Aliens may now force open unbolted, unwelded airlocks. Unpowered airlocks - open faster than powered ones. Has a cool sound provided by @Ultimate-Chimera! - - tweak: Alien Drone health increased to 125 hp. - - tweak: Alien drone is now faster! - - tweak: Alien egg and larva maturation times halved. - - tweak: Resin membrane health increased to 160 hp. - - rscadd: Aliens may now open firelocks. - - rscadd: Aliens may now unweld scrubbers and vents. (From the outside!) - - tweak: Droppers no longer affect aliens. - Joan: - - rscdel: You can no longer drop survival capsules on top of dense objects, such - as the windows in the emergency shuttle. You can still drop them on non-dense - objects and mobs, however. - - tweak: Swarmers can now deconstruct objects simply by clicking. - - rscadd: Swarmers can still teleport mobs away via ctrl-click. - - bugfix: Emps will now properly damage swarmers. - Kor: - - rscadd: Added wisp lanterns to necropolis chests. - - rscadd: Added red/blue cube pairs to necropolis chests. - - rscadd: Added meat hooks to necropolis chests. - - rscadd: Added immortality talismans to necropolis chests. - - rscadd: Added paradox bags to necropolis chests. - - rscadd: Ripley drills work again. Go tear up lavaland. - PKPenguin321: - - tweak: Goofball's grab nerf has been reverted. - TechnoAlchemisto: - - tweak: Pickaxe upgrades are now better. - coiax: - - tweak: Efficiency Station Testing Lab now has a Drone Shell Dispenser - - tweak: Fixed an issue with a door on the Golem Ship - - rscadd: The unfathomable entity Carp'sie has blessed vir followers with mysterious - carp guardians. - - rscadd: Nanotrasen Cyborgs are now able to empty ore boxes without human assistance - - rscadd: Ore boxes are now craftable with 4 planks of wood - - tweak: Ore boxes now drop their contents when destroyed, or dismantled with a - crowbar - coiax, bobdobbington, Core0verload: - - rscadd: An experimental plant DNA manipulator, based on machinery recovered from - ancient seed vaults, has been installed in the Botany department. -2016-04-11: - Joan: - - rscadd: Blob cores will take slight brute damage from explosions. - RandomMarine: - - rscadd: Additional luxuries have been added to golem ships. Including new rewards. - Praise be to The Liberator! - - rscdel: However, jaunters are no longer easily obtained by free golems. - RemieRichards: - - rscadd: The Station Blueprints now display the piping/wiring and some of the machinery - the station started with, to assist in repairs - coiax: - - rscadd: Emagging the cargo console also unlocks regular contraband, in addition - to syndicate gear - - rscadd: A working drone shell dispenser is now on display in MetaStation's museum, - displaying the virtue of the tireless little workers! - - rscadd: Dreamstation now has a drone shell dispenser in the Toxins Launch Room -2016-04-12: - Incoming5643: - - rscadd: Leading scientists have finally proven that humans (and xenos) in fact - have tongues in their mouths. - - rscadd: Swapping out tongues allows the various races to change their speech impediments. - Putting a xeno tongue in someone allows them to make the hissing sound like - a xeno whenever they speak. - - rscdel: There are no erp mechanics tied to this feature. - - experiment: Remember that tongues are stored in the MOUTH, selecting the head - isn't good enough. - Kor: - - rscadd: Ash walker starting gear has been rebalanced. - - rscadd: Ash walkers can no longer use guns. - TrustyGun: - - rscadd: After carefully investing in the market, the Captain had enough money - to replace his silver flask with a golden one! - - rscadd: The Detective is now bringing his personalized flask to work, due to the - grim work he has to do. - - rscadd: The Booze-O-Mat now stocks 3 flasks. -2016-04-16: - Bawhoppen: - - tweak: Cryo is no longer god-awful. - CoreOverload: - - rscadd: A lot of items are now exportable in cargo. - - rscadd: Use Export Scanner to check any item's export value. - Erwgd: - - rscadd: Forks, bowls, drinking glasses, shot glasses and shakers can now be made - and recycled in the autolathe! Access the designs in the new 'Dinnerware' category. - - tweak: Kitchen knives have been moved to the Dinnerware category of the autolathe. - - rscadd: Butcher's cleavers can now be made in a hacked autolathe. - Fox McCloud: - - rscadd: Slime batteries now self-recharge. - - rscadd: Adds transference potion. A potion that allows the user to transfer their - consciousness to a simple mob. - - rscadd: Adds rainbow slime core reaction that generates a consciousness transference - potion when injected with blood. - Iamgoofball, Lati, Geo_Jerkal, Tanquetsunami25: - - rscadd: Lati requested that the Slime Processor will now automatically scoop up - any dead slimes into itself for processing. - - rscadd: Geo_Jerkal requested that you be able to mix Arnold Palmers with Tea and - Lemon Juice. - - rscadd: Tanquetsunami25 requested that cyborg be able to boop. - Incoming5643: - - rscdel: Removed the horrible meme skeletons, please don't sue us. - Kor: - - rscadd: Adrenals, no slips, surplus crates and SUHTANDOS now have minimum population - requirements before they can be purchased. - KorPhaeron: - - rscadd: You now need to butcher goliaths and watchers on lavaland to receive their - loot. Use the combat knives to do so. - Lati: - - rscadd: Custom floor tiles can now be added to floorbots. They will start replacing - other tiles with these tiles if the option is toggled on. - coiax: - - rscadd: Boxstation, not to be outdone by all the other competing station designs, - has installed a drone shell dispenser in the Testing Lab, which makes automated - drones to help fix the station. - - rscadd: Toy fans, rejoyce! The famous skeleton brothers from the beloved game - Belowyarn now have toys that you can win from the arcade machines! - - rscadd: Airlock painters can be printed at your local autolathe - - rscadd: Please do not attempt suicide with the airlock painter or the medical - wrench. - - rscadd: Metastation now has a plant DNA manipulator in Botany. - - rscadd: Using the fire extinguisher on yourself or others while in HELP intent - will spray you or them, rather than beat their probably flaming body with a - metal object. - - tweak: Alt-clicking extinguishers to empty them now wets the floor underneath - them. - lordpidey: - - rscadd: Meth labs can now blow up if you don't purify the ingredients or over-heat - the end product. - nullbear: - - rscadd: Added attack verbs for heart and tongue organs - - tweak: Maximum output of air pumps has been raised. -2016-04-18: - Joan: - - rscdel: Crates are now dense even when open. - - rscadd: You can now climb onto crates in the same way as table and sandbags, though - climbing onto crates is very fast and does not stun you. - - wip: You can walk on crates, provided both are closed/open or the crate you're - on is closed. - - rscdel: You can't close or open a crate if there's a large mob on top of it. - - rscadd: Stuffing items into a closet or crate is now instant and does not close - the closet or crate. Stuffing mobs into a closet or crate still takes time and - closes the closet/crate in question. - - imageadd: Crowbars and wirecutters have new inhand sprites. Crowbars can now be - distinguished from wrenches in-hand. - RandomMarine: - - tweak: Cloth items removed from biogenerator. Instead, it can create stacking - cloth that crafts those items. - - rscadd: In addition, cloth can be used to create grey jumpsuits, backpacks, dufflebags, - bio bags, black shoes, bedsheets, and bandages. - - tweak: Bedsheets now tear into cloth instead of directly into bandages. - Shadowlight213: - - tweak: AI will be notified when one of their cyborgs is detonated. - coiax: - - bugfix: Fixed slime grinders not sucking up more than one slime - - rscadd: Drones now start with a spacious dufflebag full of tools, so they will - stop stealing the captain's - - bugfix: Fixed issues with drones wearing chameleon headgear. - - rscadd: Added admin-only "snowflake drone" (also known as drone camogear) headgear. - nullbear: - - bugfix: Fixes air canisters being silent when bashed. -2016-04-20: - Erwgd: - - rscadd: The autolathe can now make trays. - Fox McCloud: - - bugfix: Fixes abductor vests having no cooldown between uses - Kor: - - rscadd: You can now craft boats and oars out of goliath hides. These boats can - move in lava. - - rscadd: Added a spooky, upgraded boat to necropolis chests. - coiax: - - tweak: Slime grinders now cease suction of new slimes while grinding - coiax, Joan: - - rscadd: Drone dufflebags now have their own sprite. - kevinz000: - - rscadd: 'Admin Detection Multitool: A multitool that shows when administrators - are watching you! Now you can grief in safety!' - - tweak: Syndicate R&D scientists have significantly increased the range of their - "AI detection multitools", making them turn yellow when an AI's tracking is - near, but not on you just yet! -2016-04-21: - Kor: - - rscadd: Mechas can now toggle strafing mode. -2016-04-22: - Bawhoppen: - - rscadd: Security belts can now hold any type of grenade. This includes barrier - grenades. - - rscadd: Janitorial belts are now able to store chem grenades. - - rscadd: Military belts have been given a size upgrade, so they can now hold larger - items. - - rscadd: Bandoliers have been given a buff and now can hold a much larger amount - of ammunition. - nullbear: - - bugfix: xenobio console is deconstructable again. - - tweak: syndibomb recipe calls for any matter bin, scaling effectiveness with tier. -2016-04-23: - Joan: - - bugfix: Aliens can now open crates and lockers. - - bugfix: Aliens and monkeys can now climb climbable objects, such as crates and - sandbags. - - rscadd: Aliens climb very, very fast. - Kor: - - rscadd: Running HE pipes over lava will now heat the gas inside. - - rscadd: Alt+clicking on your mecha (while inside it) will toggle strafing mode. - Mercenaryblue: - - rscadd: Allowed all corgis to wear red wizard hats. - TechnoAlchemisto: - - rscadd: Goliaths now drop bones, and Watchers drop sinews. - - rscadd: You can craft primitive gear from bone and sinew. - coiax: - - bugfix: Non-humans are now able to interact with bee boxes. -2016-04-25: - Joan: - - bugfix: You can once again hit a closet or crate with an item to open it. - Kor Razharas: - - rscadd: Adds support for autoclicking. - - rscadd: The Shock Revolver has been added to RnD. - - rscadd: The Laser Gatling Gun has been added to RnD. The Gatling Gun uses autoclick - to fire as you hold down the mouse. - - rscadd: The Research Director now starts with a box of firing pins. - - rscadd: The SABR and Stun Revolver recipes have been removed from RnD - coiax: - - rscadd: Laughter demons are like slaughter demons, but they tickle people to death - - tweak: Slaughter demons are no longer able to cast spells while phased. - - tweak: Wizards can now speak while ethereal, but still cannot cast spells while - ethereal. - - rscadd: 'Centcom''s "drone expert" reports that drones vision filters have been - upgraded to include the option of making all beings appear as harmless animals. - info: As always, all drone filters are togglable.' - - rscadd: As a sign of friendship between the Free Golems and Centcom, they have - modified Centcom's jaunter to be worn around a user's waist, which will save - them from falling to their death in a chasm. - - experiment: The Golems warn that these modifications have created a risk of accidental - activation when exposed to heavy electromagnetic fields. - - tweak: Renamed hivelord stabilizer to stabilizing serum. - - rscadd: Centcom regret to inform you that new instabilities with nearby gas giants - are causing exospheric bubbles to affect the telecommunications processors. - Please contact your supervisor for further instructions. - - rscadd: The Janitor's Union has mandated additional features to station light - replacer devices. - - rscadd: The light replacer now can be used on the floor to replace the bulbs of - any lights on that tile. - - rscadd: The light replacer now eats replaced bulbs, and after a certain number - of bulb fragments (four) will recycle them into a new bulb. - - tweak: The description of the light replacer is now more informative. - - rscadd: Clown mask appearance toggle now has an action button. -2016-04-26: - Iamgoofball & Super Aggro Crag: - - tweak: Fluorosulfuric Acid now has doubled acid power. - - experiment: Fluorosulfuric Acid now does BONUS burn damage scaling on the time - it's been inside the consumer. - Joan: - - tweak: Blobbernauts now spawn at half health. - - tweak: Blobbernauts regeneration on blob is now 2.5 health per tick, from 5. - - tweak: Blobbernauts now cost 40 resources to produce, from 30. - - rscdel: Factories supporting blobbernauts do not spawn spores. - Lati: - - tweak: Syndicate bomb can be only delayed once by pulsing the delay wire. Time - gained from this is changed from 10 seconds to 30 seconds. - TechnoAlchemisto: - - tweak: Goliath plates can now be stacked. - phil235: - - rscadd: More structures and machines are now breakable and/or destroyable with - melee weapon. Additionally, Some structures and machines that are already breakable/destroyable - are now affected by more attack methods (gun projectiles, thrown items, melee - weapons, xeno/animal attacks, explosions). - - rscadd: Hitting any machine now always makes a sound. - - rscadd: You can hit closed closets/crates and doors by using an item on harm intent - (but it doesn't actually hurt them). - - rscadd: you can now burst filled water balloons with sharp items. - - bugfix: Wooden barricade drops wood when destroyed. - - bugfix: Slot machines with coins inside are deconstructable now. -2016-04-27: - TechnoAlchemisto: - - rscadd: Miners can now select explorer belts from the mining vendor using their - vouchers, or mining points. -2016-04-28: - Bawhoppen: - - tweak: Sandbags are no longer tablecrafted. Now you just put in sand (or ash) - by hand to make them. - - rscadd: Miners and Engis now get boxes of empty sandbags in their lockers. Miners - also get a few premade aswell. - - rscadd: You can now break sandstone down into normal sand. - Joan: - - rscadd: Attacking a blob with an analyzer will tell you what its chemical does, - its health, and a small fact about the blob analyzed. - - rscdel: 'NERFS:' - - tweak: Zombifying Feelers does less toxin damage. - - tweak: Adaptive Nexuses does slightly less brute damage. - - tweak: Replicating Foam does slightly less brute damage. - - tweak: Blob Sorium does slightly less brute damage. - - tweak: Blob Dark Matter does slightly less brute damage. - - tweak: Cyrogenic Liquid injects slightly less frost oil and ice and does slightly - less stamina damage. - - tweak: Pressurized Slime does less brute, oxygen, and stamina damage, and extinguishes - objects and people on turfs it wets. - - rscdel: Blob core strong blobs no longer give points when removed. - - wip: 'PROBABLY BUFFS:' - - tweak: Flammable Goo now does slightly more burn damage and applies more firestacks, - but applies fire to blob tiles that don't share its chemical. - - tweak: Energized Fibers does slightly more burn damage, slightly less stamina - damage, and now takes damage from EMPs. - - rscadd: 'BUFFS:' - - tweak: Boiling Oil does slightly more burn damage and applies more firestacks. - - tweak: Reactive Gelatin does slightly more damage on average. - - tweak: Penetrating Spines now also ignores bio resistance in addition to armor. - - tweak: Hallucinogenic Nectar causes more hallucinations. - - tweak: Normal strong blobs now refund 4 points when removed, from 2. - - rscadd: Charger holoparasites now play a sound when hitting a target, as well - as shaking the target's camera. - PKPenguin321: - - rscadd: The warden's locker now contains krav maga gloves. - TechnoAlchemisto: - - rscadd: You can now craft skull helmets from bones. - - rscadd: Syndicate bombs are now harder to detect -2016-04-29: - Bawhoppen: - - rscadd: Several lesser-used uplink's TC cost have been rebalanced. - - tweak: Steckhin down from 9TC to 7TC. - - tweak: Tactical medkit down from 9TC to 4TC. - - tweak: Syndicate magboots from 3TC to 2TC. - - tweak: Powersinks down from 10TC to 6TC. - - tweak: Stealth rad-laser down from 5TC to 3TC. - - tweak: Bundles have been updated accordingly. - Incoming5643: - - rscadd: The staff/wand of door creation can now also be used to open airlock doors. - - rscadd: Doors spawned by the staff/wand now start open. Keep this in mind the - next time you try to turn every wall on the escape shuttle into a door. - Robustin: - - rscdel: The Teleport Other, Veil, Imbue, Reveal, Disguise, Blood Drain, Timestop, - Stun, Deafen, Blind, Armaments, Construct Shell and Summon Tome runes are gone. - - rscadd: Disguise, Veil/Reveal, Construct Shell and Armaments are now talismans. - The Construction talisman requires 25 sheets of metal. - - rscadd: Cultists will now receive a warning when attempting to use emergency communion - or create the Nar-Sie rune - - rscadd: Cultists can now create talismans with a super-simple Talisman-Creation - rune. It takes about 10 seconds to invoke and will present a menu of all the - talisman choices available. Its as simple as tossing the paper on, clicking - the rune, and selecting your talisman. - - rscadd: Cultists now have a proc, "How to Play" that will give a basic explanation - of how to succeed as a cultist. - - rscadd: The new Talisman of Horror is a stealthy talisman that will cause hallucinations - in the victim. Great for undermining security without having to commit to murder - them in middle of the hall. - - rscadd: Creating the Summon Nar-Sie rune does takes slightly less time, but now - adds a 3x3 square of red barrier shields (60hp each) to prevent the rune-scriber - from being bumped by other idiots. This works in conjunction with the rune's - warning to give crew a chance to stop the summoning. Manifest ghost has a weaker - 1x1 shield to prevent bumps as well. - - rscadd: Talismans are now color-coded by their effect so you can easily organize - and deploy talismans. - - rscadd: You can now make colored paper in the washing machine using crayons or - stamps, honk. - - rscadd: The Electromagnetic Disruption rune will now scale with the number of - cultists invoking the rune. **A full 9-cultist invocation will EMP the entire - station!** - - rscadd: Armaments will now give the recipient a new cult bola. - - rscadd: The new Talisman of Shackling will apply handcuffs directly to the victim. - These cuffs will disappear when removed. - - tweak: Cult slur is a little less potent so victims might be able to squeeze in - a coherent word or two if you let them keep jabbering on the radio, stun talismans - now have less of a health cost and the stun is back to 10 seconds, from 9. - - tweak: Rune and Talisman names now give a much clearer idea of what they do. - - experiment: The following changes are courtesy of ChangelingRain - - rscadd: The Teleport rune now allows cultists to select which rune to teleport - to, and teleports everything on it. - - rscadd: Veil and Reveal are merged into Talisman of Veiling. Veiling has two uses, - the first use will hide and the second use will reveal. - - rscadd: New icons for the cult bola - - tweak: You can now attack fellow cultists with a Talisman of Arming to arm them - with robes and a sword. - - tweak: You can now only place one rune per tile. - - tweak: Ghosts are notified when a new manifest rune is created. - TechnoAlchemisto: - - rscadd: Sinew can now be fashioned into restraints. - coiax: - - tweak: Internals Crate now contains breath masks and small tanks. - - rscadd: Metal foam grenade box crate added for 1000 points - - rscadd: Added two Engineering Mesons to Engineering Gear Crate - - tweak: Engineering Gear now costs 1300 - - rscadd: Breach Shield Generator Crate added for 2500 points - - rscadd: Grounding Rod Crate added for 1700 points - - rscadd: PACMAN Generator Crate added for 2500 - - rscadd: Defibrillator Crate added for 2500 - - rscadd: Added more helmets to the Laser Tag Crate. - - rscadd: Nanotrasen Customs report that some wide band suppliers have been providing - "alternative" firing pins. Nanotrasen reminds all crewmembers that contraband - is contraband. - - rscadd: Contraband crates now appear visually similar to legitimate crates. - - bugfix: The cargo shuttle's normal transit time has been restored. - nullbear: - - rscadd: Adds a preference option, allowing players to toggle whether recipes with - no matching components should be hidden. -2016-04-30: - Joan: - - rscadd: Blobs attempting to attack the supermatter will instead be eaten by it. - - experiment: This doesn't mean throwing a supermatter shard at the blob is a good - idea; blobs attacking it will gradually damage it, eventually resulting in a - massive explosion, and it will not consume blobs if on a space turf. - - tweak: Hitting a locker or crate with an ID, PDA with ID, or wallet with ID will - try to toggle the lock instead of trying to open it. - - imageadd: Cable coils, cablecuffs, and zipties now all have properly colored inhands. - Kor: - - rscadd: Megafauna have been added to lavaland. - - rscadd: Ash Drakes have been spotted roaming the wastes. Use your GPS to track - their fiery signals. - - rscadd: You can now knock on the Necropolis door, but it's probably best that - you don't. - Mercenaryblue: - - rscadd: Adds a basic paper plane to the game. Fold paper with alt-clicking. - - rscadd: Paper planes are now fully compatible with every stamps on station. - bgobandit: - - rscadd: 'Nanotrasen has released Cards Against Spess! Visit your local library - for a copy. Warning: may cause breakage of the fourth wall.' -2016-05-02: - Joan: - - tweak: Blob spores spawn from factories 2 seconds faster, but the factory goes - on cooldown when any of its spores die. - - experiment: You can examine tomes, soulstones, and construct shells to see what - you can do with them. - - rscadd: Releasing a shade from a soulstone now allows you to reuse that soulstone - for capturing shades or souls, instead of preventing the stone's use forever - if the shade dies. - - imageadd: Runes now actually pulse red on failure. - - rscadd: The Summon Cultist rune no longer includes the cultists invoking it in - the selection menu. - - tweak: Imperfect Communication renamed to Emergency Communication. - - rscdel: You can no longer hide the Nar-Sie rune with a Talisman of Veiling/Revealing. - Kor: - - rscadd: Engineering cyborgs now have internal blueprints. - Lzimann: - - tweak: Automatic nexus placing time changed from 2 to 15 minutes. - - tweak: Prophet's gear(hat and staff) prioritizes the backpack instead of automatically - equipping. - - rscadd: Divine telepathy and prophet to god speak now have a follow button for - ghosts. - - rscadd: Divine telepathy and prophet to god speak now has the god's color. - - bugfix: CTF spawn protection trap is no longer constructable - Mercenaryblue: - - tweak: Drastically reduced the chances of eye damage when throwing a paper plane. - RandomMarine: - - tweak: Medical HUDs improved. To better prioritize patients, subjects deep into - critical condition have a blinking red outline around the entire HUD icon, and - will blink more rapidly when very close to death. - TechnoAlchemisto: - - tweak: Security uniforms have been made more professional, and more tactical. - TrustyGun: - - rscadd: By crafting together a legion skull, a goliath steak, ketchup, and capsaicin - oil, you can create Stuffed Legion! Be careful, it's hot. - coiax: - - rscadd: Centcom Department of [REDACTED] have announced a change of supplier of - [EXPLETIVE DELETED]. As such, for security reasons, the absinthe [MOVE ALONG - CITIZEN] will instead be [NOTHING TO SEE HERE]. We hope that this will not affect - the performance of the [INFORMATION ABOVE YOUR SECURITY CLEARANCE]. - nullbear: - - rscadd: A reminder for crew to avoid mopping floors in cold rooms, as the water - will freeze and provide a dangerous slipping hazard known as 'ice'. Running - on it is not recommended. - - rscadd: Frostoil is an effective chemical for rapidly cooling areas in the event - of a fire. - - rscadd: Added X4, a breaching charge more destructive than C4, it can be purchased - from uplinks. - - rscadd: C4 can be used with assemblies. - - bugfix: Fixes chembomb recipe to use any matter bin. Again. - - bugfix: ARG's disappear once finished reacting. -2016-05-03: - coiax, Robustin: - - tweak: Changeling Fleshmend is much less effective when used repeatedly in a short - time. Changeling Panacea is much more effective at purging reagents, reducing - radiation and now reduces braindamage. -2016-05-04: - Fox McCloud: - - tweak: shock revolver projectiles are now energy instead of bullets - Joan: - - rscdel: Cultists no longer communicate via tomes. - - rscadd: Cultists now communicate via the 'Communion' action button. - - rscadd: Examining the blob with an active research scanner or medical hud will - display effects, akin to hitting it with an analyzer. - - rscadd: Improved medical HUDs to work on all living creatures. - - rscadd: Drones and swarmers, being machines, require a diagnostic HUD for analysis - instead. - TechnoAlchemist: - - rscadd: You can now craft cloaks from the scales of fallen ash drakes, look for - the recipe in tablecrafting! - coiax: - - rscadd: The Service and the Standard cyborg module now have a spraycan built in, - for hijinks and passing on important urban messages. The Service cyborg module - also has a cyborg-hand labeler, in case anything needs to be labelled. - - rscadd: 'Centcom Suicide Prevention wishes to remind the station: Please do not - kill yourself with a hand labeler.' - xxalpha: - - bugfix: Fixed the mk-honk prototype shoes. -2016-05-05: - Joan: - - tweak: Revenants are slower while revealed. - - rscdel: Revenants can no longer cast inside dense objects. - - tweak: Lying down will cure Blight much, much faster. - \"Macho Man\" Randy Savage: - - rscadd: OOOHHH YEAAAAHHHH - - rscadd: SNAP INTO A JLIM SIM WITH THE ALL NEW WRESTLING BELT - - rscadd: YOU CAN FREAKOUT YOUR OPPONENTS WITH THE 5 HOT MOVES ON THIS BELT YEAH - - rscadd: PRAY TO THE LOCAL SPACE GODS TO EXCHANGE YOUR TELECRYSTALS TO ENSURE THE - CREAM RISES TO THE TOP -2016-05-07: - Robustin: - - rscadd: A small pantry has been added to SW maintenance. - nullbear: - - rscadd: Makes Shift+Middleclick the hotkey for pointing. - phil235: - - rscadd: DISMEMBERMENT! Humans can now lose their bodyparts. Explosions and being - attacked with a heavy sharp item on a specific bodypart can cause dismemberment. - - rscadd: You can't be handcuffed or legcuffed if you're missing an arm or leg. - You can't use items when you have no legs, your arms are too busy helping you - crawl, unless your are buckled to a chair. You're slower when missing a leg. - - rscadd: You lose organs and items if the bodypart they are inside gets cut off. - You can always retrieve them by cutting the dropped bodypart with a sharp object. - - rscadd: Medbay can replace your missing limbs with robotic parts via surgery, - or amputate you. - - rscadd: Changelings do not die when decapitated! They can regrow all their limbs - with Fleshmend, or just one arm with Arm Blade or Organic Shield. - - rscadd: Your chest cannot be dropped, but it will spill its organs onto the ground - when dismembered. -2016-05-08: - CoreOverload: - - rscadd: You can now de-power inactive swarmers with a screwdriver to prevent them - from activating. - - rscadd: Recycle depowered swarmers in autolathe or sell them in cargo! - Joan: - - rscadd: Cultist constructs, and shades, can now invoke runes by clicking them. - - rscdel: This does not include Manifest Ghost, Blood Boil, or Astral Journey runes. - - rscadd: Medical huds will now show parasites in dead creatures. - KorPhaeron: - - rscadd: Burn weapons can now dismember, and they reduce the limb to ash in the - process - - rscadd: Weapons with high AP values will now dismember limbs much easier. These - values are subject to change depending on how things play out over the next - week or two. - - rscadd: Various weapons with high AP values had them lowered (chaplain scythe, - energy sword, dualsaber) to prevent them taking limbs off in a single hit. - - rscadd: The chaplain has two new weapons (they are mechanically identical to previous - weapons, before anyone gets upset about balance). One is dismemberment themed, - the other is related to a new antagonist. - Mercenaryblue: - - rscadd: Throwing a Banana Cream Pie will now knock down and cream the target's - face. - - rscadd: You can clean off the cream with the usual methods, such as soap, shower, - cleaner spray, etc. - - rscadd: The Clown Federation would like to remind the crew that the HoS is worth - double points! Honk! - Robustin: - - experiment: There are rumors that the Cult's 'Talisman of Construction', which - turns ordinary metal for construct shells, can be used on plasteel to create - structures. If the stories are true, the cult has been producing relics of incredible - power through this transmutation. - coiax: - - rscadd: To save credits, Centcom has subcontracted out emergency shuttle design - to third parties. Rest assured, all of these produced shuttles meet our stringent - quality control. - - tweak: Lavaland ruins spawning chances have been modified. Expect to see more - smaller and less round affecting ruins, and no duplicates of major ruins, like - ash walkers or golems. - lordpidey: - - rscadd: Infernal devils have been seen onboard our spacestations, offering great - boons in exchange for souls. - - rscadd: Employees are reminded that their souls already belong to nanotrasen. If - you have sold your soul in error, a lawyer or head of personnel can help return - your soul to Nanotrasen by hitting you with your employment contract. - - rscadd: Nanotrasen headquarters will be bluespacing employment contracts into - the Lawyer's office filing cabinet when a new arrival reaches the station. It - is recommended that the lawyer create copies of some of these for safe keeping. - - rscadd: Due to the recent infernal incursions, the station library has been equipped - with a Codex Gigas to help research infernal weaknesses. Please note that reading - this book may have unintended side effects. Also note, you must spell the devil's - name exactly, as there are countless demons with similar names. - - rscadd: When a devil dies, if the proper banishment ritual is not performed on - it's remains, the devil will revive itself at the cost of some of it's power. The - banishment ritual is described in the Codex Gigas. - - rscadd: When a demon gains enough souls, It's form will mutate to a more demonic - looking form. The Arch-demon form is known to be on par with an ascended shadowling - in power. -2016-05-09: - Joan: - - tweak: Sporing Pods produces spores when expanding slightly more often. - - tweak: Replicating Foam now only expands when hit with burn damage, from all damage, - but does so at a higher chance. Free expansion from it is, however, more rare. - - tweak: Penetrating Spines does slightly more brute damage, and Poisonous Strands - does its damage 50% faster. - KorPhaeron: - - rscadd: The AI no longer has a tracking delay because artificial lag is the most - miserable thing in the world. - Razharas: - - tweak: crafting can now be done everywhere, little button near the intents with - hammer on it(its not T) opens the crafting menu, if you are in a locker or mech - only things in your hands will be considered for crafting - coiax: - - tweak: Skeletons now have bone "tongues" -2016-05-11: - Joan: - - rscadd: Shades can move in space. - - rscadd: Artificers can now heal shades. - coiax: - - tweak: Added action button to chameleon stamp - - rscadd: Added APPROVED and DENIED stamps to Bureaucracy Crate - - rscadd: Added the cream pie closet to various maps. Added contraband Cream Pie - Crate to Cargo. - pudl: - - rscadd: The armory has been redesigned. -2016-05-12: - Shadowlight and coiax: - - rscdel: Due to numerous reports of teams using human weapons instead of stealth - when carrying out their assignments, future teams have been genetically modified - to only be able to use their assigned blaster and are unable to use human weapons. -2016-05-13: - Joan: - - rscadd: Cultists can now unanchor and reanchor cult structures by hitting them - with a tome. Unanchored cult structures don't do anything. - KorPhaeron: - - rscadd: Drake attacks are now much easier to avoid. - - rscadd: Player controlled drakes can now consume bodies to heal, and alt+click - targets to divebomb them. - TechnoAlchemisto: - - rscadd: More items have been added to the mining vendor, check them out! -2016-05-14: - Cruix: - - bugfix: Fixed foam darts with the safety cap removed being reset when fired. - - rscadd: Added the ability to remove pens from foam darts. - - bugfix: Foam darts with pens inside them are no longer destroyed when fired. - - bugfix: Foam darts no longer drop two darts when fired at a person on a janicart. - Joan: - - rscdel: The Raise Dead rune no longer accepts dead cultists as a sacrifice to - raise the dead. - Metacide: - - rscadd: 'A small update for MetaStation, changes include:' - - rscadd: Added extra grounding rods to the engine area to stop camera destruction. - - rscadd: Added canvases and extra crayons to art storage and some easels to maint. - - rscadd: Added formal security uniform crate for parades to the warden's gear area. - - rscadd: The armory securitron now starts active. - - rscadd: The genetics APC now starts unlocked. - - rscadd: Other minor changes and fixes as detailed on the wiki page. - coiax, Nienhaus: - - rscdel: Unfortunately, the Belowyarn toys have been withdrawn from distribution - due to Assistants choking on the batteries. Centcom has sent their condolences - to the battery manufacturing plant. - - rscadd: We are introducing Oh-cee the original content skeleton figurines. Pull - its string, and hear it say a variety of phrases. Not suitable for infants or - assistants under 36 months. - - tweak: Note that pulling the string of all talking toys is now visible to others. - - rscadd: Talking toys produce a lot more chatter than they did before. So do some - skeleton "tongues". - pudl: - - rscadd: Adds normal security headsets to security lockers - xxalpha: - - bugfix: Fixed drone dispenser multiplying glass or metal. -2016-05-15: - Iamgoofball: - - rscadd: Nanotrasen is short on cash, and are now borrowing escape shuttles from - other stations, and Space Apartments. - Mercenaryblue: - - rscadd: Turns out a bike horn made with Bananium is flipping awesome! Honk! -2016-05-18: - Cruix: - - bugfix: unwrapping an item with telekinesis no longer teleports the item into - your hand. - Metacide: - - rscadd: 'MetaStation: the library and chapel have had windows removed to make - them feel more isolated.' - MrStonedOne: - - tweak: Tesla has been rebalanced. - - tweak: It should now lose balls slower, increase balls faster, and be a bit more - aggressive about finding nearby grounding rods. - - tweak: additional zaps from it's orbiting balls should be a bit more varied, but - a touch less powerful. - Robustin: - - rscadd: Lings have a new default ability, Hivemind Link. This lets you bring a - neck-grabbed victim into hivemind communications after short period of time. - You can talk to victims who are in crit/muted and perhaps persuade them to help - you, give you intel, or even a PDA code. The link will stabilize crit victims - to help ensure they do not die during the link. - Shadowlight213: - - bugfix: Cleanbot and floorbot scanning has greatly improved. they should prioritize - areas next to them, as well as resolve themselves stacking on the same tiles. - coiax: - - rscadd: Kinetic accelerators only require one hand to be fired, as before - - rscdel: Kinetic accelerators recharge time is multiplied by the number of KAs - that person is carrying. - - rscdel: Kinetic accelerators lose their charge quickly if not equipped or being - held - - rscadd: Kinetic accelerator modkits (made at R&D or your local Free Golem ship) - overcome these flaws -2016-05-19: - Razharas: - - rscadd: HE pipes once again work in space and in lava. - - rscadd: Space cools down station air again -2016-05-20: - KorPhaeron: - - rscadd: The HoS now has a pinpointer, the Warden now has his door remote. - bgobandit: - - rscadd: Nanotrasen has begun to research BZ, a hallucinogenic gas. We trust you - will use it responsibly. - - rscadd: BZ causes hallucinations once breathed in and, at high doses, has a chance - of doing brain damage. - - rscadd: BZ is known to cause unusual stasis-like behavior in the slime species. - coiax: - - rscadd: Neurotoxin spit can be used as makeshift space propulsion -2016-05-21: - Iamsaltball: - - rscadd: Heads of Staff now have basic Maint. access. - NicholasM10: - - rscadd: The chef can now make Khinkali and Khachapuri - coiax: - - rscdel: NOBREATH species (golems, skeletons, abductors, ash walkers, zombies) - no longer have or require lungs. They no longer take suffocation/oxyloss damage, - cannot give CPR and cannot benefit from CPR. Instead of suffocation damage, - during crit they take gradual brute damage. - - rscdel: NOBLOOD (golems, skeletons, abductors, slimepeople, plasmamen) species - no longer have or require hearts. - - tweak: NOBREATH species that require hearts still take damage from heart attacks, - as their tissues die and the lack of circulation causes toxins to build up. - - rscdel: NOHUNGER (plasmamen, skeletons) species no longer have appendixes. - coiax, OPDingo: - - tweak: Renamed and reskinned legion's heart to legion's soul to avoid confusion; - it is not a substitute heart, it is a supplemental chest organ. - - rscadd: Legion's souls are now more obviously inert when becoming inert. - nullbear: - - tweak: Wetness updates less often. - - rscadd: Wetness now stacks. Spraying lube over a tile that already has lube, will - make the lube take longer to dry. Likewise, dumping 100 units of lube will take - longer to dry than if only 10 units were dumped. (lube used to last just as - long, regardless of whether it was 1u, or 100u) There is a limit, however, and - you can't stack infinite lube. - - tweak: Hotter temperatures cause water to evaporate more quickly. At 100C, water - will boil away instantly. - - rscadd: About 5 seconds of wetness are removed from a tile for each unit of drying - agent. Absorbant Galoshes remain the most effective method of drying, and dry - tiles instantly regardless of wetness. -2016-05-22: - coiax: - - rscdel: Lavaland monsters now give ruins a wide berth. - - bugfix: Glass tables now break when people are pushed onto them. -2016-05-23: - CoreOverload: - - rscadd: New cyberimplant, "Toolset Arm", is now available in RnD. - coiax, OPDingo: - - rscadd: Crayons and spraycans are now easier to use. - - rscdel: Centcom announce due to budget cuts their supplier of rainbow crayons - has been forced to use more... exotic chemicals. Please do not ingest your standard - issue crayon. - kevinz000: - - rscadd: 'Peacekeeper borgs: Security borgs but without any stuns or restraints! - Modules: Harm Alarm, Cookie Dispenser, Energy Bola Launcher, Peace Injector - that confuses living things, and a weak holobarrier projector! It also comes - with the ability to hug.' - - rscadd: 'Cookie Synthesizer: Self recharging RCD that prints out cookies!' - - tweak: Nanotrasen scientists have added a hugging module to medical and peacekeeper - cyborgs to boost emotions during human-cyborg interaction. -2016-05-24: - Joan: - - rscdel: You can no longer scribe the Summon Nar-Sie rune under non-valid conditions. - Kiazusho: - - rscadd: Added three new advanced syringes to R&D -2016-05-26: - Xhuis: - - rscadd: Purge all untruths and honor Ratvar. - coiax: - - bugfix: Fixes bug where bolt of change to the host would kill an attached guardian. - - bugfix: Fixes bug where bolt of change to laughter demon would not release its - friends. - - bugfix: Fixes bug where bolt of change to morphling would not release its contents. - - bugfix: Fixes bug where bolt of change transforming someone into a drone would - not give them hacked laws and vision. - - bugfix: Blobbernauts created by a staff of change are now "independent" and will - not decay if seperated from a blob or missing a factory. - - rscadd: Independent blobbernauts added to gold slime core spawn pool. - - rscadd: Medical scanners now inform the user if the dead subject is within the - (currently) 120 second defib window. - - rscadd: Ghosts now have the "Restore Character Name" verb, which will set their - ghost appearance and dead chat name to their character preferences. - - bugfix: Mob spawners now give any generated names to the mind of the spawned mob, - meaning ghosts will have the name they had in life. - - bugfix: Fixes interaction with envy's knife and lavaland spawns. - - bugfix: Fixes a bug where swarmers teleporting humans would incorrectly display - a visible message about restraints breaking. - - rscdel: Emagging the emergency shuttle computer with less than ten seconds until - launch no longer gives additional time. - - rscadd: The emergency shuttle computer now reads the ID in your ID slot, rather - than your hand. -2016-05-27: - coiax: - - rscdel: Gatling gun removed from R&D for pressing ceremonial reasons. - phil235: - - tweak: Pull and Grab are merged together. Pulling stays unchanged. Using an empty - hand with grab intent on a mob will pull them. Using an empty hand with grab - intent on a mob that you're already pulling will try to upgrade your grip to - aggressive grab>neck grab>kill grab. Aggressive grabs no longer stun you, but - they act exactly like a handcuff, preventing you from using your hands until - you escape the grip. You can break free from the grip by trying to move or using - the resist button. - - tweak: Someone pulling a restrained mob now swap position with them instead of - getting blocked by the mob, unable to even push them. -2016-05-29: - GunHog: - - rscadd: The CE, RD, and CMO have been issued megaphones. - Paprika, Crystalwarrior, Korphaeron and Bawhoppen: - - rscadd: Pixel projectiles. This is easier to see than explain, so go fire a weapon. - Xhuis: - - rscadd: Ratvar and Nar-Sie now actively seek each other out if they both exist. - - tweak: Celestial gateway animations have been twweaked. - - tweak: Ratvar now has a new sound and message upon spawning. - - tweak: Ratvar now only moves one tile at a time. - - bugfix: The celestial gateway now takes an unreasonably long amount of time. - - bugfix: God clashing is now much more likely to work properly. - - bugfix: Function Call now works as intended. - - bugfix: Break Will now works as intended. - - bugfix: Holy water now properly deconverts servants of Ratvar. - - bugfix: Deconverted servants of Ratvar are no longer considered servants. - pudl: - - rscadd: Chemicals should now have color, instead of just being pink. -2016-05-30: - coiax: - - rscadd: A new Shuttle Manipulator verb has been added for quick access to probably - the best and most mostly bugfree feature on /tg/. - - rscadd: Spectral sword is now a point of interest for ghosts. - - bugfix: Clicking the spectral sword action now orbits the sword, instead of just - teleporting to its location. - - bugfix: Gang tags can again be sprayed over. - - bugfix: Fixes bug where the wisp was unable to be recalled to the lantern. - xxalpha: - - rscdel: Engineering, CE and Atmos hardsuits no longer have in-built jetpacks. -2016-05-31: - CoreOverload: - - rscadd: 'Cleanbot software was updated to version 1.2, improving pathfinding and - adding two new cleaning options: "Clean Trash" and "Exterminate Pests".' - - experiment: New cleaning options are still experimental and disabled by default. - Kiazusho: - - bugfix: Changeling organic suit and chitin armor can be toggled off once again. - Kor: - - rscadd: The Japanese Animes button is back, - - rscadd: 'The chaplain has three new weapons: The possessed blade, the extra-dimensional - blade, and the nautical energy sword. The former has a new power, the latter - two are normal sword reskins.' - - rscadd: The chapel mass driver has been buffed. - coiax: - - rscdel: Zombies can no longer be butchered - - rscadd: If you encounter an infectious zombie, be cautious, its claws will infect - you, and on death you will rise with them. If you manage to kill the beast, - you can remove the corruption from its brain via surgery, or just chop off the - head to stop it coming back. - - rscadd: Adds some stock computers and lavaland to Birdboat Station. - - bugfix: Free Golem scientists have proved that as beings made out of stone, golems - are immune to all electrical discharges, including the tesla. - - rscadd: Nuclear bombs are now points of interest. Never miss a borg steal a nuke - from the syndicate shuttle again! - - rscadd: Alt-clicking a spraycan toggles the cap. -2016-06-01: - coiax: - - rscadd: Added a mirror to the beach biodome. Beach Bums, rejoyce! - pudl: - - rscadd: The brig infirmary has received a redesign. -2016-06-02: - Joan: - - tweak: Closed false walls will block air. - Lati: - - rscadd: R&D required levels and origin tech levels have been rebalanced - - experiment: Overall, items buildable in R&D have lower tech levels and items in - other departments have their tech levels raised. Remember to use science goggles - to see tech levels of items! - - tweak: There are now level gates at high levels. R&D scientists will need help - from others to get past these level gates. - - tweak: Other departments such as hydroponics and genetics will be important to - R&D's progress now and xenobio, mining and cargo are more important than before - - tweak: Efficiency upgrades are back in R&D machines and tweaked to be less powerful - in autolathes - - rscdel: Reliability has been removed from all items - - bugfix: Most bugs in R&D machines should be fixed - PKPenguin321 & Nienhaus: - - rscadd: Letterman jackets are now available from the ClothesMate. - Quiltyquilty: - - rscadd: The bar has seen a redesign. - coiax: - - rscadd: Clone pods now notify the medical channel on a successful clone. They - also notify the medical channel if the clone dies or is horribly mutilated; - but not if it is ejected early by authorised medical personnel. - - rscadd: Cloning pods now are more capable of cloning humanoid species that do - not breathe. - - bugfix: You can only be damaged once by a shuttle's arrival. It is still unpleasant - to be in the path of one though; try to avoid it. - - rscadd: Adds Asteroid emergency shuttle to shuttle templates. It is a very oddly - shaped one though, it might not be compatible with all stations. - - rscdel: The Chaplain soulshard can only turn a body into a shade once. A released - shade can still be reabsorbed by the stone to heal it. - - rscadd: The shuttle manipulator now has a Fast Travel button, for those admins - that really want a shuttle to get to where its going FAST. -2016-06-04: - MrStonedOne: - - bugfix: fixes see_darkness improperly hiding ghosts in certain cases. - Xhuis: - - tweak: Clockwork marauders can now smash walls and tables. - - tweak: Servants are no longer turned into harvesters by Nar-Sie but instead take - heavy brute damage and begin to bleed. Similarly, cultists are no longer converted - by Ratvar but instead take heavy fire damage and are set ablaze. - - rscadd: Added clockwork reclaimers. Ghosts can now click on Ratvar to become clockwork - reclaimers - small constructs capable of forcefully converting those that still - resist Ratvar's reign. Alt-clicking a valid target will allow the reclaimer - to leap onto the head of any non-servant, latching onto their head and converting - the target if they are able. The target will be outfitted with an unremovable, - acid-proof hat version of the reclaimer. The reclaimer will be able to speak - as normal and attack its host and anything nearby. If the reclaimer's host goes - unconscious or dies, it will leap free. - - rscadd: Added pinion airlocks. These airlocks can only be opened by servants and - conventional deconstruction will not work on them. They can be created by proselytizing - a normal airlock or from Ratvar. - - rscadd: Added ratvarian windows. They are created when Ratvar twists the form - of a normal window, and there are both single-direction and full-tile variants. - - bugfix: Non-servants can no longer use clockwork proselytizers or mending motors. - - bugfix: Servants are now deconverted properly. - coiax: - - bugfix: The cloning pod now sounds robotic on the radio. - - rscadd: For extra observer drama, ghosts can now visibly see the countdown of - syndicate bombs, nuclear devices, cloning pods, gang dominators and AI doomsday - devices. -2016-06-05: - Joan: - - rscadd: Clockwork structures can be damaged by projectiles and simple animals, - and will actually drop debris when destroyed. - - rscadd: AIs and Cyborgs that serve Ratvar can control clockwork airlocks and clockwork - windoors. - - rscadd: The clockwork proselytizer can now proselytize windows, doors, grilles, - and windoors. - - rscadd: The clockwork proselytizer can proselytize wall gears and alloy shards - to produce replicant alloy. It can also proselytize replicant alloy to refill, - in addition to refilling by attacking it with alloy. - - rscadd: The clockwork proselytizer can replace clockwork floors with clockwork - walls and vice versa. - - rscadd: Ratvar will convert windoors, tables, and computers in addition to everything - else. - - tweak: Ratvar now moves around much faster. - - rscadd: Ratvar and Nar-Sie will break each other's objects. - - tweak: The blind eye from a broken ocular warden now serves as a belligerent eye - instead of as replicant alloy. The pinion lock from a deconstructed clockwork - airlock now serves as a vanguard cogwheel instead of as replicant alloy. - - rscadd: Clockwork walls drop a wall gear when removed by a welding tool. The wall - gear is dense, but can be climbed over or unwrenched, and drops alloy shards - when broken. Clockwork walls drop alloy shards when broken by other means. - - bugfix: Fixed Nar-Sie wandering while battling Ratvar. - - bugfix: Ratvarian Spears now last for the proper 5 minute duration. - - bugfix: Servant communication now has ghost follow links. - - imageadd: New sigil sprites, courtesy Skowron. - - imageadd: Sigils of Transgression have a visual effect when stunning a target. - - imageadd: Clockwork spears now have a visual effect when breaking. - PKPenguin321: - - rscadd: The CMO's medical HUD implant now comes with a one-use autoimplanter for - ease of use. - RemieRichards: - - rscadd: Slimes may now be ordered to attack! You must be VERY good friends with - the slime(s) to give this command, asking them to attack their friends or other - slimes will result in them liking you less so be careful! - X-TheDark: - - rscadd: Mech battery replacement improved. The inserted battery's charge will - be set to the same percentage of the removed one's (or 10%, if removed one's - was less). - coiax: - - bugfix: Clicking the (F) link when an AI talks in binary chat will follow its - camera eye, the same as when (F) is clicked for its radio chat. - - bugfix: Laughter demons should now always let their friends go when asked correctly. - - rscadd: Cloning pods now grab the clone's mind when the body is ejected, rather - than when it starts cloning. - - rscadd: Wizards have been experimenting with summoning the slightly less lethal - "laughter demon". Please be aware that these demons appear to be nearly as dangerous - as their slaughter cousins. But adorable, nonetheless. - kevinz000: - - rscadd: Gravity Guns! It is a mildly expensive R&D gun that has a 5 second cooldown - between shots, but doesn't need to be recharged. It has two modes, attract and - repulse. For all your gravity-manipulation needs! -2016-06-07: - Bobylein: - - rscadd: Nanotrasen is finally able to source transparent bottles for chemistry. - Iamgoofball: - - experiment: The Greytide Virus got some teeth. - Joan: - - wip: This is a bunch of Clockwork Cult changes. - - rscadd: Added the Clockwork Obelisk, an Application scripture that produces a - clockwork obelisk, which can Hierophant Broadcast a large message to all servants - or open a Spatial Gateway with 5 uses and a 10 second duration to any conscious - servant or clockwork obelisk. - - wip: Spatial Gateways of any source have doubled uses and duration when the target - is a clockwork obelisk. - - rscadd: Added the Mania Motor, an Application scripture that produces a mania - motor, which, while active, causes hallucinations and brain damage in all nearby - humans. - - wip: The Mania Motor will try to convert any non-servant human directly adjacent - to it at an additional power cost and will remove brain damage, hallucinations, - and the druggy effect from servants. - - rscadd: Added the Vitality Matrix, an Application scripture that produces a sigil - that will slowly drain health from non-servants that remain on it. Servants - that remain on the sigil will instead be healed with the vitality drained from - non-servants. - - wip: The Vitality Matrix can revive dead servants for a cost of 25 vitality plus - all non-oxygen damage the servant has. If it cannot immediately revive a servant, - it will still heal their corpse. - - experiment: Most clockwork structures, including the Mending Motor, Interdiction - Lens, and the newly added Clockwork Obelisk and Mania Motor, now require power - to function. - - wip: Mending Motors can still use alloy for power. - - tweak: The Sigil of Transmission has been remade into a power battery and will - power directly adjecent clockwork structures. Sigils of Transmission start off - with 4000 power and can be recharged with Volt Void. - - tweak: Volt Void drains somewhat more power, but will not damage the invoker unless - they drain too much power. Invokers with augmented limbs will instead have those - limbs healed unless they drain especially massive amounts of power. - - wip: Using Volt Void on top of a Sigil of Transmission will transfer most of the - power drained to the Sigil of Transmission, effectively making it far less likely - to damage the invoker. - - rscdel: You can no longer stack most sigils and clockwork objects with themself. - You can still have multiple different objects or sigils on a tile, however. - - tweak: The Break Will Script has been renamed to Dementia Doctrine, is slightly - faster, and causes slightly more brain damage. - - tweak: The Judicial Visor now uses an action button instead of alt-click. Cultists - of Nar-Sie judged by the visor will be stunned for half duration, but will be - set on fire. - - tweak: Multiple scriptures have had their component requirements changed. The - Summon Judicial Visor Script has been reduced from a Script to a Driver. - - rscadd: Recollection will now show both required and consumed components. - - tweak: Clockwork Marauders can now emerge from their host if their host is at - or below 60% total health(for humans, this is 20 health out of crit) - - tweak: Clockwork Marauders will slowly heal if directly adjacent to their host - and have a slightly larger threshold for their no-Fatigue bonus damage. - Quiltyquilty: - - rscadd: Botany, atmospherics and cargo now all have access to high-capacity watertanks. - - rscadd: The bar has now been outfitted with custom bar stools. - Xhuis: - - rscdel: Removed the global message played when Nar-Sie _begins_ to spawn (but - not when it actually spawns). - - tweak: Drunkenness recovery speed now increases with how drunk the imbiber is - and is much quicker when the imbiber is asleep. - - tweak: Suit storage units now take three seconds to enter (up from one) and have - different sounds and messages for UV ray cauterization. - - bugfix: Fixed some bugs with the suit storage unit, inserting mobs, and contents - to seemed to duplicate themselves. - - bugfix: The Summon Nar-Sie rune can now only be drawn on original station tiles - and fails to invoke if scribed on the station then moved elsewhere. - coiax: - - rscdel: Bluespace shelter capsules can no longer be used on shuttles. - - rscadd: Bluespace shelters may have different capsules stored. View what your - capsule has inside by examining it. - - rscdel: The Nar'sie rune cannot be scribed on shuttles or off Z-level. - - rscadd: The Raise Dead rune automatically grabs the ghost of the raised corpse. - - rscadd: Deadchat is now notified when a sentient mob dies. - phil235: - - rscadd: Monkeys and all other animals that should have blood now has it. Beating - them up will make you and your weapon bloody, just like beating a human does. - Dragging them when wounded and lying will leave a blood trail. Their blood is - still mostly cosmetic, they suffer no effects from low blood level, unlike humans. - - rscadd: When a mob leaves a blood trail while dragged, it loses blood. You can - no longer drag a corpse to make an inifinite amount of blood trails, because - once the victim's blood reaches a certain threshold it no longer leaves a blood - trail (and no longer lose any more blood). The threshold depends on how much - damage the mob has taken. You can always avoid hurting the dragged mob by making - them stand up or by buckling them to something or by putting them in a container. - - rscdel: You can no longer empty a mob of its blood entirely with a syringe, once - the mob's blood volume reaches a critically low level you are unable to draw - any more blood from it. - - tweak: A changeling absorbing a human now sucks all their blood. -2016-06-08: - Cruix: - - bugfix: Changelings no longer lose the regenerate ability if they respect while - in regenerative stasis. - Fox McCloud: - - bugfix: Fixes Experimentor critical reactions not working - - bugfix: Fixes Experimentor item cloning not working - - bugfix: Fixes Experimentor producing coffee vending machines instead of coffe - cups - - tweak: Experimentor can only clone critical reaction items instead of anything - with an origin tech - GunHog: - - rscadd: Nanotrasen has approved the Hyper-Kenetic Accelerator upgrade for cyborg - mining modules. - - tweak: Each of the heads' ID computers are now themed for their department! - Joan: - - tweak: Anima Fragments have slightly more health and move faster, but slow down - temporarily when taking damage. Also they can move in space now. - Kor: - - rscadd: The clown will play a sad trombone noise upon death. - - rscadd: Colossi now roam the wastes. - - rscadd: Bubblegum now roams the wastes. - PKPenguin321: - - rscadd: You can now emag chemical dispensers, such as the ones in chemistry or - the bar, to unlock illegal chemicals. - lordpidey: - - tweak: Infernal jaunt has been significantly nerfed with an enter and exit delay. -2016-06-09: - GunHog: - - rscadd: Nanotrasen scientists have completed a design for adapting mining cyborgs - to the Lavaland Wastes in the form of anti-ash storm plating. Research for this - technology must be adapted at your local station. - Joan: - - tweak: Anima Fragments have slightly less health and damage and will slow down - for longer when hit. - Kor: - - rscadd: The captain now spawns with the station charter, which allows him to name - the station. - Papa Bones: - - tweak: Loyalty implants have been refluffed to mindshield implants, they are mechanically - the same. - Xhuis: - - rscadd: You can now remove all plants and weeds from a hydroponics tray by using - a spade on it. - - rscadd: Added meatwheat, a mutated variant of wheat that can be crushed into meat - substitute. - - rscadd: Added ambrosia gaia, a mysterious plant that is rumored to provide nutrients - and water to any soil - hydroponic or otherwise - that it's planted in. - - rscadd: Added cherry bombs, a mutated variant of blue cherries that have an explosively - good taste. Oh, and don't pluck the stems. - coiax: - - tweak: The beacons from support guardians are now structures, rather than replacing - the floor tile. In practice, this will change little, aside from not leaving - empty plating when a beacon is removed because a new one has been placed. - nullbear: - - tweak: Removes the restriction on wormhole jaunters, preventing them from teleporting - you to beacons on other z-levels. - - tweak: No longer able to use beacons to bypass normal shuttle/centcomm anti-bluespace - measures. -2016-06-11: - Joan: - - rscadd: Clockwork Slabs, Clockwork Caches near walls, and Tinkerer's Daemons will - now be more likely to generate components that the clockwork cult has the least - of. - - rscadd: Destroyed Clockwork Caches will drop all Tinkerer's Daemons in them. - - tweak: Clockwork Caches can now only generate a component every 30 seconds(when - near a clockwork wall), Clockwork Slabs can only generate a component every - 40 seconds, and Tinkerer's Daemons can only generate a component every 20 seconds. - This should result in higher component generation for everything except Clockwork - Caches near clockwork walls. - - tweak: Adding a component to a Clockwork Slab instead puts that component in the - global component cache. - - tweak: Clockwork Slabs only generate components if held by a mob or in a mob's - storage, and when generating a component will prevent other Slabs held from - generating a component. - - tweak: The Replicant Driver no longer costs a Replicant Alloy to invoke; basically - you can throw free Slabs at converts. - - rscdel: Clockwork Slabs no longer have Repository as a menu option; instead, you - can examine them to see how many components they have access to. - - rscdel: Clockwork Caches directly on top of clockwork walls won't generate components - from that wall. - Lzimann: - - rscadd: Bar stools are now constructable with metal! - coiax: - - rscadd: Ghosts are notified when someone arrives on the Arrivals Shuttle. This - is independent of the announcement system, and the (F) link will follow the - arrived person. - - tweak: Slimes and aliens with custom names now retain those names when changing - forms. - kevinz000: - - bugfix: Malf AI hacking an APC that is then destroyed will no longer bug the AI - - bugfix: Being turned into a Revolutionary now stuns you for a short while. - - bugfix: Kinetic Accelerators no longer drop their firing pin or cell when destroyed - by lava - phil235: - - rscadd: Firelock assemblies can be reinforced with plasteel to construct heavy - firelocks. -2016-06-12: - Joan: - - rscadd: Attacking a human you are pulling or have grabbed with a ratvarian spear - will impale them, doing massive damage, stunning the target, and breaking the - spear if they remain conscious after being attacked. - - tweak: The Function Call verb is now an action button. - Xhuis: - - rscdel: While experimenting with floral genetic engineering, Nanotrasen botanists - discovered an explosive variety of the cherry plant. Due to gross misuse, the - genes used to produce this strain have been isolated and removed while Central - Command decides how best to modify it. - xxalpha: - - rscadd: 'New wizard spell: Spacetime Distortion.' - - rscadd: 3x1 grafitti -2016-06-13: - Joan: - - tweak: Sigils of Transgression will now only stun for about 5 seconds, from around - 10 seconds. - - tweak: Sigils of Submission take about 5 seconds to convert a target, from around - 3 seconds, and will glow faintly. - - rscadd: Sigils of any type can be attacked with an open hand to destroy them, - instead of requiring harm intent. Servants still require harm intent to do so. - Lati: - - rscadd: Nanotrasen has added one of their rare machine prototypes to cargo's selection. - It might be valuable to research. - Xhuis: - - rscadd: You can now create living cake/cat hybrids through a slightly expensive - crafting recipe. These "caks" are remarkably resilient, quickly regenerating - any brute damage dealt, and can be attacked on harm intent to take a bite to - be fed by a small amount. They serve as mobile sources of food and make great - pets. - - rscadd: If a brain occupied by a player is used in the crafting recipe for caks, - that player then takes control of the cak! -2016-06-14: - Joan: - - tweak: The Gateway to the Celestial Derelict now takes exactly 5 minutes to successfully - summon Ratvar and has 500 health, from 1000. - - rscadd: You can now actually hit people adjacent to the Gateway; only the center - of the Gateway can be attacked. The Gateway is also now dense, allowing you - to more easily shoot at it. - - rscadd: All Scripture in the Clockwork Slab's recital has a simple description. - Razharas: - - rscadd: Wiki now has the method of cultivating kudzu vines that was in game for - over a year. https://tgstation13.org/wiki/Guide_to_hydroponics#Kudzu - kevinz000: - - tweak: Gravity Guns should no longer destroy local reality when set to attract - and shot in an east cardinal direction. Added safety checks has slightly increased - the cost of the gun's fabrication. Nanotrasen apologizes for the inconvenience. - - bugfix: Gravity guns now have an inhand sprite. -2016-06-16: - GunHog: - - rscadd: In response to alarmingly high mining cyborg losses, Nanotrasen has equipped - the units with an internal positioning beacon, as standard within the module. - Joan: - - rscadd: You can now strike a Tinkerer's Cache with a Clockwork Proselytizer to - refill the Proselytizer from the global component cache. - - tweak: The Clockwork Proselytizer requires slightly less alloy to convert windows - and windoors. - - tweak: Several clockwork objects have more useful descriptions, most notably including - structures, which will show a general health level to non-servants and exact - health to servants. - - imageadd: The Clockwork Proselytizer has new, more appropriate inhands. - - tweak: Invoking Inath-Neq, the Resonant Cogwheel, now gives total invulnerability - to all servants in range for 15 seconds instead of buffing maximum health. - - tweak: Impaling a target with a ratvarian spear no longer breaks the spear. - - tweak: Judicial Markers(the things spawned from Ratvar's Flame, in turn spawned - from a Judicial Visor) explode one second faster. - - rscdel: Removed Dementia Doctrine, replacing it with an Application sigil. - - rscadd: Adds the Sigil of Accession, the previously-mentioned Application sigil, - which is much like a Sigil of Submission, except it isn't removed on converting - un-mindshielded targets and will disappear after converting a mindshielded target. - - tweak: Sigil of Submission is now a Script instead of a Driver; It's unlocked - one tier up, so you have to rely on the Drivers you have until you get Scripts, - instead of spamming both Driver sigils for free converts. - - rscadd: To replace Sigil of Submission in the Driver tier; Added Taunting Tirade, - which is a chanted scripture with a very fast invocation, which, on chanting, - confuses, dizzies, and briefly stuns nearby non-servants and allows the invoker - a brief time to relocate before continuing the chant. - - rscadd: Ghosts can now see the Gateway to the Celestial Derelict's remaining time - as a countdown. - - tweak: Anima Fragments are now slightly slower if not at maximum health and no - longer drop a soul vessel when destroyed. - Quiltyquilty: - - rscdel: Patches now hold only 40u. - - rscdel: Patches in first aid kits now only contain 20u of chemicals. - coiax: - - rscadd: Polymorphed mobs now have the same name, and where possible, the same - equipment as their previous form. -2016-06-19: - Joan: - - tweak: Assassin holoparasite attack damage increased from 13 to 15, stealth cooldown - decreased from 20 seconds to 16 seconds. - - tweak: Charger holoparasite charge cooldown decreased from 5 seconds to 4 seconds. - - tweak: Chaos holoparasite attack damage decreased from 10 to 7, range decreased - from 10 to 7. - - tweak: Lightning holoparasite attack damage increased from 5 to 7, chain damage - increased by 33%. - - rscdel: Clock cult scripture unlock now only counts humans and silicons. - - rscadd: Servants of ratvar can now create cogscarab shells with a Script scripture. - Adding a soul vessel to one will produce a small, drone-like being with an inbuilt - proselytizer and tools. - - imageadd: Clockwork mobs have their own speechbubble icons. - - tweak: Invoking Sevtug now causes massive hallucinations, brain damage, confusion, - and dizziness for all non-servant humans on the same zlevel as the invoker. - - rscdel: Invoking Sevtug is no longer mind control. RIP mind control 2016-2016. - - tweak: Clockwork slabs now produce a component every 50 seconds, from 40, Tinkerer's - Caches now produce(if near a clockwork wall) a component every 35 seconds, from - 30. - - experiment: 'Tinkerer''s daemons have a slightly higher cooldown for each component - of the type they chose to produce that''s already in the cache: This is very - slight, but it''ll add up if you have a lot of one component type and are trying - to get more of it with daemons; 5 of a component type will add a second of delay.' - Kor and Iamgoofball: - - rscadd: Miners can now purchase fulton extraction packs. - - rscadd: Miners can now purchase fulton medivac packs. - - rscadd: Two new fulton related bundles are available for purchase with vouchers. - Quiltyquilty: - - rscadd: Beepsky now has his own home in the labor shuttle room. - Wizard's Federation: - - bugfix: We've fired the old Pope, who was actually an apprentice in disguise. - We've a-pope-riately replaced him with a much more experienced magic user. - - rscadd: Some less-then-sane people have been sighted forming mysterious cults - in lieu of recent Pope sightings, lashing out at anyone who speaks ill of him. - - bugfix: We've rejiggered our trans-dimensional rifts, and almost all cases of - clergy members being flung into nothingness should be resolved. - - bugfix: All members of the Space Wizard's Clergy have been appropriately warned - about usage of skin-to-stone spells, and such there should be no more instances - of permanent statueification. - Xhuis: - - tweak: Revenants have been renamed to umbras and have undergone some tweaks. - coiax: - - rscadd: Drones can hear robotic talk, but cannot communicate on it. AIs and cyborgs - are encouraged to share information with station repair drones. - - rscadd: Potted plants can now be ordered from cargo. - - rscdel: AI turrets no longer fire at drones. -2016-06-20: - Kor: - - rscadd: Cult runes can only be scribed on station and on mining. - - rscadd: The comms console now has a new option allowing you to communicate with - the other server. - Quiltyquilty: - - rscadd: The detective has been moved to above the post office. - coiax: - - rscadd: Birdboat's supply loop has been split into two unconnected halves, to - maintain award winning air quality. - incoming5643: - - experiment: New abilities for some races! - - rscadd: Skeletons (liches) and zombies now are much more susceptible to limb loss, - but can also reattach lost limbs manually without surgery. - - rscadd: Slimepeople can now lose their limbs, but also can regenerate them if - they have the jelly for it. Additionally slimepeople will (involuntarily) lose - limbs and convert them to slime jelly if they're extremely low on jelly. - - rscadd: Zombies and slimepeople now have reversed toxic damage, what usually heals - now hurts and what usually hurts now heals. Keep in mind that while you could - for example heal with unstable mutagen, you'd still mutate. Beware of secondary - effects! Drugs like antitoxin are especially dangerous to these races now since - not only do they do toxin damage, but they remove other toxic chems before they - can heal you. Be wary also of wide band healing drugs like omnizine. - - rscadd: For slime people the above mechanic also adds/drains slime jelly. So yes - inhaling plasma is now a valid way to build jelly (but you'll still suffocate - if there's no oxygen). - - rscadd: Pod people now mutate if shot with the mutation setting of the floral - somatoray. -2016-06-22: - Cheridan: - - tweak: Flashes no longer stun cyborgs, instead working almost exactly like a human, - causing them to become confused and unequip their current module. - Joan: - - rscdel: Those who do not serve Ratvar cannot understand His creations. - - rscadd: You can now repair clockwork structures with a clockwork proselytizer. - This is about a third as efficient as a mending motor, costing 2 liquified alloy - to 1 health, and also about a third as fast. - - tweak: Scarab proselytizers are more efficient and will reap more alloy from metal - and plasteel. - - rscadd: They can also directly convert rods to alloy. - - tweak: Nuclear bombs will no longer explode the station if in space. Please be - aware of this. - Kor: - - rscadd: You can now pick up potted plants. - PKPenguin321: - - rscadd: You can now pick up a skateboard and use it as a weapon by dragging it - to yourself. - - imageadd: Skateboards have been given brand new sprites, courtesy of JStheguy - Quiltyquilty: - - rscadd: The AI is back in the center of the station. The gravity generator is - now where the SMES room used to be. The SMESes are in the equipment room. - Supermichael777: - - rscadd: Flaps are no longer space-racist and now accept all bots. - Xhuis: - - tweak: Holy weapons, such as the null rod and possessed blade, now protect from - Ratvar's magic. - coiax: - - rscadd: Certain custom station names may be rejected by Centcom. - - rscadd: Drone shells can be ordered in Emergency supplies at Cargo. -2016-06-23: - Joan: - - tweak: Tinkerer's Caches generate components(when near clockwork walls) every - minute and a half, from every 35 seconds. Clockwork Slabs generate components - once per minute, from once per 50 seconds. - - tweak: Spatial Gateway will last four seconds per invoker, instead of two per - invoker. - - rscdel: Clockwork floors now only heal toxin damage on servants of Ratvar. - - rscdel: You can no longer place ocular wardens very close to other ocular wardens. - - tweak: The Flame produced by a Judicial Visor is no longer an effective melee - weapon and will trigger on all intents, not just harm intent. - Wizard's Federation: - - bugfix: Acolytes of Hades have revealed their true forms. - - rscadd: We've discovered a way to traverse portals left behind by Hades, and have - discovered a great treasure through it. - - bugfix: Hades has undergone Anger Management classes, and should no longer remain - wrathful for the duration of his visit. - coiax: - - rscadd: Changelings now evolve powers via the cellular emporium, which they can - access via an action button. - - rscadd: Due to budget cuts, the shuttle's hyperspace engines now create a visual - distortion at their destination, a few seconds before arrival. Crewmembers are - encouraged to use these "ripples" as an indication of where not to stand. - - bugfix: Shuttles now only run over mobs in turfs they are moving into, rather - than the entire rectangle. - - rscadd: If you are an observer, you can click on transition edges of a Z-level - in order to move as a mob would. - - rscadd: Due to safety concerns, the Hyperfractal Gigashuttle now has some safety - grilles to prevent accidental matter energising. - coiax, incoming: - - rscadd: Due to budget cuts, the builtin anti-orbit engines on the station have - been removed. As such, expect the station to start orbiting the system again, - and encounter an unpredictable stellar environment. - - rscdel: All permanent structures (not on station, Centcom or lavaland) have been - removed. - - rscadd: All removed structures are now space ruins, and can be placed randomly - in space ruin zlevels. - - wip: The White Ship remains at its current location, but has lost any reliable - landmarks near it. Its starting position will be made more random in a coming - update. - - rscadd: The Space Bar has a small atmos system added and a teleporter. Some other - ruins have been cleaned up to not have atmos active turfs. -2016-06-24: - Joan: - - experiment: The Interdiction Lens has been reworked; instead of allowing you to - disable Telecomms, Cameras, or non-Servant Cyborgs, it drains power from all - APCs, SMES units, and non-Servant cyborgs in a relatively large area, funneling - that power into nearby Sigils of Transmission, then disables all cameras and - radios in that same area. - - wip: If it fails to find anything it could disable or drain any power, it turns - off for 2 minutes. - - tweak: You can now target yourself with Sentinel's Compromise, allowing you to - heal yourself with it. - - rscadd: Flashes will once again stun borgs, but for a much shorter time than they - previously did; average stun time is reduced from the previous average of 15 - seconds to about 6 seconds. The confusion remains, but it will no longer unequip - borg modules. - MMMiracles: - - tweak: Metastation xenobiology's lights and cell have been modified so it won't - drain 5 minutes into the round. - SnipeDragon: - - bugfix: Changelings created at round start now correctly receive their Antag HUD. - Xhuis: - - rscadd: Cardboard cutouts have been added. Now you can set up advertisements for - your clown mart. -2016-06-26: - Basilman: - - rscadd: The Donor prompt for becoming an alien queen maid is now an action button - instead, and can be toggled on and off. - Joan: - - rscadd: Fellowship Armory now invokes faster for each nearby servant and provides - clockwork gauntlets, which are shock-resistant and provide armor to the arms. - - tweak: It's not wise to equip clockwork armor if you don't serve Ratvar. - - bugfix: A full set of clockwork armor will now actually cover all limbs. - coiax: - - rscadd: Our administrators, here at /tg/, don't get enough credit for their wealth - of experience and knowledge. Now they get the chance to share that with you - by giving out custom tips! - - tweak: Gang domination now uses the same timing method as shuttles, making their - domination times more accurate. - - rscdel: The default shuttle transit time is now 15 seconds. - - rscadd: Please do not commit suicide with the nuclear authentication disk. - - rscadd: Observers now have a visible countdown for borg factories, silicons can - examine the factory to determine how long it has remaining until it is ready. - - rscadd: Clockwork mobs sound like Ratvar chants if you do not serve Ratvar. - - rscadd: When servants recite, they now talk in a strange voice that is more noticable. -2016-06-28: - CoreOverload: - - rscadd: Kinetic accelerator now supports seclite attachment. - - rscadd: All cyborgs have been outfitted with ash-proof plating. - - rscadd: Mining cyborg module now includes a welder and a fire extinguisher. - - rscadd: 'Mining cyborgs now have a new upgrade: lavaproof tracks.' - Joan: - - rscdel: Clockwork Marauders are no longer totally invincible to damage unless - a holy weapon was involved. - - rscadd: Clockwork Marauders will take damage when attacked, but unless they're - fighting excessive amounts, they'll be forced to return to their host before - they'd normally die. - - experiment: A holy weapon held in either hand in the presence of a marauder will - massively increase the damage they take, making it much more likely the marauder - can be killed. - - tweak: Clockwork Marauders do slightly less damage at low fatigue levels. - - rscadd: Clockwork Marauders now have a chance to block melee attacks, negating - the damage from them, and an additional chance to immediately counter, attacking - whoever tried to attack them. - - wip: If Ratvar has awoken, Marauders have a much higher chance to block and counter, - will block thrown items and projectiles, and gradually regenerate. - - experiment: Clockwork Marauders no longer have a verb to communicate; they instead - use :b to do so. - - rscadd: Faked deaths are now effectively indistinguishable from real deaths. - MMMiracles: - - rscadd: Adds some ruins for space and lavaland. Balance not included. - - rscadd: Adds spooky ghosts. - SnipeDragon: - - bugfix: Cardboard Cutouts now become opaque when their appearance is changed. - Wizard's Federation: - - rscadd: Acolytes of Hades have been scolded for gluing their clothes to themselves, - and their clothes can now be cut off them. - - rscadd: Hades has learned a few new tricks, to ensure the ultimate demise of his - target. - - bugfix: Hades has faced a council of his repeated use of time magic inside chapels, - and as it was deemed unholy, he will no longer do it. - - rscadd: Wizards of the Wizard's Federation have been granted access to Dark Seeds, - ancient relics used to call upon Hades in a time of need. - Xhuis: - - rscdel: You can no longer put paper cups back onto water coolers. In addition, - they're now just called "liquid coolers" instead of changing based on their - contents. - coiax: - - rscadd: Status displays added to a variety of shuttle templates. - - rscdel: Large graffiti now consumes 5 uses from limited use crayons and spraycans, - as well as taking three times the amount of time to draw. - - rscadd: All items inside the supply shuttle will now be sold, regardless of whether - they're inside a container or not. - - bugfix: Fixes issue where the AI core APC on Metastation would not charge. - 'name: Lzimann': - - rscadd: Engineer and atmos wintercoat can hold the RPD now! - optional name here: - - rscdel: Shadowlings have been completely removed. - oranges: - - tweak: You can now hear dice - timkoster1: - - rscadd: adds a hud soul counter for devils. Sprites by PouFrou and special thanks - to lordpidey for about everything. -2016-06-29: - Joan: - - rscadd: Ghosts spawning via Ratvar can now choose to spawn as a Cogscarab with - a usable slab instead of as a Reclaimer. - - bugfix: You can no longer permanently block hostile simple mobs with sandbags - and other barricades. - MrStonedOne: - - rscadd: Ghosts may now jump between the two linked servers using the new Server - Hop verb. Rather than whine in deadchat about dieing, you can just go play a - new round on the other server. - coiax: - - rscadd: Adds a new UI to slimepeople, allowing them to select more easily which - body to swap to - - rscadd: Slimepeople swapping consciousness between bodies is now visible to onlookers - - bugfix: The AI malfunction "Hostile Lockdown" power now restores the station doors - to normal after 90 seconds, rather than keeping everything shut forever. -2016-07-01: - Flavo: - - bugfix: fixed a bug where lights would not update. - Joan: - - rscadd: Clockwork Slabs now use an action button to communicate instead of the - "Report" option in the menu after using a slab. - - tweak: Clockwork Slabs now fit in pockets, the belt slot, or in the suit storage - slot(if wearing clockwork armor), where they can be used as hands-free communication. - - imageadd: Clockwork items with action buttons have a new, clockwork-y background. - - rscadd: Judicial Visors now tell the user how many targets the Judicial Blast - struck. - - soundadd: Judicial Markers now have sounds when appearing and exploding. - - tweak: Wet turfs should remain that way for slightly longer than 5 seconds now. - - rscadd: Drones and Swarmers should now sound more robotic. - - tweak: Ratvarian Spears will stun cyborgs and cultists for twice as long when - thrown; on cyborgs, this should be long enough to use Guvax on them. - - rscdel: Removed the Justicar's Gavel application scripture. - - tweak: Vitality Matrices will drain and heal 50% faster, and the base cost to - revive is 20% lower; 20, from 25. - - rscadd: Vitality Matrices will not revive or heal corpses unless they can grab - the ghost of the corpse, and will immediately grab the ghost when reviving. - - rscadd: Swarmers consuming swarmer shells now refunds the swarmer the entire cost - of the shell instead of 2% of the shell's cost. - - experiment: Application scriptures require at least 75 CV, from 50. - - experiment: Revenant scriptures require at least 4 Caches, from 3, and at least - 150 CV, from 100. - - experiment: Judgement scripture requires at least 12 servants, from 10, 5 Caches, - from 3, and at least 250 CV, from 100. - - experiment: Script and Application scripture have had their component costs and - requirements tweaked to reduce overuse of certain components. - - wip: Invoke times for a few scriptures that were instant are now very short instead. - Kor: - - rscdel: Holoparasites are no longer in the uplink - NikNak: - - tweak: Showcases are now movable and deconstructable. Wrench them to unanchor - and then screwdriver and crowbar to deconstruct. - Papa Bones: - - tweak: Security now has energy bolas available to them in their vending machines, - check them out! - bobdobbington: - - rscadd: Added skub to the AutoDrobe as a premium item. - coiax: - - rscadd: The CTF arena regenerates every round, and the blue team now shoot blue - lasers. - - rscadd: Adds some descriptions to alien surgery tools - - rscadd: The agent vest can be locked and unlocked (toggling the NODROP flag) - - rscadd: An abductor team can spend data points to purchase an agent vest (note - that only abductor agents are trained in their use) - - rscadd: The nuke disk reappears on the station in far more random locations, but - tends to re-materialise in safe pressurised areas that aren't on fire. - 'name: Lzimann': - - tweak: Mulebots with pAI cards no longer stun people -2016-07-02: - Joan: - - rscadd: Clockwork Proselytizers can now reform stored alloy into usable component - alloy when used in-hand. - - rscdel: Mending motors start with 2500W of power in alloy, from 5000. Sigils of - Transmission start with 2500W of power, from 4000. Clockwork Proselytizers start - with 90 alloy, from 100. - - rscdel: Umbras have been removed. - - rscadd: Revenants have been readded, though they are now vulnerable to salt piles. - MMMiracles: - - rscadd: Added the power fist, a gauntlet with a piston-powered ram attached to - the top for traitors to punch people across the station. Punch people into walls - for added fun. - incoming5643: - - rscadd: 'Nuke ops can now harness the power of METAL BOXES: special versions of - cardboard boxes that can take a lot of abuse and can fit the whole team if need - be. They''re not nearly as light as their cardboard brothers though...' - kevinz000: - - rscadd: Some new emojis have been added to OOC for your enjoyment. Try them out. - - rscadd: 'New emojis are : coffee, trophy, tea, gear, supermatter, forceweapon, - gift, kudzu, dosh, chrono, nya, and tophat. Type :nameofemoji: in OOC to use.' -2016-07-03: - Cruix: - - bugfix: Hand labelers can now label storage containers. - - bugfix: You can now properly resist out of wrapped lockers. - - bugfix: You can now resist out of morgues if you are in a bodybag. - - bugfix: Mechs can no longer spam doors they do not have access to. - Joan: - - tweak: Clock Cult can now happen at 24 players, same as cult. - - tweak: Clock Cult player scaling is lower; 3 people, plus one for every 15 players - above 30, from 1 for every 10 players with a player minimum of 30. - - experiment: Guvax now invokes 1 second faster(5 seconds), but is 0.75 seconds - slower for each scripture-valid servant above 5, up to a maximum of 15 seconds. - - experiment: Clockwork Slabs generate components 20 seconds slower for each scripture-valid - servant above 5, up to a maximum of 1 component every 5 minutes. - - tweak: Tinkerer's Daemons that would be useless cannot be made. -2016-07-04: - Gun Hog: - - rscadd: The Space Wizard Federation has finally begun teaching its pupils how - to properly aim the Fireball spell! - - tweak: Fireball spells, including the Devil version, are now aimed via mouse click. - It is recommended to avoid firing at anything too close, as the user can still - blow himself up! - Joan: - - rscdel: Mecha are no longer immune to ocular wardens. - Lzimann: - - rscadd: Throwing active stunbatons now has a chance to stun whoever it hits! - MMMiracles: - - rscadd: Adds space ruins. Balance not included. - - tweak: Simple mob ghosts actually work now. - - rscdel: Puzzle1 ruin removed due to issues with projectiles. - X-TheDark: - - rscadd: Switching mobs/ghosting/etc related actions during the round will now - no longer reset your hotkey settings. - Xhuis: - - bugfix: Ash storms can now occur again. - bgobandit: - - rscadd: Bluespace polycrystals, basically stacks of bluespace crystals, have been - added. The ore redemptor accepts them now. - - tweak: The ore redemptor machine should be less spammy now. - coiax: - - rscadd: The zone of hyperspace that a shuttle travels in is dynamically determined - when a shuttle begins charging its engines. This is signified by the shuttle - mode IGN. All shuttles must now charge engines before launching. This time is - already included in the emergency shuttle timer. - - rscdel: The cargo shuttle can only be loaned to Centcom while at Centcom. - - rscadd: Immovable rods now notify ghosts when created, allowing them to orbit - it and follow their path of destruction through the station. - - bugfix: Fixed bugs where no meteors would come or go from the south. Seriously, - that was a real bug. Meteor showers are now about 33% stronger as a result. -2016-07-06: - Cruix: - - bugfix: Vending machine restocking units now work. - Joan: - - rscadd: Servants should now be more aware of when scripture tiers are locked or - unlocked. - - experiment: Judicial Explosions from a Judicial Visor now mute for about 10 seconds. - MrStonedOne: - - rscadd: Instant Runoff Voting polls are now available. - RemieRichards: - - tweak: Fixes accidental buff to botany, all modifiers should now be at the point - they were at pre-bees (this does not remove, nerf or alter bees) - Xhuis: - - rscadd: The Necropolis gate now looks as regal as it should. Credit goes to KorPhaeron - for turf and wall sprites. - - bugfix: Ash storms are actually damaging now. - coiax: - - bugfix: Gulag prisoners can no longer duplicate their mining efforts through window - breaking on the shuttle. - - bugfix: Fixes pickaxes inside walls on lavaland, along with lava having eaten - one of the storage units. - - rscadd: More fire extinguishers for lavaland mining base. - - bugfix: You can now reload your gun in CTF. - - rscadd: Dying in CTF will spawn a short lived ammo pickup, which you can walk - over to reload all your weapons. - - rscadd: If reduced to critical status in CTF, you will automatically die, so you - no longer have to succumb or be coup de graced. If you are conscious, you will - now heal slowly if some damage got through your shield and didn't crit you. - - bugfix: The tesla now dusts all carbon mobs on the turf that it moves to, grounding - rod or no. - coiax, Niknakflak: - - rscadd: Added fireplaces, fuel with logs or paper and set on fire and enjoy that - warm comforting glow. - - bugfix: Cardboard cutouts are now flammable. - - rscadd: Cigarettes, fireplaces and candles now share a pool of possible igniters. - So you can now esword that candle on, but turn it on first. - - rscadd: Eswords will ignite plasma in the air if turned on. - kevinz000: - - tweak: Kudzu is no longer unstoppable - optional name here: - - bugfix: Suit Storage Units can now disinfect items other than living and dead - creatures. -2016-07-09: - CoreOverload: - - rscadd: You can remove jetpack from a hardsuit by using screwdriver on it. - Crazylemon: - - bugfix: The map loader no longer resets when reading another map mid-load - Goofball Sanders: - - rscadd: Added a new plant to the game to encourage the Chef to be a more relevant - job, alongside a recipe for a food related to it. Throw a cannabis leaf on a - table and check the recipes list to find it. - Gun Hog: - - rscdel: Malf (Traitor) AI's Fireproof Core ability has been removed, as it was - entirely obsolete. - - rscadd: Nanotrasen is proud to announce that conveyor belts can now be fabricated - at your station's autolathes! - Iamgoofball: - - bugfix: Fixes the Atheist's Fedora's throw damage. - Joan: - - rscadd: Tips for Clock Cult may now show up. - - experiment: The global component cache can only be accessed by clockwork slabs - if there is at least one Tinkerer's Cache active. - - rscadd: Ratvarian Spears are now sharp and can be used to cut off limbs or butcher - mobs. - - rscadd: Clock Cult silicons get an action button to communicate with other servants. - - tweak: Clockwork Slabs now produce a component every 1 minute, 30 seconds, from - every 1 minute. - - experiment: The slab production time gain from each servant above 5 has been increased - from 20 seconds to 30 seconds, and the maximum production time has been increased - from 5 minutes to 6 minutes. - - rscadd: You can now transfer components between two clockwork slabs by attacking - one slab, or a person holding a slab, with the other; this will transfer the - attacking slab's components into the target slab. - - tweak: Application scripture now requires 100 CV, from 75, Revenant scripture - now requires 200 CV, from 150, and Judgment scripture now requires 300 CV, from - 250. - - experiment: However, converted windows, windoors, airlocks, and grilles will all - provide some CV. - Lzimann & Keekenox: - - rscadd: You can now craft a baseball bat with 5 sheets of wood! - MrStonedOne: - - experiment: Atmos on planets is now more realistic. There is an unseen upper atmosphere - that gas changes get carried away into, causing planet turfs to revert back - to their original gas mixture. - - tweak: This should massively improve atmos run speed as all of lavaland won't - be processing the moment somebody opens a door anymore - MrStonedOne, coiax: - - rscadd: View Variables can expand on associated lists with type keys. Only 90s - admins will truely understand. - RemieRichards: - - rscadd: Added a Compact mode to the crafting tgui - - tweak: Modified the back end of the crafting tgui so that it has well let's just - say "a lot less" calls to certain functions, should lag a little less but don't - expect miracles (you'd have to wait till we get a new version of ractive for - those!) - coiax: - - rscadd: Podpeople (and venus human traps) are now no longer damaged, poisoned - or obstructed by space vines. Explosive vines still damage them, because there's - an actual explosion. - - rscadd: During a meteor shower, observers can automatically orbit threatening - meteors via an action button and watch them hit the station. - - rscadd: Added Major Space Dust event, which is a meteor shower containing only - space dust. - - bugfix: Fixes bug where meteors wouldn't move when spawned. - - rscadd: Meteor Shower split into three different events, Normal, Threatening and - Catastrophic. They all have the same crew messages, but admins can tell the - difference. - - bugfix: Damage to a shuttle while it is moving will now correctly make transit - space turfs, rather than non-moving space. - - rscadd: AIs get a notification when hacking an APC, which can be clicked to jump - your camera to the APC's location. AIs also get notification sounds when a hack - has completed or failed. - - rscadd: Nuclear bombs now use a more accurate timer system, the same as gang dominators - and shuttles. - - rscadd: Nuclear bombs now have a TGUI interface. - - rscdel: Fleshmend no longer regrows lost limbs. - - rscadd: Added free Regenerate power to changelings, which regrows all external - limbs and internal organs (including the tongue if you lost your head). It costs - 10 chemicals to use. - - rscadd: Fleshmend now costs 20 chemicals, down from 25. - - tweak: Changeling revive power name changed from Regenerate to Revive. - - rscadd: When a player uses a communication console to ask for the codes to the - self destruct, for better or for worse, the admins can set them with a single - click. Whether the admins a) click the button b) actually give the random person - the codes, is another thing entirely. - - rscadd: Servants of Ratvar get an alert if they have no tinkerer's caches constructed. - Because it's important that they should. -2016-07-11: - Iamgoofball: - - bugfix: Fixes Nicotine's stun reduction - Joan: - - tweak: The Function Call action that summons a Ratvarian Spear is no longer one-use; - instead, it can be reused once every five minutes. - - experiment: Clockwork Walls and Floors will appear as normal walls and plating - to mesons, respectively. - coiax: - - tweak: Syndicate bombs now use a more accurate timer. - - bugfix: Fixed a separate bug that caused bomb timers to take twice as long (ie. - 60 seconds took 120 seconds) - - tweak: The AI doomsday device timer is more accurate. - - bugfix: Fixes a bug where the doomsday device would take twice as long as it should. - optional name here: - - bugfix: The search function on security records consoles now works. -2016-07-12: - MMMiracles: - - bugfix: Hotel staff can now actually use their own lockers. - RemieRichards: - - bugfix: fixed Kor's plant disguises - - bugfix: fixed some issues with Alternate Appearances not being added/removed - hornygranny: - - bugfix: Attacks will no longer miss missing limbs -2016-07-14: - Basilman: - - rscadd: Added a new hairstyle "Boddicker" - Bawhoppen: - - rscadd: Added two new materials, Titanium and plastitanium. Titanium is naturally - occuring, and plastitanium is an alloy made of plasma and titanium. - - rscadd: These materials can be used to build shuttle walls and floors, though - this serves no current purpose. - CoreOverload: - - rscadd: Some clothing has pockets now. - Firecage: - - tweak: Mechas can no longer pass through Plastic Flaps - Fox McCloud: - - bugfix: Fixes borg stun arm not having a hitsound, bypassing shields, and not - doing an attack animation - - bugfix: Fixes simple mobs not properly having armor penetration - Joan: - - rscadd: Added dextrous guardians to the code, able to hold and use items and store - a single item within themselves. - - experiment: Dextrous guardians do low damage on punches, have medium damage resist, - and recalling or leashing will force them to drop any items in their hands. - Kor: - - tweak: Shuttle travel time has been shortened from 25 seconds to 6 seconds - Lzimann: - - tweak: Alt clicking a jumpsuit now removes the accessories(if there's any)! - Papa Bones: - - tweak: Security's lethal injections are actually lethal now. - Xhuis: - - rscadd: Nanotrasen electricians have introduced a software update to all licensed - pinpointers. The new pinpointers are more responsive and automatically switch - modes based on the current crisis. - - rscadd: It should be noted that some of these pinpointers have been reported as - missing from their distribution warehouse and are presumed to have been stolen. - This is likely nothing to worry about. - lordpidey: - - tweak: Infernal jaunt now has a cooldown, to prevent trying to jaunt while already - jaunting. This should have no practical changes. - - bugfix: Infernal jaunt no longer occasionally leaves you permanently on fire. - - bugfix: Pitchforks no longer burn devils and soul-sellers, as intended. -2016-07-15: - Cheridan: - - rscadd: Added an aesthetic new space ruin -2016-07-16: - Gun Hog and WJohnston: - - rscadd: Aliens (Xenos) now have the ability to sense the direction and rough distance - of their queen! - Iamgoofball: - - bugfix: Fixed the lag when opening the foodcrafting menu by splitting everything - up into categories. - Joan: - - rscadd: Cogscarabs(and other nonhuman mobs able to hold clockwork slabs) can now - check the stats of the clockwork cult by using a clockwork slab. They remain - unable to use slabs under normal conditions. - MrStonedOne: - - experiment: Added a system to detect when stickybans go rogue and revert all recent - matches. -2016-07-18: - CoreOverload: - - rscadd: Sterilizine now reduces probability of step failure if you apply it after - starting surgery. Useful while operating in less-than-perfect conditions. - - rscadd: Potent alcohol can be used as replacement for sterilizine. - Joan: - - experiment: The Vanguard scripture no longer prevents you from using slabs while - active, but you cannot reactivate it if it is currently active. - - tweak: It now only lasts 20 seconds, instead of 30. - - tweak: When Vanguard deactivates, it now stuns for half the time of all stuns - absorbed, instead of all of them. - - tweak: Invoking Sevtug is less potent at long ranges, and slightly more potent - if extremely close. - - experiment: Invoking Sevtug now requires 3 invokers instead of 1. - - rscadd: The Clockwork Slab now has action buttons for rapidly invoking Guvax and - Vanguard. - - tweak: Belligerent is now chanted more often. - - experiment: Taunting Tirade now weakens nearby nonservants, but is now only invoked - once every 6 seconds(1 second chant, 5 second flee time) and is only chanted - five times. - lordpidey: - - rscadd: Flyswatters are now included in beekeeping crates, they are great at killing - insects and flies of all sizes. -2016-07-19: - Joan: - - tweak: Cogscarabs can no longer pass mobs and have slightly less health. - - experiment: The Gateway to the Celestial Derelict can now take damage from bombs. - RemieRichards: - - rscadd: Added VR Sleepers that allow users to enter a virtual body in a virtual - world (Currently not mapped in ;_;) - Xhuis: - - rscadd: Added communication intercept texts for gamemodes that were missing them. - - tweak: Changed all intercept texts and improved grammar for a lot of key game - code. - - rscdel: The shuttle can now leave while a celestial gateway exists. - - rscadd: If the shuttle docks at Central Command while a celestial gateway exists, - Ratvar's servants will win a minor victory. His arrival will still award a major - victory. - - rscadd: The celestial gateway can now take damage from explosions. -2016-07-22: - Bawhoppen: - - rscadd: Titanium now spawns in mining again. - - rscadd: It has uses in R&D and robotics production. - - rscadd: All shuttle walls are now using a new proper smoothing path. Mappers please - make sure to use this path correctly in the future. (along with tiles) - Cheridan: - - rscadd: Added another space ruin. - Cruix: - - bugfix: Camera bugs can now show camera views. - - bugfix: The chameleon masks in the chameleon kit can once again have their voice - changers toggled. - Incoming5643: - - rscadd: You now have the ability to automatically "back out" of a round if you - miss your chance at all the jobs you have set to low or higher. This is found - on the toggle at the bottom of the jobs window - - rscadd: Due to a quirk of game mode code this option will fail to work if you've - been selected as an antag (what a tragedy!) In this situation, you'll be assigned - a random job. - Joan: - - bugfix: You can now throw items and mobs over chasms without causing them to drop. - - bugfix: You can now throw items over lava without burning them. Mobs will still - burn, however. - - experiment: Tinkerer's Caches now link to a nearby unlinked clockwork wall, and - will not generate components unless linked. As compensation, they will link - to nearby walls(and can generate components) in a larger area. - - wip: Guvax is now slightly slower when above 5 valid servants; 1 additional second - of invoke time for each one above 5, from 0.75 additional seconds, up to a maximum - of 20 seconds of invoke time, from 15 seconds. - - tweak: Sigils of Transgression now stun for about 7 seconds. - - experiment: Sigils of Submission/Accession now take 7 seconds to convert successfully, - and have an obvious message to the person on them that their mind is being invaded. - - tweak: Ocular Wardens do 17% less damage. - - tweak: Mania Motors cause less brain damage and hallucinations. - - rscadd: If you lack the components to recite a scripture, you will be informed - of how many components that scripture requires. - - experiment: Tinkerer's Caches now cost an additional one of each non-alloy component - to construct for every three existing Tinkerer's Caches, up to a maximum of - 5 of each non-alloy component. - - rscadd: Revenant scriptures now announce to all servants and ghosts when used - instead of having a visible message. - Lzimann: - - tweak: Blood packs are now back in surgery room. - MMMiracles: - - rscadd: A giant wad of paper has been seen hurling through the nearby sector of - SS13, officials deny existence of giant paper ball hurling through space because - 'thats really fucking stupid'. - MrStonedOne: - - bugfix: Fixes super darkness from lighting creating two darkness overlays on the - same turf but only changing the darkness of one of the overlays - PKPenguin321: - - rscadd: Added Canned Laughter for the clown. Hehehe - RemieRichards: - - tweak: Auto-generated ratvarian now follows all the rules of hand-written ratvarian, - but you probably won't notice. - Shadowlight213: - - tweak: Angels can now equip satchels - - rscadd: Players will now receive an achievement for killing their first megafauna - after this point. - - rscadd: Additionally, megafauna kills are now tracked on a hub page. Rack up those - kills for first place! - Xhuis: - - rscadd: Clockwork cultists may now have the "Escape" and "Silicon" objectives, - requiring a certain amount of servants to escape on the shuttle and all silicons - to be converted respectively. - - rscadd: Ocular wardens are now forced to target bibles rather than the people - holding them. -2016-07-28: - Cruix: - - bugfix: Fixed a bug where some objects in photos would not be displayed if they - were facing a certain direction. - - bugfix: Photograph descriptions will no longer claim that mobs with low max health - are hurt when they are not. - Incoming5643: - - rscadd: The previously underwhelming viscerator robot has been made a lot more - terrifying by the new ability to proactively target and dismember limbs. - Joan: - - tweak: The Tinkerer's Cache cost increase for having multiple Tinkerer's Caches - now happens every 5 caches, from every 3. - - experiment: If the invoker of Nzcrentr is knocked unconscious or killed, they - will gib instead of producing a lighting blast. - - tweak: Anima Fragments slow down for slightly less time when hit. - - tweak: Clockwork Marauders do 1 more damage on every attack. - - tweak: Wraith Spectacles are now less hard on the eyes, and can be used without - permanent vision impairment for about 50% longer; from 40~ seconds to about - 1 minute. - - tweak: Halves the Interdiction Lens' disrupt cost from 100 per disrupted object - to 50 per disrupted object. - - tweak: Clockwork Sigils will now be destroyed by any level of explosion, except - for Sigils of Transmission, which will gain a small amount of power if hit by - a light explosion instead of breaking. - - bugfix: Clockwork Structures will now properly take damage from explosions instead - of variably not taking damage or instantly being destroyed. - - rscadd: Ghosts can now click Spatial Gateways to teleport to the other gateway. - - bugfix: Spatial Gateways are now properly disrupted by devastating explosions(but - not heavy or light explosions) - - rscadd: Striking a Sigil with any damaging item as a non-servant will remove it. - Servants still need to be on harm intent with an empty hand to remove Sigils. - Kor: - - rscadd: The Staff of Storms, dropped by Legion, can now be used on station. - MMMiracles: - - rscadd: Adds jump boots, a mid/end-tier mining equipment that allows the user - to dash over 4-wide chasms. - ModernViolence: - - bugfix: Hulk now has default cooldown for melee attacks against dominator - MrStonedOne: - - tweak: Space wind (movement from pressure differentials (like a hole to space)) - has been improved. - - tweak: Space wind's rate of movement now scales with pressure differential amount. - - experiment: Actively moving (as in holding down a move key) reduces chance/rate - of getting moved by space wind. - - rscadd: 'Having a wall or dense anchored object to your left or right will lower - the chance/rate of getting moved by space wind for each direction (IE: a wall - on both sides of you will be a double reduction)' - - rscadd: Added Lazy airlock cycling. Bump opening an airlock with this system will - close its partner. This system has been added to most airlocks that go to space - on boxstation, as well as airlocks to secure areas like brig, bridge, engine. - - tweak: This can be overridden by click opening, having a shuttle docked, or setting - emergency mode on one of the doors. - PKPenguin321: - - bugfix: Laughter no longer makes you laugh if you're muted. - - rscadd: Laughter can now be brewed with banana juice and sugar. - Thunder12345: - - rscadd: An old rapier was found rusting in the back of a closet. We cleaned it - up, polished it, and assigned it to your captain as a ceremonial weapon only. - Warranty void if used in combat. - incoming5643: - - tweak: viscerator grenades are now more generous with viscerators spawned -2016-07-30: - astralenigma: - - bugfix: Admins can now turn people into red god. -2016-07-31: - Arctophylax: - - bugfix: Birdboat's atmospheric tanks now function normally again. - - bugfix: Birdboat's TEG is now orientated to match the pipe layout. - Bawhoppen: - - tweak: toolboxes fit in backpacks - Gun Hog: - - rscadd: In an effort to reduce the demoralizing effects that accompany the death - of a crew member, Nanotrasen has provided the prototype designs for the Sad - Trombone implant. It can be fabricated at your station's protolathe, if you - manage to secure the ever elusive Bananium ore. - Joan: - - rscadd: Megafauna will now seek and consume corpses of enemies to heal or otherwise. - - tweak: Toolboxes are slightly more robust. - - tweak: Vanguard now only stuns for 25% of absorbed stuns, from 50%. - Kor: - - rscadd: Hostile mobs will now attack turrets. - Robustin: - - rscdel: Amber ERT Commanders no longer have thermal goggles - lordpidey: - - rscadd: Added Devil agent gamemode, where multiple devils are each trying to buy - more souls than the next in line. - - rscadd: If you've already sold your soul, you can sell it again to a different - devil. You can even go back and forth for INFINITE POWER. -2016-08-01: - Bawhoppen: - - rscadd: Added crowns. Make them from gold. Cap gets a fancy one. - Fox McCloud: - - rscadd: Adds in generic uplink refund system that potentially allows for even - regular traitors to refund uplink items - Joan: - - rscadd: Soul Vessels can now be used on unconscious or dead humans to extract - their consciousness, much like a soulstone. - - tweak: Soul Vessels no longer automatically ping ghosts when created, though they - can still be used in-hand to ping ghosts. - - rscadd: Soul Vessels can now communicate over the Hierophant Network - - experiment: Xenobiology golems enslaved to someone will become convertable if - their enslaver is converted to the enslaving antag type; this applies to gang - and both cult types. - oranges: - - rscdel: Reverted toolboxes fitting in backpacks due to being incorrectly merged -2016-08-02: - CoreOverload: - - rscadd: Pockets in coats! -2016-08-05: - Arctophylax: - - bugfix: The Emergency Medical and Winter Wonderland Holodeck programs work once - again. - Cruix: - - bugfix: RCDs can no longer place multiple grilles on the same tile. - - bugfix: RCDs will no longer use all their ammo if you try to build a wall on the - same turf multiple times. - - tweak: RCDs will now inform their user if they do not have enough ammo to complete - an operation. - Incoming5643: - - rscadd: Parrots have been made more robust. - Joan: - - rscadd: Clockwork Constructs, including anima fragments, marauders, and reclaimers, - can now communicate over the Hierophant Network. - - rscadd: Plasma cutters(normal, advanced, and mech) now have double range in low - pressure areas, but slightly lower range in high pressure areas. - - rscadd: Vitality Matrices will consume dead non-servant mobs to gain a large amount - of Vitality. This doesn't work on mobs that did not have a mind at some point. - Lordpidey and PKPenguin321: - - rscadd: Recent studies have revealed that fly amanita can give you a huge trip. - Lzimann: - - tweak: Holy water no longers makes you confused. - ModernViolence: - - bugfix: 'Photocopier fixes: proper sprites for not empty copies; removing originals - now does not delete them' - PKPenguin321: - - rscadd: Chef, do your station a favor and make a home run baseball burger (TM) - Robustin: - - rscadd: The initial supply talisman can now be used to create runed metal, 5 per - use - - rscadd: The void torch is now available from the altar, use it to transport any - item instantly to any cultist! It appears alongside the veil shifter as part - of the "Veil Walker" set. - - rscadd: Cult floors no longer appear on mesons! - - tweak: Flagellant's Robes now increases damage taken by 50%, down from 100% - - tweak: Veil Shifter has 4 uses, up from 2 - - tweak: Shuttle curse now delays shuttle 3 minutes, up from 2.5 minutes - - tweak: Cult forges, archives, and airlocks have had their cost reduced by 1 runed - metal each - Shadowlight213: - - rscadd: You will now receive an achievement for winning a pulse rifle at the arcade. - TheCarlSaganExpress: - - rscadd: Added lighting effects to the welder. -2016-08-07: - Arctophylax: - - bugfix: You can unbuckle mobs from meat spikes by clicking on the spike once again. - Joan: - - tweak: Barrier runes will now block air while active. - - rscadd: Trying to use sleeping carp against the colossus will now anger it. - frtbngll: - - bugfix: Fixed Paper Wizard summoning only 9 minions in its lifespan by making - the dead stickman decrease it's summoned_minions variable - lordpidey: - - bugfix: Centcom has received reports of cyborgs electrocuting themselves when - working on the power grid, and we have decided to stop storing important electronics - on the wirecutter's blade. -2016-08-08: - Ergovisavi: - - rscadd: Added bonfires to botany. Requires five tower cap logs to create, and - mobs can be buckled to them if an iron rod is added to the bonfire and the mob - is restrained. - Joan: - - rscadd: Added the clockcult "Global Records" alert, which clock cultists can mouse - over to check a variety of information on the clockcult's status, including - living servants, number of caches, CV, tinkerer's daemons, if there's an unconverted - AI, what clockwork generals can be invoked, and what scripture is unlocked. - Shadowlight213: - - rscadd: Ghosts can now see human player's huds when using the OOC -> Observe verb - WJohnston, Gun Hog: - - tweak: Xenos are now considered female. - - tweak: Hunter pounce are now always blocked by shields, and may be blocked more - often by other protective items. - - tweak: Alien Queen is now somewhat faster. - - tweak: Adjusted larva growth sprites. - - tweak: Removed 20% facehugger failure chance for masks. - - tweak: Disarm now always forces a person to drop an item in the active hand, and - if a person's hand is empty/undroppable, Disarm will always result in a tackle. - - tweak: Cyborgs disarmed by a Xeno will first disable their selected module, and - if there is none selected, the cyborg will be pushed back and stunned. - - tweak: Tail Sweep now has a slightly longer stun. -2016-08-10: - Cruix: - - rscadd: Sentient minebots can now toggle meson vision, a flashlight, their mode, - and dump their stored ore. - - bugfix: Sentient minebots can now be repaired if they were made sentient while - the AI was active. - - bugfix: Healing minebots will no longer switch them to attack mode. - - tweak: Sentient minebots can now shoot at humans. - - bugfix: The cooldown on wizard lightning will no longer break if you ethereal - jaunt or RISE! after the initial cast. - Kor: - - rscadd: You can now detonate drones with the RD console - LanCartwright: - - rscadd: Acute respiratory distress syndrom symptom. - - rscadd: Toxic metabolism. - - rscadd: Alkali perspiration - - rscadd: Autophagocytosis Necrosis - - rscadd: Apoptoxin filter - - rscadd: 3 different lategame/Non-roundstart virus reagents - - rscadd: 4 different lategame/Non-roundstart virus recipes - MrStonedOne: - - tweak: Tweaked space wind, it should now only trigger at higher pressure differences, - but be quicker to become aggressive as the pressure difference gets higher. - This should alleviate issues where small differences was still moving a lot - of things. - - tweak: Paper still moves with any pressure difference. - PKPenguin321: - - rscadd: There's now an achievement for managing to examine a meteor as a living - mob! - RemieRichards: - - rscadd: 'Added a new PDA button/app: Drone Phone!' -2016-08-14: - Cheridan: - - tweak: Greatly reduced amount of Hydroponics yield multipliers - - tweak: Somewhat reduced gaia'd tray sustainability. - - tweak: Mutagen will no longer potentially cause plant instadeath based on RNG. - Ergovisavi: - - tweak: Watchers no longer randomly fire beams at you when damaged, and no longer - beam you at point blank. - Gun Hog: - - tweak: The AI's Crew Manifest button now uses the updated styling. - Joan: - - rscadd: Sigils of Transgression now glow brightly when stunning a target. - - rscadd: The Global Records alert now shows the location and countdown time of - the Gateway to the Celestial Derelict. - - tweak: Clockcult tooltips now all have the clockcult tooltip style. - - rscdel: You can no longer become a Reclaimer when clicking on Ratvar. You can - still become a Cogscarab, however. - - bugfix: You can no longer invoke Vanguard while under its effects. - - bugfix: Servants of Ratvar should now always get an announcement when scripture - states change. - - tweak: Function Call can be used to summon a Ratvarian Spear once every 3 minutes, - from 5, but the spear summoned will now only last 3 minutes. - - rscadd: Belligerent now does minor damage to the legs on each invocation, up to - a maximum of 30 damage per recital. - - tweak: Ratvarian Spears will now stun any mob they're thrown at instead of just - enemy cultists and silicons, though the stun is still longer on enemy cultists - and silicons. - Jordie0608: - - rscdel: Removed clicking clown mask to morph it's shape, use action button instead. - Kor: - - rscadd: Added support for projectiles which can dismember - - rscadd: Added a new wizard sword, the spellblade, which fires dismembering projectiles. - Sprites from Lexorion. - - rscadd: Plasmacutter blasts can now take limbs off, but they still do pitiful - damage in a pressurized environment. - - rscadd: Humans and drones now have a UI button that allows them to create new - areas, in the same manner as blueprints. Unlike blueprints, this button does - not allow you to edit existing areas. - - rscadd: You can now use mineral doors (or any other object that blocks atmos) - to complete rooms with blueprints - - rscadd: Players created by sentience potions, mining drone upgrades, or Guardian/Holoparsite - summoners will now automatically join the users antagonist team, if any. - - rscadd: Mobs created in this manner will no longer be convertable/deconvertable - unless their creator is first converted/deconverted. - - rscadd: Cayenne will now officially become an operative when given a sentience - potion. - LanCartwright: - - bugfix: Fixes the recipes not working. - - tweak: Changes Stable uranium virus food recipe from Plasma virus food to just - plasma. - RemieRichards: - - bugfix: You can no longer use the incorrect limb type during augmentation - - bugfix: You can no longer use the incorrect limb type during prosthetic replacement - Shadowlight213: - - rscadd: Security has two new weapons in their arsenal. The security temperature - gun, and the DRAGnet capture and recovery system. - optional name here: - - bugfix: The syndicate uplink ui has been refactored to majorly reduce lag -2016-08-15: - Joan: - - rscadd: The Ark of the Clockwork Justicar can now be constructed even if Ratvar's - rise is not the objective. - - experiment: Accordingly, its behavior is different; instead of summoning Ratvar, - it will convert a massive amount of the station, and should effectively instantly - complete the clockwork cult's objectives. - MrStonedOne: - - tweak: Tweaked the lag stop numbers to hopefully reduce lag during 80+ population - - tweak: Fixed the blackbox not blackboxing. - OSCAR MIKE: - - rscadd: CONTACT ON THE LEFT SIDE! -2016-08-16: - MrStonedOne: - - rscadd: Automated the granting of profiler access to admins - oranges: - - rscadd: Nanotrasen is an all right kind of company -2016-08-17: - Basilman: - - rscadd: Added an admin-spawnable only "Cosmohonk" hardsuit that has the same protection - values of an engineering hardsuit. Comes with built-in lights and requires clown - roundstart role to be equipped. - Ergovisavi: - - rscadd: Adds the "Proto-Kinetic Crusher", a new melee mining weapon. Available - at a mining vendor near you! - Gun Hog: - - tweak: Nanotrasen has improved the coolant system in the stations automated robots. - They will no longer violently explode in hot rooms. - Joan: - - rscadd: Once the blob alert message is sent in the blob game mode, all mobs get - to see how many tiles the blob has until it wins, via the Status tab. - - rscdel: Removed/merged a bunch of blob chems, you probably don't care about the - specifics. - - tweak: The remaining blob chems should, overall, be more powerful. - - tweak: Shield blobs soak brute damage less well. - - tweak: Flashbangs do higher damage to blobs up close, but their damage falls off - faster. - - experiment: Shield blobs now cost 15 resources to make instead of 10. Node blobs - now cost 50 resources to make instead of 60. - - experiment: Expanding/attacking now costs 4 resources instead of 5, and blobs - can now ATTACK DIAGONALLY. Diagonal attacks are weaker than normal attacks, - especially against cyborgs(which may be entirely immune, depending), and they - remain unable to expand diagonally. - - rscadd: Shield blobs no longer block atmos while under half health. Shield blobs - are still immune to fire, even if they can't block atmos. - - tweak: Blobs should block explosions less well. - - rscadd: Blob cores and nodes are no longer immune to fire and no longer block - atmos. - - rscadd: Blobs can only auto-expand one tile at a time per expanding thing, and - should be easier to beat back in general. - - tweak: Blobbernauts now attack faster. - - tweak: Blob Overminds attack mobs slower but can attack non-mobs much faster. - - rscadd: Blob Overminds start with some amount of resources; in the gamemode, it's - 80 divided by the number of overminds, in the event, it's 20 plus the number - of active players, and otherwise, it's 60. - - bugfix: You can no longer move blob cores into space, onto the mining shuttle, - white ship, gulag shuttle, or solars. - - bugfix: Blob rounds might be less laggy, if they were laggy? - - tweak: Blobs don't heal as fast, excluding the core. - - experiment: Blobs are marginally less destructive to their environment. - MrStonedOne: - - rscdel: The server will no longer wait until the next tick to process movement - key presses. Movements should now be ~25-50ms more responsive. - Shadowlight213: - - rscadd: Adds modular computers -2016-08-21: - Ergovisavi: - - tweak: Consolidates the fulton packs into a single item and makes them more user - friendly - Google Play Store: - - spellcheck: Minor Text Fixes. - Incoming5643: - - rscadd: Smuggler satchels left behind hidden on the station can now reappear in - a later round. - - experiment: There's absolutely no way of knowing when exactly it will reappear - however... - - rscadd: Only one item in the satchel will remain when the satchel reappears. - - rscadd: Items are saved in their initial forms, so saving things like chemical - grenades will only disappoint you. - - rscadd: The item pool is map specific and needs to be a certain size before satchels - can start reappearing, so get to hiding that loot! - - rscadd: The staff of change has been expanded to turn you into even more things - that don't have hands. - Jalleo: - - bugfix: Gulag Teleporter of two issues any more please report them. - Jordie0608: - - rscadd: Advanced Energy Guns once again have a chance to irradiate you if EMPed. - Kor: - - rscadd: Kinetic Accelerators are now modular. You can find mod kits in the mining - vendor and in RnD. - - bugfix: Chaplain's dormant spellblade is no longer invisible. - Papa Bones: - - rscadd: A new, scandalous outfit is now available as contraband from the clothesmate - vendor, check it out! Fulfill your deep, dark fantasies. - Shadowlight213: - - tweak: Service and cargo have lost roundstart tablets and engineering has gained - them - - tweak: you can now charge battery modules in cell chargers. Use a screwdriver - on a computer to remove them. As a note, tablets and laptops can be charged - directly by placing them in a security charger. - WJohnston: - - rscadd: Metastation and Boxstation now boast auxillary mining construction rooms - in arrivals. These allow you to build a base and then launch it to wherever - you want on lavaland. - Wjohnston, Gun Hog: - - rscadd: Aliens with Neurotoxic Spit readied will now have drooling animations. - - rscadd: Hunters may now safely leap over lava. - - tweak: Hulk punches no longer stun Xenos. - - tweak: Alien evolve and promotion buttons updated to current Xeno sprites - - bugfix: Handcuff sprites for Xenos now show properly. -2016-08-22: - Bawhoppen: - - rscdel: Stock computers have been temporarily removed due to imbalances. - Ergovisavi: - - bugfix: Bubblegum's charge indicator should be significantly more accurate now. - ExcessiveUseOfCobblestone: - - rscdel: Reverts getting partial credit for discovered seeds. - - tweak: 'Tweaks Money Tree Potency Values [For instance: 1000 Space Cash requires - 98-100 Potency]' - Lzimann & Lexorion: - - rscadd: Adds a bow to the game, currently not craftable - Shadowlight213: - - bugfix: The efficiency AI sat SMES will now charge the APCs instead of itself. - XDTM: - - rscdel: Removed the Longevity symptom. - - rscadd: Added Viral Aggressive Metabolism, which will make viruses act quickly - but decay over time. - - rscadd: Cloning can now give bad mutations if unupgraded! - - rscadd: Cloning can, however, give you good ones if upgraded! -2016-08-24: - Bones: - - rscadd: The detective's closet now contains a seclite, get sleuthing! - Cargo Intelligence Agency: - - rscdel: You don't get to bring traitor items. - Ergovisavi: - - rscadd: Adds "Sacred Flame", a spell that makes everyone around you more flammable, - and lights yourself on fire. Share the wealth. Of fire. - - tweak: Replaces the fireball spellbook as a possible reward from a Drake chest - with a book of sacred flame. - Gun Hog: - - rscadd: The Aux mining base can now call the mining shuttle once landed! The mining - shuttle beacon that comes with the base must be deployed to enable this functionality. - - tweak: Multiple landing zones may now be set for the mining base. - - tweak: The coordinates of each landing zone is shown in the list. - - rscadd: Miners now each get a remote in their starting lockers. tweak The Aux - mining base now requires lighting while on station. - - tweak: The Aux Mining Base now has a GPS signal. - - tweak: The Aux Mining Base now has an alarm for when it is about to drop. - Incoming5643: - - rscadd: 'A slight change to the secret satchel system described below: If a satchel - cannot be spawned due to there not being enough hidden satchels to choose from, - a free empty satchel will spawn hidden SOMEWHERE on the station. Dig - it up and bury it with something interesting!' - Joan: - - rscadd: Using a resonator on an existing resonator field will immediately detonate - that field. Normal resonators will reduce the damage dealt to 80% of normal, - while upgraded resonators will not reduce it at all. - - rscadd: Adds a KA mod that does damage in an AoE, found only in necropolis chests. - - rscadd: You can now install any KA mods into a mining cyborg, though its mod capacity - is slightly lower. - - tweak: Mining cyborgs now have a crowbar to remove mods from their KA. - - tweak: Kinetic Accelerators now have a larger mod capacity, though most mods can - still only be installed the same amount of times as they can currently. - - tweak: You can now hit modkits with Kinetic Accelerators to install that modkit - into the accelerator. Mining cyborgs are unable to do so. - - rscadd: Added white and adjustably-coloured tracer round mods to the mining equipment - vendor, so you can see where your projectile is going(and look cool). - - rscadd: Added the super and hyper chassis mods to the mining equipment vendor, - so you can use excess mod space to have a cool-looking KA. - MrStonedOne: - - rscdel: Removes check on lights preventing you from turning them on while in a - locker - PKPenguin321: - - rscadd: Xeno queens now have an action button that makes them appear to themselves - as the old, small queen sprite. Now they should be able to interact with things - that are above them more easily. - Shadowlight213: - - tweak: Reviver and nutriment implants are far easier to get and have lower tech - origins. - - rscdel: Centcom has cut back on their cat carrier budget and will now only be - able to bring kittens along with runtime. - - rscadd: A new event has been added. The automated grid check. All apcs in non - critical areas will be shut off for some time, but can be manually rebooted - via interaction. - Yackemflam: - - tweak: Boxes are worth >26 tc at LEAST -2016-08-28: - CoreOverload: - - tweak: You can now use sheets from any hand, not just the active one. - Iamgoofball: - - tweak: Station and Character names are now allowed to be longer. - - rscdel: Gender Reassignment surgery has been removed. - Incoming5643: - - experiment: 'Due to a bad case of "being terrible" the save system for secret - satchels has been reworked. All saves are now unified in a single data file: - /data/npc_saves/SecretSatchels' - - rscdel: 'Old savefiles such as: /data/npc_saves/SecretSatchels_Box Station can - now be safely removed.' - - rscadd: A new slime reaction has been found for pink slimes using blood. The potion - produced from this reaction can be used to change the gender of living things. - Decently useful for animal husbandry, but otherwise mostly just for pranks/"""roleplay"""/enforcing - a brutal regime composed entirely of female slime people. - Joan: - - bugfix: Bumping the AI on help intent will no longer cause it and you to swap - positions, even if it is unanchored. If unanchored, it will properly push the - AI around. - - rscadd: The staff of lava can now turn lava back into basalt. - - bugfix: Placing a singularity or energy ball generator directly in front of an - active particle accelerator may be a bad idea. - Kor: - - rscadd: Added Battlemage armour to the spellbook. The armour is heavily shielded, - but will not recharge once the shields are depleted. - - rscadd: Added armour runes to the spellbook, which can grant additional charges - to the Battlemage armour. - MrStonedOne: - - rscadd: The game window will now flash in the taskbar on incoming admin pm, and - to all admins when an admin help comes in. - PKPenguin321: - - rscadd: The tesla is now much more dangerous, and can cause electronics to explode - violently. - - rscadd: It now hurts to get thrown into another person. - Shadowlight213: - - tweak: The radiation storm random event will automatically enable and disable - emergency maint. - - rscadd: The radiation storm random event is now a weather type that affects the - station. - - bugfix: The security temperature gun now has a firing pin making it 0.0000001% - more useful! - - rscadd: Added config option to use byond account creation age for job limits. - WJohnston: - - imageadd: Lavaland lava probably sorta looks better I guess. - Yackemflam: - - rscadd: Sniper kit have been given as a syndicate bundle set. Be warned though, - they are not as equipped as the nuclear agent kits. - kilkun: - - rscadd: Adds a shielded deathsquad hardsuit. it has four charges and recharges - after 15 seconds of not being shot (compared to the syndicate 3 charges and - 20 second recharge rate) - - tweak: All death commandos now spawn with this new hardsuit. The previous hardsuit - was not removed. - pubby: - - rscadd: Mining scanner module to standard borgs - - rscdel: Sheet snatcher module from standard borgs - xxalpha: - - rscadd: Cigarette packs, donut boxes, egg boxes can now be closed and opened with - Ctrl+Click. - - rscadd: Lighters are now represented in cigarette packs with a sprite of their - own. - - rscadd: You can now remove a lighter from a cigarette pack quickly with Alt+Click. - - bugfix: Reduced the amount of cigars that cigar cases can hold to 5 because the - cigar case sprite doesn't support more than that. -2016-08-29: - Cruix: - - rscadd: Space floppy-disk technology has advanced to the point that multiple technologies - or designs can be stored on a single disk. - Joan: - - rscadd: Lava bubbling up from basalt turfs now glows if in sufficient concentration. - - rscadd: Necropolis tendrils now glow. - - rscadd: Lava rivers now have riverbanks, and should overall look much nicer. - Shadowlight213: - - bugfix: The revenant ectoplasm sprite is no longer invisible. - Xhuis: - - rscadd: Highlander has been revamped. Now you can butcher your coworkers in cold - blood like never before! -2016-08-30: - oranges: - - tweak: The ed209 can now only fire as fast as the portaturrets -2016-08-31: - Iamgoofball: - - rscadd: Adds a new experimental gas to the game. Check it out! - Joan: - - rscadd: Vanguard now has a tooltip showing the amount of stuns you've absorbed - and will be affected by. - MMMiracles: - - bugfix: Xenomorphs can now actually damage barricades. - Shadowlight213: - - bugfix: Fixed runtime preventing access locked programs from being downloaded - XDTM: - - rscadd: Metal slimes now spawn a few sheets of glass when injected with water. - xxalpha: - - tweak: Opening and closing of donut boxes, etc. is now done with clicking the - object with itself. - yackemflam: - - rscadd: The standard rounds now blow off limbs. Happy hunting! -2016-09-01: - Cruix: - - bugfix: fortune cookies will now drop their fortunes when they are eaten. - Iamgoofball: - - tweak: NULL Crate in cargo was added again because people are fucking idiots so - if we're going to have this stupid fucking crate might as well make it not fucking - garbo - Kor: - - rscadd: Watertanks will now explode when shot. - Lzimann: - - tweak: You can now open all access doors while restrained. - Shadowlight213: - - tweak: Rad storms are more obvious - - bugfix: Pizza bombs will now delete after exploding. - phil235: - - tweak: Putting packagewrap or hand labeler in a backpack is now done by clicking - and dragging. - - bugfix: You can now wrap backpacks and other storage items with packagewrap. -2016-09-02: - A-t48: - - bugfix: Fixed cyborgs being able to use Power Warning emote when broken. - Iamgoofball: - - experiment: Freon has been reworked completely. - - rscadd: Water Vapor has been added to the Janitor's Closet. - RemieRichards: - - bugfix: Cutting bedsheets with a sharp object/wirecutters no longer puts the resulting - cloth INSIDE OF YOU if you're holding it, what a bug. - bgobandit: - - tweak: You can hide small items in urinals now. Use a screwdriver to screw open - the drain enclosure. - - rscadd: Every space urinal comes complete with space urinal cake. Do not eat. -2016-09-04: - A-t48: - - bugfix: Radiation storms no longer spam "Your armor softened the blow." - - bugfix: Radiation always gives a message that you are being irradiated, regardless - of armor level (only an issue if you stripped off all clothing) - - bugfix: Radiation now displays a message appropriate for all mob types (no longer - references clothes). - Gun Hog: - - rscadd: Ghosts may now read an AI or Cyborg's laws by examining them. - Joan: - - rscadd: The talisman of construction now has 25 uses, each of which can convert - a sheet of plasteel to a sheet of runed metal. It can still convert metal into - construct shells, and requires no specific amount of uses to do so. - - rscadd: Added the 'Drain Life' rune to the runes cultists can make. It will drain - life from all creatures on the rune, healing the invoker. - - imageadd: The 'Astral Communion' rune has a new sprite, made by WJohnston. - - rscdel: You can no longer use telekinesis to hit people with items they're holding, - items inside items they're holding, items embedded in them, items actually implanted - in them, or items they're wearing. - MMMiracles: - - rscadd: A set of combat gear for bears has been added, see your local russian - for more information. - XDTM: - - tweak: Nanotrasen has now stocked the DNA Manipulators with potassium iodide instead - of epinephrine as rejuvenators. -2016-09-07: - A-t48: - - bugfix: you can now scrub freon and water vapor - - bugfix: you can now label canisters as freon and water vapor - AnturK: - - rscadd: Watch out for special instructions from Centcom in the intercept report. - Cheridan: - - tweak: Brain damage no longer causes machines to be inoperable. - Ergovisavi: - - bugfix: Stops ash drakes from swooping across zlevels - Impisi: - - tweak: Increased chances of Modular Receiver drop in Maintenance - Incoming5643: - - rscdel: Wizards can no longer purchase the Cursed Heart from their spellbook. - Joan: - - experiment: The lava staff now has a short delay before creating lava, with a - visible indicator. - - tweak: The lava staff's cooldown is now somewhat shorter, and turning lava back - into basalt has a much shorter cooldown and no delay. - Lzimann: - - tweak: Stunprods no longer fit in your backpack, they go on your back now. - MrStonedOne: - - bugfix: Fixed lava sometimes doing massive amounts of damage. - - tweak: AFK players will no longer default to continue playing during restart votes. - XDTM: - - bugfix: Cloners now preserve your genetic mutations. - pubby: - - tweak: Changed military belt TC cost from 3 -> 1 - - tweak: Update ingredient boxes to have more useful ingredients -2016-09-08: - Jordie0608: - - rscadd: Notes can now be tagged as secret to be hidden from player viewed notes. - Lzimann: - - tweak: Legion implants now have a full heal when implanted instead of passive - heal + spawn tentacles. The healing also goes off when you enter crit. - Yackemflam: - - rscadd: You can now buy a box for a chance to mess with the stations meta for - ops. -2016-09-09: - Ergovisavi: - - rscadd: Adds new loot for the colossus, the "Anomalous Crystal" - - tweak: Enabled colossus spawning again - Joan, Ausops: - - rscadd: Added some very fancy tables, constructed by adding carpet tiles to a - standard table frame. - MrStonedOne: - - experiment: Blessed our beloved code with dark magic. - Shadowlight213: - - tweak: Radiation storm direct tox loss removed - - tweak: Radiation storms now cause a radiation alert to appear for the duration -2016-09-12: - Joan: - - rscadd: Cult structures can once again be constructed with runed metal. - - experiment: Cult structures can now take damage and be destroyed. Artificers can - repair them if they're damaged. - - tweak: The Recollection function of the clockwork slab is much more useful and - easier to parse. - - wip: Tweaked the Recital menus for scripture so the scripture are all in the proper - order. This might fuck you up if you were used to the incorrect order, but you'll - get used to it. - Nanotrasen Anti-Cheese Committee: - - bugfix: A glitch in the hydroponics tray firmware allowed it to retain plant growth - even after the plant was removed, resulting in the next planted seed being grown - instantaneously. This is no longer possible. - PKPenguin321: - - bugfix: Tesla shocks from grilles will no longer do thousands and thousands of - damage. They now properly deal burn damage that is equal to the current power - in the powernet divided by 5000. - Papa Bones: - - tweak: You can now rename the captain's sabre by using a pen on it. - RemieRichards: - - rscadd: Added the functionality for mobs to have multiple hands, this might have - broken some things, so please report any weirdness - Shadowlight213: - - rscdel: The surplus crate and random item will now only contain items allowed - by the gamemode - - rscdel: removes sleeping carp scroll from surplus crates - - experiment: Minimaps will now try to load from a cache or backup file if minimap - generation is disabled. - TheCarlSaganExpress: - - rscadd: Crayons, lipstick, cigarettes, and penlights can now be inserted into - PDAs. - phil235: - - rscadd: Monkeys can be dismembered. - - rscadd: Humans, monkeys and aliens can drop limbs when they are gibbed. - - rscadd: Roboticists can remove flashes, wires and power cells that they inserted - in robot head or torso by using a crowbar on it. - - rscadd: visual wounds appear on a monkey's bodyparts when injured, exactly like - humans. - - rscadd: Using a health analyzer on a monkey or alien shows the injuries to each - bodypart. - - rscadd: Monkeys can become husks. - - bugfix: Human-monkey transformations now respect missing limbs. No more limb regrowth - by becoming a monkey. - - bugfix: Changeling's regenerate ability also work while in monkey form. - - bugfix: Alien larva has its own gib and dust animation. - - bugfix: A bodypart that looks wounded still looks bloody when dismembered. - - bugfix: Amputation surgery now works on robotic limbs, and monkeys. -2016-09-14: - Ergovisavi: - - bugfix: Fixes lockers, bodybags, etc, giving you ash storm / radiation storm protection - Erwgd: - - rscadd: Upgraded sleepers can now inject inacusiate to treat ear damage. - Joan: - - rscadd: Added brass, producible by proselytizing rods, metal, or plasteel, or - by using Replicant Alloy in-hand, and usable to construct a variety of cult-y - brass objects. - - tweak: Objects constructable with brass include; wall gears, pinion airlocks, - brass windoors, brass windows, brass table frames and tables, and brass floor - tiles. - - rscadd: Cogscarabs can convert brass sheets into liquified alloy with their proselytizer. - - tweak: You can use brass sheets on wall gears to produce clockwork walls, or, - if the gear is unanchored, false clockwork walls. - - bugfix: Fixed a bug preventing you from converting grilles into ratvar grilles. - - experiment: Please note that conservation of mass exists. - Sligneris: - - tweak: Captain's space armor has been readapted with modern hardsuit technology. - oranges: - - tweak: Examine code for dismembered humans now has better easter eggs -2016-09-17: - BoxcarRacer41: - - rscadd: Added a new food, bacon. Bacon is made by processing raw meat cutlets. - - rscadd: Added a new burger recipe, the Bacon Burger. It is made with one bun, - one cheese wedge and three pieces of cooked bacon. - Ergovisavi: - - rscadd: Added a nightvision toggle to Shadowpeople - - tweak: Made several anomalous crystal variants more easily identified/easier to - see the effects thereof, and removed the "magic" activation possibility (replaced - with the "bomb" flag) - Gun Hog: - - tweak: Nanotrasen Robotics Division is proud to announce slightly less clunky - leg servo designs relating to the "Ripley" APLU and "Firefighter" exosuits. - Tests show increased mobility in both high and low pressure environments. The - previous designer has been fired for incompetence. - Improves tablets design: - - imageadd: Brings the tablet icons into the holy light of having depth - Joan: - - rscadd: Megafauna will now use ranged attacks even if they don't have direct vision - on their target. - - rscadd: Volt Void and Interdiction Lenses will now drain mech cells of energy. - - tweak: Ocular Wardens do slightly more damage to mechs. - - experiment: Replicant, Soul Vessel, Cogscarab, and Anima Fragment now take an - additional second to recite. - - tweak: Anima Fragments do slightly less damage in melee. - - tweak: Mending Motors and Clockwork Obelisks have slightly less health. - - tweak: Invoking Nezbere now requires 3 invokers. - - rscdel: Clockwork armor no longer has 5% energy resistance. - - bugfix: You can no longer construct clockwork structures on space turfs. - Papa Bones: - - tweak: BZ gas is no longer available on Box and Metastation layouts. - phil235: - - tweak: You no longer have to click a megaphone to use it, you simply keep it in - your active hand and talk normally. - - rscadd: Added new things - - imageadd: added some icons and images -2016-09-20: - Ergovisavi: - - bugfix: fixed "friendly" xenobio mobs and mining drones attacking station drones - Joan: - - rscadd: Miners can now buy KA AoE damage mods from the mining vendor for 2000 - points per mod. - - rscadd: 'Combined the Convert and Sacrifice runes into one rune. It''ll convert - targets that are alive and eligible, and attempt to sacrifice them otherwise. - The only changes to mechanics are that: Converting someone will heal them of - all brute and burn damage they had, and sacrificing anything will always produce - a soulstone(but will still only sometimes fill it)' - - tweak: You can no longer teleport to Teleport runes that have dense objects on - top of them. - - experiment: Wall runes will now activate other nearby wall runes when activated, - but will automatically disable after a minute and a half of continuous activity - and become unusable for 5 seconds. - - experiment: The Blood Boil rune no longer does all of its damage instantly or - stuns, but if you remain in range for the full duration you will be sent deep - into critical. - - experiment: Bubblegum has been seen reaching through blood. Try not to get hit. - - experiment: The Raise Dead rune no longer requires a noncultist corpse to revive - a cultist; instead, it will draw from the pool of all people sacrificed to power - the rune. - Mekhi: - - rscadd: Nanotrasen has been experimenting on cybernetics for a while, and rumors - are they have a few combat prototypes available... - - experiment: 'New arm implants: Energy-blade projector, implanted medical beamgun, - stun-arm implant (Like the borg version), flash implant that is automatically-regenerating - and doubles as a powerful flashlight. There is also one with all four items - in one. Also, a surgery toolkit implant. Adminspawn only for the moment.' - MrStonedOne: - - bugfix: Fixed space/nograv movement not triggering when atoms moved twice quickly - in space/nograv - Nanotrasen Stress Relief Board: - - rscadd: Latecomers to highlander can now join in on the fun. - - rscadd: The crew are encouraged to less pacifistic during highlander. Failing - to shed blood will result in your soul being devoured. Have a nice day. - Nicho1010: - - bugfix: Fixed lattices appearing after exploding lava - Screemonster: - - tweak: Abandoned crates no longer accept impossible guesses. - - tweak: Lets players know that all the digits in the code must be unique. - - tweak: Reads the last guess back on the multitool along with the correct/incorrect - guess readout. - - bugfix: multitool output on crates no longer returns nonsense values. - XDTM: - - rscadd: Positive viruses are now recognized by medical HUDs with a special icon. - - tweak: fully_heal no longer removes nonharmful viruses. This affects legion souls, - staffs of healing, and changeling's revive. - - rscadd: Canisters of any type of gas are now orderable in cargo. Dangerous experimental - gases will require Research Director approval. - Yackemflam: - - rscadd: The syndicate has learned on how to give their agents a true syndicate - ninja experience. - chickenboy10: - - rscadd: Added a Experimental Limb Grower to the medbay department, now medical - stuff can grow synthetic limbs using Synthflesh to help crew that suffer any - work related accidents. There may also be a limb that can be grown with a special - card... - feemjmeem: - - tweak: You can now disassemble meatspike frames with a welding tool. - phil235: - - experiment: 'adds a talk button next to the crafting button. Clicking it makes - a "wheel" appear around you with short predetermined messages that you click - to say them. This lets you say common responses without having to type in the - chat bar. Current messages available are: "Hi", "Bye", "Thanks", "Come", "Help", - "Stop", "Get out", "Yes", and "No". The talk button can be activated with the - hotkey "H" or "CTRL+H"' - - rscadd: Wearing colored glasses colors your vision. This option can be enabled/disabled - by alt-clicking any glasses with such feature. -2016-09-21: - Cyberboss: - - bugfix: The food processor's sprite's maintenance panel is no longer open while - closed and vice/versa - - tweak: Tesla arcs no longer lose power when passing through a coil that isn't - connected to a grid - MrStonedOne: - - bugfix: Fixes minimap generation crashes by making parts of it less precise -2016-09-23: - Cyberboss: - - rscadd: Wire layouts of NanoTransen devices for the round can now be found in - the Station Blueprints - Incoming5643 + WJohnston: - - imageadd: Lizard sprites have received an overhaul, sprites courtesy of WJohnston! - - rscdel: While there are some new bits, a few old bits have gone by the wayside, - if your lizard has been affected by this the specific feature will be randomized - until you pick a new setting. - - rscadd: Lizards can now choose to have digitigrade legs (those weird backwards - bending ones). Keep in mind that they can only be properly seen in rather short - pants. They also preclude the use of shoes. By default no lizard will have these - legs, you have to opt in. - - rscadd: All ash walker lizards however are forced to have these legs. - - experiment: There is absolutely no tactical benefits to using digitigrade legs, - you are only crippling yourself if you use them. - Papa Bones: - - tweak: You can now quick-draw the officer's sabre from its sheath by alt-clicking - it. - XDTM: - - bugfix: Holy Water no longer leaves you stuttering for years. -2016-09-24: - Cheridan: - - tweak: Nerfed Critical Hits - MrStonedOne: - - tweak: Orbits now use a subsystem. - - tweak: Orbits now bind to object's moving to allow for quicker updates, subsystem - fallback for when that doesn't work (for things inside of things or things that - move without announcing it) - XDTM: - - rscdel: Viruses start with 0 in every stat instead of 1. - - bugfix: Atomic Bomb, Pan-Galactic Gargle Blaster, Neurotoxin and Hippie's Delight - are now proper alcoholic drinks, and as such can disinfect, ignite, and be purged - by antihol. - optional name here: - - tweak: Changes cursed heart description to something slightly more clear. - - bugfix: Fixes a capitalization issue -2016-09-26: - Cuboos: - - rscadd: Added E-cigarettes as contraband to cigarettes vending machines. They - take reagents instead of dried plants and also hold more than cigarettes or - pipes. You can modify them to puff out clouds of reagents or emag them to fill - a whole room with reagent vapor. - - rscadd: Added a new shirt to the clothing vendor relating to the newly added vapes. - Joan: - - tweak: Blobs will generally require fewer blobs to win during the blob mode, which - should hopefully make the mode end faster at lower overmind amounts. - Razharas: - - rscadd: '"Kudzu now keeps the mutations it had before and thus can be properly - cultivated to be whatever you want"' - TheCarlSaganExpress: - - rscadd: You may now insert crayons, lipstick, penlights, or cigarettes in your - PDA. - - bugfix: Removing cartridges from the PDA will no longer cause them to automatically - fall to the floor. - oranges: - - rscadd: It looks like a pizza delivery from an un-named station got misplaced -2016-09-27: - Cobby: - - tweak: Nanotrasen has buffed the electronic safety devices found in Secure Briefcases - and Wallsafes, making them... well... more secure. In Particular, we added more - wires that do absolutely nothing but hinder the use of the multitool, along - with removing the ID slot only used by syndicates to emag the safe. - Incoming5643: - - rscadd: The secret satchels system has been updated to hide more smuggler's satchels - hidden randomly under the station - - experiment: In case you forgot about the secret satchel system, basically if you - take a smuggler's satchel (a traitor item also occasionally found under a random - tile in the station [USE T-RAYS]), stow away an item in it, and bury it under - the floor tiles that item can reappear in a random later round! - MrStonedOne: - - tweak: Custom Round end sounds selected by admins will be preloaded to all clients - before actually rebooting the world - Shadowlight213: - - bugfix: Fixes broken icon states when replacing warning floor tile - Supermichael777: - - tweak: Cat men have finally achieved equal discrimination. - TrustyGun+Pubby: - - imageadd: Lawyers now have unique speech bubbles. - XDTM: - - tweak: Using plasma on dark blue slimes will now spawn freon instead of arbitrarily - freezing mobs. - uraniummeltdown: - - tweak: Protolathe stock parts now build 5 times faster -2016-09-28: - Cuboos: - - bugfix: Removed the admin message spam from the smoke_spread proc. You may now - vape in peace without the threat of a Blue Space Artillery - LanCartwright: - - rscdel: Removed Stimulants and Coffee from survival pens. - - tweak: Nanites have been replaced with Mining Nanites which heal more when you - are lower health, and do not have the ridiculous healing Adminorazine had. -2016-10-01: - Incoming5643: - - rscadd: After years of having to live on a mostly blown up hunk of junk the wizard's - ship has finally been repaired - - rscdel: No one paid attention to that lore anyway -2016-10-07: - WJohnston: - - imageadd: Improved/resprited AI card, pAI, easel/canvases, shotgun shells, RCD - cartridge, speedloaders, and certain older buttons. - - imageadd: Improved/resprited a few bar signs, basketball/dodgeball/hoop, blood - bags, and body bags. - - imageadd: Improved/resprited Paper, stamps, folders, small fires, pens, energy - daggers, cabinets, newspaper and other bureaucracy related items. -2016-10-10: - ChemicalRascal: - - bugfix: Previously, improving the incinerator's efficiency made the RPM decay - more quickly, instead of less quickly. No more! - Cyberboss: - - rscadd: More reagent containers can be used for filling your dirty vapor cancer - sticks - - spellcheck: Fixed some vape spelling/grammar - MrStonedOne: - - tweak: Player Preferences window made slightly faster. - Nanotrasen Stress Relief Board: - - rscdel: Claymores created through Highlander no longer thirst for blood or announce - their wielder's location incessantly. - - bugfix: Claymores should now properly absorb fallen foes' corpses. - - bugfix: Losing a limb now properly destroys your claymore. - Supermichael777: - - bugfix: The wizards federation have instituted a strict 1 demon limit on demon - bottles. - XDTM: - - rscadd: Using blood on an Oil Slime will create Corn Oil. - - rscadd: Using blood on Pyrite Slimes will create a random crayon. - - rscadd: Using water on Orange Slimes will create a small smoke cloud. - - rscadd: Using water on Blue Slimes will spawn foam. - - rscadd: You can now retrieve materials inserted in a Drone Shell Dispenser with - a crowbar. - phil235: - - rscadd: A whole bunch of structures and machines can now be broken and destroyed - using conventional attack methods. - - rscadd: The effect of fire on objects is overhauled. When on fire, your external - clothes now take fire damage and can become ashes, unless fire proof. All objects - caught in a fire can now take fire damage, instead of just flammable ones, unless - fire proof. - - rscadd: Acid effect is overhauled. Splashing acid on something puts a green effect - on it and start slowly melting it. Throwing acid on mobs puts acid on their - clothes. Acid can destroy structures and items alike, as long as they're not - acid proof. The more acid put on an object, the faster it melts. Walking on - an acid puddle puts acid on your shoes or burns your bare feet. Picking up an - item with acid without adequate glove protection burns your hand. Acid can be - washed away with any sort of water source (extinguisher, shower, water glass,etc...). - - rscadd: When a mob receives melee attacks, its clothes also get damaged. Clothes - with enough damage get a visual effect. Damaged clothes can be repaired with - cloth (produced with botany's biogenerator). Clothes that receives too much - melee damage become shreds. - - tweak: Clicking a structure/machine with an item on help intent can never result - in an attack. - - tweak: Hostile animals that are environment destroyers no longer destroys tables&closets - in one hit. It now takes several hits depending on the animal. -2016-10-11: - Cyberboss: - - rscadd: The waste line now has a digital valve leading to space (off by default) - along with a port on it's far side - Incoming5643: - - rscadd: Wizards may finally use jaunt and blink on the escape shuttle. Maybe elsewhere - too? - - bugfix: The previously broken radios in the wizards den should work now. You still - have to turn them on though. - Kor: - - rscadd: Added frogs, with sprites by WJ and sounds by Cuboos. - Papa Bones: - - rscadd: Flora now spawns in lavaland tunnels, they can be harvested with a knife. - - rscadd: Flora have a range of effects, be careful what you eat! - - bugfix: You harvest flora on lavaland with your hands, not a knife. My bad. - Shadowlight213: - - rscadd: Cargo can order the antimatter engine -2016-10-12: - Cyberboss: - - bugfix: Fixed motion alarms instantly triggering and de/un/re/triggering - - bugfix: Airlock speed mode now works - Joan: - - rscadd: You can now deconstruct AI cores that contain no actual AI. - WJohnston: - - imageadd: Recolored and resprited candles and ID cards. Folders should have improved - color contrast. - XDTM: - - rscadd: Exhausted slime extracts will now dissolve instead of leaving useless - used slime extracts. - - tweak: Airlocks are now immune to any damage below 20, to prevent pickaxe prison - breaks. - - tweak: High-Security Airlocks, such as the vault or the AI core's airlocks, are - now immune to any damage below 30. -2016-10-13: - Razharas: - - tweak: Makes clicking something in heat of battle a bit easier by making drag&drops - that dont have any effect be counted as clicks - XDTM: - - rscadd: 'Added four new symptoms: Regeneration and Tissue Regrowth heal respectively - brute and burn damage slowly; Flesh Mending and Heat Resistance are the level - 8 version of those symptoms, and heal faster.' - - rscdel: The Toxic Compensation, Toxic Metabolism and Stimulants symptoms have - been removed. - - rscdel: Viruses no longer stack. Viruses can be overridden if the infecting virus - has higher transmittability than the previous virus' resistance. - - tweak: Viruses can now have 8 symptoms, up from 6. - - rscadd: You can now store monkey cubes in bio bags; using bio bags on the consoles - will load them with the monkey cubes inside the bags. - ma44: - - rscadd: Cargo can now order a 2500 supply point crate that requires a QM or above - to unlock. This crates contains a explorer suit, compact pickaxe, mesons, and - a bag to hold ore with. -2016-10-16: - Cuboos: - - rscadd: Added a new unique tool belt to the CE - - rscadd: Added new power tools, a hand drill that can be used as a screw driver - or wrench and jaws of life which can be used as either a crowbar or wire cutters - - rscadd: Power tools can also be made from the protolathe with engineering and - electromagnet 6 - - tweak: slightly revamped how construction/deconstruction handle sound - - soundadd: added new sounds for the power tools - - soundadd: added a new sound for activating and deactivating welding tools, just - because. - Cyberboss: - - bugfix: Plasma fires no longer cause cameras to break. - Joan: - - tweak: Blazing Oil blobs are now outright immune to fire. This does not affect - damage taken from other sources that happen to do burn damage. - - tweak: Normal blob spores now take two welder hits to die, from three. - - tweak: Cyborgs now die much less rapidly to blob attacks. - Lzimann: - - tweak: 'Changed two admin hotkeys: f7 is now stealth-mode and f8 to toggle-build-mode-self.' - Shadowlight213: - - bugfix: Modular consoles have been fixed. - Supermichael777: - - tweak: Changeling Sting is now one part screwdriver cocktail and 2 parts lemon-lime - soda. - - bugfix: Triple citrus now actually displays its sprite. - Yackemflam: - - tweak: extinguishers now spray faster - coiax: - - rscadd: RCDs have a Toggle Window Type verb allowing the rapid construction of - reinforced windows, rather than regular windows. - - rscadd: RCDs can now finish and deconstruct wall girders. - phil235: - - tweak: Clicking a floor with a bodybag or roller bed now deploys them directly - (and the bodybag starts open) - scoopscoop: - - bugfix: The cult shifter will now properly spawn as part of the veil walker set. -2016-10-18: - Basilman: - - rscadd: A third martial art, CQC, has been added and is now available to nuke - ops instead of sleeping carp - Kor: - - rscadd: Added sloths to cargobay on Box and Meta - MrPerson: - - rscadd: New toxin - Rotatium. It doesn't quite do what it does on other servers. - Instead it rocks your game view back and forth while slowly doing toxin damage. - The rocking gets more intense with time. - - rscadd: To make it, mix equal parts mindbreaker, neurotoxin, and teslium. - MrStonedOne: - - experiment: Byond 511 beta users may now choose their own FPS. This will apply - to animations and other client side only effects. Find it in your game preferences. - Shadowlight213: - - bugfix: fixed removing modular computer components - TheCarlSaganExpress: - - tweak: Provided you have access, you may now use your ID to unlock the display - case. - - tweak: The fire axe cabinet and display case may now be repaired with the welder. - XDTM: - - rscadd: You can now grind slime extracts in a reagent grinder. If the slime was - unused it will result in slime jelly, while if used it will only output the - reagents inside the extract. - Yackemflam: - - bugfix: fixed the standard vest being weaker than the slim variant - lordpidey: - - rscadd: There is a new potential obligation for devils to have. Musical duels. Ask - your nearest devil for a musical duel, there's a 14% chance he's obligated to - do it. - - rscdel: Removed the old offering a drink obligation for devils, it overlapped - too much with the food obligation. - - tweak: Trying to clone people who've sold their soul now results in FUN. - - tweak: Devils can no longer spam ghosts with revival contracts. - phil235: - - rscadd: Visual effects appear on the target of an attack, similar to the item - attack effect. - - rscdel: You now only see a message in chat when witnessing someone else getting - attacked or hit by a bullet if you are close enough to the action. -2016-10-19: - Cyberboss: - - bugfix: Physically speaking is no longer delayed by your radio's lag - - bugfix: You can now attack doors with fireaxes and crowbars when using the harm - intent - - tweak: The BSA is no longer ready to fire when constructed - - bugfix: The BSA can no longer be reloaded faster by rebuilding the console - MrStonedOne: - - tweak: tweaked the settings of the space drift subsystem to be less effected by - anti-lag slowdowns - Pubby: - - rscadd: 'A new map: PubbyStation. Set it to your favorite in map preferences!' - XDTM: - - rscadd: PanD.E.M.I.C. now displays the statistics of the viruses inside. - phil235: - - tweak: Made the singularity gen and tesla gen immune to fire. - - tweak: All unique traitor steal objective item are now immune to all damage except - severity=1 explosion. - - tweak: Mobs on fire no longer get damage to their worn backpacks, belts, id, pocket - stuff, and suit storage. - - bugfix: Mob receiving melee attacks now only have its outer layer of clothes damaged, - e.g. no damage to jumpsuit when wearing a suit. - - bugfix: now all hardsuit have 50% more health, as intended. - wrist: - - rscadd: Toxins is different now. -2016-10-21: - Adam E.: - - tweak: Added cargo and engi access to auxillary mine base launching console. - Cyberboss: - - tweak: Your brain is now gibbed upon chestburst - - bugfix: The safe is indestructible again - Joan: - - rscadd: Wraith Spectacles will now slowly repair the eye damage they did to you - as long as you aren't wearing them. - - experiment: You can now see how much eye damage the spectacles have done to you - overall, as well as how close you are to being nearsighted/blinded. - - tweak: Mending Motors heal for more. - - wip: Mania Motors are overall more powerful; they have greater effect, but require - more power to run and less power to convert adjacent targets. - - experiment: Interdiction Lenses no longer require power to disrupt electronics - and will no longer disrupt the radios of servants. - - bugfix: You need to be holding teleport talismans and wizard teleport scrolls - in your hands when you finish the input, and cannot simply open the input and - finish it whenever you get stunned. - - tweak: The range for seeing visible messages in combat is a tile higher. - Screemonster: - - tweak: The anti-tamper mechanism on abandoned crates now resists tampering. - - tweak: Secure, non-abandoned crates can be given a %chance of exploding when tampered - with. Defaults to 0. - Shadowlight213: - - bugfix: The Swap minds wizard event will now function - Swindly: - - rscadd: The action button for a dental implant now includes the name of the pill - - bugfix: The pill activation button now properly displays the pill's icon - uraniummeltdown: - - rscadd: Adds more replacements to the Swedish gene -2016-10-22: - Shadowlight213: - - experiment: Breathing has been moved from species to the lung organ - - rscadd: Lung transplants are now possible! -2016-10-23: - Cyberboss: - - bugfix: Fixed a bug that caused door buttons to open doors one after another rather - than simultaneously like they are suppose to - - bugfix: NOHUNGER species no longer hunger - - bugfix: Appropriate gloves now protect you from getting burned by cheap cigarette - lighters - - rscdel: Labcoats no longer have pockets - Yackemflam: - - tweak: Riot helmets are now more useful in melee situations and the standard helmet - is now slightly weaker - uraniummeltdown: - - rscadd: Atmos grenades are now in the game and uplink -2016-10-24: - Batman: - - tweak: The sniper rifle descriptions are less edgy. - Cobby: - - rscadd: Finally, a way to relate to Bees! - Cyberboss: - - bugfix: Morphs no longer gain the transparency of chameleons - - bugfix: Turrets can no longer shoot when unwrenched - - bugfix: Spray bottle can now be used in the chem dispenser - Joan: - - rscadd: Clockwork marauders now have a HUD, showing block chance, counter chance, - health, fatigue, and host health(if applicable), as well as including a button - to try to emerge/recall. - - experiment: Clockwork marauders can now block bullets and thrown items, even if - Ratvar has not risen. - - rscadd: The Judicial Visor no longer requires an open hand to use. Instead, clicking - the button will give you a target selector to place the Judicial Marker. - - experiment: Tinkerer's Daemons are now a structure instead of a Cache addon. - - wip: Tinkerer's Daemons now consume a small amount of power when producing a component, - but produce components every 12 seconds with no additional delay. - - tweak: Adjusted the costs of the Tinkerer's Daemon and Interdiction Lens. - - imageadd: Floaty component images appear when Tinkerer's Caches and Daemons produce - components. - MrStonedOne: - - bugfix: Spectral sword now tracks orbiting ghosts correctly. - Shadowlight213: - - imageadd: Damaged airlocks now have a sparking effect - Swindly: - - rscadd: Added a button to the ChemMaster that dispenses the entire buffer to bottles. - ma44: - - rscadd: Reminds the user that reading or writing a book is stupid. -2016-10-27: - Chowder McArthor: - - rscadd: Added a neck slot. - - tweak: Modified some of the attachment items (ties, scarves, etc) to be neck slot - items instead. - Cyberboss: - - rscadd: NEW HOTKEYS - - rscadd: The number pad can be used to select the body part you want to target - (Cycle through head -> eyes -> mouth with 8) in hotkey mode. Be sure Numlock - is on! - - rscadd: Holding shift can be used as a modifier to your current run state in both - hotkey and normal mode. - - bugfix: Emag can no longer be spammed on shuttle console - Gun Hog: - - bugfix: Fixed AIs uploaded to mechs having their camera view stuck to their card. - Joan: - - rscadd: Clockwork Floors now have a glow when healing servants of toxin damage. - Only other servants can see it, so don't get any funny ideas. - - bugfix: The Interdiction Lens now properly has a high Belligerent Eye cost instead - of a high Replicant Alloy cost. - Pubby: - - tweak: PubbyStation's bar is now themed like a spooky castle! - Swindly: - - bugfix: Chem implants can now be properly filled and implanted - WJohnston: - - rscadd: Adds an unlocked miner equipment locker on Boxstation and Metastation's - Aux Base Construction area, as well as a telescreen to the camera inside. All - mining outpost computers can also see through that camera. - lordpidey: - - rscadd: The wizard federation has teamed up with various LARP groups to invent - a new type of spell. -2016-10-28: - Erwgd: - - rscadd: You can now use cloth to make black or fingerless gloves. - - tweak: Biogenerators require less biomass to produce botanist's leather gloves. - Tacolizard: - - rscadd: Added a new contraband crate to cargo, the ATV crate. -2016-10-29: - Chowder McArthor: - - bugfix: Added in icons for the neck slot for the other huds. - Cobby: - - rscadd: Adds several Halloween-Themed Emojis. See if you can get them all! [no - code diving cheaters!] - Erwgd: - - rscadd: The NanoMed Plus now stocks premium items. - Joan: - - experiment: Guvax is now targeted; invoking it charges your slab to bind and start - converting the next target attacked in melee within 10 seconds. This makes your - slab visible in-hand. - - tweak: Above 5 Servants, the invocation to charge your slab is not whispered, - and the conversion time is increased for each Servant above 5. - - wip: Using Guvax on an already bound target will stun them. The bound target can - resist out, which will prevent conversion. - - experiment: Sentinel's Compromise is now targeted, like Guvax, but can select - any target in vision range. - - rscadd: Sentinel's Compromise now also removes holy water from the target Servant. - - wip: Clicking your slab will cancel these scriptures. - - imageadd: Both of these will change your cursor, to make it obvious they're active - and you can't do anything else. - - rscadd: Arks of the Clockwork Justicar that do not summon Ratvar will still quick-call - the shuttle. - - bugfix: Clockwork structures that return power can now return power to the APC - of the area they're in if there happens to be one. - - bugfix: Clockwork structures that use power from an APC will cause that APC to - start charging and update the tgUI of anyone looking at the APC. - - bugfix: Converting metal, rods, or plasteel to brass with a clockwork proselytizer - while holding it will no longer leave a remainder inside of you. - - tweak: Plasteel to brass is now a 2:1 ratio, from a 2.5:1 ratio. Accordingly, - you now only need 2 sheets of plasteel to convert it to brass instead of 10 - sheets. - - tweak: Wall gears are now converted to brass sheets instead of directly to alloy. - - rscdel: You can no longer do other proselytizer actions while refueling from a - cache. - - bugfix: Fixed a bug where certain stacks wouldn't merge with other stacks, even - when they should have been. - - bugfix: Clockwork structures constructed from brass sheets now all have appropriate - construction value to replicant alloy ratios. - - bugfix: Tinkerer's Caches no longer need to see a clockwork wall to link to it - and generate components. - MrStonedOne: - - experiment: Shoes do not go on heads. - NikNak: - - rscadd: Action figures are finally winnable at arcade machines. Comes in boxes - of 4. - Pubby: - - rscadd: The holodeck has been upgraded with new programs. Try them out! - Shadowlight213: - - rscdel: The HOS and other heads of staff no longer have a chance to be revheads - TehZombehz: - - tweak: Custom food items can now fit inside of smaller containers, such as paper - sacks. - - rscadd: Small cartons can be crafted using 1 piece of cardboard. Don't be late - for school. - - rscadd: Apples can now be juiced for apple juice. Chocolate milk can now be crafted - using milk and cocoa. - - tweak: Chocolate bar recipe has been modified to compensate for chocolate milk. - The soy milk version of the chocolate bar recipe remains unchanged. - - bugfix: Grapes can now be properly juiced for grape juice using a grinder. - XDTM: - - tweak: Wizards no longer need sandals to cast robed spells. - Xhuis: - - rscadd: Syndicate and malfunctioning AIs may now be transferred onto an intelliCard - if their parent core has been destroyed. This may only be done with the AI's - consent, and the AI may not be re-transferred onto another APC or the APC it - came from. - - rscadd: New additions have been made for this Halloween and all future ones. Happy - Halloween! - ma44: - - rscadd: You can now solidify liquid gold into sheets of gold with frostoil and - a very little amount of iron -2016-10-30: - Joan: - - rscadd: The Recollection option in the Clockwork Slab has been significantly improved, - with a better information to fluff ratio, and the ability to toggle which tiers - of scripture that are visible in Recollection. - Lzimann: - - bugfix: You can once again order books by its ID in the library. - Mysak0CZ: - - bugfix: You no longer need to deconstruct emagged (or AI-hacked) APC to fix them, - replacing board is sufficient - - bugfix: You can no longer unlock AI-hacked APCs - - bugfix: Removing APC's and SMES's terminal no longer ignore current tool's speed - - rscadd: You can repair APC's cover (only if APC is not compleatly broken) by using - APC frame on it - - rscadd: closing APC's cover will lock it - bgobandit: - - rscadd: The creepy clown epidemic has arrived at Space Station 13. - - rscadd: Honk. -2016-10-31: - Joan: - - experiment: Brass windows will now survive two fireaxe hits, and are slightly - more resistant to bullets. - Lzimann: - - rscdel: Changelings no longer have the Swap Forms ability. - Xhuis: - - rscadd: Disposal units, outlets, etc. are now fireproof. - - rscadd: Changelings can now use biodegrade to escape silk cocoons. -2016-11-02: - Iamgoofball: - - rscadd: Added a new lobby menu sound. - Joan: - - rscdel: Brass windows and windoors no longer drop full sheets of brass when destroyed. - - rscadd: Instead, they'll drop gear bits, which can be proselytized for a small - amount of liquified alloy; 80% of the materials used to construct the window. - - tweak: Mending Motors have an increased range and heal for more. - - experiment: Mending Motors will no longer waste massive amounts of power on slightly - damaged objects; instead, they will heal a small amount, use a small amount - of power, and stop if the object is fully healed. - - wip: Mending Motors can now heal all clockwork objects, including pinion airlocks, - brass windows, and anything else you can think of. - - rscadd: Ocular Wardens will no longer attack targets that are handcuffed, buckled - to something AND lying, or in the process of being converted by Guvax. - - tweak: Also, they do very slightly more damage. - - rscdel: Hulks no longer one-shot most clockwork structures and will no longer - four-shot the Gateway to the Celestial Derelict. - - bugfix: Hulks are no longer a blob counter. - XDTM: - - tweak: Ninjas are now slightly visible when stealthing. - phil235: - - rscadd: Spray cleaner and soap can now wash off paint color. -2016-11-03: - Cobby: - - rscadd: Adds a geisha outfit to the clothesmate on hacking. QT space ninja BF - not included - Joan: - - rscadd: 'Proselytizing a window will automatically proselytize any grilles under - it. This is free, so don''t worry about wasting alloy. rcsadd: Trying to proselytize - something that can''t be proselytized will try to proselytize the turf under - it, instead.' - - experiment: Clockcult's "Convert All Silicons" objective now also requires that - Application scripture is unlocked. - - wip: The "Convert All Silicons" objective will also only be given if there is - an AI, instead of only if there is a silicon. -2016-11-05: - Joan: - - rscadd: Proselytizer conversion now accounts for existing materials, and deconstructing - a wall, a girder, or a window for its materials is no longer more efficient - than just converting it. - - imageadd: Heal glows now appear when mending motors repair clockwork mobs and - objects. - Lzimann: - - rscdel: You can no longer walk holding shift. -2016-11-06: - Joan: - - bugfix: Dragging people over a Vitality Matrix will actually cause the Matrix - to start working on them instead of failing to start draining because it's "active" - from when the dragging person crossed it. - phil235: - - rscadd: You can now climb on transit tube, like tables. - - rscadd: You can now use tabs when writing on paper by writing "[tab]" -2016-11-07: - Basilman: - - rscadd: CQC users can now block attacks by having their throw mode on. - - tweak: The CQC kick and Disorient-disarm combos are now much easier to use, CQC - harm intent attacks are stronger aswell. - - bugfix: Fixed being able to CQC restrain someone, let him go, then 10 minutes - later disarm someone else to instantly chokehold them. - - tweak: CQC costs more TC (13) - Cyberboss: - - bugfix: Tesla zaps that don't come from an energy ball can no longer destroy nukes - and gravity generators - El Tacolizard: - - rscadd: A space monastery and chaplain job have been added to PubbyStation. - - rscadd: Improved pubby's maint detailing - Joan: - - tweak: Ratvarian Spears now do 18 damage and ignore a small amount of armor on - normal attacks, but have a slightly lower chance to knowdown/knockout. Impaling - also ignores a larger amount of armor. - - rscadd: Throwing a Ratvarian Spear at a Servant will not damage them and may cause - them to catch the spear. - - rscadd: Standard drones will be converted to Cogscarabs by Ratvar and the Celestial - Gateway proselytization. - - rscdel: Cogscarabs no longer receive station alerts. - - bugfix: Anima Fragments, Clockwork Marauders, and cult constructs are now properly - immune to heat and electricity. - - tweak: Clockwork armor is much stronger against bullets and bombs but much weaker - against lasers. - - wip: Specific numbers; Bullet armor from 50% to 70%, bomb armor from 35% to 60%, - laser armor from -15% to -25%. This means lasers are a 4-hit crit. - - rscadd: You can now Quickbind scripture other than Guvax and Vanguard to the Clockwork - Slab's action buttons, via Recollection. - - rscadd: You can also recite scripture directly from Recollection, if doing so - suits your taste. Of course it suits your taste, it's way easier than menus. - - tweak: You can also toggle compact scripture in Recollection, so that you don't - see description, invocation time, component cost, or tips. - - tweak: Dropping items into Spatial Gateways no longer consumes a use from the - gateway. - - rscadd: If your Spatial Gateway target is unconscious, you can pick a new target - instead. - Kor: - - rscadd: Multiverse teams now have HUD icons. - - rscadd: Multiverse war is back in the spellbook. - phil235: - - rscadd: Altclicking a PDA without id now removes its pen. - - rscadd: The PDA's sprite now shows whether it has an id, a pAI, a pen, or if its - light is on. -2016-11-09: - Changes: - - tweak: Old mining asteroid is more interesting (mining world can be picked in - ministation.dm) - - tweak: Space around ministation is now half(?) the size of normal space - - rscadd: Loot spawners to maintenance - - bugfix: Rad storms frying maintenance - - bugfix: Bad conveyor belts in mining/cargo area of station - - bugfix: Bombs completely destroying toxins test site - - rscadd: Cyborg job available again - - tweak: Mining cyborgs can use steel rods when asteroid mining is enabled - Joan: - - tweak: Repairing clockwork structures with a Clockwork Proselytizer now only costs - 1 alloy per point of damage. - - experiment: Vitality Matrices will no longer heal dead Servants that they cannot - outright revive. - - rscadd: The Celestial Gateway will now prevent the emergency shuttle from leaving. - - tweak: However, Centcom will alert, in general terms, the location of the Celestial - Gateway two minutes after it is summoned. - - rscadd: Reciting scripture while not on the station, centcom, or mining/lavaland - will double recital time and component costs. - Kor: - - rscadd: You can now examine an r-wall to find out which tool is needed to continue - deconstructing it. - - rscadd: The game will now recognize a successful detonation of the nuclear bomb - in the syndicate base. - - rscadd: Cloaks are now cosmetic items that can be worn in the neck slot, allowing - you to wear them over armour. - Shadowlight213: - - rscdel: Removed the restriction on attacking people with a fire extinguisher on - help intent if the safety is on. - uraniummeltdown: - - rscadd: Added Cortical Borers, a brainslug parasite. - - rscadd: Added Cortical Borer Event -2016-11-10: - Kor: - - rscadd: The wizard has a new spell, Rod Form, which allows him to transform into - an immovable rod. - uraniummeltdown: - - bugfix: fixed brains not having ckeys when removed - - bugfix: hopefully fixed multiple ghosts entering a borer ghosting all but one - - tweak: tweaked the formula for hosts needed for borer event to 1+humans/6 - - tweak: borer endround report is a lot nicer -2016-11-11: - Cyberboss: - - bugfix: Promotion of revheads won't occur if they are restrained/incapacitated - - bugfix: Facehuggers can no longer latch onto mobs without a head... How the fuck - did you get a living mob without a head? - - bugfix: Hulks and monkeys can no longer bypass armor - - rscadd: Metastation now has a waste to space line - - bugfix: Objects will no longer get stuck behind the recycler on Boxstation - Joan: - - rscadd: You can now repair reinforced walls by using the tool you'd use to get - to the state they're currently in. Examining will give you a hint as to which - tool to use. - - spellcheck: Renamed Guvax to Geis. This also applies to the component, which has - been similarly renamed. - Kor: - - rscadd: The Captain can now purchase alternate escape shuttles from the communications - console. This drains from the station supply of cargo points, and you can only - do so once per round, so spend wisely. - - rscadd: Some shuttles are less desirable than the default, and will instead grant - the station a credit bonus when purchased. - - rscadd: Explosions are no longer capped on the mining z level. - - rscadd: The forcewall spell now creates a 3x1 wall which the caster can pass through. - - rscadd: Bedsheets are now worn in the neck slot, rather than the back slot. -2016-11-13: - Cyberboss: - - rscadd: Using a screwdriver on a conveyor belt will reverse it's direction - - bugfix: Medibots, by default, can no longer OD you on tricord - - tweak: They will now use charcoal instead of anti-toxin to heal tox damage - - bugfix: Silicons no longer get warm skin when irradiated - Gun Hog: - - tweak: Wizard (and Devil) fireballs now automatically toggle off once fired. - Joan: - - tweak: Judicial Visors now protect from flashes. - - rscadd: Reciting Scripture is now done through an actual interface, and can thus - be done much faster. - - rscdel: The recital and quickbind functions that Recollection had have been moved - to this interface instead. - - rscadd: Servants of Ratvar can now unsecure and move most Clockwork Structures - with a wrench, though doing so will damage the structure by 25% of its maximum - integrity. - - rscadd: Clockwork Structures become less effective as their integrity lowers, - reducing their effect by up to 50% at 25% integrity. - - tweak: You can now deconstruct unsecured wall gears with a screwdriver. - - tweak: Wall gears now have much more health and can be repaired with a proselytizer. - Mysak0CZ: - - rscadd: You can now use wrech to anchor (as long as it is not in space) / unanchor - lockers - - bugfix: Cyborgs can now simply use "hand" to open / close lockers (instead of - using toggle open verb) - - bugfix: You can now properly put unlit welder inside lockers - - bugfix: Lockers using different decostruction tools (like cardboard boxes wirecutters) - can now be deconstructed too - Xhuis: - - rscadd: All computers now have sounds. Try them out! - coiax: - - rscadd: Swarmers can now use :b to talk on Swarm Communication. - - rscadd: Lich phylacteries are now in the "points of interest" for ghosts. - uraniummeltdown: - - bugfix: Cancel Assume Control works as borer now - - rscadd: Added the cueball helmet, scratch suit, joy mask to Autodrobe -2016-11-14: - Joan: - - rscdel: You can no longer pick up cogscarabs. - - rscadd: Servants of Ratvar can now reactivate Cogscarabs with a screwdriver. - - tweak: Cogscarab proselytizers proselytize things twice as fast. - - tweak: Cogscarabs now have 1.6 seconds of delay when firing guns, as much as an - unmodded kinetic accelerator. - - bugfix: Fixed Vitality Matrices and Raise Dead runes not reviving if the target - happened to be in their body already. - Kor: - - rscadd: Extended mode now has a special command report that tells you the round - type. This is to let people know they have time to start on large scale projects - rather than milling about waiting for antagonists to attack. - - rscadd: All station goals are now unlocked during extended. - Mysak0CZ: - - bugfix: MetaStation's xenobiology disposals now work properly - uraniummeltdown: - - tweak: Changed the Command and Security radio colors - - rscadd: Added raw telecrystals to the uplink, can be used with uplinks and uplink - implants. - - rscadd: Added 10mm ammo variants to uplink -2016-11-15: - Cyberboss: - - bugfix: Brains and heads with brains trigger the emergency stop on the recycler - Kor: - - rscadd: The vault is now home to a new machine which can accept cash deposits, - adding to the cargo point total. - - rscadd: You can also use this machine to steal credits from the cargo point total. - Doing so takes time, and will set off an alarm. - - rscadd: You can now buy an asteroid with engines strapped to it to replace the - emergency escape shuttle. - - rscadd: You can now buy a luxury shuttle to replace the emergency escape shuttle. - Each crewmember must bring 500 credits worth of cash or coins to board though. - Lexorion & Lzimann: - - tweak: Wizards have developed a new spell. It's called Arcane Barrage and it has - been reported that it has a similar function to Lesser Summon Guns! - Supermichael777: - - rscdel: The atmos grenades have been removed. if you want to burn down the shuttle - use canisters or something but at least work at it. - coiax: - - rscadd: Mice (the rodent, not the peripheral) now start in random locations. -2016-11-16: - Mysak0CZ: - - rscadd: Door can now have higher security, making them stronger and wires harder - to access - - rscadd: More info can be found on github or wiki (if this passes) - - imageadd: Protected wires now have sprites - Pubby: - - bugfix: cyclelinked airlock pairs now close behind you even when running through - at full speed. - Swindly: - - rscadd: Dice can now be rigged by microwaving them. -2016-11-18: - Cyberboss: - - bugfix: The amount of metal used to construct High Security airlocks with the - RCD is now consistent with the actual cost - Incoming5643: - - bugfix: The charge spell should once again work correctly with guns/wands - Joan: - - rscadd: Clockcult AIs have power as long as they are on a Clockwork Floor or next - to a Sigil of Transmission. This is in addition to having power under normal - conditions. - - rscadd: Clockcult silicons can now activate Clockwork Structures from a distance. - - rscdel: Interdiction Lenses will not disable cameras if there are no living unconverted - AIs. - - rscadd: Clockcult Cyborgs can charge from Sigils of Transmission by crossing them; - after a 5 second delay, the cyborg regains either their missing charge or the - amount of power in the sigil(whichever is lower) over 10 seconds. - - rscadd: You can now cancel out of selecting a robot module! - - imagedel: Robot modules now only have a generic transform animation when selected; - the borg is locked in place for 5 seconds in a small cloud of smoke while the - base borg sprite fades out and the new module fades in. - - tweak: Resetting a borg will do that animation. - - rscadd: Adds Networked Fibers, which gains points instead of automatic expansion - and causes manual expansion near its core to move its core. - - rscadd: Added a new UI style, Clockwork. - NikNak: - - rscadd: Added tator tots, made my putting a potato in the food processor - - tweak: French fries are now made by cutting up a potato into wedges and putting - the wedges (plate and all) into the food processor - coiax: - - bugfix: The observer visible countdown timer for the malfunctioning AI doomsday - device is now formatted and rounded appropriately. - erwgd: - - rscadd: You can now make emergency welding tools in the autolathe. -2016-11-19: - Crushtoe: - - imageadd: Added a shiny new icon for the reaper's scythe in-hand and normal sprite. - It's 25% less gardener. - RandomMarine: - - rscadd: An instruction paper has been added to the morgue on most maps, because - somehow it's needed. - Shadowlight213: - - rscadd: Added the AI integrity restorer as a modular computer program - - rscadd: Added an AI intelliCard slot. Insert an Intellicard into it to be able - to use the restoration program. - - bugfix: Fixes Alarm program detecting ruins - - bugfix: Fixes being unable to toggle the card reader module power - - tweak: The downloader will now tell you if a program is incompatible with your - hardware -2016-11-20: - Basilman: - - rscadd: Added a new beard style, Broken Man. - Cobby: - - tweak: Airlock security is only given to vault doors, centcomm, and Secure Tech - [Secure Tech just requires a welder] - Incoming5643: - - rscadd: The warp whistle has been added to the wizard's repertoire of spells and - artifacts. - - rscadd: The drop table for summon magic has been expanded. - Joan: - - rscdel: Servant cyborgs no longer have emagged modules. - - rscadd: Servant cyborgs now have a limited selection of scripture and tools, which - varies by cyborg type. - Kor: - - bugfix: Station goals will once again function in extended. - Swindly: - - rscadd: Added a nitrous oxide reagent. It can be created by heating 3 parts ammonia, - 1 part nitrogen, and 2 parts oxygen to 525K. The process produces water as a - by-product and will cause an explosion if too much heat is applied. -2016-11-21: - Cobby: - - tweak: mining/labor shuttles are now radiation proof. -2016-11-23: - Crushtoe: - - rscadd: Added more tips. - - bugfix: Fixes some sprites and spelling issues, namely bedsheet capes. - Cyberboss: - - bugfix: Changing an airlock's security level no longer heals it - Gun Hog: - - bugfix: Medibots now heal toxin damage again. - Joan: - - rscadd: Clockcult AIs can now listen to conversations through cameras. - - rscadd: Due to complaints that the new slab interface was too difficult to navigate, - it now starts off in compressed format. The button to toggle this is now also - larger. - Kor: - - rscadd: Rounds ending on one server will send a news report to the other server. - Shadowlight213: - - tweak: Borers now have a 10 second delay before waking up after sugar leaves the - host system - - tweak: There is a chance for borers to lose control, based on brain damage levels - Swindly: - - rscadd: Most small items can now be placed in the microwave. Remember not to microwave - metallic objects. - XDTM: - - rscadd: 'Golems now have special properties based on the mineral they''re made - of:' - - rscadd: Silver golems have a higher chance of stun when punching - - rscadd: Gold golems are faster but less armoured - - rscadd: Diamond golems are more armoured - - rscadd: Uranium golems are radioactive - - rscadd: Plasma golems explode on death - - rscadd: Iron and adamantine golems are unchanged. - jakeramsay007: - - tweak: Borers can no longer take control of people who have a mindshield implant - or are a member of either cult. This however does not stop them from infesting - and controlling them through other means, such as chemicals. -2016-11-24: - Kor: - - rscadd: Shaft miners now have access to the science channel. - Lzimann: - - rscdel: Multiverse sword is no longer buyable by wizards - erwgd: - - rscadd: Plasmamen get their own random names. -2016-11-25: - Joan: - - rscadd: Clockcult AIs with borgs 'slaved' to them will convert them when hacking - via the robotics console. - - experiment: Replaced the "No Cache" alert with an alert that will show what you - need for the next tier of scripture. - Kor: - - rscadd: The captain may now purchase an unfinished shuttle chassis, which will - dock immediately when bought, but will not launch until the end of the regular - shuttle call procedure. The shuttle is empty and devoid of atmosphere however, - so you'll need to do some work on it if you want a safe trip home. - Shadowlight213: - - bugfix: The activation button for the AI integrity restorer modular program actually - works now! - - rscdel: The cortical borer event is now admin only -2016-11-27: - Cyberboss: - - bugfix: False armblades are now removed after one minute. Start feeling the P - A R A N O I A when you see em - Gun Hog: - - rscadd: AIs piloting a mech may now be recovered with an Intellicard from the - wreckage if the mech is destroyed. They will be require repair once recovered. - - tweak: Instructions for piloting mechs as an AI are now more obvious. - - tweak: Traitor and Ratvar AIs may now be carded from mechs, at their discretion. - Joan: - - tweak: Clockwork walls are now about as hard for hulks to break as rwalls. - - rscadd: You can now quickbind up to 5 scriptures from the recital menu, and the - recital menu has less empty space. - - tweak: Clockwork slabs now only start with only Geis pre-bound. - Kor: - - rscadd: Shaft miners can now redeem their starting voucher for a conscription - kit, which contains everything they need to rope their friend into joining them - on lavaland. - - rscadd: You can now see which emergency shuttle is coming in the status panel. - Lzimann: - - rscadd: The robots stole Santa's Elfs jobs. - MMMiracles: - - tweak: Jump boots now have a pocket - - imageadd: Jump boots from mining now have on-character icons. - Mervill: - - imageadd: Disposal units now use a tgui instead of plain html - - rscadd: 'As the AI: Click an AI status display to bring up the prompt for changing - the image' - Swindly: - - rscadd: Wet leather can be dried by putting it on a drying rack. - Xhuis: - - bugfix: Plastic explosives now actually explode when you commit suicide with them. - - bugfix: Resisting out of straight jackets now works properly. - - rscdel: Highlander will no longer announce the last man standing. - - rscadd: Cyborgs can now open morgue trays. This does not include crematoriums! - uraniummeltdown: - - rscdel: Borers no longer randomly lose control based on host brain damage - - tweak: Borer Dominate Victim stun time reduced from 4 -> 2. - - tweak: Borers no longer force unhidden when infesting someone. - - tweak: Borer event is rarer (weight 20->15). - - tweak: Borer reproduction chemicals required increased from 100 to 200. -2016-11-29: - Joan: - - tweak: Interdiction Lenses are more likely to turn off if damaged. - - tweak: Reduced Interdiction Lens and Tinkerer's Daemon CV from 25 to 20. - RemieRichards: - - rscadd: Devils may now spawn with an obligation to accept dance off challanges, - if they have this obligation they also gain a spell to summon/unsummon a 3x3 - dance floor at will. - Swindly: - - rscadd: Microwaves now heat open reagent containers to 1000K. - XDTM: - - rscadd: 'Added new types of golem: glass, sand, wood, plasteel, titanium, plastitanium, - alien alloy, bananium, bluespace, each with their own traits. Experiment!' - - tweak: Golems will be told what their traits are when spawning. - - rscadd: Putting a golem in a gibber will give ores of its mineral type, instead - of meat. - - rscadd: Using Iron on an adamantine slime extract will spawn an incomplete golem - shell, that will be slaved to whoever completes it, much like a normal adamantine - golem. - jughu: - - tweak: Proselytizing airlocks into pinion airlocks takes longer. -2016-11-30: - ANGRY CODER: - - tweak: NT news reports the clandestine criminal organization known as the syndicate - may have upgraded one of their illegally stolen cyborg modules with additional - healing technology. - Cobby [Idea stolen from Shaps]: - - rscadd: For objects that you could previously rename with a pen, you can now edit - their description as well. - Cyberboss: - - rscdel: Due to budget cuts. Firelocks no longer have safety features - - bugfix: Roundstart airlock electronics now properly generate the correct accesses - - bugfix: tgui windows will now close on round end - Gun Hog: - - bugfix: Syndicate Medical Cyborg hyposprays now properly work through Operative - hardsuits and other thick clothing. - Joan: - - tweak: Cogscarabs will once again convert metal, rods, and plasteel directly to - alloy. - - tweak: Tinkerer's caches now increase in cost every 4 caches, from 5. - - rscadd: The Ark of the Clockwork Justicar now converts all silicons once it finishes - proselytizing the station. - Mervill: - - rscadd: AI hologram can move seamlessly between holopads - Thunder12345: - - rscadd: Added anti-armour launcher. A single-use rocket launcher capable of penetrating - all but the heaviest of armour. Deals massively increased damage to cyborgs - and mechs. -2016-12-02: - Cobby: - - bugfix: Removes the exploit that allowed you to bypass grabcooldowns with Ctrl+Click - PeopleAreStrange: - - tweak: Changed F7 to buildmode, F8 to Invismin (again). Removed stealthmin toggle - RemieRichards: - - rscadd: Added a new lavaland "boss" - - tweak: Hostile mobs will now find a new target if they failed to attack their - current one for 30 seconds, this reduces cheese by simply making the mob find - something else to do/someone to kill - - bugfix: Hostile mobs with search_objects will now regain that value after a certain - amount of time (per-mob, base 3 seconds), this is because being attacked causes - mobs with this var to turn it off, so they can run away, however it was literally - never turned on which caused swarmers to get depression and never do anything. -2016-12-03: - Joan: - - rscadd: Trying to move while bound by Geis will cause you to start resisting, - but the time required to resist is up by half a second. - - experiment: Resisting out of Geis now does damage to the binding, and as such - being stunned while bound will no longer totally reset your resist progress. - - rscadd: Using Geis on someone already bound by Geis will interrupt them resisting - out of it and will fully repair the binding. - - tweak: Geis's pre-binding channel now takes longer for each servant above 5. Geis's - conversion channel also takes slightly longer for each servant above 5. - - rscadd: Converted engineering and miner cyborgs can now create Sigils of Transgression. - RandomMarine: - - tweak: Airlocks will keep their original name when their electronics are removed - and replaced. You may still use a pen to rename the assembly if desired. -2016-12-04: - Durkel: - - tweak: Recent enemy reports indicate that changelings have grown bored with attacking - near desolate stations and have shifted focus to more fertile hunting grounds. -2016-12-06: - BASILMAN YOUR MAIN MAN: - - bugfix: fixes people "walking over the glass shard!" when they're on the ground, - changes message when incapacitated - Chnkr: - - rscadd: Nuclear Operatives can now customize the message broadcast to the station - when declaring war. - Cyberboss: - - bugfix: The atmos waste lines for the Metastation Kitchen and Botany departments - is now actually connected - Gun Hog: - - rscadd: Nanotrasen Janitorial Sciences Division is proud to announce a new concept - for the Advanced Mop prototype; It now includes a built-in condenser for self - re-hydration! See your local Scientist today! In the event that janitorial staff - wish to use more expensive solutions, the condenser may be shut off with a handy - handle switch! - Incoming5643: - - bugfix: The timer for shuttle calls/recalls now scales with the security level - of the station (Code Red/Green, etc.). You no longer have to feel dumb if you - forget to call Code Red before you call the shuttle! - - rscadd: Shuttles called in Code Green (the lowest level) now take 20 minutes to - arrive, but may be recalled for up to 10 minutes. They also don't require a - reason to be called. - - experiment: That doesn't mean you should call a code green shuttle every round - the moment it finishes refueling. - - rscadd: Server owners may now customize the population levels required to play - various modes. Keep in mind that this does not preserve the balance of the mode - if you change it drastically. See game_modes.txt for details. - Joan: - - rscadd: You can now proselytize floor tiles at a rate of 20 tiles to 1 brass sheet - or 2 tiles to 1 liquified alloy for cogscarabs. - - rscadd: Proselytizers will automatically pry up floor tiles if those tiles can - be proselytized. - - tweak: Brass floor tiles no longer exist. Instead, you can just apply brass sheets - to a tile. Crowbarring up a clockwork floor will yield that brass sheet. - - rscadd: You can now cancel AI intellicard wiping. - - tweak: Geis now takes 5 seconds to resist. - Mervill: - - bugfix: Examining now lists the neck slot - MisterTikva: - - rscadd: Nanotrasen informs that certain berry and root plants have been infused - with additional genetic traits. - - rscadd: Watermelons now have water in them! - - rscadd: Blumpkin's chlorine production has been reduced for better workplace efficiency. - - rscadd: Squishy plants now obey the laws of physics and will squash all over you - if fall on them. - Shadowlight213: - - bugfix: The lavaland syndicate agents, as well as the ID for all simple_animal - syndicate corpses should have their ID actually have syndicate access on it - now! - Swindly: - - rscadd: 'Adds a new toxin: Anacea. It metabolizes very slowly and quickly purges - medicines in the victim while dealing light toxin damage. Its recipe is 1 part - Haloperidol, 1 part Impedrezene, 1 part Radium.' - WJohn: - - bugfix: AI core turrets can once again hit you if you are standing in front of - the glass panes, or in the viewing area's doorway. - XDTM: - - rscadd: Quantum Pads are now buildable in R&D! - - rscadd: Quantum Pads, once built, can be linked to other Quantum Pads using a - multitool. Using a Pad who has been linked will teleport everything on the sending - pad to the linked pad! - - rscadd: 'Pads do not need to be linked in pairs: Pad A can lead to Pad B which - can lead to pad C.' - - rscadd: Upgrading a Quantum Pad will reduce the cooldown, charge-up time, and - power consumption. - - rscadd: Quantum Pads require a bluespace crystal, a micro manipulator, a capacitor - and a cable piece. - kilkun: - - rscadd: New lore surrounding the various SWAT suits. - - tweak: Captain's hardsuit/SWAT suit got a few buffs. It's now much more robust. - - bugfix: Captain's space suit is now heat proof as well as fireproof. Long overlooked - no longer. -2016-12-07: - Cyberboss: - - bugfix: Atmos canisters now stay connected after relabeling them - Incoming5643: - - rscadd: Server owners that use the panic bunker feature can now optionally redirect - new players to a different server. See config.txt for details. - LOOT DUDE: - - tweak: Swarmers will drop bluespace crystals on death, non-artificial crystals. - MisterTikva: - - rscadd: Nanotrasen Mushroom Studies Division proudly announces that growth serum - producing plants were genetically reassembled. You no longer alternate between - sizes with doses 20u+ and more effects were added to higher doses. - Thunder12345: - - bugfix: You can now only order a replacement shuttle once -2016-12-08: - Fox McCloud: - - rscadd: The ability to harvest a plant, repeatedly, is now a gene-extractable - trait that can be spliced into other plants - - rscadd: can extract the battery capabilities of potatoes and splice them into - other plants - - rscadd: Plants types are now gene traits that can be added/removed from plants - - rscadd: Adds new stinging plant trait that will inject a bit of a plant's reagents - when thrown at someone - Joan: - - rscadd: The clockwork slab's interface is now TGUI. - - imageadd: You can now see what an ocular warden is attacking. - Mervill: - - rscadd: The light replacer can now create bulbs from glass shards - - rscadd: Click a light replacer while holding a glass shard to add the shard to - the replacer - - rscadd: Click a glass shard while holding a light replacer to consume the shard - MrStonedOne: - - tweak: world initialization is now faster. - - bugfix: fixed the modify bodypart admin tool not working - PKPenguin321: - - tweak: Swarmer beacons now have 750 health, down from 3000. - TehZombehz: - - rscadd: Nanotrasen Culinary Division has authorized the production of tacos, both - plain and classic. - XDTM: - - bugfix: Replica Pod cloning now works on people who have been decapitated. - coiax: - - rscadd: Additional mice sometimes appear in the maintenance tunnels. Engineers - beware! -2016-12-10: - Cyberboss: - - bugfix: The slips bug (which made freon laggy) is fixed - Kor: - - imagedel: Deleted all (3000+) left handed inhand icons. They are now automatically - mirrored from the right hand, saving spriters a lot of tedious busywork. - - rscadd: By crafting a wall mounted flasher frame (can be ordered via cargo), a - flash, and a riot shield, you can now construct a strobe shield. The strobe - shield combines the functionality of a riot shield and a flash, and can be reloaded - with flash bulbs. - Supermichael777: - - tweak: Conveyors have been more firmly anchored. No fun allowed - Thunder12345: - - rscadd: Added the Standby Emergency Vessel "Scrapheap Challenge" as a new emergency - shuttle option. You'll even be paid 1000 credits to use it! - coiax: - - rscadd: Due to a combination of radiation and water supply contamination, stations - have been reporting animals gaining self awareness. - optional name here: - - bugfix: fixed ashdrake's flame wall. - - bugfix: fixed walls decon spawning metal in a random location in the same room. -2016-12-11: - Cobby: - - bugfix: Fixes literally everything regarding renaming so far. When adding unique_rename - to objects, make sure the attackby checks for inheritance. - - bugfix: You can pull as other mobs now. Sorry, clickcode is stupid. - Cyberboss: - - bugfix: Frozen things will now unfreeze above 0C - Joan: - - tweak: Invoking Nezbere now increases ocular warden damage slightly more, but - increases ocular warden range slightly less. - Swindly: - - tweak: The recipe for moonshine now calls for 5 units of nutriment and 5 units - of sugar instead of 10 units of nutriment. - Thunder12345: - - bugfix: Scrapheap Challenge shuttle now actually works - coiax: - - rscadd: Cyborgs now have a reset module wire, that when pulsed, triggers the cyborg's - reset module hardware. - - rscadd: Cyborgs now eject all upgrades when reset, rather than the upgrades being - destroyed. - - rscdel: Removed redundant reset module. -2016-12-12: - Dannno: - - rscadd: more chaplain outfits - - rscadd: animal and tribal masks to the theater vendor -2016-12-13: - Fox McCloud: - - rscadd: Adds in random botany seeds; never the same twice. - - rscadd: Adds in new trait that makes a grown release smoke when squashed - - rscadd: Weed rates and chances are now core seed genes - Joan: - - experiment: Clockwork proselytizers suffer doubled cost and proselytization time - when not on the station, mining, or centcom. - - soundadd: Trying to recite scripture offstation is more clearly disapproved of. - XDTM: - - bugfix: The internal rage of the crew has been suppressed, and they will no longer - attack their own backpacks when opening them. -2016-12-14: - Incoming5643: - - rscadd: Recently we've been receiving reports of cheap knock off nuclear authentication - disks circulating among the syndicate network. Don't be fooled by these decoys, - only the real deal can be used to destroy the station! - - experiment: Please don't destroy the station in an attempt to make sure the disk - is real. - Joan: - - rscdel: The Ark of the Clockwork Justicar can no longer be repaired. - - tweak: The Ark now has 20% more health. - - rscadd: The Ark of the Clockwork Justicar will now force objects away from it. - - tweak: Faster-than-normal tools are somewhat slower than before. - - tweak: Mania Motors now require a much larger amount of power to convert people - adjacent, and people converted by it are knocked out. - Mindustry: - - bugfix: Goliath meat can be cooked in lava again - Okand37: - - rscadd: DeltaStation's emergency shuttle - XDTM: - - rscadd: Abductor Agents have now been equipped with extremely advanced construction - and hacking tools. -2016-12-18: - Dannno: - - rscadd: Sec hailers can now be emagged for a more rational, calm message. - Erwgd: - - rscadd: Limb Grower circuit boards can now be made in Research and Development, - requiring level 3 in data theory and level 2 in biological technology. - Firecage: - - rscadd: The NanoTrasen Airlock Builder Federation(NTABF) has recently released - the blueprints involving building and deconstructing Titanium Airlocks! These - airlocks are now being used on all of our shuttles. - Fox McCloud: - - bugfix: Fixes the personal crafting cost of ED-209's being too expensive - Hyena: - - tweak: adds 2 geiger counters to radition protection crates and a gift from the - russians - Joan: - - rscadd: Adds Replicant and Tinkerer's Cache to the default slab quickbind. - - rscadd: Revenants will be revealed by ocular wardens when targeted. - Joan, Dagdammit: - - rscadd: You can now push Wraith Spectacles up to avoid vision damage, but lose - xray vision. - - wip: Do note that flicking them on and off very quickly may cause you to lose - vision rather quickly. - Kor: - - rscadd: Added the treasure hunter's hat, coat, uniform, and whip. These aren't - available on the map yet, but will be available to the librarian soon. - Mervill: - - rscadd: Notice boards can now have photographs pined to them - - tweak: Items removed from the notice board are placed in your hands - - bugfix: Intents can be cycled forward and backwards with hotkeys again - - bugfix: Russian revolver ammo display works correctly - - rscadd: Added a credit deposit to pubbystation's vault - - rscdel: Removed a rather garish golden statue of the HoP from pubbystation's vault - Okand37 & Lexorion: - - rscadd: Added a new hair style, the Sidecut! - Supermichael777: - - rscadd: Clockwork components the chaplain picks up are now destroyed. - Swindly: - - rscadd: Adds eggnog. It can be made by mixing 5 parts rum, 5 parts cream, and - 5 parts egg yolk. - XDTM: - - rscadd: Changelings can now buy Tentacles on the Cellular emporium for 2 evolution - points. - - rscadd: Tentacles, once used, can be fired once against an item or mob to pull - it towards yourself. Items will be automatically grabbed. Costs 10 chemicals - per tentacle. - - rscadd: 'On humanoid mobs tentacles have a varying effect depending on intent: - - Help intent simply pulls the target closer without harming him; - Disarm intent - does not pull the target but instead pulls whatever item he''s holding in his - hands to yours; - Grab intent puts the target into an aggressive grab after - it is pulled, allowing you to throw it or try to consume it; - Harm intent will - briefly stun the target on landing; if you''re holding a sharp weapon you''ll - also impale the target, dealing increased damage and a longer stun.' - - bugfix: Random golems now properly acquire the properties of the golem they pick. - - rscadd: When becoming a random golem the user is informed of the properties of - the picked golem. - coiax: - - rscadd: Chameleon clothing produced by the syndicate has been found to react negatively - to EMPs, randomly switching forms for a time. - - rscadd: Anomalies now have observer-visible countdowns to their detonation. - - rscadd: Adds upgrades for the medical cyborg! - - rscadd: The Hypospray Expanded Synthesiser that adds chemicals to treat blindness, - deafness, brain damage, genetic corruption and drug abuse. - - rscadd: The Hypospray High-Strength Synthesiser, containing stronger versions - of drugs to treat brute, burn, oxyloss and toxic damage. - - rscadd: The Piercing Hypospray (also applicable to the Standard and Peacekeeper - borgs) that allows a hypospray to pierce thick clothing and hardsuits. - - rscadd: The Defibrillator, giving the medical cyborg an onboard defibrillator. - - rscadd: Loose atmospherics pipes are now dangerous to be hit by. - - rscadd: Whenever you automatically pick up ore with an ore satchel, if you are - dragging a wooden ore box, the satchel automatically empties into the box. - dannno: - - rscadd: Adds a villain costume to the autodrobe. - - bugfix: Fixes autodrobe failing to stock items. - jughu: - - tweak: 'sandals are not fireproof or acidproof anymore :add: Magical sandals for - the wizard that are still fireproof/acid proof :tweak: makes the marisa boots - acid and fire proof too' - karlnp: - - bugfix: made facehuggers work again - - bugfix: vendors, airlocks, etc now cannot shock at a distance - uraniummeltdown: - - tweak: Side entrance to Box Medbay, a few layout changes. -2016-12-19: - spudboy: - - bugfix: Fixed items not appearing in the detective's fedora. -2016-12-20: - Kor: - - rscadd: You can put a variety of hats on cyborgs using help intent (the engiborg - can't wear hats though, as it is shaped too oddly. Sorry!) - - rscadd: 'The complete list of currently equippable hats is as follows: Cakehat, - Captains Hat, Centcomm Hat, Witch Hunter Hat, HoS Cap, HoP Cap, Sombrero, Wizard - Hat, Nurse Hat.' - Lzimann: - - bugfix: Mjor the Creative will drop his loot correctly now. - Mekhi Anderson: - - rscdel: Fixes various PAI bugs, various tweaks and bullshit. - MrPerson: - - rscadd: Starlight will have more of a gradient and generally shine a more constant - amount of light regardless of how many tiles are touching space. In dark places - with long borders to space, starlight will be much darker. -2016-12-21: - FTL13, yogstation, Iamgoofball, and MrStonedOne: - - rscadd: Space is pretty. - - tweak: You can configure how pretty space is in preferences, those of you on toasters - should go to low to remove the need to do client side animations. (standard - fanfare as job selection, left click to increase, right click to decrease) (Changes - are applied immediately in most cases, on reconnect otherwise) - Joan: - - rscadd: EMPs will generally fuck up clockwork structures. - - rscdel: Cogscarabs can no longer hold slabs to produce components. - - rscadd: Slabs will now produce components even if in a box in your backpack inside - of a bag of holding on your back; any depth you can hide the slab in will still - produce components. - - bugfix: Non-Servants in possession of clockwork slabs will also no longer produce - components. - Mekhi Anderson: - - bugfix: PAI notifications no longer flood those who do not wish to be flooded. - Shadowlight213: - - imageadd: 2 new performer's outfits have been added to the autodrobe -2016-12-24: - AnturK: - - rscadd: Implants now work on animals. - Cyberboss: - - bugfix: Dead things can no longer be used to open doors - F-OS: - - bugfix: swarmers can no longer destroy airlocks. - MrStonedOne: - - tweak: AI's call bot command has been throttled to prevent edge cases causing - lag. You will not be able to call another bot until the first bot has finished - mapping out it's route. - TehZombehz: - - tweak: Observers can now orbit derelict station drone shells, much like current - lavaland ghost role spawners, to make finding them easier. Regular drone shells - are not affected by this. - XDTM: - - rscadd: Autolathes are now true to their name and can queue 5 or 10 copies of - the same item. - coiax: - - rscadd: Cyborg renaming boards cannot be used if no name has been entered. - - rscdel: Cyborg rename and emergency reboot modules are destroyed upon use, and - not stored inside the cyborg to be ejected if modules are reset. - - rscadd: Emagging the book management console and printing forbidden lore now has - a chance of producing a clockwork slab rather than an arcane tome. - kevinz000: - - experiment: Flightsuits now have their own subsystem! - - bugfix: Flightsuits properly account for power before calculating drifting - - experiment: Flightpack users will automatically fly over anyone buckled without - crashing. - - experiment: Flightpack users automatically slip through mineral doors - - experiment: Flightpack users will crash straight through grills at appropriate - times - - experiment: Flightpack users automatically slip through unbolted airlocks - - experiment: Flightpacks are faster in space, but their space momentum decay has - been upped significantly to compensate - - experiment: Flighthelmets now have a function to allow the wearer to zoom out - to see further. Helps you not crash eh? - spudboy: - - bugfix: Gave cyborgs some hotkeys they should have had. -2016-12-27: - Firecage: - - bugfix: The Nanotrasen Sewing Club has finally fixed the problem which rendered - NT, Ian, and Grey bedsheets invisible when worn! - Hyena: - - tweak: Detective coats can now hold police batons - - bugfix: Fixes disabler in hand sprites - Joan: - - rscadd: You can now put syndicate MMIs and soul vessels into AI cores. - - rscadd: The Hierophant boss will now create an arena if you try to leave its arena. - - imageadd: The Hierophant boss, its arena, and the weapon it drops all have new - sprites. - - soundadd: And new sounds. - - wip: And new text. - - rscadd: Wizards can now buy magic guardians for 2 points. They are not limited - to one guardian, meaning they can have up to 5. If that's wise is an entirely - different question. - - experiment: Wizards cannot buy support guardians, but can buy dexterous guardians, - which can hold items. - Shadowlight213: - - tweak: Shuttle are now safe from radstorms - XDTM: - - bugfix: HUD implants now properly allow you to modify the records of those you - examine, like HUD glasses do. - - bugfix: Organ Manipulation surgery now properly heals on the cautery step. - - bugfix: The maintenance door adjacent to R&D in metastation is now accessible - to scientists, instead of requiring both science and robotics access. -2016-12-28: - Erwgd: - - rscadd: A new access level is available, named "Cloning Room". Medical Doctors, - Geneticists and CMOs start with it. - - tweak: On Box Station and on Meta Station, the cloning lab doors require Cloning - Room access in addition to each door's previous requirements. - - tweak: Cloning pods are now unlocked with Cloning Room access only. - Incoming5643: - - rscadd: There's a new category in uplinks for discounted gear. These special discounts - however can only be taken once, so even if you are lucky enough to see syndibombs - for 75% off you won't be able to nuke the entire station with them. - - bugfix: The charge spell will no longer bilk you on wand charges, and wands that - are dead won't show up as charged. - Joan: - - rscdel: Clockwork Marauders no longer have Fatigue. It was difficult to balance - and made them too easy to force into recalling. This means they just have health; - they aren't forced to recall by anything, but can accordingly die much more - easily. - - rscadd: Accordingly Clockwork Marauders now have more health, do slightly more - damage, block slightly more often, and have to go slightly further from their - host to take damage. - - rscadd: Marauders that are not recovering(from recalling while the host's health - is too high to emerge) and are inside their host, or are within a tile of their - host, will gradually heal their host until their host is above the health threshold - to emerge. - - tweak: Chaos guardians transfer slightly less damage to their summoner. - XDTM: - - tweak: Armblades now go slash slash instead of thwack thwack - - imageadd: Tentacles have some fancier sprites -2016-12-29: - Mervill: - - bugfix: Patched an exploit related to pulling a vehicle as its driver while in - space - - bugfix: Fixed evidence bags not displaying their contents when held - - bugfix: Clothing without a casual variant will no longer say it can be worn differently - when examined - - bugfix: Only standard handcuffs can be used to make chained shoes - - bugfix: Fixed cards against space - - bugfix: Drying rack sprite updates properly when things are removed without drying - XDTM: - - rscadd: Colossi now drop the Voice of God, a mouth organ that, if implanted, allows - you to speak in a HEAVY TONE. This voice can compel hearers to briefly obey - certain codewords, such as "STOP". Using these codewords will severely increase - this ability's cooldown, and only one will be used per sentence. - - rscadd: 'Use .x, :x, or #x as a prefix to use Voice of God or any future vocal - cord organs.' - - rscadd: Chaplains, being closer to the gods, and command staff, being used to - giving orders, gain an increased effect when using the Voice of God. The mime, - not being used to speaking, has a reduced effect. -2016-12-31: - hyena: - - bugfix: fixes caps suit fire immunity - kevinz000: - - bugfix: Machine overloads/overrides aren't as bullshit as you'll actually be able - to dodge it now. -2017-01-01: - A whole bunch of spiders in a SWAT suit: - - bugfix: spiders can't wrap anchored things -2017-01-02: - MrStonedOne: - - tweak: Throwing was refactored to cause less lag and be more precise - - rscadd: Item throwing now imparts the momentum of the user throwing. Throwing - in the direction you are moving throws the item faster, throwing away from the - direction you are moving throws the item slower. This should make hitting yourself - with floor tiles less likely. - XDTM: - - bugfix: Storage bags should now cause less lag when picking up large amounts of - items. - - bugfix: Storage bags now don't send an error message for every single item they - fail to pick up. -2017-01-03: - Cyberboss: - - bugfix: AIs can no longer see cult runes properly - Mervill: - - bugfix: Can't kick racks if weakened, resting or lying -2017-01-06: - Cruix: - - bugfix: Fixed the leftmost and bottommost 15 turfs not having static for AIs and - camera consoles - Joan: - - bugfix: Tesla coils and grounding rods must be anchored with a closed panel to - function, ie; not explode when shocked. - - tweak: Metastation's xenobio has been slightly modified to avoid getting hit by - some standard shuttles. - Mervill: - - bugfix: Regular spraycans aren't silent anymore - MrStonedOne and Ter13: - - rscadd: Added some ping tracking to the game. - - rscadd: Your ping shows in the status tab - - rscadd: Other players ping shows in who to players and admins. - Nabski89: - - bugfix: Re-Vitiligo Levels to match wiki. - XDTM: - - tweak: Voice of God's Sleep lasts less than the other stuns. - - rscadd: You can also use people's jobs to single them out, instead of only names. - - tweak: If multiple people share the same name/job they'll all be included, although - at a reduced bonus. - - tweak: Names and jobs will only be accepted if they're the first part of the command, - and not in the middle, to prevent unintended focusing. - - bugfix: Voice of God now shows speech before the emotes it causes. - - bugfix: Special characters are no longer over-sanitized. - - bugfix: You can now properly apply items to clothing with pockets, such as slime - speed potions on clown shoes. - - bugfix: Mechs are now able to enter wormhole-sized portals. -2017-01-08: - Mervill: - - bugfix: pre-placed posters don't retain their pixel offset when taken down carefully - - bugfix: Dinnerware Vendor will show it's wire panel - Nanotrasen Station Project Advisory Board: - - wip: It is highly recommended that, when constructing the Meteor Shield project, - you are able to see, at minimum, two meteor shields from a stationary location. - The Nanotrasen Station Project Advisory Board is not liable for meteor damage - taken under wider shield arrangements. - Speed of Light Somehow Changed: - - tweak: Dynamic lights are no longer animated, and update instantly - - tweak: Increased maximum radius of mob and mobile lights -2017-01-10: - Arianya: - - bugfix: Doors and vending machines once again make a sound when you screwdriver - them. - Cyberboss: - - bugfix: Explosions can no longer be dodged - - tweak: Airlocks are now destroyed by the same level explosion that destroys walls - - tweak: Diamond/External/Centcomm airlocks and firedoors now block explosions as - walls do - Joan: - - experiment: Clockwork Proselytizers no longer require Replicant Alloy to function; - instead, they gradually charge themselves with power, which is used more or - less the same as alloy. - - tweak: Clockwork Proselytizers now produce brass sheets when used in-hand, instead - of Replicant Alloy. - - rscdel: Tinkerer's Caches can no longer have Replicant Alloy removed from them; - using an empty hand on them will simply check when they'll next produce a component. - - rscdel: Mending Motors can no longer use Replicant Alloy in place of power. - Mervill: - - bugfix: Controlling the station status displays no longer overrides the cargo - supply timer - MrStonedOne: - - experiment: Lighting was made more responsive. - XDTM: - - rscadd: Earmuffs and null rods protect against the Voice of God. - - rscadd: Earmuffs are now buildable in autolathes. - - tweak: Voice of God stuns have a longer cooldown. - coiax: - - rscadd: Girders now offer hints to their deconstruction when examined. -2017-01-13: - Cyberboss: - - bugfix: Walls blow up less stupidly - - bugfix: You no longer drop a beaker after attempting to load it into an already - full cryo cell - Joan: - - bugfix: Instant Summons is no longer greedy with containers. - Mervill: - - bugfix: Hardsuits, amour and other suits that cover the feet now protect against - glass shards - - bugfix: You will now lose the lawyer's speech bubble effect if you unequip the - layer's badge - MrStonedOne: - - tweak: More performance tweaks with the modulated reactive ensured entropy frame - governor system - PKPenguin321: - - tweak: Ash walker tendrils will now restore 5% of their HP when fed. - Shadowlight213: - - bugfix: Borg emotes should now play at the correct pitch - - bugfix: The ID console now properly handles authorization - - bugfix: Clicking on one of the ID cards in the UI will no longer eject both of - them - Thunder12345: - - bugfix: Morphs will no longer retain the colour of the last thing mimicked when - reverting to their true form - XDTM: - - bugfix: Patches' application is now properly delayed instead of instant. - - bugfix: Accelerator laser cannons' projectile now properly grows with distance. - coiax: - - rscadd: The end of round stats include the number of people who escaped on the - main emergency shuttle. -2017-01-14: - Cyberboss: - - bugfix: Explosions now flash people properly - Lzimann: - - bugfix: Fixes TGUI not working for people without IE11 - Thunder12345: - - bugfix: Recoloured mobs and objects will no longer produce coloured fire. - XDTM: - - bugfix: Nanotrasen decided that the "violent osmosis" method for refilling fire - extinguishers was, while cathartic, too expensive, due to the water tank repair - bills. Water tanks now have a tap. - - bugfix: (refilling extinguishers from tanks won't make you hit them) - - bugfix: Golems no longer drop belt, id, and pocket contents in a fit of extreme - clumsiness when drawing a sword from a sheath. - - bugfix: Wrenching portable chem dispensers won't cause you to immediately try - unwrenching them. - coiax: - - bugfix: Blue circuit floors are now restored to their normal colour if an AI doomsday - device is disabled. -2017-01-16: - Cyberboss: - - bugfix: Firedoors no longer have maintenance panels - - tweak: Firedoors must now be welded and screwdrivered prior to be deconstructed - Joan: - - rscadd: Ratvar will now convert lattices and catwalks to clockwork versions. - XDTM: - - tweak: Updating your PDA info with an agent id card inside will also overwrite - the previous name. - - bugfix: Loading a xenobiology console with a bio bag won't cause you to smack - it with it. - - tweak: Chemical splashing is now based on distance rather than affected tiles. - - bugfix: You can now properly wet floors by putting enough water in a grenade. - - bugfix: Floating without gravity won't drain hunger. -2017-01-18: - Mervill: - - bugfix: Using a welder to repair a mining drone now follows standard behaviour - - bugfix: Redeeming the mining voucher for a mining drone now also provides welding - goggles - - bugfix: ntnrc channels are now deleted properly - Tofa01: - - bugfix: Moved all sprites for heat pipe manifold either up or down by one so that - they will line up correctly when connected to adjacent pipes. - uraniummeltdown: - - rscadd: More AI holograms! -2017-01-19: - Cyberboss: - - bugfix: Various abstract entities will no longer be affected by spacewind - - bugfix: Ash will, once again, burn in lava - - rscadd: Active testmerges of PRs will now be shown in the MOTD - - bugfix: You will no longer appear to bleed while bandaged - Joan: - - spellcheck: Clockwork airlocks now have more explicit deconstruction messages, - using the same syntax as rwall deconstruction. - Mervill: - - bugfix: Raw Telecrystals won't appear in the Traitor's purchase log at the end - of the round - MrStonedOne: - - bugfix: Fixed excessive and immersion ruining delay on the smoothing of asteroid/mining - rock after a neighboring rock turf was mined up. - XDTM: - - bugfix: Plasmamen that are set on fire by reacting with oxygen will burn even - if they have protective clothing. It will still protect from external fire sources. - - tweak: Atmos-sealing clothing, like hardsuits, will protect plasmamen from reacting - with the atmosphere. - - tweak: Plasmamen can survive up to 1 mole of oxygen before burning, instead of - burning with any hint of oxygen. - - bugfix: Nanotrasen no longer ships self-glueing posters. You'll have to finish - placing the posters to ensure they don't fall on the ground. - - bugfix: Exosuits can't push anchored mobs, such as megafauna or tendrils, anymore. - coiax: - - bugfix: AIs can no longer activate the Doomsday Device off-station. Previously - it would activate and then immediately turn off, outing the AI as a traitor - without any benefit. -2017-01-20: - CoreOverload: - - tweak: Any sharp item can now be used for "incise" surgery step, with 30% success - probability. - Joan: - - rscadd: Sentinel's Compromise will also convert oxygen damage into half toxin, - in addition to brute and burn. - - tweak: Reduced the Ark of the Clockwork Justicar's health from 600 to 500 - - rscadd: You can now pull objects past the Ark of the Clockwork Justicar without - them being moved and or destroyed by its power. - MrStonedOne: - - tweak: Server side timing of the parallax shuttle launch animation now runs on - client time rather than byond time/server time. This will fix the odd issues - it has during lag. The parallax shuttle slowdown animation will still have issues, - those will be fixed in another more involved update to shuttles. - - rscadd: The window will flash in the taskbar when a new round is ready and about - to start. - Tofa01: - - bugfix: Moved The CentComm station 6 tiles to the left in order to prevent large - shuttles such as "asteroid with engines on it" from clipping off the end of - the right side of the map. - XDTM: - - bugfix: Chameleon PDAs can now morph into assistant PDAs. - - bugfix: A few iconless items have been blacklisted from chameleon clothing. - - tweak: Reviver implants now warn you when they're turning on or off, or when giving - a heart attack due to EMP. -2017-01-22: - ChemicalRascal: - - tweak: Voice analyzers in "inclusive" mode (the default mode) are now case-insensitive. - Cyberboss: - - tweak: You can no longer meatspike bots and silicons - - bugfix: Secbots will now drop the baton type they were constructed with - Dannno: - - rscadd: yeehaw.ogg is now a round end sound - Fox McCloud: - - tweak: drying meat slabs and grapes now yields a healthy non-junkfood snack - Hyena: - - rscadd: Adds paint remover to the janitors closet - Joan: - - rscadd: Clockwork Proselytizers can now convert lattices and catwalks. This has - negative gameplay benefit, but looks cool. - - rscadd: Sigils of Transmission can be accessed by clockwork structures in a larger - range. - - tweak: You can see, when examining a clockwork structure, how many sigils are - in range of it. - - rscadd: Clockwork constructs will toggle clockwork structures instead of attacking - them. - Shadowlight213: - - bugfix: Zombies will now get their claws upon zombification - Thunder12345: - - rscadd: The indestructible walls on CentComm will now smooth. - Tofa01: - - tweak: Changed alert message on early launch Authorization shuttle repeal message. - - bugfix: Makes the repeal message work and push a alert to the crew properly, also - reports every Authorization repeal now. - - bugfix: Auto Capitalisation will now work with all types of MMI chat - Ultimate-Chimera: - - rscadd: Adds a new costume crate to the cargo ordering console. - XDTM: - - rscadd: Xenobiology consoles are now buildable from circuitboards in R&D. They'll - be limited to the area they're built in plus any area with the same name. - - rscadd: Stock Exchange computers are now also buildable this way. - - rscadd: Androids now speak in a more robotic tone of voice. - - imageadd: Armblades now look a bit more bladelike. - coiax: - - rscadd: The Delta emergency shuttle now travels towards the south, rather than - the north. This changes nothing except which direction the stars rushing past - the windows are moving. - - bugfix: Fixed dragging the spawn protection traps on CTF. -2017-01-24: - CoreOverload: - - rscadd: You can now buckle handcuffed people to singularity/tesla generators, - RTGs, tesla coils and grounding rods. - Cyberboss: - - tweak: Firealarms now go off if it's too cold - - bugfix: World start will no longer lag - - bugfix: Dismembered heads will now use a mob's real name - Joan: - - rscadd: Clockwork Slabs can now focus on a specific component type to produce. - - experiment: 'Redesigned: Volt Void now allows you to fire up to 5 energy rays - at targets in view; each ray does 25 laser damage to non-Servants in the target - tile. The ray will consume power to do up to double damage, however.' - - wip: Failing to fire a Volt Void ray will damage you, though you won't die from - it unless you have access to a lot of power and are either low on health or - fail all five rays in a row. - - rscadd: The Ark of the Clockwork Justicar will gradually convert objects near - it with increasing range as it gets closer to activating. - - tweak: 'Brass windows have 20% less health, and are accordingly easier to destroy. - Fun fact: Lasers do more damage to brass windows!' - - tweak: 'Wall gears have 33% less health and are slightly faster to deconstruct. - Fun fact: You can climb over wall gears!' - - tweak: Marauders will heal more of their host's damage, on average, per life tick. - - rscadd: Clockwork Proselytizers can now repair Servant silicons and clockwork - mobs. This works in the same manner as repairing clockwork structures. - - tweak: Cogscarabs work slightly differently, and act as though the proselytizer - is a screwdriver. - Kor: - - rscadd: Megafauna will not heal while on the station. Do not be afraid to throw - your life away to get in a few toolbox hits. - Shadowlight213: - - rscdel: PAIs can no longer ventcrawl - Tofa01: - - rscadd: '[Delta Station] Adds a tracking beacon to AI MiniSat Exterior Hallway' - coiax: - - rscdel: Statues are now just incredibly tough mobs, rather than GODMODE. As a - side effect, they are no longer immune to bolts of change. - - bugfix: Fixed some issues with X (as Y) names on polymorphed mobs. -2017-01-26: - Robustin: - - tweak: Unholy Water can now be thrown or vaporized to deliver a powerful poison - unto the cult's enemies - or healing and stun resistance to its acolytes. - Tofa01: - - tweak: Moved Meta station AI MiniSat tracking beacon to AI MiniSat entrance. Should - prevent being regular teleported into space. - - bugfix: Added missing row of pixels to Flypeople torso so head connects to body - properly. - Tofa01 & XDTM: - - rscadd: Adds radio alert messages going to medical channel to the cryo tube when - a patient is fully restored. - - soundadd: Adds new alert sound for cryo tube. (cryo_warning.ogg) - XDTM: - - rscadd: Voice of God has received a few more commands. - - rscadd: You can now use job abbreviations (ex. hos > head of security) and first - names (ex. Duke > Duke Hayka) to focus targets. - coiax: - - rscadd: The nuclear operative cybernetic implant bundle now actually contains - implants. - - rscdel: The cybernetic implant bundle is no longer eligible for discounts (bundles - are, in general, not eligible). - - rscadd: Telecrystals can be purchased in stacks of five and twenty. - - rscadd: The entire stack of telecrystals are added to the uplink when charging - them. -2017-01-27: - Joan: - - tweak: Buckshot now does a maximum of 75 damage, from 90. - - tweak: The unique cyborg scriptures(Linked Vanguard, Judicial Marker) take 3 seconds - to invoke, from 4. - - tweak: Invoking Inath-neq and Invoking Nzcrentr now both take 10 seconds to invoke, - from 15. - Lzimann: - - rscadd: Now you can choose what department you want to be as security! (This may - not be completly reliable). - RemieRichards: - - rscadd: 'Emagging a sleeper now randomises the buttons, the buttons remain the - same until randomised again so you can "learn" the new button config if you''re - a masochist, Inject omnizine but realise far too late that it''s all morphine, - woops! (Note: Epinephrine can always be injected, regardless of chem levels, - this means if something !!FUN!! ends up on the Epinephrine button, it will always - be injectable!)' - Sweaterkittens: - - tweak: There are now updated names and descriptions for the items that your plasma-based - crewmembers start with and use frequently. -2017-01-28: - Joan: - - tweak: Brass windows no longer start off anchored, but are constructed instantly. - - bugfix: You can no longer stack multiple windows of the same direction on a tile. - - rscadd: Vitality Matrices now share vitality globally, allowing you to use vitality - gained from any Matrix. - - tweak: Geis now mutes human targets if there are less than 6 Servants. - - tweak: Geis no longer produces resist messages below 6 Servants; this isn't a - change, as Geis cannot be successfully resisted below 6 Servants. - - tweak: Applying Geis to an already bound target will also mute them, in addition - to preventing resistance. - RemieRichards: - - rscadd: A New weapon for clown mechs, the Oingo Boingo Punch-face! it's a giant - boxing glove that extends out on a spring and sends atoms flying (including - anchored ones and things that make no sense to move because -clowns-) - Tofa01: - - bugfix: Mop will no longer try and clean tile under janitorial cart when wetting - the mop. - - rscadd: Adds modular computers to Metastation. - - bugfix: Fixes no air in Deltastation maintenance kitchen. - - rscadd: Adds a modular computer to the CE office on Pubbystation. - Xhuis: - - rscadd: Energy-based weapons can now light cigarettes. - coiax: - - rscadd: Communication consoles now share cooldowns on announcements. - - rscadd: Cyborgs can now alter the messages of the announcement system. - - bugfix: Deadchat is now notified of any deaths on the shuttle or on Centcom. The - CTF arena does not generate death messages, due to the high levels of death. - - rscadd: The Human-level Intelligence event now occurs slightly more often, and - produces a classified message. - kevinz000: - - rscadd: Emitters and Tesla Coils now have activation wires! - - rscadd: Emitters will shoot out an emitter bolt when pulsed, regardless of it - is on. - - rscadd: Tesla coils will shoot lightning when pulsed, if it is connected to a - cable that has power. - - bugfix: Bolas no longer restrain your hands for 10 seconds when you try to remove - them and fail. -2017-01-29: - BASILMAN YOUR MAIN MAN: - - rscadd: Added a new sailor outfit to the autodrobe, now you can play sailors vs - pirates. - BlakHoleSun: - - rscadd: Added new reaction with the rainbow slime extract. Injecting a rainbow - slime extract with 5u of holy water and 5u of uranium gives you a flight potion. - Cobby: - - tweak: AI's can now be your banker by manipulating the stock machine. - Cyberboss: - - experiment: Nuclear bombs now detonate - - rscadd: You can now link additional cloning pods in the same powered area to a - single computer using a multitool. - Fox McCloud: - - bugfix: Fixes Kudzu seed gene stats not being properly altered by certain reagents - - bugfix: Fixes Kudzu vine dropped seeds not properly having gene stats set - - bugfix: Fixes glowshrooms having an invalidly high lifespan - - bugfix: Fixes explosive vines not properly chaining - Joan: - - rscadd: Clockwork Marauders now grant their host action buttons to force them - to emerge/recall and communicate with them, instead of requiring the host to - type their name or use a verb, respectively. - - rscdel: Clockwork Marauders no longer see their block and counter chances; this - was mostly useless info, as knowing the chance didn't matter as to what you'd - do. - - rscdel: Clockwork Marauders can no longer change their name. - - tweak: Clockwork Marauders have a slightly lower chance to block, and take slightly - more damage when far from their host. - - bugfix: Fixes a bug where Clockwork Marauders never suffered reduced damage and - speed at low health and never got the damage bonus at high health. - Kor: - - rscdel: Stimpacks are no longer available in the mining vendor. - Lzimann: - - rscadd: You can now change your view range as ghost. To do so, either use the - View Range verb in the ghost tab, the mouse scroll up/down or control + "+"/"-". - The verb also works as a reset if you changed your view. - Sogui: - - tweak: There are now 2 less traitors in the double agent mode - - tweak: All security (and captain) suit sensors are set to max by default - Supermichael777: - - tweak: The wooden chair with wings is now craft-able. -1 non reconstruct-able - map object - - rscadd: Added the Tiki mask, you can make it in wood's crafting menu. - - imageadd: Ported Tiki mask's sprites from Hippie station. It is under the same - Creative Commons 3.0 BY-SA as the rest of our sprites. They are from Nienhaus. - Tofa01: - - rscadd: Adds a camera network onto the Omega Station. - - imageadd: Added new sprite for the AI Slipper. - XDTM: - - tweak: Implanting chainsaws is now a prosthetic replacement instead of its own - surgery. - - rscadd: You can now implant synthetic armblades (from an emagged limb grower) - into people's arms to use it at its full potential. - - rscdel: Chainsaw removal surgery has been removed as well; you'll have to sever - the limb and get a new one. - Xhuis: - - rscadd: AI control beacons are a new item created from the exosuit fabricator. - When installed into a mech, it allows AIs to jump to and from that mech freely. - Note that malfunctioning AIs with the domination power unlocked will instead - be forced to dominate the mech. - - tweak: Some timed actions are no longer interrupted while drifting through space. - - rscadd: Riot foam darts can now be constructed from a hacked autolathe. - bgobandit: - - rscadd: The library computer can now upload scanned books to the newscaster. Remember, - seditious or unsavory news channels should receive a Nanotrasen D-Notice! - - rscadd: The library computer can now print corporate posters as well as Bibles. - - rscdel: Cargo no longer offers a corporate poster crate. Nobody ever bought it - anyway. - coiax: - - rscadd: The Librarian now starts with a chisel/soapstone/chalk/magic marker capable - of engraving messages for subsequent shifts, and permanently erasing messages - that the Librarian is unhappy with. It has limited uses, so order more at Cargo. - - bugfix: The contraband cream pie crate is now locked, and requires Theatre access. - - rscadd: Any silicons created by bolts of change have no laws. - - rscadd: Cyborgs are immune to polymorph while changing module. - - rscadd: Adds Romerol to the traitor uplink for 25 TC. (This means you need a discount, - or to work with another traitor to afford it). Romerol is a highly experimental - bioterror agent which silently create dormant nodules to be etched into the - grey matter of the brain. On death, these nodules take control of the dead body, - causing limited revivification, along with slurred speech, aggression, and the - ability to infect others with this agent. - - rscdel: Zombie infections are no longer visible on MediHUD. - - rscdel: Zombies no longer tear open airlocks, since they can just smash them open - just as fast. - - rscdel: Zombies are no longer TOXINLOVING. - - rscadd: EMPs may cause random wires to be pulsed. Please ensure that sensitive - equipment avoids exposure to heavy electromagnetic pulses. - jughu: - - tweak: Changes some cargo export prices - ma44: - - tweak: Nanotrasen has improved training of the crew, teaching crewmembers like - you to unscrew the top off the bottle and pour it into containers like beakers. - vcordie: - - bugfix: Loads the HADES carbine with the correct bullet. - - tweak: The SRM-8 Rocket Pods have been loaded with new explosives designed to - do maximum damage to terrain. These explosives are less effective on people, - however. -2017-01-30: - BASILMAN YOUR MAIN MAN: - - rscadd: Added BM SPEEDWAGON THE BEST (AND ONLY) SPACE CAR ON THE MARKET. - CoreOverload: - - tweak: Clicking item slot now clicks the item in it. - Cyberboss: - - bugfix: Judicial visors now recharge properly - - bugfix: Gluon grenades now properly freeze turfs - - bugfix: Revs are now properly jobbanned - Fox McCloud: - - tweak: Plant analyzers will now display plant traits - - tweak: Plant analyzers will now display all of a grown's genetic reagents - Joan: - - rscdel: Cutting off legs no longer stuns. - - tweak: Volt Void now only allows you to fire 4 volt rays instead of 5, and the - damage of each ray has been reduced to 20, from 25. - - rscdel: Cyborgs using Volt Void now take damage if they fail to fire. - - experiment: 'Clockwork scripture can no longer require more components than it - consumes: This means that most scriptures ""cost"" one less component.' - MrStonedOne: - - rscadd: Because of abuse, actions on interfaces are throttled. Some bursting is - allowed. You will get a message if an action is ignored. Server operators can - configure this in config.dm - Tofa01: - - bugfix: '[Delta] Fixes area names for Deltastation' - - bugfix: '[Delta] Fixes custodial closet being cold all the time on Deltastation' - bgobandit: - - rscadd: Nanotrasen supports the arts. We now offer picture frames! - coiax: - - rscdel: The Syndicate "Uplink Implant" now has no TC precharged. You can charge - it with the use of physical telecrystals. The price has been reduced from 14TC - to 4TC accordingly. (The uplink implant in the implant bundle still has 10TC). - - rscadd: Syndicate bombs and nuclear devices now have a minimum timer of 90 seconds. - - rscadd: Camoflaged HUDs given to head revolutionaries now function the same as - chameleon glasses in the chameleon kit bundle, giving them an action button - and far more disguise options. - - rscadd: Syndicate thermals are also now more like chameleon glasses as well. - - rscadd: You can regain a use of a soapstone by erasing one of your own messages. - (This means you can remove a message if you don't like the colour and want to - try rephrasing it to get a better colour). Erasing someone else's message still - uses a charge. - - bugfix: Fixes bugs where you'd spend a charge without engraving anything. - - bugfix: Fixes a bug where the wrong ckey was entered in the engraving, you won't - be able to take advantage of the "recharging" on messages made before this change. -2017-01-31: - Cyberboss: - - tweak: The cyborg hugging module can no longer self target - Joan: - - tweak: Changed what scriptures and tools Servant cyborgs get; a full list can - be found on the clockwork cult wiki page. - RemieRichards: - - rscadd: Added the ability to choose where your uplink spawns, choose between the - classic PDA, the "woops you don't actually have a PDA" fallback Radio uplink - and the brand new Pen uplink! -2017-02-01: - Cyberboss: - - bugfix: AI integrity restorer computer now respects power usage - - bugfix: Progress bars will now stack vertically instead of on top of each other - - bugfix: Progress bars will no longer be affected by lighting - Xhuis: - - rscadd: You can now fold up bluespace body bags with creatures or objects inside. - You can't fold them up if too many things are inside, but anything you fold - up in can be carried around in the object and redeployed at any time. -2017-02-03: - Cobby: - - rscadd: Ghosts will now be informed when an event has been triggered by our lovely - RNG system. - Cyberboss: - - tweak: Firedoors will eventually reseal themselves if left open during a fire - alarm - Joan: - - tweak: Clockwork Marauders have 25% less health, 300 health from 400. - - wip: The Vitality Matrix scripture is now a Script, from an Application. Its cost - has been accordingly adjusted. - - tweak: Vitality Matrices will be consumed upon successfully reviving a Servant. - They also drain and heal conscious targets slightly slower. - - wip: The Fellowship Armory scripture is now an Application, from a Script. Its - cost has been accordingly adjusted. - - tweak: Fellowship Armory now affects all Servants in view of the invoker, and - will replace weaker gear and armor with its Ratvarian armor. Also, clockwork - treads now allow you to move in no gravity like magboots. - - rscdel: Mania Motors no longer instantly convert people next to them. - - rscadd: Instead, you have to remain next to them for several seconds, after which - you will be knocked out, then converted if possible. - - tweak: Mania Motors now cost slightly less power to run. - Jordie0608: - - tweak: Admin notes, memos and watchlist entries now use a generalized system, - they can all be accessed from the former notes browser. - - rscadd: Added to this are messages, which allow admins to leave a message for - players that is delivered to them when they next connect. - Lexorion: - - tweak: Laser projectiles have a new sprite! They also have a new effect when they - hit a wall. - Sweaterkittens and Joan: - - rscadd: Ocular Wardens will now provide auditory feedback when they acquire targets - and deal damage. - - soundadd: adds ocularwarden-target.ogg, ocularwarden-dot1.ogg and ocularwarden-dot2.ogg - to the game sound files. - Tofa01: - - bugfix: '[Delta] Allows Station Engineers to access Delta Atmospherics Solar Panel - Array Room.' - - rscadd: '[Omega] Adds a Massdriver room to chapel on Omegastation.' - bgobandit: - - rscadd: All art storage facilities offer construction paper now! - coiax: - - rscadd: A victim of a transformation disease will retain their name. - - tweak: The slime transformation disease can turn you into any colour or age of - slime. - - rscadd: The Abductor event can now happen at any time, rather than thirty (30) - minute plus rounds. -2017-02-04: - Cyberboss: - - bugfix: Modular computers now explode properly - - bugfix: Emagged holograms can no longer be exported for credits - - bugfix: Abstract entities no longer feed the singularity - - tweak: Machine frames will no longer be anchored when created - Joan: - - rscadd: Vanguard now shows you how long you have until it deactivates. - Kor: - - rscadd: 'By combing two flashlights and cable coil, you can create a new eye implant: - flashlight eyes. People with flashlights for eyes can not see, but they will - provide an enormous amount of light to their friends.' - - rscadd: Valentines day will now randomly pair up crew members on dates. The paired - crewmembers will get an objective to protect each other at all costs. - Steelpoint: - - rscadd: Addition of two security DragNETs to Deltastations, Omegastations and - Metastations armouries. - Tofa01: - - rscadd: '[Delta] Removes space money from gold crate replaces with 3 Gold Bars - Gold Wrestling belt is still there.' - - rscadd: '[Delta] Removes space money from silver crate replaces with 5 Silver - Coins.' - - bugfix: Fixes incorrect placement of RD modular computer on Metastation. - WhiteHusky: - - rscadd: Fields are supported when printing with a modular computer - - rscadd: PRINTER_FONT is now a variable - - rscdel: Removed the [logo] tag on Modular computers as the logo no longer exists - - tweak: New lines on paper are parsed properly - - tweak: '[tab] is now four non-breaking spaces on papers' - - tweak: Papers have an additional proc, reload_fields, to allow fields made programmatically - to be used - - tweak: 'stripped_input stripped_multiline_input has a new argument: no_trim' - - bugfix: Modular computers no longer spew HTML when looking at a file, rather it - is unescaped like it should - - bugfix: Modular computers no longer show escaped HTML entities when editing - - bugfix: Modular computers can now propperly read and write from external media - - bugfix: Modular computers' file browser lists files correctly - - spellcheck: NTOS File Manager had a spelling mistake; Manage instead of Manager - coiax: - - bugfix: Engraved messages can no longer be moved by a gravitational singularity. - - tweak: The deadchat notification of randomly triggered events now uses the deadsay - span. - - rscdel: The wizard spell "Rod Form" does not produce a message in deadchat everytime - it is used. -2017-02-05: - Cyberboss: - - bugfix: Shuttle docking/round end shouldn't lag as much - - rscadd: There's a new round end sound! - Hyena: - - bugfix: The bible now contains 1 whiskey - Joan: - - rscadd: Ratvar-converted AIs become brass-colored, speak in Ratvarian, and cannot - be carded. - Kor: - - rscadd: Eyes are now organs. You can remove or implant them into peoples heads - with organ manipulation surgery. A mob without eyes will obviously have trouble - seeing. - - rscadd: All special eye powers are now tied to their respective organs. For example, - this means you can harvest an alien or shadow persons eyes, have them implanted, - and gain toggle-able night vision. - - rscadd: All cybernetic eye implants are now cybernetic eyes, meaning you must - replace the patients organic eyes. HUD implants are still just regular implants. - Lzimann: - - rscadd: Tesla zaps can now generate an energy ball if they zap a tesla generator! - Sweaterkittens: - - rscadd: The station's Plasmamen have been issued a new production of envirosuits. - The most notable change aside from small aesthetic differences is the addition - of an integrated helmet light. - - tweak: Tweaked a few of the Plasma Envirosuit sprites to be more fitting thematically. - Swindly: - - bugfix: Saline-glucose solution can no longer decrease blood volume - - rscadd: Cyborg hyposprays can now dispense saline-glucose solution - - rscadd: Saline-glucose solution now increases blood volume when it heals - coiax: - - bugfix: The mulligan reagent can now be created with 1u stable mutation toxin - + 1u unstable mutagen. - - rscdel: Tesla balls cannot dust people near grounding rods. - - rscadd: Soapstones/chisel/magic markers/chalk can remove messages for free. Removing - one of your own messages still grants a use. - - rscadd: The Janitor starts with a dull soapstone for removing unwanted messages. - xmikey555: - - tweak: The tesla engine no longer destroys energy ball generators. -2017-02-06: - Xhuis: - - rscadd: Traitor janitors can now order EZ-clean grenades for 6 telecrystals per - bundle. They function like normal cleaning grenades with an added "oh god my - face is melting" effect, and can also be found in surplus crates. -2017-02-07: - Cyberboss: - - bugfix: Wire, atmos, and disposal networks no longer work across hyperspace when - on the border of a shuttle - - bugfix: Implants that work on death will now work for simple_animals - - bugfix: The target moving while being implanted will no longer continue the implant - - bugfix: Implanters now show progress bars as they were intended to - - bugfix: Pipe painters are no longer aggressive - - bugfix: Carding the AI will now stop a doomsday device - - rscadd: The job subsystem now loads instantly. No more waiting to set your occupation - prefs! - - bugfix: The rare case of duping your inventory at roundstart has been fixed - - bugfix: Self deleting stackable items are fixed - Dannno: - - tweak: We've switched to a new brand of colored jumpsuit. - JJRcop: - - tweak: Adds 4% chance when assigning a valentines day date to also assign someone - else to the same date, but your date will still have you as their only date. - Poojawa: - - bugfix: '[Delta] Active turfs down from 300+' - - bugfix: '[Delta] Janitor closet isn''t 2.7K anymore' - - bugfix: '[Delta] Various pipe fixes' - RemieRichards: - - rscadd: Added a new checmial, Skewium, it's produced by mixing rotatium, plasma - and sulphuric acid in the ratio 2:2:1, which results in 5 Skewium. - Swindly: - - bugfix: Robotic eyes can no longer be eaten - Tofa01: - - bugfix: Fixes grammar issue when changing someones appearance via plastic surgery. - - tweak: '[OmegaStation] Allows Chaplain job to be selectable.' - - bugfix: '[Omega] Fixes Overpressurization In Mass Driver Room' - Xhuis: - - rscadd: Traitor clowns can now buy a reverse revolver. I'll leave it up to you - to guess what it does. Honk. - iamthedigitalme: - - imageadd: Legion has a new, animated sprite. - kevinz000: - - rscadd: 'ADMINS: SDQL2 has been given some new features!' - - bugfix: SDQL2 now gives you an exception on runtime instead of flooding server - runtime logs. - - rscadd: SDQL2 now supports usr, which makes that variable reference to whatever - mob you are in, src, which targets the object it is being called on itself, - and marked, which targets the datum marked by the admin calling it. Also, it - supports hex references (the hex number at the top of a VV panel) in {}s, so - you can target nearly anything! Also, global procs are supported by global.[procname](args), - for CALL queries. - - bugfix: SDQL2 can no longer edit /datum/admins or /datum/admin_rank, and is protected - from changing x/y/z of a turf and anything that would cause broken movement - for movable atoms. - - rscadd: SDQL2 can now get list input with [arg1, arg2]! - - experiment: Do '""' to put strings inside of SDQL2 or it won't work. -2017-02-09: - Cyberboss: - - bugfix: Certain firedoors that should have closed during an alarm now actually - close - - soundadd: You can now knock on firedoors - - bugfix: Supermatter in a closet/crate will now properly fee the singulo - - bugfix: Paper planes can be unfolded again - - bugfix: Paper planes can be stamped properly - Joan: - - tweak: Impaling someone with a sharp item by pulling them with a changeling Tentacle - now does significantly less damage and stuns for less time. - Jordie0608: - - rscadd: Admins can now filter watchlist entries to only users who are connected. - - tweak: Messages no longer delete themselves when sent. - Kor: - - rscadd: The limb grower has been replaced with a box of surplus limbs. Visit robotics - or harvest limbs from another person if you want quality. - Reeeeimstupid: - - rscadd: Silly Abductee objectives. Try not to go crazy trading life stories with - Lord Singulo. - Tofa01: - - tweak: Removes virology access to jobs including Medical Doctor, Geneticist and - Chemist. - - tweak: '[Delta] Changes NW supermatter filter to filter O2 instead of N2' - - rscadd: '[Delta] Adds wardrobes to Dorms & Arrivals Shuttle' - - rscadd: '[Delta] Adds access buttons to virology doors for extra security' - - rscadd: '[Delta] Adds bolt door button to all dorms' - - rscadd: '[Delta] Adds three pairs of optical meson scanners to supermatter room' - - rscadd: '[Delta] Adds a disk fridge to botany' - - rscadd: '[Delta] Adds a cake hat to the bar' - - bugfix: '[Delta] Fixes misplaced station intercom in Supermatter SMES room' - XDTM: - - rscadd: A Law Removal module can be build in RnD. It can remove a specified core - or freeform law. - - tweak: 'When stating laws, silicons won''t skip a number when hiding laws. (example: - 1. Law 1; 2. Law 2; 3. Law 4 if you choose not to state Law 3)' - Xhuis: - - rscadd: Artistic toolboxes now spawn in maintenance and possess various supplies - for wire art and crayon art. - - rscadd: Traitors can now obtain His Grace. Chaplains can buy it for 20 TC, or - it can be found in a surplus crate. - - rscadd: Soapstone messages can now be rated! Attack the message with your hand - to rate it positive or negative. Anyone can see the rating, and you cannot rate - a message more than once, even across rounds. - - rscdel: Soapstones no longer have a write time. - - tweak: Soapstones now have a fixed vocabulary to write messages with. - chanoc1: - - tweak: The salt and pepper shakers have new sprites. - coiax: - - rscadd: Added metal rods and floor tiles to Standard cyborgs. - - rscadd: Added a remote signaling device to Engineering cyborg. - - rscadd: Adds a 'Guardian of Balance' lawset and AI module, currently admin spawn - only. - uraniummeltdown: - - tweak: Kinetic Accelerator Cosmetic and Tracer Modkits now don't use mod capacity. - Cosmetic kits change the name of the KA. -2017-02-10: - Ausops: - - rscadd: Air tanks and plasma tanks have been resprited. - ChemicalRascal: - - tweak: Pen is able to wind up ruined tapes. - CoreOverload: - - rscadd: You can now emag the escape pods to launch them under any alert code. - - tweak: Shuttle name is no longer displayed on "Status" panel. Instead, you can - now examine a status screen to see it. - Cyberboss: - - bugfix: Simple animals now deathgasp properly again - - bugfix: Testmerged PRs will no longer duplicate in the list - - bugfix: Pods and shuttles now have air again - Joan: - - experiment: Clockwork Cults must always construct and activate the Ark. - - imageadd: Updates air tank inhands to match Ausops' new sprites. - Mekhi Anderson: - - rscadd: All mobs can now *spin! - - rscadd: Cyborgs now have handholds. This means you can ride around on them, but - if you get stunned or hit, you fall off! The cyborg can also throw you off by - spinning. - Tofa01: - - soundadd: Changes fire alarm to make new sound FireAlarm.ogg - Xhuis: - - rscdel: The Syndicate will no longer prank their operatives by including reverse - revolvers in surplus crates. - coiax: - - rscadd: A reverse revolver now comes in a box of hugs. - - rscadd: 'Added a new admin only event: Station-wide Human-level Intelligence. - Like the random animal intelligence event, but affecting as many animals as - there are ghosties.' - - rscadd: The Luxury Shuttle grabs cash in your wallet and backpack, and shares - approval between the entrance gates. - - rscadd: The NES Port shuttle now costs 500 credits. -2017-02-11: - Dannno: - - tweak: hahaha I switched your toolboxes you MORONS - Kor: - - rscadd: Killing bubblegum now unlocks a new shuttle for purchase. - Lzimann: - - tweak: Hardsuit built-in jetpacks no longer have a speed boost. - Pyko: - - bugfix: Fixed legit posters and map editing official/serial number for poster - decals. - Tofa01: - - bugfix: '[Delta] Fixes doors walls and windows being incorrectly placed due to - mapmerge issues.' - - bugfix: '[Box] Fixes access levels for HOP shutters.' -2017-02-12: - AnturK: - - rscadd: Added Poison Pen to uplink. - Drunk Musicians: - - rscadd: Drunk music - Gun Hog: - - rscadd: Nanotrasen Engineering has devised a construction console to assist with - building the Auxiliary Mining Base, usually located near a station's Arrivals - hallway. A breakthrough in bluespace technology, this console employs an advanced - internal Rapid Construction Device linked to a camera-assisted holocrane for - rapid, remote construction! - Lzimann: - - bugfix: MMIs/posibrains works with mechas again - RandomMarine: - - rscadd: The Russians have expanded to the shuttle business. A new escape shuttle - is available for purchase. - Sweaterkittens: - - tweak: Plasmamen burn damage multiplier reduced to 1.5x from 2x - coiax: - - rscdel: Removes the STV5 shuttle from purchase. - - rscadd: Swarmers no longer consume the deep fryer, since they have too much respect - for the potential fried foods it can produce. - - rscadd: The clown's survival/internals box is now a box of hugs. Dawww. -2017-02-13: - ChemicalRascal: - - tweak: Delta station brig cell chairs have been replaced with beds. One bed per - cell, no funny business. - Cyberboss: - - bugfix: Simple animals that are deleted when killed will now deathrattle - - bugfix: Fixed Alt-click stack duplication - Joan: - - imageadd: Updated the back and belt sprites for airtanks to match the new sprites. - Kor: - - rscadd: Mobile pAIs are now slower than humans. - Swindly: - - rscadd: Added Nuka Cola as a premium item in Robust Softdrinks - Tofa01: - - bugfix: '[Delta] Fixes double windoor on chemistry windows.' - - tweak: Lowered volume of fire alarm sound also makes it more quiet. - coiax: - - rscadd: Added an admin only tool, the life candle. Touch the candle, and when - you die, you'll respawn shortly afterwards. Touch it again to stop. Used for - testing, thunderdome brawls and good old fashioned memery. - - bugfix: Fried foods no longer shrink to miniature size. -2017-02-14: - Cyberboss: - - bugfix: Fixed unequipping items while stunned - - bugfix: Fixed various things deleting when unequipped - - bugfix: Fixed tablet ID slots deleting cards - - bugfix: Fixed water mister nozzle getting stuck in hands - - tweak: Title music now starts immediately upon login - - tweak: You can no longer sharpen energy weapons - Joan: - - tweak: Mania Motors are overall less effective and only affect people who can - see the motor. - - tweak: Mania Motors have slightly more health; 100, from 80. - MrStonedOne: - - tweak: Station time is now always visible in the status tab. - - tweak: Both server time and station time now displays seconds so you can actively - see how game time (ByondTime[tm]) is progressing along side real time. - - rscadd: Added a time dilation tracker, this allows you to better understand how - time will progress in game. It shows the time dilation percent for the last - minute as well as some rolling averages. - RandomMarine: - - tweak: Pre-made charcoal pills now contain 10 units instead of 50. The amount - of pills inside of toxin first aid kits and the smartfridge have been increased - to compensate. Keep in mind that each ten unit pill recovers 100 points of toxin - damage and purges 50 units of other reagents. - Steelpoint: - - tweak: All Drones now have a walking animation. - Tofa01: - - bugfix: '[Delta] Fixes space cleaner being empty in brig medbay' - - bugfix: '[Delta] Fixes some areas that are not radiation proof' - - bugfix: '[Meta] Fixes Atmospherics Freezer Spawning As A Heater' - uraniummeltdown: - - rscadd: Window Flashing is now a preference - - rscadd: Your game window will flash when alerted as a ghost. This includes being - revived by defibs/cloning and events such as borers, swarmers, revenant, etc. -2017-02-16: - Cyberboss: - - rscadd: Test merged PRs are now more detailed - Steelpoint: - - rscadd: The Head of Security's Hardsuit is now equipped with a inbuilt Jetpack. - coiax: - - rscadd: The Hyperfractal Gigashuttle is now purchasable for 100,000 credits. Help - Centcom by testing this very safe and efficient shuttle design. (Terms and conditions - apply.) - - rscadd: The changeling power "Anatomic Panacea" now causes the changeling to vomit - out zombie infections, along with headslugs and xeno infections, as before. - - bugfix: The main CTF laser gun disappears when dropped on the floor. -2017-02-17: - Arianya: - - tweak: The Labour Camp rivet wall has been removed! - - spellcheck: Fixed some typos in Prison Ofitser's description. - Cobby: - - experiment: Flashes have been rebalanced to be more powerful - Cyberboss: - - bugfix: Rack construction progress bars will no longer be spammed - - tweak: The round start timer will count down during subsystem initialization - - tweak: Total subsystem initialization time will now be displayed - Joan: - - rscdel: His Grace no longer globally announces when He is awakened or falls to - sleep. - - rscdel: His Grace is not a toolbox, even if He looks like one. - - experiment: His Grace no longer requires organs to awaken. - - tweak: His Grace now gains 4 force for each victim consumed, always provides stun - immunity, and will, generally, take longer to consume His owner. - - experiment: His Grace must be destroyed to free the bodies within Him. - - experiment: Dropping His Grace while He is awake will cause you to suffer His - Wrath until you hold Him again. - - rscadd: His Grace becomes highly aggressive after consuming His owner, and will - hunt His own prey. - - experiment: The Ark of the Clockwork Justicar now only costs 3 of each component - to summon, but must consume an additional 7 of each component before it will - activate and start counting down. - - rscadd: The presence of the Ark will be immediately announced, though the location - will still only be announced after it has been active and counting down for - 2 minutes. - - tweak: The Ark also requires an additional invoker to invoke. - Lobachevskiy: - - bugfix: Fixed glass shards affecting buckled and flying mobs - MrStonedOne: - - experiment: The game will now force hardware rendering on for all clients. - Nienhaus: - - rscadd: Drying racks have new sprites. - Swindly: - - rscadd: Trays can now be used to insert food into food processors - Thunder12345: - - bugfix: It's ACTUALLY possible to pat people on the head now - WJohn: - - imageadd: Improved blueshift sprites, courtesy of Nienhaus. - XDTM: - - rscadd: Bluespace Crystals are now a material that can be inserted in Protolathes - and Circuit Printers. Some items now require Bluespace Mesh. - - rscadd: Bluespace Crystal can now be ground in a reagent grinder to gain bluespace - dust. It has no uses, but it teleports people if splashed on them, and if ingested - it will occasionally cause teleportation. - coiax: - - rscadd: Engraved messages now have a UI, which any player, living or dead can - access. See when the message was engraved, and upvote or downvote accordingly. - - rscadd: Admins have additional options with the UI, seeing the player ckey, original - character name, and the ability to outright delete messages at the press of - a button. - kevinz000: - - bugfix: Flightsuits actually fly over people - - bugfix: Flightsuits don't interrupt pulls when you pass through doors -2017-02-18: - Cyberboss: - - imageadd: New round end animation. Inspired by @Iamgoofball - Gun Hog: - - rscadd: The Aux Base console now controls turrets made by the construction console. - - rscadd: The Aux Base may now be dropped at a random location if miners fail to - use the landing remote. - - rscadd: The mining shuttle may now dock at the Aux Base's spot once the base is - dropped. - - tweak: Removed access levels on the mining shuttle so it can be used at the public - dock. - - tweak: The Aux Base's turrets now fire through glass. Reminder that the turrets - need to be installed outside the base for full damage. - - rscadd: Added a base construction console to Delta Station. - Mysterious Basilman: - - rscadd: More powerful toolboxes are active in this world... - Scoop: - - tweak: Condimasters now correctly drop their items in front of their sprite. - Tofa01: - - bugfix: Re-Arranges And Extends Pubby Escape Hallway To Allow Larger Shuttle To - Dock - - bugfix: '[Meta] Fixes top left grounding rod from being destroyed by the Tesla - engine.' - TrustyGun: - - rscadd: Traitor mimes can now learn two new spells for 15 tc. - - rscadd: The first, Invisible Blockade, creates a 3x1 invisible wall. - - rscadd: The second, Finger Guns, allows them to shoot bullets out of their fingers. - kevinz000: - - rscadd: You can now ride piggyback on other human beings, as a human being! To - do so they must grab you aggressively and you must climb on without outside - assistance without being restrained or incapacitated in any manner. They must - also not be restrained or incapacitated in any manner. - - rscadd: If someone is riding on you and you want them to get off, disarm them - to instantly floor them for a few seconds! It's pretty rude, though. - rock: - - soundadd: you can now harmlessly slap somebody by aiming for the mouth on disarm - intent. - - soundadd: you can only slap somebody who is unarmed on help intent, restrained, - or ready to slap you. -2017-02-19: - Basilman: - - rscadd: some toolboxes, very rarely, have more than one latch - Joan: - - rscadd: You can now put components, and deposit components from slabs, directly - into the Ark of the Clockwork Justicar provided it actually requires components. - - experiment: Taunting Tirade now leaves a confusing and weakening trail instead - of confusing and weakening everyone in view. - - tweak: Invoking Inath-neq/Nzcrentr is now 33% cheaper and has a 33% lower cooldown. - Tofa01: - - rscdel: '[Delta] Removes SSU From Mining Equipment Room' - - tweak: Changes centcomm ferry to require centcomm general access instead of admin - permission. - coiax: - - rscadd: Nuke ops syndicate cyborgs have been split into two seperate uplink items. - Medical cyborgs now cost 35 TC, assault cyborgs now cost 65 TC. - grimreaperx15: - - tweak: Blood Cult Pylons will now rapidly regenerate any nearby cultists blood, - in addition to the normal healing they do. - ma44: - - tweak: Intercepted messages from a lavaland syndicate base reveals they have additional - grenade and other miscellaneous equipment. - uraniummeltdown: - - rscadd: Shuttle engines have new sprites. -2017-02-20: - Cyberboss: - - bugfix: The frequncy fire alarms play at is now consistent - MrStonedOne: - - tweak: bluespace ore cap changed from 100 ores to 500 - Tofa01: - - tweak: '[Meta] Replaces orange jumpsuit in holding cell with prisoner jumpsuits' - XDTM: - - tweak: Repairing someone else's robotic limb is instant. Repairing your own robotic - limbs will still take time. - - tweak: Repairing limbs with cable or welding will now heal more. - Xhuis: - - bugfix: Medipens are no longer reusable. -2017-02-21: - Cyberboss: - - bugfix: You can now unshunt as a malfunctioning AI again - Kor: - - bugfix: You will now retain your facing when getting pushed by another mob. - Tofa01: - - bugfix: '[Z2] Fixed Centcomm shutters to have proper access levels for inspectors - and other Admin given roles' - coiax: - - rscadd: Refactors heart attack code, a cardiac arrest will knock someone unconscious - and kill them very quickly. - - rscadd: Adds corazone, an anti-heart attack drug, made by mixing 2 parts Phenol, - 1 part Lithium. A person with corazone in their system will not suffer any negative - effects from missing a heart. Use it during surgery. - - rscadd: Abductor glands are now hearts, the abductor operation table now automatically - injects corazone to prevent deaths during surgery. The gland will restart if - it stops beating. - - bugfix: Cloning pods always know the name of the person they are cloning. - - rscadd: You can swipe a medical ID card to eject someone from the cloning pod - early. The cloning pod will announce this over the radio. - - rscdel: Fresh clones have no organs or limbs, they gain them during the cloning - process. Ejecting a clone too early is not recommended. Power loss will also - eject a clone as before. - - rscdel: An ejected clone will take damage from being at critical health very quickly - upon ejection, rather than before, where a clone could be stable in critical - for up to two minutes. - - rscadd: Occupants of cloning pods do not interact with the air outside the pod. - uraniummeltdown: - - bugfix: All shuttle engines should now be facing the right way -2017-02-22: - AnonymousNow: - - rscadd: Added Medical HUD Sunglasses. Not currently available on-station, unless - you can convince Centcom to send you a pair. - Cyberboss: - - bugfix: Spawning to the station should now be a less hitchy experience - MrPerson: - - experiment: 'Ion storms have several new additions:' - - rscadd: 25% chance to flatly replace the AI's core lawset with something random - in the config. Suddenly the AI is Corporate, deal w/ it. - - rscadd: 10% chance to delete one of the AI's core or supplied laws. Hope you treated - the AI well without its precious law 1 to protect your sorry ass. - - rscadd: 10% chance that, instead of adding a random law, it will instead replace - one of the AI's existing core or supplied laws with the ion law. Otherwise, - it adds the generated law as normal. There's still a 100% chance of getting - a generated ion law. - - rscadd: 10% chance afterwards to shuffle all the AI's laws. - TalkingCactus: - - bugfix: New characters will now have their backpack preference correctly set to - "Department Backpack". - Tofa01: - - bugfix: '[Delta] Fixes missing R&D shutter near public autolathe' - Xhuis: - - tweak: Highlanders can no longer hide behind chairs and plants. - - tweak: Highlanders no longer bleed and are no longer slowed down by damage. -2017-02-23: - Cyberboss: - - bugfix: Fixed a bug where the fire overlay wasn't getting removed from objects - - bugfix: The graphical delays with characters at roundstart are gone - - bugfix: The crew manifest is working again - - rscadd: Admins can now asay with ":p" and dsay with ":d" - Dannno: - - imageadd: Robust Softdrinks LLC. has sent out new vendies to the stendy. - Joan: - - rscdel: Off-station and carded AIs no longer prevent Judgement scripture from - unlocking. - Nienhaus: - - tweak: Updates ammo sprites to the new perspective. - Tofa01: - - bugfix: Disables sound/frequency variance on cryo tube alert sound - coiax: - - rscadd: Nanotrasen reminds its employees that they have ALWAYS been able to taste. - Anyone claiming that they've recently only just gained the ability to taste - are probably Syndicate agents. -2017-02-24: - MrStonedOne: - - rscdel: Limit on Mining Satchel of Holding Removed - - tweak: Dumping/mass pickup/mass transfer of items is now lag checked - - rscadd: Dumping/mass pickup/mass transfer of items has a progress bar -2017-02-25: - AnonymousNow: - - rscadd: Nerd Co. has sent pairs of thicker prescription glasses out to Nanotrasen - stations, for your local geek to wear. - Basilman: - - rscadd: New box sprites - Robustin: - - tweak: Hulks can no longer use pneumatic cannons or flamethrowers - Tofa01: - - rscadd: '[All Maps] The new and improved Centcom transportation ferry version - 2.0 is out now!' - coiax: - - rscadd: Cargo can now order plastic sheets to make plastic flaps. No doubt other - uses for plastic will be discovered in the future. - - rscadd: To deconstruct plastic flaps, unscrew from the floor, then cut apart with - wirecutters. Plastic flaps have examine tips like reinforced walls. - uraniummeltdown: - - rscadd: Science crates now have new sprites -2017-02-26: - Ausops: - - imageadd: New sprites for water, fuel and hydroponics tanks. - Joan: - - experiment: 'Clockwork objects are overall easier to deconstruct:' - - wip: Clockwork Walls now take 33% less time to slice through, Brass Windows now - work like non-reinforced windows, and Pinion Airlocks now have less health and - only two steps to decon(wrench, then crowbar). - - rscadd: EMPing Pinion Airlocks and Brass Windoors now has a high chance to open - them and will not shock or bolt them. - - rscadd: Anima fragments will very gradually self-repair. - Tofa01: - - bugfix: '[Omega] Fixes ORM input and output directions' - - bugfix: Fixes space bar kitchen freezer access level - - bugfix: Fixes giving IDs proper access for players who spawn on a ruin via a player - sleeper/spawners - - bugfix: '[Delta] Fixes varedited tiles causing tiles to appear as if they have - no texture' - - bugfix: Fixes robotic limb repair grammar issue -2017-02-27: - Kor, Jordie0608 and Tokiko1: - - rscadd: Singularity containment has been replaced on box, meta, and delta with - a supermatter room. The supermatter gives ample warning when melting down, so - hopefully we'll see fewer 15 minute rounds ended by a loose singularity. - - rscadd: Supermatter crystals now collapse into singularities when they fail, rather - than explode. - Tofa01: - - bugfix: Stops AI And Borgs From Interfacing With Ferry Console - TrustyGun: - - imageadd: Box sprites are improved. - WJohnston: - - imageadd: New and improved BRPED beam. The old one was hideous. - coiax: - - rscadd: Drone shells are now points of interest in the orbit list. - - rscadd: Derelict drone shells now spawn with appropriate headgear. -2017-02-28: - Cyberboss: - - tweak: You will no longer be shown empty memories when the game starts - - bugfix: Built APCs now work again - - bugfix: Borg AI cameras now work again - Joan: - - rscadd: Anima Fragments now slam into non-Servants when bumping. This will ONLY - happen if the fragment is not slowed, and slamming into someone will slightly - damage the fragment and slow it severely. - Lzimann: - - tweak: Communications console can also check the ID the user is wearing. - Supermichael777: - - tweak: The button now has a five second delay when detonating bombs - XDTM: - - rscadd: You can now change the input/output directons for Ore Redemption Machines - by using a multitool on them with the panel open. - - rscadd: Diagnostic HUDs can now see if airlocks are shocked. -2017-03-01: - Cyberboss: - - bugfix: Lobby music is no longer delayed -2017-03-02: - Gun Hog: - - tweak: Advanced camera, Slime Management, and Base Construction consoles may now - be operated by drones and cyborgs. - Robustin: - - rscadd: The syndicate power beacon will now announce the distance and direction - of any engines every 10 seconds. - Steelpoint: - - rscadd: Robotics and Mech Bay have seen a mapping overhaul on Boxstation. - - rscadd: A cautery surgical tool has been added to the Robotics surgical area on - Boxstation. - XDTM: - - tweak: Hallucinations have been modified to increase the creepiness factor and - reduce the boring factor. - - rscadd: Added some new hallucinations. - - bugfix: Fixed a bug where the singularity hallucination was stunning for longer - than intended and leaving the fake HUD crit icon permanently. - coiax: - - rscadd: Ghosts are polled if they want to play an alien larva that is about to - chestburst. They are also told who is the (un)lucky victim. - - bugfix: Clones no longer gasp for air while in cloning pods. - - rscadd: Adds a new reagent, "Mime's Bane", that prevents all emoting while it - is in a victim's system. Currently admin only. - - experiment: Mappers now have an easier time adding posters, and specifying whether - they're random, random official, random contraband or a specific poster. - - rscdel: Posters no longer have serial numbers when rolled up; their names are - visible instead. - kevinz000: - - rscadd: You can now craft pressure plates. - - rscadd: Pressure plates are hidden under the floor like smuggler satchels are, - but you can attach a signaller to them to have it signal when a mob passes over - them! - - experiment: Bomb armor is now effective in lessening the chance of being knocked - out by bombs. -2017-03-03: - Cyberboss: - - tweak: You can now repair shuttles in transit space - Incoming5643: - - imageadd: 'Server Owners: There is a new system for title screens accessible from - config/title_screen folder.' - - rscadd: This system allows for multiple rotating title screens as well as map - specific title screens. - - rscadd: It also allows for hosting title screens in formats other than DMI. - - rscadd: 'See the readme.txt in config/title_screen for full details. remove: The - previous method of title screen selection, the define TITLESCREEN, has been - depreciated by this change.' - Sligneris: - - imageadd: Updated sprites for the small xeno queen mode -2017-03-04: - Cyberboss: - - bugfix: You can build lattice in space again - Hyena: - - tweak: Detective revolver/ammo now starts in their shoulder holster - Joan: - - tweak: Weaker cult talismans take less time to imbue. - PJB3005: - - rscadd: Rebased to /vg/station lighting code. - Supermichael777: - - rscadd: Grey security uniforms have unique names and descriptions - Tofa01: - - rscadd: Adds the new Centcomm Raven Battlecruiser to the purchasable shuttle list - buy now get one free! - coiax: - - rscadd: CTF players start with their helmet toggled off, better to see the whites - of their opponents eyes. Very briefly. - - bugfix: Existing CTF barricades are repaired between rounds, and deploy instantly - when replaced. - - tweak: Healing non-critical CTF damage is faster. Remember though, if you drop - into crit, YOU DIE. - - rscadd: Admin ghosts can just click directly on the CTF controller to enable them, - in addition to using the Secrets panel. - - bugfix: Cyborg radios can no longer have their inaccessible wires pulsed by EMPs. -2017-03-06: - Cyberboss: - - experiment: Map rotation has been made smoother - Gun Hog: - - bugfix: The Aux Base Construction Console now directs to the correct Base Management - Console. - - bugfix: The missing Science Department access has been added to the Auxiliary - Base Management Console. - Hyena: - - rscdel: Space bar is out of bussiness - MrStonedOne: - - bugfix: patched a hacky workaround for /vg/lights memory leaking crashing the - server - Penguaro: - - bugfix: Changed DIR of Gas Filter for O2 in Waste Loop from 1 to 4 - Sligneris: - - imageadd: '''xeno queen'' AI hologram now actually uses the xeno queen sprite - as a reference' - Tofa01: - - bugfix: '[Omega] Fixes missing walls and wires new dock to the powergrid' - XDTM: - - rscadd: Changelings can now click their fake clothing to remove it, without needing - to drop the full disguise. - coiax: - - rscadd: The Bardrone and Barmaid are neutral, even in the face of reality altering - elder gods. -2017-03-07: - Supermichael777: - - rscadd: Wannabe ninjas have been found carrying an experimental chameleon belt. - The Spider clan has disavowed any involvement. -2017-03-08: - Cyberboss: - - imageadd: Added roundstart animation - - experiment: Roundstart should now be a smoother experience... again - - bugfix: You can now scan storage items with the forensic scanner - - bugfix: Unfolding paper planes no longer deletes them - - bugfix: Plastic no longer conducts electricity - - tweak: The map rotation message will only show if the map is actually changing - Francinum: - - bugfix: Holopads now require power. - Fun Police: - - tweak: Reject Adminhelp and IC Issue buttons have a cooldown. - Joan: - - rscadd: Circuit tiles now glow faintly. - - rscadd: Glowshrooms now have colored light. - - tweak: Tweaked the potency scaling for glowshroom/glowberry light; high-potency - plantss no longer light up a huge area, but are slightly brighter. - Kor: - - rscadd: People with mutant parts (cat ears) are no longer outright barred from - selecting command roles in their preferences, but will have their mutant parts - removed on spawning if they are selected for that role. - LanCartwright: - - rscadd: Adds scaling damage to buckshot. - Robustin: - - tweak: The DNA Vault has 2 new powers - - tweak: The DNA Vault requires super capacitors instead of quadratic - - tweak: Cargo's Vault Pack now includes DNA probes - Supermichael777: - - rscadd: Robust Soft Drinks LLC is proud to announce Premium canned air for select - markets. There is not an air shortage. Robust Soft Drinks has never engaged - in any form of profiteering. - TalkingCactus: - - rscadd: Energy swords (and other energy melee weapons) now have a colored light - effect when active. - Tofa01: - - bugfix: '[All Maps] Fixes syndicate shuttles spawning too close to stations by - moving their spawn further from the station' - - rscadd: '[Omegastation] This station now has a syndicate shuttle and syndicate - shuttle spawn.' - coiax: - - rscadd: Wizards now have a new spell "The Traps" in their spellbook. Summon an - array of temporary and permanent hazards for your foes, but don't fall into - your own trap(s)! - - rscadd: Permanent wizard traps can be triggered relatively safely by throwing - objects across the trap, or examining it at close range. The trap will then - be on cooldown for a minute. - - rscadd: Toy magic eightballs can now be found around the station in maintenance - and arcade machines. Ask your question aloud, and then shake for guidance. - - rscadd: Adds new Librarian traitor item, the Haunted Magic Eightball. Although - identical in appearance to the harmless toys, this occult device reaches into - the spirit world to find its answers. Be warned, that spirits are often capricious - or just little assholes. - - rscadd: You only have a headache looking at the supermatter if you're a human - without mesons. - - rscadd: The supermatter now speaks in a robotic fashion. - - rscadd: Admins have a "Rename Station Name" option, under Secrets. - - rscadd: A special admin station charter exists, that has unlimited uses and can - be used at any time. - - rscadd: Added glowsticks. Found in maintenance, emergency toolboxes and Party - Crates. - kevinz000: - - rscadd: The Syndicate reports a breakthrough in chameleon laser gun technology - that will disguise its projectiles to be just like the real thing! -2017-03-10: - Cyberboss: - - bugfix: You should no longer be seeing entities with `\improper` in front of their - name - - rscadd: The arrivals shuttle will now ferry new arrivals to the station. It will - not depart if any intelligent living being is on board. It will remain docked - if it is depressurized. - - tweak: You now late-join spawn buckled to arrivals shuttle chairs - - tweak: Ghost spawn points have been moved to the center of the station - - tweak: Departing shuttles will now try and shut their docking airlocks - - bugfix: The arrivals shuttle airlocks are now properly cycle-linked - - bugfix: You can now hear hyperspace sounds outside of shuttles - - experiment: The map loader is faster - - tweak: Lavaland will now load instantly when the game starts - Jordie0608: - - tweak: The Banning Panel now organises search results into pages of 15 each. - XDTM: - - bugfix: Slimes can now properly latch onto humans. - - bugfix: Slimes won't aggro neutral mobs anymore. This includes blood-spawned gold - slime mobs. - - rscadd: Clicking on a tile with another tile and a crowbar in hand directly replaces - the tile. - Xhuis: - - imageadd: Ratvar and Nar-Sie now have fancy colored lighting! - coiax: - - rscadd: Wizards can now use their magic to make ghosts visible to haunt the crew, - and possibly attempt to betray the wizard. - - rscadd: When someone dies, if their body is no longer present, the (F) link will - instead jump to the turf they previously occupied. - - bugfix: Stacks of materials will automatically merge together when created. You - may notice differences when ejecting metal, glass or using the cash machine - in the vault. - - rscadd: You can find green and red glowsticks in YouTool vending machines. - fludd12: - - bugfix: Modifying/deconstructing skateboards while riding them no longer nails - you to the sky. - lordpidey: - - rscadd: Glitter bombs have been added to arcade prizes. -2017-03-11: - AnturK: - - rscadd: Traitors now have access to radio jammers for 10 TC - Hyena: - - bugfix: fixes anti toxin pill naming - Joan: - - tweak: Window construction steps are slightly faster; normal windows now take - 6 seconds with standard tools, from 7 and reinforced windows now take 12 seconds - with standard tools, from 14. - - tweak: Brass windows take 8 seconds with standard tools, from 7. - - rscadd: Added Shadowshrooms as a glowshroom mutation. They do exactly what you'd - expect. - - rscdel: Removed His Grace ascension. - PKPenguin321: - - tweak: Cryoxadone's ability to heal cloneloss has been greatly reduced. - - rscadd: Clonexadone has been readded. It functions exactly like cryoxadone, but - only heals cloneloss, and at a decent rate. Brew it with 1 part cryoxadone, - 1 part sodium, and 5 units of plasma for a catalyst. - Penguaro: - - tweak: Adjusted table locations - - tweak: Moved chair and Cargo Tech start location - - tweak: Moved filing cabinet - - rscdel: Removed Stock Computer - Tofa01: - - bugfix: '[Meta] Fixes Supermatter Shutters Not Working' - coiax: - - rscadd: Swarmer lights are coloured cyan. - kevinz000: - - bugfix: Deadchat no longer has huge amount of F's. -2017-03-12: - JStheguy: - - imageadd: Changed Desert Eagle sprites, changed .50 AE magazine sprites, added - Desert Eagle magazine overlay to icons/obj/guns/projectile.dmi. - - tweak: The empty Desert Eagle sprite now only displays on an empty chamber. The - existence or lack thereof of the magazine is rendered using an overlay instead. - Lzimann: - - tweak: Braindead has a more intuitive message - coiax: - - rscdel: A cloner that is EMP'd will merely eject the clone early, rather than - gibbing it. Emagging the cloner will still gib the clone. -2017-03-13: - Cyberboss: - - tweak: You must now be on any intent EXCEPT help to weld an airlock shut - - rscadd: You can now repair airlocks with welding tools on help intent (broken - airlocks still need their wires mended though) - Cyberboss, Bgobandit, and Yogstation: - - rscadd: The HoP can now prioritze roles for late-joiners - Every coder, player, and admin in Space Station 13: - - rscadd: Adds the Tomb Of The Unknown Employee to Central Command, - - rscadd: Rest in peace, those who died after contributing to Space Station 13. - Hyena: - - bugfix: Surplus leg r/l name fixed - - bugfix: You can now carry honey in plant bags - Lordpidey: - - bugfix: Devils can no longer break into areas with sheer force of disco funk - - rscadd: The pitchfork of an ascended devil can now break down walls. - - rscadd: Hell has decided to at least clothe it's devils when sending them a brand - new body. - - rscadd: Pitchforks glow red now. - Penguaro: - - rscdel: '**Engineering** - Removed Tables, paper bin, and pen' - - rscadd: '**Engineering** - Replaced with Welder and Electrical Lockers' - - rscadd: '**Engineering** - Moved First-Aid Burn kit to Engineering Foyer' - - tweak: '**Chapel** - Replaced one Window with Win-Door for Coffin Storage' - Space Bicycle Consortium: - - bugfix: Bicycles now only cost 10,000 yen, down from 1,000,000 yen. - coiax: - - rscadd: The egg spawner on Metastation will generate a station message and inform - the admins if an egg is spawned. (It's only a two percent chance, but live in - hope.) - - rscadd: Glowsticks can now be found in "Swarmer Cyan" colors. -2017-03-14: - Joan: - - rscadd: Shuttles now have dynamic lighting; you can remove the lights on them - and use your own lights. - - tweak: All maps now use Deltastation's fancy syndicate shuttle. - - tweak: Shadowshrooms of lower potency are much less able to blanket the station - in darkness. - PKPenguin321: - - tweak: Lattices now require wirecutters to deconstruct, rather than welding tools. -2017-03-15: - Cyberboss: - - bugfix: You can no longer depart on the arrivals shuttle by hiding inside things - Joan: - - tweak: Proselytizers converting clockwork floors to walls now always take 10 seconds, - regardless of how fast the proselytizer is. - - tweak: Clockwork grilles no longer provide CV. - Penguaro: - - bugfix: '**Engineering** - Changed Access Level from **24** (_Atmo_) to **10** - (_Engine_) on **Radiation Shutter Control**' - TrustyGun: - - tweak: Traitor Mimes with the finger guns spell now fire 3 bullets at a time, - as opposed to just 1. - octareenroon91: - - rscadd: Allow new reflector frames to be built from metal sheets. - oranges: - - rscdel: Removed patting -2017-03-16: - BASILMAN YOUR MAIN MAN: - - rscadd: The BM Speedwagon has been improved both in terms of aesthetics and performance! - Cyberboss: - - bugfix: The shield generators in Boxstation Xenobiology now have the correct access - Joan: - - rscadd: Cult structures that emitted light now have colored light. - MrPerson: - - rscadd: Humans can see in darkness slightly again. This is only so you can see - where you are when the lights go out. - MrStonedOne: - - bugfix: Fixed lighting not updating when a opaque object was deleted - Penguaro: - - tweak: Increased Synchronization Range on Exosuit Fabricator - Tofa01: - - bugfix: '[Delta] Fixes telecoms temperature and gas mixing / being contaminated.' - - bugfix: '[Delta] Fixes some doubled up turfs causing items and objects to get - stuck to stuff' - - tweak: '[Omega] Makes telecoms room cool down and be cold.' - Tokiko1: - - rscadd: Most gases now have unique effects when surrounding the supermatter crystal. - - tweak: The supermatter crystal can now take damage from too much energy and too - much gas. - - rscadd: Added a dangerous overcharged state to the supermatter crystal. - - rscadd: Readded explosion delaminations, a new tesla delamination and allowed - the singulo delamination to absorb the supermatter. - - tweak: The type of delamination now depends on the state of the supermatter crystal. - - tweak: Various supermatter engine rebalancing and fixes. - kevinz000: - - rscadd: SDQL2 now supports outputting proccalls to variables, and associative - lists - peoplearestrange: - - bugfix: Fixed buildmodes full tile window to be correct path - rock: - - tweak: if we can have glowsticks in toolvends why not flashlights amirite guys -2017-03-17: - BeeSting12: - - bugfix: Moved Metastation's deep fryer so that the chef can walk all the way around - the table. - Cobby: - - tweak: The gulag mineral ratio has been tweaked so there are PLENTY of iron ore, - nice bits of silver/plasma, with the negative of having less really high valued - ores. If you need minerals, it may be a good time to ask the warden now! - Joan: - - rscadd: You can now place lights and most wall objects on shuttles. - Xhuis: - - rscadd: Added the power flow control console, which allows remote manipulation - of most APCs on the z-level. You can find them in the Chief Engineer's office - on all maps. -2017-03-18: - Supermichael777: - - rscadd: Free golems can now buy new ids for 250 points. - XDTM: - - rscadd: You can now complete a golem shell with runed metal, if you somehow manage - to get both. - - rscadd: Runic golems don't have passive bonuses over golems, but they have some - special abilities. - coiax: - - bugfix: The alert level is no longer lowered by a nuke's detonation. -2017-03-19: - BeeSting12: - - rscadd: Nanotrasen has decided to better equip the box-class emergency shuttles - with a recharger on a table in the cockpit. - Cheridan: - - tweak: The slime created by a pyroclastic anomaly detonating is now adult and - player-controlled! Reminder that if you see an anomaly alert, you should grab - an analyzer and head to the announced location to scan it, and then signal the - given frequency on a signaller! - Penguaro: - - bugfix: change access variables for turrets and shield gens - - bugfix: Box Station - Replaces the smiling table grilles with their more serious - counterparts. - coiax: - - tweak: The Syndicate lavaland base now has a single self destruct bomb located - next to the Communications Room. Guaranteed destruction of the base is guaranteed - by payloads embedded in the walls. - octareenroon91: - - bugfix: Fixes infinite vaping bug. - uraniummeltdown: - - rscadd: Plant data disks have new sprites. - - bugfix: Fixed Monkey Recycler board not showing in Circuit Imprinter - - tweak: Kinetic Accelerator Range Mod now takes up 25% space instead of 24% -2017-03-21: - ExcessiveUseOfCobblestone: - - experiment: All core traits [Hydroponics] scale with the parts in the gene machine. - Time to beg Duke's Guide Read.... I mean RND! - - tweak: Data disks with genes on them will have just the name of the gene instead - of the prefix "plant data disk". - - tweak: If you were unaware, you can rename these disks with a pen. Now, you can - also change the description if you felt inclined to. - Joan: - - experiment: Caches produce components every 70 seconds, from every 90, but each - other linked, component-producing cache slows down cache generation by 10 seconds. - Lombardo2: - - rscadd: The tentacle changeling mutation now changes the arm appearance when activated. - MrPerson: - - bugfix: Everyone's eyes aren't white anymore. - Penguaro: - - tweak: Box Station - The Vents and Scrubbers for the Supermatter Air Alarm are - now isolated from the rest of the Air Alarms in Engineering. - Supermichael777: - - bugfix: Chasms now smooth properly. - Tokiko1: - - tweak: Minor supermatter balancing changes. - - tweak: Supermatter now announces its damage half as frequently. - - tweak: Badly unstable supermatter now occasionally zaps nearby engineers and causes - anomalies to appear nearby, similar to overcharged supermatter. - XDTM: - - rscadd: Golem Shells can now be completed with medical gauze or cloth to form - cloth golems, which are weaker and extremely flammable. However, if they die, - they turn into a pile of cloth that will eventually re-animate back into full - health. That is, unless someone lights it on fire. -2017-03-22: - BeeSting12: - - rscadd: Added an autolathe circuit board to deltastation's tech storage. - - rscadd: Added 49 sheets of metal to deltastation's auxiliary tool storage. - Iamgoofball: - - bugfix: Freon no longer bypasses atmos hardsuits. - Penguaro: - - rscadd: Meta - Added Tool Belts to Engineering and Engineering Foyer - - rscdel: Meta - Removed Coffee Machine from Permabrig - - rscadd: Added Cameras for Supermatter Chamber (to view rad collectors and crystal) - - tweak: Adjusted Engine Camera Names for Station Consistency - - bugfix: Adjusted Monitor Names / Networks to view the Engine Cameras - coiax: - - rscadd: APCs now glow faintly with their charging lights. So red is not charging, - blue is charging, green is full. Emagged APCs are also blue. Broken APCs do - not emit light. - - rscadd: Alien glowing resin now glows. -2017-03-23: - Joan: - - tweak: Clock cults always have to summon Ratvar, but that always involves a proselytization - burst. - - rscdel: The proselytization burst will no longer convert heretics, leaving Ratvar - free to chase them down. - - spellcheck: Places that referred to the Ark of the Clockwork Justicar as the "Gateway - to the Celestial Derelict" have been corrected to always refer to the Ark. - Penguaro: - - bugfix: Wizard Ship - Bolts that floating light to the wall. - XDTM: - - rscadd: Medical Gauze now stacks up to 12 - - bugfix: Pressure plates are now craftable. - bgobandit: - - tweak: Alt-clicking a command headset toggles HIGH VOLUME mode. - coiax: - - bugfix: A dead AI no longer counts as an "unconverted AI" for clockcult. -2017-03-24: - BeeSting12: - - bugfix: Auxiliary base maintenance airlock now requires the proper access. Sorry - greyshirts, no loot for you! - Cyberboss: - - tweak: The recycler's base reclaim rate has been buffed from 1% to 50%. Manipulator - upgrades now give +12.5% per level instead of +25% - - bugfix: You can now successfully remove a pen from a PDA while it's in a container - Fox McCloud: - - rscadd: Modular receiver removed from the protolathe to autolathe - - tweak: Modular receiver cost is now 15,000 metal - Joan: - - bugfix: Fixes structures being unable to go through spatial gateways. - - tweak: Blazing Oil blobs take 33% less damage from water. - Penguaro: - - rscadd: '[Meta] Replaced Power Monitoring Console in Engineering with Modular - Engineering Console' - - rscadd: '[Pubby] Replaced Power Monitoring Console in Engineering with Modular - Engineering Console' - - rscadd: '[Omega] Replaced Power Monitoring Console in Engineering with Modular - Engineering Console' - - rscadd: '[Omega] Added RD and Command Modular Consoles to Bridge' - - rscadd: '[Delta] Replaced Power Monitoring Console in Engineering with Modular - Engineering Console' - - rscadd: '[Delta] Replaced duplicate Atmospherics Monitoring Console in Atmo with - Modular Engineering Console' - coiax: - - rscadd: Destroying a lich's body does not destroy the lich permanently, provided - the phylactery is intact. - - rscadd: A lich will respawn three minutes after its death, provided the phylactery - is intact. - - rscadd: The Soul Bind spell is forgotten after cast, respawn is now automatic. - - rscdel: Stationloving objects like the nuke disk are not valid objects for a phylactery. - - rscadd: Explosive implants can always be triggered via action button, even if - unconscious. - rock: - - tweak: lizards are hurt slightly more by cold but less by heat. this does not - mean they are more resistant to being lasered, fortunately. -2017-03-26: - BeeSting12: - - spellcheck: The bar shuttle's buckable bar stools are now buckleable bar stools. - Gun Hog and Shadowlight213: - - rscadd: The AI may now deploy to cyborgs prepared as AI shells. The module to - do this may be research in the exosuit fabricator. Simply slot the module into - a completed cyborg frame as with an MMI, or into a playerless (with no ckey) - cyborg. - - rscadd: AI shells and AIs controlling a shell can be determined through the Diagnostic - HUD. - - rscadd: AIs can deploy to a shell using the new action buttons or by simply clicking - on it. - - experiment: An AI shell will always have the laws of its controlling AI. - Penguaro: - - rscadd: Brig - Added Air Alarm - - rscdel: Engineering - Removed Brig Shutter - - tweak: Omega, Meta, & Delta Stations - The Vents and Scrubbers for the Supermatter - Air Alarm are now isolated from the rest of the Air Alarms in Engineering. - Qbopper: - - spellcheck: Drones are now given OOC guidelines to follow as well as their IC - lawset. - Robustin: - - rscadd: Added the prototype canister with expanded volume, valve pressure, and - access/timer features - TrustyGun: - - bugfix: Deconstructing display cases and coffins now drop the correct amount of - wood. - XDTM: - - tweak: Some golems now spawn with more thematic names. - - tweak: Adamantine Golems are no longer numbered, but receive a random golem name. - - bugfix: Airlocks properly remove the shock overlay when a temporary shock runs - out. - coiax: - - bugfix: Teams playing CTF have their own radio channels, rather than using the - Centcom and Syndicate channels. - - bugfix: Actually actually makes CTF barricades repair between rounds. - - bugfix: Blue CTF lasers have little blue effects when they hit things, rather - than red effects. -2017-03-28: - Supermichael777: - - rscadd: Backup operatives now get the nukes code. - XDTM: - - bugfix: Wooden tiles can now be quick-replaced with a screwdriver instead of a - crowbar, preserving the floor tile. - octareenroon91: - - bugfix: Bonfires that have a metal rod added should buckle instead of runtiming. -2017-03-29: - BeeSting12: - - rscadd: Adds emergency launch console to the backup emergency shuttle. - Joan: - - rscdel: Putting sec armour and a helmet on a corgi no longer makes the corgi immune - to item attacks. - - rscadd: All items with armour will now grant corgis actual armour. - Kevinz000: - - rscadd: High-powered floodlights may be constructed with 5 sheets of metal, a - wrench, a screwdriver, 5 cable coils, and a light tube. They require a powernet - connection via direct wire node. - coiax: - - bugfix: All tophats, rather than just the ones in maintenance, hurt a tiny bit - if you throw them at people. - - bugfix: Supermatter anomalies are more shortlived than regular anomalies, as intended. -2017-03-30: - coiax: - - rscadd: Autoimplanters have been renamed to autosurgeons. Currently only the CMO - and nuclear operatives have access to autosurgeons. What is the CMO hiding? - - bugfix: All upgraded organs for purchase by nuclear operatives now actually come - in an autosurgeon, for speed of surgery. -2017-03-31: - Cobby: - - tweak: Shot glasses are now more ambiguous [EASIER TO MAINTAIN] - Cyberboss: - - bugfix: Temperature changes will now properly cause atmospherics simulation to - activate - - bugfix: The command report for random xeno eggs will now be delivered along with - the rest of the roundstart reports - - bugfix: Drones can no longer be irradiated -2017-04-01: - Cyberboss: - - bugfix: The contents of the shelterpod smart fridge work again - XDTM: - - bugfix: Facehuggers no longer rip masks from people protected by helmets. -2017-04-02: - BeeSting12: - - bugfix: Metastation's northeast radiation collector is now connected to the grid. - Nanotrasen would like to apologize for any inconvenience caused to engineers, - but copper is expensive. - - rscadd: Boxstation's HoP office now has a PDA tech. - Cyberboss: - - tweak: Firedoors no longer operate automatically without power - - bugfix: Blood and other decals will no longer remain on turfs they shouldn't - - bugfix: The splashscreen is working again - - bugfix: False alarms are now guaranteed to actually announce something - Incoming5643: - - rscadd: Lighting visuals have been changed slightly to reduce it's cost to the - client. If you had trouble running the new lighting, it might run a little better - now. - MMMiracles (CereStation): - - rscadd: Added a patrol path for bots, includes 2 round-start securitrons placed - on opposite sites of station. - - wip: Due to map size, mulebots are still somewhat unreliable on longer distances. - Disposals are still advised, but mule bots are now technically an option for - delivery. - - rscadd: Added multiple status displays, extinguishers, and appropriate newscasters - to hallways. - - rscadd: A drone dispenser is now located underneath Engineering in maintenance. - - rscadd: Each security checkpoint now has a disposal chute that directs to a waiting - cell in the Brig for rapid processing of criminals. Why run half-way across - the station with some petty thief when you can just shove him in the criminal - chute and have the warden deal with him? - - tweak: Security's mail chute no longer leads into the armory. This was probably - not the best idea in hindsight. - - tweak: Virology has a bathroom now. - - tweak: Genetics monkey pen is a bit more green now. - - bugfix: Lawyer now has access the brig cells so he can complain more effectively. - - bugfix: Xenobio kill chamber is now in range of a camera. - - bugfix: Removed rogue bits of Vault area. - - bugfix: Medbay escape pod no longer juts out far enough to block the disposal's - path. - - bugfix: Captain's spare ID is now real and not just a gold ID card. - Penguaro: - - tweak: '[Meta] The Chapel Security Hatches were very intimidating. They have been - changed to more inviting glass doors.' - - bugfix: '[Meta] The maintenance tunnels in the Xeno Lab now have radiation shielding. - The Slime Euthanization Chamber will not have radiation shielding at this time - as dead slimes will not mind radiation.' - coiax: - - rscadd: Adds seperate languages to the game. Now Ratvarian, Drone, Machine, Swarmer, - Human (now called Galactic Common), Slime and Monkey are separate languages. - Each languages has its own comma prefix, for example, Galcom has the ,0 prefix, - while Ratvarian has the ,r prefix. If you don't understand a language when it - is spoken to you, you will hear a scrambled version that will vary depending - on the language that you're not understanding. - - experiment: This does not change who can understand what. - - rscdel: Removed the talk wheel feature. - - rscadd: Clicking the speech bubble icon now opens the Language Menu, allowing - you to review which languages you speak, their keys, and letting you set which - language you speak by default. Admins have additional abilities to add and remove - languages from mobs using this menu. - ktccd: - - bugfix: Ninja suits have received a new software update, making them able to **actually - steal tech levels** from R&D consoles and servers, thus avoid being forced to - honourably kill themselves for failing their objective. -2017-04-05: - Cyberboss: - - bugfix: Cardboard boxes and bodybags can no longer be anchored - Penguaro: - - rscadd: '[Box] A fire alarm has been added to the Lawyer''s office.' - - rscadd: '[Box] Adds access for Scientists to Starboard Maintenance Areas outside - of Toxins.' - - tweak: '[Box] Adjusted Science doors to more logical access codes.' - QV: - - bugfix: Fixed taking max suffocation damage whenever oxygen was slightly low - RemieRichards: - - bugfix: Using TK on the supermatter will burn your head off violently, don't do - this. - - rscadd: 'Examining clothing with pockets will now give information about the pockets: - number of slots, how it is interacted with (backpack, etc.), if it has quickdraw - (Alt-Click) support and whether or not it is silent to interact with.' - coiax: - - bugfix: Emergency shuttles will now forget early launch authorizations if they - cannot launch due to a hostile environment. -2017-04-07: - Qbopper: - - bugfix: Secure lockers will no longer have multiple lines about being broken. -2017-04-19: - QualityVan: - - bugfix: Improved stethoscopes - Thunder12345: - - bugfix: You can no longer extract negative sheets from the ORM - XDTM: - - bugfix: APCs hacked by a malfunctioning AI are no longer immune to alien attacks. - - bugfix: Fixed bug where flashlight eyes weren't emitting light. -======= DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. --- 2015-04-04: @@ -23972,5 +13457,4 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - bugfix: Thermite no longer removes existing overlays on turfs 2017-10-28: Mark9013100: - - tweak: The Medical Cloning manual has been updated. ->>>>>>> b37e85c... Merge pull request #32217 from praisenarsie/patch-5 + - tweak: The Medical Cloning manual has been updated. diff --git a/html/changelogs/AutoChangeLog-pr-2583.yml b/html/changelogs/AutoChangeLog-pr-2583.yml deleted file mode 100644 index fff14dec8e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2583.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Firing most guns will now cause your screen to shake subtly." - - rscadd: "Being hit by melee weapons with a force over 10 will now cause subtle screenshake" - - rscadd: "Hitting someone with a melee weapon with a force over 10 will now cause subtle screenshake" - - rscadd: "Hitting an object with a melee weapon with a force over 20 will now cause subtle screenshake" - - rscadd: "Added two options to the Game Settings menu: Screen Shake and Damage Screen Shake. Screen Shake controls (most) screenshake in the game, and allows you to set the percentage of screenshake from most sources, or simply turn it off entirely. Damage Screen Shake controls the screenshake when you get hit by weapons, and has three settings, on, off, and only when down. The defaults are 100%, and only when down, respectively." diff --git a/html/changelogs/AutoChangeLog-pr-2603.yml b/html/changelogs/AutoChangeLog-pr-2603.yml deleted file mode 100644 index 447c9cd78a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2603.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Ported Crew Objectives from Goon, featuring objectives from both Goon and old Hippie." - - rscadd: "Ported Miscreants from Goon. They will appear based on the server's configuration." diff --git a/html/changelogs/AutoChangeLog-pr-2907.yml b/html/changelogs/AutoChangeLog-pr-2907.yml deleted file mode 100644 index 352432595c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2907.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "Toriate" -delete-after: True -changes: - - rscadd: "Adds Spinfusors, ordered from cargo, security locked crate" - - rscadd: "Adds the X9 Assault Rifle, adminspawn only" - - rscadd: "Adds the Magpistol, made in science, non-lethal by default, unlocked slightly later than the AEG" - - rscadd: "Adds the Foam Force Magpistol and Magfoam, made in autolathes" - - soundadd: "adds the Magpistol's firing sound" diff --git a/html/changelogs/AutoChangeLog-pr-2909.yml b/html/changelogs/AutoChangeLog-pr-2909.yml deleted file mode 100644 index 65e957021b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2909.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - tweak: "Flightsuits require power cells now to function" - - tweak: "Flightsuit HUDs reduced to AI standards rather than full advanced." - - tweak: "Suits will heavily drain while in gravity, but not much without it." - - tweak: "Swap batteries via clicking on your suit with one." diff --git a/html/changelogs/AutoChangeLog-pr-2918.yml b/html/changelogs/AutoChangeLog-pr-2918.yml deleted file mode 100644 index 3f67bc015e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2918.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "JJRcop" -delete-after: True -changes: - - rscadd: "Suiciding with a ballistic gun now actually blows your brain out." diff --git a/html/changelogs/AutoChangeLog-pr-2922.yml b/html/changelogs/AutoChangeLog-pr-2922.yml deleted file mode 100644 index f46c3136a6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2922.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Daniel0Mclovin" -delete-after: True -changes: - - rscadd: "Podpeople to roundstart" - - tweak: "Modified podpeople heatmod from 1.25 to 1.5" - - tweak: "plant-b-gone now does roughly 7 damage per tick on podpeople" diff --git a/html/changelogs/AutoChangeLog-pr-2923.yml b/html/changelogs/AutoChangeLog-pr-2923.yml deleted file mode 100644 index 6ab464e82c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2923.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Improvedname" -delete-after: True -changes: - - tweak: "You can now rename holy weapons" diff --git a/html/changelogs/AutoChangeLog-pr-2929.yml b/html/changelogs/AutoChangeLog-pr-2929.yml deleted file mode 100644 index 884f951047..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2929.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "More Robust Than You" -delete-after: True -changes: - - rscadd: "Implant Chairs now also support organs" diff --git a/html/changelogs/AutoChangeLog-pr-2938.yml b/html/changelogs/AutoChangeLog-pr-2938.yml deleted file mode 100644 index 36a1129534..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2938.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Arianya" -delete-after: True -changes: - - balance: "Lesser ash drakes no longer drop ash drake hide when butchered." diff --git a/html/changelogs/AutoChangeLog-pr-2939.yml b/html/changelogs/AutoChangeLog-pr-2939.yml deleted file mode 100644 index 74e3dbb015..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2939.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Pubby" -delete-after: True -changes: - - rscadd: "Bluespace pipes to atmospherics, which create a single pipenet with all bluespace pipes in existence." diff --git a/html/changelogs/AutoChangeLog-pr-2940.yml b/html/changelogs/AutoChangeLog-pr-2940.yml deleted file mode 100644 index 4dc6c53428..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2940.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - bugfix: "You now have to be holding a weapon to affix a suppressor to it." - - balance: "Attaching a suppressor to a weapon will now make it slightly larger, as is logical." diff --git a/html/changelogs/AutoChangeLog-pr-2942.yml b/html/changelogs/AutoChangeLog-pr-2942.yml deleted file mode 100644 index eccae81d90..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2942.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Fixed jump boots breaking if used when you can't jump, such as when inside a sleeper." diff --git a/html/changelogs/AutoChangeLog-pr-2947.yml b/html/changelogs/AutoChangeLog-pr-2947.yml deleted file mode 100644 index d7aa9b5576..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2947.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Improvedname" -delete-after: True -changes: - - rscadd: "Adds racial equality to color burgers" diff --git a/html/changelogs/AutoChangeLog-pr-2950.yml b/html/changelogs/AutoChangeLog-pr-2950.yml deleted file mode 100644 index 1f92915cca..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2950.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xhuis" -delete-after: True -changes: - - experiment: "Clockcult has received a very large overhaul." diff --git a/html/changelogs/AutoChangeLog-pr-2953.yml b/html/changelogs/AutoChangeLog-pr-2953.yml deleted file mode 100644 index db1399b5b0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2953.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Syndicate MMIs will now properly transfer their laws to newly-constructed AIs" diff --git a/html/changelogs/AutoChangeLog-pr-2956.yml b/html/changelogs/AutoChangeLog-pr-2956.yml deleted file mode 100644 index 4ec2f2aaa0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2956.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "GLA Coding" -delete-after: True -changes: - - tweak: "Cells must now be installed in mechs when being constructed, this step is always before the application of internal armor." - - bugfix: "Combat mechs now get stats upgrades from their scanning modules and capacitors" diff --git a/html/changelogs/AutoChangeLog-pr-2958.yml b/html/changelogs/AutoChangeLog-pr-2958.yml deleted file mode 100644 index c02b758502..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2958.yml +++ /dev/null @@ -1,15 +0,0 @@ -author: "Toriate" -delete-after: True -changes: - - rscadd: "Adds Magrifles, RnD" - - rscadd: "Adds Modular Pistols, reskinnable stetchkins available only in a bundle" - - rscadd: "Adds Bundle category for regular traitor uplink" - - rscadd: "Adds Flechette Launcher, nukeop exclusive, unique variant available in bundle" - - rscadd: "Adds 10mm Soporific rounds" - - rscadd: "adds Foam X9 assault rifle, adminspawn" - - bugfix: "Anti Tank Pistol no longer refundable" - - wip: "Adds Hyper-Burst Rifle, adminspawn only weapon, intended for nukeops" - - soundadd: "added Magrifle sounds" - - soundadd: "added Hyper-Burst Rifle sounds" - - imageadd: "added 6 alternative sprites for 10mm pistols, includes suppressed sprites" - - spellcheck: "Anti Tank Pistol description fixed" diff --git a/html/changelogs/AutoChangeLog-pr-2960.yml b/html/changelogs/AutoChangeLog-pr-2960.yml deleted file mode 100644 index 905ec4764f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2960.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Robustin" -delete-after: True -changes: - - tweak: "Revheads no longer spawn with chameleon glasses or a spraycan, instead they will start with a cybernetic security HUD implanted into their eyes." diff --git a/html/changelogs/AutoChangeLog-pr-2963.yml b/html/changelogs/AutoChangeLog-pr-2963.yml deleted file mode 100644 index 056e7a17fc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2963.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - tweak: "The mining vendor will now provide more verbose feedback about your interactions." diff --git a/html/changelogs/AutoChangeLog-pr-2965.yml b/html/changelogs/AutoChangeLog-pr-2965.yml deleted file mode 100644 index 98ec6c9b83..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2965.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - tweak: "Wizard cannot cast spoken or whispered spells while mute" diff --git a/html/changelogs/AutoChangeLog-pr-2966.yml b/html/changelogs/AutoChangeLog-pr-2966.yml deleted file mode 100644 index 3570d4a852..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2966.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "RandomMarine" -delete-after: True -changes: - - imageadd: "Air tanks (o2+n2) now have a different appearance from oxygen tanks." diff --git a/html/changelogs/AutoChangeLog-pr-2968.yml b/html/changelogs/AutoChangeLog-pr-2968.yml deleted file mode 100644 index 8ece28e6e9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2968.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Augustfox" -delete-after: True -changes: - - tweak: "Reordered hair in a semi-alphabetized list for easier use in character creation." - - tweak: "Alphabetized facial hair for easier use in character creation." diff --git a/html/changelogs/AutoChangeLog-pr-2972.yml b/html/changelogs/AutoChangeLog-pr-2972.yml deleted file mode 100644 index 9f1e5aa596..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2972.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Xhuis" -delete-after: True -changes: - - rscadd: "Ian has recently communed with unspeakable horrors and may now be warped by their power if Nar-Sie passes near them." - - rscadd: "In order to fight back against their ancient foe Ian, Poly has struck a bargain with Ratvar and will be transformed into a machine by their presence." diff --git a/html/changelogs/AutoChangeLog-pr-2979.yml b/html/changelogs/AutoChangeLog-pr-2979.yml deleted file mode 100644 index 00ac0a8d08..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2979.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "XDTM" -delete-after: True -changes: - - rscadd: "Nurse spiders can now set a directive that will be seen by their spiderlings, when they get controlled by a player." - - rscadd: "Spiders' actions are now action buttons instead of verbs." - - rscadd: "Wrapping stuff in a cocoon is now a targeted action!" diff --git a/html/changelogs/AutoChangeLog-pr-2985.yml b/html/changelogs/AutoChangeLog-pr-2985.yml deleted file mode 100644 index 1a5d0fb559..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2985.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - rscadd: "The syndicate have recently begun sending agents to extract vital research information from Nanotrasen." diff --git a/html/changelogs/AutoChangeLog-pr-2996.yml b/html/changelogs/AutoChangeLog-pr-2996.yml deleted file mode 100644 index 2ab98f3845..0000000000 --- a/html/changelogs/AutoChangeLog-pr-2996.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - spellcheck: "You can now find out if an item uses alt-clicking by examining it." diff --git a/html/changelogs/AutoChangeLog-pr-3024.yml b/html/changelogs/AutoChangeLog-pr-3024.yml deleted file mode 100644 index cb263b6ffe..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3024.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - rscadd: "Paperwork now uses Markdown instead of BBCode, see the writing help for changes." diff --git a/html/changelogs/AutoChangeLog-pr-3028.yml b/html/changelogs/AutoChangeLog-pr-3028.yml deleted file mode 100644 index c0892a94d1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3028.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Raeschen" -delete-after: True -changes: - - tweak: "Changed MIN_AGE to 18" diff --git a/html/changelogs/AutoChangeLog-pr-3031.yml b/html/changelogs/AutoChangeLog-pr-3031.yml deleted file mode 100644 index 1ea08d2f95..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3031.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Antur" -delete-after: True -changes: - - bugfix: "Liches will no longer lose their spells when reviving." diff --git a/html/changelogs/AutoChangeLog-pr-3032.yml b/html/changelogs/AutoChangeLog-pr-3032.yml deleted file mode 100644 index e4e69ea61f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3032.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Removed some of the free lag" diff --git a/html/changelogs/AutoChangeLog-pr-3033.yml b/html/changelogs/AutoChangeLog-pr-3033.yml deleted file mode 100644 index bbd8db4286..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3033.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "More Robust Than You" -delete-after: True -changes: - - bugfix: "Fixes cogscarab sprites not updating" diff --git a/html/changelogs/AutoChangeLog-pr-3041.yml b/html/changelogs/AutoChangeLog-pr-3041.yml deleted file mode 100644 index 872bbc4b99..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3041.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Robustin" -delete-after: True -changes: - - rscadd: "Blood cultists can now create a unique bastard sword at their forge" - - rscdel: "Blood cultists can no longer obtain a hardsuit from the forge" diff --git a/html/changelogs/AutoChangeLog-pr-3042.yml b/html/changelogs/AutoChangeLog-pr-3042.yml deleted file mode 100644 index af3369c4f2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3042.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - rscadd: "You can now see construction/deconstruction hints when examining airlocks." diff --git a/html/changelogs/AutoChangeLog-pr-3043.yml b/html/changelogs/AutoChangeLog-pr-3043.yml deleted file mode 100644 index cf90a7db23..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3043.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Qbopper" -delete-after: True -changes: - - tweak: "Moved a locker blocking an airlock in Toxins maintenance." diff --git a/html/changelogs/AutoChangeLog-pr-3053.yml b/html/changelogs/AutoChangeLog-pr-3053.yml deleted file mode 100644 index ca2c48581f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3053.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Updates to station name are now reflected on Cargo's stock exchange computers." diff --git a/html/changelogs/AutoChangeLog-pr-3056.yml b/html/changelogs/AutoChangeLog-pr-3056.yml deleted file mode 100644 index 7963eca536..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3056.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MrDoomBringer" -delete-after: True -changes: - - rscadd: "Nanotrasen, as part of their new Employee Retention program, has encouraged more station point-makery by adding the \"Cargo Tech of the Shift\"! The award is located in a lockbox in the Quartermaster's locker." diff --git a/html/changelogs/AutoChangeLog-pr-3059.yml b/html/changelogs/AutoChangeLog-pr-3059.yml deleted file mode 100644 index 44c983f0cb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3059.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - bugfix: "The rarely utilized secret satchel item persistence system has been fixed and made more lenient." - - rscadd: "In case you forgot how it works: if you find or buy secret satchels, put an item in them, and then bury them under tiles on the station you or someone else can find them again in a future round with the item still there! Free satchels can often be found hiding around the station, so get to burying!" diff --git a/html/changelogs/AutoChangeLog-pr-3063.yml b/html/changelogs/AutoChangeLog-pr-3063.yml deleted file mode 100644 index a8c291e06f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3063.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "XDTM" -delete-after: True -changes: - - bugfix: "Fixed a bug where Viral Aggressive Metabolism caused viruses to be cured instantly." - - bugfix: "Fixed a bug where viruses' symptoms would all instantly activate on infection." diff --git a/html/changelogs/AutoChangeLog-pr-3071.yml b/html/changelogs/AutoChangeLog-pr-3071.yml deleted file mode 100644 index 924aea5179..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3071.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Joan" -delete-after: True -changes: - - bugfix: "Fixes Vanguard never stunning for more than 2 seconds." diff --git a/html/changelogs/AutoChangeLog-pr-3085.yml b/html/changelogs/AutoChangeLog-pr-3085.yml deleted file mode 100644 index 90001fc8b9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3085.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Toriate" -delete-after: True -changes: - - balance: "10mm Soporific bullets now have a threshold of 60 stamina damage, up from 40, and deal 25 with each shot, down from 50" diff --git a/html/changelogs/AutoChangeLog-pr-3086.yml b/html/changelogs/AutoChangeLog-pr-3086.yml deleted file mode 100644 index 90798d5475..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3086.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Toriate" -delete-after: True -changes: - - spellcheck: "uplink description for soporific magazines now correctly says at least three shots are needed, rather than two" diff --git a/html/changelogs/AutoChangeLog-pr-3088.yml b/html/changelogs/AutoChangeLog-pr-3088.yml deleted file mode 100644 index 1f32d861a6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3088.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - rscadd: "Wormhole event wormholes now actually teleport you." - - bugfix: "portals now actually teleport on click." diff --git a/html/changelogs/AutoChangeLog-pr-3089.yml b/html/changelogs/AutoChangeLog-pr-3089.yml deleted file mode 100644 index 0ee37ab23d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3089.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Thefastfoodguy" -delete-after: True -changes: - - bugfix: "Antimatter shielding that can't find a control unit won't delete itself anymore" diff --git a/html/changelogs/AutoChangeLog-pr-3092.yml b/html/changelogs/AutoChangeLog-pr-3092.yml deleted file mode 100644 index efb4de6d35..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3092.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Thefastfoodguy" -delete-after: True -changes: - - bugfix: "Silicons can no longer take brain damage" diff --git a/html/changelogs/AutoChangeLog-pr-3093.yml b/html/changelogs/AutoChangeLog-pr-3093.yml deleted file mode 100644 index bc2a009a41..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3093.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Shock Collars" -delete-after: True -changes: - - rscadd: "Added Shock Collars to hacked autolathes." - - imageadd: "On character sprites, credit to Toriate" - - imageadd: "Object sprite, credit to Toriate" diff --git a/html/changelogs/AutoChangeLog-pr-3096.yml b/html/changelogs/AutoChangeLog-pr-3096.yml deleted file mode 100644 index 4031580453..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3096.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Kor" -delete-after: True -changes: - - bugfix: "You can now tell when someone is in soft crit by examining them." diff --git a/html/changelogs/AutoChangeLog-pr-3102.yml b/html/changelogs/AutoChangeLog-pr-3102.yml deleted file mode 100644 index bc737b6a13..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3102.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Bees now come with reduced amounts of free lag" diff --git a/html/changelogs/AutoChangeLog-pr-3104.yml b/html/changelogs/AutoChangeLog-pr-3104.yml deleted file mode 100644 index e6f9d22374..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3104.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "More Robust Than You" -delete-after: True -changes: - - balance: "Blobs now take damage from particle accelerators" diff --git a/html/changelogs/AutoChangeLog-pr-3105.yml b/html/changelogs/AutoChangeLog-pr-3105.yml deleted file mode 100644 index b48644c148..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3105.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - balance: "The detectives gun has been restored from a system change that nerfed knockdown in general. We need to have a serious discussion about anti revolver hate in this community." diff --git a/html/changelogs/AutoChangeLog-pr-3108.yml b/html/changelogs/AutoChangeLog-pr-3108.yml deleted file mode 100644 index f1e03db19a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3108.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "XDTM" -delete-after: True -changes: - - rscadd: "The CMO now has an advanced health analyzer in his closet! It can give more precise readings on the non-standard damage types." diff --git a/html/changelogs/AutoChangeLog-pr-3110.yml b/html/changelogs/AutoChangeLog-pr-3110.yml deleted file mode 100644 index 7d06447f99..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3110.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Kor" -delete-after: True -changes: - - rscadd: "Nightmares now have mutant hearts and brains, with their own special properties when consumed or implanted in mobs. Experiment!" diff --git a/html/changelogs/AutoChangeLog-pr-3114.yml b/html/changelogs/AutoChangeLog-pr-3114.yml deleted file mode 100644 index abe6380887..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3114.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Daniel0Mclovin" -delete-after: True -changes: - - tweak: "Modify health regeneration from 0.05 to 0.75" diff --git a/html/changelogs/AutoChangeLog-pr-3115.yml b/html/changelogs/AutoChangeLog-pr-3115.yml deleted file mode 100644 index c3a194f971..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3115.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Gutlunches will now once again look for gibs to eat." diff --git a/html/changelogs/AutoChangeLog-pr-3127.yml b/html/changelogs/AutoChangeLog-pr-3127.yml deleted file mode 100644 index 050e9cb4d7..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3127.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Raeschen" -delete-after: True -changes: - - rscadd: "FTL Milky Way added to music" diff --git a/html/changelogs/AutoChangeLog-pr-3133.yml b/html/changelogs/AutoChangeLog-pr-3133.yml deleted file mode 100644 index ac49ae1821..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3133.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - spellcheck: "Beds, chairs, closets, grilles, lattices, catwalks, tables, racks, floors, plating and bookcases now show hints about constructing/deconstructing them." diff --git a/html/changelogs/AutoChangeLog-pr-3134.yml b/html/changelogs/AutoChangeLog-pr-3134.yml deleted file mode 100644 index 5b8bcf21b6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3134.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - bugfix: "You now have to unbuckle a player PRIOR to shaking them up off a bed or resin nest." diff --git a/html/changelogs/AutoChangeLog-pr-3135.yml b/html/changelogs/AutoChangeLog-pr-3135.yml deleted file mode 100644 index faef26ffd8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3135.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - balance: "Pyrosium and cryostylane now react at ludicrous speeds." diff --git a/html/changelogs/AutoChangeLog-pr-3138.yml b/html/changelogs/AutoChangeLog-pr-3138.yml deleted file mode 100644 index 3fdfa942c2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3138.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - soundadd: "Space ninja energy katanas now make a swish when drawn!" diff --git a/html/changelogs/AutoChangeLog-pr-3139.yml b/html/changelogs/AutoChangeLog-pr-3139.yml deleted file mode 100644 index 88cb158819..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3139.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - bugfix: "Wizards will now have the correct name when attacked with Envy's knife!" diff --git a/html/changelogs/AutoChangeLog-pr-3142.yml b/html/changelogs/AutoChangeLog-pr-3142.yml deleted file mode 100644 index e502707a59..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3142.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - tweak: "The PDA default font has been switched from \"eye bleed\" to old-style monospace. Check your preference." diff --git a/html/changelogs/AutoChangeLog-pr-3143.yml b/html/changelogs/AutoChangeLog-pr-3143.yml deleted file mode 100644 index 4e48f367b6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3143.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Kevak/Neri" -delete-after: True -changes: - - rscadd: "Readds Cult Hardsuits. or more specifically, makes cult forges be able to make hardsuits. They never got removed from the code." - - tweak: "Cultforge uses Option instead of Choice. (Aka ye get a menu instead of three buttons)" - - balance: "Cultforge can make hardsuits again." - - bugfix: "Fixed Cultforge procs, Slightly cleaner code." diff --git a/html/changelogs/AutoChangeLog-pr-3144.yml b/html/changelogs/AutoChangeLog-pr-3144.yml deleted file mode 100644 index bf65dca23d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3144.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "RandomMarine" -delete-after: True -changes: - - bugfix: "Simple mobs should no longer experience severe hud/lighting glitches when reconnecting." diff --git a/html/changelogs/AutoChangeLog-pr-3147.yml b/html/changelogs/AutoChangeLog-pr-3147.yml deleted file mode 100644 index 556149df01..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3147.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "JJRcop" -delete-after: True -changes: - - tweak: "Admin volume slider moved to its own menu for better visibility." diff --git a/html/changelogs/AutoChangeLog-pr-3148.yml b/html/changelogs/AutoChangeLog-pr-3148.yml deleted file mode 100644 index c9662ac387..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3148.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xhuis and Y0SH1_M4S73R" -delete-after: True -changes: - - bugfix: "Servants of Ratvar now spawn in as the actual race set on their preferences, with plasmamen getting the gear they need to not immediately die." diff --git a/html/changelogs/AutoChangeLog-pr-3153.yml b/html/changelogs/AutoChangeLog-pr-3153.yml deleted file mode 100644 index a79a3982ca..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3153.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - bugfix: "Jaunters equipped on the belt slot will save you from chasms again." diff --git a/html/changelogs/AutoChangeLog-pr-3157.yml b/html/changelogs/AutoChangeLog-pr-3157.yml deleted file mode 100644 index 69e7b10920..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3157.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - rscadd: "Wigs are now available in AutoDrobe" diff --git a/html/changelogs/AutoChangeLog-pr-3159.yml b/html/changelogs/AutoChangeLog-pr-3159.yml deleted file mode 100644 index d835ae4122..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3159.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "XDTM" -delete-after: True -changes: - - rscadd: "Added the H.E.C.K. suit, a guaranteed loot frop from Bubblegum." - - rscadd: "The H.E.C.K. suit is fully fire (and ash) proof, and has very good melee armor." - - rscadd: "H.E.C.K. suits can also be painted with spraycans, to fully customize your experience." - - rscadd: "Despite spending centuries inside a demon king, H.E.C.K. suits are most definitely safe." diff --git a/html/changelogs/AutoChangeLog-pr-3160.yml b/html/changelogs/AutoChangeLog-pr-3160.yml deleted file mode 100644 index c9d48dc583..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3160.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Kevak/Neri" -delete-after: True -changes: - - bugfix: "Fixed plasmaman organsprites being missing" - - imageadd: "Plasmaman organ sprites added. Credit to Toriate for the sprites" diff --git a/html/changelogs/AutoChangeLog-pr-3163.yml b/html/changelogs/AutoChangeLog-pr-3163.yml deleted file mode 100644 index 3c82b42146..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3163.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Robustin" -delete-after: True -changes: - - bugfix: "Emotes (e.g. spinning and flipping) will now properly check for consciousness, restraints, etc. when appropriate." diff --git a/html/changelogs/AutoChangeLog-pr-3168.yml b/html/changelogs/AutoChangeLog-pr-3168.yml deleted file mode 100644 index ee61a58860..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3168.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - tweak: "Made atmos tiny bit faster" diff --git a/html/changelogs/AutoChangeLog-pr-3170.yml b/html/changelogs/AutoChangeLog-pr-3170.yml deleted file mode 100644 index eeb9a06f55..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3170.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Joan" -delete-after: True -changes: - - balance: "Ocular Warden base damage per second changed from 12.5 to 15." - - bugfix: "Ocular Wardens no longer count themselves when checking for dense objects, which decreased their overall damage by 15%." - - balance: "Ocular Wardens now only reduce their damage by 10% per dense object, and only do so once per turf. However, dense turfs now reduce their damage with the same 10% penalty." diff --git a/html/changelogs/AutoChangeLog-pr-3172.yml b/html/changelogs/AutoChangeLog-pr-3172.yml deleted file mode 100644 index 5d7f6cddc1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3172.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "OneCrew" -delete-after: True -changes: - - tweak: "Renamed all the OneHuman text to OneCrew. OneCrew still has the same spawning ID so no map changes are required." diff --git a/html/changelogs/AutoChangeLog-pr-3174.yml b/html/changelogs/AutoChangeLog-pr-3174.yml deleted file mode 100644 index 9f002591bd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3174.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Added a maintenance bar to Boxstation. It has a kinkmate. It has booze. It has a table for Dare Dice." - - rscadd: "Also added dorms to maintenance in the place of boxstation's default maint bar." diff --git a/html/changelogs/AutoChangeLog-pr-3178.yml b/html/changelogs/AutoChangeLog-pr-3178.yml deleted file mode 100644 index 7642360f68..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3178.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xhuis" -delete-after: True -changes: - - bugfix: "Runed metal and brass are no longer invisible." diff --git a/html/changelogs/AutoChangeLog-pr-3179.yml b/html/changelogs/AutoChangeLog-pr-3179.yml deleted file mode 100644 index 6c9321c4a6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3179.yml +++ /dev/null @@ -1,10 +0,0 @@ -author: "Toriate" -delete-after: True -changes: - - rscadd: "Added foam Magrifles" - - rscadd: "Added foam Stealth Pistols" - - rscadd: "Added toy Hyper Burst Rifles" - - rscadd: "Added toy ray gun" - - tweak: "foam X9s now available in autolathe" - - soundadd: "added raygun noises" - - imageadd: "added all the sprites for all those toys" diff --git a/html/changelogs/AutoChangeLog-pr-3185.yml b/html/changelogs/AutoChangeLog-pr-3185.yml deleted file mode 100644 index fa69ba3fe3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3185.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - imageadd: "Changed the drop, throw, pull and resist icons." diff --git a/html/changelogs/AutoChangeLog-pr-3195.yml b/html/changelogs/AutoChangeLog-pr-3195.yml deleted file mode 100644 index e4e89b5aab..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3195.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - bugfix: "Wood is no longer invisible" diff --git a/html/changelogs/AutoChangeLog-pr-3203.yml b/html/changelogs/AutoChangeLog-pr-3203.yml deleted file mode 100644 index e4061e3cd6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3203.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Kor" -delete-after: True -changes: - - rscadd: "Nightmares now have a chance to spawn via event." diff --git a/html/changelogs/AutoChangeLog-pr-3205.yml b/html/changelogs/AutoChangeLog-pr-3205.yml deleted file mode 100644 index 7385e023e6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3205.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - tweak: "The MC will now reduce tick rate during high populations to keep it from fighting with byond for processing time. -config: Added config options to control MC tick rate -admin: Admins can no longer manually control the mc's tick rate by editing the MC's processing value, instead you will have to edit the config datum's values for high/low pop tick rates." diff --git a/html/changelogs/AutoChangeLog-pr-3208.yml b/html/changelogs/AutoChangeLog-pr-3208.yml deleted file mode 100644 index 79cc3c460a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3208.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - bugfix: "Fixed a rare case where creating a one tank bomb would result in a broken object" - - bugfix: "Fixed many cases where forced item drops could be avoided by not having an item in your active hand" diff --git a/html/changelogs/AutoChangeLog-pr-32096.yml b/html/changelogs/AutoChangeLog-pr-32096.yml deleted file mode 100644 index 026e93e9b4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-32096.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Kor and JJRcop" -delete-after: True -changes: - - rscadd: "Added vampires. They will be available as a roundstart race during the Halloween holiday event." diff --git a/html/changelogs/AutoChangeLog-pr-3210.yml b/html/changelogs/AutoChangeLog-pr-3210.yml deleted file mode 100644 index b4865f12c7..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3210.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Tweaks to atmos performance" diff --git a/html/changelogs/AutoChangeLog-pr-3211.yml b/html/changelogs/AutoChangeLog-pr-3211.yml deleted file mode 100644 index 491dd057e4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3211.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Y0SH1_M4S73R" -delete-after: True -changes: - - balance: "Gygax overdrive consumes at least 100 power per step" diff --git a/html/changelogs/AutoChangeLog-pr-3213.yml b/html/changelogs/AutoChangeLog-pr-3213.yml deleted file mode 100644 index cc1948c676..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3213.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "Crew objectives are now more clearly stated to be assigned by Nanotrasen." - - tweak: "You can now opt out of being a miscreant in your preferences" - - tweak: "Round end objective display is a lot more readable" - - tweak: "Crew objectives and miscreant objectives now have more emphasis on being optional" - - tweak: "Space suits are a much rarer target for the pwrgame objective" - - rscdel: "Got rid of the departmental clothing objective" diff --git a/html/changelogs/AutoChangeLog-pr-3214.yml b/html/changelogs/AutoChangeLog-pr-3214.yml deleted file mode 100644 index 3a2840f45c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3214.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Added kinkmates to Delta in the gambling den (replacing the cigarette vendor), abandoned theatre (replacing a plant), and the abandoned theatre backstage in port bow maintenance." - - rscadd: "Added kinkmates to Meta in the abandoned bar, maintenance storage room (replacing an easel), and in maintenance right below science (also replacing an easel)." - - tweak: "Made the atmos pipes in maint dorms hidden." diff --git a/html/changelogs/AutoChangeLog-pr-3215.yml b/html/changelogs/AutoChangeLog-pr-3215.yml deleted file mode 100644 index 032b493743..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3215.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Robustin" -delete-after: True -changes: - - bugfix: "Neutering a disease symptom now produces a unique ID that will ensure the PANDEMIC machine copies it properly." diff --git a/html/changelogs/AutoChangeLog-pr-3220.yml b/html/changelogs/AutoChangeLog-pr-3220.yml deleted file mode 100644 index 0f1045db2e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3220.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "spessmenart" -delete-after: True -changes: - - imageadd: "The captains sabre no longer looks like a rapier." diff --git a/html/changelogs/AutoChangeLog-pr-3222.yml b/html/changelogs/AutoChangeLog-pr-3222.yml deleted file mode 100644 index f341d68170..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3222.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - bugfix: "Shuttles no longer rotate ghosts of players who prefer directionless sprites" diff --git a/html/changelogs/AutoChangeLog-pr-3223.yml b/html/changelogs/AutoChangeLog-pr-3223.yml deleted file mode 100644 index 98d61d2fca..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3223.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - bugfix: "Buckled mobs when on a rotating shuttle should now rotate correctly" diff --git a/html/changelogs/AutoChangeLog-pr-3227.yml b/html/changelogs/AutoChangeLog-pr-3227.yml deleted file mode 100644 index 2d82a2137d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3227.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Robustin" -delete-after: True -changes: - - tweak: "Abandoned Airlocks will no longer be deleted when their turf is changed to a wall." diff --git a/html/changelogs/AutoChangeLog-pr-3235.yml b/html/changelogs/AutoChangeLog-pr-3235.yml deleted file mode 100644 index bf4a5edcbb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3235.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xhuis" -delete-after: True -changes: - - bugfix: "Ocular wardens no longer have a burning hatred for revenants and won't attack their corpse endlessly anymore." diff --git a/html/changelogs/AutoChangeLog-pr-3236.yml b/html/changelogs/AutoChangeLog-pr-3236.yml deleted file mode 100644 index 0bef2c7a04..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3236.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Frozenguy5" -delete-after: True -changes: - - bugfix: "C20r damage upped from 20 to 30 (used to be 30 before an ammo cleanup in the code)" diff --git a/html/changelogs/AutoChangeLog-pr-3240.yml b/html/changelogs/AutoChangeLog-pr-3240.yml deleted file mode 100644 index ceac86fe3e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3240.yml +++ /dev/null @@ -1,13 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Readded maint bar and maint dorms from my previous map edit PR" - - rscadd: "Added an Abandoned Cafe to Boxstation, right above the new Clown and Mime offices." - - tweak: "Cit's maintenance bar is now all access." - - tweak: "The kitchen's deep fryers have been moved into the kitchen's island counter, just as the deep fryer was on old Hippie." - - tweak: "Recreated several changes from old Hippie's Boxstation. They are as follows." - - rscadd: "Added Clown and Mime offices to Boxstation. The Clown and Mime will now spawn there instead of the Theatre." - - tweak: "There is now a maintenance tunnel connecting the Captain's office to the meeting room." - - tweak: "The Gravity Generator has been moved to Engineering, and the Vault has been moved to the Gravity Generator's former place." - - tweak: "Added an extra airlock on the west side of the bar." - - tweak: "Added an extra airlock on the west side of Bar Storage, connecting it with the rest of the bar." diff --git a/html/changelogs/AutoChangeLog-pr-3244.yml b/html/changelogs/AutoChangeLog-pr-3244.yml deleted file mode 100644 index dc5a650dbf..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3244.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "XDTM" -delete-after: True -changes: - - bugfix: "Internals now properly work if set to 0 pressure, and will prevent breathing gas from the external atmosphere." diff --git a/html/changelogs/AutoChangeLog-pr-3245.yml b/html/changelogs/AutoChangeLog-pr-3245.yml deleted file mode 100644 index f27609e4ec..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3245.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "XDTM" -delete-after: True -changes: - - bugfix: "Viral Aggressive Metabolism is now properly inactive when neutered." diff --git a/html/changelogs/AutoChangeLog-pr-3248.yml b/html/changelogs/AutoChangeLog-pr-3248.yml deleted file mode 100644 index 26b6c965e8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3248.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "XDTM" -delete-after: True -changes: - - rscadd: "Blood and vomit pools can now spread the diseases of the mob that made them! Cover your feet properly to avoid infection." - - rscadd: "Virus severity now changes the color of the disease HUD icon, scaling from green to red to flashing black-red." - - tweak: "Contact-based diseases no longer spread by simply standing near other people; it requires interaction like touching or attacking. Bumping against people/swapping with help intent still counts as touching." - - tweak: "Advanced viruses now have another infection type, \"Fluids\"; it's between blood and skin contact, and will only be transmitted through fluid contact." - - rscdel: "Two \"hidden\" infection types have been removed. Overall this means that making a virus airborne is a little bit easier." - - bugfix: "Species who cannot breathe can no longer be infected by breathing." diff --git a/html/changelogs/AutoChangeLog-pr-3249.yml b/html/changelogs/AutoChangeLog-pr-3249.yml deleted file mode 100644 index 801bed6432..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3249.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Fixes to door/airlock deletion routines." diff --git a/html/changelogs/AutoChangeLog-pr-3251.yml b/html/changelogs/AutoChangeLog-pr-3251.yml deleted file mode 100644 index 7a7958e3aa..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3251.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "improvedname" -delete-after: True -changes: - - bugfix: "9mm doesn't longer appear in traitor surplus crates" diff --git a/html/changelogs/AutoChangeLog-pr-3256.yml b/html/changelogs/AutoChangeLog-pr-3256.yml deleted file mode 100644 index d653c1eda5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3256.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Robustin" -delete-after: True -changes: - - tweak: "Tesla movement is now completely random." diff --git a/html/changelogs/AutoChangeLog-pr-3262.yml b/html/changelogs/AutoChangeLog-pr-3262.yml deleted file mode 100644 index 48f5066b8f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3262.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "DaxDupont" -delete-after: True -changes: - - bugfix: "Crew pinpointer no longer switches between regular pinpointer and crew pinpointer when facing west on medium distance." diff --git a/html/changelogs/AutoChangeLog-pr-3263.yml b/html/changelogs/AutoChangeLog-pr-3263.yml deleted file mode 100644 index 1630ca40b0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3263.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Readded kinkmates to Deltastation and Metastation." diff --git a/html/changelogs/AutoChangeLog-pr-3264.yml b/html/changelogs/AutoChangeLog-pr-3264.yml deleted file mode 100644 index 15269a81a1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3264.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Neri/Kevak" -delete-after: True -changes: - - bugfix: "Fixes shockcollar pocketstick bug." diff --git a/html/changelogs/AutoChangeLog-pr-3265.yml b/html/changelogs/AutoChangeLog-pr-3265.yml deleted file mode 100644 index bd6ef58236..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3265.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - tweak: "The asteroid escape shuttle has no stabilizers and throws you around when it moves" diff --git a/html/changelogs/AutoChangeLog-pr-3266.yml b/html/changelogs/AutoChangeLog-pr-3266.yml deleted file mode 100644 index c3f826a07a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3266.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - spellcheck: "Grammar when examining objects has been improved." diff --git a/html/changelogs/AutoChangeLog-pr-3268.yml b/html/changelogs/AutoChangeLog-pr-3268.yml deleted file mode 100644 index 791d6cb443..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3268.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Armhulen" -delete-after: True -changes: - - bugfix: "Clockwork golems no longer slip and slide on glass!" diff --git a/html/changelogs/AutoChangeLog-pr-3269.yml b/html/changelogs/AutoChangeLog-pr-3269.yml deleted file mode 100644 index cd96ba9112..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3269.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - bugfix: "2 Years later and cameras work on shuttles now, probably." diff --git a/html/changelogs/AutoChangeLog-pr-3270.yml b/html/changelogs/AutoChangeLog-pr-3270.yml deleted file mode 100644 index c3c989d438..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3270.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "More Robust Than You" -delete-after: True -changes: - - bugfix: "Makes the santa event properly poll ghosts" diff --git a/html/changelogs/AutoChangeLog-pr-3277.yml b/html/changelogs/AutoChangeLog-pr-3277.yml deleted file mode 100644 index 69451cf455..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3277.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "GLACoding" -delete-after: True -changes: - - bugfix: "Syndicate turrets and other machines in walls can now be hit by projectiles" diff --git a/html/changelogs/AutoChangeLog-pr-3283.yml b/html/changelogs/AutoChangeLog-pr-3283.yml deleted file mode 100644 index 3ff6b2f72a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3283.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Robustin" -delete-after: True -changes: - - bugfix: "Clock Cult mode will no longer end if all the cultists die. The round will not end until the Ark is destroyed or completed." diff --git a/html/changelogs/AutoChangeLog-pr-3284.yml b/html/changelogs/AutoChangeLog-pr-3284.yml deleted file mode 100644 index 2b32e98e20..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3284.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "More Robust Than You" -delete-after: True -changes: - - bugfix: "Diseases will now cure if species is changed" diff --git a/html/changelogs/AutoChangeLog-pr-3287.yml b/html/changelogs/AutoChangeLog-pr-3287.yml deleted file mode 100644 index 513ad987b3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3287.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Robustin" -delete-after: True -changes: - - rscadd: "The Chemistry Smoke Machine! Chemist offices will have a board available should they choose to construct a smoke machine. The smoke machine will regularly produce smoke from whatever chemicals have been inserted into the machine. Designs for the circuitboard are also available at RND." diff --git a/html/changelogs/AutoChangeLog-pr-3296.yml b/html/changelogs/AutoChangeLog-pr-3296.yml deleted file mode 100644 index 05adafd5f0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3296.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - bugfix: "Fixed trying to clear beaker in pandemic when the beaker is already removed causing a runtime." diff --git a/html/changelogs/AutoChangeLog-pr-3297.yml b/html/changelogs/AutoChangeLog-pr-3297.yml deleted file mode 100644 index 28b1e698b3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3297.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xhuis" -delete-after: True -changes: - - bugfix: "The Ark of the Clockwork Justiciar is now registered as a hostile environment." diff --git a/html/changelogs/AutoChangeLog-pr-3300.yml b/html/changelogs/AutoChangeLog-pr-3300.yml deleted file mode 100644 index 2a8f289744..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3300.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "*slap" diff --git a/html/changelogs/AutoChangeLog-pr-3304.yml b/html/changelogs/AutoChangeLog-pr-3304.yml deleted file mode 100644 index b5247599de..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3304.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "More Robust Than You" -delete-after: True -changes: - - tweak: "Jungle Fever carriers now hear the proper antag sound" diff --git a/html/changelogs/AutoChangeLog-pr-3307.yml b/html/changelogs/AutoChangeLog-pr-3307.yml deleted file mode 100644 index e69277f1e9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3307.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "The game will no longer take 2-3 minutes to start up during highpop. Hooray optimization!" - - tweak: "Miscreants now have a 5% chance of being generated instead of a 2% chance." - - tweak: "Crew objective display at the end of the round is now a lot more compact." diff --git a/html/changelogs/AutoChangeLog-pr-3310.yml b/html/changelogs/AutoChangeLog-pr-3310.yml deleted file mode 100644 index 8fddec701f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3310.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xhuis" -delete-after: True -changes: - - tweak: "Cogscarabs can now experiment more freely with base design during non-clockcult rounds with infinite power and the ability to recite scripture!" diff --git a/html/changelogs/AutoChangeLog-pr-3314.yml b/html/changelogs/AutoChangeLog-pr-3314.yml deleted file mode 100644 index dbf4d48f28..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3314.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Mercenaryblue" -delete-after: True -changes: - - imageadd: "added some in_hands for banana peels." diff --git a/html/changelogs/AutoChangeLog-pr-3321.yml b/html/changelogs/AutoChangeLog-pr-3321.yml deleted file mode 100644 index 094d5f7df8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3321.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "DaxDupont" -delete-after: True -changes: - - tweak: "After lobbying by Robust Softdrinks and Getmore Chocolate Corp all vendor firmware has been changed to add sillicons to their target demographic." diff --git a/html/changelogs/AutoChangeLog-pr-3330.yml b/html/changelogs/AutoChangeLog-pr-3330.yml deleted file mode 100644 index 6c640082d4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3330.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - bugfix: "AI eye camera static is now correctly positioned on Lavaland." diff --git a/html/changelogs/AutoChangeLog-pr-3340.yml b/html/changelogs/AutoChangeLog-pr-3340.yml deleted file mode 100644 index 3800dc6552..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3340.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "WJohnston" -delete-after: True -changes: - - imageadd: "Black carpets no longer have an ugly periodic black line in them. Regular catwalks are now totally opaque so you won't accidentally click on space when trying to place wires or tiles on them." diff --git a/html/changelogs/AutoChangeLog-pr-3341.yml b/html/changelogs/AutoChangeLog-pr-3341.yml deleted file mode 100644 index cd0944e03b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3341.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - bugfix: "C4 will no longer appear underneath objects on walls." - - bugfix: "Plastic explosives will no longer be invisible after being planted." diff --git a/html/changelogs/AutoChangeLog-pr-3348.yml b/html/changelogs/AutoChangeLog-pr-3348.yml deleted file mode 100644 index 608889038b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3348.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Reusable projectiles such as foam darts no longer get deleted if they're shot at a shooting range target or a cardboard cutout." diff --git a/html/changelogs/AutoChangeLog-pr-3353.yml b/html/changelogs/AutoChangeLog-pr-3353.yml deleted file mode 100644 index 9b9bb5ccca..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3353.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - bugfix: "Mobs that didn't move during shuttle launch would not have their parallax updated. This is fixed now." diff --git a/html/changelogs/AutoChangeLog-pr-3356.yml b/html/changelogs/AutoChangeLog-pr-3356.yml deleted file mode 100644 index 54c28665d2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3356.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Xhuis" -delete-after: True -changes: - - balance: "Stargazers can no longer be built off-station, even in new areas." - - balance: "Integration cogs no longer emit sounds and steam visuals when active." diff --git a/html/changelogs/AutoChangeLog-pr-3364.yml b/html/changelogs/AutoChangeLog-pr-3364.yml deleted file mode 100644 index a274c7140e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3364.yml +++ /dev/null @@ -1,15 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - rscadd: "A new radiation subsystem and spreading mechanics." - - rscadd: "Walls and other dense objects insulate you from radiation." - - rscadd: "Geiger counters now store the last burst of radiation so you can view it at your leisure or show it to someone. Examine it." - - rscadd: "Geiger counters can check mobs for contaminated objects. Scan yourself before you leave to make sure you aren't carrying dangerous radioactive items." - - soundadd: "Geiger counters have realistic sounds and the radiation pulse spam in chat has been replaced." - - balance: "Radiation is more deadly and causes burns at high intensities, WEAR YOUR RADSUITS." - - balance: "However residue radiation is far slower acting and kills you with toxin." - - balance: "Engineering holosigns have a light amount of radiation insulation." - - balance: "Rad collectors are nerfed. No more supercharging with pressurized plasma. No more collector spam either." - - balance: "Engine output is a lot more stable as a result of collector changes." - - balance: "Monkeys need more rads and take more time to turn into gorillas." - - tweak: "Over 100% on the DNA computer means your subject is now taking damage." diff --git a/html/changelogs/AutoChangeLog-pr-3365.yml b/html/changelogs/AutoChangeLog-pr-3365.yml deleted file mode 100644 index 026cb44ee5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3365.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - spellcheck: "Fixed many instances of \"the the\" when interacting with objects." - - bugfix: "The tracking implant locator now works on the station again." diff --git a/html/changelogs/AutoChangeLog-pr-3366.yml b/html/changelogs/AutoChangeLog-pr-3366.yml deleted file mode 100644 index 26341662c2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3366.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - tweak: "You can now clear bullet holes in walls using a welding tool." diff --git a/html/changelogs/AutoChangeLog-pr-3371.yml b/html/changelogs/AutoChangeLog-pr-3371.yml deleted file mode 100644 index 3afb171b0d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3371.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "More Robust Than You" -delete-after: True -changes: - - bugfix: "Medibots will no longer inject people in lockers/sleepers/etc" diff --git a/html/changelogs/AutoChangeLog-pr-3372.yml b/html/changelogs/AutoChangeLog-pr-3372.yml deleted file mode 100644 index 7263e500f6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3372.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "More Robust Than You" -delete-after: True -changes: - - tweak: "You can now drag-drop people into open DNA scanners" diff --git a/html/changelogs/AutoChangeLog-pr-3376.yml b/html/changelogs/AutoChangeLog-pr-3376.yml deleted file mode 100644 index 3977dd5505..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3376.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Robustin" -delete-after: True -changes: - - tweak: "The wrench-anchoring time of the smoke machine is now doubled to 4 seconds." - - tweak: "Smoke Machine smoke is now transparent." - - rscadd: "The smoke machine has taken its rightful place in the chemist's office." - - bugfix: "Smoke machine will no longer operate while moving/unanchored." diff --git a/html/changelogs/AutoChangeLog-pr-3377.yml b/html/changelogs/AutoChangeLog-pr-3377.yml deleted file mode 100644 index 6dd8ddd0e0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3377.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Epoc" -delete-after: True -changes: - - rscadd: "Added a Toggle Underline button to the PDA menu -code: Cleaned HTML spacing" diff --git a/html/changelogs/AutoChangeLog-pr-3379.yml b/html/changelogs/AutoChangeLog-pr-3379.yml deleted file mode 100644 index 363833a1e3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3379.yml +++ /dev/null @@ -1,11 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - experiment: "Flying mobs now fly over those that aren't flying." - - experiment: "Flightsuits will now be unstable if EMPed! Don't get ion'd!" - - bugfix: "Flightsuits now allow proper pulling" - - experiment: "Moved now has an argument for if it was a regular Move or a forceMove." - - rscadd: "Instead of dumb sleep()s, follow trails now use SSfastprocess for processing!" - - rscadd: "Mobs now float while flying automatically!" - - rscdel: "Flightsuits can no longer be safely shut off if you're still barreling down the hallway." - - experiment: "Flightsuits should be less shitcode. Hope this PR doesn't blow anything important up!" diff --git a/html/changelogs/AutoChangeLog-pr-3384.yml b/html/changelogs/AutoChangeLog-pr-3384.yml deleted file mode 100644 index da0257f4ea..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3384.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscdel: "Security will no longer hallucinate edgy \"Centcom-assigned\" objectives at the start of the shift." diff --git a/html/changelogs/AutoChangeLog-pr-3389.yml b/html/changelogs/AutoChangeLog-pr-3389.yml deleted file mode 100644 index 84c455bc61..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3389.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Fixed some mobs not deleting correctly" diff --git a/html/changelogs/AutoChangeLog-pr-3390.yml b/html/changelogs/AutoChangeLog-pr-3390.yml deleted file mode 100644 index 6691157000..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3390.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Armie" -delete-after: True -changes: - - tweak: "Holoparasites are once again in the uplink." diff --git a/html/changelogs/AutoChangeLog-pr-3391.yml b/html/changelogs/AutoChangeLog-pr-3391.yml deleted file mode 100644 index a9d286e812..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3391.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Ghosts no longer inherit the movement delay of their former bodies." diff --git a/html/changelogs/AutoChangeLog-pr-3392.yml b/html/changelogs/AutoChangeLog-pr-3392.yml deleted file mode 100644 index 639673bc7d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3392.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Fixed mobs being able to smash shocked objects without taking damage." diff --git a/html/changelogs/AutoChangeLog-pr-3393.yml b/html/changelogs/AutoChangeLog-pr-3393.yml deleted file mode 100644 index 362869b8df..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3393.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - bugfix: "Scrubbers and filters no longer allow for infinite pressure in pipes." diff --git a/html/changelogs/AutoChangeLog-pr-3395.yml b/html/changelogs/AutoChangeLog-pr-3395.yml deleted file mode 100644 index 2275806482..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3395.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - bugfix: "Fixes camera mobs being considered a target by radiation" - - bugfix: "Cables can no longer be contaminated as well" - - balance: "Buffs radiation cleansing chems" - - balance: "Toxin damage per tick from radiation is halved -admin: Contaminated objects keep track of what contaminated them -admin: Radiation pulses over 3000 are logged now" diff --git a/html/changelogs/AutoChangeLog-pr-3396.yml b/html/changelogs/AutoChangeLog-pr-3396.yml deleted file mode 100644 index d52ac352ce..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3396.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Improvedname" -delete-after: True -changes: - - tweak: "Cmo, captain, and the bartender now get pet collars in their lockers." diff --git a/html/changelogs/AutoChangeLog-pr-3399.yml b/html/changelogs/AutoChangeLog-pr-3399.yml deleted file mode 100644 index 26ced022fe..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3399.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - rscadd: "Alt-clicking on a computer now ejects the ID card inside it." diff --git a/html/changelogs/AutoChangeLog-pr-3401.yml b/html/changelogs/AutoChangeLog-pr-3401.yml deleted file mode 100644 index 4f6dcd0caa..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3401.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - tweak: "Golden Bike Horns now permit its victims to perform a full flip before forcing them to jump again." diff --git a/html/changelogs/AutoChangeLog-pr-3403.yml b/html/changelogs/AutoChangeLog-pr-3403.yml deleted file mode 100644 index fb764ce39c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3403.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - bugfix: "The custom shuttle placement highlight now works for multi area shuttles." diff --git a/html/changelogs/AutoChangeLog-pr-3404.yml b/html/changelogs/AutoChangeLog-pr-3404.yml deleted file mode 100644 index 839fe36373..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3404.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Boxstation's security now has a high security cell, accessible via fake wall from the execution room." - - rscadd: "Boxstation's security now has a public lobby, complete with water cooler and soda dispenser!" - - rscadd: "Boxstation now has a non-lethal armory, containing hardsuits, armor, barrier grenades, and mounted flashers" - - tweak: "Security on all maps now have reinforced walls in place of electrified windows." - - tweak: "Security on all maps now have a chem dispenser and chemmaster." diff --git a/html/changelogs/AutoChangeLog-pr-3406.yml b/html/changelogs/AutoChangeLog-pr-3406.yml deleted file mode 100644 index 8f80b68a9c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3406.yml +++ /dev/null @@ -1,13 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Dogborgs will now telegraph their attacks when pouncing." - - balance: "Dogborg pounces will now only stun for as long necessary to handcuff the target." - - balance: "Scrubpups will no longer automatically clean tiles they walk on. There's janiborgs for that!" - - balance: "Scrubpups have a much, much faster tongue that cleans much faster than normal. It's faster than mops." - - balance: "Scrubpups can now only swallow small items or smaller." - - balance: "Scrubpups can now carry 48 items in their compactor." - - balance: "Scrubpups only need half the time to swallow items." - - balance: "Sechounds now have a crew pinpointer." - - balance: "Sechounds now need to be emagged to access their disabler. Sechounds also have a nuke disk pinpointer when emagged." - - balance: "Medihounds now have a hypospray." diff --git a/html/changelogs/AutoChangeLog-pr-3409.yml b/html/changelogs/AutoChangeLog-pr-3409.yml deleted file mode 100644 index 7aec846c4e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3409.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "WJohn" -delete-after: True -changes: - - rscadd: "An old cruiser class vessel has resiliently stuck around, and may do so for the foreseeable future." diff --git a/html/changelogs/AutoChangeLog-pr-3411.yml b/html/changelogs/AutoChangeLog-pr-3411.yml deleted file mode 100644 index 474405691b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3411.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "DaxDupont" -delete-after: True -changes: - - spellcheck: "Replaces instances of \"permenant\" and \"permenantly\" with the proper spelling in several areas," diff --git a/html/changelogs/AutoChangeLog-pr-3412.yml b/html/changelogs/AutoChangeLog-pr-3412.yml deleted file mode 100644 index 3c4b94fcfd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3412.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "armie" -delete-after: True -changes: - - bugfix: "mob spawners are no longer possessable" diff --git a/html/changelogs/AutoChangeLog-pr-3413.yml b/html/changelogs/AutoChangeLog-pr-3413.yml deleted file mode 100644 index 75b3f5ef6e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3413.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - bugfix: "Directional windows shouldn't leak air anymore" - - tweak: "Windows only block air while anchored" diff --git a/html/changelogs/AutoChangeLog-pr-3414.yml b/html/changelogs/AutoChangeLog-pr-3414.yml deleted file mode 100644 index 1132780ff6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3414.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - imageadd: "The security bombsuit's sprite has been updated!" diff --git a/html/changelogs/AutoChangeLog-pr-3415.yml b/html/changelogs/AutoChangeLog-pr-3415.yml deleted file mode 100644 index 47b5a84c41..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3415.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Kor" -delete-after: True -changes: - - balance: "You can now smash the bulbs out of floodlights rather than having to entirely destroy the object." diff --git a/html/changelogs/AutoChangeLog-pr-3418.yml b/html/changelogs/AutoChangeLog-pr-3418.yml deleted file mode 100644 index a81e529d3b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3418.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Onule" -delete-after: True -changes: - - tweak: "Sunflower sprites were changed, small edits to variants." - - imageadd: "Sunflower and variant's inhands sprites." - - imageadd: "Tweaked growing sprites to match the new sunflower." - - imageadd: "Moonflower and novaflowers now have slightly different growing sprites." diff --git a/html/changelogs/AutoChangeLog-pr-3419.yml b/html/changelogs/AutoChangeLog-pr-3419.yml deleted file mode 100644 index 868d33fb62..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3419.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - rscadd: "Use the Clown Stamp on some cardboard to begin... the honkbot!" - - rscadd: "These honkbots are just adorable, and totally not annoying. I swear! Honk!" - - rscadd: "You can even slot in a pAI! Just don't emag them... oh boy. oh no. oh geez." - - soundadd: "Honkbots now release an evil laugh when emagged." diff --git a/html/changelogs/AutoChangeLog-pr-3421.yml b/html/changelogs/AutoChangeLog-pr-3421.yml deleted file mode 100644 index 68b392a790..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3421.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "You now have to have arousal enabled for Crocin and Hexacrocin to have lewd effects." diff --git a/html/changelogs/AutoChangeLog-pr-3429.yml b/html/changelogs/AutoChangeLog-pr-3429.yml deleted file mode 100644 index f2d49e0784..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3429.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "More Robust Than You" -delete-after: True -changes: - - rscadd: "EI NATH! now causes a flash of light" diff --git a/html/changelogs/AutoChangeLog-pr-3430.yml b/html/changelogs/AutoChangeLog-pr-3430.yml deleted file mode 100644 index fb45728057..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3430.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - rscadd: "Reflectors can now be at any angle you want. Alt click them to set angle!" diff --git a/html/changelogs/AutoChangeLog-pr-3431.yml b/html/changelogs/AutoChangeLog-pr-3431.yml deleted file mode 100644 index 14e5bc9392..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3431.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Pre-filled glass bottles (uplink, medbay, botany) will now give visual feedback about how much stuff is left inside, and the color of contents will match an empty bottle being filled with the same reagent." diff --git a/html/changelogs/AutoChangeLog-pr-3432.yml b/html/changelogs/AutoChangeLog-pr-3432.yml deleted file mode 100644 index 8a1de4739e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3432.yml +++ /dev/null @@ -1,12 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - balance: "Sec doggos have a disabler again" - - balance: "Sec doggos need 1 more second for their leg actuators to recharge after a pounce." - - balance: "Sec doggos no longer have a nuke pinpointer when emagged" - - balance: "Sechounds stun for half a second longer" - - balance: "Sechound pounce spoolup has been reduced from 0.5 seconds to 0.3 seconds." - - balance: "Scrubpups now have actual working mops on their feet instead of cheap plastic imitations" - - balance: "Scrubpups can eat normal-sized items again" - - balance: "Scrubpups can only carry 20 items now" - - balance: "Scrubpups no longer have flashes" diff --git a/html/changelogs/AutoChangeLog-pr-3433.yml b/html/changelogs/AutoChangeLog-pr-3433.yml deleted file mode 100644 index cd6bfdeea0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3433.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "DaxDupont" -delete-after: True -changes: - - bugfix: "Fancy boxes(ie: donut boxes) now show the proper content amount in the sprite and no longer go invisible when empty." diff --git a/html/changelogs/AutoChangeLog-pr-3442.yml b/html/changelogs/AutoChangeLog-pr-3442.yml deleted file mode 100644 index 07b022ed29..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3442.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Player-controlled \"neutral\" mobs such as minebots are now considered valid targets by clock cult's ocular wardens." diff --git a/html/changelogs/AutoChangeLog-pr-3443.yml b/html/changelogs/AutoChangeLog-pr-3443.yml deleted file mode 100644 index 0c57b075dd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3443.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - bugfix: "when decapitated, banana-flavored cream no longer hovers where your head used to be." diff --git a/html/changelogs/AutoChangeLog-pr-3444.yml b/html/changelogs/AutoChangeLog-pr-3444.yml deleted file mode 100644 index 0eed3012f9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3444.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - spellcheck: "Removed a misleading message when handling full stacks of sheets." diff --git a/html/changelogs/AutoChangeLog-pr-3445.yml b/html/changelogs/AutoChangeLog-pr-3445.yml deleted file mode 100644 index d6d85367ea..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3445.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Pinned notes will now show up on vault, abductor, centcom and large glass airlocks." diff --git a/html/changelogs/AutoChangeLog-pr-3446.yml b/html/changelogs/AutoChangeLog-pr-3446.yml deleted file mode 100644 index 3d66b596aa..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3446.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xhuis" -delete-after: True -changes: - - bugfix: "Cogged APCs can now be correctly unlocked with an ID card." diff --git a/html/changelogs/AutoChangeLog-pr-3447.yml b/html/changelogs/AutoChangeLog-pr-3447.yml deleted file mode 100644 index c9301eca09..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3447.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - tweak: "Portable air pumps can output to a maximum of 25 atmospheres." diff --git a/html/changelogs/AutoChangeLog-pr-3451.yml b/html/changelogs/AutoChangeLog-pr-3451.yml deleted file mode 100644 index b8dc904983..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3451.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - rscadd: "Pipes can now be layered up to 3 layers." diff --git a/html/changelogs/AutoChangeLog-pr-3453.yml b/html/changelogs/AutoChangeLog-pr-3453.yml deleted file mode 100644 index 1f98b0ba59..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3453.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - balance: "it should be far easier to clean out your face from multiple cream pies." diff --git a/html/changelogs/AutoChangeLog-pr-3454.yml b/html/changelogs/AutoChangeLog-pr-3454.yml deleted file mode 100644 index 6800b33f5c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3454.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Improvedname" -delete-after: True -changes: - - tweak: "Reverts katana's to its orginal size being huge" diff --git a/html/changelogs/AutoChangeLog-pr-3457.yml b/html/changelogs/AutoChangeLog-pr-3457.yml deleted file mode 100644 index b169a320e6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3457.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "LetterJay" -delete-after: True -changes: - - imageadd: "Added missing CWC icons" diff --git a/html/changelogs/AutoChangeLog-pr-3458.yml b/html/changelogs/AutoChangeLog-pr-3458.yml deleted file mode 100644 index b9d1ba0556..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3458.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - bugfix: "The tools on the Caravan Ambush space ruin have had their speeds corrected." diff --git a/html/changelogs/AutoChangeLog-pr-3460.yml b/html/changelogs/AutoChangeLog-pr-3460.yml deleted file mode 100644 index fe4674e8bb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3460.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "DaxDupont" -delete-after: True -changes: - - bugfix: "Fixes automatic fire on guns." diff --git a/html/changelogs/AutoChangeLog-pr-3462.yml b/html/changelogs/AutoChangeLog-pr-3462.yml deleted file mode 100644 index f3344006f9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3462.yml +++ /dev/null @@ -1,10 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - bugfix: "fixed medihound having to respect devourable settings." - - bugfix: "fixed other borg sleepers to not inject any regents." - - rscadd: "Tgui menus for borg sleepers. Is pretty." - - bugfix: "Fixed analyzer nose to work as intended." - - bugfix: "infinite energy loop is gone." - - tweak: "Removed borg hypo from Medihound. The sleeper works now." - - balance: "Medihound sleeper will swap from anti-tox to pure toxin if the patient is a slime." diff --git a/html/changelogs/AutoChangeLog-pr-3463.yml b/html/changelogs/AutoChangeLog-pr-3463.yml deleted file mode 100644 index 58556c40fd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3463.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - bugfix: "Fixed turfs not rotating" - - bugfix: "Fixed stealing structures you shouldn't be moving" diff --git a/html/changelogs/AutoChangeLog-pr-3466.yml b/html/changelogs/AutoChangeLog-pr-3466.yml deleted file mode 100644 index 103bfbc7e8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3466.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Robustin" -delete-after: True -changes: - - bugfix: "The smoke machine now properly generates transparent smoke, transmits chemicals, and displays the proper icons." diff --git a/html/changelogs/AutoChangeLog-pr-3467.yml b/html/changelogs/AutoChangeLog-pr-3467.yml deleted file mode 100644 index 9260009663..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3467.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Y0SH1_M4S73R" -delete-after: True -changes: - - bugfix: "Disabling leg actuators sets the power drain per step to the correct value." diff --git a/html/changelogs/AutoChangeLog-pr-3468.yml b/html/changelogs/AutoChangeLog-pr-3468.yml deleted file mode 100644 index 28b45e3f20..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3468.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - bugfix: "Corrected mapping issues introduced with the latest SM engine/radiation update across all relevant maps." diff --git a/html/changelogs/AutoChangeLog-pr-3469.yml b/html/changelogs/AutoChangeLog-pr-3469.yml deleted file mode 100644 index ef9ed10a14..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3469.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - bugfix: "Slappers will no longer appear as a latex balloon in your hand." diff --git a/html/changelogs/AutoChangeLog-pr-3470.yml b/html/changelogs/AutoChangeLog-pr-3470.yml deleted file mode 100644 index b96e6d1eeb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3470.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - tweak: "You can no longer build reinforced floors directly on top of dirt, asteroid sand, ice, or beaches. You'll have to first construct flooring on top of it instead." diff --git a/html/changelogs/AutoChangeLog-pr-3471.yml b/html/changelogs/AutoChangeLog-pr-3471.yml deleted file mode 100644 index 602f71797d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3471.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xhuis" -delete-after: True -changes: - - bugfix: "You can no longer pick up brass chairs." diff --git a/html/changelogs/AutoChangeLog-pr-3474.yml b/html/changelogs/AutoChangeLog-pr-3474.yml deleted file mode 100644 index 289c321597..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3474.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "yourdoom9898" -delete-after: True -changes: - - rscdel: "Removed chat message from slimepeople when they had enough slime to split" diff --git a/html/changelogs/AutoChangeLog-pr-3476.yml b/html/changelogs/AutoChangeLog-pr-3476.yml deleted file mode 100644 index f1fb04d1f2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3476.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - bugfix: "Filters no longer stop passing any gas through if the filtered output is full." diff --git a/html/changelogs/AutoChangeLog-pr-3478.yml b/html/changelogs/AutoChangeLog-pr-3478.yml deleted file mode 100644 index 0e1890158d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3478.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Poojawa" -delete-after: True -changes: - - balance: "Sleepers are no longer go-to magic fix alls" - - tweak: "Minimum Heal values at tier 4 is now 1 instead of -100 for Sleepers" diff --git a/html/changelogs/AutoChangeLog-pr-3482.yml b/html/changelogs/AutoChangeLog-pr-3482.yml deleted file mode 100644 index e1f50ba5d5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3482.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Gun Hog" -delete-after: True -changes: - - bugfix: "The GPS item now correctly changes its name when the GPS tag is changed." diff --git a/html/changelogs/AutoChangeLog-pr-3484.yml b/html/changelogs/AutoChangeLog-pr-3484.yml deleted file mode 100644 index a296d8f74e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3484.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - tweak: "Engineering cyborgs now have access to geiger counters." diff --git a/html/changelogs/AutoChangeLog-pr-3486.yml b/html/changelogs/AutoChangeLog-pr-3486.yml deleted file mode 100644 index b07d24883b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3486.yml +++ /dev/null @@ -1,10 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - rscadd: "You can vomit blood at high enough radiation." - - balance: "Radiation knockdown is far far shorter." - - balance: "Genetics modification is less harmful but still, upgrade your machines." - - balance: "Pentetic acid is useless for low amounts of radiation but indispensable for high amounts now." - - balance: "Singularity radiation has been normalized and Pubby engine has been remapped." - - bugfix: "No more hair loss spam" - - bugfix: "Mob rad contamination has been disabled for now. Regular contamination is still a thing." diff --git a/html/changelogs/AutoChangeLog-pr-3487.yml b/html/changelogs/AutoChangeLog-pr-3487.yml deleted file mode 100644 index 602ea77c7a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3487.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "More Robust Than You" -delete-after: True -changes: - - tweak: "People that are burning slightly less will appear to be burning... slightly less." diff --git a/html/changelogs/AutoChangeLog-pr-3488.yml b/html/changelogs/AutoChangeLog-pr-3488.yml deleted file mode 100644 index 4962e5d679..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3488.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - bugfix: "Renault now has a comfy new bed on Metastation!" diff --git a/html/changelogs/AutoChangeLog-pr-3492.yml b/html/changelogs/AutoChangeLog-pr-3492.yml deleted file mode 100644 index bcae1670b8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3492.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "Kor" -delete-after: True -changes: - - rscadd: "Blob is now a side antagonist." - - rscadd: "Event and admin blobs will now be able to choose their spawn location." - - rscadd: "Blob can now win in any mode by gaining enough tiles to reach Critical Mass." - - rscadd: "Blobs that have Critical Mass have unlimited points, and a minute after achieving critical mass, they will spread to every tile on station, killing anyone still on board and ending the round." - - rscadd: "Using an analyzer on a blob will now reveal its progress towards Critical Mass." - - rscadd: "The blob event is now more common." diff --git a/html/changelogs/AutoChangeLog-pr-3498.yml b/html/changelogs/AutoChangeLog-pr-3498.yml deleted file mode 100644 index 45780c6d0b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3498.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - rscadd: "Engineering scanner goggles have a radiation mode now" diff --git a/html/changelogs/AutoChangeLog-pr-3499.yml b/html/changelogs/AutoChangeLog-pr-3499.yml deleted file mode 100644 index 21ebf770c9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3499.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - rscadd: "Objects placed under showers are cleansed of radioactive contamination over a short time." - - soundadd: "Showers make sound now." diff --git a/html/changelogs/AutoChangeLog-pr-3503.yml b/html/changelogs/AutoChangeLog-pr-3503.yml deleted file mode 100644 index 0fd9f587eb..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3503.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - tweak: "You will no longer trip on inactive honkbots." - - bugfix: "Sentient Honkbots are no longer forced to speak when somebody trip on them." diff --git a/html/changelogs/AutoChangeLog-pr-3504.yml b/html/changelogs/AutoChangeLog-pr-3504.yml deleted file mode 100644 index e0f0c79ffd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3504.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "You can now press Ctrl+H to stop pulling, or simply H to stop pulling if you're in hotkey mode." diff --git a/html/changelogs/AutoChangeLog-pr-3506.yml b/html/changelogs/AutoChangeLog-pr-3506.yml deleted file mode 100644 index 7ec7575219..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3506.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Manned turrets stop firing when there's no-one in the turret shooting." diff --git a/html/changelogs/AutoChangeLog-pr-3513.yml b/html/changelogs/AutoChangeLog-pr-3513.yml deleted file mode 100644 index d4ef3e9060..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3513.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "oranges" -delete-after: True -changes: - - rscdel: "Removed the bluespace pipe" diff --git a/html/changelogs/AutoChangeLog-pr-3518.yml b/html/changelogs/AutoChangeLog-pr-3518.yml deleted file mode 100644 index ecf1879613..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3518.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Robustin" -delete-after: True -changes: - - bugfix: "Fixed a bug where detonating maxcaps, especially multiple maxcaps, on Reebe guaranteed that everyone would die and thus the Clock Cult would immediately lose; Reebe maxcap is now 2/5/10." diff --git a/html/changelogs/AutoChangeLog-pr-3522.yml b/html/changelogs/AutoChangeLog-pr-3522.yml deleted file mode 100644 index 77d272d363..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3522.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - tweak: "Changelings using biodegrade to escape restraints will now leave a pile of goop." - - bugfix: "Fixed messages related to changelings using biodegrade not appearing." diff --git a/html/changelogs/AutoChangeLog-pr-3524.yml b/html/changelogs/AutoChangeLog-pr-3524.yml deleted file mode 100644 index 8966133a1d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3524.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Kor" -delete-after: True -changes: - - rscadd: "You can now select your Halloween race, rather than having it assigned randomly via event." diff --git a/html/changelogs/AutoChangeLog-pr-3528.yml b/html/changelogs/AutoChangeLog-pr-3528.yml deleted file mode 100644 index 7beef20cca..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3528.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Robustin" -delete-after: True -changes: - - balance: "Spray tan no longer stuns when ingested." diff --git a/html/changelogs/AutoChangeLog-pr-3529.yml b/html/changelogs/AutoChangeLog-pr-3529.yml deleted file mode 100644 index 02a915824f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3529.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Toriate" -delete-after: True -changes: - - balance: "OP foam stuff now cost slightly more to build from autolathes" - - balance: "OP foam stuff now turned into total memes instead of practical weapons, all burst firing foam guns have at least 60 spread. Stealth pistol also has 60 spread." - - balance: "Foam X9 and Mag Rifle now requires two hands to fire" - - bugfix: "Foam Force X9 and Mag Rifle now has its correct weight class of NOT FITTING IN FUCKING BACKPACKS" diff --git a/html/changelogs/AutoChangeLog-pr-3530.yml b/html/changelogs/AutoChangeLog-pr-3530.yml deleted file mode 100644 index d775eb8c52..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3530.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Thunder12345" -delete-after: True -changes: - - bugfix: "Sentient cats no longer forget to fall over when they die" diff --git a/html/changelogs/AutoChangeLog-pr-3546.yml b/html/changelogs/AutoChangeLog-pr-3546.yml deleted file mode 100644 index 3ce8ca350c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3546.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "More Robust Than You" -delete-after: True -changes: - - bugfix: "Blood Brother now properly shows up in player panel" diff --git a/html/changelogs/AutoChangeLog-pr-3547.yml b/html/changelogs/AutoChangeLog-pr-3547.yml deleted file mode 100644 index 402f30bd11..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3547.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - bugfix: "Contents of silicon mobs are no longer considered for targets of radiation. This blocks them from being contaminated." diff --git a/html/changelogs/AutoChangeLog-pr-3549.yml b/html/changelogs/AutoChangeLog-pr-3549.yml deleted file mode 100644 index 0f14e8726a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3549.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Robustin" -delete-after: True -changes: - - balance: "Medical biosuits (and hardsuits) now offer heavy, but not complete, radiation resistance." diff --git a/html/changelogs/AutoChangeLog-pr-3557.yml b/html/changelogs/AutoChangeLog-pr-3557.yml deleted file mode 100644 index 9bf16022d7..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3557.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - rscadd: "Wizards may now shapeshift into viper spiders." diff --git a/html/changelogs/AutoChangeLog-pr-3559.yml b/html/changelogs/AutoChangeLog-pr-3559.yml deleted file mode 100644 index 252225cc5f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3559.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "More Robust Than You" -delete-after: True -changes: - - bugfix: "Fixes champrojector camera bugs" diff --git a/html/changelogs/AutoChangeLog-pr-3567.yml b/html/changelogs/AutoChangeLog-pr-3567.yml deleted file mode 100644 index 746a23b1e6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3567.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Toriate" -delete-after: True -changes: - - bugfix: "fixed Otusian, Wolf, Skunk, and Big Cat ears" diff --git a/html/changelogs/AutoChangeLog-pr-3570.yml b/html/changelogs/AutoChangeLog-pr-3570.yml deleted file mode 100644 index 5399805908..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3570.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Grinders will now grind grown items like cocoa pods again" diff --git a/html/changelogs/AutoChangeLog-pr-3575.yml b/html/changelogs/AutoChangeLog-pr-3575.yml deleted file mode 100644 index 1c9c3fbd31..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3575.yml +++ /dev/null @@ -1,13 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "All maps have been hard synced with upstream. Thank upstream for messing with the cables. Refer to upstream map changelogs for details." - - tweak: "Map changes from prior to the sync have been re-added." - - tweak: "Boxstation security's equipment room is now two tiles larger. The security vendor, biohazard locker, and bomb suit locker are now on the same wall as the rest of the sec equipment lockers." - - tweak: "Boxstation's security equipment room is now equipped with two secways." - - tweak: "Security on all maps no longer contain chem dispensers or chemmasters." - - tweak: "All maps now share the same vulnerability involving the security desk that Boxstation does." - - tweak: "Deltastation's map changes have been restored after the previous sync." - - tweak: "Boxstation's security lobby disposals has been fixed" - - tweak: "Fixed stray r-wall between the evidence room and cell 1 in Boxstation." - - tweak: "Replaced the blast doors in Boxstation's security lobby with shutters." diff --git a/html/changelogs/AutoChangeLog-pr-3581.yml b/html/changelogs/AutoChangeLog-pr-3581.yml deleted file mode 100644 index be4fb833f3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3581.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Improvedname" -delete-after: True -changes: - - tweak: "Blacklists holoparasite's from surplus crates" diff --git a/html/changelogs/AutoChangeLog-pr-3582.yml b/html/changelogs/AutoChangeLog-pr-3582.yml deleted file mode 100644 index f9ebb4cecc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3582.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - bugfix: "Creatures made via gold slime cores will now be given the proper name of their master." diff --git a/html/changelogs/AutoChangeLog-pr-3594.yml b/html/changelogs/AutoChangeLog-pr-3594.yml deleted file mode 100644 index bc014626a2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3594.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "JJRcop" -delete-after: True -changes: - - rscadd: "The heart of darkness revives you as a shadowperson if you aren't one already." diff --git a/html/changelogs/AutoChangeLog-pr-3596.yml b/html/changelogs/AutoChangeLog-pr-3596.yml deleted file mode 100644 index 91534c5dae..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3596.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - rscadd: "Shuttle navigation computers can now place new transit locations over the shuttle's current position." diff --git a/html/changelogs/AutoChangeLog-pr-3599.yml b/html/changelogs/AutoChangeLog-pr-3599.yml deleted file mode 100644 index 19444ff4b3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3599.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - bugfix: "Shades will no longer always hear a heartbeat." diff --git a/html/changelogs/AutoChangeLog-pr-3600.yml b/html/changelogs/AutoChangeLog-pr-3600.yml deleted file mode 100644 index 638233d23f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3600.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - bugfix: "Golem abilities will now be start on cooldown when they are made." diff --git a/html/changelogs/AutoChangeLog-pr-3603.yml b/html/changelogs/AutoChangeLog-pr-3603.yml deleted file mode 100644 index 502e536684..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3603.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xhuis" -delete-after: True -changes: - - bugfix: "You can no longer stack infinitely many stargazers on one tile." diff --git a/html/changelogs/AutoChangeLog-pr-3604.yml b/html/changelogs/AutoChangeLog-pr-3604.yml deleted file mode 100644 index d4bbd36f07..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3604.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xhuis" -delete-after: True -changes: - - bugfix: "Cogscarab shells and marauder armor now appear in the spawners menu." diff --git a/html/changelogs/AutoChangeLog-pr-3606.yml b/html/changelogs/AutoChangeLog-pr-3606.yml deleted file mode 100644 index 74fb1e3772..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3606.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "ninjanomnom & Wjohn" -delete-after: True -changes: - - bugfix: "Cable cuffs now inherit the color of the cables used to make them." - - bugfix: "Split cable stacks keep their color." - - tweak: "The blue cable color is now a better blue." diff --git a/html/changelogs/AutoChangeLog-pr-3610.yml b/html/changelogs/AutoChangeLog-pr-3610.yml deleted file mode 100644 index 4d7996fd0c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3610.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "nicbn" -delete-after: True -changes: - - imageadd: "Chemical heater and smoke machine resprited." diff --git a/html/changelogs/AutoChangeLog-pr-3611.yml b/html/changelogs/AutoChangeLog-pr-3611.yml deleted file mode 100644 index 4cf47effae..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3611.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - soundadd: "Portable generators have a sound while active." - - soundadd: "The supermatter has a sound that scales with stored energy." diff --git a/html/changelogs/AutoChangeLog-pr-3614.yml b/html/changelogs/AutoChangeLog-pr-3614.yml deleted file mode 100644 index f14c2f29a5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3614.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - bugfix: "You can no longer teleport past the ticket stands of the Luxury Emergency Shuttle." diff --git a/html/changelogs/AutoChangeLog-pr-3615.yml b/html/changelogs/AutoChangeLog-pr-3615.yml deleted file mode 100644 index ce963f647e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3615.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - tweak: "The Staff of Change will now randomly assign a cyborg module when transforming a mob into a cyborg." diff --git a/html/changelogs/AutoChangeLog-pr-3617.yml b/html/changelogs/AutoChangeLog-pr-3617.yml deleted file mode 100644 index 23c34fe480..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3617.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - bugfix: "You will no longer be prompted to reenter your body while being defibbed if you can't actually be revived." diff --git a/html/changelogs/AutoChangeLog-pr-3618.yml b/html/changelogs/AutoChangeLog-pr-3618.yml deleted file mode 100644 index 3b90caf60e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3618.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - bugfix: "Lightgeists can now -actually- be spawned with gold slime cores." diff --git a/html/changelogs/AutoChangeLog-pr-3623.yml b/html/changelogs/AutoChangeLog-pr-3623.yml deleted file mode 100644 index 5e385f17f4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3623.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ShizCalev" -delete-after: True -changes: - - bugfix: "Reflectors will no longer drop more materials than they took to make when deconstructed." diff --git a/html/changelogs/AutoChangeLog-pr-3624.yml b/html/changelogs/AutoChangeLog-pr-3624.yml deleted file mode 100644 index c98047a04c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3624.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Xhuis" -delete-after: True -changes: - - balance: "Clockwork marauders now move more slowly below 40% health." - - balance: "Instead of a 40% chance (or more) chance to block projectiles, clockwork marauders now have three fixed 100% blocks; after using those three, they cannot block anymore without avoiding projectiles for ten seconds. This number increases to four if war is declared." - - balance: "Projectiles that deal no damage DO reduce marauders' shield health. Use disabler shots to open them up, then use lasers to go for the kill!" diff --git a/html/changelogs/AutoChangeLog-pr-3630.yml b/html/changelogs/AutoChangeLog-pr-3630.yml deleted file mode 100644 index 0c69e04f40..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3630.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - rscadd: "Admins are now able to mark open tickets as being handled. This makes it easier for staff members to provide feedback to players reporting issues via the admin help button." diff --git a/html/changelogs/AutoChangeLog-pr-3634.yml b/html/changelogs/AutoChangeLog-pr-3634.yml deleted file mode 100644 index 3345c5ba6b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3634.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "The vore panel and other vore-related commands are now operational again." diff --git a/html/changelogs/AutoChangeLog-pr-3635.yml b/html/changelogs/AutoChangeLog-pr-3635.yml deleted file mode 100644 index 99fb1d5289..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3635.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ktccd" -delete-after: True -changes: - - rscdel: "Removed borer-HUDs" diff --git a/html/changelogs/AutoChangeLog-pr-3637.yml b/html/changelogs/AutoChangeLog-pr-3637.yml deleted file mode 100644 index b9dfcaecb8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3637.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Fixed LOOC error messages not appearing in goonchat" diff --git a/html/changelogs/AutoChangeLog-pr-3638.yml b/html/changelogs/AutoChangeLog-pr-3638.yml deleted file mode 100644 index d661f94d61..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3638.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Miscreants will now generate properly." diff --git a/html/changelogs/AutoChangeLog-pr-3641.yml b/html/changelogs/AutoChangeLog-pr-3641.yml deleted file mode 100644 index 004acb1aaa..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3641.yml +++ /dev/null @@ -1,19 +0,0 @@ -author: "as334" -delete-after: True -changes: - - rscadd: "Massively Expands Atmospherics." - - rscadd: "New gases have been added:Brown Gas, Pluoxium, Stimulum, Hyper-Noblium and Tritium" - - rscadd: "Brown gas is acidic to breath, but mildly stimulation." - - rscadd: "Stimulum is more stimulating and much safer." - - rscadd: "Pluoxium is a non-reactive form of oxygen that delivers more oxygen into the bloodstream." - - rscadd: "Hyper-Noblium is an extremely noble gas, and stops gases from reacting." - - rscadd: "Tritium is radioactive and flammable." - - rscadd: "New reactions have also been added." - - rscadd: "Fusion. Plasma will fuse when heated to a high thermal energy, with tritium as a catalyst. Make -sure to manage the waste products." - - rscadd: "Brown gas formation: Heat oxygen and nitrogen." - - rscadd: "BZ fixation: Heat Tritium and Plasma." - - rscadd: "Stimulum formation: Heated tritium,plasma,bz and browns." - - rscadd: "Hyper-Noblium condensation: Needs nitrogen and tritium at a high heat. Cools rapidly." - - rscdel: "Freon has been removed." - - rscadd: "Water vapor now freezes the tile it is on when it is cooled heavily." diff --git a/html/changelogs/AutoChangeLog-pr-3649.yml b/html/changelogs/AutoChangeLog-pr-3649.yml deleted file mode 100644 index 04a9765da6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3649.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Cable coils will no longer appear as weirdly colored APCs" diff --git a/html/changelogs/AutoChangeLog-pr-3663.yml b/html/changelogs/AutoChangeLog-pr-3663.yml deleted file mode 100644 index 7fe666a739..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3663.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Mark9013100" -delete-after: True -changes: - - tweak: "The Medical Cloning manual has been updated." diff --git a/html/changelogs/AutoChangeLog-pr-3744.yml b/html/changelogs/AutoChangeLog-pr-3744.yml deleted file mode 100644 index 44119b46cf..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3744.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xhuis" -delete-after: True -changes: - - tweak: "Abscond and Reebe rifts now place servants directly at the Ark instead of below the \"base\" area." diff --git a/html/changelogs/AutoChangeLog-pr-3745.yml b/html/changelogs/AutoChangeLog-pr-3745.yml deleted file mode 100644 index 2fee610764..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3745.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - bugfix: "Fixes the cargo shuttle occasionally breaking if a mob got on at exactly the right time." diff --git a/html/changelogs/AutoChangeLog-pr-3754.yml b/html/changelogs/AutoChangeLog-pr-3754.yml deleted file mode 100644 index f6d2468d33..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3754.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - bugfix: "Ghosts can no longer create sparks from the hand teleporter's portals." diff --git a/html/changelogs/AutoChangeLog-pr-3759.yml b/html/changelogs/AutoChangeLog-pr-3759.yml deleted file mode 100644 index 83f839fab2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3759.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Thefastfoodguy" -delete-after: True -changes: - - bugfix: "Spamming runes / battlecries / etc will no longer trigger spam prevention" diff --git a/html/changelogs/AutoChangeLog-pr-3763.yml b/html/changelogs/AutoChangeLog-pr-3763.yml deleted file mode 100644 index a2aa4be658..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3763.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "More Robust Than You" -delete-after: True -changes: - - bugfix: "You can now use banhammers as a weapon" diff --git a/html/changelogs/AutoChangeLog-pr-3765.yml b/html/changelogs/AutoChangeLog-pr-3765.yml deleted file mode 100644 index 6ceb24e417..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3765.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "XDTM" -delete-after: True -changes: - - rscadd: "Ghosts now have a Toggle Health Scan verb, which allows them to health scan mobs they click on." diff --git a/html/changelogs/AutoChangeLog-pr-3769.yml b/html/changelogs/AutoChangeLog-pr-3769.yml deleted file mode 100644 index 0b0822cd9d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3769.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - spellcheck: "spellchecked the hotel staff." diff --git a/html/changelogs/AutoChangeLog-pr-3770.yml b/html/changelogs/AutoChangeLog-pr-3770.yml deleted file mode 100644 index 792fb6453d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3770.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Jalleo" -delete-after: True -changes: - - tweak: "Removed a variable to state which RCD's can deconstruct reinforced walls" - - balance: "Made combat (ERT ones) and admin RCDs able to deconstruct r walls alongside borg ones" diff --git a/html/changelogs/AutoChangeLog-pr-3771.yml b/html/changelogs/AutoChangeLog-pr-3771.yml deleted file mode 100644 index 4162338e5d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3771.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "nicbn" -delete-after: True -changes: - - imageadd: "Canister sprites for the new gases" diff --git a/html/changelogs/AutoChangeLog-pr-3774.yml b/html/changelogs/AutoChangeLog-pr-3774.yml deleted file mode 100644 index 4ed16ffa41..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3774.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - bugfix: "Directional character icon previews now function properly. Other things relying on getflaticon probably work with directional icons again, as well." diff --git a/html/changelogs/AutoChangeLog-pr-3775.yml b/html/changelogs/AutoChangeLog-pr-3775.yml deleted file mode 100644 index b4565e6526..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3775.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Floyd / Qustinnus (And all the sounds by Kayozz11 from Yogstation)" -delete-after: True -changes: - - soundadd: "Adds about 30 new ambience sounds" - - refactor: "added new defines for ambience lists." diff --git a/html/changelogs/AutoChangeLog-pr-3778.yml b/html/changelogs/AutoChangeLog-pr-3778.yml deleted file mode 100644 index 576fa34610..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3778.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - bugfix: "Shuttle parallax has been fixed once more" diff --git a/html/changelogs/AutoChangeLog-pr-3779.yml b/html/changelogs/AutoChangeLog-pr-3779.yml deleted file mode 100644 index 8572baba65..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3779.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Kor" -delete-after: True -changes: - - bugfix: "Cult mode will once again print out names at round end." diff --git a/html/changelogs/AutoChangeLog-pr-3780.yml b/html/changelogs/AutoChangeLog-pr-3780.yml deleted file mode 100644 index 8b098e1d18..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3780.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Floyd / Qustinnus" -delete-after: True -changes: - - soundadd: "Redtexting as a traitor now plays a depressing tune to you" diff --git a/html/changelogs/AutoChangeLog-pr-3784.yml b/html/changelogs/AutoChangeLog-pr-3784.yml deleted file mode 100644 index 602947e6e2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3784.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - balance: "Dying in shapeshifted form reverts you to the original one. (You're still dead)" diff --git a/html/changelogs/AutoChangeLog-pr-3788.yml b/html/changelogs/AutoChangeLog-pr-3788.yml deleted file mode 100644 index 0d3cccb1bd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3788.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - bugfix: "The holodeck now has an \"Offline\" option." diff --git a/html/changelogs/AutoChangeLog-pr-3789.yml b/html/changelogs/AutoChangeLog-pr-3789.yml deleted file mode 100644 index 2f75a3821b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3789.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Swindly" -delete-after: True -changes: - - rscadd: "Organ storage bags can be used to perform limb augmentation." diff --git a/html/changelogs/AutoChangeLog-pr-3795.yml b/html/changelogs/AutoChangeLog-pr-3795.yml deleted file mode 100644 index 48dff5c2a3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3795.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Toriate" -delete-after: True -changes: - - rscadd: "Added security skirts" - - rscadd: "Added security skirts to security lockers" - - rscadd: "Added the HoS Trenchcloak" - - imageadd: "added Security Skirt and Trenchcloak sprites" diff --git a/html/changelogs/AutoChangeLog-pr-3799.yml b/html/changelogs/AutoChangeLog-pr-3799.yml deleted file mode 100644 index e1132e5b67..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3799.yml +++ /dev/null @@ -1,18 +0,0 @@ -author: "deathride58" -delete-after: True -changes: - - tweak: "Warden's office on Boxstation has been expanded one tile downward." - - tweak: "Warden's office on Boxstation has been reorganized." - - tweak: "Security on Boxstation now has actual brig interior doors." - - tweak: "Reinforced windows have been added between the internal Security Lobby and external Security Lobby." - - tweak: "Secways on Boxstation now have fancier docks." - - tweak: "Security on Boxstation now has a cyborg recharging station, right below the two secways." - - tweak: "On Boxstation, the Head of Security will now spawn in their office." - - tweak: "Boxstation's Clown Office now contains a proper display case for the emergency bike horn instead of a reinforced glass encasement." - - tweak: "The center-most table has been removed from the Abandoned Cafe on Boxstation." - - tweak: "Boxstation's Conference Room now has a coffee vendor again." - - tweak: "The dare dice table in Boxstation's maint bar has been reduced in vertical size by one tile." - - tweak: "The booze-o-mat in Boxstation's maint bar has been replaced with a box of drinking glasses. Mix your own booze for once, nerds." - - tweak: "The maintenance observatory room in Boxstation's maintenance is now properly angled toward space." - - tweak: "Boxstation's emitter room in engineering has been expanded. (From #3717)" - - tweak: "Boxstation's engineering now features a pump to redirect waste gas into the waste loop. (From #3717)" diff --git a/html/changelogs/AutoChangeLog-pr-3800.yml b/html/changelogs/AutoChangeLog-pr-3800.yml deleted file mode 100644 index 6e57619f9b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3800.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Toriate" -delete-after: True -changes: - - rscadd: "Added micromedkits" - - tweak: "medkits now use Cameron's sprites" - - imageadd: "added @CameronWoof 's Medkit sprites" diff --git a/html/changelogs/AutoChangeLog-pr-3802.yml b/html/changelogs/AutoChangeLog-pr-3802.yml deleted file mode 100644 index 7ae889924f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3802.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ninjanomnom" -delete-after: True -changes: - - bugfix: "You can no longer set up the auxiliary base's shuttle beacon overlapping with the edge of the map" diff --git a/html/changelogs/AutoChangeLog-pr-3803.yml b/html/changelogs/AutoChangeLog-pr-3803.yml deleted file mode 100644 index d6d50d394c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3803.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "WJohnston" -delete-after: True -changes: - - bugfix: "Ancient station lighting fixed on beta side (medical and atmos remains)" diff --git a/html/changelogs/AutoChangeLog-pr-3809.yml b/html/changelogs/AutoChangeLog-pr-3809.yml deleted file mode 100644 index ee22cd1ea4..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3809.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - rscadd: "Added frog masks. Reeeeeeeeee!!" diff --git a/html/changelogs/AutoChangeLog-pr-3821.yml b/html/changelogs/AutoChangeLog-pr-3821.yml deleted file mode 100644 index 0f164b7fad..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3821.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - tweak: "Added deterministic output slots to the slime processor" diff --git a/html/changelogs/AutoChangeLog-pr-3824.yml b/html/changelogs/AutoChangeLog-pr-3824.yml deleted file mode 100644 index c5883c0061..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3824.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - bugfix: "EMPs can pulse multiple wires" diff --git a/html/changelogs/AutoChangeLog-pr-3827.yml b/html/changelogs/AutoChangeLog-pr-3827.yml deleted file mode 100644 index b7bc1053a3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3827.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "More Robust Than You" -delete-after: True -changes: - - bugfix: "Blobbernauts and spores are no longer killed by blob victory" diff --git a/html/changelogs/AutoChangeLog-pr-3834.yml b/html/changelogs/AutoChangeLog-pr-3834.yml deleted file mode 100644 index bf6bdbb882..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3834.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "More Robust Than You" -delete-after: True -changes: - - tweak: "Monkeys can no longer transmit diseases through hardsuits" diff --git a/html/changelogs/AutoChangeLog-pr-3839.yml b/html/changelogs/AutoChangeLog-pr-3839.yml deleted file mode 100644 index 1e3059bb12..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3839.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xhuis" -delete-after: True -changes: - - rscadd: "Ratvar and Nar-Sie plushes now have a unique interaction." diff --git a/html/changelogs/AutoChangeLog-pr-3840.yml b/html/changelogs/AutoChangeLog-pr-3840.yml deleted file mode 100644 index 489865c42f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3840.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CitadelStationBot" -delete-after: True -changes: - - bugfix: "Adds an organ storage bag to the syndicate medborg." diff --git a/html/changelogs/AutoChangeLog-pr-3842.yml b/html/changelogs/AutoChangeLog-pr-3842.yml deleted file mode 100644 index ab96367b12..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3842.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Fixed some interactions with ghosts and items" diff --git a/html/changelogs/AutoChangeLog-pr-3844.yml b/html/changelogs/AutoChangeLog-pr-3844.yml deleted file mode 100644 index 86dcebfd00..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3844.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Naksu" -delete-after: True -changes: - - bugfix: "Nonhumans such as monkeys can now be scanned for chemicals with the health analyzer." diff --git a/html/changelogs/AutoChangeLog-pr-3847.yml b/html/changelogs/AutoChangeLog-pr-3847.yml deleted file mode 100644 index c55a0ac5bd..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3847.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Xhuis" -delete-after: True -changes: - - balance: "Clockwork marauders are now on harm intent." - - balance: "The Clockwork Marauder scripture now takes five seconds longer to invoke per marauder summoned in the last 20 seconds, capping at 30 extra seconds." - - balance: "Clockwork marauders no longer gain a health bonus when war is declared." diff --git a/html/changelogs/AutoChangeLog-pr-3848.yml b/html/changelogs/AutoChangeLog-pr-3848.yml deleted file mode 100644 index 9d83549fc5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-3848.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "More Robust Than You" -delete-after: True -changes: - - tweak: "Xenobio blobbernauts can no longer walk on blob tiles" diff --git a/html/changelogs/Bawhoppen Forgot to add a Changelog.yml b/html/changelogs/Bawhoppen Forgot to add a Changelog.yml deleted file mode 100644 index 9c9895e895..0000000000 --- a/html/changelogs/Bawhoppen Forgot to add a Changelog.yml +++ /dev/null @@ -1,35 +0,0 @@ -################################ -# Example Changelog File -# -# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. -# -# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) -# When it is, any changes listed below will disappear. -# -# Valid Prefixes: -# bugfix -# wip (For works in progress) -# tweak -# soundadd -# sounddel -# rscadd (general adding of nice things) -# rscdel (general deleting of nice things) -# imageadd -# imagedel -# spellcheck (typo fixes) -# experiment -################################# - -# Your name. -author: "Bawhoppen" - -# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. -delete-after: True - -# Any changes you've made. See valid prefix list above. -# INDENT WITH TWO SPACES. NOT TABS. SPACES. -# SCREW THIS UP AND IT WON'T WORK. -# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. -# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. -changes: - - tweak: "Smoke machine board has been moved to tech storage." diff --git a/html/changelogs/example.yml b/html/changelogs/example.yml deleted file mode 100644 index 48aa13aa11..0000000000 --- a/html/changelogs/example.yml +++ /dev/null @@ -1,36 +0,0 @@ -################################ -# Example Changelog File -# -# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. -# -# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) -# When it is, any changes listed below will disappear. -# -# Valid Prefixes: -# bugfix -# wip (For works in progress) -# tweak -# soundadd -# sounddel -# rscadd (general adding of nice things) -# rscdel (general deleting of nice things) -# imageadd -# imagedel -# spellcheck (typo fixes) -# experiment -################################# - -# Your name. -author: " - -# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. -delete-after: True - -# Any changes you've made. See valid prefix list above. -# INDENT WITH TWO SPACES. NOT TABS. SPACES. -# SCREW THIS UP AND IT WON'T WORK. -# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. -# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. -changes: - - rscadd: "Added a changelog editing system that should cause fewer conflicts and more accurate timestamps." - - rscdel: "Killed innocent kittens." From 6e7f89f811642f7ac993bbde5d9a56240661abcf Mon Sep 17 00:00:00 2001 From: LetterJay Date: Thu, 9 Nov 2017 01:23:33 -0600 Subject: [PATCH 028/114] again --- html/changelog.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index a4b13b52cf..45dfe57b20 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -1,7 +1,7 @@ - /tg/ Station 13 Changelog + Citadel Station 13 Changelog - - -
    - [src.get_stats_part()] -
    -
    - [src.get_equipment_list()] -
    -
    -
    - [src.get_commands()] -
    - - - "} - return output - -/obj/mecha/combat/honker/get_commands() - var/output = {"
    -
    Sounds of HONK:
    - -
    - "} - output += ..() - return output - - -/obj/mecha/combat/honker/get_equipment_list() - if(!equipment.len) - return - var/output = "Honk-ON-Systems:
    " - for(var/obj/item/mecha_parts/mecha_equipment/MT in equipment) - output += "
    [MT.get_equip_info()]
    " - output += "
    " - return output - - - -/obj/mecha/combat/honker/mechstep(direction) - var/result = step(src,direction) - if(result) - if(!squeak) - playsound(src, "clownstep", 70, 1) - squeak = 1 - else - squeak = 0 - return result - -/obj/mecha/combat/honker/Topic(href, href_list) - ..() - if (href_list["play_sound"]) - switch(href_list["play_sound"]) - if("sadtrombone") - playsound(src, 'sound/misc/sadtrombone.ogg', 50) - return - -/proc/rand_hex_color() - var/list/colors = list("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f") - var/color="" - for (var/i=0;i<6;i++) - color = color+pick(colors) - return color - - -======= wreckage = /obj/structure/mecha_wreckage/honker add_req_access = 0 max_equip = 3 @@ -298,6 +152,3 @@ for (var/i=0;i<6;i++) color = color+pick(colors) return color - - ->>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental From 81d1abe64e5f73926bcf7851a42700f7f13edf2f Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 12 Nov 2017 08:09:12 -0600 Subject: [PATCH 099/114] Update message.dm --- code/game/machinery/computer/message.dm | 477 ------------------------ 1 file changed, 477 deletions(-) diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index ffd2197133..d41bcce164 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -1,479 +1,3 @@ -<<<<<<< HEAD - -// Allows you to monitor messages that passes the server. - - - - -/obj/machinery/computer/message_monitor - name = "message monitor console" - desc = "Used to Monitor the crew's messages, that are sent via PDA. Can also be used to view Request Console messages." - icon_screen = "comm_logs" - circuit = /obj/item/circuitboard/computer/message_monitor - //Server linked to. - var/obj/machinery/message_server/linkedServer = null - //Sparks effect - For emag - var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread - //Messages - Saves me time if I want to change something. - var/noserver = "ALERT: No server detected." - var/incorrectkey = "ALERT: Incorrect decryption key!" - var/defaultmsg = "Welcome. Please select an option." - var/rebootmsg = "%$&(�: Critical %$$@ Error // !RestArting! - ?pLeaSe wAit!" - //Computer properties - var/screen = 0 // 0 = Main menu, 1 = Message Logs, 2 = Hacked screen, 3 = Custom Message - var/hacking = 0 // Is it being hacked into by the AI/Cyborg - var/message = "System bootup complete. Please select an option." // The message that shows on the main menu. - var/auth = 0 // Are they authenticated? - var/optioncount = 7 - // Custom Message Properties - var/customsender = "System Administrator" - var/obj/item/device/pda/customrecepient = null - var/customjob = "Admin" - var/custommessage = "This is a test, please ignore." - - light_color = LIGHT_COLOR_GREEN - -/obj/machinery/computer/message_monitor/attackby(obj/item/O, mob/living/user, params) - if(istype(O, /obj/item/screwdriver) && emagged) - //Stops people from just unscrewing the monitor and putting it back to get the console working again. - to_chat(user, "It is too hot to mess with!") - else - return ..() - -/obj/machinery/computer/message_monitor/emag_act(mob/user) - if(emagged) - return - if(!isnull(src.linkedServer)) - emagged = TRUE - screen = 2 - spark_system.set_up(5, 0, src) - src.spark_system.start() - var/obj/item/paper/monitorkey/MK = new/obj/item/paper/monitorkey - MK.loc = src.loc - // Will help make emagging the console not so easy to get away with. - MK.info += "

    �%@%(*$%&(�&?*(%&�/{}" - var/time = 100 * length(src.linkedServer.decryptkey) - addtimer(CALLBACK(src, .proc/UnmagConsole), time) - message = rebootmsg - else - to_chat(user, "A no server error appears on the screen.") - -/obj/machinery/computer/message_monitor/Initialize() - . = ..() - //Is the server isn't linked to a server, and there's a server available, default it to the first one in the list. - if(!linkedServer) - if(GLOB.message_servers && GLOB.message_servers.len > 0) - linkedServer = GLOB.message_servers[1] - -/obj/machinery/computer/message_monitor/attack_hand(mob/living/user) - if(..()) - return - //If the computer is being hacked or is emagged, display the reboot message. - if(hacking || emagged) - message = rebootmsg - var/dat = "
    /
    " - - if(auth) - dat += "

    \[Authenticated\] /" - dat += " Server Power: [src.linkedServer && src.linkedServer.active ? "\[On\]":"\[Off\]"]

    " - else - dat += "

    \[Unauthenticated\] /" - dat += " Server Power: [src.linkedServer && src.linkedServer.active ? "\[On\]":"\[Off\]"]

    " - - if(hacking || emagged) - screen = 2 - else if(!auth || !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) - if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - screen = 0 - - switch(screen) - //Main menu - if(0) - // = TAB - var/i = 0 - dat += "
    [++i]. Link To A Server
    " - if(auth) - if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) - dat += "
    ERROR: Server not found!
    " - else - dat += "
    [++i]. View Message Logs
    " - dat += "
    [++i]. View Request Console Logs
    " - dat += "
    [++i]. Clear Message Logs
    " - dat += "
    [++i]. Clear Request Console Logs
    " - dat += "
    [++i]. Set Custom Key
    " - dat += "
    [++i]. Send Admin Message
    " - else - for(var/n = ++i; n <= optioncount; n++) - dat += "
    [n]. ---------------
    " - if(issilicon(usr) && is_special_character(usr)) - //Malf/Traitor AIs can bruteforce into the system to gain the Key. - dat += "
    *&@#. Bruteforce Key
    " - else - dat += "
    " - - //Bottom message - if(!auth) - dat += "

    Please authenticate with the server in order to show additional options." - else - dat += "

    Reg, #514 forbids sending messages to a Head of Staff containing Erotic Rendering Properties." - - //Message Logs - if(1) - var/index = 0 - //var/recipient = "Unspecified" //name of the person - //var/sender = "Unspecified" //name of the sender - //var/message = "Blank" //transferred message - dat += "
    Back - Refresh

    " - dat += "
    " - for(var/datum/data_pda_msg/pda in src.linkedServer.pda_msgs) - index++ - if(index > 3000) - break - // Del - Sender - Recepient - Message - // X - Al Green - Your Mom - WHAT UP!? - dat += "" - dat += "
    XSenderRecipientMessage
    X
    [pda.sender][pda.recipient][pda.message][pda.photo ? "(Photo)":""]
    " - //Hacking screen. - if(2) - if(isAI(user) || iscyborg(user)) - dat += "Brute-forcing for server key.
    It will take 20 seconds for every character that the password has." - dat += "In the meantime, this console can reveal your true intentions if you let someone access it. Make sure no humans enter the room during that time." - else - //It's the same message as the one above but in binary. Because robots understand binary and humans don't... well I thought it was clever. - dat += {"01000010011100100111010101110100011001010010110
    - 10110011001101111011100100110001101101001011011100110011
    - 10010000001100110011011110111001000100000011100110110010
    - 10111001001110110011001010111001000100000011010110110010
    - 10111100100101110001000000100100101110100001000000111011
    - 10110100101101100011011000010000001110100011000010110101
    - 10110010100100000001100100011000000100000011100110110010
    - 10110001101101111011011100110010001110011001000000110011
    - 00110111101110010001000000110010101110110011001010111001
    - 00111100100100000011000110110100001100001011100100110000
    - 10110001101110100011001010111001000100000011101000110100
    - 00110000101110100001000000111010001101000011001010010000
    - 00111000001100001011100110111001101110111011011110111001
    - 00110010000100000011010000110000101110011001011100010000
    - 00100100101101110001000000111010001101000011001010010000
    - 00110110101100101011000010110111001110100011010010110110
    - 10110010100101100001000000111010001101000011010010111001
    - 10010000001100011011011110110111001110011011011110110110
    - 00110010100100000011000110110000101101110001000000111001
    - 00110010101110110011001010110000101101100001000000111100
    - 10110111101110101011100100010000001110100011100100111010
    - 10110010100100000011010010110111001110100011001010110111
    - 00111010001101001011011110110111001110011001000000110100
    - 10110011000100000011110010110111101110101001000000110110
    - 00110010101110100001000000111001101101111011011010110010
    - 10110111101101110011001010010000001100001011000110110001
    - 10110010101110011011100110010000001101001011101000010111
    - 00010000001001101011000010110101101100101001000000111001
    - 10111010101110010011001010010000001101110011011110010000
    - 00110100001110101011011010110000101101110011100110010000
    - 00110010101101110011101000110010101110010001000000111010
    - 00110100001100101001000000111001001101111011011110110110
    - 10010000001100100011101010111001001101001011011100110011
    - 10010000001110100011010000110000101110100001000000111010
    - 001101001011011010110010100101110"} - - //Fake messages - if(3) - dat += "
    Back - Reset

    " - - dat += {" - - - - "} - //Sender - Sender's Job - Recepient - Message - //Al Green- Your Dad - Your Mom - WHAT UP!? - - dat += {" - - - "} - dat += "
    SenderSender's JobRecipientMessage
    [customsender][customjob][customrecepient ? customrecepient.owner : "NONE"][custommessage]

    Send" - - //Request Console Logs - if(4) - - var/index = 0 - /* data_rc_msg - X - 5% - var/rec_dpt = "Unspecified" //name of the person - 15% - var/send_dpt = "Unspecified" //name of the sender- 15% - var/message = "Blank" //transferred message - 300px - var/stamp = "Unstamped" - 15% - var/id_auth = "Unauthenticated" - 15% - var/priority = "Normal" - 10% - */ - dat += "
    Back - Refresh

    " - dat += {" - "} - for(var/datum/data_rc_msg/rc in src.linkedServer.rc_msgs) - index++ - if(index > 3000) - break - // Del - Sender - Recepient - Message - // X - Al Green - Your Mom - WHAT UP!? - dat += {" - "} - dat += "
    XSending Dep.Receiving Dep.MessageStampID Auth.Priority.
    X
    [rc.send_dpt][rc.rec_dpt][rc.message][rc.stamp][rc.id_auth][rc.priority]
    " - - message = defaultmsg - var/datum/browser/popup = new(user, "hologram_console", name, 700, 700) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - -/obj/machinery/computer/message_monitor/proc/BruteForce(mob/user) - if(isnull(linkedServer)) - to_chat(user, "Could not complete brute-force: Linked Server Disconnected!") - else - var/currentKey = src.linkedServer.decryptkey - to_chat(user, "Brute-force completed! The key is '[currentKey]'.") - src.hacking = 0 - src.screen = 0 // Return the screen back to normal - -/obj/machinery/computer/message_monitor/proc/UnmagConsole() - emagged = FALSE - -/obj/machinery/computer/message_monitor/proc/ResetMessage() - customsender = "System Administrator" - customrecepient = null - custommessage = "This is a test, please ignore." - customjob = "Admin" - -/obj/machinery/computer/message_monitor/Topic(href, href_list) - if(..()) - return - - if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr)) - //Authenticate - if (href_list["auth"]) - if(!linkedServer || linkedServer.stat & (NOPOWER|BROKEN)) - message = noserver - else - if(auth) - auth = 0 - screen = 0 - else - var/dkey = trim(input(usr, "Please enter the decryption key.") as text|null) - if(dkey && dkey != "") - if(src.linkedServer.decryptkey == dkey) - auth = 1 - else - message = incorrectkey - - //Turn the server on/off. - if (href_list["active"]) - if(auth) - linkedServer.active = !linkedServer.active - //Find a server - if (href_list["find"]) - if(GLOB.message_servers && GLOB.message_servers.len > 1) - src.linkedServer = input(usr,"Please select a server.", "Select a server.", null) as null|anything in GLOB.message_servers - message = "NOTICE: Server selected." - else if(GLOB.message_servers && GLOB.message_servers.len > 0) - linkedServer = GLOB.message_servers[1] - message = "NOTICE: Only Single Server Detected - Server selected." - else - message = noserver - - //View the logs - KEY REQUIRED - if (href_list["view"]) - if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - else - if(auth) - src.screen = 1 - - //Clears the logs - KEY REQUIRED - if (href_list["clear"]) - if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - else - if(auth) - src.linkedServer.pda_msgs = list() - message = "NOTICE: Logs cleared." - //Clears the request console logs - KEY REQUIRED - if (href_list["clearr"]) - if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - else - if(auth) - src.linkedServer.rc_msgs = list() - message = "NOTICE: Logs cleared." - //Change the password - KEY REQUIRED - if (href_list["pass"]) - if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - else - if(auth) - var/dkey = trim(stripped_input(usr, "Please enter the decryption key.")) - if(dkey && dkey != "") - if(src.linkedServer.decryptkey == dkey) - var/newkey = trim(input(usr,"Please enter the new key (3 - 16 characters max):")) - if(length(newkey) <= 3) - message = "NOTICE: Decryption key too short!" - else if(length(newkey) > 16) - message = "NOTICE: Decryption key too long!" - else if(newkey && newkey != "") - src.linkedServer.decryptkey = newkey - message = "NOTICE: Decryption key set." - else - message = incorrectkey - - //Hack the Console to get the password - if (href_list["hack"]) - if(issilicon(usr) && is_special_character(usr)) - src.hacking = 1 - src.screen = 2 - //Time it takes to bruteforce is dependant on the password length. - spawn(100*length(src.linkedServer.decryptkey)) - if(src && src.linkedServer && usr) - BruteForce(usr) - //Delete the log. - if (href_list["delete"]) - //Are they on the view logs screen? - if(screen == 1) - if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - else //if(istype(href_list["delete"], /datum/data_pda_msg)) - src.linkedServer.pda_msgs -= locate(href_list["delete"]) - message = "NOTICE: Log Deleted!" - //Delete the request console log. - if (href_list["deleter"]) - //Are they on the view logs screen? - if(screen == 4) - if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - else //if(istype(href_list["delete"], /datum/data_pda_msg)) - src.linkedServer.rc_msgs -= locate(href_list["deleter"]) - message = "NOTICE: Log Deleted!" - //Create a custom message - if (href_list["msg"]) - if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - else - if(auth) - src.screen = 3 - //Fake messaging selection - KEY REQUIRED - if (href_list["select"]) - if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - screen = 0 - else - switch(href_list["select"]) - - //Reset - if("Reset") - ResetMessage() - - //Select Your Name - if("Sender") - customsender = stripped_input(usr, "Please enter the sender's name.") - - //Select Receiver - if("Recepient") - //Get out list of viable PDAs - var/list/obj/item/device/pda/sendPDAs = get_viewable_pdas() - if(GLOB.PDAs && GLOB.PDAs.len > 0) - customrecepient = input(usr, "Select a PDA from the list.") as null|anything in sortNames(sendPDAs) - else - customrecepient = null - - //Enter custom job - if("RecJob") - customjob = stripped_input(usr, "Please enter the sender's job.") - - //Enter message - if("Message") - custommessage = stripped_input(usr, "Please enter your message.") - - //Send message - if("Send") - - if(isnull(customsender) || customsender == "") - customsender = "UNKNOWN" - - if(isnull(customrecepient)) - message = "NOTICE: No recepient selected!" - return src.attack_hand(usr) - - if(isnull(custommessage) || custommessage == "") - message = "NOTICE: No message entered!" - return src.attack_hand(usr) - - var/obj/item/device/pda/PDARec = null - for (var/obj/item/device/pda/P in get_viewable_pdas()) - if(P.owner == customsender) - PDARec = P - //Sender isn't faking as someone who exists - if(isnull(PDARec)) - src.linkedServer.send_pda_message("[customrecepient.owner]", "[customsender]","[custommessage]") - customrecepient.tnote += "← From
    [customsender] ([customjob]):
    [custommessage]
    " - if (!customrecepient.silent) - playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1) - customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3) - if( customrecepient.loc && ishuman(customrecepient.loc) ) - var/mob/living/carbon/human/H = customrecepient.loc - to_chat(H, "[icon2html(customrecepient, viewers(H))] Message from [customsender] ([customjob]), \"[custommessage]\" (Reply)") - log_talk(usr,"[key_name(usr)] (PDA: [customsender]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA) - customrecepient.cut_overlays() - customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r")) - //Sender is faking as someone who exists - else - src.linkedServer.send_pda_message("[customrecepient.owner]", "[PDARec.owner]","[custommessage]") - customrecepient.tnote += "← From [PDARec.owner] ([customjob]):
    [custommessage]
    " - if (!customrecepient.silent) - playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1) - customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3) - if( customrecepient.loc && ishuman(customrecepient.loc) ) - var/mob/living/carbon/human/H = customrecepient.loc - to_chat(H, "[icon2html(customrecepient, H)] Message from [PDARec.owner] ([customjob]), \"[custommessage]\" (Reply)") - log_talk(usr,"[key_name(usr)] (PDA: [PDARec.owner]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA) - customrecepient.cut_overlays() - customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r")) - //Finally.. - ResetMessage() - - //Request Console Logs - KEY REQUIRED - if(href_list["viewr"]) - if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) - message = noserver - else - if(auth) - src.screen = 4 - - if (href_list["back"]) - src.screen = 0 - - return src.attack_hand(usr) - - -/obj/item/paper/monitorkey - //..() - name = "monitor decryption key" - var/obj/machinery/message_server/server = null - -/obj/item/paper/monitorkey/Initialize() - ..() - return INITIALIZE_HINT_LATELOAD - -/obj/item/paper/monitorkey/LateInitialize() - if(GLOB.message_servers) - for(var/obj/machinery/message_server/server in GLOB.message_servers) - if(!isnull(server)) - if(!isnull(server.decryptkey)) - info = "

    Daily Key Reset


    The new message monitor key is '[server.decryptkey]'.
    Please keep this a secret and away from the clown.
    If necessary, change the password to a more secure one." - info_links = info - add_overlay("paper_words") - break -======= - // Allows you to monitor messages that passes the server. @@ -946,4 +470,3 @@ info_links = info add_overlay("paper_words") break ->>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental From 4c0c0a36a3e840443b86e727aaa7d3b43e0a00cc Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 12 Nov 2017 08:21:13 -0600 Subject: [PATCH 100/114] Automatic changelog generation for PR #3879 [ci skip] --- html/changelogs/AutoChangeLog-pr-3879.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3879.yml diff --git a/html/changelogs/AutoChangeLog-pr-3879.yml b/html/changelogs/AutoChangeLog-pr-3879.yml new file mode 100644 index 0000000000..440ea3e616 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3879.yml @@ -0,0 +1,8 @@ +author: "as334" +delete-after: True +changes: + - rscadd: "Pluoxium can now be formed by irradiating tiles with CO2 in the air." + - rscadd: "Rad collectors now steadily form Tritium at a slow pace." + - balance: "Nerfs fusion by making it slower, and produce radioactivity." + - balance: "Noblium formation now requires significantly more energy input." + - balance: "Tanks now melt if their temperature is above 1 Million Kelvin." From 298ddc8fa966dfbadcc5567c8ac0072193b9cc5e Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 12 Nov 2017 08:56:30 -0600 Subject: [PATCH 101/114] Update scrolls.dm --- code/game/objects/items/scrolls.dm | 77 ------------------------------ 1 file changed, 77 deletions(-) diff --git a/code/game/objects/items/scrolls.dm b/code/game/objects/items/scrolls.dm index 963dac5656..2fc8e8559c 100644 --- a/code/game/objects/items/scrolls.dm +++ b/code/game/objects/items/scrolls.dm @@ -1,79 +1,3 @@ -<<<<<<< HEAD -/obj/item/teleportation_scroll - name = "scroll of teleportation" - desc = "A scroll for moving around." - icon = 'icons/obj/wizard.dmi' - icon_state = "scroll" - var/uses = 4 - w_class = WEIGHT_CLASS_SMALL - item_state = "paper" - throw_speed = 3 - throw_range = 7 - origin_tech = "bluespace=6" - resistance_flags = FLAMMABLE - -/obj/item/teleportation_scroll/apprentice - name = "lesser scroll of teleportation" - uses = 1 - origin_tech = "bluespace=5" - - - -/obj/item/teleportation_scroll/attack_self(mob/user) - user.set_machine(src) - var/dat = "Teleportation Scroll:
    " - dat += "Number of uses: [src.uses]
    " - dat += "
    " - dat += "Four uses, use them wisely:
    " - dat += "Teleport
    " - dat += "Kind regards,
    Wizards Federation

    P.S. Don't forget to bring your gear, you'll need it to cast most spells.
    " - user << browse(dat, "window=scroll") - onclose(user, "scroll") - return - -/obj/item/teleportation_scroll/Topic(href, href_list) - ..() - if (usr.stat || usr.restrained() || src.loc != usr) - return - if (!ishuman(usr)) - return 1 - var/mob/living/carbon/human/H = usr - if(H.is_holding(src)) - H.set_machine(src) - if (href_list["spell_teleport"]) - if(uses) - teleportscroll(H) - if(H) - attack_self(H) - return - -/obj/item/teleportation_scroll/proc/teleportscroll(mob/user) - - var/A - - A = input(user, "Area to jump to", "BOOYEA", A) as null|anything in GLOB.teleportlocs - if(!src || QDELETED(src) || !user || !user.is_holding(src) || user.incapacitated() || !A || !uses) - return - var/area/thearea = GLOB.teleportlocs[A] - - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(2, user.loc) - smoke.attach(user) - smoke.start() - var/list/L = list() - for(var/turf/T in get_area_turfs(thearea.type)) - if(!is_blocked_turf(T)) - L += T - - if(!L.len) - to_chat(user, "The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry.") - return - - user.forceMove(pick(L)) - - smoke.start() - uses-- -======= /obj/item/teleportation_scroll name = "scroll of teleportation" desc = "A scroll for moving around." @@ -148,4 +72,3 @@ smoke.start() uses-- ->>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental From d8c25f656b083f5bb24c63fc615b33354bedf01e Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 12 Nov 2017 08:56:53 -0600 Subject: [PATCH 102/114] Update admin_investigate.dm --- code/modules/admin/admin_investigate.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index bb2a72f970..a5e9119b5d 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -2,11 +2,7 @@ if(!message || !subject) return var/F = file("[GLOB.log_directory]/[subject].html") -<<<<<<< HEAD - F << "[time_stamp()] \ref[src] ([x],[y],[z]) || [src] [message]
    " -======= WRITE_FILE(F, "[time_stamp()] [REF(src)] ([x],[y],[z]) || [src] [message]
    ") ->>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental /client/proc/investigate_show(subject in list("hrefs","notes, memos, watchlist", INVESTIGATE_PORTAL, INVESTIGATE_SINGULO, INVESTIGATE_WIRES, INVESTIGATE_TELESCI, INVESTIGATE_GRAVITY, INVESTIGATE_RECORDS, INVESTIGATE_CARGO, INVESTIGATE_SUPERMATTER, INVESTIGATE_ATMOS, INVESTIGATE_EXPERIMENTOR, INVESTIGATE_BOTANY, INVESTIGATE_HALLUCINATIONS) ) From 77d261aa8a3d8b933c16765be4d96cf42b4176db Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 12 Nov 2017 10:02:32 -0600 Subject: [PATCH 103/114] Update camera_bug.dm --- code/game/objects/items/devices/camera_bug.dm | 301 ------------------ 1 file changed, 301 deletions(-) diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index 750406d0d5..c84a3fada5 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -1,303 +1,3 @@ -<<<<<<< HEAD - -#define BUGMODE_LIST 0 -#define BUGMODE_MONITOR 1 -#define BUGMODE_TRACK 2 - - - -/obj/item/device/camera_bug - name = "camera bug" - desc = "For illicit snooping through the camera network." - icon = 'icons/obj/device.dmi' - icon_state = "camera_bug" - w_class = WEIGHT_CLASS_TINY - item_state = "camera_bug" - throw_speed = 4 - throw_range = 20 - origin_tech = "syndicate=1;engineering=3" - flags_1 = NOBLUDGEON_1 - - var/obj/machinery/camera/current = null - - var/last_net_update = 0 - var/list/bugged_cameras = list() - - var/track_mode = BUGMODE_LIST - var/last_tracked = 0 - var/refresh_interval = 50 - - var/tracked_name = null - var/atom/tracking = null - - var/last_found = null - var/last_seen = null - -/obj/item/device/camera_bug/New() - ..() - START_PROCESSING(SSobj, src) - -/obj/item/device/camera_bug/Destroy() - get_cameras() - for(var/cam_tag in bugged_cameras) - var/obj/machinery/camera/camera = bugged_cameras[cam_tag] - if(camera.bug == src) - camera.bug = null - bugged_cameras = list() - if(tracking) - tracking = null - return ..() - - -/obj/item/device/camera_bug/interact(mob/user = usr) - var/datum/browser/popup = new(user, "camerabug","Camera Bug",nref=src) - popup.set_content(menu(get_cameras())) - popup.open() - -/obj/item/device/camera_bug/attack_self(mob/user) - user.set_machine(src) - interact(user) - -/obj/item/device/camera_bug/check_eye(mob/user) - if ( loc != user || user.incapacitated() || user.eye_blind || !current ) - user.unset_machine() - return 0 - var/turf/T = get_turf(user.loc) - if(T.z != current.z || !current.can_use()) - to_chat(user, "[src] has lost the signal.") - current = null - user.unset_machine() - return 0 - return 1 -/obj/item/device/camera_bug/on_unset_machine(mob/user) - user.reset_perspective(null) - -/obj/item/device/camera_bug/proc/get_cameras() - if( world.time > (last_net_update + 100)) - bugged_cameras = list() - for(var/obj/machinery/camera/camera in GLOB.cameranet.cameras) - if(camera.stat || !camera.can_use()) - continue - if(length(list("SS13","MINE")&camera.network)) - bugged_cameras[camera.c_tag] = camera - sortList(bugged_cameras) - return bugged_cameras - - -/obj/item/device/camera_bug/proc/menu(list/cameras) - if(!cameras || !cameras.len) - return "No bugged cameras found." - - var/html - switch(track_mode) - if(BUGMODE_LIST) - html = "

    Select a camera:

    \[Cancel camera view\]
    " - for(var/entry in cameras) - var/obj/machinery/camera/C = cameras[entry] - var/functions = "" - if(C.bug == src) - functions = " - \[Monitor\]\[Disable\]" - else - functions = " - \[Monitor\]" - html += "" - - if(BUGMODE_MONITOR) - if(current) - html = "Analyzing Camera '[current.c_tag]' \[Select Camera\]
    " - html += camera_report() - else - track_mode = BUGMODE_LIST - return .(cameras) - if(BUGMODE_TRACK) - if(tracking) - html = "Tracking '[tracked_name]' \[Cancel Tracking\]\[Cancel camera view\]
    " - if(last_found) - var/time_diff = round((world.time - last_seen) / 150) - var/obj/machinery/camera/C = bugged_cameras[last_found] - var/outstring - if(C) - outstring = "[last_found]" - else - outstring = last_found - if(!time_diff) - html += "Last seen near [outstring] (now)
    " - else - // 15 second intervals ~ 1/4 minute - var/m = round(time_diff/4) - var/s = (time_diff - 4*m) * 15 - if(!s) - s = "00" - html += "Last seen near [outstring] ([m]:[s] minute\s ago)
    " - if( C && (C.bug == src)) //Checks to see if the camera has a bug - html += "\[Disable\]" - - else - html += "Not yet seen." - else - track_mode = BUGMODE_LIST - return .(cameras) - return html - -/obj/item/device/camera_bug/proc/get_seens() - if(current && current.can_use()) - var/list/seen = current.can_see() - return seen - -/obj/item/device/camera_bug/proc/camera_report() - // this should only be called if current exists - var/dat = "" - var/list/seen = get_seens() - if(seen && seen.len >= 1) - var/list/names = list() - for(var/obj/singularity/S in seen) // god help you if you see more than one - if(S.name in names) - names[S.name]++ - dat += "[S.name] ([names[S.name]])" - else - names[S.name] = 1 - dat += "[S.name]" - var/stage = round(S.current_size / 2)+1 - dat += " (Stage [stage])" - dat += " \[Track\]
    " - - for(var/obj/mecha/M in seen) - if(M.name in names) - names[M.name]++ - dat += "[M.name] ([names[M.name]])" - else - names[M.name] = 1 - dat += "[M.name]" - dat += " \[Track\]
    " - - - for(var/mob/living/M in seen) - if(M.name in names) - names[M.name]++ - dat += "[M.name] ([names[M.name]])" - else - names[M.name] = 1 - dat += "[M.name]" - if(M.buckled && !M.lying) - dat += " (Sitting)" - if(M.lying) - dat += " (Laying down)" - dat += " \[Track\]
    " - if(length(dat) == 0) - dat += "No motion detected." - return dat - else - return "Camera Offline
    " - -/obj/item/device/camera_bug/Topic(href,list/href_list) - if(usr != loc) - usr.unset_machine() - usr << browse(null, "window=camerabug") - return - usr.set_machine(src) - if("mode" in href_list) - track_mode = text2num(href_list["mode"]) - if("monitor" in href_list) - //You can't locate on a list with keys - var/list/cameras = flatten_list(bugged_cameras) - var/obj/machinery/camera/C = locate(href_list["monitor"]) in cameras - if(C && istype(C)) - track_mode = BUGMODE_MONITOR - current = C - usr.reset_perspective(null) - interact() - if("track" in href_list) - var/list/seen = get_seens() - if(seen && seen.len >= 1) - var/atom/A = locate(href_list["track"]) in seen - if(A && istype(A)) - tracking = A - tracked_name = A.name - last_found = current.c_tag - last_seen = world.time - track_mode = BUGMODE_TRACK - if("emp" in href_list) - //You can't locate on a list with keys - var/list/cameras = flatten_list(bugged_cameras) - var/obj/machinery/camera/C = locate(href_list["emp"]) in cameras - if(C && istype(C) && C.bug == src) - C.emp_act(EMP_HEAVY) - C.bug = null - bugged_cameras -= C.c_tag - interact() - return - if("close" in href_list) - usr.unset_machine() - current = null - return - if("view" in href_list) - //You can't locate on a list with keys - var/list/cameras = flatten_list(bugged_cameras) - var/obj/machinery/camera/C = locate(href_list["view"]) in cameras - if(C && istype(C)) - if(!C.can_use()) - to_chat(usr, "Something's wrong with that camera! You can't get a feed.") - return - var/turf/T = get_turf(loc) - if(!T || C.z != T.z) - to_chat(usr, "You can't get a signal!") - return - current = C - spawn(6) - if(src.check_eye(usr)) - usr.reset_perspective(C) - interact() - else - usr.unset_machine() - usr << browse(null, "window=camerabug") - return - else - usr.unset_machine() - - interact() - -/obj/item/device/camera_bug/process() - if(track_mode == BUGMODE_LIST || (world.time < (last_tracked + refresh_interval))) - return - last_tracked = world.time - if(track_mode == BUGMODE_TRACK ) // search for user - // Note that it will be tricked if your name appears to change. - // This is not optimal but it is better than tracking you relentlessly despite everything. - if(!tracking) - src.updateSelfDialog() - return - - if(tracking.name != tracked_name) // Hiding their identity, tricksy - var/mob/M = tracking - if(istype(M)) - if(!(tracked_name == "Unknown" && findtext(tracking.name,"Unknown"))) // we saw then disguised before - if(!(tracked_name == M.real_name && findtext(tracking.name,M.real_name))) // or they're still ID'd - src.updateSelfDialog()//But if it's neither of those cases - return // you won't find em on the cameras - else - src.updateSelfDialog() - return - - var/list/tracking_cams = list() - var/list/b_cams = get_cameras() - for(var/entry in b_cams) - tracking_cams += b_cams[entry] - var/list/target_region = view(tracking) - - for(var/obj/machinery/camera/C in (target_region & tracking_cams)) - if(!can_see(C,tracking)) // target may have xray, that doesn't make them visible to cameras - continue - if(C.can_use()) - last_found = C.c_tag - last_seen = world.time - break - src.updateSelfDialog() - - -#undef BUGMODE_LIST -#undef BUGMODE_MONITOR -#undef BUGMODE_TRACK -======= - #define BUGMODE_LIST 0 #define BUGMODE_MONITOR 1 #define BUGMODE_TRACK 2 @@ -594,4 +294,3 @@ #undef BUGMODE_LIST #undef BUGMODE_MONITOR #undef BUGMODE_TRACK ->>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental From 1c8d9b3a4e632f2be1b70c735473bac46bf850e0 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 12 Nov 2017 10:38:30 -0600 Subject: [PATCH 104/114] Update electropack.dm --- .../items/devices/radio/electropack.dm | 228 ------------------ 1 file changed, 228 deletions(-) diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index ba02a1e610..2a4c6f25b9 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -1,230 +1,3 @@ -<<<<<<< HEAD -/obj/item/device/electropack - name = "electropack" - desc = "Dance my monkeys! DANCE!!!" - icon = 'icons/obj/radio.dmi' - icon_state = "electropack0" - item_state = "electropack" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - flags_1 = CONDUCT_1 - slot_flags = SLOT_BACK - w_class = WEIGHT_CLASS_HUGE - materials = list(MAT_METAL=10000, MAT_GLASS=2500) - var/on = TRUE - var/code = 2 - var/frequency = 1449 - var/shock_cooldown = 0 - -/obj/item/device/electropack/suicide_act(mob/user) - user.visible_message("[user] hooks [user.p_them()]self to the electropack and spams the trigger! It looks like [user.p_theyre()] trying to commit suicide!") - return (FIRELOSS) - -/obj/item/device/electropack/Initialize() - . = ..() - SSradio.add_object(src, frequency, GLOB.RADIO_CHAT) - -/obj/item/device/electropack/Destroy() - SSradio.remove_object(src, frequency) - return ..() - -/obj/item/device/electropack/attack_hand(mob/user) - if(iscarbon(user)) - var/mob/living/carbon/C = user - if(src == C.back) - to_chat(user, "You need help taking this off!") - return - ..() - -/obj/item/device/electropack/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/clothing/head/helmet)) - var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user ) - A.icon = 'icons/obj/assemblies.dmi' - - if(!user.transferItemToLoc(W, A)) - to_chat(user, "[W] is stuck to your hand, you cannot attach it to [src]!") - return - W.master = A - A.part1 = W - - user.transferItemToLoc(src, A, TRUE) - master = A - A.part2 = src - - user.put_in_hands(A) - A.add_fingerprint(user) - if(src.flags_1 & NODROP_1) - A.flags_1 |= NODROP_1 - else - return ..() - -/obj/item/device/electropack/Topic(href, href_list) - //..() - var/mob/living/carbon/C = usr - if(usr.stat || usr.restrained() || C.back == src) - return - if((ishuman(usr) && usr.contents.Find(src)) || usr.contents.Find(master) || (in_range(src, usr) && isturf(loc))) - usr.set_machine(src) - if(href_list["freq"]) - SSradio.remove_object(src, frequency) - frequency = sanitize_frequency(frequency + text2num(href_list["freq"])) - SSradio.add_object(src, frequency, GLOB.RADIO_CHAT) - else - if(href_list["code"]) - code += text2num(href_list["code"]) - code = round(code) - code = min(100, code) - code = max(1, code) - else - if(href_list["power"]) - on = !( on ) - icon_state = "electropack[on]" - if(!( master )) - if(ismob(loc)) - attack_self(loc) - else - for(var/mob/M in viewers(1, src)) - if(M.client) - attack_self(M) - else - if(ismob(master.loc)) - attack_self(master.loc) - else - for(var/mob/M in viewers(1, master)) - if(M.client) - attack_self(M) - else - usr << browse(null, "window=radio") - return - return - -/obj/item/device/electropack/receive_signal(datum/signal/signal) - if(!signal || signal.encryption != code) - return - - if(isliving(loc) && on) - if(shock_cooldown != 0) - return - shock_cooldown = 1 - spawn(100) - shock_cooldown = 0 - var/mob/living/L = loc - step(L, pick(GLOB.cardinals)) - - to_chat(L, "You feel a sharp shock!") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, L) - s.start() - - L.Knockdown(100) - - if(master) - master.receive_signal() - return - -/obj/item/device/electropack/attack_self(mob/user) - - if(!ishuman(user)) - return - user.set_machine(src) - var/dat = {"Turned [on ? "On" : "Off"] - -Toggle
    -Frequency/Code for electropack:
    -Frequency: -- -- [format_frequency(frequency)] -+ -+
    - -Code: -- -- [code] -+ -+
    -
    "} - user << browse(dat, "window=radio") - onclose(user, "radio") - return - -/obj/item/device/electropack/shockcollar - name = "shock collar" - desc = "A reinforced metal collar. It seems to have some form of wiring near the front. Strange.." - icon = 'icons/obj/clothing/neck.dmi' - icon_state = "shockcollar" - item_state = "shockcollar" - body_parts_covered = NECK - slot_flags = SLOT_NECK - w_class = WEIGHT_CLASS_SMALL - strip_delay = 60 - equip_delay_other = 60 - materials = list(MAT_METAL=5000, MAT_GLASS=2000) - var/tagname = null - -/obj/item/device/electropack/shockcollar/attack_hand(mob/user) - if(loc == user) - if(slot_flags == SLOT_NECK) - if(user.get_item_by_slot(slot_neck)) - to_chat(user, "The collar is fastened tight! You'll need help taking this off!") - return - ..() - -/obj/item/device/electropack/shockcollar/receive_signal(datum/signal/signal) - if(!signal || signal.encryption != code) - return - - if(isliving(loc) && on) - if(shock_cooldown != 0) - return - shock_cooldown = 1 - spawn(100) - shock_cooldown = 0 - var/mob/living/L = loc - step(L, pick(GLOB.cardinals)) - - to_chat(L, "You feel a sharp shock from the collar!") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, L) - s.start() - - L.Knockdown(100) - - if(master) - master.receive_signal() - return - -/obj/item/device/electropack/shockcollar/attack_self(mob/user) //Turns out can't fully source this from the parent item, spritepath gets confused if power toggled. Will come back to this when I know how to code better and readd powertoggle.. - var/option = "Change Name" - option = input(user, "What do you want to do?", "[src]", option) as null|anything in list("Change Name", "Change Frequency") - switch(option) - if("Change Name") - var/t = input(user, "Would you like to change the name on the tag?", "Name your new pet", tagname ? tagname : "Spot") as null|text - if(t) - tagname = copytext(sanitize(t), 1, MAX_NAME_LEN) - name = "[initial(name)] - [tagname]" - if("Change Frequency") - if(!ishuman(user)) - return - user.set_machine(src) - var/dat = {"
    - Frequency/Code for shock collar:
    - Frequency: - - - - [format_frequency(frequency)] - + - +
    - - Code: - - - - [code] - + - +
    -
    "} - - user << browse(dat, "window=radio") - onclose(user, "radio") - return - -======= /obj/item/device/electropack name = "electropack" desc = "Dance my monkeys! DANCE!!!" @@ -371,4 +144,3 @@ Code: user << browse(dat, "window=radio") onclose(user, "radio") return ->>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental From 439723caffeb016f9cb50b669fec67c8441bf60e Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 12 Nov 2017 11:18:11 -0600 Subject: [PATCH 105/114] Update adminhelp.dm --- code/modules/admin/verbs/adminhelp.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 980e0cf1a0..f178eb08bd 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -248,13 +248,8 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) //private /datum/admin_help/proc/TicketHref(msg, ref_src, action = "ticket") if(!ref_src) -<<<<<<< HEAD - ref_src = "\ref[src]" - return "[msg]" -======= ref_src = "[REF(src)]" return "[msg]" ->>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental //message from the initiator without a target, all admins will see this //won't bug irc From 6da7d8e8b5797bc4092fb9f0ec622b9a38acbdfe Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 12 Nov 2017 13:17:08 -0600 Subject: [PATCH 106/114] Update posibrain.dm --- code/modules/mob/living/brain/posibrain.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm index 2b8d43a7ac..90f42a9dda 100644 --- a/code/modules/mob/living/brain/posibrain.dm +++ b/code/modules/mob/living/brain/posibrain.dm @@ -37,11 +37,7 @@ GLOBAL_VAR(posibrain_notify_cooldown) /obj/item/device/mmi/posibrain/proc/ping_ghosts(msg, newlymade) if(newlymade || GLOB.posibrain_notify_cooldown <= world.time) -<<<<<<< HEAD - notify_ghosts("[name] [msg] in [get_area(src)]!", ghost_sound = !newlymade ? 'sound/misc/server-ready.ogg':null, enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK, flashwindow = FALSE) -======= notify_ghosts("[name] [msg] in [get_area(src)]!", ghost_sound = !newlymade ? 'sound/effects/ghost2.ogg':null, enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK, flashwindow = FALSE) ->>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental if(!newlymade) GLOB.posibrain_notify_cooldown = world.time + askDelay From 8d78a999e15e0c2fe78f11d2d5af4778c4c148ca Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 12 Nov 2017 13:17:41 -0600 Subject: [PATCH 107/114] Update jellypeople.dm --- .../carbon/human/species_types/jellypeople.dm | 338 ------------------ 1 file changed, 338 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 3debb6ade3..3cacf1b309 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -1,340 +1,3 @@ -<<<<<<< HEAD -/datum/species/jelly - // Entirely alien beings that seem to be made entirely out of gel. They have three eyes and a skeleton visible within them. - name = "Xenobiological Jelly Entity" - id = "jelly" - default_color = "00FF90" - say_mod = "chirps" - species_traits = list(MUTCOLORS,EYECOLOR,NOBLOOD,VIRUSIMMUNE,TOXINLOVER) - meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime - exotic_blood = "slimejelly" - damage_overlay_type = "" - var/datum/action/innate/regenerate_limbs/regenerate_limbs - liked_food = MEAT - -/datum/species/jelly/on_species_loss(mob/living/carbon/C) - if(regenerate_limbs) - regenerate_limbs.Remove(C) - ..() - -/datum/species/jelly/on_species_gain(mob/living/carbon/C, datum/species/old_species) - ..() - if(ishuman(C)) - regenerate_limbs = new - regenerate_limbs.Grant(C) - -/datum/species/jelly/spec_life(mob/living/carbon/human/H) - if(H.stat == DEAD) //can't farm slime jelly from a dead slime/jelly person indefinitely - return - if(!H.blood_volume) - H.blood_volume += 5 - H.adjustBruteLoss(5) - to_chat(H, "You feel empty!") - - if(H.blood_volume < BLOOD_VOLUME_NORMAL) - if(H.nutrition >= NUTRITION_LEVEL_STARVING) - H.blood_volume += 3 - H.nutrition -= 2.5 - if(H.blood_volume < BLOOD_VOLUME_OKAY) - if(prob(5)) - to_chat(H, "You feel drained!") - if(H.blood_volume < BLOOD_VOLUME_BAD) - Cannibalize_Body(H) - H.update_action_buttons_icon() - -/datum/species/jelly/proc/Cannibalize_Body(mob/living/carbon/human/H) - var/list/limbs_to_consume = list("r_arm", "l_arm", "r_leg", "l_leg") - H.get_missing_limbs() - var/obj/item/bodypart/consumed_limb - if(!limbs_to_consume.len) - H.losebreath++ - return - if(H.get_num_legs()) //Legs go before arms - limbs_to_consume -= list("r_arm", "l_arm") - consumed_limb = H.get_bodypart(pick(limbs_to_consume)) - consumed_limb.drop_limb() - to_chat(H, "Your [consumed_limb] is drawn back into your body, unable to maintain its shape!") - qdel(consumed_limb) - H.blood_volume += 20 - -/datum/action/innate/regenerate_limbs - name = "Regenerate Limbs" - check_flags = AB_CHECK_CONSCIOUS - button_icon_state = "slimeheal" - icon_icon = 'icons/mob/actions/actions_slime.dmi' - background_icon_state = "bg_alien" - -/datum/action/innate/regenerate_limbs/IsAvailable() - if(..()) - var/mob/living/carbon/human/H = owner - var/list/limbs_to_heal = H.get_missing_limbs() - if(limbs_to_heal.len < 1) - return 0 - if(H.blood_volume >= BLOOD_VOLUME_OKAY+40) - return 1 - return 0 - -/datum/action/innate/regenerate_limbs/Activate() - var/mob/living/carbon/human/H = owner - var/list/limbs_to_heal = H.get_missing_limbs() - if(limbs_to_heal.len < 1) - to_chat(H, "You feel intact enough as it is.") - return - to_chat(H, "You focus intently on your missing [limbs_to_heal.len >= 2 ? "limbs" : "limb"]...") - if(H.blood_volume >= 40*limbs_to_heal.len+BLOOD_VOLUME_OKAY) - H.regenerate_limbs() - H.blood_volume -= 40*limbs_to_heal.len - to_chat(H, "...and after a moment you finish reforming!") - return - else if(H.blood_volume >= 40)//We can partially heal some limbs - while(H.blood_volume >= BLOOD_VOLUME_OKAY+40) - var/healed_limb = pick(limbs_to_heal) - H.regenerate_limb(healed_limb) - limbs_to_heal -= healed_limb - H.blood_volume -= 40 - to_chat(H, "...but there is not enough of you to fix everything! You must attain more mass to heal completely!") - return - to_chat(H, "...but there is not enough of you to go around! You must attain more mass to heal!") - -////////////////////////////////////////////////////////SLIME PEOPLE/////////////////////////////////////////////////////////////////// - -/datum/species/jelly/slime - // Humans mutated by slime mutagen, produced from green slimes. They are not targetted by slimes. - name = "Slimeperson" - id = "slime" - default_color = "00FFFF" - species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD,VIRUSIMMUNE, TOXINLOVER) - say_mod = "says" - hair_color = "mutcolor" - hair_alpha = 150 - ignored_by = list(/mob/living/simple_animal/slime) - burnmod = 0.5 - coldmod = 2 - heatmod = 0.5 - var/datum/action/innate/split_body/slime_split - var/list/mob/living/carbon/bodies - var/datum/action/innate/swap_body/swap_body - -/datum/species/jelly/slime/on_species_loss(mob/living/carbon/C) - if(slime_split) - slime_split.Remove(C) - if(swap_body) - swap_body.Remove(C) - bodies -= C // This means that the other bodies maintain a link - // so if someone mindswapped into them, they'd still be shared. - bodies = null - C.faction -= "slime" - C.blood_volume = min(C.blood_volume, BLOOD_VOLUME_NORMAL) - ..() - -/datum/species/jelly/slime/on_species_gain(mob/living/carbon/C, datum/species/old_species) - ..() - if(ishuman(C)) - /* slime_split = new - slime_split.Grant(C) - swap_body = new - swap_body.Grant(C) */ - - if(!bodies || !bodies.len) - bodies = list(C) - else - bodies |= C - - C.faction |= "slime" - -//If you're cloned you get your body pool back -/datum/species/jelly/slime/copy_properties_from(datum/species/jelly/slime/old_species) - bodies = old_species.bodies - -/datum/species/jelly/slime/spec_life(mob/living/carbon/human/H) - /*if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT) - if(prob(5)) - to_chat(H, "You feel very bloated!")*/ - if(H.nutrition >= NUTRITION_LEVEL_WELL_FED) - H.blood_volume += 3 - H.nutrition -= 2.5 - - ..() - -/datum/action/innate/split_body - name = "Split Body" - check_flags = AB_CHECK_CONSCIOUS - button_icon_state = "slimesplit" - icon_icon = 'icons/mob/actions/actions_slime.dmi' - background_icon_state = "bg_alien" - -/datum/action/innate/split_body/IsAvailable() - if(..()) - var/mob/living/carbon/human/H = owner - if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT) - return 1 - return 0 - -/datum/action/innate/split_body/Activate() - var/mob/living/carbon/human/H = owner - if(!isslimeperson(H)) - return - CHECK_DNA_AND_SPECIES(H) - H.visible_message("[owner] gains a look of \ - concentration while standing perfectly still.", - "You focus intently on moving your body while \ - standing perfectly still...") - - H.notransform = TRUE - - if(do_after(owner, delay=60, needhand=FALSE, target=owner, progress=TRUE)) - if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT) - make_dupe() - else - to_chat(H, "...but there is not enough of you to go around! You must attain more mass to split!") - else - to_chat(H, "...but fail to stand perfectly still!") - - H.notransform = FALSE - -/datum/action/innate/split_body/proc/make_dupe() - var/mob/living/carbon/human/H = owner - CHECK_DNA_AND_SPECIES(H) - - var/mob/living/carbon/human/spare = new /mob/living/carbon/human(H.loc) - - spare.underwear = "Nude" - H.dna.transfer_identity(spare, transfer_SE=1) - spare.dna.features["mcolor"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F") - spare.real_name = spare.dna.real_name - spare.name = spare.dna.real_name - spare.updateappearance(mutcolor_update=1) - spare.domutcheck() - spare.Move(get_step(H.loc, pick(NORTH,SOUTH,EAST,WEST))) - - H.blood_volume = BLOOD_VOLUME_SAFE - H.notransform = 0 - - var/datum/species/jelly/slime/origin_datum = H.dna.species - origin_datum.bodies |= spare - - var/datum/species/jelly/slime/spare_datum = spare.dna.species - spare_datum.bodies = origin_datum.bodies - - H.mind.transfer_to(spare) - spare.visible_message("[H] distorts as a new body \ - \"steps out\" of them.", - "...and after a moment of disorentation, \ - you're besides yourself!") - - -/datum/action/innate/swap_body - name = "Swap Body" - check_flags = AB_CHECK_CONSCIOUS - button_icon_state = "slimeswap" - icon_icon = 'icons/mob/actions/actions_slime.dmi' - background_icon_state = "bg_alien" - -/datum/action/innate/swap_body/Activate() - if(!isslimeperson(owner)) - to_chat(owner, "You are not a slimeperson.") - Remove(owner) - else - ui_interact(owner) - -/datum/action/innate/swap_body/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.conscious_state) - - ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) - if(!ui) - ui = new(user, src, ui_key, "slime_swap_body", name, 400, 400, master_ui, state) - ui.open() - -/datum/action/innate/swap_body/ui_data(mob/user) - var/mob/living/carbon/human/H = owner - if(!isslimeperson(H)) - return - - var/datum/species/jelly/slime/SS = H.dna.species - - var/list/data = list() - data["bodies"] = list() - for(var/b in SS.bodies) - var/mob/living/carbon/human/body = b - if(!body || QDELETED(body) || !isslimeperson(body)) - SS.bodies -= b - continue - - var/list/L = list() - // HTML colors need a # prefix - L["htmlcolor"] = "#[body.dna.features["mcolor"]]" - var/area/A = get_area(body) - L["area"] = A.name - var/stat = "error" - switch(body.stat) - if(CONSCIOUS) - stat = "Conscious" - if(UNCONSCIOUS) - stat = "Unconscious" - if(DEAD) - stat = "Dead" - var/current = body.mind - var/is_conscious = (body.stat == CONSCIOUS) - - L["status"] = stat - L["exoticblood"] = body.blood_volume - L["name"] = body.name - L["ref"] = "\ref[body]" - L["is_current"] = current - var/button - if(current) - button = "selected" - else if(is_conscious) - button = null - else - button = "disabled" - - L["swap_button_state"] = button - L["swappable"] = !current && is_conscious - - data["bodies"] += list(L) - - return data - -/datum/action/innate/swap_body/ui_act(action, params) - if(..()) - return - var/mob/living/carbon/human/H = owner - if(!isslimeperson(owner)) - return - var/datum/species/jelly/slime/SS = H.dna.species - - var/datum/mind/M - for(var/mob/living/L in SS.bodies) - if(L.mind && L.mind.active) - M = L.mind - if(!M) - return - if(!isslimeperson(M.current)) - return - - switch(action) - if("swap") - var/mob/living/carbon/human/selected = locate(params["ref"]) - if(!(selected in SS.bodies)) - return - if(!selected || QDELETED(selected) || !isslimeperson(selected)) - SS.bodies -= selected - return - if(M.current == selected) - return - if(selected.stat != CONSCIOUS) - return - - swap_to_dupe(M, selected) - -/datum/action/innate/swap_body/proc/swap_to_dupe(datum/mind/M, mob/living/carbon/human/dupe) - M.current.visible_message("[M.current] \ - stops moving and starts staring vacantly into space.", - "You stop moving this body...") - M.transfer_to(dupe) - dupe.visible_message("[dupe] blinks and looks \ - around.", - "...and move this one instead.") -======= /datum/species/jelly // Entirely alien beings that seem to be made entirely out of gel. They have three eyes and a skeleton visible within them. name = "Xenobiological Jelly Entity" @@ -670,4 +333,3 @@ dupe.visible_message("[dupe] blinks and looks \ around.", "...and move this one instead.") ->>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental From 5ca3389cc2e4ef4e4e8fcaf43f5810d7e06791fd Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 12 Nov 2017 13:17:59 -0600 Subject: [PATCH 108/114] Update clipboard.dm --- code/modules/paperwork/clipboard.dm | 125 ---------------------------- 1 file changed, 125 deletions(-) diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index 0c1ae987cf..d9d220b0ef 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -1,127 +1,3 @@ -<<<<<<< HEAD -/obj/item/clipboard - name = "clipboard" - icon = 'icons/obj/bureaucracy.dmi' - icon_state = "clipboard" - item_state = "clipboard" - throwforce = 0 - w_class = WEIGHT_CLASS_SMALL - throw_speed = 3 - throw_range = 7 - var/obj/item/pen/haspen //The stored pen. - var/obj/item/paper/toppaper //The topmost piece of paper. - slot_flags = SLOT_BELT - resistance_flags = FLAMMABLE - -/obj/item/clipboard/Initialize() - update_icon() - . = ..() - -/obj/item/clipboard/Destroy() - QDEL_NULL(haspen) - QDEL_NULL(toppaper) //let movable/Destroy handle the rest - return ..() - -/obj/item/clipboard/update_icon() - cut_overlays() - if(toppaper) - add_overlay(toppaper.icon_state) - copy_overlays(toppaper) - if(haspen) - add_overlay("clipboard_pen") - add_overlay("clipboard_over") - - -/obj/item/clipboard/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/paper)) - if(!user.transferItemToLoc(W, src)) - return - toppaper = W - to_chat(user, "You clip the paper onto \the [src].") - update_icon() - else if(toppaper) - toppaper.attackby(user.get_active_held_item(), user) - update_icon() - - -/obj/item/clipboard/attack_self(mob/user) - var/dat = "Clipboard" - if(haspen) - dat += "Remove Pen

    " - else - dat += "Add Pen

    " - - //The topmost paper. You can't organise contents directly in byond, so this is what we're stuck with. -Pete - if(toppaper) - var/obj/item/paper/P = toppaper - dat += "Write Remove - [P.name]

    " - - for(P in src) - if(P == toppaper) - continue - dat += "Write Remove Move to top - [P.name]
    " - user << browse(dat, "window=clipboard") - onclose(user, "clipboard") - add_fingerprint(usr) - - -/obj/item/clipboard/Topic(href, href_list) - ..() - if(usr.stat || usr.restrained()) - return - - if(usr.contents.Find(src)) - - if(href_list["pen"]) - if(haspen) - haspen.loc = usr.loc - usr.put_in_hands(haspen) - haspen = null - - if(href_list["addpen"]) - if(!haspen) - var/obj/item/held = usr.get_active_held_item() - if(istype(held, /obj/item/pen)) - var/obj/item/pen/W = held - if(!usr.transferItemToLoc(W, src)) - return - haspen = W - to_chat(usr, "You slot [W] into [src].") - - if(href_list["write"]) - var/obj/item/P = locate(href_list["write"]) - if(istype(P) && P.loc == src) - if(usr.get_active_held_item()) - P.attackby(usr.get_active_held_item(), usr) - - if(href_list["remove"]) - var/obj/item/P = locate(href_list["remove"]) - if(istype(P) && P.loc == src) - P.loc = usr.loc - usr.put_in_hands(P) - if(P == toppaper) - toppaper = null - var/obj/item/paper/newtop = locate(/obj/item/paper) in src - if(newtop && (newtop != P)) - toppaper = newtop - else - toppaper = null - - if(href_list["read"]) - var/obj/item/paper/P = locate(href_list["read"]) - if(istype(P) && P.loc == src) - usr.examinate(P) - - if(href_list["top"]) - var/obj/item/P = locate(href_list["top"]) - if(istype(P) && P.loc == src) - toppaper = P - to_chat(usr, "You move [P.name] to the top.") - - //Update everything - attack_self(usr) - update_icon() -======= /obj/item/clipboard name = "clipboard" icon = 'icons/obj/bureaucracy.dmi' @@ -244,4 +120,3 @@ //Update everything attack_self(usr) update_icon() ->>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental From fa6b955dcf00558799020b771c9d9ca740cd0530 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 12 Nov 2017 13:18:42 -0600 Subject: [PATCH 109/114] Update tgui.dm --- code/modules/tgui/tgui.dm | 418 ++++---------------------------------- 1 file changed, 39 insertions(+), 379 deletions(-) diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index 088bd9da2c..b1275cf00f 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -1,342 +1,3 @@ -<<<<<<< HEAD - /** - * tgui - * - * /tg/station user interface library - **/ - - /** - * tgui datum (represents a UI). - **/ -/datum/tgui - var/mob/user // The mob who opened/is using the UI. - var/datum/src_object // The object which owns the UI. - var/title // The title of te UI. - var/ui_key // The ui_key of the UI. This allows multiple UIs for one src_object. - var/window_id // The window_id for browse() and onclose(). - var/width = 0 // The window width. - var/height = 0 // The window height - var/window_options = list( // Extra options to winset(). - "focus" = FALSE, - "titlebar" = TRUE, - "can_resize" = TRUE, - "can_minimize" = TRUE, - "can_maximize" = FALSE, - "can_close" = TRUE, - "auto_format" = FALSE - ) - var/style = "nanotrasen" // The style to be used for this UI. - var/interface // The interface (template) to be used for this UI. - var/autoupdate = TRUE // Update the UI every MC tick. - var/initialized = FALSE // If the UI has been initialized yet. - var/list/initial_data // The data (and datastructure) used to initialize the UI. - var/status = UI_INTERACTIVE // The status/visibility of the UI. - var/datum/ui_state/state = null // Topic state used to determine status/interactability. - var/datum/tgui/master_ui // The parent UI. - var/list/datum/tgui/children = list() // Children of this UI. - var/titlebar = TRUE - var/custom_browser_id = FALSE - - /** - * public - * - * Create a new UI. - * - * required user mob The mob who opened/is using the UI. - * required src_object datum The object or datum which owns the UI. - * required ui_key string The ui_key of the UI. - * required interface string The interface used to render the UI. - * optional title string The title of the UI. - * optional width int The window width. - * optional height int The window height. - * optional master_ui datum/tgui The parent UI. - * optional state datum/ui_state The state used to determine status. - * - * return datum/tgui The requested UI. - **/ -/datum/tgui/New(mob/user, datum/src_object, ui_key, interface, title, width = 0, height = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state, browser_id = null) - src.user = user - src.src_object = src_object - src.ui_key = ui_key - src.window_id = browser_id ? browser_id : "\ref[src_object]-[ui_key]" - src.custom_browser_id = browser_id ? TRUE : FALSE - - set_interface(interface) - - if(title) - src.title = sanitize(title) - if(width) - src.width = width - if(height) - src.height = height - - src.master_ui = master_ui - if(master_ui) - master_ui.children += src - src.state = state - - var/datum/asset/assets = get_asset_datum(/datum/asset/simple/tgui) - assets.send(user) - - /** - * public - * - * Open this UI (and initialize it with data). - **/ -/datum/tgui/proc/open() - if(!user.client) - return // Bail if there is no client. - - update_status(push = 0) // Update the window status. - if(status < UI_UPDATE) - return // Bail if we're not supposed to open. - - if(!initial_data) - set_initial_data(src_object.ui_data(user)) // Get the UI data. - - var/window_size = "" - if(width && height) // If we have a width and height, use them. - window_size = "size=[width]x[height];" - - var/debugable = check_rights_for(user.client, R_DEBUG) - user << browse(get_html(debugable), "window=[window_id];[window_size][list2params(window_options)]") // Open the window. - if (!custom_browser_id) - winset(user, window_id, "on-close=\"uiclose \ref[src]\"") // Instruct the client to signal UI when the window is closed. - SStgui.on_open(src) - - /** - * public - * - * Reinitialize the UI. - * (Possibly with a new interface and/or data). - * - * optional template string The name of the new interface. - * optional data list The new initial data. - **/ -/datum/tgui/proc/reinitialize(interface, list/data) - if(interface) - set_interface(interface) // Set a new interface. - if(data) - set_initial_data(data) // Replace the initial_data. - open() - - /** - * public - * - * Close the UI, and all its children. - **/ -/datum/tgui/proc/close() - user << browse(null, "window=[window_id]") // Close the window. - SStgui.on_close(src) - for(var/datum/tgui/child in children) // Loop through and close all children. - child.close() - children.Cut() - state = null - master_ui = null - qdel(src) - - /** - * public - * - * Sets the browse() window options for this UI. - * - * required window_options list The window options to set. - **/ -/datum/tgui/proc/set_window_options(list/window_options) - src.window_options = window_options - - /** - * public - * - * Set the style for this UI. - * - * required style string The new UI style. - **/ -/datum/tgui/proc/set_style(style) - src.style = lowertext(style) - - /** - * public - * - * Set the interface (template) for this UI. - * - * required interface string The new UI interface. - **/ -/datum/tgui/proc/set_interface(interface) - src.interface = lowertext(interface) - - /** - * public - * - * Enable/disable auto-updating of the UI. - * - * required state bool Enable/disable auto-updating. - **/ -/datum/tgui/proc/set_autoupdate(state = 1) - autoupdate = state - - /** - * private - * - * Set the data to initialize the UI with. - * The datastructure cannot be changed by subsequent updates. - * - * optional data list The data/datastructure to initialize the UI with. - **/ -/datum/tgui/proc/set_initial_data(list/data) - initial_data = data - - /** - * private - * - * Generate HTML for this UI. - * - * optional bool inline If the JSON should be inlined into the HTML (for debugging). - * - * return string UI HTML output. - **/ -/datum/tgui/proc/get_html(var/inline) - var/html - // Poplate HTML with JSON if we're supposed to inline. - if(inline) - html = replacetextEx(SStgui.basehtml, "{}", get_json(initial_data)) - else - html = SStgui.basehtml - html = replacetextEx(html, "\[ref]", "\ref[src]") - html = replacetextEx(html, "\[style]", style) - return html - - /** - * private - * - * Get the config data/datastructure to initialize the UI with. - * - * return list The config data. - **/ -/datum/tgui/proc/get_config_data() - var/list/config_data = list( - "title" = title, - "status" = status, - "screen" = src_object.ui_screen, - "style" = style, - "interface" = interface, - "fancy" = user.client.prefs.tgui_fancy, - "locked" = user.client.prefs.tgui_lock && !custom_browser_id, - "window" = window_id, - "ref" = "\ref[src]", - "user" = list( - "name" = user.name, - "ref" = "\ref[user]" - ), - "srcObject" = list( - "name" = "[src_object]", - "ref" = "\ref[src_object]" - ), - "titlebar" = titlebar - ) - return config_data - - /** - * private - * - * Package the data to send to the UI, as JSON. - * This includes the UI data and config_data. - * - * return string The packaged JSON. - **/ -/datum/tgui/proc/get_json(list/data) - var/list/json_data = list() - - json_data["config"] = get_config_data() - if(!isnull(data)) - json_data["data"] = data - - // Generate the JSON. - var/json = json_encode(json_data) - // Strip #255/improper. - json = replacetext(json, "\proper", "") - json = replacetext(json, "\improper", "") - return json - - /** - * private - * - * Handle clicks from the UI. - * Call the src_object's ui_act() if status is UI_INTERACTIVE. - * If the src_object's ui_act() returns 1, update all UIs attacked to it. - **/ -/datum/tgui/Topic(href, href_list) - if(user != usr) - return // Something is not right here. - - var/action = href_list["action"] - var/params = href_list; params -= "action" - - switch(action) - if("tgui:initialize") - user << output(url_encode(get_json(initial_data)), "[custom_browser_id ? window_id : "[window_id].browser"]:initialize") - initialized = TRUE - if("tgui:view") - if(params["screen"]) - src_object.ui_screen = params["screen"] - SStgui.update_uis(src_object) - if("tgui:link") - user << link(params["url"]) - if("tgui:fancy") - user.client.prefs.tgui_fancy = TRUE - if("tgui:nofrills") - user.client.prefs.tgui_fancy = FALSE - else - update_status(push = 0) // Update the window state. - if(src_object.ui_act(action, params, src, state)) // Call ui_act() on the src_object. - SStgui.update_uis(src_object) // Update if the object requested it. - - /** - * private - * - * Update the UI. - * Only updates the data if update is true, otherwise only updates the status. - * - * optional force bool If the UI should be forced to update. - **/ -/datum/tgui/process(force = 0) - var/datum/host = src_object.ui_host() - if(!src_object || !host || !user) // If the object or user died (or something else), abort. - close() - return - - if(status && (force || autoupdate)) - update() // Update the UI if the status and update settings allow it. - else - update_status(push = 1) // Otherwise only update status. - - /** - * private - * - * Push data to an already open UI. - * - * required data list The data to send. - * optional force bool If the update should be sent regardless of state. - **/ -/datum/tgui/proc/push_data(data, force = 0) - update_status(push = 0) // Update the window state. - if(!initialized) - return // Cannot update UI if it is not set up yet. - if(status <= UI_DISABLED && !force) - return // Cannot update UI, we have no visibility. - - // Send the new JSON to the update() Javascript function. - user << output(url_encode(get_json(data)), "[custom_browser_id ? window_id : "[window_id].browser"]:update") - - /** - * private - * - * Updates the UI by interacting with the src_object again, which will hopefully - * call try_ui_update on it. - * - * optional force_open bool If force_open should be passed to ui_interact. - **/ -======= /** * tgui * @@ -674,44 +335,43 @@ * * optional force_open bool If force_open should be passed to ui_interact. **/ ->>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental /datum/tgui/proc/update(force_open = FALSE) - src_object.ui_interact(user, ui_key, src, force_open, master_ui, state) - - /** - * private - * - * Update the status/visibility of the UI for its user. - * - * optional push bool Push an update to the UI (an update is always sent for UI_DISABLED). - **/ -/datum/tgui/proc/update_status(push = 0) - var/status = src_object.ui_status(user, state) - if(master_ui) - status = min(status, master_ui.status) - - set_status(status, push) - if(status == UI_CLOSE) - close() - - /** - * private - * - * Set the status/visibility of the UI. - * - * required status int The status to set (UI_CLOSE/UI_DISABLED/UI_UPDATE/UI_INTERACTIVE). - * optional push bool Push an update to the UI (an update is always sent for UI_DISABLED). - **/ -/datum/tgui/proc/set_status(status, push = 0) - if(src.status != status) // Only update if status has changed. - if(src.status == UI_DISABLED) - src.status = status - if(push) - update() - else - src.status = status - if(status == UI_DISABLED || push) // Update if the UI just because disabled, or a push is requested. - push_data(null, force = 1) - -/datum/tgui/proc/set_titlebar(value) - titlebar = value + src_object.ui_interact(user, ui_key, src, force_open, master_ui, state) + + /** + * private + * + * Update the status/visibility of the UI for its user. + * + * optional push bool Push an update to the UI (an update is always sent for UI_DISABLED). + **/ +/datum/tgui/proc/update_status(push = 0) + var/status = src_object.ui_status(user, state) + if(master_ui) + status = min(status, master_ui.status) + + set_status(status, push) + if(status == UI_CLOSE) + close() + + /** + * private + * + * Set the status/visibility of the UI. + * + * required status int The status to set (UI_CLOSE/UI_DISABLED/UI_UPDATE/UI_INTERACTIVE). + * optional push bool Push an update to the UI (an update is always sent for UI_DISABLED). + **/ +/datum/tgui/proc/set_status(status, push = 0) + if(src.status != status) // Only update if status has changed. + if(src.status == UI_DISABLED) + src.status = status + if(push) + update() + else + src.status = status + if(status == UI_DISABLED || push) // Update if the UI just because disabled, or a push is requested. + push_data(null, force = 1) + +/datum/tgui/proc/set_titlebar(value) + titlebar = value From e97bc1028e085b8592efa8a3b501f2126699e420 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 12 Nov 2017 14:09:20 -0600 Subject: [PATCH 110/114] Update examine.dm --- code/modules/mob/living/carbon/human/examine.dm | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index c42327d632..dd101bbb8c 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -336,23 +336,11 @@ R = find_record("name", perpname, GLOB.data_core.security) if(R) criminal = R.fields["criminal"] - -<<<<<<< HEAD - msg += "Criminal status: \[[criminal]\]\n" - msg += "Security record: \[View\] " - msg += "\[Add crime\] " - msg += "\[View comment log\] " - msg += "\[Add comment\]\n" - if(print_flavor_text() && get_visible_name() != "Unknown")//Are we sure we know who this is? Don't show flavor text unless we can recognize them. Prevents certain metagaming with impersonation. - msg += "[print_flavor_text()]\n" - -======= msg += "Criminal status: \[[criminal]\]\n" msg += "Security record: \[View\] " msg += "\[Add crime\] " msg += "\[View comment log\] " msg += "\[Add comment\]\n" ->>>>>>> 626302c... Merge pull request #32161 from ninjanomnom/512-experimental msg += "*---------*" to_chat(user, msg) From f812be1ee0f0cda8a00c5fb5afa0ad1e43412571 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 12 Nov 2017 14:46:18 -0600 Subject: [PATCH 111/114] Update autolathe_designs.dm --- code/modules/research/designs/autolathe_designs.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 946ec70d38..2f2a3e32a8 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -608,6 +608,7 @@ build_path = /obj/item/device/electropack category = list("hacked", "Tools") +/* /datum/design/shock_collar name = "Shock Collar" id = "shock_collar" @@ -615,6 +616,7 @@ materials = list(MAT_METAL = 5000, MAT_GLASS = 2000) build_path = /obj/item/device/electropack/shockcollar category = list("hacked", "Security") +*/ /datum/design/large_welding_tool name = "Industrial Welding Tool" From 768e80544ed190c11c625c518d0c4ada7fc7da31 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 12 Nov 2017 15:41:25 -0600 Subject: [PATCH 112/114] Update autolathe_designs.dm --- code/modules/research/designs/autolathe_designs.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 2f2a3e32a8..946ec70d38 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -608,7 +608,6 @@ build_path = /obj/item/device/electropack category = list("hacked", "Tools") -/* /datum/design/shock_collar name = "Shock Collar" id = "shock_collar" @@ -616,7 +615,6 @@ materials = list(MAT_METAL = 5000, MAT_GLASS = 2000) build_path = /obj/item/device/electropack/shockcollar category = list("hacked", "Security") -*/ /datum/design/large_welding_tool name = "Industrial Welding Tool" From de8e064e45f25a6eb6e1da984ba8e5bb66947d75 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 12 Nov 2017 15:42:44 -0600 Subject: [PATCH 113/114] Update electropack.dm --- .../items/devices/radio/electropack.dm | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index 2a4c6f25b9..f556f6e364 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -144,3 +144,80 @@ Code: user << browse(dat, "window=radio") onclose(user, "radio") return + +/obj/item/device/electropack/shockcollar + name = "shock collar" + desc = "A reinforced metal collar. It seems to have some form of wiring near the front. Strange.." + icon = 'icons/obj/clothing/neck.dmi' + icon_state = "shockcollar" + item_state = "shockcollar" + body_parts_covered = NECK + slot_flags = SLOT_NECK + w_class = WEIGHT_CLASS_SMALL + strip_delay = 60 + equip_delay_other = 60 + materials = list(MAT_METAL=5000, MAT_GLASS=2000) + var/tagname = null + +/obj/item/device/electropack/shockcollar/attack_hand(mob/user) + if(loc == user) + if(slot_flags == SLOT_NECK) + if(user.get_item_by_slot(slot_neck)) + to_chat(user, "The collar is fastened tight! You'll need help taking this off!") + return + ..() + +/obj/item/device/electropack/shockcollar/receive_signal(datum/signal/signal) + if(!signal || signal.encryption != code) + return + + if(isliving(loc) && on) + if(shock_cooldown != 0) + return + shock_cooldown = 1 + spawn(100) + shock_cooldown = 0 + var/mob/living/L = loc + step(L, pick(GLOB.cardinals)) + + to_chat(L, "You feel a sharp shock from the collar!") + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(3, 1, L) + s.start() + + L.Knockdown(100) + + if(master) + master.receive_signal() + return + +/obj/item/device/electropack/shockcollar/attack_self(mob/user) //Turns out can't fully source this from the parent item, spritepath gets confused if power toggled. Will come back to this when I know how to code better and readd powertoggle.. + var/option = "Change Name" + option = input(user, "What do you want to do?", "[src]", option) as null|anything in list("Change Name", "Change Frequency") + switch(option) + if("Change Name") + var/t = input(user, "Would you like to change the name on the tag?", "Name your new pet", tagname ? tagname : "Spot") as null|text + if(t) + tagname = copytext(sanitize(t), 1, MAX_NAME_LEN) + name = "[initial(name)] - [tagname]" + if("Change Frequency") + if(!ishuman(user)) + return + user.set_machine(src) + var/dat = {"
    + Frequency/Code for shock collar:
    + Frequency: + - + - [format_frequency(frequency)] + + + +
    + Code: + - + - [code] + + + +
    +
    "} + + user << browse(dat, "window=radio") + onclose(user, "radio") +return From aa020ea9e866e0f4df5e44ca6e23771d439135b2 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 12 Nov 2017 16:00:15 -0600 Subject: [PATCH 114/114] Update electropack.dm --- code/game/objects/items/devices/radio/electropack.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index f556f6e364..19226e5d9a 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -220,4 +220,4 @@ Code: user << browse(dat, "window=radio") onclose(user, "radio") -return + return
    [entry][functions]