From 2f385b69687c48c216be8ab7e271f19d4e098249 Mon Sep 17 00:00:00 2001 From: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com> Date: Tue, 3 Sep 2024 10:17:37 +0100 Subject: [PATCH] Implements text to speech --- ColonialMarinesALPHA.dme | 2043 +++++++++++++++++ code/__DEFINES/callback.dm | 19 + code/__DEFINES/sounds.dm | 2 +- code/__DEFINES/subsystems.dm | 2 + code/__DEFINES/tts.dm | 3 + code/controllers/subsystem/tts.dm | 84 +- code/datums/soundOutput.dm | 5 + code/game/sound.dm | 11 +- code/modules/client/client_defines.dm | 2 +- code/modules/client/preferences.dm | 64 +- code/modules/client/preferences_savefile.dm | 23 + code/modules/gear_presets/synths.dm | 3 + .../mob/living/carbon/xenomorph/Xenomorph.dm | 13 +- .../living/carbon/xenomorph/castes/Queen.dm | 1 + .../mob/living/carbon/xenomorph/say.dm | 16 +- code/modules/mob/living/living_defines.dm | 1 + code/modules/mob/living/say.dm | 6 +- code/modules/mob/mob_defines.dm | 7 +- colonialmarines.dme | 2 + config/example/game_options.txt | 14 + interface/skin.dmf | 5 + 21 files changed, 2262 insertions(+), 64 deletions(-) create mode 100644 ColonialMarinesALPHA.dme diff --git a/ColonialMarinesALPHA.dme b/ColonialMarinesALPHA.dme new file mode 100644 index 000000000000..625b05f302d0 --- /dev/null +++ b/ColonialMarinesALPHA.dme @@ -0,0 +1,2043 @@ +// DM Environment file for baystation12.dme. +// All manual changes should be made outside the BEGIN_ and END_ blocks. + // New source code should be placed in .dm files: choose File/New --> Code File. +// BEGIN_INTERNALS +// END_INTERNALS +// BEGIN_FILE_DIR +#define FILE_DIR . +// END_FILE_DIR +// BEGIN_PREFERENCES +#define DEBUG +// END_PREFERENCES +// BEGIN_INCLUDE +#include "code\_compile_options.dm" +#include "code\_macros.dm" +#include "code\global.dm" +#include "code\names.dm" +#include "code\span_macros.dm" +#include "code\stylesheet.dm" +#include "code\__DEFINES\__game.dm" +#include "code\__DEFINES\__rust_g.dm" +#include "code\__DEFINES\__spacemandmm.dm" +#include "code\__DEFINES\_globals.dm" +#include "code\__DEFINES\_macros.dm" +#include "code\__DEFINES\_math.dm" +#include "code\__DEFINES\_protect.dm" +#include "code\__DEFINES\_tick.dm" +#include "code\__DEFINES\access.dm" +#include "code\__DEFINES\admin.dm" +#include "code\__DEFINES\atmospherics.dm" +#include "code\__DEFINES\blood.dm" +#include "code\__DEFINES\bsql.config.dm" +#include "code\__DEFINES\bsql.dm" +#include "code\__DEFINES\bullet_traits.dm" +#include "code\__DEFINES\callback.dm" +#include "code\__DEFINES\camera.dm" +#include "code\__DEFINES\chat.dm" +#include "code\__DEFINES\chemistry.dm" +#include "code\__DEFINES\clans.dm" +#include "code\__DEFINES\combat.dm" +#include "code\__DEFINES\configuration.dm" +#include "code\__DEFINES\conflict.dm" +#include "code\__DEFINES\cooldowns.dm" +#include "code\__DEFINES\db_defs.dm" +#include "code\__DEFINES\defenses.dm" +#include "code\__DEFINES\dropships.dm" +#include "code\__DEFINES\equipment.dm" +#include "code\__DEFINES\fire.dm" +#include "code\__DEFINES\flags.dm" +#include "code\__DEFINES\guns.dm" +#include "code\__DEFINES\html.dm" +#include "code\__DEFINES\hud.dm" +#include "code\__DEFINES\human.dm" +#include "code\__DEFINES\icon_source_map.dm" +#include "code\__DEFINES\job.dm" +#include "code\__DEFINES\keybinding.dm" +#include "code\__DEFINES\language.dm" +#include "code\__DEFINES\layers.dm" +#include "code\__DEFINES\lighting.dm" +#include "code\__DEFINES\maps.dm" +#include "code\__DEFINES\marine.dm" +#include "code\__DEFINES\math_physics.dm" +#include "code\__DEFINES\MC.dm" +#include "code\__DEFINES\minimap.dm" +#include "code\__DEFINES\misc.dm" +#include "code\__DEFINES\mob_hud.dm" +#include "code\__DEFINES\mobs.dm" +#include "code\__DEFINES\mode.dm" +#include "code\__DEFINES\movement.dm" +#include "code\__DEFINES\nightmare.dm" +#include "code\__DEFINES\objects.dm" +#include "code\__DEFINES\pain.dm" +#include "code\__DEFINES\pred.dm" +#include "code\__DEFINES\procpath.dm" +#include "code\__DEFINES\qdel.dm" +#include "code\__DEFINES\radio.dm" +#include "code\__DEFINES\regex.dm" +#include "code\__DEFINES\shuttles.dm" +#include "code\__DEFINES\skills.dm" +#include "code\__DEFINES\sounds.dm" +#include "code\__DEFINES\stamina.dm" +#include "code\__DEFINES\STUI.dm" +#include "code\__DEFINES\surgery.dm" +#include "code\__DEFINES\techtree.dm" +#include "code\__DEFINES\tests.dm" +#include "code\__DEFINES\tgui.dm" +#include "code\__DEFINES\traits.dm" +#include "code\__DEFINES\tts.dm" +#include "code\__DEFINES\turf_flags.dm" +#include "code\__DEFINES\urls.dm" +#include "code\__DEFINES\vehicle.dm" +#include "code\__DEFINES\vendors.dm" +#include "code\__DEFINES\vv.dm" +#include "code\__DEFINES\weapon_stats.dm" +#include "code\__DEFINES\weather.dm" +#include "code\__DEFINES\xeno.dm" +#include "code\__DEFINES\dcs\flags.dm" +#include "code\__DEFINES\dcs\helpers.dm" +#include "code\__DEFINES\dcs\signals.dm" +#include "code\__DEFINES\typecheck\assemblers.dm" +#include "code\__DEFINES\typecheck\datums.dm" +#include "code\__DEFINES\typecheck\generic_types.dm" +#include "code\__DEFINES\typecheck\humanoids.dm" +#include "code\__DEFINES\typecheck\items.dm" +#include "code\__DEFINES\typecheck\mobs_generic.dm" +#include "code\__DEFINES\typecheck\xenos.dm" +#include "code\__HELPERS\#maths.dm" +#include "code\__HELPERS\_lists.dm" +#include "code\__HELPERS\_time.dm" +#include "code\__HELPERS\cmp.dm" +#include "code\__HELPERS\files.dm" +#include "code\__HELPERS\filters.dm" +#include "code\__HELPERS\game.dm" +#include "code\__HELPERS\heap.dm" +#include "code\__HELPERS\icons.dm" +#include "code\__HELPERS\job.dm" +#include "code\__HELPERS\level_traits.dm" +#include "code\__HELPERS\lists.dm" +#include "code\__HELPERS\logging.dm" +#include "code\__HELPERS\matrices.dm" +#include "code\__HELPERS\mobs.dm" +#include "code\__HELPERS\qdel.dm" +#include "code\__HELPERS\sanitize_values.dm" +#include "code\__HELPERS\shell.dm" +#include "code\__HELPERS\text.dm" +#include "code\__HELPERS\text_blurbs.dm" +#include "code\__HELPERS\tts.dm" +#include "code\__HELPERS\type2type.dm" +#include "code\__HELPERS\unsorted.dm" +#include "code\__HELPERS\verb_helpers.dm" +#include "code\__HELPERS\BSQL\includes.dm" +#include "code\__HELPERS\sorts\_Main.dm" +#include "code\__HELPERS\sorts\TimSort.dm" +#include "code\_globalvars\combat_defines.dm" +#include "code\_globalvars\configuration.dm" +#include "code\_globalvars\global_lists.dm" +#include "code\_globalvars\misc.dm" +#include "code\_globalvars\regexes.dm" +#include "code\_globalvars\tgui.dm" +#include "code\_globalvars\lists\client.dm" +#include "code\_globalvars\lists\keybindings.dm" +#include "code\_globalvars\lists\mapping_globals.dm" +#include "code\_globalvars\lists\mobs.dm" +#include "code\_globalvars\lists\object_lists.dm" +#include "code\_onclick\adjacent.dm" +#include "code\_onclick\ai.dm" +#include "code\_onclick\click.dm" +#include "code\_onclick\click_hold.dm" +#include "code\_onclick\cyborg.dm" +#include "code\_onclick\drag_drop.dm" +#include "code\_onclick\human.dm" +#include "code\_onclick\item_attack.dm" +#include "code\_onclick\observer.dm" +#include "code\_onclick\other_mobs.dm" +#include "code\_onclick\ventcrawl.dm" +#include "code\_onclick\xeno.dm" +#include "code\_onclick\hud\_defines.dm" +#include "code\_onclick\hud\alien.dm" +#include "code\_onclick\hud\fullscreen.dm" +#include "code\_onclick\hud\hud.dm" +#include "code\_onclick\hud\human.dm" +#include "code\_onclick\hud\map_popups.dm" +#include "code\_onclick\hud\other_mobs.dm" +#include "code\_onclick\hud\radial.dm" +#include "code\_onclick\hud\radial_persistent.dm" +#include "code\_onclick\hud\robot.dm" +#include "code\_onclick\hud\screen_objects.dm" +#include "code\_onclick\hud\yautja.dm" +#include "code\_onclick\hud\rendering\plane_master.dm" +#include "code\_onclick\hud\rendering\plane_master_controller.dm" +#include "code\_onclick\hud\rendering\render_plate.dm" +#include "code\controllers\_DynamicAreaLighting_TG.dm" +#include "code\controllers\shuttle_controller.dm" +#include "code\controllers\configuration\config_entry.dm" +#include "code\controllers\configuration\configuration.dm" +#include "code\controllers\configuration\entries\combat_config.dm" +#include "code\controllers\configuration\entries\game_options.dm" +#include "code\controllers\configuration\entries\general.dm" +#include "code\controllers\configuration\entries\icon_source_config.dm" +#include "code\controllers\configuration\entries\nightmare.dm" +#include "code\controllers\configuration\entries\resources.dm" +#include "code\controllers\mc\admin.dm" +#include "code\controllers\mc\controller.dm" +#include "code\controllers\mc\failsafe.dm" +#include "code\controllers\mc\globals.dm" +#include "code\controllers\mc\master.dm" +#include "code\controllers\mc\subsystem.dm" +#include "code\controllers\subsystem\acid_pillar.dm" +#include "code\controllers\subsystem\admin.dm" +#include "code\controllers\subsystem\assets.dm" +#include "code\controllers\subsystem\atoms.dm" +#include "code\controllers\subsystem\cellauto.dm" +#include "code\controllers\subsystem\chat.dm" +#include "code\controllers\subsystem\communications.dm" +#include "code\controllers\subsystem\dcs.dm" +#include "code\controllers\subsystem\decorator.dm" +#include "code\controllers\subsystem\disease.dm" +#include "code\controllers\subsystem\fast_machinery.dm" +#include "code\controllers\subsystem\fz_transitions.dm" +#include "code\controllers\subsystem\garbage.dm" +#include "code\controllers\subsystem\htmlui.dm" +#include "code\controllers\subsystem\human.dm" +#include "code\controllers\subsystem\inactivity.dm" +#include "code\controllers\subsystem\input.dm" +#include "code\controllers\subsystem\item_cleanup.dm" +#include "code\controllers\subsystem\lighting.dm" +#include "code\controllers\subsystem\machinery.dm" +#include "code\controllers\subsystem\mapping.dm" +#include "code\controllers\subsystem\mapview.dm" +#include "code\controllers\subsystem\midi.dm" +#include "code\controllers\subsystem\mob.dm" +#include "code\controllers\subsystem\nanoui.dm" +#include "code\controllers\subsystem\pager_status.dm" +#include "code\controllers\subsystem\perf_logging.dm" +#include "code\controllers\subsystem\playtime.dm" +#include "code\controllers\subsystem\police_clues.dm" +#include "code\controllers\subsystem\power.dm" +#include "code\controllers\subsystem\predships.dm" +#include "code\controllers\subsystem\quadtrees.dm" +#include "code\controllers\subsystem\round_recording.dm" +#include "code\controllers\subsystem\shuttle.dm" +#include "code\controllers\subsystem\shuttles.dm" +#include "code\controllers\subsystem\smoke_system.dm" +#include "code\controllers\subsystem\sound.dm" +#include "code\controllers\subsystem\soundscape.dm" +#include "code\controllers\subsystem\stamina.dm" +#include "code\controllers\subsystem\statpanel.dm" +#include "code\controllers\subsystem\stats_collector.dm" +#include "code\controllers\subsystem\teleporter.dm" +#include "code\controllers\subsystem\tgui.dm" +#include "code\controllers\subsystem\ticker.dm" +#include "code\controllers\subsystem\timer.dm" +#include "code\controllers\subsystem\tracking.dm" +#include "code\controllers\subsystem\tts.dm" +#include "code\controllers\subsystem\vote.dm" +#include "code\controllers\subsystem\weather.dm" +#include "code\controllers\subsystem\x_evolution.dm" +#include "code\controllers\subsystem\xeno.dm" +#include "code\controllers\subsystem\xenocon.dm" +#include "code\controllers\subsystem\init\landmarks.dm" +#include "code\controllers\subsystem\init\law.dm" +#include "code\controllers\subsystem\init\lobby_art.dm" +#include "code\controllers\subsystem\processing\effects.dm" +#include "code\controllers\subsystem\processing\fastobj.dm" +#include "code\controllers\subsystem\processing\hive_status.dm" +#include "code\controllers\subsystem\processing\objects.dm" +#include "code\controllers\subsystem\processing\processing.dm" +#include "code\controllers\subsystem\processing\shield_pillar.dm" +#include "code\datums\_atmos_setup.dm" +#include "code\datums\action.dm" +#include "code\datums\ASRS.dm" +#include "code\datums\browser.dm" +#include "code\datums\callback.dm" +#include "code\datums\changelog.dm" +#include "code\datums\combat_personalized.dm" +#include "code\datums\computerfiles.dm" +#include "code\datums\custom_hud.dm" +#include "code\datums\datacore.dm" +#include "code\datums\datum.dm" +#include "code\datums\datumvars.dm" +#include "code\datums\disease.dm" +#include "code\datums\event_info_text.dm" +#include "code\datums\fluff_emails.dm" +#include "code\datums\global_variables.dm" +#include "code\datums\http.dm" +#include "code\datums\map_config.dm" +#include "code\datums\matrix_editor.dm" +#include "code\datums\medal_awards.dm" +#include "code\datums\mind.dm" +#include "code\datums\mixed.dm" +#include "code\datums\mob_hud.dm" +#include "code\datums\modules.dm" +#include "code\datums\mutable_appearance.dm" +#include "code\datums\quadtree.dm" +#include "code\datums\recipe.dm" +#include "code\datums\shuttles.dm" +#include "code\datums\skills.dm" +#include "code\datums\soundOutput.dm" +#include "code\datums\weakrefs.dm" +#include "code\datums\_ndatabase\include.dm" +#include "code\datums\agents\tools.dm" +#include "code\datums\agents\tools\access_tuner.dm" +#include "code\datums\agents\tools\badass_kit.dm" +#include "code\datums\agents\tools\chloroform.dm" +#include "code\datums\agents\tools\conceal_gloves.dm" +#include "code\datums\agents\tools\decoy.dm" +#include "code\datums\agents\tools\signal_pack.dm" +#include "code\datums\agents\tools\stimulants.dm" +#include "code\datums\agents\tools\stunbaton.dm" +#include "code\datums\agents\tools\toolbox.dm" +#include "code\datums\agents\tools\tracker.dm" +#include "code\datums\agents\tools\tranq_gun.dm" +#include "code\datums\autocells\auto_cell.dm" +#include "code\datums\autocells\explosion.dm" +#include "code\datums\autocells\vomit_wave.dm" +#include "code\datums\buildmode\buildmode_datum.dm" +#include "code\datums\buildmode\buildmode_objects.dm" +#include "code\datums\components\_component.dm" +#include "code\datums\components\armor_link.dm" +#include "code\datums\components\bonus_damage_stack.dm" +#include "code\datums\components\cluster_stack.dm" +#include "code\datums\components\footstep.dm" +#include "code\datums\components\toxin_buildup.dm" +#include "code\datums\components\weed_damage_reduction.dm" +#include "code\datums\components\xeno\shield_slash.dm" +#include "code\datums\construction\construction_template.dm" +#include "code\datums\construction\xenomorph\construction_template_xenomorph.dm" +#include "code\datums\decorators\decorator.dm" +#include "code\datums\diseases\addiction.dm" +#include "code\datums\diseases\beesease.dm" +#include "code\datums\diseases\black_goo.dm" +#include "code\datums\diseases\brainrot.dm" +#include "code\datums\diseases\cold.dm" +#include "code\datums\diseases\cold9.dm" +#include "code\datums\diseases\fake_gbs.dm" +#include "code\datums\diseases\flu.dm" +#include "code\datums\diseases\fluspanish.dm" +#include "code\datums\diseases\gbs.dm" +#include "code\datums\diseases\jungle_fever.dm" +#include "code\datums\diseases\magnitis.dm" +#include "code\datums\diseases\mob_procs.dm" +#include "code\datums\diseases\pierrot_throat.dm" +#include "code\datums\diseases\plasmatoid.dm" +#include "code\datums\diseases\rhumba_beat.dm" +#include "code\datums\diseases\robotic_transformation.dm" +#include "code\datums\diseases\xeno_transformation.dm" +#include "code\datums\diseases\advance\advance.dm" +#include "code\datums\diseases\advance\presets.dm" +#include "code\datums\diseases\advance\symptoms\confusion.dm" +#include "code\datums\diseases\advance\symptoms\cough.dm" +#include "code\datums\diseases\advance\symptoms\damage_converter.dm" +#include "code\datums\diseases\advance\symptoms\dizzy.dm" +#include "code\datums\diseases\advance\symptoms\fever.dm" +#include "code\datums\diseases\advance\symptoms\hallucigen.dm" +#include "code\datums\diseases\advance\symptoms\headache.dm" +#include "code\datums\diseases\advance\symptoms\heal.dm" +#include "code\datums\diseases\advance\symptoms\itching.dm" +#include "code\datums\diseases\advance\symptoms\shivering.dm" +#include "code\datums\diseases\advance\symptoms\sneeze.dm" +#include "code\datums\diseases\advance\symptoms\symptoms.dm" +#include "code\datums\diseases\advance\symptoms\voice_change.dm" +#include "code\datums\diseases\advance\symptoms\vomit.dm" +#include "code\datums\diseases\advance\symptoms\weight.dm" +#include "code\datums\effects\_effects.dm" +#include "code\datums\effects\acid.dm" +#include "code\datums\effects\bleeding.dm" +#include "code\datums\effects\heal_over_time.dm" +#include "code\datums\effects\tether.dm" +#include "code\datums\effects\weather.dm" +#include "code\datums\effects\mob_crit\crit.dm" +#include "code\datums\effects\mob_crit\human_crit.dm" +#include "code\datums\effects\pain\human_pain.dm" +#include "code\datums\effects\pain\monkey_pain.dm" +#include "code\datums\effects\pain\pain.dm" +#include "code\datums\effects\stamina\stamina_human.dm" +#include "code\datums\effects\weather\sorokyne.dm" +#include "code\datums\effects\xeno_strains\boiler_trap.dm" +#include "code\datums\effects\xeno_strains\dancer_tag.dm" +#include "code\datums\effects\xeno_strains\gain_xeno_cooldown_reduction_on_slash.dm" +#include "code\datums\effects\xeno_strains\prae_acid_stacks.dm" +#include "code\datums\effects\xeno_strains\xeno_buff.dm" +#include "code\datums\effects\xeno_strains\xeno_slow.dm" +#include "code\datums\effects\xeno_strains\xeno_speed.dm" +#include "code\datums\effects\xeno_strains\xeno_structure_reinforcement.dm" +#include "code\datums\elements\_element.dm" +#include "code\datums\elements\bloody_feet.dm" +#include "code\datums\elements\drop_retrieval.dm" +#include "code\datums\elements\mouth_drop_item.dm" +#include "code\datums\elements\poor_eyesight_correction.dm" +#include "code\datums\elements\suturing.dm" +#include "code\datums\elements\yautja_tracked_item.dm" +#include "code\datums\elements\bullet_trait\damage_boost.dm" +#include "code\datums\elements\bullet_trait\iff.dm" +#include "code\datums\elements\bullet_trait\ignored_range.dm" +#include "code\datums\elements\bullet_trait\incendiary.dm" +#include "code\datums\elements\bullet_trait\penetrating.dm" +#include "code\datums\elements\traitbound\_traitbound.dm" +#include "code\datums\elements\traitbound\crawler.dm" +#include "code\datums\elements\traitbound\gun_silenced.dm" +#include "code\datums\elements\traitbound\leadership.dm" +#include "code\datums\emergency_calls\big_game_hunter.dm" +#include "code\datums\emergency_calls\clf.dm" +#include "code\datums\emergency_calls\colonist.dm" +#include "code\datums\emergency_calls\cryo_marines.dm" +#include "code\datums\emergency_calls\cryo_marines_heavy.dm" +#include "code\datums\emergency_calls\custom.dm" +#include "code\datums\emergency_calls\deathsquad.dm" +#include "code\datums\emergency_calls\deus_vult.dm" +#include "code\datums\emergency_calls\dutch.dm" +#include "code\datums\emergency_calls\emergency_call.dm" +#include "code\datums\emergency_calls\feral_xenos.dm" +#include "code\datums\emergency_calls\hefa_knight.dm" +#include "code\datums\emergency_calls\mercs.dm" +#include "code\datums\emergency_calls\pirates.dm" +#include "code\datums\emergency_calls\pizza.dm" +#include "code\datums\emergency_calls\pmc.dm" +#include "code\datums\emergency_calls\provost.dm" +#include "code\datums\emergency_calls\riot.dm" +#include "code\datums\emergency_calls\souto.dm" +#include "code\datums\emergency_calls\supplies.dm" +#include "code\datums\emergency_calls\tank_crew.dm" +#include "code\datums\emergency_calls\upp.dm" +#include "code\datums\emergency_calls\upp_commando.dm" +#include "code\datums\emergency_calls\whiskey_outpost.dm" +#include "code\datums\emergency_calls\xenos.dm" +#include "code\datums\emergency_calls\zombie.dm" +#include "code\datums\entities\chemical_information.dm" +#include "code\datums\entities\clans.dm" +#include "code\datums\entities\login_triplets.dm" +#include "code\datums\entities\map_votes.dm" +#include "code\datums\entities\mc_controller.dm" +#include "code\datums\entities\mc_record.dm" +#include "code\datums\entities\mc_round.dm" +#include "code\datums\entities\mc_timing_info.dm" +#include "code\datums\entities\player.dm" +#include "code\datums\entities\player_job_ban.dm" +#include "code\datums\entities\player_note.dm" +#include "code\datums\entities\player_sticky_ban.dm" +#include "code\datums\entities\player_times.dm" +#include "code\datums\entities\vending_stat.dm" +#include "code\datums\entities\logs\player_times_log.dm" +#include "code\datums\factions\clf.dm" +#include "code\datums\factions\faction.dm" +#include "code\datums\factions\helpers.dm" +#include "code\datums\factions\pmc.dm" +#include "code\datums\factions\upp.dm" +#include "code\datums\factions\uscm.dm" +#include "code\datums\helper_datums\teleport.dm" +#include "code\datums\helper_datums\topic_input.dm" +#include "code\datums\keybinding\_defines.dm" +#include "code\datums\keybinding\_keybindings.dm" +#include "code\datums\keybinding\admin.dm" +#include "code\datums\keybinding\carbon.dm" +#include "code\datums\keybinding\client.dm" +#include "code\datums\keybinding\communication.dm" +#include "code\datums\keybinding\human.dm" +#include "code\datums\keybinding\human_combat.dm" +#include "code\datums\keybinding\living.dm" +#include "code\datums\keybinding\mob.dm" +#include "code\datums\keybinding\movement.dm" +#include "code\datums\keybinding\xenomorph.dm" +#include "code\datums\langchat\langchat.dm" +#include "code\datums\pain\_pain.dm" +#include "code\datums\pain\pain_human.dm" +#include "code\datums\pain\pain_human_hero.dm" +#include "code\datums\pain\pain_monkey.dm" +#include "code\datums\pain\pain_synthetic.dm" +#include "code\datums\pain\pain_xeno.dm" +#include "code\datums\pain\pain_yautja.dm" +#include "code\datums\pain\pain_zombie.dm" +#include "code\datums\paygrades\helper.dm" +#include "code\datums\paygrades\paygrade.dm" +#include "code\datums\paygrades\factions\civillian\civilian.dm" +#include "code\datums\paygrades\factions\other\dutch_dozen.dm" +#include "code\datums\paygrades\factions\other\freelancer.dm" +#include "code\datums\paygrades\factions\ress\ress.dm" +#include "code\datums\paygrades\factions\upp\upp.dm" +#include "code\datums\paygrades\factions\uscm\marine.dm" +#include "code\datums\paygrades\factions\uscm\navy.dm" +#include "code\datums\paygrades\factions\uscm\provost.dm" +#include "code\datums\paygrades\factions\wy\pmc.dm" +#include "code\datums\paygrades\factions\wy\wy.dm" +#include "code\datums\stamina\_stamina.dm" +#include "code\datums\stamina\none.dm" +#include "code\datums\statistics\cause_data.dm" +#include "code\datums\statistics\entities\caste_stats.dm" +#include "code\datums\statistics\entities\death_stats.dm" +#include "code\datums\statistics\entities\human_stats.dm" +#include "code\datums\statistics\entities\job_stats.dm" +#include "code\datums\statistics\entities\map_stats.dm" +#include "code\datums\statistics\entities\medal_stats.dm" +#include "code\datums\statistics\entities\panel_stats.dm" +#include "code\datums\statistics\entities\player_entity.dm" +#include "code\datums\statistics\entities\player_save.dm" +#include "code\datums\statistics\entities\player_stats.dm" +#include "code\datums\statistics\entities\round_stats.dm" +#include "code\datums\statistics\entities\weapon_stats.dm" +#include "code\datums\statistics\entities\xeno_stats.dm" +#include "code\datums\statistics\random_facts\damage_fact.dm" +#include "code\datums\statistics\random_facts\kills_fact.dm" +#include "code\datums\statistics\random_facts\random_fact.dm" +#include "code\datums\supply_packs\_supply_packs.dm" +#include "code\datums\supply_packs\ammo.dm" +#include "code\datums\supply_packs\armor.dm" +#include "code\datums\supply_packs\attachments.dm" +#include "code\datums\supply_packs\clothing.dm" +#include "code\datums\supply_packs\engineering.dm" +#include "code\datums\supply_packs\hardpoint_modules.dm" +#include "code\datums\supply_packs\medical.dm" +#include "code\datums\supply_packs\misc.dm" +#include "code\datums\supply_packs\operations.dm" +#include "code\datums\supply_packs\spec_ammo.dm" +#include "code\datums\supply_packs\weapons.dm" +#include "code\datums\weather\weather_event.dm" +#include "code\datums\weather\weather_map_holder.dm" +#include "code\datums\weather\weather_events\sorokyne.dm" +#include "code\datums\weather\weather_map_holders\sorokyne.dm" +#include "code\datums\xeno_shields\xeno_shield.dm" +#include "code\datums\xeno_shields\shield_types\crusher_shield.dm" +#include "code\datums\xeno_shields\shield_types\hedgehog_shield.dm" +#include "code\datums\xeno_shields\shield_types\vanguard_shield.dm" +#include "code\defines\procs\admin.dm" +#include "code\defines\procs\announcement.dm" +#include "code\defines\procs\AStar.dm" +#include "code\defines\procs\conflict.dm" +#include "code\defines\procs\hud.dm" +#include "code\defines\procs\radio.dm" +#include "code\defines\procs\records.dm" +#include "code\game\atoms.dm" +#include "code\game\atoms_movable.dm" +#include "code\game\blood.dm" +#include "code\game\runtimes.dm" +#include "code\game\shuttle_engines.dm" +#include "code\game\skincmd.dm" +#include "code\game\smoothwall.dm" +#include "code\game\sound.dm" +#include "code\game\supplyshuttle.dm" +#include "code\game\world.dm" +#include "code\game\area\admin_level.dm" +#include "code\game\area\almayer.dm" +#include "code\game\area\areas.dm" +#include "code\game\area\areas_event.dm" +#include "code\game\area\BigRed.dm" +#include "code\game\area\ChigusaShipyard.dm" +#include "code\game\area\chinook.dm" +#include "code\game\area\Corsat.dm" +#include "code\game\area\DesertDam.dm" +#include "code\game\area\IceColony.dm" +#include "code\game\area\kutjevo.dm" +#include "code\game\area\LV624.dm" +#include "code\game\area\prison.dm" +#include "code\game\area\Prison_Station_FOP.dm" +#include "code\game\area\prison_v3_fiorina.dm" +#include "code\game\area\shiva.dm" +#include "code\game\area\shuttles.dm" +#include "code\game\area\space_station_13_areas.dm" +#include "code\game\area\strata.dm" +#include "code\game\area\Sulaco.dm" +#include "code\game\area\techtree.dm" +#include "code\game\area\WhiskeyOutpost.dm" +#include "code\game\cas_manager\datums\cas_fire_envelope.dm" +#include "code\game\cas_manager\datums\cas_fire_mission.dm" +#include "code\game\cas_manager\datums\cas_iff_group.dm" +#include "code\game\cas_manager\datums\cas_signal.dm" +#include "code\game\gamemodes\cm_initialize.dm" +#include "code\game\gamemodes\cm_process.dm" +#include "code\game\gamemodes\cm_self_destruct.dm" +#include "code\game\gamemodes\events.dm" +#include "code\game\gamemodes\game_mode.dm" +#include "code\game\gamemodes\colonialmarines\colonialmarines.dm" +#include "code\game\gamemodes\colonialmarines\huntergames.dm" +#include "code\game\gamemodes\colonialmarines\whiskey_outpost.dm" +#include "code\game\gamemodes\colonialmarines\xenovsxeno.dm" +#include "code\game\gamemodes\colonialmarines\whiskey_outpost\equipping.dm" +#include "code\game\gamemodes\colonialmarines\whiskey_outpost\skills.dm" +#include "code\game\gamemodes\colonialmarines\whiskey_outpost\whiskey_output_waves.dm" +#include "code\game\gamemodes\events\power_failure.dm" +#include "code\game\gamemodes\extended\extended.dm" +#include "code\game\gamemodes\extended\extended_clash.dm" +#include "code\game\gamemodes\extended\extended_nospawn.dm" +#include "code\game\gamemodes\extended\infection.dm" +#include "code\game\jobs\access.dm" +#include "code\game\jobs\role_authority.dm" +#include "code\game\jobs\slot_scaling.dm" +#include "code\game\jobs\whitelist.dm" +#include "code\game\jobs\job\job.dm" +#include "code\game\jobs\job\antag\antag.dm" +#include "code\game\jobs\job\antag\other\pred.dm" +#include "code\game\jobs\job\antag\xeno\queen.dm" +#include "code\game\jobs\job\antag\xeno\xenomorph.dm" +#include "code\game\jobs\job\civilians\civilian.dm" +#include "code\game\jobs\job\civilians\other\liaison.dm" +#include "code\game\jobs\job\civilians\other\mess_seargent.dm" +#include "code\game\jobs\job\civilians\other\survivors.dm" +#include "code\game\jobs\job\civilians\support\cmo.dm" +#include "code\game\jobs\job\civilians\support\doctor.dm" +#include "code\game\jobs\job\civilians\support\nurse.dm" +#include "code\game\jobs\job\civilians\support\researcher.dm" +#include "code\game\jobs\job\civilians\support\synthetic.dm" +#include "code\game\jobs\job\civilians\support\working_joe.dm" +#include "code\game\jobs\job\command\command.dm" +#include "code\game\jobs\job\command\auxiliary\crew_chief.dm" +#include "code\game\jobs\job\command\auxiliary\pilot.dm" +#include "code\game\jobs\job\command\auxiliary\senior.dm" +#include "code\game\jobs\job\command\auxiliary\tankcrew.dm" +#include "code\game\jobs\job\command\cic\captain.dm" +#include "code\game\jobs\job\command\cic\executive.dm" +#include "code\game\jobs\job\command\cic\staffofficer.dm" +#include "code\game\jobs\job\command\police\cadet_police.dm" +#include "code\game\jobs\job\command\police\chief_police.dm" +#include "code\game\jobs\job\command\police\police.dm" +#include "code\game\jobs\job\command\police\warden.dm" +#include "code\game\jobs\job\logistics\logistics.dm" +#include "code\game\jobs\job\logistics\cargo\cargo_tech.dm" +#include "code\game\jobs\job\logistics\cargo\chief_req.dm" +#include "code\game\jobs\job\logistics\engi\chief_engineer.dm" +#include "code\game\jobs\job\logistics\engi\maint_tech.dm" +#include "code\game\jobs\job\logistics\engi\ordnance_tech.dm" +#include "code\game\jobs\job\marine\marine.dm" +#include "code\game\jobs\job\marine\squad_info.dm" +#include "code\game\jobs\job\marine\squads.dm" +#include "code\game\jobs\job\marine\squad\engineer.dm" +#include "code\game\jobs\job\marine\squad\leader.dm" +#include "code\game\jobs\job\marine\squad\medic.dm" +#include "code\game\jobs\job\marine\squad\rto.dm" +#include "code\game\jobs\job\marine\squad\smartgunner.dm" +#include "code\game\jobs\job\marine\squad\specialist.dm" +#include "code\game\jobs\job\marine\squad\standard.dm" +#include "code\game\jobs\job\special\provost.dm" +#include "code\game\jobs\job\special\uscm.dm" +#include "code\game\machinery\adv_med.dm" +#include "code\game\machinery\air_alarm.dm" +#include "code\game\machinery\air_sensor.dm" +#include "code\game\machinery\autodoc.dm" +#include "code\game\machinery\autolathe.dm" +#include "code\game\machinery\autolathe_datums.dm" +#include "code\game\machinery\Beacon.dm" +#include "code\game\machinery\bio-dome_floodlights.dm" +#include "code\game\machinery\bioprinter.dm" +#include "code\game\machinery\buttons.dm" +#include "code\game\machinery\cell_charger.dm" +#include "code\game\machinery\cloning.dm" +#include "code\game\machinery\constructable_frame.dm" +#include "code\game\machinery\cryo.dm" +#include "code\game\machinery\cryopod.dm" +#include "code\game\machinery\deployable.dm" +#include "code\game\machinery\door_control.dm" +#include "code\game\machinery\fax_machine.dm" +#include "code\game\machinery\fire_alarm.dm" +#include "code\game\machinery\flasher.dm" +#include "code\game\machinery\floodlight.dm" +#include "code\game\machinery\fuelcell_recycler.dm" +#include "code\game\machinery\fusion_engine.dm" +#include "code\game\machinery\gear.dm" +#include "code\game\machinery\groundmap_geothermal.dm" +#include "code\game\machinery\hologram.dm" +#include "code\game\machinery\holosign.dm" +#include "code\game\machinery\igniter.dm" +#include "code\game\machinery\iv_drip.dm" +#include "code\game\machinery\lightswitch.dm" +#include "code\game\machinery\line_nexter.dm" +#include "code\game\machinery\machinery.dm" +#include "code\game\machinery\magnet.dm" +#include "code\game\machinery\mass_driver.dm" +#include "code\game\machinery\mining.dm" +#include "code\game\machinery\misc.dm" +#include "code\game\machinery\navbeacon.dm" +#include "code\game\machinery\newscaster.dm" +#include "code\game\machinery\nuclearbomb.dm" +#include "code\game\machinery\OpTable.dm" +#include "code\game\machinery\recharger.dm" +#include "code\game\machinery\rechargestation.dm" +#include "code\game\machinery\robot_fabricator.dm" +#include "code\game\machinery\scoreboard.dm" +#include "code\game\machinery\seed_extractor.dm" +#include "code\game\machinery\sentry_holder.dm" +#include "code\game\machinery\Sleeper.dm" +#include "code\game\machinery\spaceheater.dm" +#include "code\game\machinery\status_display.dm" +#include "code\game\machinery\suit_storage_unit.dm" +#include "code\game\machinery\supply_display.dm" +#include "code\game\machinery\teleporter.dm" +#include "code\game\machinery\washing_machine.dm" +#include "code\game\machinery\weather_siren.dm" +#include "code\game\machinery\atmoalter\canister.dm" +#include "code\game\machinery\atmoalter\meter.dm" +#include "code\game\machinery\atmoalter\portable_atmospherics.dm" +#include "code\game\machinery\atmoalter\pump.dm" +#include "code\game\machinery\atmoalter\scrubber.dm" +#include "code\game\machinery\bots\bots.dm" +#include "code\game\machinery\bots\cleanbot.dm" +#include "code\game\machinery\bots\floorbot.dm" +#include "code\game\machinery\bots\medbot.dm" +#include "code\game\machinery\bots\mulebot.dm" +#include "code\game\machinery\camera\camera.dm" +#include "code\game\machinery\camera\motion.dm" +#include "code\game\machinery\camera\presets.dm" +#include "code\game\machinery\camera\tracking.dm" +#include "code\game\machinery\camera\wires.dm" +#include "code\game\machinery\computer\ai_core.dm" +#include "code\game\machinery\computer\aifixer.dm" +#include "code\game\machinery\computer\almayer_control.dm" +#include "code\game\machinery\computer\arcade.dm" +#include "code\game\machinery\computer\area_air_control.dm" +#include "code\game\machinery\computer\atmos_alert.dm" +#include "code\game\machinery\computer\buildandrepair.dm" +#include "code\game\machinery\computer\camera_console.dm" +#include "code\game\machinery\computer\communications.dm" +#include "code\game\machinery\computer\computer.dm" +#include "code\game\machinery\computer\demo_sim.dm" +#include "code\game\machinery\computer\dropship_weapons.dm" +#include "code\game\machinery\computer\emails.dm" +#include "code\game\machinery\computer\fluff.dm" +#include "code\game\machinery\computer\general_air_control.dm" +#include "code\game\machinery\computer\groundside_operations.dm" +#include "code\game\machinery\computer\guestpass.dm" +#include "code\game\machinery\computer\HolodeckControl.dm" +#include "code\game\machinery\computer\medical.dm" +#include "code\game\machinery\computer\Operating.dm" +#include "code\game\machinery\computer\pod.dm" +#include "code\game\machinery\computer\prisoner.dm" +#include "code\game\machinery\computer\research.dm" +#include "code\game\machinery\computer\robot.dm" +#include "code\game\machinery\computer\security.dm" +#include "code\game\machinery\computer\sentencing.dm" +#include "code\game\machinery\computer\skills.dm" +#include "code\game\machinery\computer\station_alert.dm" +#include "code\game\machinery\door_display\door_display.dm" +#include "code\game\machinery\doors\airlock.dm" +#include "code\game\machinery\doors\airlock_control.dm" +#include "code\game\machinery\doors\airlock_types.dm" +#include "code\game\machinery\doors\alarmlock.dm" +#include "code\game\machinery\doors\brig_system.dm" +#include "code\game\machinery\doors\checkForMultipleDoors.dm" +#include "code\game\machinery\doors\door.dm" +#include "code\game\machinery\doors\firedoor.dm" +#include "code\game\machinery\doors\multi_tile.dm" +#include "code\game\machinery\doors\poddoor.dm" +#include "code\game\machinery\doors\railing.dm" +#include "code\game\machinery\doors\runed_sandstone.dm" +#include "code\game\machinery\doors\shutters.dm" +#include "code\game\machinery\doors\unpowered.dm" +#include "code\game\machinery\doors\windowdoor.dm" +#include "code\game\machinery\embedded_controller\airlock_controllers.dm" +#include "code\game\machinery\embedded_controller\airlock_docking_controller.dm" +#include "code\game\machinery\embedded_controller\airlock_docking_controller_multi.dm" +#include "code\game\machinery\embedded_controller\airlock_program.dm" +#include "code\game\machinery\embedded_controller\docking_program.dm" +#include "code\game\machinery\embedded_controller\docking_program_multi.dm" +#include "code\game\machinery\embedded_controller\embedded_controller_base.dm" +#include "code\game\machinery\embedded_controller\embedded_program_base.dm" +#include "code\game\machinery\embedded_controller\simple_docking_controller.dm" +#include "code\game\machinery\kitchen\gibber.dm" +#include "code\game\machinery\kitchen\juicer.dm" +#include "code\game\machinery\kitchen\microwave.dm" +#include "code\game\machinery\kitchen\processor.dm" +#include "code\game\machinery\kitchen\smartfridge.dm" +#include "code\game\machinery\pipe\construction.dm" +#include "code\game\machinery\pipe\pipe_dispenser.dm" +#include "code\game\machinery\telecomms\broadcaster.dm" +#include "code\game\machinery\telecomms\logbrowser.dm" +#include "code\game\machinery\telecomms\machine_interactions.dm" +#include "code\game\machinery\telecomms\portable_comms.dm" +#include "code\game\machinery\telecomms\presets.dm" +#include "code\game\machinery\telecomms\telecomunications.dm" +#include "code\game\machinery\telecomms\telemonitor.dm" +#include "code\game\machinery\telecomms\traffic_control.dm" +#include "code\game\machinery\vending\cm_vending.dm" +#include "code\game\machinery\vending\vending.dm" +#include "code\game\machinery\vending\vending_types.dm" +#include "code\game\machinery\vending\vendor_types\dress.dm" +#include "code\game\machinery\vending\vendor_types\engineering.dm" +#include "code\game\machinery\vending\vendor_types\food.dm" +#include "code\game\machinery\vending\vendor_types\general.dm" +#include "code\game\machinery\vending\vendor_types\medical.dm" +#include "code\game\machinery\vending\vendor_types\requisitions.dm" +#include "code\game\machinery\vending\vendor_types\supplies.dm" +#include "code\game\machinery\vending\vendor_types\wo_vendors.dm" +#include "code\game\machinery\vending\vendor_types\antag\antag_clothing.dm" +#include "code\game\machinery\vending\vendor_types\antag\antag_gear.dm" +#include "code\game\machinery\vending\vendor_types\antag\antag_guns_snowflake.dm" +#include "code\game\machinery\vending\vendor_types\antag\antag_guns_sorted.dm" +#include "code\game\machinery\vending\vendor_types\crew\commanding_officer.dm" +#include "code\game\machinery\vending\vendor_types\crew\medical.dm" +#include "code\game\machinery\vending\vendor_types\crew\mp.dm" +#include "code\game\machinery\vending\vendor_types\crew\pilot_officer.dm" +#include "code\game\machinery\vending\vendor_types\crew\sea.dm" +#include "code\game\machinery\vending\vendor_types\crew\senior_officers.dm" +#include "code\game\machinery\vending\vendor_types\crew\staff_officer.dm" +#include "code\game\machinery\vending\vendor_types\crew\synthetic.dm" +#include "code\game\machinery\vending\vendor_types\crew\vehicle_crew.dm" +#include "code\game\machinery\vending\vendor_types\squad_prep\squad_engineer.dm" +#include "code\game\machinery\vending\vendor_types\squad_prep\squad_leader.dm" +#include "code\game\machinery\vending\vendor_types\squad_prep\squad_medic.dm" +#include "code\game\machinery\vending\vendor_types\squad_prep\squad_prep.dm" +#include "code\game\machinery\vending\vendor_types\squad_prep\squad_rto.dm" +#include "code\game\machinery\vending\vendor_types\squad_prep\squad_smartgunner.dm" +#include "code\game\machinery\vending\vendor_types\squad_prep\squad_specialist.dm" +#include "code\game\objects\empulse.dm" +#include "code\game\objects\explosion.dm" +#include "code\game\objects\explosion_recursive.dm" +#include "code\game\objects\items.dm" +#include "code\game\objects\objs.dm" +#include "code\game\objects\shrapnel.dm" +#include "code\game\objects\structures.dm" +#include "code\game\objects\effects\acid_hole.dm" +#include "code\game\objects\effects\aliens.dm" +#include "code\game\objects\effects\effect.dm" +#include "code\game\objects\effects\elevator.dm" +#include "code\game\objects\effects\glowshroom.dm" +#include "code\game\objects\effects\manifest.dm" +#include "code\game\objects\effects\misc.dm" +#include "code\game\objects\effects\overlays.dm" +#include "code\game\objects\effects\portals.dm" +#include "code\game\objects\effects\projector.dm" +#include "code\game\objects\effects\rappel_rope.dm" +#include "code\game\objects\effects\spiders.dm" +#include "code\game\objects\effects\step_triggers.dm" +#include "code\game\objects\effects\temporary_visuals.dm" +#include "code\game\objects\effects\decals\crayon.dm" +#include "code\game\objects\effects\decals\hefa_cult_decals.dm" +#include "code\game\objects\effects\decals\kutjevo_decals.dm" +#include "code\game\objects\effects\decals\medical_decals.dm" +#include "code\game\objects\effects\decals\misc.dm" +#include "code\game\objects\effects\decals\posters.dm" +#include "code\game\objects\effects\decals\prints.dm" +#include "code\game\objects\effects\decals\remains.dm" +#include "code\game\objects\effects\decals\strata_decals.dm" +#include "code\game\objects\effects\decals\warning_stripes.dm" +#include "code\game\objects\effects\decals\cleanable\cleanable.dm" +#include "code\game\objects\effects\decals\cleanable\fuel.dm" +#include "code\game\objects\effects\decals\cleanable\misc.dm" +#include "code\game\objects\effects\decals\cleanable\blood\blood.dm" +#include "code\game\objects\effects\decals\cleanable\blood\robots.dm" +#include "code\game\objects\effects\decals\cleanable\blood\tracks.dm" +#include "code\game\objects\effects\decals\cleanable\blood\xeno.dm" +#include "code\game\objects\effects\decals\posters\poster_list.dm" +#include "code\game\objects\effects\effect_system\chemsmoke.dm" +#include "code\game\objects\effects\effect_system\effect_system.dm" +#include "code\game\objects\effects\effect_system\explosions.dm" +#include "code\game\objects\effects\effect_system\foam.dm" +#include "code\game\objects\effects\effect_system\particle_effects.dm" +#include "code\game\objects\effects\effect_system\smoke.dm" +#include "code\game\objects\effects\landmarks\corpsespawner.dm" +#include "code\game\objects\effects\landmarks\freed_mob_spawner.dm" +#include "code\game\objects\effects\landmarks\item_pool.dm" +#include "code\game\objects\effects\landmarks\itemspawner.dm" +#include "code\game\objects\effects\landmarks\landmarks.dm" +#include "code\game\objects\effects\landmarks\survivor_spawner.dm" +#include "code\game\objects\effects\landmarks\structure_spawners\setup_distress.dm" +#include "code\game\objects\effects\landmarks\structure_spawners\structure_spawner.dm" +#include "code\game\objects\effects\landmarks\structure_spawners\xvx_hive.dm" +#include "code\game\objects\effects\spawners\gibspawner.dm" +#include "code\game\objects\effects\spawners\random.dm" +#include "code\game\objects\effects\spawners\spawner.dm" +#include "code\game\objects\effects\spawners\vaultspawner.dm" +#include "code\game\objects\effects\spawners\wo_spawners\players.dm" +#include "code\game\objects\effects\spawners\wo_spawners\supplies.dm" +#include "code\game\objects\items\artifacts.dm" +#include "code\game\objects\items\ashtray.dm" +#include "code\game\objects\items\backpack_sprayers.dm" +#include "code\game\objects\items\bodybag.dm" +#include "code\game\objects\items\cards_ids.dm" +#include "code\game\objects\items\contraband.dm" +#include "code\game\objects\items\cosmetics.dm" +#include "code\game\objects\items\cpr_dummy.dm" +#include "code\game\objects\items\disks.dm" +#include "code\game\objects\items\fulton.dm" +#include "code\game\objects\items\gift_wrappaper.dm" +#include "code\game\objects\items\handcuffs.dm" +#include "code\game\objects\items\hoverpack.dm" +#include "code\game\objects\items\legcuffs.dm" +#include "code\game\objects\items\lightstick.dm" +#include "code\game\objects\items\misc.dm" +#include "code\game\objects\items\old_research.dm" +#include "code\game\objects\items\ore.dm" +#include "code\game\objects\items\paint.dm" +#include "code\game\objects\items\pamphlets.dm" +#include "code\game\objects\items\shards.dm" +#include "code\game\objects\items\stock_parts.dm" +#include "code\game\objects\items\trash.dm" +#include "code\game\objects\items\XMAS.dm" +#include "code\game\objects\items\books\book.dm" +#include "code\game\objects\items\books\manuals.dm" +#include "code\game\objects\items\circuitboards\airlock.dm" +#include "code\game\objects\items\circuitboards\circuitboard.dm" +#include "code\game\objects\items\circuitboards\computer.dm" +#include "code\game\objects\items\circuitboards\machine.dm" +#include "code\game\objects\items\circuitboards\mecha.dm" +#include "code\game\objects\items\circuitboards\robot_modules.dm" +#include "code\game\objects\items\devices\aicard.dm" +#include "code\game\objects\items\devices\autopsy_scanner.dm" +#include "code\game\objects\items\devices\binoculars.dm" +#include "code\game\objects\items\devices\camera_bug.dm" +#include "code\game\objects\items\devices\cictablet.dm" +#include "code\game\objects\items\devices\cloaking.dm" +#include "code\game\objects\items\devices\clue_scanner.dm" +#include "code\game\objects\items\devices\coins.dm" +#include "code\game\objects\items\devices\debugger.dm" +#include "code\game\objects\items\devices\defibrillator.dm" +#include "code\game\objects\items\devices\device.dm" +#include "code\game\objects\items\devices\drone_devices.dm" +#include "code\game\objects\items\devices\dummy_tablet.dm" +#include "code\game\objects\items\devices\flash.dm" +#include "code\game\objects\items\devices\flashlight.dm" +#include "code\game\objects\items\devices\floor_painter.dm" +#include "code\game\objects\items\devices\lightreplacer.dm" +#include "code\game\objects\items\devices\megaphone.dm" +#include "code\game\objects\items\devices\motion_detector.dm" +#include "code\game\objects\items\devices\multitool.dm" +#include "code\game\objects\items\devices\pinpointer.dm" +#include "code\game\objects\items\devices\pipe_painter.dm" +#include "code\game\objects\items\devices\portable_vendor.dm" +#include "code\game\objects\items\devices\RCD.dm" +#include "code\game\objects\items\devices\RSF.dm" +#include "code\game\objects\items\devices\RSP.dm" +#include "code\game\objects\items\devices\scanners.dm" +#include "code\game\objects\items\devices\suit_cooling.dm" +#include "code\game\objects\items\devices\taperecorder.dm" +#include "code\game\objects\items\devices\teleportation.dm" +#include "code\game\objects\items\devices\transfer_valve.dm" +#include "code\game\objects\items\devices\walkman.dm" +#include "code\game\objects\items\devices\whistle.dm" +#include "code\game\objects\items\devices\radio\beacon.dm" +#include "code\game\objects\items\devices\radio\electropack.dm" +#include "code\game\objects\items\devices\radio\encryptionkey.dm" +#include "code\game\objects\items\devices\radio\headset.dm" +#include "code\game\objects\items\devices\radio\intercom.dm" +#include "code\game\objects\items\devices\radio\radio.dm" +#include "code\game\objects\items\explosives\explosive.dm" +#include "code\game\objects\items\explosives\mine.dm" +#include "code\game\objects\items\explosives\plastic.dm" +#include "code\game\objects\items\explosives\warhead.dm" +#include "code\game\objects\items\explosives\grenades\chem_grenade.dm" +#include "code\game\objects\items\explosives\grenades\emgrenade.dm" +#include "code\game\objects\items\explosives\grenades\flashbang.dm" +#include "code\game\objects\items\explosives\grenades\grenade.dm" +#include "code\game\objects\items\explosives\grenades\marines.dm" +#include "code\game\objects\items\explosives\grenades\spawnergrenade.dm" +#include "code\game\objects\items\explosives\grenades\xeno_nades.dm" +#include "code\game\objects\items\frames\alarms.dm" +#include "code\game\objects\items\frames\bot_assembly.dm" +#include "code\game\objects\items\frames\camera.dm" +#include "code\game\objects\items\frames\frame.dm" +#include "code\game\objects\items\frames\light_fixtures.dm" +#include "code\game\objects\items\frames\table_rack.dm" +#include "code\game\objects\items\implants\implant.dm" +#include "code\game\objects\items\implants\implantcase.dm" +#include "code\game\objects\items\implants\implantchair.dm" +#include "code\game\objects\items\implants\implanter.dm" +#include "code\game\objects\items\implants\implantfreedom.dm" +#include "code\game\objects\items\implants\implantneurostim.dm" +#include "code\game\objects\items\implants\implantpad.dm" +#include "code\game\objects\items\props\helmetgarb.dm" +#include "code\game\objects\items\props\souto_land.dm" +#include "code\game\objects\items\reagent_containers\autoinjectors.dm" +#include "code\game\objects\items\reagent_containers\blood_pack.dm" +#include "code\game\objects\items\reagent_containers\borghydro.dm" +#include "code\game\objects\items\reagent_containers\dropper.dm" +#include "code\game\objects\items\reagent_containers\food.dm" +#include "code\game\objects\items\reagent_containers\glass.dm" +#include "code\game\objects\items\reagent_containers\hypospray.dm" +#include "code\game\objects\items\reagent_containers\pill.dm" +#include "code\game\objects\items\reagent_containers\reagent_container.dm" +#include "code\game\objects\items\reagent_containers\robodropper.dm" +#include "code\game\objects\items\reagent_containers\spray.dm" +#include "code\game\objects\items\reagent_containers\syringes.dm" +#include "code\game\objects\items\reagent_containers\food\cans.dm" +#include "code\game\objects\items\reagent_containers\food\condiment.dm" +#include "code\game\objects\items\reagent_containers\food\drinks.dm" +#include "code\game\objects\items\reagent_containers\food\fortunecookie.dm" +#include "code\game\objects\items\reagent_containers\food\sandwich.dm" +#include "code\game\objects\items\reagent_containers\food\snacks.dm" +#include "code\game\objects\items\reagent_containers\food\drinks\bottle.dm" +#include "code\game\objects\items\reagent_containers\food\drinks\drinkingglass.dm" +#include "code\game\objects\items\reagent_containers\food\drinks\jar.dm" +#include "code\game\objects\items\reagent_containers\food\drinks\bottle\robot.dm" +#include "code\game\objects\items\reagent_containers\food\snacks\grown.dm" +#include "code\game\objects\items\reagent_containers\food\snacks\honey.dm" +#include "code\game\objects\items\reagent_containers\food\snacks\meat.dm" +#include "code\game\objects\items\reagent_containers\glass\bottle.dm" +#include "code\game\objects\items\reagent_containers\glass\bottle\robot.dm" +#include "code\game\objects\items\robot\robot_items.dm" +#include "code\game\objects\items\robot\robot_parts.dm" +#include "code\game\objects\items\robot\robot_upgrades.dm" +#include "code\game\objects\items\stacks\barbed_wire.dm" +#include "code\game\objects\items\stacks\cable_coil.dm" +#include "code\game\objects\items\stacks\catwalk.dm" +#include "code\game\objects\items\stacks\flags.dm" +#include "code\game\objects\items\stacks\medical.dm" +#include "code\game\objects\items\stacks\nanopaste.dm" +#include "code\game\objects\items\stacks\predator.dm" +#include "code\game\objects\items\stacks\rods.dm" +#include "code\game\objects\items\stacks\sandbags.dm" +#include "code\game\objects\items\stacks\snow.dm" +#include "code\game\objects\items\stacks\stack.dm" +#include "code\game\objects\items\stacks\sheets\glass.dm" +#include "code\game\objects\items\stacks\sheets\leather.dm" +#include "code\game\objects\items\stacks\sheets\light.dm" +#include "code\game\objects\items\stacks\sheets\mineral.dm" +#include "code\game\objects\items\stacks\sheets\sheet_types.dm" +#include "code\game\objects\items\stacks\sheets\sheets.dm" +#include "code\game\objects\items\stacks\tiles\light.dm" +#include "code\game\objects\items\stacks\tiles\plasteel.dm" +#include "code\game\objects\items\stacks\tiles\tile_types.dm" +#include "code\game\objects\items\storage\backpack.dm" +#include "code\game\objects\items\storage\bags.dm" +#include "code\game\objects\items\storage\belt.dm" +#include "code\game\objects\items\storage\bible.dm" +#include "code\game\objects\items\storage\boxes.dm" +#include "code\game\objects\items\storage\briefcase.dm" +#include "code\game\objects\items\storage\fancy.dm" +#include "code\game\objects\items\storage\firstaid.dm" +#include "code\game\objects\items\storage\internal.dm" +#include "code\game\objects\items\storage\large_holster.dm" +#include "code\game\objects\items\storage\lockbox.dm" +#include "code\game\objects\items\storage\misc.dm" +#include "code\game\objects\items\storage\pouch.dm" +#include "code\game\objects\items\storage\secure.dm" +#include "code\game\objects\items\storage\smartpack.dm" +#include "code\game\objects\items\storage\storage.dm" +#include "code\game\objects\items\storage\surgical_tray.dm" +#include "code\game\objects\items\storage\toolbox.dm" +#include "code\game\objects\items\storage\wallets.dm" +#include "code\game\objects\items\tanks\jetpack.dm" +#include "code\game\objects\items\tanks\tank_types.dm" +#include "code\game\objects\items\tanks\tanks.dm" +#include "code\game\objects\items\tools\cleaning_tools.dm" +#include "code\game\objects\items\tools\experimental_tools.dm" +#include "code\game\objects\items\tools\extinguisher.dm" +#include "code\game\objects\items\tools\flame_tools.dm" +#include "code\game\objects\items\tools\hydro_tools.dm" +#include "code\game\objects\items\tools\kitchen_tools.dm" +#include "code\game\objects\items\tools\maintenance_tools.dm" +#include "code\game\objects\items\tools\mining_tools.dm" +#include "code\game\objects\items\tools\misc_tools.dm" +#include "code\game\objects\items\tools\shovel_tools.dm" +#include "code\game\objects\items\tools\surgery_tools.dm" +#include "code\game\objects\items\toys\cards.dm" +#include "code\game\objects\items\toys\crayons.dm" +#include "code\game\objects\items\toys\toy_weapons.dm" +#include "code\game\objects\items\toys\toys.dm" +#include "code\game\objects\items\weapons\blades.dm" +#include "code\game\objects\items\weapons\energy.dm" +#include "code\game\objects\items\weapons\misc.dm" +#include "code\game\objects\items\weapons\shields.dm" +#include "code\game\objects\items\weapons\stunbaton.dm" +#include "code\game\objects\items\weapons\swords_axes_etc.dm" +#include "code\game\objects\items\weapons\twohanded.dm" +#include "code\game\objects\items\weapons\weapon.dm" +#include "code\game\objects\items\weapons\weaponry.dm" +#include "code\game\objects\structures\airlock_assembly.dm" +#include "code\game\objects\structures\barsign.dm" +#include "code\game\objects\structures\bedsheet_bin.dm" +#include "code\game\objects\structures\blocker.dm" +#include "code\game\objects\structures\bookcase.dm" +#include "code\game\objects\structures\cargo_container.dm" +#include "code\game\objects\structures\catwalk.dm" +#include "code\game\objects\structures\coathanger.dm" +#include "code\game\objects\structures\curtains.dm" +#include "code\game\objects\structures\desertdam.dm" +#include "code\game\objects\structures\displaycase.dm" +#include "code\game\objects\structures\electricchair.dm" +#include "code\game\objects\structures\extinguisher.dm" +#include "code\game\objects\structures\fence.dm" +#include "code\game\objects\structures\flora.dm" +#include "code\game\objects\structures\girders.dm" +#include "code\game\objects\structures\grille.dm" +#include "code\game\objects\structures\ice_caves.dm" +#include "code\game\objects\structures\inflatable.dm" +#include "code\game\objects\structures\janicart.dm" +#include "code\game\objects\structures\kitchen_spike.dm" +#include "code\game\objects\structures\ladders.dm" +#include "code\game\objects\structures\lamarr_cage.dm" +#include "code\game\objects\structures\landing_signs.dm" +#include "code\game\objects\structures\lattice.dm" +#include "code\game\objects\structures\lawnmower.dm" +#include "code\game\objects\structures\mineral_doors.dm" +#include "code\game\objects\structures\mirror.dm" +#include "code\game\objects\structures\misc.dm" +#include "code\game\objects\structures\morgue.dm" +#include "code\game\objects\structures\musician.dm" +#include "code\game\objects\structures\noticeboard.dm" +#include "code\game\objects\structures\platforms.dm" +#include "code\game\objects\structures\props.dm" +#include "code\game\objects\structures\reagent_dispensers.dm" +#include "code\game\objects\structures\safe.dm" +#include "code\game\objects\structures\signs.dm" +#include "code\game\objects\structures\surface.dm" +#include "code\game\objects\structures\tables_racks.dm" +#include "code\game\objects\structures\tank_dispenser.dm" +#include "code\game\objects\structures\watercloset.dm" +#include "code\game\objects\structures\windoor_assembly.dm" +#include "code\game\objects\structures\window.dm" +#include "code\game\objects\structures\window_frame.dm" +#include "code\game\objects\structures\barricade\barricade.dm" +#include "code\game\objects\structures\barricade\deployable.dm" +#include "code\game\objects\structures\barricade\handrail.dm" +#include "code\game\objects\structures\barricade\metal.dm" +#include "code\game\objects\structures\barricade\misc.dm" +#include "code\game\objects\structures\barricade\plasteel.dm" +#include "code\game\objects\structures\barricade\sandbags.dm" +#include "code\game\objects\structures\crates_lockers\closets.dm" +#include "code\game\objects\structures\crates_lockers\crates.dm" +#include "code\game\objects\structures\crates_lockers\largecrate.dm" +#include "code\game\objects\structures\crates_lockers\largecrate_supplies.dm" +#include "code\game\objects\structures\crates_lockers\secure_crates.dm" +#include "code\game\objects\structures\crates_lockers\closets\coffin.dm" +#include "code\game\objects\structures\crates_lockers\closets\crittercrate.dm" +#include "code\game\objects\structures\crates_lockers\closets\fireaxe.dm" +#include "code\game\objects\structures\crates_lockers\closets\fitness.dm" +#include "code\game\objects\structures\crates_lockers\closets\gimmick.dm" +#include "code\game\objects\structures\crates_lockers\closets\job_closets.dm" +#include "code\game\objects\structures\crates_lockers\closets\l3closet.dm" +#include "code\game\objects\structures\crates_lockers\closets\malfunction.dm" +#include "code\game\objects\structures\crates_lockers\closets\utility_closets.dm" +#include "code\game\objects\structures\crates_lockers\closets\wall_locker.dm" +#include "code\game\objects\structures\crates_lockers\closets\wardrobe.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\bar.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\cargo.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\cm_closets.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\engineering.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\freezer.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\guncabinet.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\hydroponics.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\medical.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\personal.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\scientist.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" +#include "code\game\objects\structures\pipes\binary_misc.dm" +#include "code\game\objects\structures\pipes\pipes.dm" +#include "code\game\objects\structures\pipes\trinary_misc.dm" +#include "code\game\objects\structures\pipes\unary_misc.dm" +#include "code\game\objects\structures\pipes\valve_connector.dm" +#include "code\game\objects\structures\pipes\standard\manifolds.dm" +#include "code\game\objects\structures\pipes\standard\simple.dm" +#include "code\game\objects\structures\pipes\standard\standard.dm" +#include "code\game\objects\structures\pipes\standard\standard_misc.dm" +#include "code\game\objects\structures\pipes\vents\pump_scrubber.dm" +#include "code\game\objects\structures\pipes\vents\vents.dm" +#include "code\game\objects\structures\props\requests_console.dm" +#include "code\game\objects\structures\props\research.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\bed.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\chairs.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\janicart.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\sofa.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\stools.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\wheelchair.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\xeno_nest.dm" +#include "code\game\turfs\auto_turf.dm" +#include "code\game\turfs\baseturf_skipover.dm" +#include "code\game\turfs\closed.dm" +#include "code\game\turfs\floor.dm" +#include "code\game\turfs\floor_types.dm" +#include "code\game\turfs\kutjevo.dm" +#include "code\game\turfs\light.dm" +#include "code\game\turfs\open.dm" +#include "code\game\turfs\shiva.dm" +#include "code\game\turfs\snow.dm" +#include "code\game\turfs\space.dm" +#include "code\game\turfs\strata.dm" +#include "code\game\turfs\transit.dm" +#include "code\game\turfs\turf.dm" +#include "code\game\turfs\floors\desert.dm" +#include "code\game\turfs\floors\exterior.dm" +#include "code\game\turfs\walls\r_wall.dm" +#include "code\game\turfs\walls\wall_icon.dm" +#include "code\game\turfs\walls\wall_types.dm" +#include "code\game\turfs\walls\walls.dm" +#include "code\game\verbs\atom_verbs.dm" +#include "code\game\verbs\ooc.dm" +#include "code\game\verbs\preferences.dm" +#include "code\game\verbs\records.dm" +#include "code\game\verbs\who.dm" +#include "code\js\byjax.dm" +#include "code\js\menus.dm" +#include "code\modules\trigger.dm" +#include "code\modules\admin\admin.dm" +#include "code\modules\admin\admin_ranks.dm" +#include "code\modules\admin\admin_verbs.dm" +#include "code\modules\admin\banjob.dm" +#include "code\modules\admin\create_mob.dm" +#include "code\modules\admin\create_object.dm" +#include "code\modules\admin\create_turf.dm" +#include "code\modules\admin\fax_templates.dm" +#include "code\modules\admin\holder2.dm" +#include "code\modules\admin\IsBanned.dm" +#include "code\modules\admin\NewBan.dm" +#include "code\modules\admin\player_notes.dm" +#include "code\modules\admin\server_verbs.dm" +#include "code\modules\admin\stickyban.dm" +#include "code\modules\admin\STUI.dm" +#include "code\modules\admin\ToRban.dm" +#include "code\modules\admin\player_panel\player_action.dm" +#include "code\modules\admin\player_panel\player_panel.dm" +#include "code\modules\admin\player_panel\actions\antag.dm" +#include "code\modules\admin\player_panel\actions\fun.dm" +#include "code\modules\admin\player_panel\actions\general.dm" +#include "code\modules\admin\player_panel\actions\physical.dm" +#include "code\modules\admin\player_panel\actions\punish.dm" +#include "code\modules\admin\player_panel\actions\transform.dm" +#include "code\modules\admin\tabs\admin_tab.dm" +#include "code\modules\admin\tabs\debug_tab.dm" +#include "code\modules\admin\tabs\event_tab.dm" +#include "code\modules\admin\tabs\round_tab.dm" +#include "code\modules\admin\tabs\server_tab.dm" +#include "code\modules\admin\topic\topic.dm" +#include "code\modules\admin\topic\topic_ahelps.dm" +#include "code\modules\admin\topic\topic_autoresponses.dm" +#include "code\modules\admin\topic\topic_chems.dm" +#include "code\modules\admin\topic\topic_events.dm" +#include "code\modules\admin\topic\topic_inview.dm" +#include "code\modules\admin\topic\topic_teleports.dm" +#include "code\modules\admin\topic\topic_vehicles.dm" +#include "code\modules\admin\verbs\adminhelp.dm" +#include "code\modules\admin\verbs\adminjump.dm" +#include "code\modules\admin\verbs\adminpm.dm" +#include "code\modules\admin\verbs\autoreplace.dm" +#include "code\modules\admin\verbs\construct_env.dm" +#include "code\modules\admin\verbs\custom_event.dm" +#include "code\modules\admin\verbs\custom_paper.dm" +#include "code\modules\admin\verbs\deadsay.dm" +#include "code\modules\admin\verbs\debug.dm" +#include "code\modules\admin\verbs\freeforghosts.dm" +#include "code\modules\admin\verbs\getlogs.dm" +#include "code\modules\admin\verbs\load_event_level.dm" +#include "code\modules\admin\verbs\map_template_loadverb.dm" +#include "code\modules\admin\verbs\massmodvar.dm" +#include "code\modules\admin\verbs\mob_verbs.dm" +#include "code\modules\admin\verbs\modifyvariables.dm" +#include "code\modules\admin\verbs\mooc.dm" +#include "code\modules\admin\verbs\noclip.dm" +#include "code\modules\admin\verbs\playsound.dm" +#include "code\modules\admin\verbs\pray.dm" +#include "code\modules\admin\verbs\randomverbs.dm" +#include "code\modules\admin\verbs\SDQL.dm" +#include "code\modules\admin\verbs\SDQL_2.dm" +#include "code\modules\admin\verbs\SDQL_2_parser.dm" +#include "code\modules\admin\verbs\select_equipment.dm" +#include "code\modules\admin\verbs\shuttlepanel.dm" +#include "code\modules\admin\verbs\varedit.dm" +#include "code\modules\admin\verbs\xooc.dm" +#include "code\modules\admin\verbs\yooc.dm" +#include "code\modules\almayer\machinery.dm" +#include "code\modules\animations\animation_library.dm" +#include "code\modules\assembly\assembly.dm" +#include "code\modules\assembly\helpers.dm" +#include "code\modules\assembly\holder.dm" +#include "code\modules\assembly\igniter.dm" +#include "code\modules\assembly\infrared.dm" +#include "code\modules\assembly\mousetrap.dm" +#include "code\modules\assembly\proximity.dm" +#include "code\modules\assembly\signaller.dm" +#include "code\modules\assembly\timer.dm" +#include "code\modules\assembly\voice.dm" +#include "code\modules\asset_cache\asset_cache_client.dm" +#include "code\modules\asset_cache\asset_cache_item.dm" +#include "code\modules\asset_cache\asset_list.dm" +#include "code\modules\asset_cache\asset_list_items.dm" +#include "code\modules\asset_cache\transports\asset_transport.dm" +#include "code\modules\character_traits\character_trait.dm" +#include "code\modules\character_traits\languages.dm" +#include "code\modules\character_traits\skills.dm" +#include "code\modules\clans\clan.dm" +#include "code\modules\clans\client.dm" +#include "code\modules\clans\rank.dm" +#include "code\modules\clans\ship.dm" +#include "code\modules\client\client_defines.dm" +#include "code\modules\client\client_procs.dm" +#include "code\modules\client\country_flags.dm" +#include "code\modules\client\player_details.dm" +#include "code\modules\client\preferences.dm" +#include "code\modules\client\preferences_factions.dm" +#include "code\modules\client\preferences_gear.dm" +#include "code\modules\client\preferences_savefile.dm" +#include "code\modules\client\preferences_toggles.dm" +#include "code\modules\client\statbrowser_options.dm" +#include "code\modules\client\tgui_macro.dm" +#include "code\modules\client\verbs\reset_held_keys.dm" +#include "code\modules\clothing\clothing.dm" +#include "code\modules\clothing\clothing_accessories.dm" +#include "code\modules\clothing\clothing_helpers.dm" +#include "code\modules\clothing\officer_stuff.dm" +#include "code\modules\clothing\glasses\glasses.dm" +#include "code\modules\clothing\glasses\hud.dm" +#include "code\modules\clothing\glasses\meson.dm" +#include "code\modules\clothing\glasses\night.dm" +#include "code\modules\clothing\glasses\thermal.dm" +#include "code\modules\clothing\gloves\boom_glove.dm" +#include "code\modules\clothing\gloves\color.dm" +#include "code\modules\clothing\gloves\marine_gloves.dm" +#include "code\modules\clothing\gloves\miscellaneous.dm" +#include "code\modules\clothing\head\collectable.dm" +#include "code\modules\clothing\head\hardhat.dm" +#include "code\modules\clothing\head\head.dm" +#include "code\modules\clothing\head\helmet.dm" +#include "code\modules\clothing\head\jobs.dm" +#include "code\modules\clothing\head\misc.dm" +#include "code\modules\clothing\head\misc_special.dm" +#include "code\modules\clothing\head\soft_caps.dm" +#include "code\modules\clothing\masks\breath.dm" +#include "code\modules\clothing\masks\gasmask.dm" +#include "code\modules\clothing\masks\miscellaneous.dm" +#include "code\modules\clothing\shoes\colour.dm" +#include "code\modules\clothing\shoes\magboots.dm" +#include "code\modules\clothing\shoes\marine_shoes.dm" +#include "code\modules\clothing\shoes\miscellaneous.dm" +#include "code\modules\clothing\spacesuits\breaches.dm" +#include "code\modules\clothing\spacesuits\captain.dm" +#include "code\modules\clothing\spacesuits\miscellaneous.dm" +#include "code\modules\clothing\spacesuits\spacesuits.dm" +#include "code\modules\clothing\spacesuits\void.dm" +#include "code\modules\clothing\suits\alien.dm" +#include "code\modules\clothing\suits\armor.dm" +#include "code\modules\clothing\suits\bio.dm" +#include "code\modules\clothing\suits\jobs.dm" +#include "code\modules\clothing\suits\labcoat.dm" +#include "code\modules\clothing\suits\marine_armor.dm" +#include "code\modules\clothing\suits\marine_coat.dm" +#include "code\modules\clothing\suits\miscellaneous.dm" +#include "code\modules\clothing\suits\storage.dm" +#include "code\modules\clothing\suits\utility.dm" +#include "code\modules\clothing\under\color.dm" +#include "code\modules\clothing\under\gimmick.dm" +#include "code\modules\clothing\under\marine_uniform.dm" +#include "code\modules\clothing\under\miscellaneous.dm" +#include "code\modules\clothing\under\rank_pins.dm" +#include "code\modules\clothing\under\shorts.dm" +#include "code\modules\clothing\under\ties.dm" +#include "code\modules\clothing\under\under.dm" +#include "code\modules\clothing\under\jobs\civilian.dm" +#include "code\modules\clothing\under\jobs\engineering.dm" +#include "code\modules\clothing\under\jobs\medsci.dm" +#include "code\modules\clothing\under\jobs\security.dm" +#include "code\modules\cm_aliens\Ovipositor.dm" +#include "code\modules\cm_aliens\weeds.dm" +#include "code\modules\cm_aliens\XenoStructures.dm" +#include "code\modules\cm_aliens\structures\construction_node.dm" +#include "code\modules\cm_aliens\structures\egg.dm" +#include "code\modules\cm_aliens\structures\fruit.dm" +#include "code\modules\cm_aliens\structures\special_structure.dm" +#include "code\modules\cm_aliens\structures\trap.dm" +#include "code\modules\cm_aliens\structures\tunnel.dm" +#include "code\modules\cm_aliens\structures\xeno_structures_boilertrap.dm" +#include "code\modules\cm_aliens\structures\special\egg_morpher.dm" +#include "code\modules\cm_aliens\structures\special\evo_pod.dm" +#include "code\modules\cm_aliens\structures\special\hive_cluster.dm" +#include "code\modules\cm_aliens\structures\special\pred_nest.dm" +#include "code\modules\cm_aliens\structures\special\pylon_core.dm" +#include "code\modules\cm_aliens\structures\special\recovery_node.dm" +#include "code\modules\cm_aliens\structures\special\spawn_pool.dm" +#include "code\modules\cm_marines\anti_air.dm" +#include "code\modules\cm_marines\codebook.dm" +#include "code\modules\cm_marines\Donor_Items.dm" +#include "code\modules\cm_marines\dropship_ammo.dm" +#include "code\modules\cm_marines\dropship_equipment.dm" +#include "code\modules\cm_marines\marines_consoles.dm" +#include "code\modules\cm_marines\NonLethalRestraints.dm" +#include "code\modules\cm_marines\orbital_cannon.dm" +#include "code\modules\cm_marines\overwatch.dm" +#include "code\modules\cm_marines\shuttle_backend.dm" +#include "code\modules\cm_marines\smartgun_mount.dm" +#include "code\modules\cm_marines\specialist.dm" +#include "code\modules\cm_marines\vehicle_part_fabricator.dm" +#include "code\modules\cm_marines\equipment\gear.dm" +#include "code\modules\cm_marines\equipment\grenade_packets.dm" +#include "code\modules\cm_marines\equipment\guncases.dm" +#include "code\modules\cm_marines\equipment\kit_boxes.dm" +#include "code\modules\cm_marines\equipment\maps.dm" +#include "code\modules\cm_marines\equipment\weapons.dm" +#include "code\modules\cm_marines\equipment\mortar\mortar_shells.dm" +#include "code\modules\cm_marines\equipment\mortar\mortars.dm" +#include "code\modules\cm_phone\internal_phone.dm" +#include "code\modules\cm_phone\phone.dm" +#include "code\modules\cm_preds\_yaut_defines.dm" +#include "code\modules\cm_preds\falcon.dm" +#include "code\modules\cm_preds\huntdata.dm" +#include "code\modules\cm_preds\smartdisc.dm" +#include "code\modules\cm_preds\thrall_items.dm" +#include "code\modules\cm_preds\thrall_procs.dm" +#include "code\modules\cm_preds\yaut_bracers.dm" +#include "code\modules\cm_preds\yaut_hudprocs.dm" +#include "code\modules\cm_preds\yaut_items.dm" +#include "code\modules\cm_preds\yaut_machines.dm" +#include "code\modules\cm_preds\yaut_mask.dm" +#include "code\modules\cm_preds\yaut_procs.dm" +#include "code\modules\cm_preds\yaut_shield.dm" +#include "code\modules\cm_preds\yaut_weapons.dm" +#include "code\modules\cm_tech\hologram.dm" +#include "code\modules\cm_tech\droppod\droppod.dm" +#include "code\modules\cm_tech\droppod\equipment.dm" +#include "code\modules\cm_tech\droppod\gear_access_point.dm" +#include "code\modules\cm_tech\droppod\lz_effect.dm" +#include "code\modules\cm_tech\droppod\marine.dm" +#include "code\modules\cm_tech\implements\adv_weapon.dm" +#include "code\modules\cm_tech\implements\ammo_kits.dm" +#include "code\modules\cm_tech\implements\armor.dm" +#include "code\modules\cm_tech\implements\czsp.dm" +#include "code\modules\cm_tech\implements\engi_czsp.dm" +#include "code\modules\cm_tech\implements\implants.dm" +#include "code\modules\cm_tech\implements\medical_czsp.dm" +#include "code\modules\cm_tech\implements\railgun.dm" +#include "code\modules\cm_tech\implements\rev_jelly.dm" +#include "code\modules\cm_tech\implements\stims.dm" +#include "code\modules\cm_tech\implements\tank.dm" +#include "code\modules\cm_tech\implements\xeno_handler.dm" +#include "code\modules\cm_tech\resources\landmark.dm" +#include "code\modules\cm_tech\resources\resource.dm" +#include "code\modules\customitems\item_spawning.dm" +#include "code\modules\decorators\admin_runtime_decorator.dm" +#include "code\modules\decorators\cassette_decorator.dm" +#include "code\modules\decorators\christmas.dm" +#include "code\modules\decorators\halloween.dm" +#include "code\modules\decorators\mass_xeno_decorator.dm" +#include "code\modules\decorators\weapon_decorator.dm" +#include "code\modules\decorators\weapon_map_decorator.dm" +#include "code\modules\defenses\bell_tower.dm" +#include "code\modules\defenses\defenses.dm" +#include "code\modules\defenses\handheld.dm" +#include "code\modules\defenses\planted_flag.dm" +#include "code\modules\defenses\sentry.dm" +#include "code\modules\defenses\sentry_flamer.dm" +#include "code\modules\defenses\tesla_coil.dm" +#include "code\modules\desert_dam\filtration\consoles.dm" +#include "code\modules\desert_dam\filtration\filtration.dm" +#include "code\modules\desert_dam\filtration\floodgates.dm" +#include "code\modules\desert_dam\filtration\structures.dm" +#include "code\modules\desert_dam\motion_sensor\sensortower.dm" +#include "code\modules\desert_dam\sandstorm\sandstorm.dm" +#include "code\modules\destilery\main.dm" +#include "code\modules\droppod\container_droppod.dm" +#include "code\modules\droppod\droppod_ui.dm" +#include "code\modules\dropships\attach_points\attach_point.dm" +#include "code\modules\dropships\attach_points\templates.dm" +#include "code\modules\dropships\cas\fire_mission_record.dm" +#include "code\modules\economy\Accounts.dm" +#include "code\modules\economy\Accounts_DB.dm" +#include "code\modules\economy\ATM.dm" +#include "code\modules\economy\cash.dm" +#include "code\modules\economy\economy_misc.dm" +#include "code\modules\economy\EFTPOS.dm" +#include "code\modules\economy\TradeDestinations.dm" +#include "code\modules\events\comms_blackout.dm" +#include "code\modules\flufftext\Dreaming.dm" +#include "code\modules\flufftext\Hallucination.dm" +#include "code\modules\flufftext\Japanese.dm" +#include "code\modules\flufftext\TextFilters.dm" +#include "code\modules\gear_presets\_select_equipment.dm" +#include "code\modules\gear_presets\agents.dm" +#include "code\modules\gear_presets\clf.dm" +#include "code\modules\gear_presets\colonist.dm" +#include "code\modules\gear_presets\corpses.dm" +#include "code\modules\gear_presets\dust_raider.dm" +#include "code\modules\gear_presets\fun.dm" +#include "code\modules\gear_presets\other.dm" +#include "code\modules\gear_presets\pmc.dm" +#include "code\modules\gear_presets\survivors.dm" +#include "code\modules\gear_presets\synths.dm" +#include "code\modules\gear_presets\upp.dm" +#include "code\modules\gear_presets\uscm.dm" +#include "code\modules\gear_presets\uscm_event.dm" +#include "code\modules\gear_presets\uscm_medical.dm" +#include "code\modules\gear_presets\uscm_police.dm" +#include "code\modules\gear_presets\uscm_ship.dm" +#include "code\modules\gear_presets\whiteout.dm" +#include "code\modules\gear_presets\wo.dm" +#include "code\modules\gear_presets\wy.dm" +#include "code\modules\gear_presets\yautja.dm" +#include "code\modules\hydroponics\grown_inedible.dm" +#include "code\modules\hydroponics\hydro_tools.dm" +#include "code\modules\hydroponics\hydro_tray.dm" +#include "code\modules\hydroponics\seed_datums.dm" +#include "code\modules\hydroponics\seed_machines.dm" +#include "code\modules\hydroponics\seeds.dm" +#include "code\modules\hydroponics\vines.dm" +#include "code\modules\keybindings\bindings_atom.dm" +#include "code\modules\keybindings\bindings_client.dm" +#include "code\modules\keybindings\focus.dm" +#include "code\modules\keybindings\setup.dm" +#include "code\modules\law\incident.dm" +#include "code\modules\law\law.dm" +#include "code\modules\law\laws\capital_crime.dm" +#include "code\modules\law\laws\major_crime.dm" +#include "code\modules\law\laws\minor_crime.dm" +#include "code\modules\law\laws\optional.dm" +#include "code\modules\mapping\map_template.dm" +#include "code\modules\mapping\preloader.dm" +#include "code\modules\mapping\reader.dm" +#include "code\modules\mapping\verify.dm" +#include "code\modules\mapping\space_management\space_level.dm" +#include "code\modules\mapping\space_management\space_reservation.dm" +#include "code\modules\mapping\space_management\traits.dm" +#include "code\modules\mapping\space_management\zlevel_manager.dm" +#include "code\modules\maps\dmm_suite.dm" +#include "code\modules\maps\reader.dm" +#include "code\modules\mapview\generation.dm" +#include "code\modules\mentor\looc_toggle.dm" +#include "code\modules\mentor\mentorhelp.dm" +#include "code\modules\mob\death.dm" +#include "code\modules\mob\emote.dm" +#include "code\modules\mob\hear_say.dm" +#include "code\modules\mob\holder.dm" +#include "code\modules\mob\inventory.dm" +#include "code\modules\mob\login.dm" +#include "code\modules\mob\logout.dm" +#include "code\modules\mob\mob.dm" +#include "code\modules\mob\mob_defines.dm" +#include "code\modules\mob\mob_grab.dm" +#include "code\modules\mob\mob_helpers.dm" +#include "code\modules\mob\mob_movement.dm" +#include "code\modules\mob\mob_status_procs.dm" +#include "code\modules\mob\mob_transformation_simple.dm" +#include "code\modules\mob\mob_verbs.dm" +#include "code\modules\mob\say.dm" +#include "code\modules\mob\transform_procs.dm" +#include "code\modules\mob\typing_indicator.dm" +#include "code\modules\mob\update_icons.dm" +#include "code\modules\mob\dead\death.dm" +#include "code\modules\mob\dead\observer\logout.dm" +#include "code\modules\mob\dead\observer\observer.dm" +#include "code\modules\mob\dead\observer\say.dm" +#include "code\modules\mob\language\language.dm" +#include "code\modules\mob\language\language_handling.dm" +#include "code\modules\mob\language\languages.dm" +#include "code\modules\mob\living\blood.dm" +#include "code\modules\mob\living\damage_procs.dm" +#include "code\modules\mob\living\living.dm" +#include "code\modules\mob\living\living_defense.dm" +#include "code\modules\mob\living\living_defines.dm" +#include "code\modules\mob\living\living_health_procs.dm" +#include "code\modules\mob\living\living_helpers.dm" +#include "code\modules\mob\living\living_powers.dm" +#include "code\modules\mob\living\living_verbs.dm" +#include "code\modules\mob\living\login.dm" +#include "code\modules\mob\living\logout.dm" +#include "code\modules\mob\living\say.dm" +#include "code\modules\mob\living\brain\brain.dm" +#include "code\modules\mob\living\brain\brain_item.dm" +#include "code\modules\mob\living\brain\death.dm" +#include "code\modules\mob\living\brain\emote.dm" +#include "code\modules\mob\living\brain\life.dm" +#include "code\modules\mob\living\brain\login.dm" +#include "code\modules\mob\living\brain\MMI.dm" +#include "code\modules\mob\living\brain\say.dm" +#include "code\modules\mob\living\carbon\carbon.dm" +#include "code\modules\mob\living\carbon\carbon_defines.dm" +#include "code\modules\mob\living\carbon\carbon_helpers.dm" +#include "code\modules\mob\living\carbon\give.dm" +#include "code\modules\mob\living\carbon\inventory.dm" +#include "code\modules\mob\living\carbon\update_icons.dm" +#include "code\modules\mob\living\carbon\hellhound\death.dm" +#include "code\modules\mob\living\carbon\hellhound\emote.dm" +#include "code\modules\mob\living\carbon\hellhound\hellhound.dm" +#include "code\modules\mob\living\carbon\hellhound\life.dm" +#include "code\modules\mob\living\carbon\hellhound\update_icons.dm" +#include "code\modules\mob\living\carbon\human\death.dm" +#include "code\modules\mob\living\carbon\human\emote.dm" +#include "code\modules\mob\living\carbon\human\examine.dm" +#include "code\modules\mob\living\carbon\human\human.dm" +#include "code\modules\mob\living\carbon\human\human_abilities.dm" +#include "code\modules\mob\living\carbon\human\human_attackhand.dm" +#include "code\modules\mob\living\carbon\human\human_damage.dm" +#include "code\modules\mob\living\carbon\human\human_defense.dm" +#include "code\modules\mob\living\carbon\human\human_defines.dm" +#include "code\modules\mob\living\carbon\human\human_dummy.dm" +#include "code\modules\mob\living\carbon\human\human_helpers.dm" +#include "code\modules\mob\living\carbon\human\human_movement.dm" +#include "code\modules\mob\living\carbon\human\human_powers.dm" +#include "code\modules\mob\living\carbon\human\inventory.dm" +#include "code\modules\mob\living\carbon\human\life.dm" +#include "code\modules\mob\living\carbon\human\login.dm" +#include "code\modules\mob\living\carbon\human\logout.dm" +#include "code\modules\mob\living\carbon\human\say.dm" +#include "code\modules\mob\living\carbon\human\unarmed_attacks.dm" +#include "code\modules\mob\living\carbon\human\update_icons.dm" +#include "code\modules\mob\living\carbon\human\whisper.dm" +#include "code\modules\mob\living\carbon\human\life\handle_breath.dm" +#include "code\modules\mob\living\carbon\human\life\handle_chemicals_in_body.dm" +#include "code\modules\mob\living\carbon\human\life\handle_disabilities.dm" +#include "code\modules\mob\living\carbon\human\life\handle_environment.dm" +#include "code\modules\mob\living\carbon\human\life\handle_fire.dm" +#include "code\modules\mob\living\carbon\human\life\handle_grabbed.dm" +#include "code\modules\mob\living\carbon\human\life\handle_organs.dm" +#include "code\modules\mob\living\carbon\human\life\handle_pulse.dm" +#include "code\modules\mob\living\carbon\human\life\handle_regular_hud_updates.dm" +#include "code\modules\mob\living\carbon\human\life\handle_regular_status_updates.dm" +#include "code\modules\mob\living\carbon\human\life\handle_stasis_bag.dm" +#include "code\modules\mob\living\carbon\human\life\life_helpers.dm" +#include "code\modules\mob\living\carbon\human\species\human.dm" +#include "code\modules\mob\living\carbon\human\species\monkey.dm" +#include "code\modules\mob\living\carbon\human\species\species.dm" +#include "code\modules\mob\living\carbon\human\species\synthetic.dm" +#include "code\modules\mob\living\carbon\human\species\yautja.dm" +#include "code\modules\mob\living\carbon\human\species\zombie.dm" +#include "code\modules\mob\living\carbon\xenomorph\Abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\ability_macros.dm" +#include "code\modules\mob\living\carbon\xenomorph\attack_alien.dm" +#include "code\modules\mob\living\carbon\xenomorph\damage_procs.dm" +#include "code\modules\mob\living\carbon\xenomorph\death.dm" +#include "code\modules\mob\living\carbon\xenomorph\egg_item.dm" +#include "code\modules\mob\living\carbon\xenomorph\Embryo.dm" +#include "code\modules\mob\living\carbon\xenomorph\emote.dm" +#include "code\modules\mob\living\carbon\xenomorph\Evolution.dm" +#include "code\modules\mob\living\carbon\xenomorph\Facehuggers.dm" +#include "code\modules\mob\living\carbon\xenomorph\hive_faction.dm" +#include "code\modules\mob\living\carbon\xenomorph\hive_status.dm" +#include "code\modules\mob\living\carbon\xenomorph\life.dm" +#include "code\modules\mob\living\carbon\xenomorph\login.dm" +#include "code\modules\mob\living\carbon\xenomorph\mark_menu.dm" +#include "code\modules\mob\living\carbon\xenomorph\Powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\resin_constructions.dm" +#include "code\modules\mob\living\carbon\xenomorph\say.dm" +#include "code\modules\mob\living\carbon\xenomorph\update_icons.dm" +#include "code\modules\mob\living\carbon\xenomorph\xeno_defines.dm" +#include "code\modules\mob\living\carbon\xenomorph\xeno_helpers.dm" +#include "code\modules\mob\living\carbon\xenomorph\xeno_tackle_counter.dm" +#include "code\modules\mob\living\carbon\xenomorph\xeno_verbs.dm" +#include "code\modules\mob\living\carbon\xenomorph\XenoAttacks.dm" +#include "code\modules\mob\living\carbon\xenomorph\Xenomorph.dm" +#include "code\modules\mob\living\carbon\xenomorph\XenoMutatorSets.dm" +#include "code\modules\mob\living\carbon\xenomorph\XenoOverwatch.dm" +#include "code\modules\mob\living\carbon\xenomorph\XenoProcs.dm" +#include "code\modules\mob\living\carbon\xenomorph\XenoUpgrade.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\ability_helper_procs.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\ability_macro_framework.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\general_abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\general_ability_macros.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\general_powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\xeno_action.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\boiler\boiler_abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\boiler\boiler_macros.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\boiler\boiler_powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\burrower\burrower_abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\burrower\burrower_macros.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\burrower\burrower_powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\carrier\carrier_abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\carrier\carrier_macros.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\carrier\carrier_powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\crusher\crusher_abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\crusher\crusher_macros.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\crusher\crusher_powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\defender\defender_abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\defender\defender_macros.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\defender\defender_powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\hivelord\hivelord_abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\hivelord\hivelord_powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\lurker\lurker_abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\lurker\lurker_macros.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\lurker\lurker_powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\praetorian\praetorian_abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\praetorian\praetorian_macros.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\praetorian\praetorian_powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\predalien\predalien_abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\predalien\predalien_powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\queen\queen_abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\queen\queen_macros.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\queen\queen_powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\ravager\ravager_abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\ravager\ravager_macros.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\ravager\ravager_powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\runner\runner_abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\runner\runner_macros.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\runner\runner_powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\sentinel\sentinel_abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\sentinel\sentinel_macros.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\sentinel\sentinel_powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\spitter\spitter_abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\spitter\spitter_macros.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\spitter\spitter_powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\warrior\warrior_abilities.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\warrior\warrior_macros.dm" +#include "code\modules\mob\living\carbon\xenomorph\abilities\warrior\warrior_powers.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Boiler.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Burrower.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Carrier.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Crusher.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Defender.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Drone.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Hivelord.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Larva.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Lurker.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Praetorian.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Predalien.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Queen.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Ravager.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Runner.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Sentinel.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Spitter.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Warrior.dm" +#include "code\modules\mob\living\carbon\xenomorph\items\iff_tag.dm" +#include "code\modules\mob\living\carbon\xenomorph\mutators\behavior_delegate.dm" +#include "code\modules\mob\living\carbon\xenomorph\mutators\mutator.dm" +#include "code\modules\mob\living\carbon\xenomorph\mutators\strains\boiler\trapper.dm" +#include "code\modules\mob\living\carbon\xenomorph\mutators\strains\carrier\eggsac.dm" +#include "code\modules\mob\living\carbon\xenomorph\mutators\strains\carrier\shaman.dm" +#include "code\modules\mob\living\carbon\xenomorph\mutators\strains\defender\steel_crest.dm" +#include "code\modules\mob\living\carbon\xenomorph\mutators\strains\drone\gardener.dm" +#include "code\modules\mob\living\carbon\xenomorph\mutators\strains\drone\healer.dm" +#include "code\modules\mob\living\carbon\xenomorph\mutators\strains\hivelord\resin_whisperer.dm" +#include "code\modules\mob\living\carbon\xenomorph\mutators\strains\praetorian\dancer.dm" +#include "code\modules\mob\living\carbon\xenomorph\mutators\strains\praetorian\oppressor.dm" +#include "code\modules\mob\living\carbon\xenomorph\mutators\strains\praetorian\vanguard.dm" +#include "code\modules\mob\living\carbon\xenomorph\mutators\strains\praetorian\warden.dm" +#include "code\modules\mob\living\carbon\xenomorph\mutators\strains\ravager\berserker.dm" +#include "code\modules\mob\living\carbon\xenomorph\mutators\strains\ravager\hedgehog.dm" +#include "code\modules\mob\living\carbon\xenomorph\mutators\strains\runner\acid.dm" +#include "code\modules\mob\living\carbon\xenomorph\mutators\strains\warrior\boxer.dm" +#include "code\modules\mob\living\silicon\alarm.dm" +#include "code\modules\mob\living\silicon\death.dm" +#include "code\modules\mob\living\silicon\login.dm" +#include "code\modules\mob\living\silicon\say.dm" +#include "code\modules\mob\living\silicon\silicon.dm" +#include "code\modules\mob\living\silicon\ai\ai.dm" +#include "code\modules\mob\living\silicon\ai\death.dm" +#include "code\modules\mob\living\silicon\ai\examine.dm" +#include "code\modules\mob\living\silicon\ai\life.dm" +#include "code\modules\mob\living\silicon\ai\login.dm" +#include "code\modules\mob\living\silicon\ai\logout.dm" +#include "code\modules\mob\living\silicon\ai\say.dm" +#include "code\modules\mob\living\silicon\ai\freelook\cameranet.dm" +#include "code\modules\mob\living\silicon\ai\freelook\chunk.dm" +#include "code\modules\mob\living\silicon\ai\freelook\eye.dm" +#include "code\modules\mob\living\silicon\ai\freelook\read_me.dm" +#include "code\modules\mob\living\silicon\ai\freelook\update_triggers.dm" +#include "code\modules\mob\living\silicon\decoy\decoy.dm" +#include "code\modules\mob\living\silicon\robot\analyzer.dm" +#include "code\modules\mob\living\silicon\robot\component.dm" +#include "code\modules\mob\living\silicon\robot\death.dm" +#include "code\modules\mob\living\silicon\robot\emote.dm" +#include "code\modules\mob\living\silicon\robot\examine.dm" +#include "code\modules\mob\living\silicon\robot\inventory.dm" +#include "code\modules\mob\living\silicon\robot\life.dm" +#include "code\modules\mob\living\silicon\robot\login.dm" +#include "code\modules\mob\living\silicon\robot\photos.dm" +#include "code\modules\mob\living\silicon\robot\robot.dm" +#include "code\modules\mob\living\silicon\robot\robot_damage.dm" +#include "code\modules\mob\living\silicon\robot\robot_items.dm" +#include "code\modules\mob\living\silicon\robot\robot_movement.dm" +#include "code\modules\mob\living\silicon\robot\wires.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone_abilities.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone_console.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone_damage.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone_items.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone_manufacturer.dm" +#include "code\modules\mob\living\simple_animal\bat.dm" +#include "code\modules\mob\living\simple_animal\parrot.dm" +#include "code\modules\mob\living\simple_animal\simple_animal.dm" +#include "code\modules\mob\living\simple_animal\slug.dm" +#include "code\modules\mob\living\simple_animal\friendly\bunny.dm" +#include "code\modules\mob\living\simple_animal\friendly\cat.dm" +#include "code\modules\mob\living\simple_animal\friendly\corgi.dm" +#include "code\modules\mob\living\simple_animal\friendly\crab.dm" +#include "code\modules\mob\living\simple_animal\friendly\farm_animals.dm" +#include "code\modules\mob\living\simple_animal\friendly\lizard.dm" +#include "code\modules\mob\living\simple_animal\friendly\mouse.dm" +#include "code\modules\mob\living\simple_animal\friendly\spiderbot.dm" +#include "code\modules\mob\living\simple_animal\friendly\tomato.dm" +#include "code\modules\mob\living\simple_animal\hostile\alien.dm" +#include "code\modules\mob\living\simple_animal\hostile\bear.dm" +#include "code\modules\mob\living\simple_animal\hostile\carp.dm" +#include "code\modules\mob\living\simple_animal\hostile\creature.dm" +#include "code\modules\mob\living\simple_animal\hostile\giant_spider.dm" +#include "code\modules\mob\living\simple_animal\hostile\hostile.dm" +#include "code\modules\mob\living\simple_animal\hostile\pirate.dm" +#include "code\modules\mob\living\simple_animal\hostile\russian.dm" +#include "code\modules\mob\living\simple_animal\hostile\tree.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\drone.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm" +#include "code\modules\mob\new_player\body_type.dm" +#include "code\modules\mob\new_player\ethnicity.dm" +#include "code\modules\mob\new_player\login.dm" +#include "code\modules\mob\new_player\logout.dm" +#include "code\modules\mob\new_player\new_player.dm" +#include "code\modules\mob\new_player\preferences_setup.dm" +#include "code\modules\mob\new_player\sprite_accessories.dm" +#include "code\modules\movement\movement.dm" +#include "code\modules\movement\pass_flags_container.dm" +#include "code\modules\movement\launching\launching.dm" +#include "code\modules\nano\nanoexternal.dm" +#include "code\modules\nano\nanomanager.dm" +#include "code\modules\nano\nanomapgen.dm" +#include "code\modules\nano\nanoui.dm" +#include "code\modules\nightmare\nmcontext.dm" +#include "code\modules\nightmare\nmreader.dm" +#include "code\modules\nightmare\nmnodes\flow.dm" +#include "code\modules\nightmare\nmnodes\mapload.dm" +#include "code\modules\nightmare\nmnodes\nmnode.dm" +#include "code\modules\nightmare\nmnodes\scenario.dm" +#include "code\modules\nightmare\nmtasks\mapinit.dm" +#include "code\modules\nightmare\nmtasks\mapload.dm" +#include "code\modules\nightmare\nmtasks\multi.dm" +#include "code\modules\nightmare\nmtasks\nmtask.dm" +#include "code\modules\nightmare\nmtasks\sync.dm" +#include "code\modules\organs\limb_objects.dm" +#include "code\modules\organs\limbs.dm" +#include "code\modules\organs\organ_alien.dm" +#include "code\modules\organs\organ_internal.dm" +#include "code\modules\organs\organ_objects.dm" +#include "code\modules\organs\pain.dm" +#include "code\modules\organs\wound.dm" +#include "code\modules\paperwork\carbonpaper.dm" +#include "code\modules\paperwork\clipboard.dm" +#include "code\modules\paperwork\filingcabinet.dm" +#include "code\modules\paperwork\folders.dm" +#include "code\modules\paperwork\paper.dm" +#include "code\modules\paperwork\paper_bundle.dm" +#include "code\modules\paperwork\paperbin.dm" +#include "code\modules\paperwork\photocopier.dm" +#include "code\modules\paperwork\photography.dm" +#include "code\modules\paperwork\silicon_photography.dm" +#include "code\modules\power\apc.dm" +#include "code\modules\power\batteryrack.dm" +#include "code\modules\power\breaker_box.dm" +#include "code\modules\power\cable.dm" +#include "code\modules\power\cable_heavyduty.dm" +#include "code\modules\power\cell.dm" +#include "code\modules\power\fractal_reactor.dm" +#include "code\modules\power\generator.dm" +#include "code\modules\power\gravitygenerator.dm" +#include "code\modules\power\lighting.dm" +#include "code\modules\power\port_gen.dm" +#include "code\modules\power\power.dm" +#include "code\modules\power\power_monitor.dm" +#include "code\modules\power\powernet.dm" +#include "code\modules\power\profiling.dm" +#include "code\modules\power\smes.dm" +#include "code\modules\power\smes_construction.dm" +#include "code\modules\power\terminal.dm" +#include "code\modules\power\turbine.dm" +#include "code\modules\projectiles\ammo_datums.dm" +#include "code\modules\projectiles\ammunition.dm" +#include "code\modules\projectiles\full_auto.dm" +#include "code\modules\projectiles\gun.dm" +#include "code\modules\projectiles\gun_attachables.dm" +#include "code\modules\projectiles\gun_helpers.dm" +#include "code\modules\projectiles\projectile.dm" +#include "code\modules\projectiles\targeting.dm" +#include "code\modules\projectiles\guns\boltaction.dm" +#include "code\modules\projectiles\guns\energy.dm" +#include "code\modules\projectiles\guns\lever_action.dm" +#include "code\modules\projectiles\guns\misc.dm" +#include "code\modules\projectiles\guns\pistols.dm" +#include "code\modules\projectiles\guns\revolvers.dm" +#include "code\modules\projectiles\guns\rifles.dm" +#include "code\modules\projectiles\guns\shotguns.dm" +#include "code\modules\projectiles\guns\smgs.dm" +#include "code\modules\projectiles\guns\souto.dm" +#include "code\modules\projectiles\guns\specialist.dm" +#include "code\modules\projectiles\guns\flamer\flamer.dm" +#include "code\modules\projectiles\guns\flamer\flameshape.dm" +#include "code\modules\projectiles\magazines\flamer.dm" +#include "code\modules\projectiles\magazines\lever_action.dm" +#include "code\modules\projectiles\magazines\misc.dm" +#include "code\modules\projectiles\magazines\pistols.dm" +#include "code\modules\projectiles\magazines\revolvers.dm" +#include "code\modules\projectiles\magazines\rifles.dm" +#include "code\modules\projectiles\magazines\sentries.dm" +#include "code\modules\projectiles\magazines\shotguns.dm" +#include "code\modules\projectiles\magazines\smgs.dm" +#include "code\modules\projectiles\magazines\specialist.dm" +#include "code\modules\reagents\Chemistry-Colours.dm" +#include "code\modules\reagents\Chemistry-Generator.dm" +#include "code\modules\reagents\Chemistry-Holder.dm" +#include "code\modules\reagents\Chemistry-Reactions.dm" +#include "code\modules\reagents\Chemistry-Readme.dm" +#include "code\modules\reagents\Chemistry-Reagents.dm" +#include "code\modules\reagents\Chemistry-Vessel.dm" +#include "code\modules\reagents\chemical_research\Chemical-Research.dm" +#include "code\modules\reagents\chemical_research\generated_reagents.dm" +#include "code\modules\reagents\chemistry_machinery\acid_harness.dm" +#include "code\modules\reagents\chemistry_machinery\autodispenser.dm" +#include "code\modules\reagents\chemistry_machinery\centrifuge.dm" +#include "code\modules\reagents\chemistry_machinery\chem_dispenser.dm" +#include "code\modules\reagents\chemistry_machinery\chem_master.dm" +#include "code\modules\reagents\chemistry_machinery\chem_simulator.dm" +#include "code\modules\reagents\chemistry_machinery\chem_storage.dm" +#include "code\modules\reagents\chemistry_machinery\pandemic.dm" +#include "code\modules\reagents\chemistry_machinery\reagent_analyzer.dm" +#include "code\modules\reagents\chemistry_machinery\reagent_grinder.dm" +#include "code\modules\reagents\chemistry_properties\chem_property.dm" +#include "code\modules\reagents\chemistry_properties\prop_negative.dm" +#include "code\modules\reagents\chemistry_properties\prop_neutral.dm" +#include "code\modules\reagents\chemistry_properties\prop_positive.dm" +#include "code\modules\reagents\chemistry_properties\prop_special.dm" +#include "code\modules\reagents\chemistry_reactions\food_drink.dm" +#include "code\modules\reagents\chemistry_reactions\medical.dm" +#include "code\modules\reagents\chemistry_reactions\other.dm" +#include "code\modules\reagents\chemistry_reagents\alcohol.dm" +#include "code\modules\reagents\chemistry_reagents\drink.dm" +#include "code\modules\reagents\chemistry_reagents\food.dm" +#include "code\modules\reagents\chemistry_reagents\medical.dm" +#include "code\modules\reagents\chemistry_reagents\other.dm" +#include "code\modules\reagents\chemistry_reagents\toxin.dm" +#include "code\modules\recycling\conveyor2.dm" +#include "code\modules\recycling\disposal-construction.dm" +#include "code\modules\recycling\disposal.dm" +#include "code\modules\recycling\recycler.dm" +#include "code\modules\recycling\sortingmachinery.dm" +#include "code\modules\round_recording\debug_verbs.dm" +#include "code\modules\round_recording\hooks.dm" +#include "code\modules\round_recording\round_recorder.dm" +#include "code\modules\security_levels\keycard_authentication.dm" +#include "code\modules\security_levels\security_levels.dm" +#include "code\modules\shuttle\computer.dm" +#include "code\modules\shuttle\docking.dm" +#include "code\modules\shuttle\lifeboats.dm" +#include "code\modules\shuttle\on_move.dm" +#include "code\modules\shuttle\ripple.dm" +#include "code\modules\shuttle\shuttle.dm" +#include "code\modules\shuttle\shuttle_rotate.dm" +#include "code\modules\shuttle\vehicle_elevator.dm" +#include "code\modules\shuttles\escape_pods.dm" +#include "code\modules\shuttles\marine_ferry.dm" +#include "code\modules\shuttles\monorail_console.dm" +#include "code\modules\shuttles\shuttle.dm" +#include "code\modules\shuttles\shuttle_console.dm" +#include "code\modules\shuttles\shuttle_ert.dm" +#include "code\modules\shuttles\shuttle_ferry.dm" +#include "code\modules\shuttles\shuttle_supply.dm" +#include "code\modules\shuttles\shuttles_multi.dm" +#include "code\modules\sorokyne\sorokyne_cold_water.dm" +#include "code\modules\statusbar\statusbar.dm" +#include "code\modules\surgery\amputation.dm" +#include "code\modules\surgery\bones.dm" +#include "code\modules\surgery\brainrepair.dm" +#include "code\modules\surgery\chestburster.dm" +#include "code\modules\surgery\eye.dm" +#include "code\modules\surgery\face.dm" +#include "code\modules\surgery\generic.dm" +#include "code\modules\surgery\headreattach.dm" +#include "code\modules\surgery\implant.dm" +#include "code\modules\surgery\internal_bleeding.dm" +#include "code\modules\surgery\organs_internal.dm" +#include "code\modules\surgery\robolimbs.dm" +#include "code\modules\surgery\robotic_organs_internal.dm" +#include "code\modules\surgery\surgery_initiator.dm" +#include "code\modules\surgery\surgery_procedure.dm" +#include "code\modules\surgery\surgery_steps.dm" +#include "code\modules\surgery\surgery_toggle.dm" +#include "code\modules\surgery\tendwounds.dm" +#include "code\modules\teleporters\teleporter.dm" +#include "code\modules\teleporters\teleporter_admin_verbs.dm" +#include "code\modules\teleporters\teleporter_console.dm" +#include "code\modules\teleporters\teleporter_landmarks.dm" +#include "code\modules\test\test_case.dm" +#include "code\modules\test\test_manager.dm" +#include "code\modules\test\test_verbs.dm" +#include "code\modules\test\maps\test_no_blocked_doors.dm" +#include "code\modules\test\maps\test_no_blocked_windows.dm" +#include "code\modules\test\maps\test_no_space_inside.dm" +#include "code\modules\test\maps\test_pipes_connected.dm" +#include "code\modules\test\maps\test_set_maps.dm" +#include "code\modules\test\sprites\test_hair_sprites.dm" +#include "code\modules\test\sprites\test_plating_sprites.dm" +#include "code\modules\test\sprites\test_set_sprites.dm" +#include "code\modules\test\testenv\test_area.dm" +#include "code\modules\test\testenv\test_environment.dm" +#include "code\modules\test\testenv\environments\tank_gallery.dm" +#include "code\modules\test\testenv\environments\example\envstring.dm" +#include "code\modules\tgchat\cm_shims.dm" +#include "code\modules\tgchat\message.dm" +#include "code\modules\tgchat\to_chat.dm" +#include "code\modules\tgui\external.dm" +#include "code\modules\tgui\states.dm" +#include "code\modules\tgui\tgui.dm" +#include "code\modules\tgui\tgui_alert.dm" +#include "code\modules\tgui\tgui_input_list.dm" +#include "code\modules\tgui\tgui_window.dm" +#include "code\modules\tgui\states\admin.dm" +#include "code\modules\tgui\states\always.dm" +#include "code\modules\tgui\states\deep_inventory.dm" +#include "code\modules\tgui\states\default.dm" +#include "code\modules\tgui\states\self.dm" +#include "code\modules\tgui\states\xeno.dm" +#include "code\modules\tgui_panel\audio.dm" +#include "code\modules\tgui_panel\external.dm" +#include "code\modules\tgui_panel\telemetry.dm" +#include "code\modules\tgui_panel\tgui_panel.dm" +#include "code\modules\vehicles\cargo_train.dm" +#include "code\modules\vehicles\powerloader.dm" +#include "code\modules\vehicles\train.dm" +#include "code\modules\vehicles\vehicle.dm" +#include "code\modules\vehicles\vehicle_misc_objects.dm" +#include "code\modules\vehicles\apc\apc.dm" +#include "code\modules\vehicles\apc\apc_command.dm" +#include "code\modules\vehicles\apc\apc_medical.dm" +#include "code\modules\vehicles\apc\interior.dm" +#include "code\modules\vehicles\hardpoints\hardpoint.dm" +#include "code\modules\vehicles\hardpoints\armor\armor.dm" +#include "code\modules\vehicles\hardpoints\armor\ballistic.dm" +#include "code\modules\vehicles\hardpoints\armor\caustic.dm" +#include "code\modules\vehicles\hardpoints\armor\concussive.dm" +#include "code\modules\vehicles\hardpoints\armor\paladin.dm" +#include "code\modules\vehicles\hardpoints\armor\snowplow.dm" +#include "code\modules\vehicles\hardpoints\hardpoint_ammo\autocannon_ammo.dm" +#include "code\modules\vehicles\hardpoints\hardpoint_ammo\cupola_ammo.dm" +#include "code\modules\vehicles\hardpoints\hardpoint_ammo\dualcannon_ammo.dm" +#include "code\modules\vehicles\hardpoints\hardpoint_ammo\firing_port_weapon_ammo.dm" +#include "code\modules\vehicles\hardpoints\hardpoint_ammo\flare_launcher_ammo.dm" +#include "code\modules\vehicles\hardpoints\hardpoint_ammo\gl_ammo.dm" +#include "code\modules\vehicles\hardpoints\hardpoint_ammo\hardpoint_ammo.dm" +#include "code\modules\vehicles\hardpoints\hardpoint_ammo\ltb_ammo.dm" +#include "code\modules\vehicles\hardpoints\hardpoint_ammo\minigun_ammo.dm" +#include "code\modules\vehicles\hardpoints\hardpoint_ammo\primary_flamer_ammo.dm" +#include "code\modules\vehicles\hardpoints\hardpoint_ammo\secondary_flamer_ammo.dm" +#include "code\modules\vehicles\hardpoints\hardpoint_ammo\smoke_ammo.dm" +#include "code\modules\vehicles\hardpoints\hardpoint_ammo\tow_ammo.dm" +#include "code\modules\vehicles\hardpoints\holder\holder.dm" +#include "code\modules\vehicles\hardpoints\holder\tank_turret.dm" +#include "code\modules\vehicles\hardpoints\primary\autocannon.dm" +#include "code\modules\vehicles\hardpoints\primary\dual_cannon.dm" +#include "code\modules\vehicles\hardpoints\primary\flamer.dm" +#include "code\modules\vehicles\hardpoints\primary\ltb.dm" +#include "code\modules\vehicles\hardpoints\primary\minigun.dm" +#include "code\modules\vehicles\hardpoints\primary\primary.dm" +#include "code\modules\vehicles\hardpoints\secondary\cupola.dm" +#include "code\modules\vehicles\hardpoints\secondary\flamer.dm" +#include "code\modules\vehicles\hardpoints\secondary\frontal_cannon.dm" +#include "code\modules\vehicles\hardpoints\secondary\grenade_launcher.dm" +#include "code\modules\vehicles\hardpoints\secondary\secondary.dm" +#include "code\modules\vehicles\hardpoints\secondary\tow.dm" +#include "code\modules\vehicles\hardpoints\special\firing_port_weapon.dm" +#include "code\modules\vehicles\hardpoints\special\special.dm" +#include "code\modules\vehicles\hardpoints\support\artillery.dm" +#include "code\modules\vehicles\hardpoints\support\flare.dm" +#include "code\modules\vehicles\hardpoints\support\iwsa.dm" +#include "code\modules\vehicles\hardpoints\support\overdrive.dm" +#include "code\modules\vehicles\hardpoints\support\support.dm" +#include "code\modules\vehicles\hardpoints\wheels\apc_wheels.dm" +#include "code\modules\vehicles\hardpoints\wheels\locomotion.dm" +#include "code\modules\vehicles\hardpoints\wheels\treads.dm" +#include "code\modules\vehicles\hardpoints\wheels\van_wheels.dm" +#include "code\modules\vehicles\interior\areas.dm" +#include "code\modules\vehicles\interior\interior.dm" +#include "code\modules\vehicles\interior\interior_hull.dm" +#include "code\modules\vehicles\interior\interior_landmarks.dm" +#include "code\modules\vehicles\interior\interior_manager.dm" +#include "code\modules\vehicles\interior\interactable\doors.dm" +#include "code\modules\vehicles\interior\interactable\seats.dm" +#include "code\modules\vehicles\interior\interactable\vehicle_locker.dm" +#include "code\modules\vehicles\interior\interactable\viewports.dm" +#include "code\modules\vehicles\interior\interactable\weapons_loader.dm" +#include "code\modules\vehicles\interior\objects\fancy_locker.dm" +#include "code\modules\vehicles\multitile\multitile.dm" +#include "code\modules\vehicles\multitile\multitile_bump.dm" +#include "code\modules\vehicles\multitile\multitile_hardpoints.dm" +#include "code\modules\vehicles\multitile\multitile_interaction.dm" +#include "code\modules\vehicles\multitile\multitile_movement.dm" +#include "code\modules\vehicles\multitile\multitile_verbs.dm" +#include "code\modules\vehicles\tank\interior.dm" +#include "code\modules\vehicles\tank\tank.dm" +#include "code\modules\vehicles\van\interior.dm" +#include "code\modules\vehicles\van\van.dm" +#include "code\modules\vox\vox.dm" +#include "code\modules\vox\vox_tgui.dm" +#include "code\modules\vox\vox_sounds\vox.dm" +#include "code\modules\vox\vox_sounds\vox_military.dm" +#include "interface\interface.dm" +#include "interface\skin.dmf" +#include "maps\_basemap.dm" +// END_INCLUDE diff --git a/code/__DEFINES/callback.dm b/code/__DEFINES/callback.dm index 8a252b3c8f8a..bb0dae22857e 100644 --- a/code/__DEFINES/callback.dm +++ b/code/__DEFINES/callback.dm @@ -3,5 +3,24 @@ #define INVOKE_ASYNC ImmediateInvokeAsync #define INVOKE_NEXT_TICK(arguments...) addtimer(CALLBACK(##arguments), 1) +///Per the DM reference, spawn(-1) will execute the spawned code immediately until a block is met. +#define MAKE_SPAWN_ACT_LIKE_WAITFOR -1 +///Create a codeblock that will not block the callstack if a block is met. +#define ASYNC spawn(MAKE_SPAWN_ACT_LIKE_WAITFOR) + +#define INVOKE_ASYNC_DIRECT(proc_owner, proc_path, proc_arguments...) \ + if ((proc_owner) == GLOBAL_PROC) { \ + ASYNC { \ + call(proc_path)(##proc_arguments); \ + }; \ + } \ + else { \ + ASYNC { \ + /* Written with `0 ||` to avoid the compiler seeing call("string"), and thinking it's a deprecated DLL */ \ + call(0 || proc_owner, proc_path)(##proc_arguments); \ + }; \ + } + + #define TRUE_CALLBACK CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_callback_true)) #define FALSE_CALLBACK CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_callback_false)) diff --git a/code/__DEFINES/sounds.dm b/code/__DEFINES/sounds.dm index 35f388f351ea..c6246ca8847a 100644 --- a/code/__DEFINES/sounds.dm +++ b/code/__DEFINES/sounds.dm @@ -9,7 +9,7 @@ #define VOLUME_AMB 2 #define VOLUME_ADM 3 #define VOLUME_LOBBY 4 -#define VOLUME_ANNOUNCEMENT 5 +#define VOLUME_TTS 5 #define MUFFLE_LOW -500 #define MUFFLE_MEDIUM -2000 diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 88496c79d630..c0d0f1054e2e 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -130,6 +130,7 @@ #define SS_INIT_LIGHTING 10 #define SS_INIT_LAW 6 #define SS_INIT_FZ_TRANSITIONS 5 +#define SS_INIT_TTS 4.5 #define SS_INIT_PROJECTILES 4.1 #define SS_INIT_ATOMS 4 #define SS_INIT_DECORATOR 3.7 @@ -164,6 +165,7 @@ #define SS_PRIORITY_TICKER 200 #define SS_PRIORITY_NIGHTMARE 180 #define SS_PRIORITY_QUADTREE 160 +#define SS_PRIORITY_TTS 157 #define SS_PRIORITY_CHAT 155 #define SS_PRIORITY_STATPANEL 154 #define SS_PRIORITY_CELLAUTO 152 diff --git a/code/__DEFINES/tts.dm b/code/__DEFINES/tts.dm index 7b5bdc24d562..73660173e668 100644 --- a/code/__DEFINES/tts.dm +++ b/code/__DEFINES/tts.dm @@ -9,3 +9,6 @@ #define TTS_FILTER_RADIO "radio" ///TTS filter to activate a silicon effect on speech. #define TTS_FILTER_SILICON "silicon" + + +#define TTS_FILTER_XENO @{"[0:a] asplit [out0][out2]; [out0] asetrate=%SAMPLE_RATE%*0.8,aresample=%SAMPLE_RATE%,atempo=1/0.8,aformat=channel_layouts=mono [p0]; [out2] asetrate=%SAMPLE_RATE%*1.2,aresample=%SAMPLE_RATE%,atempo=1/1.2,aformat=channel_layouts=mono[p2]; [p0][0][p2] amix=inputs=3"} diff --git a/code/controllers/subsystem/tts.dm b/code/controllers/subsystem/tts.dm index 178ac701dae9..f5ed949714b3 100644 --- a/code/controllers/subsystem/tts.dm +++ b/code/controllers/subsystem/tts.dm @@ -39,6 +39,12 @@ SUBSYSTEM_DEF(tts) /// 7 seconds (or whatever the value of message_timeout is) to receive back a response. var/average_tts_messages_time = 0 +/datum/controller/subsystem/tts/vv_edit_var(var_name, var_value) + // tts being enabled depends on whether it actually exists + if(NAMEOF(src, tts_enabled) == var_name) + return FALSE + return ..() + /datum/controller/subsystem/tts/stat_entry(msg) msg = "Active:[length(in_process_http_messages)]|Standby:[length(queued_http_messages?.L)]|Avg:[average_tts_messages_time]" return ..() @@ -46,6 +52,11 @@ SUBSYSTEM_DEF(tts) /proc/cmp_word_length_asc(datum/tts_request/a, datum/tts_request/b) return length(b.message) - length(a.message) +/datum/controller/subsystem/tts/Shutdown() + if (fexists("tmp/tts/")) + fdel("tmp/tts/") + + /// Establishes (or re-establishes) a connection to the TTS server and updates the list of available speakers. /// This is blocking, so be careful when calling. /datum/controller/subsystem/tts/proc/establish_connection_to_tts() @@ -86,50 +97,42 @@ SUBSYSTEM_DEF(tts) /datum/controller/subsystem/tts/Initialize() if(!CONFIG_GET(string/tts_http_url)) - return + return SS_INIT_NO_NEED - queued_http_messages = new /datum/heap(/proc/cmp_word_length_asc)) + queued_http_messages = new /datum/heap(GLOBAL_PROC_REF(cmp_word_length_asc)) max_concurrent_requests = CONFIG_GET(number/tts_max_concurrent_requests) if(!establish_connection_to_tts()) - var/msg = "Failed to initialize [name] subsystem within [time] second[time == 1 ? "" : "s"]!" - to_chat(world, "[msg]") - return - return ..() + return SS_INIT_FAILURE + return SS_INIT_SUCCESS -/datum/controller/subsystem/tts/proc/play_tts(target, list/listeners, sound/audio, sound/audio_blips, datum/language/language, range = 7, volume_offset = 0) +/datum/controller/subsystem/tts/proc/play_tts(target, list/listeners, sound/audio, sound/audio_blips, datum/language/language, range = 7, volume_offset = 0, directional = TRUE) var/turf/turf_source = get_turf(target) if(!turf_source) return - - var/channel = get_free_channel() - for(var/mob/listening_mob in listeners | SSmobs.dead_players_by_zlevel[turf_source.z])//observers always hear through walls + var/datum/sound_template/template = get_sound_template( + audio, + 60 + volume_offset, + vol_cat = VOLUME_TTS + ) + if(directional) + template.x = turf_source.x + template.y = turf_source.y + template.z = turf_source.z + for(var/mob/listening_mob as anything in listeners)//observers always hear through walls if(QDELING(listening_mob)) stack_trace("TTS tried to play a sound to a deleted mob.") continue - var/volume_to_play_at = listening_mob.client?.prefs.read_preference(/datum/preference/numeric/sound_tts_volume) - var/tts_pref = listening_mob.client?.prefs.read_preference(/datum/preference/choiced/sound_tts) - if(volume_to_play_at == 0 || (tts_pref == TTS_SOUND_OFF)) + var/tts_pref = listening_mob.client?.prefs.tts_mode + if(tts_pref == TTS_SOUND_OFF) continue var/sound_volume = ((listening_mob == target)? 60 : 85) + volume_offset - sound_volume = sound_volume * (volume_to_play_at / 100) var/audio_to_use = (tts_pref == TTS_SOUND_BLIPS) ? audio_blips : audio - if(!listening_mob.say_understands(language)) + if(!listening_mob.say_understands(null, language)) continue - - if(get_dist(listening_mob, turf_source) <= range) - var/datum/sound_template/template = get_sound_template(audio_to_use, turf_source, volume_to_play_at, ) - listening_mob.playsound_local( - turf_source, - vol = sound_volume, - falloff_exponent = SOUND_FALLOFF_EXPONENT, - channel = channel, - pressure_affected = TRUE, - sound_to_use = audio_to_use, - max_distance = SOUND_RANGE, - falloff_distance = SOUND_DEFAULT_FALLOFF_DISTANCE, - distance_multiplier = 1, - use_reverb = TRUE - ) + template.file = audio_to_use + template.volume = sound_volume + if(!directional || get_dist(listening_mob, turf_source) <= range) + listening_mob.client?.soundOutput.process_sound(template) // Need to wait for all HTTP requests to complete here because of a rustg crash bug that causes crashes when dd restarts whilst HTTP requests are ongoing. /datum/controller/subsystem/tts/Shutdown() @@ -241,7 +244,9 @@ SUBSYSTEM_DEF(tts) else if(current_target.when_to_play < world.time) audio_file = new(current_target.audio_file) audio_file_blips = new(current_target.audio_file_blips) - play_tts(tts_target, current_target.listeners, audio_file, audio_file_blips, current_target.language, current_target.message_range, current_target.volume_offset) + if(current_target.start_noise) + playsound(tts_target, current_target.start_noise, 5, TRUE) + play_tts(tts_target, current_target.listeners, audio_file, audio_file_blips, current_target.language, current_target.message_range, current_target.volume_offset, current_target.directional) if(length(data) != 1) var/datum/tts_request/next_target = data[2] next_target.when_to_play = world.time + current_target.audio_length @@ -254,10 +259,9 @@ SUBSYSTEM_DEF(tts) queued_tts_messages[tts_target] += arbritrary_delay SHIFT_DATA_ARRAY(queued_tts_messages, tts_target, data) - #undef TTS_ARBRITRARY_DELAY -/datum/controller/subsystem/tts/proc/queue_tts_message(datum/target, message, datum/language/language, speaker, filter, list/listeners, local = FALSE, message_range = 7, volume_offset = 0, pitch = 0, special_filters = "") +/datum/controller/subsystem/tts/proc/queue_tts_message(datum/target, message, datum/language/language, speaker, filter, list/listeners, local = FALSE, message_range = 7, volume_offset = 0, pitch = 0, special_filters = "", start_noise = null, directional = TRUE) if(!tts_enabled) return @@ -286,7 +290,7 @@ SUBSYSTEM_DEF(tts) var/file_name_blips = "tmp/tts/[identifier]_blips.ogg" request.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/tts?voice=[speaker]&identifier=[identifier]&filter=[url_encode(filter)]&pitch=[pitch]&special_filters=[url_encode(special_filters)]", json_encode(list("text" = shell_scrubbed_input)), headers, file_name) request_blips.prepare(RUSTG_HTTP_METHOD_GET, "[CONFIG_GET(string/tts_http_url)]/tts-blips?voice=[speaker]&identifier=[identifier]&filter=[url_encode(filter)]&pitch=[pitch]&special_filters=[url_encode(special_filters)]", json_encode(list("text" = shell_scrubbed_input)), headers, file_name_blips) - var/datum/tts_request/current_request = new /datum/tts_request(identifier, request, request_blips, shell_scrubbed_input, target, local, language, message_range, volume_offset, listeners, pitch) + var/datum/tts_request/current_request = new /datum/tts_request(identifier, request, request_blips, shell_scrubbed_input, target, local, language, message_range, volume_offset, listeners, pitch, start_noise, directional) var/list/player_queued_tts_messages = queued_tts_messages[target] if(!player_queued_tts_messages) player_queued_tts_messages = list() @@ -338,9 +342,13 @@ SUBSYSTEM_DEF(tts) var/use_blips = FALSE /// What's the pitch adjustment? var/pitch = 0 + /// Sfx to play when the voice is ready to play. + var/start_noise + /// Whether this TTS is directional or not. If set to FALSE, message_range does not matter. + var/directional = TRUE -/datum/tts_request/New(identifier, datum/http_request/request, datum/http_request/request_blips, message, target, local, datum/language/language, message_range, volume_offset, list/listeners, pitch) +/datum/tts_request/New(identifier, datum/http_request/request, datum/http_request/request_blips, message, target, local, datum/language/language, message_range, volume_offset, list/listeners, pitch, start_noise, directional) . = ..() src.identifier = identifier src.request = request @@ -353,14 +361,16 @@ SUBSYSTEM_DEF(tts) src.volume_offset = volume_offset src.listeners = listeners src.pitch = pitch + src.start_noise = start_noise + src.directional = directional start_time = world.time /datum/tts_request/proc/start_requests() if(istype(target, /client)) var/client/current_client = target - use_blips = (current_client?.prefs.read_preference(/datum/preference/choiced/sound_tts) == TTS_SOUND_BLIPS) + use_blips = (current_client?.prefs.tts_mode == TTS_SOUND_BLIPS) else if(istype(target, /mob)) - use_blips = (target.client?.prefs.read_preference(/datum/preference/choiced/sound_tts) == TTS_SOUND_BLIPS) + use_blips = (target.client?.prefs.tts_mode == TTS_SOUND_BLIPS) if(local) if(use_blips) request_blips.begin_async() diff --git a/code/datums/soundOutput.dm b/code/datums/soundOutput.dm index cc7334d2cb98..a9dd852adf96 100644 --- a/code/datums/soundOutput.dm +++ b/code/datums/soundOutput.dm @@ -211,3 +211,8 @@ set name = "Adjust Volume LobbyMusic" set category = "Preferences.Sound" adjust_volume_prefs(VOLUME_LOBBY, "Set the volume for Lobby Music", SOUND_CHANNEL_LOBBY) + +/client/verb/adjust_volume_tts() + set name = "Adjust Volume TTS" + set category = "Preferences.Sound" + adjust_volume_prefs(VOLUME_TTS, "Set the volume for TTS", 0) diff --git a/code/game/sound.dm b/code/game/sound.dm index de54fd6a6de3..9ae46ffce4af 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -36,12 +36,7 @@ //channel: use this only when you want to force the sound to play on a specific channel //status: the regular 4 sound flags //falloff: max range till sound volume starts dropping as distance increases - -/proc/playsound(atom/source, sound/soundin, vol = 100, vary = FALSE, sound_range, vol_cat = VOLUME_SFX, channel = 0, status, falloff = 1, list/echo, y_s_offset, x_s_offset) - if(isarea(source)) - error("[source] is an area and is trying to make the sound: [soundin]") - return FALSE - +/proc/get_sound_template(sound/soundin, vol = 100, vary = FALSE, vol_cat = VOLUME_SFX, channel = 0, status, falloff = 1, list/echo, y_s_offset, x_s_offset) var/datum/sound_template/template = new() if(istype(soundin)) template.file = soundin.file @@ -71,7 +66,7 @@ if(isarea(source)) error("[source] is an area and is trying to make the sound: [soundin]") return FALSE - var/datum/sound_template/S = get_sound_template(soundin, vol, vary, vol_cat, channel, status, falloff, echo, y_s_offset, x_s_offset) + var/datum/sound_template/template = get_sound_template(soundin, vol, vary, vol_cat, channel, status, falloff, echo, y_s_offset, x_s_offset) if(!sound_range) sound_range = floor(0.25*vol) //if no specific range, the max range is equal to a quarter of the volume. @@ -110,7 +105,7 @@ //This is the replacement for playsound_local. Use this for sending sounds directly to a client /proc/playsound_client(client/client, sound/soundin, atom/origin, vol = 100, random_freq, vol_cat = VOLUME_SFX, channel = 0, status, list/echo, y_s_offset, x_s_offset) - SSsound.queue(get_sound_template(soundin, origin, vol, random_freq, vol_cat, channel, status, echo, y_s_offset, x_s_offset), list(C)) + SSsound.queue(get_sound_template(soundin, vol, random_freq, vol_cat, channel, status, 1, echo, y_s_offset, x_s_offset), list(client)) /// Plays sound to all mobs that are map-level contents of an area /proc/playsound_area(area/A, soundin, vol = 100, channel = 0, status, vol_cat = VOLUME_SFX, list/echo, y_s_offset, x_s_offset) diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm index 2facce7c3a59..505289264bba 100644 --- a/code/modules/client/client_defines.dm +++ b/code/modules/client/client_defines.dm @@ -42,7 +42,7 @@ var/played = 0 var/midi_silenced = 0 var/datum/soundOutput/soundOutput - var/list/volume_preferences = list(1, 0.5, 1, 0.6)//Game, music, admin midis, lobby music + var/list/volume_preferences = list(1, 0.5, 1, 0.6, 1)//Game, music, admin midis, lobby music, TTS //////////// //SECURITY// diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 910ebe8e9d8c..f2fb1f67083f 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -205,11 +205,11 @@ GLOBAL_LIST_INIT(bgstate_options, list( var/playtime_perks = TRUE // TTS - var/voice = "" + var/voice = "Random" var/voice_pitch = 0 - var/xeno_voice = "" - var/xeno_pitch = "" - var/synth_voice = "" + var/xeno_voice = "Random" + var/xeno_pitch = 0 + var/synth_voice = "Random" var/synth_pitch = 0 var/tts_mode = TTS_SOUND_ENABLED @@ -257,6 +257,8 @@ GLOBAL_LIST_INIT(bgstate_options, list( /// If this client has auto observe enabled, used by /datum/orbit_menu var/auto_observe = TRUE + COOLDOWN_DECLARE(tts_test_cooldown) + /datum/preferences/New(client/C) key_bindings = deep_copy_list(GLOB.hotkey_keybinding_list_by_key) // give them default keybinds and update their movement keys macros = new(C, src) @@ -346,8 +348,10 @@ GLOBAL_LIST_INIT(bgstate_options, list( dat += "

