From b51dbb0c6b31f6a8b68fc6cb42ce3c39afb72a04 Mon Sep 17 00:00:00 2001 From: AmShegars <88627712+AmShegars@users.noreply.github.com> Date: Sat, 1 Mar 2025 17:39:23 +0500 Subject: [PATCH 1/4] MAIN --- baystation12.dme | 6 +- code/__defines/_renderer.dm | 4 +- code/__defines/byond_tracy.dm | 2 +- code/__defines/procs.dm | 14 + code/_helpers/logging.dm | 2 +- code/_helpers/unsorted.dm | 110 +----- code/_macros.dm | 8 + code/_version.dm | 71 +--- code/controllers/hooks.dm | 5 +- .../subsystems/initialization/codex.dm | 2 +- code/controllers/subsystems/typing.dm | 2 +- code/controllers/subsystems/vote.dm | 8 +- code/datums/audio/_audio.dm | 2 +- code/datums/callbacks.dm | 4 +- code/datums/communication/pray.dm | 2 +- .../circuitboards/buildtype_select.dm | 2 +- .../multitool/circuitboards/stationalert.dm | 4 +- .../multitool/items/stock_parts_radio.dm | 26 +- code/datums/extensions/multitool/multitool.dm | 2 +- code/datums/helper_datums/getrev.dm | 2 +- code/datums/mind/memory.dm | 2 +- code/datums/mind/mind.dm | 24 +- code/datums/repositories/client.dm | 2 +- code/datums/vote/vote.dm | 4 +- code/datums/wires/radio.dm | 2 +- code/datums/wires/wires.dm | 8 +- code/game/antagonist/alien/borer.dm | 2 +- code/game/antagonist/antagonist_panel.dm | 12 +- code/game/antagonist/station/cultist.dm | 2 +- code/game/antagonist/station/traitor.dm | 2 +- .../changeling/changeling_evolutiontree.dm | 2 +- .../gamemodes/changeling/modularchangling.dm | 2 +- code/game/gamemodes/cult/runes.dm | 6 +- code/game/jobs/job/job.dm | 2 +- .../machinery/_machines_base/machinery.dm | 2 +- code/game/machinery/alarm.dm | 40 +- code/game/machinery/camera/camera.dm | 2 +- code/game/machinery/computer/Operating.dm | 2 +- code/game/machinery/computer/arcade.dm | 10 +- code/game/machinery/computer/arcade_orion.dm | 44 +-- code/game/machinery/computer/message.dm | 20 +- code/game/machinery/computer/prisoner.dm | 12 +- code/game/machinery/cryopod.dm | 8 +- code/game/machinery/hologram.dm | 4 +- code/game/machinery/kitchen/icecream.dm | 20 +- code/game/machinery/navbeacon.dm | 8 +- code/game/machinery/newscaster.dm | 112 +++--- code/game/machinery/pager.dm | 2 +- code/game/machinery/pipe/pipe_dispenser.dm | 4 +- code/game/machinery/spaceheater.dm | 8 +- code/game/machinery/suit_cycler.dm | 16 +- code/game/machinery/syndicatebeacon.dm | 2 +- code/game/machinery/telecomms/logbrowser.dm | 14 +- .../telecomms/machine_interactions.dm | 30 +- code/game/machinery/telecomms/telemonitor.dm | 12 +- code/game/objects/effects/chem/chemsmoke.dm | 4 +- code/game/objects/explosion.dm | 2 +- code/game/objects/items.dm | 4 +- code/game/objects/items/blueprints.dm | 6 +- code/game/objects/items/devices/paicard.dm | 14 +- code/game/objects/items/devices/powersink.dm | 2 +- .../items/devices/radio/electropack.dm | 18 +- .../game/objects/items/devices/radio/radio.dm | 2 +- .../items/devices/scanners/_scanner.dm | 2 +- .../objects/items/devices/slide_projector.dm | 4 +- .../objects/items/devices/taperecorder.dm | 2 +- .../objects/items/devices/transfer_valve.dm | 8 +- code/game/objects/items/devices/tvcamera.dm | 10 +- code/game/objects/items/stacks/stack.dm | 8 +- code/game/objects/items/weapons/RPD.dm | 4 +- .../objects/items/weapons/grenades/grenade.dm | 2 +- .../weapons/implants/implants/explosive.dm | 28 +- .../weapons/implants/implants/imprinting.dm | 4 +- .../weapons/implants/implants/tracking.dm | 8 +- code/game/objects/items/weapons/scrolls.dm | 2 +- .../items/weapons/storage/med_pouch.dm | 2 +- .../objects/items/weapons/storage/secure.dm | 2 +- .../objects/items/weapons/teleportation.dm | 14 +- code/game/objects/structures/safe.dm | 4 +- .../game/objects/structures/tank_dispenser.dm | 4 +- .../game/objects/structures/under_wardrobe.dm | 2 +- code/game/verbs/who.dm | 2 +- code/game/world.dm | 8 +- code/modules/ZAS/Variable Settings.dm | 2 +- code/modules/admin/NewBan.dm | 4 +- code/modules/admin/admin.dm | 324 ++++++++-------- code/modules/admin/admin_attack_log.dm | 4 +- code/modules/admin/admin_verbs.dm | 9 +- .../admin/permissionverbs/permissionedit.dm | 2 +- code/modules/admin/player_panel.dm | 349 ------------------ .../secrets/admin_secrets/jump_shuttle.dm | 4 +- .../secrets/admin_secrets/move_shuttle.dm | 2 +- .../secrets/investigation/attack_logs.dm | 16 +- .../secrets/investigation/computer_logs.dm | 4 +- code/modules/admin/ticket.dm | 12 +- code/modules/admin/topic.dm | 120 +++--- code/modules/admin/verbs/SDQL.dm | 8 +- code/modules/admin/verbs/SDQL_2/SDQL_2.dm | 6 +- code/modules/admin/verbs/adminhelp.dm | 10 +- code/modules/admin/verbs/adminjump.dm | 15 - code/modules/admin/verbs/adminpm.dm | 6 +- code/modules/admin/verbs/check_antagonist.dm | 25 ++ code/modules/admin/verbs/debug.dm | 2 +- code/modules/admin/verbs/mapping.dm | 2 +- code/modules/admin/verbs/player_list.dm | 43 +++ code/modules/admin/verbs/pray.dm | 4 +- code/modules/admin/verbs/trading_verbs.dm | 2 +- code/modules/admin/view_variables/helpers.dm | 40 +- .../admin/view_variables/view_variables.dm | 12 +- code/modules/assembly/infrared.dm | 6 +- code/modules/assembly/proximity.dm | 10 +- code/modules/assembly/signaler.dm | 18 +- code/modules/assembly/timer.dm | 6 +- .../components/unary/outlet_injector.dm | 8 +- .../components/unary/vent_pump.dm | 2 +- .../antagonism/01_candidacy.dm | 10 +- .../preference_setup/antagonism/02_setup.dm | 6 +- .../preference_setup/background/01_culture.dm | 12 +- .../background/02_language.dm | 8 +- .../preference_setup/background/03_records.dm | 12 +- .../preference_setup/general/03_equipment.dm | 12 +- .../preference_setup/general/04_flavor.dm | 26 +- .../client/preference_setup/global/01_ui.dm | 14 +- .../preference_setup/global/02_prefixes.dm | 4 +- .../client/preference_setup/global/03_pai.dm | 14 +- .../client/preference_setup/global/04_ooc.dm | 4 +- .../client/preference_setup/laws/laws_pref.dm | 6 +- .../preference_setup/loadout/loadout.dm | 14 +- .../preference_setup/occupation/occupation.dm | 26 +- .../occupation/skill_selection.dm | 2 +- .../preference_setup/preference_setup.dm | 2 +- code/modules/client/preferences.dm | 10 +- code/modules/clothing/_clothing.dm | 6 +- code/modules/clothing/clothing_accessories.dm | 2 +- code/modules/clothing/rings/material.dm | 2 +- .../clothing/under/accessories/badges.dm | 2 +- .../clothing/under/accessories/buddy_tag.dm | 4 +- code/modules/codex/codex_atom.dm | 2 +- code/modules/codex/codex_client.dm | 4 +- code/modules/codex/entries/_codex_entry.dm | 6 +- code/modules/economy/ATM.dm | 22 +- code/modules/economy/EFTPOS.dm | 18 +- code/modules/error_handler/error_viewer.dm | 12 +- code/modules/games/boardgame.dm | 4 +- code/modules/ghosttrap/trap.dm | 2 +- code/modules/goals/_goal.dm | 4 +- code/modules/goals/goal_mob.dm | 2 +- code/modules/goonchat/browserOutput.dm | 2 +- .../goonchat/browserassets/js/jquery.min.js | 6 +- code/modules/holodeck/HolodeckControl.dm | 18 +- code/modules/holomap/ship_holomap.dm | 2 +- code/modules/hydroponics/seed_storage.dm | 2 +- .../integrated_electronics/core/assemblies.dm | 18 +- .../core/integrated_circuit.dm | 34 +- .../integrated_electronics/core/printer.dm | 10 +- .../core/special_pins/list_pin.dm | 16 +- .../subtypes/manipulation.dm | 2 +- code/modules/library/lib_machines.dm | 4 +- code/modules/library/manuals/medical.dm | 24 +- code/modules/mining/machinery/_mineral.dm | 2 +- .../mining/machinery/mineral_console.dm | 4 +- .../mining/machinery/mineral_processor.dm | 6 +- .../mining/machinery/mineral_stacker.dm | 6 +- code/modules/mob/hear_say.dm | 4 +- code/modules/mob/language/language.dm | 6 +- code/modules/mob/language/synthetic.dm | 2 +- code/modules/mob/living/bot/bot.dm | 2 +- code/modules/mob/living/bot/cleanbot.dm | 8 +- code/modules/mob/living/bot/farmbot.dm | 16 +- code/modules/mob/living/bot/floorbot.dm | 10 +- code/modules/mob/living/bot/medibot.dm | 24 +- code/modules/mob/living/bot/mulebot.dm | 18 +- code/modules/mob/living/bot/remotebot.dm | 4 +- code/modules/mob/living/bot/secbot.dm | 14 +- .../alien/diona/gestalt/gestalt_vote.dm | 2 +- .../alien/diona/gestalt/gestalt_vote_types.dm | 22 +- code/modules/mob/living/carbon/carbon.dm | 14 +- .../mob/living/carbon/human/examine.dm | 34 +- code/modules/mob/living/carbon/human/human.dm | 24 +- .../mob/living/carbon/human/human_powers.dm | 39 -- .../mob/living/carbon/human/interactions.dm | 38 +- .../modules/mob/living/silicon/pai/recruit.dm | 20 +- .../silicon/robot/drone/drone_console.dm | 6 +- .../living/silicon/robot/drone/drone_items.dm | 2 +- .../modules/mob/living/silicon/robot/robot.dm | 2 +- code/modules/mob/living/silicon/silicon.dm | 6 +- .../mob/living/simple_animal/crow/crow.dm | 8 +- .../simple_animal/hostile/retaliate/parrot.dm | 4 +- code/modules/mob/login.dm | 4 +- code/modules/mob/mob.dm | 4 +- code/modules/mob/new_player/new_player.dm | 18 +- code/modules/mob/observer/ghost/follow.dm | 2 +- .../file_system/programs/generic/news.dm | 2 +- code/modules/organs/external/diagnostics.dm | 2 +- code/modules/overmap/ships/computers/ship.dm | 2 +- code/modules/paperwork/adminpaper.dm | 16 +- code/modules/paperwork/clipboard.dm | 8 +- code/modules/paperwork/faxmachine.dm | 16 +- code/modules/paperwork/filingcabinet.dm | 2 +- code/modules/paperwork/folders.dm | 6 +- code/modules/paperwork/paper.dm | 6 +- code/modules/paperwork/paper_bundle.dm | 18 +- code/modules/paperwork/photocopier.dm | 10 +- code/modules/paperwork/photography.dm | 2 +- code/modules/persistence/noticeboards.dm | 6 +- code/modules/persistence/persistence_datum.dm | 2 +- .../persistence/persistence_datum_graffiti.dm | 2 +- .../persistence/persistence_datum_paper.dm | 2 +- code/modules/power/gravitygenerator.dm | 6 +- code/modules/power/port_gen.dm | 10 +- .../particle_accelerator/particle_control.dm | 14 +- code/modules/power/singularity/singularity.dm | 2 +- code/modules/power/smes_construction.dm | 2 +- code/modules/power/solar.dm | 12 +- code/modules/power/turbine.dm | 12 +- .../projectiles/guns/projectile/dartgun.dm | 10 +- code/modules/psionics/equipment/psimeter.dm | 2 +- code/modules/psionics/equipment/psimonitor.dm | 12 +- code/modules/psionics/mob/mob_assay.dm | 2 +- .../heat_sources/thermal_regulator.dm | 10 +- code/modules/recycling/disposal.dm | 12 +- code/modules/recycling/sortingmachinery.dm | 4 +- code/modules/research/message_server.dm | 4 +- code/modules/research/rdconsole.dm | 186 +++++----- code/modules/research/server.dm | 22 +- .../security levels/keycard authentication.dm | 14 +- .../spells/artifacts/spellbound_servants.dm | 4 +- code/modules/spells/spellbook.dm | 14 +- code/modules/turbolift/turbolift_console.dm | 8 +- code/modules/webhooks/_webhook.dm | 2 +- .../xenoarcheaology/artifacts/replicator.dm | 2 +- .../tools/ano_device_battery.dm | 12 +- .../tools/artifact_analyser.dm | 8 +- .../tools/artifact_harvester.dm | 16 +- .../tools/suspension_generator.dm | 4 +- code/modules/xenoarcheaology/tools/tools.dm | 20 +- .../machinery/keycard authentication.dm | 16 +- maps/sierra/machinery/machinery.dm | 16 +- maps/sierra/machinery/uniform_vendor.dm | 10 +- maps/sierra/sierra_setup.dm | 2 +- maps/sierra/structures/signs.dm | 2 +- maps/torch/items/uniform_vendor.dm | 10 +- .../torch/machinery/keycard authentication.dm | 16 +- maps/torch/torch_simplemobs.dm | 2 +- maps/using.dm | 2 +- mods/RnD/code/_designs.dm | 2 +- mods/RnD/code/machinery/autolathe.dm | 2 +- .../code/game/objects/items/stacks/stack.dm | 2 +- .../code/modules/overmap/distress.dm | 2 +- mods/bluespace_kitty/code/bluespace_kitty.dm | 4 +- mods/client_verbs/html/credits.html | 2 +- mods/don_loadout/code/loadout/load_dialog.dm | 6 +- mods/don_loadout/code/loadout/loadout.dm | 22 +- mods/explosions/code/explosion_iter.dm | 4 +- mods/global_modpacks.dm | 2 +- .../code/integrated_circuit.dm | 38 +- mods/ipc_mods/code/external_cooling_device.dm | 12 +- mods/ipc_mods/code/ipc.dm | 4 +- .../code/item_identification.dm | 16 +- mods/loadout_items/code/accessory.dm | 18 +- mods/machinery/code/telesci_by_TT/gps.dm | 2 +- .../code/telesci_by_TT/telesci_computer.dm | 18 +- mods/music_player/code/music_player.dm | 4 +- mods/music_player/code/music_writer.dm | 6 +- mods/music_player/code/subtypes_tape.dm | 2 +- mods/ooc_notes/code/ooc_notes.dm | 2 +- mods/pixelshift/code/signals.dm | 4 +- .../templates/COMPONENT_TEMPLATE.md | 4 +- mods/ssinput/code/general/client.dm | 2 +- mods/ssinput/code/general/preferences.dm | 2 +- mods/ssinput/code/keybindings/admin.dm | 2 +- mods/telecomms/code/scripting/IDE.dm | 2 +- mods/telecomms/code/traffic_control.dm | 16 +- mods/utility_items/code/multimeter.dm | 6 +- mods/virusology/code/admin.dm | 12 +- mods/virusology/code/curer.dm | 4 +- mods/virusology/code/items_devices.dm | 2 +- nano/js/libraries.min.js | 4 +- nano/js/libraries/jquery.js | 10 +- packs/factions/scgec/misc.dm | 2 +- .../admintools/bmode_copypaste.dm | 2 +- .../objects/machines/disposal.dm | 12 +- .../objects/vehicles/cargo_train.dm | 2 +- packs/sierra-tweaks/objects/vehicles/train.dm | 2 +- 284 files changed, 1586 insertions(+), 2036 deletions(-) create mode 100644 code/__defines/procs.dm delete mode 100644 code/modules/admin/player_panel.dm create mode 100644 code/modules/admin/verbs/check_antagonist.dm create mode 100644 code/modules/admin/verbs/player_list.dm diff --git a/baystation12.dme b/baystation12.dme index a26051b82c1a0..5f28d94f031a6 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -69,6 +69,7 @@ #include "code\__defines\movement.dm" #include "code\__defines\overmap.dm" #include "code\__defines\proc_presets.dm" +#include "code\__defines\procs.dm" #include "code\__defines\psi.dm" #include "code\__defines\qdel.dm" #include "code\__defines\research.dm" @@ -263,8 +264,6 @@ #include "code\core\datum\IsAbstract.dm" #include "code\core\image\Transform.dm" #include "code\core\math\math.dm" -#include "code\core\math\vector2.dm" -#include "code\core\math\vector3.dm" #include "code\core\matrix\Transform.dm" #include "code\datums\ai_law_sets.dm" #include "code\datums\ai_laws.dm" @@ -1391,7 +1390,6 @@ #include "code\modules\admin\NewBan.dm" #include "code\modules\admin\persistence.dm" #include "code\modules\admin\player_notes.dm" -#include "code\modules\admin\player_panel.dm" #include "code\modules\admin\spam_prevention.dm" #include "code\modules\admin\ticket.dm" #include "code\modules\admin\topic.dm" @@ -1460,6 +1458,7 @@ #include "code\modules\admin\verbs\adminsay.dm" #include "code\modules\admin\verbs\antag-ooc.dm" #include "code\modules\admin\verbs\atmosdebug.dm" +#include "code\modules\admin\verbs\check_antagonist.dm" #include "code\modules\admin\verbs\cinematic.dm" #include "code\modules\admin\verbs\custom_event.dm" #include "code\modules\admin\verbs\deadsay.dm" @@ -1472,6 +1471,7 @@ #include "code\modules\admin\verbs\mapping.dm" #include "code\modules\admin\verbs\massmodvar.dm" #include "code\modules\admin\verbs\modifyvariables.dm" +#include "code\modules\admin\verbs\player_list.dm" #include "code\modules\admin\verbs\playsound.dm" #include "code\modules\admin\verbs\possess.dm" #include "code\modules\admin\verbs\pray.dm" diff --git a/code/__defines/_renderer.dm b/code/__defines/_renderer.dm index 66b6cc1932e4a..e07b1f4b063fe 100644 --- a/code/__defines/_renderer.dm +++ b/code/__defines/_renderer.dm @@ -26,7 +26,7 @@ /atom/movable/renderer abstract_type = /atom/movable/renderer appearance_flags = DEFAULT_RENDERER_APPEARANCE_FLAGS - screen_loc = "CENTER" + screen_loc = RENDERER_SCREEN_LOC plane = LOWEST_PLANE blend_mode = BLEND_OVERLAY @@ -72,7 +72,7 @@ INITIALIZE_IMMEDIATE(/atom/movable/renderer) else if (render_target_name) render_target = "*[ckey(name)]" relay = new - relay.screen_loc = "CENTER" + relay.screen_loc = RENDERER_SCREEN_LOC relay.appearance_flags = PASS_MOUSE | NO_CLIENT_COLOR | KEEP_TOGETHER relay.name = "[render_target] relay" relay.mouse_opacity = mouse_opacity diff --git a/code/__defines/byond_tracy.dm b/code/__defines/byond_tracy.dm index e1f5c42c07c1b..5db3ebc9aea27 100644 --- a/code/__defines/byond_tracy.dm +++ b/code/__defines/byond_tracy.dm @@ -28,6 +28,6 @@ lib = "tracy.so" else CRASH("Tracy initialization failed: unsupported platform or DLL not found.") - var/init = CALL_EXT(lib, "init")() + var/init = call_ext(lib, "init")() if(init != "0") CRASH("[lib] init error: [init]") diff --git a/code/__defines/procs.dm b/code/__defines/procs.dm new file mode 100644 index 0000000000000..d19c51b3a0cf5 --- /dev/null +++ b/code/__defines/procs.dm @@ -0,0 +1,14 @@ +/// Call by name proc references, checks if the proc exists on either this type () (AND ONLY THIS TYPE) or as a global proc. +#define PROC_REF(X) (nameof(.proc/##X)) + +/// Call by name verb references, checks if the verb exists on either this type or as a global verb. +#define VERB_REF(X) (nameof(.verb/##X)) + +/// Call by name proc reference, checks if the proc exists on either the given type or as a global proc +#define TYPE_PROC_REF(TYPE, X) (nameof(##TYPE.proc/##X)) + +/// Call by name verb reference, checks if the verb exists on either the given type or as a global verb +#define TYPE_VERB_REF(TYPE, X) (nameof(##TYPE.verb/##X)) + +/// Call by name proc reference, checks if the proc is an existing global proc +#define GLOBAL_PROC_REF(X) (/proc/##X) diff --git a/code/_helpers/logging.dm b/code/_helpers/logging.dm index 0ce8379d29c5f..521bac2b823ab 100644 --- a/code/_helpers/logging.dm +++ b/code/_helpers/logging.dm @@ -167,7 +167,7 @@ var/global/log_end= world.system_type == UNIX ? ascii2text(13) : "" if(key) if(include_link && C) - . += "" + . += "" . += key diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index 061cfde36b442..8c071d91a903f 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -184,9 +184,6 @@ Turf and target are seperate in case you want to teleport some distance from a t return 1 return 0 -/proc/sign(x) - return x!=0?x/abs(x):0 - /proc/getline(atom/M,atom/N)//Ultra-Fast Bresenham Line-Drawing Algorithm RETURN_TYPE(/list) var/px=M.x //starting x @@ -365,98 +362,11 @@ Turf and target are seperate in case you want to teleport some distance from a t return GetConnectedZlevels(z) return list() //We return an empty list, because we are apparently in nullspace -/proc/get_sorted_mobs() - RETURN_TYPE(/list) - var/list/old_list = getmobs() - var/list/AI_list = list() - var/list/Dead_list = list() - var/list/keyclient_list = list() - var/list/key_list = list() - var/list/logged_list = list() - for(var/named in old_list) - var/mob/M = old_list[named] - if(issilicon(M)) - AI_list |= M - else if(isghost(M) || M.stat == DEAD) - Dead_list |= M - else if(M.key && M.client) - keyclient_list |= M - else if(M.key) - key_list |= M - else - logged_list |= M - old_list.Remove(named) - var/list/new_list = list() - new_list += AI_list - new_list += keyclient_list - new_list += key_list - new_list += logged_list - new_list += Dead_list - return new_list - -//Returns a list of all mobs with their name -/proc/getmobs() - RETURN_TYPE(/list) - var/list/mobs = sortmobs() - var/list/names = list() - var/list/creatures = list() - var/list/namecounts = list() - for(var/mob/M in mobs) - var/name = M.name - if (name in names) - namecounts[name]++ - name = "[name] ([namecounts[name]])" - else - names.Add(name) - namecounts[name] = 1 - if (M.real_name && M.real_name != M.name) - name += " \[[M.real_name]\]" - if (M.stat == DEAD) - if(isobserver(M)) - name += " \[observer\]" - else - name += " \[dead\]" - creatures[name] = M - - return creatures /proc/get_follow_targets() RETURN_TYPE(/list) return follow_repository.get_follow_targets() -//Orders mobs by type then by name -/proc/sortmobs() - RETURN_TYPE(/list) - var/list/moblist = list() - var/list/sortmob = sortAtom(SSmobs.mob_list) - for(var/mob/observer/eye/M in sortmob) - moblist.Add(M) - for(var/mob/living/silicon/ai/M in sortmob) - moblist.Add(M) - for(var/mob/living/silicon/pai/M in sortmob) - moblist.Add(M) - for(var/mob/living/silicon/robot/M in sortmob) - moblist.Add(M) - for(var/mob/living/carbon/human/M in sortmob) - moblist.Add(M) - for(var/mob/living/carbon/brain/M in sortmob) - moblist.Add(M) - for(var/mob/living/carbon/alien/M in sortmob) - moblist.Add(M) - for(var/mob/observer/ghost/M in sortmob) - moblist.Add(M) - for(var/mob/new_player/M in sortmob) - moblist.Add(M) - for(var/mob/living/carbon/slime/M in sortmob) - moblist.Add(M) - for(var/mob/living/simple_animal/M in sortmob) - moblist.Add(M) -// for(var/mob/living/silicon/hivebot/M in world) -// mob_list.Add(M) -// for(var/mob/living/silicon/hive_mainframe/M in world) -// mob_list.Add(M) - return moblist - //Forces a variable to be posative /proc/modulus(M) if(M >= 0) @@ -537,13 +447,10 @@ Turf and target are seperate in case you want to teleport some distance from a t * * Returns a list of atoms. */ -/atom/proc/GetAllContents(searchDepth = 5, includeSelf = FALSE) +/atom/proc/GetAllContents(searchDepth = 5) RETURN_TYPE(/list) var/list/toReturn = list() - if(includeSelf) - toReturn += src - for(var/atom/part in contents) toReturn += part if(length(part.contents) && searchDepth) @@ -741,17 +648,20 @@ GLOBAL_LIST_INIT(duplicate_object_disallowed_vars, list( trg_min_y = turf.y var/list/refined_src = list() for (var/turf/turf in turfs_src) - refined_src[turf] = new /datum/vector2 (turf.x - src_min_x, turf.y - src_min_y) + refined_src[turf] = list(turf.x - src_min_x, turf.y - src_min_y) var/list/refined_trg = list() for (var/turf/turf in turfs_trg) - refined_trg[turf] = new /datum/vector2 (turf.x - trg_min_x, turf.y - trg_min_y) + refined_trg[turf] = list(turf.x - src_min_x, turf.y - src_min_y) var/list/turfs_to_update = list() var/list/copied_movables = list() moving: for (var/turf/source_turf in refined_src) - var/datum/vector2/source_position = refined_src[source_turf] + var/list/source_position = refined_src[source_turf] for (var/turf/target_turf in refined_trg) - if (source_position ~= refined_trg[target_turf]) + var/list/target_position = refined_trg[target_turf] + var/same_position = source_position[1] == target_position[1] \ + && source_position[2] == target_position[2] + if (same_position) var/old_dir1 = source_turf.dir var/old_icon_state1 = source_turf.icon_state var/old_icon1 = source_turf.icon @@ -999,9 +909,9 @@ var/global/list/WALLITEMS = list( return replacetext(replacetext(text,"\proper ",""),"\improper ","") /proc/topic_link(datum/D, arglist, content) - if(istype(arglist,/list)) + if(islist(arglist)) arglist = list2params(arglist) - return "[content]" + return "[content]" /proc/get_random_colour(simple = FALSE, lower = 0, upper = 255) var/colour diff --git a/code/_macros.dm b/code/_macros.dm index c8c4344ee1364..843312264cf0c 100644 --- a/code/_macros.dm +++ b/code/_macros.dm @@ -305,3 +305,11 @@ /// Explicitly set the length of L to NEWLEN, adding nulls or dropping entries. Is the same value as NEWLEN. #define LIST_RESIZE(L, NEWLEN) ((L).len = (NEWLEN)) + + + +/// A ref=src anchor. +#define aref(text, params) "[text]" + +/// A ref=src anchor with additional anchor properties. +#define arefext(text, params, props) "[text]" diff --git a/code/_version.dm b/code/_version.dm index 94d807fd9e171..0f0f66ad66a32 100644 --- a/code/_version.dm +++ b/code/_version.dm @@ -3,65 +3,24 @@ DM version compatibility macros & procs Retain even if empty - the future exists */ -#if DM_VERSION < 515 +#if DM_VERSION < 516 -/proc/ceil(number) - return -round(-number) +/proc/sign(num) + if (!num || !isnum(num)) + return 0 + if (num > 0) + return 1 + return -1 -/proc/floor(number) - return round(number) +/proc/lerp(low, high, factor) + if (isnum(low) && isnum(high)) + return low + (high - low) * factor + crash_with("non-num lerp() is unsupported below byond 516.1648") -/proc/fract(number) - return number - trunc(number) - -/proc/ftime() - throw EXCEPTION("ftime not available below 515") - -/proc/get_steps_to() - throw EXCEPTION("get_steps_to not available below 515") - -/proc/isinf(number) - return number == POSITIVE_INFINITY || number == NEGATIVE_INFINITY - -/proc/isnan(number) - return isnum(number) && number != number - -/proc/ispointer() - throw EXCEPTION("ispointer not available below 515") - -/proc/nameof(thing) - throw EXCEPTION("nameof not available below 515") - -/proc/noise_hash() - throw EXCEPTION("noise_hash not available below 515") - -/proc/refcount(datum) - throw EXCEPTION("refcount not available below 515") - -/proc/trimtext(text) - var/static/regex/pattern - if (!pattern) - pattern = regex(@"^\s*(.*?)\s*$", "g") - return replacetext_char(text, pattern, "$1") - -/proc/trunc(number) - if (number < 0) - return -round(-number) - return round(number) - -/client/proc/RenderIcon(atom) - throw EXCEPTION("client::RenderIcon() not available below 515") - -#define PROC_REF(X) (.proc/##X) -#define TYPE_PROC_REF(TYPE, X) (##TYPE.proc/##X) -#define GLOBAL_PROC_REF(X) (.proc/##X) -#define CALL_EXT call +#endif +#if DM_VERSION > 515 +#define RENDERER_SCREEN_LOC "1,1" #else - -#define PROC_REF(X) (nameof(.proc/##X)) -#define TYPE_PROC_REF(TYPE, X) (nameof(##TYPE.proc/##X)) -#define GLOBAL_PROC_REF(X) (/proc/##X) -#define CALL_EXT call_ext - +#define RENDERER_SCREEN_LOC "CENTER" #endif diff --git a/code/controllers/hooks.dm b/code/controllers/hooks.dm index ae32f42034902..6b651e9c0e7d4 100644 --- a/code/controllers/hooks.dm +++ b/code/controllers/hooks.dm @@ -29,11 +29,10 @@ error("Invalid hook '/hook/[hook]' called.") return 0 - var/caller = new hook_path + var/hook_inst = new hook_path var/status = 1 for(var/P in typesof("[hook_path]/proc")) - var/proc_name = replacetext("[P]", "[hook_path]/proc/", "") - if(!call(caller, proc_name)(arglist(args))) + if(!call(hook_inst, P)(arglist(args))) error("Hook '[P]' failed or runtimed.") status = 0 diff --git a/code/controllers/subsystems/initialization/codex.dm b/code/controllers/subsystems/initialization/codex.dm index e5ad058c966ae..59768d32f8fb1 100644 --- a/code/controllers/subsystems/initialization/codex.dm +++ b/code/controllers/subsystems/initialization/codex.dm @@ -58,7 +58,7 @@ SUBSYSTEM_DEF(codex) var/datum/codex_entry/linked_entry = get_entry_by_string(key) var/replacement = linkRegex.group[4] if(linked_entry) - replacement = "[replacement]" + replacement = "[replacement]" string = replacetextEx(string, linkRegex.match, replacement) return string diff --git a/code/controllers/subsystems/typing.dm b/code/controllers/subsystems/typing.dm index 891d20eb1ff4f..fe795206c762e 100644 --- a/code/controllers/subsystems/typing.dm +++ b/code/controllers/subsystems/typing.dm @@ -34,7 +34,7 @@ SUBSYSTEM_DEF(typing) istyping_input = 0|1, istyping_hotkey = 0|1 ), ...) - See PROC_REF(GetEntry for details. + See TYPE_PROC_REF(GetEntry for details. */ var/static/list/status = list() diff --git a/code/controllers/subsystems/vote.dm b/code/controllers/subsystems/vote.dm index 7c29d1415d5d6..ee84b8a51baec 100644 --- a/code/controllers/subsystems/vote.dm +++ b/code/controllers/subsystems/vote.dm @@ -92,12 +92,12 @@ SUBSYSTEM_DEF(vote) if(active_vote) . += active_vote.interface(C.mob) if(admin) - . += "(Cancel Vote) " + . += "(Cancel Vote) " else . += "

