diff --git a/Content.Server.Database/Migrations/20200119103426_preferenceUnavailable.Designer.cs b/Content.Server.Database/Migrations/20200119103426_preferenceUnavailable.Designer.cs
new file mode 100644
index 0000000000..d79609456e
--- /dev/null
+++ b/Content.Server.Database/Migrations/20200119103426_preferenceUnavailable.Designer.cs
@@ -0,0 +1,145 @@
+//
+using Content.Server.Database;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+namespace Content.Server.Database.Migrations
+{
+ [DbContext(typeof(PreferencesDbContext))]
+ [Migration("20200119103426_preferenceUnavailable")]
+ partial class preferenceUnavailable
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "3.1.0");
+
+ modelBuilder.Entity("Content.Server.Database.HumanoidProfile", b =>
+ {
+ b.Property("HumanoidProfileId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Age")
+ .HasColumnType("INTEGER");
+
+ b.Property("CharacterName")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("EyeColor")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("FacialHairColor")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("FacialHairName")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("HairColor")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("HairName")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("PreferenceUnavailable")
+ .HasColumnType("INTEGER");
+
+ b.Property("PrefsId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Sex")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("SkinColor")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Slot")
+ .HasColumnType("INTEGER");
+
+ b.Property("SlotName")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("HumanoidProfileId");
+
+ b.HasIndex("PrefsId");
+
+ b.ToTable("HumanoidProfile");
+ });
+
+ modelBuilder.Entity("Content.Server.Database.Job", b =>
+ {
+ b.Property("JobId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("JobName")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Priority")
+ .HasColumnType("INTEGER");
+
+ b.Property("ProfileHumanoidProfileId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("JobId");
+
+ b.HasIndex("ProfileHumanoidProfileId");
+
+ b.ToTable("Job");
+ });
+
+ modelBuilder.Entity("Content.Server.Database.Prefs", b =>
+ {
+ b.Property("PrefsId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("SelectedCharacterSlot")
+ .HasColumnType("INTEGER");
+
+ b.Property("Username")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("PrefsId");
+
+ b.HasIndex("Username")
+ .IsUnique();
+
+ b.ToTable("Preferences");
+ });
+
+ modelBuilder.Entity("Content.Server.Database.HumanoidProfile", b =>
+ {
+ b.HasOne("Content.Server.Database.Prefs", "Prefs")
+ .WithMany("HumanoidProfiles")
+ .HasForeignKey("PrefsId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("Content.Server.Database.Job", b =>
+ {
+ b.HasOne("Content.Server.Database.HumanoidProfile", "Profile")
+ .WithMany("Jobs")
+ .HasForeignKey("ProfileHumanoidProfileId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/Content.Server.Database/Migrations/20200119103426_preferenceUnavailable.cs b/Content.Server.Database/Migrations/20200119103426_preferenceUnavailable.cs
new file mode 100644
index 0000000000..453b1cff60
--- /dev/null
+++ b/Content.Server.Database/Migrations/20200119103426_preferenceUnavailable.cs
@@ -0,0 +1,23 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+namespace Content.Server.Database.Migrations
+{
+ public partial class preferenceUnavailable : Migration
+ {
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AddColumn(
+ name: "PreferenceUnavailable",
+ table: "HumanoidProfile",
+ nullable: false,
+ defaultValue: 0);
+ }
+
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropColumn(
+ name: "PreferenceUnavailable",
+ table: "HumanoidProfile");
+ }
+ }
+}
diff --git a/Content.Shared/SharedGameTicker.cs b/Content.Shared/SharedGameTicker.cs
index 4aca7e12b9..126a44e0e9 100644
--- a/Content.Shared/SharedGameTicker.cs
+++ b/Content.Shared/SharedGameTicker.cs
@@ -7,6 +7,11 @@ namespace Content.Shared
{
public abstract class SharedGameTicker
{
+ // See ideally these would be pulled from the job definition or something.
+ // But this is easier, and at least it isn't hardcoded.
+ public const string OverflowJob = "Assistant";
+ public const string OverflowJobName = "Assistant";
+
protected class MsgTickerJoinLobby : NetMessage
{
#region REQUIRED