Physical Information:" dat += "®

" - dat += "Voice: [voice]
" - dat += "Voice Pitch: [voice]
" + if(SStts.tts_enabled) + dat += "Voice: [voice]
" + dat += "Voice Pitch: [voice_pitch]
" + dat += "Hear Voice
" dat += "Age: [age]
" dat += "Gender: [gender == MALE ? "Male" : "Female"]
" dat += "Skin Color: [skin_color]
" @@ -456,6 +460,10 @@ GLOBAL_LIST_INIT(bgstate_options, list( var/display_postfix = xeno_postfix ? xeno_postfix : "------" dat += "Xeno prefix: [display_prefix]
" dat += "Xeno postfix: [display_postfix]
" + if(SStts.tts_enabled) + dat += "Voice: [xeno_voice]
" + dat += "Voice Pitch: [xeno_pitch]
" + dat += "Hear Voice
" dat += "Enable Playtime Perks: [playtime_perks? "Yes" : "No"]
" dat += "Default Xeno Night Vision Level: [xeno_vision_level_pref]
" @@ -514,6 +522,10 @@ GLOBAL_LIST_INIT(bgstate_options, list( dat += "
" dat += "

Synthetic Settings:

" dat += "Synthetic Name: [synthetic_name]
" + if(SStts.tts_enabled) + dat += "Voice: [synth_voice]
" + dat += "Voice Pitch: [synth_pitch]
" + dat += "Hear Voice
" dat += "Synthetic Type: [synthetic_type]
" dat += "Synthetic Whitelist Status: [synth_status]
" dat += "
" @@ -595,6 +607,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( dat += "Ghost Hivemind: [(toggles_chat & CHAT_GHOSTHIVEMIND) ? "Show Hivemind" : "Hide Hivemind"]
" dat += "Abovehead Chat: [lang_chat_disabled ? "Hide" : "Show"]
" dat += "Abovehead Emotes: [(toggles_langchat & LANGCHAT_SEE_EMOTES) ? "Show" : "Hide"]
" + dat += "TTS Mode: [tts_mode]
" dat += "" dat += "
" @@ -1517,6 +1530,8 @@ GLOBAL_LIST_INIT(bgstate_options, list( if(new_age) age = max(min( floor(text2num(new_age)), AGE_MAX),AGE_MIN) if("voice", "synth_voice", "xeno_voice") + if(!SStts.tts_enabled) + return var/new_voice = tgui_input_list(user, "Choose your character's voice", "Voice selection", SStts.available_speakers) if(new_voice) switch(href_list["preference"]) @@ -1527,6 +1542,8 @@ GLOBAL_LIST_INIT(bgstate_options, list( if("xeno_voice") xeno_voice = new_voice if("voice_pitch", "synth_voice_pitch", "xeno_voice_pitch") + if(!SStts.tts_enabled) + return var/new_voice_pitch = input(user, "Choose your voice's pitch:\n([-12] to [12])", "Character Preferences") as num|null if(new_voice_pitch) switch(href_list["preference"]) @@ -1536,6 +1553,33 @@ GLOBAL_LIST_INIT(bgstate_options, list( synth_pitch = new_voice_pitch if("xeno_voice_pitch") xeno_pitch = new_voice_pitch + if("test_voice") + if(!SStts.tts_enabled) + return + if(!COOLDOWN_FINISHED(src, tts_test_cooldown)) + return + + COOLDOWN_START(src, tts_test_cooldown, 0.5 SECONDS) + var/target_voice + var/target_pitch + var/target_filter = "" + switch(href_list["target_voice"]) + if("human") + target_voice = voice + target_pitch = voice_pitch + if("synth") + target_voice = synth_voice + target_pitch = synth_pitch + if("xeno") + target_voice = xeno_voice + target_pitch = xeno_pitch + target_filter = TTS_FILTER_XENO + + if(!target_voice) + return + + INVOKE_ASYNC_DIRECT(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), user.client, "Hello, this is my voice.", speaker = target_voice, pitch = target_pitch, filter = target_filter, local = TRUE) + if("metadata") var/new_metadata = input(user, "Enter any information you'd like others to see, such as Roleplay-preferences:", "Game Preference" , metadata) as message|null if(new_metadata) @@ -1912,6 +1956,11 @@ GLOBAL_LIST_INIT(bgstate_options, list( if("langchat_emotes") toggles_langchat ^= LANGCHAT_SEE_EMOTES + if("tts_mode") + var/new_mode = tgui_input_list(user, "Select the new TTS mode for yourself.", "Set TTS mode", list(TTS_SOUND_ENABLED, TTS_SOUND_BLIPS, TTS_SOUND_OFF)) + if(new_mode) + tts_mode = new_mode + if("lang_chat_disabled") lang_chat_disabled = !lang_chat_disabled @@ -2111,6 +2160,9 @@ GLOBAL_LIST_INIT(bgstate_options, list( character.skin_color = skin_color character.body_type = body_type character.body_size = body_size + if(SStts.tts_enabled) + character.tts_voice = sanitize_inlist(voice, SStts.available_speakers, pick(SStts.available_speakers)) + character.tts_voice_pitch = voice_pitch character.r_eyes = r_eyes character.g_eyes = g_eyes diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index f383aade5932..b919791b007e 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -195,6 +195,7 @@ S["chat_display_preferences"] >> chat_display_preferences S["toggles_ghost"] >> toggles_ghost S["toggles_langchat"] >> toggles_langchat + S["tts_mode"] >> tts_mode S["toggles_sound"] >> toggles_sound S["toggle_prefs"] >> toggle_prefs S["dual_wield_pref"] >> dual_wield_pref @@ -220,6 +221,8 @@ S["xeno_prefix"] >> xeno_prefix S["xeno_postfix"] >> xeno_postfix + S["xeno_pitch"] >> xeno_pitch + S["xeno_voice"] >> xeno_voice S["xeno_name_ban"] >> xeno_name_ban S["playtime_perks"] >> playtime_perks S["xeno_vision_level_pref"] >> xeno_vision_level_pref @@ -229,6 +232,8 @@ S["pref_job_slots"] >> pref_job_slots S["synth_name"] >> synthetic_name + S["synth_voice"] >> synth_voice + S["synth_pitch"] >> synth_pitch S["synth_type"] >> synthetic_type S["pred_name"] >> predator_name S["pred_gender"] >> predator_gender @@ -338,6 +343,12 @@ custom_cursors = sanitize_integer(custom_cursors, FALSE, TRUE, TRUE) pref_special_job_options = sanitize_islist(pref_special_job_options, list()) pref_job_slots = sanitize_islist(pref_job_slots, list()) + if(SStts.tts_enabled) + synth_voice = sanitize_inlist(synth_voice, SStts.available_speakers, pick(SStts.available_speakers)) + xeno_voice = sanitize_inlist(xeno_voice, SStts.available_speakers, pick(SStts.available_speakers)) + synth_pitch = sanitize_integer(synth_pitch, -12, 12, 0) + xeno_pitch = sanitize_integer(xeno_pitch, -12, 12, 0) + tts_mode = sanitize_inlist(tts_mode, list(TTS_SOUND_ENABLED, TTS_SOUND_BLIPS, TTS_SOUND_OFF), TTS_SOUND_ENABLED) vars["fps"] = fps check_keybindings() @@ -397,6 +408,7 @@ S["chat_display_preferences"] << chat_display_preferences S["toggles_ghost"] << toggles_ghost S["toggles_langchat"] << toggles_langchat + S["tts_mode"] << tts_mode S["toggles_sound"] << toggles_sound S["toggle_prefs"] << toggle_prefs S["dual_wield_pref"] << dual_wield_pref @@ -413,6 +425,8 @@ S["xeno_prefix"] << xeno_prefix S["xeno_postfix"] << xeno_postfix + S["xeno_voice"] << xeno_voice + S["xeno_pitch"] << xeno_pitch S["xeno_name_ban"] << xeno_name_ban S["xeno_vision_level_pref"] << xeno_vision_level_pref S["playtime_perks"] << playtime_perks @@ -423,6 +437,8 @@ S["pref_job_slots"] << pref_job_slots S["synth_name"] << synthetic_name + S["synth_voice"] << synth_voice + S["synth_pitch"] << synth_pitch S["synth_type"] << synthetic_type S["pred_name"] << predator_name S["pred_gender"] << predator_gender @@ -491,6 +507,8 @@ S["body_size"] >> body_size S["language"] >> language S["spawnpoint"] >> spawnpoint + S["human_voice"] >> voice + S["human_pitch"] >> voice_pitch //colors to be consolidated into hex strings (requires some work with dna code) S["hair_red"] >> r_hair @@ -600,6 +618,9 @@ undershirt = sanitize_inlist(undershirt, gender == MALE ? GLOB.undershirt_m : GLOB.undershirt_f, initial(undershirt)) backbag = sanitize_integer(backbag, 1, length(GLOB.backbaglist), initial(backbag)) preferred_armor = sanitize_inlist(preferred_armor, GLOB.armor_style_list, "Random") + if(SStts.tts_enabled) + voice = sanitize_inlist(voice, SStts.available_speakers, pick(SStts.available_speakers)) + voice_pitch = sanitize_integer(voice_pitch, -12, 12, 0) //b_type = sanitize_text(b_type, initial(b_type)) alternate_option = sanitize_integer(alternate_option, 0, 3, initial(alternate_option)) @@ -665,6 +686,8 @@ S["underwear"] << underwear S["undershirt"] << undershirt S["backbag"] << backbag + S["human_voice"] << voice + S["human_pitch"] << voice_pitch //S["b_type"] << b_type S["spawnpoint"] << spawnpoint diff --git a/code/modules/gear_presets/synths.dm b/code/modules/gear_presets/synths.dm index db82e44ea890..dc8250fd2a9b 100644 --- a/code/modules/gear_presets/synths.dm +++ b/code/modules/gear_presets/synths.dm @@ -21,6 +21,9 @@ var/final_name = "David" if(new_human.client && new_human.client.prefs) final_name = new_human.client.prefs.synthetic_name + if(SStts.tts_enabled) + new_human.tts_voice = sanitize_inlist(new_human.client.prefs.synth_voice, SStts.available_speakers, pick(SStts.available_speakers)) + new_human.tts_voice_pitch = new_human.client.prefs.synth_pitch if(!final_name || final_name == "Undefined") final_name = "David" new_human.change_real_name(new_human, final_name) diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index eed2dce5f7a8..87fd274e4807 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -75,7 +75,7 @@ ////////////////////////////////////////////////////////////////// var/datum/caste_datum/caste // Used to extract determine ALL Xeno stats. var/speaking_key = "x" - var/speaking_noise = "alien_talk" + speaking_noise = "alien_talk" slash_verb = "slash" slashes_verb = "slashes" var/slash_sound = "alien_claw_flesh" @@ -346,6 +346,8 @@ /// If TRUE, the xeno cannot slash anything var/cannot_slash = FALSE + tts_voice_filter = TTS_FILTER_XENO + /mob/living/carbon/xenomorph/Initialize(mapload, mob/living/carbon/xenomorph/old_xeno, hivenumber) if(old_xeno && old_xeno.hivenumber) @@ -556,6 +558,14 @@ if(caste.fire_immunity & FIRE_IMMUNITY_XENO_FRENZY) . |= COMPONENT_XENO_FRENZY +/mob/living/carbon/xenomorph/proc/init_voice() + if(!client) + return + if(!SStts.tts_enabled) + return + tts_voice = sanitize_inlist(client.prefs?.xeno_voice, SStts.available_speakers, pick(SStts.available_speakers)) + tts_voice_pitch = client.prefs?.xeno_pitch + //Off-load this proc so it can be called freely //Since Xenos change names like they change shoes, we need somewhere to hammer in all those legos //We set their name first, then update their real_name AND their mind name @@ -581,6 +591,7 @@ if(client) name_client_prefix = "[(client.xeno_prefix||client.xeno_postfix) ? client.xeno_prefix : "XX"]-" name_client_postfix = client.xeno_postfix ? ("-"+client.xeno_postfix) : "" + init_voice() age_xeno() full_designation = "[name_client_prefix][nicknumber][name_client_postfix]" if(!HAS_TRAIT(src, TRAIT_NO_COLOR)) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm index 0cbb6bec8b35..597d9eb5e0cd 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm @@ -451,6 +451,7 @@ if(!nicknumber) generate_and_set_nicknumber() var/name_prefix = hive.prefix + init_voice() if(queen_aged) age_xeno() switch(age) diff --git a/code/modules/mob/living/carbon/xenomorph/say.dm b/code/modules/mob/living/carbon/xenomorph/say.dm index 9f99cdb45455..6025a4bb3c83 100644 --- a/code/modules/mob/living/carbon/xenomorph/say.dm +++ b/code/modules/mob/living/carbon/xenomorph/say.dm @@ -75,11 +75,9 @@ message += "." if(forced) - if(speaking_noise) - playsound(loc, speaking_noise, 25, 1) ..(message, speaking, verb, null, null, message_range, null) else - hivemind_talk(message) + hivemind_talk(message, speaking) /mob/living/carbon/xenomorph/say_understands(mob/other, datum/language/speaking = null) @@ -89,7 +87,7 @@ //General proc for hivemind. Lame, but effective. -/mob/living/carbon/xenomorph/proc/hivemind_talk(message) +/mob/living/carbon/xenomorph/proc/hivemind_talk(message, datum/language/speaking) if(HAS_TRAIT(src, TRAIT_HIVEMIND_INTERFERENCE)) to_chat(src, SPAN_WARNING("Our psychic connection has been temporarily disabled!")) return @@ -97,7 +95,10 @@ if(SEND_SIGNAL(src, COMSIG_XENO_TRY_HIVEMIND_TALK, message) & COMPONENT_OVERRIDE_HIVEMIND_TALK) return - hivemind_broadcast(message, hive) + var/list/listeners = hivemind_broadcast(message, hive) + if(listeners && (IS_XENO_LEADER(src) || isqueen(src))) + INVOKE_ASYNC_DIRECT(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), src, html_decode(message), speaking, tts_voice, tts_voice_filter, listeners, pitch = tts_voice_pitch, directional = FALSE) + /mob/living/carbon/proc/hivemind_broadcast(message, datum/hive_status/hive) if(!message || stat || !hive) @@ -116,6 +117,8 @@ var/ghostrend var/rendered + var/list/heard = list() + for (var/mob/S in GLOB.player_list) var/hear_hivemind = 0 if(ishuman(S)) @@ -153,4 +156,7 @@ rendered = SPAN_XENO("Hivemind, [src.name][overwatch_insert] hisses, '[message]'") S.show_message(rendered, SHOW_MESSAGE_AUDIBLE) + heard += S + + return heard diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 88bd8e09c386..b93d7ffa4876 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -47,6 +47,7 @@ var/custom_slashed_sound var/friendly = "nuzzles" var/wall_smash = 0 + var/speaking_noise //Emotes var/recent_audio_emote = FALSE diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 944d54d16106..63523d897e15 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -101,7 +101,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( return if(SEND_SIGNAL(src, COMSIG_LIVING_SPEAK, message, speaking, verb, alt_name, italics, message_range, speech_sound, sound_vol, nolog, message_mode) & COMPONENT_OVERRIDE_SPEAK) return - + var/raw_message = message message = process_chat_markup(message, list("~", "_")) for(var/dst=0; dst<=1; dst++) //Will run twice if src has a clone @@ -169,6 +169,10 @@ GLOBAL_LIST_INIT(department_radio_keys, list( langchat_speech(message, listening, speaking) for(var/mob/M as anything in listening) M.hear_say(message, verb, speaking, alt_name, italics, src, speech_sound, sound_vol) + + if(tts_voice && length(listening)) + INVOKE_ASYNC_DIRECT(SStts, TYPE_PROC_REF(/datum/controller/subsystem/tts, queue_tts_message), src, html_decode(raw_message), speaking, tts_voice, tts_voice_filter, listening, FALSE, message_range, 0, tts_voice_pitch, start_noise = speaking_noise) + overlays += speech_bubble addtimer(CALLBACK(src, PROC_REF(remove_speech_bubble), speech_bubble), 3 SECONDS) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 60b9cf07e653..d3693041c875 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -263,12 +263,11 @@ var/thinking_IC = FALSE /// Text to speech voice. Set to null if no voice. - var/voice + var/tts_voice /// Text to speech filter. Filter that gets applied when passed in. - var/voice_filter = "" + var/tts_voice_filter = "" /// Text to speech pitch. Used to determine the pitch of the voice. - var/voice_pitch = 0 - + var/tts_voice_pitch = 0 // contains /atom/movable/screen/alert only var/list/alerts = list() diff --git a/colonialmarines.dme b/colonialmarines.dme index 844fec5153ec..4da0138f05f8 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -113,6 +113,7 @@ #include "code\__DEFINES\tgs.dm" #include "code\__DEFINES\tgui.dm" #include "code\__DEFINES\traits.dm" +#include "code\__DEFINES\tts.dm" #include "code\__DEFINES\turf_flags.dm" #include "code\__DEFINES\turfs.dm" #include "code\__DEFINES\tutorial.dm" @@ -192,6 +193,7 @@ #include "code\__HELPERS\string_lists.dm" #include "code\__HELPERS\text.dm" #include "code\__HELPERS\traits.dm" +#include "code\__HELPERS\tts.dm" #include "code\__HELPERS\type2type.dm" #include "code\__HELPERS\unsorted.dm" #include "code\__HELPERS\verb_helpers.dm" diff --git a/config/example/game_options.txt b/config/example/game_options.txt index 0166b263a677..7f8578bf52f8 100644 --- a/config/example/game_options.txt +++ b/config/example/game_options.txt @@ -51,6 +51,20 @@ ALIEN_DELAY 0 METROID_DELAY 0 ANIMAL_DELAY 0 +### TTS ### + +## Link to a HTTP server that's been set up on a server. Docker-compose file can be found in tools/tts +#TTS_HTTP_URL http://localhost:5002 + +## Token that can be used to prevent misuse of your TTS server that you've set up. +#TTS_HTTP_TOKEN coolio + +## The maximum number of concurrent tts http requests that can be made by the server at once. +#TTS_MAX_CONCURRENT_REQUESTS 4 + +## Add voices to the TTS voice blacklist. +#TTS_VOICE_BLACKLIST Sans Undertale +#TTS_VOICE_BLACKLIST Papyrus Undertale ### Miscellaneous ### diff --git a/interface/skin.dmf b/interface/skin.dmf index e31c42938cd9..003c7df49b7a 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -153,6 +153,11 @@ menu "menu" command = "Adjust-Volume-Admin-Music" category = "Volume" saved-params = "is-checked" + elem + name = "&TTS" + command = "Adjust-Volume-TTS" + category = "Volume" + saved-params = "is-checked" window "mainwindow"