Start a vote:



" - . += "Close" + . += "Close" return JOINTEXT(.) /datum/controller/subsystem/vote/proc/show_panel(mob/user) diff --git a/code/datums/audio/_audio.dm b/code/datums/audio/_audio.dm index f5958e849801a..4960dfafc2129 100644 --- a/code/datums/audio/_audio.dm +++ b/code/datums/audio/_audio.dm @@ -36,7 +36,7 @@ /singleton/audio/proc/get_info(with_meta = TRUE) . = SPAN_GOOD("[title][!author?"":" by [author]"][!collection?"":" ([collection])"]") if (with_meta) - . = "[.][!url?"":"\[link\]"]\[license\]" + . = "[.][!url?"":"\[link\]"]\[license\]" /singleton/audio/proc/get_sound(channel) diff --git a/code/datums/callbacks.dm b/code/datums/callbacks.dm index 112e971e4e9bf..25c8e383c1d88 100644 --- a/code/datums/callbacks.dm +++ b/code/datums/callbacks.dm @@ -17,7 +17,7 @@ on the first sleep, and so should be used only where results are not required. Callables are proc names or proc references, with references preferred for safety (in most cases). These vary between 515 and older major versions: Before 515: -- PROC_REF(name refers to the last override of name on target, OR the global proc name. +- TYPE_PROC_REF(name refers to the last override of name on target, OR the global proc name. After 515: - src::name() must be used for the last override, or ::name() for the global. - nameof() is available at compile time to resolve safe proc names like nameof(/datum::fooBehavior()). @@ -28,7 +28,7 @@ invoke(myLivingMob, TYPE_PROC_REF(/mob/living, handle_vision) ** Timers Timers accept callbacks as their first argument. For full timer documentation, see the timedevent datum. For example: -addTimer(CALLBACK(myMob, proc_ref(drop_l_hand())), 10 SECONDS) +addTimer(CALLBACK(myMob, TYPE_PROC_REF(drop_l_hand())), 10 SECONDS) */ var/global/const/GLOBAL_PROC = FALSE diff --git a/code/datums/communication/pray.dm b/code/datums/communication/pray.dm index c1856a9b1c158..052bbca646d70 100644 --- a/code/datums/communication/pray.dm +++ b/code/datums/communication/pray.dm @@ -11,7 +11,7 @@ if(!M.client) continue if(M.client.holder && M.client.get_preference_value(/datum/client_preference/staff/show_chat_prayers) == GLOB.PREF_SHOW) - receive_communication(communicator, M, "\[SC\] \[DN\][SPAN_NOTICE("[icon2html(cross, M)] [SPAN_COLOR("purple", "PRAY: ")][key_name(communicator, 1)]: [message]")]") + receive_communication(communicator, M, "\[SC\] \[DN\][SPAN_NOTICE("[icon2html(cross, M)] [SPAN_COLOR("purple", "PRAY: ")][key_name(communicator, 1)]: [message]")]") else if(communicator == M) //Give it to ourselves receive_communication(communicator, M, SPAN_NOTICE("[icon2html(cross, M)] You send the prayer, \"[message]\" out into the heavens.")) diff --git a/code/datums/extensions/multitool/circuitboards/buildtype_select.dm b/code/datums/extensions/multitool/circuitboards/buildtype_select.dm index eb4e979ecfbdb..a57947162d78a 100644 --- a/code/datums/extensions/multitool/circuitboards/buildtype_select.dm +++ b/code/datums/extensions/multitool/circuitboards/buildtype_select.dm @@ -12,7 +12,7 @@ if(path == board.build_path) dat += "[SPAN_GOOD("◼")][initial(thing.name)]" else - dat += "[SPAN_BAD("◼")][initial(thing.name)]" + dat += "[SPAN_BAD("◼")][initial(thing.name)]" dat += "" dat += "" return JOINTEXT(dat) diff --git a/code/datums/extensions/multitool/circuitboards/stationalert.dm b/code/datums/extensions/multitool/circuitboards/stationalert.dm index ad40dd17443ea..ba85d73577810 100644 --- a/code/datums/extensions/multitool/circuitboards/stationalert.dm +++ b/code/datums/extensions/multitool/circuitboards/stationalert.dm @@ -6,9 +6,9 @@ . += "" . += "[AH.category]" if(AH in SA.alarm_handlers) - . += "[SPAN_GOOD("◼")]ActiveInactivate" + . += "[SPAN_GOOD("◼")]ActiveInactivate" else - . += "[SPAN_BAD("◼")]InactiveActivate" + . += "[SPAN_BAD("◼")]InactiveActivate" . += "" . += "" diff --git a/code/datums/extensions/multitool/items/stock_parts_radio.dm b/code/datums/extensions/multitool/items/stock_parts_radio.dm index 6daef328d2e94..22f8c9911d578 100644 --- a/code/datums/extensions/multitool/items/stock_parts_radio.dm +++ b/code/datums/extensions/multitool/items/stock_parts_radio.dm @@ -34,15 +34,15 @@ var/obj/item/stock_parts/radio/radio = holder var/list/dat = list() - dat += "Unlink Machine
" + dat += "Unlink Machine
" var/obj/machinery/actual_machine = machine && machine.resolve() if(actual_machine && actual_machine.can_apply_preset_to(radio)) - dat += "Reset to Machine Defaults
" + dat += "Reset to Machine Defaults
" dat += "Configuration for \the [radio].
" - dat += "Frequency: [radio.frequency || "none"]
" - dat += "ID: [radio.id_tag || "none"]
" - dat += "Filter: [radio.filter || "none"]
" - dat += "Encryption key: [radio.encryption || "none"]
" + dat += "Frequency: [radio.frequency || "none"]
" + dat += "ID: [radio.id_tag || "none"]
" + dat += "Filter: [radio.filter || "none"]
" + dat += "Encryption key: [radio.encryption || "none"]
" return JOINTEXT(dat) /datum/extension/interactive/multitool/radio/on_topic(href, href_list, user) @@ -98,13 +98,13 @@ . += "" for(var/thing in selected_events) . += "" - . += "" - . += "" + . += "" + . += "" var/singleton/public_access/variable = selected_events[thing] - . += "" - . += "" + . += "" + . += "" . += "" - . += "" + . += "" . += "
(-)[thing](-)[thing][variable.name](?)[variable.name](?)
(+)
(+)
" /datum/extension/interactive/multitool/radio/proc/event_list_topic(list/selected_events, list/valid_events, mob/user, href_list) @@ -199,9 +199,9 @@ dat += "Choose event:
" if(radio.event) - dat += "[radio.event] (?)" + dat += "[radio.event] (?)" else - dat += "(+)" + dat += "(+)" dat += "
" dat += "Transmit on event:
" dat += event_list_to_selection_table("on_event", radio.transmit_on_event) diff --git a/code/datums/extensions/multitool/multitool.dm b/code/datums/extensions/multitool/multitool.dm index bfe0e8fb23a98..0c6d95886d828 100644 --- a/code/datums/extensions/multitool/multitool.dm +++ b/code/datums/extensions/multitool/multitool.dm @@ -26,7 +26,7 @@ . += "Buffer Memory:
" var/buffer_name = multitool.get_buffer_name() if(buffer_name) - . += "[buffer_name] Send Purge
" + . += "[buffer_name] Send Purge
" else . += "No connection stored in the buffer." diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm index 104462f52e65e..4fca1cd3153c4 100644 --- a/code/datums/helper_datums/getrev.dm +++ b/code/datums/helper_datums/getrev.dm @@ -46,7 +46,7 @@ var/global/datum/getrev/revdata = new() if(revdata.revision) var/server_revision = revdata.revision if(config.source_url) - server_revision = "[server_revision]" + server_revision = "[server_revision]" to_chat(src, "Server Revision: [server_revision] - [revdata.branch] - [revdata.date]") else to_chat(src, "Server Revision: Revision Unknown") diff --git a/code/datums/mind/memory.dm b/code/datums/mind/memory.dm index 13d9fc87106b5..b52adc0c45edc 100644 --- a/code/datums/mind/memory.dm +++ b/code/datums/mind/memory.dm @@ -56,7 +56,7 @@ if(owner_name != last_owner_name && current) output += "[current.real_name]'s Memories
" last_owner_name = owner_name - output += "[M.memory] \[Remove\]" + output += "[M.memory] \[Remove\]" if(length(objectives) > 0) output += "
Objectives:" diff --git a/code/datums/mind/mind.dm b/code/datums/mind/mind.dm index 3d071b22387d5..1e46334a90d1c 100644 --- a/code/datums/mind/mind.dm +++ b/code/datums/mind/mind.dm @@ -107,7 +107,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 += "
" out += "Factions and special roles:
" var/list/all_antag_types = GLOB.all_antag_types_ @@ -121,16 +121,16 @@ var/num = 1 for(var/datum/objective/O in objectives) out += "Objective #[num]: [O.explanation_text] " - out += " \[remove\]
" + out += " \[remove\]
" num++ - out += "
\[announce objectives\]" + out += "
\[announce objectives\]" else out += "None." - out += "
\[add\]

" + out += "
\[add\]

" var/datum/goal/ambition/ambition = SSgoals.ambitions[src] - out += "Ambitions: [ambition ? ambition.description : "None"] \[edit\]
" + out += "Ambitions: [ambition ? ambition.description : "None"] \[edit\]
" show_browser(usr, out, "window=edit_memory[src]") /datum/mind/Topic(href, href_list) @@ -142,8 +142,9 @@ if(href_list["add_goal"]) - var/mob/caller = locate(href_list["add_goal_caller"]) - if(!isghost(usr) && caller && caller == current) can_modify = TRUE + var/mob/calling_mob = locate(href_list["add_goal_caller"]) + if(!isghost(usr) && calling_mob && calling_mob == current) + can_modify = TRUE if(can_modify) var/did_generate_goal = generate_goals(assigned_job, TRUE, 1, bypass_goal_checks = is_admin) @@ -163,8 +164,9 @@ if(href_list["abandon_goal"]) var/datum/goal/goal = locate(href_list["abandon_goal"]) - var/mob/caller = locate(href_list["abandon_goal_caller"]) - if(!isghost(usr) && caller && caller == current) can_modify = TRUE + var/mob/calling_mob = locate(href_list["reroll_goal_caller"]) + if(!isghost(usr) && calling_mob && calling_mob == current) + can_modify = TRUE if(can_modify && goal && (goal in goals)) if(delete_goal(assigned_job, goal, is_admin)) @@ -179,8 +181,8 @@ if(href_list["reroll_goal"]) var/datum/goal/goal = locate(href_list["reroll_goal"]) - var/mob/caller = locate(href_list["reroll_goal_caller"]) - if(!isghost(usr) && caller && caller == current) can_modify = TRUE + var/mob/calling_mob = locate(href_list["reroll_goal_caller"]) + if(!isghost(usr) && calling_mob && calling_mob == current) can_modify = TRUE if(can_modify && goal && (goal in goals)) if(generate_goals(assigned_job, TRUE, 1, bypass_goal_checks = TRUE)) diff --git a/code/datums/repositories/client.dm b/code/datums/repositories/client.dm index cd3d0d4de0953..8155355ced0d4 100644 --- a/code/datums/repositories/client.dm +++ b/code/datums/repositories/client.dm @@ -47,7 +47,7 @@ var/global/repository/client/client_repository = new() return "[key]/([name]) (DC)" if(check_if_offline && !client_by_ckey(ckey)) return "[key]/([name]) (DC)" - return pm_link ? "[key]/([name])[rank2text()]" : "[key]/([name])" + return pm_link ? "[key]/([name])[rank2text()]" : "[key]/([name])" /datum/client_lite/proc/rank2text() var/client/C = client_by_ckey(ckey) diff --git a/code/datums/vote/vote.dm b/code/datums/vote/vote.dm index e16b16a4b9044..c2f0731d78f31 100644 --- a/code/datums/vote/vote.dm +++ b/code/datums/vote/vote.dm @@ -52,7 +52,7 @@ var/text = get_start_text() log_vote(text) - to_world(SPAN_COLOR("purple", "[text]\nType vote or click here to place your votes.\nYou have [config.vote_period/10] seconds to vote.")) + to_world(SPAN_COLOR("purple", "[text]\nType vote or click here to place your votes.\nYou have [config.vote_period/10] seconds to vote.")) sound_to(world, sound('sound/ui/vote-notify.ogg', repeat = 0, wait = 0, volume = 33, channel = GLOB.vote_sound_channel)) /datum/vote/proc/get_start_text() @@ -212,7 +212,7 @@ var/choice = choices[i] var/voted_for = votes[user.ckey] && (i in votes[user.ckey]) - . += "" diff --git a/code/datums/wires/radio.dm b/code/datums/wires/radio.dm index 0cec775f8fe33..457edb2f2d2ef 100644 --- a/code/datums/wires/radio.dm +++ b/code/datums/wires/radio.dm @@ -21,7 +21,7 @@ var/global/const/WIRE_TRANSMIT = 4 var/obj/item/device/radio/R = holder . += ..() if(R.cell) - . += "
Remove cell
" + . += "
Remove cell
" /datum/wires/radio/UpdatePulsed(index) var/obj/item/device/radio/R = holder diff --git a/code/datums/wires/wires.dm b/code/datums/wires/wires.dm index 4321a19f5925e..abaee47cbfe2f 100644 --- a/code/datums/wires/wires.dm +++ b/code/datums/wires/wires.dm @@ -124,9 +124,9 @@ var/global/list/wireColours = list("red", "blue", "green", "darkred", "orange", html += "" html += "[SPAN_COLOR(colour, "◼")][capitalize(colour)]" html += "" - html += "[IsColourCut(colour) ? "Mend" : "Cut"]" - html += " Pulse" - html += " [IsAttached(colour) ? "Detach" : "Attach"] Signaller" + html += "[IsColourCut(colour) ? "Mend" : "Cut"]" + html += " Pulse" + html += " [IsAttached(colour) ? "Detach" : "Attach"] Signaller" var/label = "Examine" if (show_labels) var/datum/wire_description/wire_description = get_description(GetIndex(colour)) @@ -134,7 +134,7 @@ var/global/list/wireColours = list("red", "blue", "green", "darkred", "orange", label = "[label] ([wire_description.label])" else label = "[label] (???)" - html += " [label]" + html += " [label]" html += "
" + . += "
" . += "[display_choices[choice]]" . += "
" html += "" diff --git a/code/game/antagonist/alien/borer.dm b/code/game/antagonist/alien/borer.dm index 201f18dd82057..f79e5401773c0 100644 --- a/code/game/antagonist/alien/borer.dm +++ b/code/game/antagonist/alien/borer.dm @@ -26,7 +26,7 @@ GLOBAL_DATUM_INIT(borers, /datum/antagonist/borer, new) spawn_announcement_delay = 5000 /datum/antagonist/borer/get_extra_panel_options(datum/mind/player) - return "\[put in host\]" + return "\[put in host\]" /datum/antagonist/borer/create_objectives(datum/mind/player) if(!..()) diff --git a/code/game/antagonist/antagonist_panel.dm b/code/game/antagonist/antagonist_panel.dm index 885981f4cba6d..13dc331aa2c88 100644 --- a/code/game/antagonist/antagonist_panel.dm +++ b/code/game/antagonist/antagonist_panel.dm @@ -3,13 +3,13 @@ var/dat = "[role_text]:" var/extra = get_extra_panel_options(player) if(is_antagonist(player)) - dat += "\[-\]" - dat += "\[equip\]" + dat += "\[-\]" + dat += "\[equip\]" if(starting_locations && length(starting_locations)) - dat += "\[move to spawn\]" + dat += "\[move to spawn\]" if(extra) dat += "[extra]" else - dat += "\[+\]" + dat += "\[+\]" dat += "" return dat @@ -27,11 +27,11 @@ var/mob/M = player.current dat += "" if(M) - dat += "[M.real_name]/([player.key])" + dat += "[M.real_name]/([player.key])" if(!M.client) dat += " (logged out)" if(M.stat == DEAD) dat += " [SPAN_COLOR("red", "(DEAD)")]" dat += "" - dat += "\[PM\]\[TP\]" + dat += "\[PM\]\[TP\]" else dat += "Mob not found/([player.key])!" dat += "" diff --git a/code/game/antagonist/station/cultist.dm b/code/game/antagonist/station/cultist.dm index 9c5d40fd16f8b..7d2fcaca0c638 100644 --- a/code/game/antagonist/station/cultist.dm +++ b/code/game/antagonist/station/cultist.dm @@ -162,7 +162,7 @@ GLOBAL_DATUM_INIT(cult, /datum/antagonist/cultist, new) if(!iscultist(M) || !M.mind) return - to_chat(M, SPAN_OCCULT("Do you want to abandon the cult of Nar'Sie? ACCEPT")) + to_chat(M, SPAN_OCCULT("Do you want to abandon the cult of Nar'Sie? ACCEPT")) /datum/antagonist/cultist/Topic(href, href_list) if(href_list["confirmleave"]) diff --git a/code/game/antagonist/station/traitor.dm b/code/game/antagonist/station/traitor.dm index d76c5184e194b..668cd851880f2 100644 --- a/code/game/antagonist/station/traitor.dm +++ b/code/game/antagonist/station/traitor.dm @@ -11,7 +11,7 @@ GLOBAL_DATUM_INIT(traitors, /datum/antagonist/traitor, new) skill_setter = /datum/antag_skill_setter/station /datum/antagonist/traitor/get_extra_panel_options(datum/mind/player) - return "\[set crystals\]\[spawn uplink\]" + return "\[set crystals\]\[spawn uplink\]" /datum/antagonist/traitor/Topic(href, href_list) if (..()) diff --git a/code/game/gamemodes/changeling/changeling_evolutiontree.dm b/code/game/gamemodes/changeling/changeling_evolutiontree.dm index fadbdcde30c6a..f712f9c696c28 100644 --- a/code/game/gamemodes/changeling/changeling_evolutiontree.dm +++ b/code/game/gamemodes/changeling/changeling_evolutiontree.dm @@ -124,7 +124,7 @@ GLOBAL_LIST_EMPTY(powerinstances) if(!ownsthis) { - body += "Evolve" + body += "Evolve" } body += ""; diff --git a/code/game/gamemodes/changeling/modularchangling.dm b/code/game/gamemodes/changeling/modularchangling.dm index 6d1fb2485e378..334119c3eb8d2 100644 --- a/code/game/gamemodes/changeling/modularchangling.dm +++ b/code/game/gamemodes/changeling/modularchangling.dm @@ -250,7 +250,7 @@ var/global/list/datum/power/changeling/powerinstances = list() if(!ownsthis) { - body += "Evolve" + body += "Evolve" } body += ""; diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index faa53959c7f5a..19963fcac5f35 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -130,7 +130,7 @@ if(!GLOB.cult.can_become_antag(target.mind, 1)) to_chat(target, SPAN_DANGER("Are you going insane?")) else - to_chat(target, SPAN_OCCULT("Do you want to join the cult of Nar'Sie? You can choose to ignore offer... Join the cult.")) + to_chat(target, SPAN_OCCULT("Do you want to join the cult of Nar'Sie? You can choose to ignore offer... Join the cult.")) spamcheck = 1 spawn(40) @@ -226,8 +226,8 @@ for(var/obj/rune/teleport/T in GLOB.cult.teleport_runes) if(T == src) continue - t += "[T.destination]" - to_chat(user, "Teleport runes: [english_list(t, nothing_text = "no other runes exist")]... or return from this rune.") + t += "[T.destination]" + to_chat(user, "Teleport runes: [english_list(t, nothing_text = "no other runes exist")]... or return from this rune.") /obj/rune/teleport/proc/leaveRune(mob/living/user) if(user.loc != src) diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 56b5f9e47a57f..3a5462d2e8bd3 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -232,7 +232,7 @@ if(show_invalid_jobs) return "[title][current_positions](Active: [get_active_count()])" else - return "[title][current_positions](Active: [get_active_count()])" + return "[title][current_positions](Active: [get_active_count()])" return "" // Only players with the job assigned and AFK for less than 10 minutes count as active diff --git a/code/game/machinery/_machines_base/machinery.dm b/code/game/machinery/_machines_base/machinery.dm index 02bb47b51d87e..3a9d4d815ae0c 100644 --- a/code/game/machinery/_machines_base/machinery.dm +++ b/code/game/machinery/_machines_base/machinery.dm @@ -439,7 +439,7 @@ else if((!is_powered()) && !interact_offline) to_chat(user, SPAN_WARNING("It is not receiving power.")) if(construct_state && construct_state.mechanics_info()) - to_chat(user, SPAN_NOTICE("It can be manipulated using tools.")) + to_chat(user, SPAN_NOTICE("It can be manipulated using tools.")) var/list/missing = missing_parts() if(missing) var/list/parts = list() diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 20256587ec62b..f6629fbe47fe4 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -1101,29 +1101,29 @@ FIRE ALARM A = A.loc if (A.fire) - d1 = text("Reset - Lockdown", src) + d1 = text("Reset - Lockdown", src) else - d1 = text("Alarm - Lockdown", src) + d1 = text("Alarm - Lockdown", src) if (src.timing) - d2 = text("Stop Time Lock", src) + d2 = text("Stop Time Lock", src) else - d2 = text("Initiate Time Lock", src) + d2 = text("Initiate Time Lock", src) var/second = round(src.time) % 60 var/minute = (round(src.time) - second) / 60 - popup.set_content("[d1]\n
The current alert level is [security_state.current_security_level.name]

\nTimer System: [d2]
\nTime Left: [(minute ? "[minute]:" : null)][second] - - + +") + popup.set_content("[d1]\n
The current alert level is [security_state.current_security_level.name]

\nTimer System: [d2]
\nTime Left: [(minute ? "[minute]:" : null)][second] - - + +") else A = A.loc if (A.fire) - d1 = text("[]", src, stars("Reset - Lockdown")) + d1 = text("[]", src, stars("Reset - Lockdown")) else - d1 = text("[]", src, stars("Alarm - Lockdown")) + d1 = text("[]", src, stars("Alarm - Lockdown")) if (src.timing) - d2 = text("[]", src, stars("Stop Time Lock")) + d2 = text("[]", src, stars("Stop Time Lock")) else - d2 = text("[]", src, stars("Initiate Time Lock")) + d2 = text("[]", src, stars("Initiate Time Lock")) var/second = round(src.time) % 60 var/minute = (round(src.time) - second) / 60 - popup.set_content("[d1]\n
The current security level is [security_state.current_security_level.name]

\nTimer System: [d2]
\nTime Left: [(minute ? text("[]:", minute) : null)][second] - - + +\n") + popup.set_content("[d1]\n
The current security level is [security_state.current_security_level.name]

\nTimer System: [d2]
\nTime Left: [(minute ? text("[]:", minute) : null)][second] - - + +\n") popup.open() return @@ -1233,28 +1233,28 @@ Just a object used in constructing fire alarms if (istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon/ai)) if (A.party) - d1 = text("No Party :(", src) + d1 = text("No Party :(", src) else - d1 = text("PARTY!!!", src) + d1 = text("PARTY!!!", src) if (timing) - d2 = text("Stop Time Lock", src) + d2 = text("Stop Time Lock", src) else - d2 = text("Initiate Time Lock", src) + d2 = text("Initiate Time Lock", src) var/second = time % 60 var/minute = (time - second) / 60 - popup.set_content(text("Party Button []\n
\nTimer System: []
\nTime Left: [][] - - + +\n
", d1, d2, (minute ? text("[]:", minute) : null), second, src, src, src, src)) + popup.set_content(text("Party Button []\n
\nTimer System: []
\nTime Left: [][] - - + +\n
", d1, d2, (minute ? text("[]:", minute) : null), second, src, src, src, src)) else if (A.fire) - d1 = text("[]", src, stars("No Party :(")) + d1 = text("[]", src, stars("No Party :(")) else - d1 = text("[]", src, stars("PARTY!!!")) + d1 = text("[]", src, stars("PARTY!!!")) if (timing) - d2 = text("[]", src, stars("Stop Time Lock")) + d2 = text("[]", src, stars("Stop Time Lock")) else - d2 = text("[]", src, stars("Initiate Time Lock")) + d2 = text("[]", src, stars("Initiate Time Lock")) var/second = time % 60 var/minute = (time - second) / 60 - popup.set_content(text("[] []\n
\nTimer System: []
\nTime Left: [][] - - + +\n
", stars("Party Button"), d1, d2, (minute ? text("[]:", minute) : null), second, src, src, src, src)) + popup.set_content(text("[] []\n
\nTimer System: []
\nTime Left: [][] - - + +\n
", stars("Party Button"), d1, d2, (minute ? text("[]:", minute) : null), second, src, src, src, src)) popup.open() return diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 919028c4bdf4c..9a325182b32e4 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -211,7 +211,7 @@ for(var/mob/living/silicon/ai/O in GLOB.alive_mobs) if(!O.client) continue if(U.name == "Unknown") to_chat(O, "[U] holds \a [itemname] up to one of your cameras ...") - else to_chat(O, "[U] holds \a [itemname] up to one of your cameras ...") + else to_chat(O, "[U] holds \a [itemname] up to one of your cameras ...") show_browser(O, text("[][]", itemname, info), text("window=[]", itemname)) return TRUE diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm index b18ad761220be..8baca5ccfb7cd 100644 --- a/code/game/machinery/computer/Operating.dm +++ b/code/game/machinery/computer/Operating.dm @@ -32,7 +32,7 @@ user.set_machine(src) var/dat = "Operating Computer\n" - dat += "Close

" //| Update" + dat += "Close

" //| Update" if(src.table && (src.table.check_victim())) src.victim = src.table.victim dat += {" diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 502f666924376..27e03128515a8 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -110,7 +110,7 @@ /obj/machinery/computer/arcade/battle/interact(mob/user) user.set_machine(src) - var/dat = "Close" + var/dat = "Close" dat += "

[src.enemy_name]

" dat += "

[src.temp]

" @@ -118,11 +118,11 @@ dat += "
" if (src.gameover) - dat += "New Game" + dat += "New Game" else - dat += "Attack | " - dat += "Heal | " - dat += "Recharge Power" + dat += "Attack | " + dat += "Heal | " + dat += "Recharge Power" dat += "
" diff --git a/code/game/machinery/computer/arcade_orion.dm b/code/game/machinery/computer/arcade_orion.dm index 8a3806d957eed..a7cec982bf287 100644 --- a/code/game/machinery/computer/arcade_orion.dm +++ b/code/game/machinery/computer/arcade_orion.dm @@ -93,28 +93,28 @@ switch(view) if(ORION_VIEW_MAIN) if(event == ORION_TRAIL_START) //new game? New game. - dat = "

Orion Trail[emagged ? ": Realism Edition" : ""]


Learn how our ancestors got to Orion, and have fun in the process!

Start New Game

" + dat = "

Orion Trail[emagged ? ": Realism Edition" : ""]


Learn how our ancestors got to Orion, and have fun in the process!

Start New Game

" show_browser(user, dat, "window=arcade") return else event_title = event - event_actions = "Continue your journey
" + event_actions = "Continue your journey
" switch(event) if(ORION_TRAIL_GAMEOVER) event_info = "" - event_actions = "Start New Game
" + event_actions = "Start New Game
" if(ORION_TRAIL_SPACEPORT) event_title += ": [stops[port]]" event_desc = "[stopblurbs[port]]" event_info = "" if(port == 9) - event_actions = "Return to the title screen!
" + event_actions = "Return to the title screen!
" else - event_actions = "Shove off
" - event_actions += "Raid Spaceport" + event_actions = "Shove off
" + event_actions += "Raid Spaceport" if(ORION_TRAIL_SPACEPORT_RAIDED) event_title += ": [stops[port]]" - event_actions = "Shove off" + event_actions = "Shove off" if(ORION_TRAIL_RAIDERS) event_desc = "You arm yourselves as you prepare to fight off the vox menace!" if(ORION_TRAIL_DERELICT) @@ -123,30 +123,30 @@ event_desc = "A disease has spread amoungst your crew!" if(ORION_TRAIL_FLUX) event_desc = "You've entered a turbulent region. Slowing down would be better for your ship but would cost more fuel." - event_actions = "Continue as normal
" - event_actions += "Take it slow
" + event_actions = "Continue as normal
" + event_actions += "Take it slow
" if(ORION_TRAIL_MALFUNCTION) event_info = "" event_desc = "The ship's computers are malfunctioning! You can choose to fix it with a part or risk something going awry." - event_actions = "Continue as normal
" + event_actions = "Continue as normal
" if(supplies["3"] != 0) - event_actions += "Fix using a part.
" + event_actions += "Fix using a part.
" if(ORION_TRAIL_COLLISION) event_info = "" event_desc = "Something has hit your ship and breached the hull! You can choose to fix it with a part or risk something going awry." - event_actions = "Continue as normal
" + event_actions = "Continue as normal
" if(supplies["2"] != 0) - event_actions += "Fix using a part.
" + event_actions += "Fix using a part.
" if(ORION_TRAIL_BREAKDOWN) event_info = "" event_desc = "The ship's engines broke down! You can choose to fix it with a part or risk something going awry." - event_actions = "Continue as normal
" + event_actions = "Continue as normal
" if(supplies["1"] != 0) - event_actions += "Fix using a part.
" + event_actions += "Fix using a part.
" if(ORION_TRAIL_STUCK) event_desc = "You've ran out of fuel. Your only hope to survive is to get refueled by a passing ship, if there are any." if(supplies["5"] == 0) - event_actions = "Wait" + event_actions = "Wait" if(ORION_TRAIL_CARP) event_desc = "You've chanced upon a large carp migration! Known both for their delicious meat as well as their bite, you and your crew arm yourselves for a small hunting trip." if(ORION_TRAIL_MUTINY) @@ -160,18 +160,18 @@ dat += "
You have [supplies["6"]] [GLOB.using_map.local_currency_name].
" for(var/i=1; i<6; i++) var/amm = (i>3?10:1) - dat += "[supplies["[i]"]] [supply_name["[i]"]][event==ORION_TRAIL_SPACEPORT ? ", buy [amm] for [supply_cost["[i]"]]T" : ""]
" + dat += "[supplies["[i]"]] [supply_name["[i]"]][event==ORION_TRAIL_SPACEPORT ? ", buy [amm] for [supply_cost["[i]"]]T" : ""]
" if(supplies["[i]"] >= amm && event == ORION_TRAIL_SPACEPORT) - dat += "sell [amm] for [supply_cost["[i]"]]T
" + dat += "sell [amm] for [supply_cost["[i]"]]T
" if(ORION_VIEW_CREW) dat = "

Crew

View the status of your crew.
" for(var/i=1;i<=length(settlers);i++) - dat += "[settlers[i]] Kill
" + dat += "[settlers[i]] Kill
" dat += "

View:
" - dat += "[view==ORION_VIEW_MAIN ? "" : ""]Main[view==ORION_VIEW_MAIN ? "" : ""]
" - dat += "[view==ORION_VIEW_SUPPLIES ? "" : ""]Supplies[view==ORION_VIEW_SUPPLIES ? "" : ""]
" - dat += "[view==ORION_VIEW_CREW ? "" : ""]Crew[view==ORION_VIEW_CREW ? "" : ""]

" + dat += "[view==ORION_VIEW_MAIN ? "" : ""]Main[view==ORION_VIEW_MAIN ? "" : ""]
" + dat += "[view==ORION_VIEW_SUPPLIES ? "" : ""]Supplies[view==ORION_VIEW_SUPPLIES ? "" : ""]
" + dat += "[view==ORION_VIEW_CREW ? "" : ""]Crew[view==ORION_VIEW_CREW ? "" : ""]

" show_browser(user, dat, "window=arcade") /obj/machinery/computer/arcade/orion_trail/OnTopic(user, href_list) diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index 04f2f733c4eb9..b46c68b8439df 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -83,10 +83,10 @@ dat += "

[message]

" if(auth) - dat += "

[SPAN_COLOR("green", "\[Authenticated\]")] /" - dat += " Server Power: [src.linkedServer && src.linkedServer.active ? SPAN_COLOR("green", "\[On\]") : SPAN_COLOR("red", "\[Off\]")]

" + dat += "

[SPAN_COLOR("green", "\[Authenticated\]")] /" + dat += " Server Power: [src.linkedServer && src.linkedServer.active ? SPAN_COLOR("green", "\[On\]") : SPAN_COLOR("red", "\[Off\]")]

" else - dat += "

[SPAN_COLOR("red", "\[Unauthenticated\]")] /" + dat += "

[SPAN_COLOR("red", "\[Unauthenticated\]")] /" dat += " Server Power: [src.linkedServer && src.linkedServer.active ? SPAN_COLOR("green", "\[On\]") : SPAN_COLOR("red", "\[Off\]")]

" if(hacking || emag) @@ -100,19 +100,19 @@ if(0) // = TAB var/i = 0 - dat += "
[++i]. Link To A Server
" + dat += "
[++i]. Link To A Server
" if(auth) if(!linkedServer || (linkedServer.inoperable())) dat += "
ERROR: Server not found!
" else - dat += "
[++i]. View Request Console Logs
" - dat += "
[++i]. Clear Request Console Logs
" - dat += "
[++i]. Set Custom Key
" + dat += "
[++i]. View Request Console Logs
" + dat += "
[++i]. Clear Request Console Logs
" + dat += "
[++i]. Set Custom Key
" else dat += "

[SPAN_NOTICE("Please authenticate with the server in order to show additional options.")]" if((istype(user, /mob/living/silicon/ai) || istype(user, /mob/living/silicon/robot)) && (user.mind.special_role && user.mind.original == user)) //Malf/Traitor AIs can bruteforce into the system to gain the Key. - dat += "
[SPAN_COLOR("red", "*&@#. Bruteforce Key")]
" + dat += "
[SPAN_COLOR("red", "*&@#. Bruteforce Key")]
" //Hacking screen. if(2) @@ -170,7 +170,7 @@ var/id_auth = "Unauthenticated" - 15% var/priority = "Normal" - 10% */ - dat += "
Back - Refresh

" + dat += "
Back - Refresh

" dat += {""} for(var/datum/data_rc_msg/rc in src.linkedServer.rc_msgs) @@ -179,7 +179,7 @@ break // Del - Sender - Recepient - Message // X - Al Green - Your Mom - WHAT UP!? - dat += {" + dat += {""} dat += "
XSending Dep.Receiving Dep. MessageStampID Auth.Priority.
X
[rc.send_dpt]
X
[rc.send_dpt] [rc.rec_dpt][rc.message][rc.stamp][rc.id_auth][rc.priority]
" diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index 2e27e36e80d70..444bf275dd962 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -27,7 +27,7 @@ var/dat dat += "Prisoner Implant Manager System
" if(screen == 0) - dat += "
Unlock Console" + dat += "
Unlock Console" else if(screen == 1) dat += "
Chemical Implants
" var/turf/Tr = null @@ -36,9 +36,9 @@ if((Tr) && !AreConnectedZLevels(Tr.z, src.z)) continue // Out of range if(!C.implanted) continue dat += "[C.imp_in.name] | Remaining Units: [C.reagents.total_volume] | Inject: " - dat += "([SPAN_COLOR("red", "(1)")])" - dat += "([SPAN_COLOR("red", "(5))")]" - dat += "([SPAN_COLOR("red", "(10)")])
" + dat += "([SPAN_COLOR("red", "(1)")])" + dat += "([SPAN_COLOR("red", "(5))")]" + dat += "([SPAN_COLOR("red", "(10)")])
" dat += "********************************
" dat += "
Tracking Implants
" for(var/obj/item/implant/tracking/T in world) @@ -53,9 +53,9 @@ if(T.malfunction) loc_display = pick(teleportlocs) dat += "ID: [T.id] | Location: [loc_display]
" - dat += "([SPAN_COLOR("red", "Message Holder")]) |
" + dat += "([SPAN_COLOR("red", "Message Holder")]) |
" dat += "********************************
" - dat += "
Lock Console" + dat += "
Lock Console" show_browser(user, dat, "window=computer;size=400x500") onclose(user, "computer") diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 09e7793a7176a..191164c9e969a 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -51,11 +51,11 @@ dat += "

[storage_name]
" dat += "Welcome, [user.real_name].


" - dat += "View storage log.
" + dat += "View storage log.
" if(allow_items) - dat += "View objects.
" - dat += "Recover object.
" - dat += "Recover all objects.
" + dat += "View objects.
" + dat += "Recover object.
" + dat += "Recover all objects.
" show_browser(user, dat, "window=cryopod_console") onclose(user, "cryopod_console") diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 458ebb6aafca8..049b486735fa3 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -115,7 +115,7 @@ var/global/const/HOLOPAD_MODE = RANGE_BASED if(!AI.client) continue if (holopadType != HOLOPAD_LONG_RANGE && !AreConnectedZLevels(AI.z, src.z)) continue - to_chat(AI, SPAN_INFO("Your presence is requested at \the [area].")) + to_chat(AI, SPAN_INFO("Your presence is requested at \the [area].")) else to_chat(user, SPAN_NOTICE("A request for AI presence was already sent recently.")) if("Holocomms") @@ -281,7 +281,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ //This communication is imperfect because the holopad "filters" voices and is only designed to connect to the master only. var/short_links = master.get_preference_value(/datum/client_preference/ghost_follow_link_length) == GLOB.PREF_SHORT var/follow = short_links ? "\[F]" : "\[Follow]" - var/prefix = "[follow]" + var/prefix = "[follow]" master.show_message(get_hear_message(name_used, ai_text, verb, speaking, prefix), 2) var/name_used = M.GetVoice() var/message diff --git a/code/game/machinery/kitchen/icecream.dm b/code/game/machinery/kitchen/icecream.dm index 2a6881c8da162..d6922528d0782 100644 --- a/code/game/machinery/kitchen/icecream.dm +++ b/code/game/machinery/kitchen/icecream.dm @@ -81,21 +81,21 @@ var/dat dat += "ICECREAM
" dat += "Dispensing: [flavour_name] icecream

" - dat += "Vanilla icecream: Select Make x5 [product_types[ICECREAM_VANILLA]] scoops left. (Ingredients: milk, ice)
" - dat += "Strawberry icecream: Select Make x5 [product_types[ICECREAM_STRAWBERRY]] dollops left. (Ingredients: milk, ice, berry juice)
" - dat += "Chocolate icecream: Select Make x5 [product_types[ICECREAM_CHOCOLATE]] dollops left. (Ingredients: milk, ice, coco powder)
" - dat += "Blue icecream: Select Make x5 [product_types[ICECREAM_BLUE]] dollops left. (Ingredients: milk, ice, singulo)
" - dat += "Cherry icecream: Select Make x5 [product_types[ICECREAM_CHERRY]] dollops left. (Ingredients: milk, ice, cherry jelly)
" - dat += "Banana icecream: Select Make x5 [product_types[ICECREAM_BANANA]] dollops left. (Ingredients: milk, ice, banana)
" + dat += "Vanilla icecream: Select Make x5 [product_types[ICECREAM_VANILLA]] scoops left. (Ingredients: milk, ice)
" + dat += "Strawberry icecream: Select Make x5 [product_types[ICECREAM_STRAWBERRY]] dollops left. (Ingredients: milk, ice, berry juice)
" + dat += "Chocolate icecream: Select Make x5 [product_types[ICECREAM_CHOCOLATE]] dollops left. (Ingredients: milk, ice, coco powder)
" + dat += "Blue icecream: Select Make x5 [product_types[ICECREAM_BLUE]] dollops left. (Ingredients: milk, ice, singulo)
" + dat += "Cherry icecream: Select Make x5 [product_types[ICECREAM_CHERRY]] dollops left. (Ingredients: milk, ice, cherry jelly)
" + dat += "Banana icecream: Select Make x5 [product_types[ICECREAM_BANANA]] dollops left. (Ingredients: milk, ice, banana)
" 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/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 6e30bedb616ac..ac99fd3e97f5b 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -95,14 +95,14 @@ Transponder Codes: