From dd527cf53b5adeddf7d1fdb6b2ae04fd5b42a74f Mon Sep 17 00:00:00 2001 From: Kenny Young <42425095+tabascq@users.noreply.github.com> Date: Tue, 29 Jan 2019 22:31:56 -0800 Subject: [PATCH] Home FAQ Rules! (#223) Adding a default homepagq, FAQ, and rules, as well as a PH20-specific set. The specific set of pages to use is controlled by a new HomePartial property on Event, so we can easily point all betas at the same content and easily add new content. --- Data/DataModel/Event.cs | 250 ++--- .../20190126205252_HomePartial.Designer.cs | 932 ++++++++++++++++++ Data/Migrations/20190126205252_HomePartial.cs | 22 + .../PuzzleServerContextModelSnapshot.cs | 2 + ServerCore/Pages/EventSpecific/FAQ.cshtml | 5 +- ServerCore/Pages/EventSpecific/Index.cshtml | 8 +- ServerCore/Pages/EventSpecific/Rules.cshtml | 4 +- ServerCore/Pages/Events/Create.cshtml | 5 + ServerCore/Pages/Events/Delete.cshtml | 3 + ServerCore/Pages/Events/Details.cshtml | 6 + ServerCore/Pages/Events/Edit.cshtml | 5 + .../Pages/Resources/Default/FAQPartial.cshtml | 3 + .../Resources/Default/HomePartial.cshtml | 3 + .../Resources/Default/RulesPartial.cshtml | 3 + .../Pages/Resources/PH20/FAQPartial.cshtml | 98 ++ .../Pages/Resources/PH20/HomePartial.cshtml | 6 + .../Pages/Resources/PH20/RulesPartial.cshtml | 61 ++ ServerCore/wwwroot/images/PH20Logosmall.png | Bin 0 -> 117797 bytes 18 files changed, 1283 insertions(+), 133 deletions(-) create mode 100644 Data/Migrations/20190126205252_HomePartial.Designer.cs create mode 100644 Data/Migrations/20190126205252_HomePartial.cs create mode 100644 ServerCore/Pages/Resources/Default/FAQPartial.cshtml create mode 100644 ServerCore/Pages/Resources/Default/HomePartial.cshtml create mode 100644 ServerCore/Pages/Resources/Default/RulesPartial.cshtml create mode 100644 ServerCore/Pages/Resources/PH20/FAQPartial.cshtml create mode 100644 ServerCore/Pages/Resources/PH20/HomePartial.cshtml create mode 100644 ServerCore/Pages/Resources/PH20/RulesPartial.cshtml create mode 100644 ServerCore/wwwroot/images/PH20Logosmall.png diff --git a/Data/DataModel/Event.cs b/Data/DataModel/Event.cs index 5e007a3a..0b44da55 100644 --- a/Data/DataModel/Event.cs +++ b/Data/DataModel/Event.cs @@ -1,79 +1,87 @@ -using System; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace ServerCore.DataModel -{ - public class Event - { - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int ID { get; set; } - - [Required] - public string Name { get; set; } - - public string UrlString { get; set; } - - [NotMapped] - public string EventID => UrlString ?? ID.ToString(); - - [DataType(DataType.EmailAddress)] - public string ContactEmail { get; set; } - - public int MaxNumberOfTeams { get; set; } - public int MaxTeamSize { get; set; } - public int MaxExternalsPerTeam { get; set; } - public bool IsInternEvent { get; set; } - public DateTime TeamRegistrationBegin { get; set; } - public DateTime TeamRegistrationEnd { get; set; } - - /// - /// Returns whether or not team registration is active. - /// - /// True if the current date is between the team registration begin and end times. - [NotMapped] - public bool IsTeamRegistrationActive - { +using System; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace ServerCore.DataModel +{ + public class Event + { + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int ID { get; set; } + + [Required] + public string Name { get; set; } + + /// + /// The URL prefix of the event, as in: www.puzzlehunt.org/urlString + /// + public string UrlString { get; set; } + + [NotMapped] + public string EventID => UrlString ?? ID.ToString(); + + /// + /// The prefix of the partial files that provide the Home, FAQ, and Rules content. + /// + public string HomePartial { get; set; } + + [DataType(DataType.EmailAddress)] + public string ContactEmail { get; set; } + + public int MaxNumberOfTeams { get; set; } + public int MaxTeamSize { get; set; } + public int MaxExternalsPerTeam { get; set; } + public bool IsInternEvent { get; set; } + public DateTime TeamRegistrationBegin { get; set; } + public DateTime TeamRegistrationEnd { get; set; } + + /// + /// Returns whether or not team registration is active. + /// + /// True if the current date is between the team registration begin and end times. + [NotMapped] + public bool IsTeamRegistrationActive + { get { return DateTime.UtcNow >= TeamRegistrationBegin && DateTime.UtcNow <= TeamRegistrationEnd; - } + } } - /// - /// Returns whether or not teams are allowed to change their members - /// - /// True if the current date is between the team registration begin and membership change end times. - [NotMapped] - public bool IsTeamMembershipChangeActive - { + /// + /// Returns whether or not teams are allowed to change their members + /// + /// True if the current date is between the team registration begin and membership change end times. + [NotMapped] + public bool IsTeamMembershipChangeActive + { get { return DateTime.UtcNow >= TeamRegistrationBegin && DateTime.UtcNow <= TeamMembershipChangeEnd; - } - } - - public DateTime TeamNameChangeEnd { get; set; } - public DateTime TeamMembershipChangeEnd { get; set; } - public DateTime TeamMiscDataChangeEnd { get; set; } - public DateTime TeamDeleteEnd { get; set; } - public DateTime EventBegin { get; set; } - - /// - /// Returns whether or not the event has started. Does not necessarily indicate the event - /// is currently active. - /// - /// True if the current date is after the EventBegin time - [NotMapped] - public bool EventHasStarted - { - get { return DateTime.UtcNow.CompareTo(EventBegin) > 0; } - } - - public DateTime AnswerSubmissionEnd { get; set; } - + } + } + + public DateTime TeamNameChangeEnd { get; set; } + public DateTime TeamMembershipChangeEnd { get; set; } + public DateTime TeamMiscDataChangeEnd { get; set; } + public DateTime TeamDeleteEnd { get; set; } + public DateTime EventBegin { get; set; } + + /// + /// Returns whether or not the event has started. Does not necessarily indicate the event + /// is currently active. + /// + /// True if the current date is after the EventBegin time + [NotMapped] + public bool EventHasStarted + { + get { return DateTime.UtcNow.CompareTo(EventBegin) > 0; } + } + + public DateTime AnswerSubmissionEnd { get; set; } + /// /// Returns whether or not answer submission is active. /// @@ -86,77 +94,77 @@ public bool IsAnswerSubmissionActive return DateTime.UtcNow.CompareTo(EventBegin) > 0 && DateTime.UtcNow.CompareTo(AnswerSubmissionEnd) < 0; } - } - - public DateTime AnswersAvailableBegin { get; set; } - - /// - /// Returns whether or not the puzzle answers should be available now. - /// - /// True if the current date is after the AnswersAvailableBegin time - [NotMapped] - public bool AreAnswersAvailableNow - { - get { return DateTime.UtcNow.CompareTo(AnswersAvailableBegin) > 0; } - } - - /// - /// Automatically makes the standings page available at the DateTime below - /// - public DateTime StandingsAvailableBegin { get; set; } - + } + + public DateTime AnswersAvailableBegin { get; set; } + + /// + /// Returns whether or not the puzzle answers should be available now. + /// + /// True if the current date is after the AnswersAvailableBegin time + [NotMapped] + public bool AreAnswersAvailableNow + { + get { return DateTime.UtcNow.CompareTo(AnswersAvailableBegin) > 0; } + } + + /// + /// Automatically makes the standings page available at the DateTime below + /// + public DateTime StandingsAvailableBegin { get; set; } + /// /// Returns whether or not the standings page should be available now. /// - /// True if the current date is after the StandingsAvailableBegin time + /// True if the current date is after the StandingsAvailableBegin time [NotMapped] public bool AreStandingsAvailableNow { get { return DateTime.UtcNow.CompareTo(StandingsAvailableBegin) > 0; } - } - - /// - /// Allows event owners to hide standings during the event if they prefer - overrides the timed setting - /// - public bool StandingsOverride { get; set; } - - /// - /// Determines whether or not the fastest solves page is visible to players - /// - public bool ShowFastestSolves { get; set; } - - /// - /// Whether or not the suthors are accepting feedback for the event - commonly true for betas and false for live events - /// - public bool AllowFeedback { get; set; } - - // TODO: These might need to be collections that aren't a db column - check on the EF documentation for referencing join tables where it's a one to many - public virtual EventTeams Teams { get; set; } - public virtual EventAuthors Authors { get; set; } - public virtual EventAdmins Admins { get; set; } - + } + + /// + /// Allows event owners to hide standings during the event if they prefer - overrides the timed setting + /// + public bool StandingsOverride { get; set; } + + /// + /// Determines whether or not the fastest solves page is visible to players + /// + public bool ShowFastestSolves { get; set; } + + /// + /// Whether or not the suthors are accepting feedback for the event - commonly true for betas and false for live events + /// + public bool AllowFeedback { get; set; } + + // TODO: These might need to be collections that aren't a db column - check on the EF documentation for referencing join tables where it's a one to many + public virtual EventTeams Teams { get; set; } + public virtual EventAuthors Authors { get; set; } + public virtual EventAdmins Admins { get; set; } + /// /// The window of time where if a team enters a certain number of /// incorrect answers would cause the team to be locked out of /// submitting additional answers for a brief amount of time. - /// - public double LockoutIncorrectGuessPeriod { get; set; } - + /// + public double LockoutIncorrectGuessPeriod { get; set; } + /// /// The amount of incorrect submissions required to initiate a lockout. - /// - public int LockoutIncorrectGuessLimit { get; set; } - + /// + public int LockoutIncorrectGuessLimit { get; set; } + /// /// The multiplier for the lockout duration for consecutive lockouts. - /// - public double LockoutDurationMultiplier { get; set; } - + /// + public double LockoutDurationMultiplier { get; set; } + /// /// The maximum number of incorrect submissions a team can have for /// a single puzzle before being locked out entirely and being placed /// in email-only mode. - /// - public uint MaxSubmissionCount { get; set; } - } -} + /// + public uint MaxSubmissionCount { get; set; } + } +} diff --git a/Data/Migrations/20190126205252_HomePartial.Designer.cs b/Data/Migrations/20190126205252_HomePartial.Designer.cs new file mode 100644 index 00000000..155a5c03 --- /dev/null +++ b/Data/Migrations/20190126205252_HomePartial.Designer.cs @@ -0,0 +1,932 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using ServerCore.DataModel; + +namespace Data.Migrations +{ + [DbContext(typeof(PuzzleServerContext))] + [Migration("20190126205252_HomePartial")] + partial class HomePartial + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.1.4-rtm-31024") + .HasAnnotation("Relational:MaxIdentifierLength", 128) + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken(); + + b.Property("Name") + .HasMaxLength(256); + + b.Property("NormalizedName") + .HasMaxLength(256); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("ClaimType"); + + b.Property("ClaimValue"); + + b.Property("RoleId") + .IsRequired(); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken(); + + b.Property("Email") + .HasMaxLength(256); + + b.Property("EmailConfirmed"); + + b.Property("LockoutEnabled"); + + b.Property("LockoutEnd"); + + b.Property("NormalizedEmail") + .HasMaxLength(256); + + b.Property("NormalizedUserName") + .HasMaxLength(256); + + b.Property("PasswordHash"); + + b.Property("PhoneNumber"); + + b.Property("PhoneNumberConfirmed"); + + b.Property("SecurityStamp"); + + b.Property("TwoFactorEnabled"); + + b.Property("UserName") + .HasMaxLength(256); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("ClaimType"); + + b.Property("ClaimValue"); + + b.Property("UserId") + .IsRequired(); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasMaxLength(128); + + b.Property("ProviderKey") + .HasMaxLength(128); + + b.Property("ProviderDisplayName"); + + b.Property("UserId") + .IsRequired(); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId"); + + b.Property("RoleId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId"); + + b.Property("LoginProvider") + .HasMaxLength(128); + + b.Property("Name") + .HasMaxLength(128); + + b.Property("Value"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("ServerCore.DataModel.ContentFile", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("EventID"); + + b.Property("FileType"); + + b.Property("PuzzleID") + .IsRequired(); + + b.Property("ShortName") + .IsRequired(); + + b.Property("UrlString") + .IsRequired(); + + b.HasKey("ID"); + + b.HasIndex("PuzzleID"); + + b.HasIndex("EventID", "ShortName") + .IsUnique(); + + b.ToTable("ContentFiles"); + }); + + modelBuilder.Entity("ServerCore.DataModel.Event", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("AllowFeedback"); + + b.Property("AnswerSubmissionEnd"); + + b.Property("AnswersAvailableBegin"); + + b.Property("ContactEmail"); + + b.Property("EventBegin"); + + b.Property("HomePartial"); + + b.Property("IsInternEvent"); + + b.Property("LockoutDurationMultiplier"); + + b.Property("LockoutIncorrectGuessLimit"); + + b.Property("LockoutIncorrectGuessPeriod"); + + b.Property("MaxExternalsPerTeam"); + + b.Property("MaxNumberOfTeams"); + + b.Property("MaxSubmissionCount"); + + b.Property("MaxTeamSize"); + + b.Property("Name") + .IsRequired(); + + b.Property("ShowFastestSolves"); + + b.Property("StandingsAvailableBegin"); + + b.Property("StandingsOverride"); + + b.Property("TeamDeleteEnd"); + + b.Property("TeamMembershipChangeEnd"); + + b.Property("TeamMiscDataChangeEnd"); + + b.Property("TeamNameChangeEnd"); + + b.Property("TeamRegistrationBegin"); + + b.Property("TeamRegistrationEnd"); + + b.Property("UrlString"); + + b.HasKey("ID"); + + b.HasIndex("UrlString") + .IsUnique() + .HasFilter("[UrlString] IS NOT NULL"); + + b.ToTable("Events"); + }); + + modelBuilder.Entity("ServerCore.DataModel.EventAdmins", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("Event.ID"); + + b.Property("User.ID"); + + b.HasKey("ID"); + + b.HasIndex("Event.ID") + .IsUnique() + .HasFilter("[Event.ID] IS NOT NULL"); + + b.HasIndex("User.ID"); + + b.ToTable("EventAdmins"); + }); + + modelBuilder.Entity("ServerCore.DataModel.EventAuthors", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("Event.ID"); + + b.Property("User.ID"); + + b.HasKey("ID"); + + b.HasIndex("Event.ID") + .IsUnique() + .HasFilter("[Event.ID] IS NOT NULL"); + + b.HasIndex("User.ID"); + + b.ToTable("EventAuthors"); + }); + + modelBuilder.Entity("ServerCore.DataModel.EventTeams", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("Event.ID"); + + b.Property("Teams.ID"); + + b.HasKey("ID"); + + b.HasIndex("Event.ID") + .IsUnique() + .HasFilter("[Event.ID] IS NOT NULL"); + + b.HasIndex("Teams.ID"); + + b.ToTable("EventTeams"); + }); + + modelBuilder.Entity("ServerCore.DataModel.Feedback", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("Difficulty"); + + b.Property("Fun"); + + b.Property("PuzzleID"); + + b.Property("SubmissionTime"); + + b.Property("SubmitterID"); + + b.Property("WrittenFeedback"); + + b.HasKey("ID"); + + b.HasIndex("PuzzleID"); + + b.HasIndex("SubmitterID"); + + b.ToTable("Feedback"); + }); + + modelBuilder.Entity("ServerCore.DataModel.Hint", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("Content") + .IsRequired(); + + b.Property("Cost"); + + b.Property("Description") + .IsRequired(); + + b.Property("DisplayOrder"); + + b.Property("PuzzleID"); + + b.HasKey("Id"); + + b.HasIndex("PuzzleID"); + + b.ToTable("Hints"); + }); + + modelBuilder.Entity("ServerCore.DataModel.HintStatePerTeam", b => + { + b.Property("TeamID"); + + b.Property("HintID"); + + b.Property("UnlockTime"); + + b.HasKey("TeamID", "HintID"); + + b.HasIndex("HintID"); + + b.ToTable("HintStatePerTeam"); + }); + + modelBuilder.Entity("ServerCore.DataModel.Invitation", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("EmailAddress"); + + b.Property("Expiration"); + + b.Property("InvitationCode"); + + b.Property("InvitationType"); + + b.Property("TeamID"); + + b.HasKey("ID"); + + b.HasIndex("TeamID"); + + b.ToTable("Invitations"); + }); + + modelBuilder.Entity("ServerCore.DataModel.Prerequisites", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("PrerequisiteID"); + + b.Property("PuzzleID"); + + b.HasKey("ID"); + + b.HasIndex("PrerequisiteID"); + + b.HasIndex("PuzzleID"); + + b.ToTable("Prerequisites"); + }); + + modelBuilder.Entity("ServerCore.DataModel.Puzzle", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("EventID"); + + b.Property("Group"); + + b.Property("HintCoinsForSolve"); + + b.Property("IsFinalPuzzle"); + + b.Property("IsGloballyVisiblePrerequisite"); + + b.Property("IsMetaPuzzle"); + + b.Property("IsPuzzle"); + + b.Property("MinPrerequisiteCount"); + + b.Property("MinutesToAutomaticallySolve"); + + b.Property("Name") + .IsRequired(); + + b.Property("OrderInGroup"); + + b.Property("SolveValue"); + + b.Property("SupportEmailAlias"); + + b.Property("Token"); + + b.HasKey("ID"); + + b.HasIndex("EventID"); + + b.ToTable("Puzzles"); + }); + + modelBuilder.Entity("ServerCore.DataModel.PuzzleAuthors", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("AuthorID"); + + b.Property("PuzzleID"); + + b.HasKey("ID"); + + b.HasIndex("AuthorID"); + + b.HasIndex("PuzzleID"); + + b.ToTable("PuzzleAuthors"); + }); + + modelBuilder.Entity("ServerCore.DataModel.PuzzleStatePerTeam", b => + { + b.Property("PuzzleID"); + + b.Property("TeamID"); + + b.Property("IsEmailOnlyMode"); + + b.Property("LockoutExpiryTime"); + + b.Property("Notes"); + + b.Property("Printed"); + + b.Property("SolvedTime"); + + b.Property("UnlockedTime"); + + b.Property("WrongSubmissionCountBuffer"); + + b.HasKey("PuzzleID", "TeamID"); + + b.HasIndex("TeamID"); + + b.ToTable("PuzzleStatePerTeam"); + }); + + modelBuilder.Entity("ServerCore.DataModel.PuzzleUser", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("Email"); + + b.Property("EmployeeAlias"); + + b.Property("IdentityUserId") + .IsRequired(); + + b.Property("IsGlobalAdmin"); + + b.Property("Name"); + + b.Property("PhoneNumber"); + + b.Property("TShirtSize"); + + b.Property("VisibleToOthers"); + + b.HasKey("ID"); + + b.ToTable("PuzzleUsers"); + }); + + modelBuilder.Entity("ServerCore.DataModel.Response", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("IsSolution"); + + b.Property("Note"); + + b.Property("PuzzleID"); + + b.Property("ResponseText") + .IsRequired(); + + b.Property("SubmittedText") + .IsRequired(); + + b.HasKey("ID"); + + b.HasIndex("PuzzleID"); + + b.ToTable("Responses"); + }); + + modelBuilder.Entity("ServerCore.DataModel.Submission", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("PuzzleID"); + + b.Property("ResponseID"); + + b.Property("SubmissionText") + .IsRequired(); + + b.Property("SubmitterID"); + + b.Property("TeamID"); + + b.Property("TimeSubmitted"); + + b.HasKey("ID"); + + b.HasIndex("PuzzleID"); + + b.HasIndex("ResponseID"); + + b.HasIndex("SubmitterID"); + + b.HasIndex("TeamID"); + + b.ToTable("Submissions"); + }); + + modelBuilder.Entity("ServerCore.DataModel.Team", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("CustomRoom"); + + b.Property("EventID"); + + b.Property("HintCoinCount"); + + b.Property("Name"); + + b.Property("PrimaryContactEmail"); + + b.Property("PrimaryPhoneNumber"); + + b.Property("RoomID"); + + b.Property("SecondaryPhoneNumber"); + + b.HasKey("ID"); + + b.HasIndex("EventID"); + + b.ToTable("Teams"); + }); + + modelBuilder.Entity("ServerCore.DataModel.TeamApplication", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("PlayerID"); + + b.Property("TeamID"); + + b.HasKey("ID"); + + b.HasIndex("PlayerID"); + + b.HasIndex("TeamID"); + + b.ToTable("TeamApplications"); + }); + + modelBuilder.Entity("ServerCore.DataModel.TeamMembers", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + b.Property("Team.ID"); + + b.Property("User.ID"); + + b.HasKey("ID"); + + b.HasIndex("Team.ID"); + + b.HasIndex("User.ID"); + + b.ToTable("TeamMembers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole") + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ServerCore.DataModel.ContentFile", b => + { + b.HasOne("ServerCore.DataModel.Event", "Event") + .WithMany() + .HasForeignKey("EventID") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("ServerCore.DataModel.Puzzle", "Puzzle") + .WithMany("Contents") + .HasForeignKey("PuzzleID") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ServerCore.DataModel.EventAdmins", b => + { + b.HasOne("ServerCore.DataModel.Event", "Event") + .WithOne("Admins") + .HasForeignKey("ServerCore.DataModel.EventAdmins", "Event.ID"); + + b.HasOne("ServerCore.DataModel.PuzzleUser", "Admin") + .WithMany() + .HasForeignKey("User.ID"); + }); + + modelBuilder.Entity("ServerCore.DataModel.EventAuthors", b => + { + b.HasOne("ServerCore.DataModel.Event", "Event") + .WithOne("Authors") + .HasForeignKey("ServerCore.DataModel.EventAuthors", "Event.ID"); + + b.HasOne("ServerCore.DataModel.PuzzleUser", "Author") + .WithMany() + .HasForeignKey("User.ID"); + }); + + modelBuilder.Entity("ServerCore.DataModel.EventTeams", b => + { + b.HasOne("ServerCore.DataModel.Event", "Event") + .WithOne("Teams") + .HasForeignKey("ServerCore.DataModel.EventTeams", "Event.ID"); + + b.HasOne("ServerCore.DataModel.Team", "Team") + .WithMany() + .HasForeignKey("Teams.ID"); + }); + + modelBuilder.Entity("ServerCore.DataModel.Feedback", b => + { + b.HasOne("ServerCore.DataModel.Puzzle", "Puzzle") + .WithMany() + .HasForeignKey("PuzzleID"); + + b.HasOne("ServerCore.DataModel.PuzzleUser", "Submitter") + .WithMany() + .HasForeignKey("SubmitterID"); + }); + + modelBuilder.Entity("ServerCore.DataModel.Hint", b => + { + b.HasOne("ServerCore.DataModel.Puzzle", "Puzzle") + .WithMany("Hints") + .HasForeignKey("PuzzleID") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ServerCore.DataModel.HintStatePerTeam", b => + { + b.HasOne("ServerCore.DataModel.Hint", "Hint") + .WithMany() + .HasForeignKey("HintID") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("ServerCore.DataModel.Team", "Team") + .WithMany() + .HasForeignKey("TeamID") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ServerCore.DataModel.Invitation", b => + { + b.HasOne("ServerCore.DataModel.Team") + .WithMany("Invitations") + .HasForeignKey("TeamID"); + }); + + modelBuilder.Entity("ServerCore.DataModel.Prerequisites", b => + { + b.HasOne("ServerCore.DataModel.Puzzle", "Prerequisite") + .WithMany() + .HasForeignKey("PrerequisiteID") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("ServerCore.DataModel.Puzzle", "Puzzle") + .WithMany() + .HasForeignKey("PuzzleID") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ServerCore.DataModel.Puzzle", b => + { + b.HasOne("ServerCore.DataModel.Event", "Event") + .WithMany() + .HasForeignKey("EventID"); + }); + + modelBuilder.Entity("ServerCore.DataModel.PuzzleAuthors", b => + { + b.HasOne("ServerCore.DataModel.PuzzleUser", "Author") + .WithMany() + .HasForeignKey("AuthorID") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("ServerCore.DataModel.Puzzle", "Puzzle") + .WithMany() + .HasForeignKey("PuzzleID") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ServerCore.DataModel.PuzzleStatePerTeam", b => + { + b.HasOne("ServerCore.DataModel.Puzzle", "Puzzle") + .WithMany() + .HasForeignKey("PuzzleID") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("ServerCore.DataModel.Team", "Team") + .WithMany() + .HasForeignKey("TeamID") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ServerCore.DataModel.Response", b => + { + b.HasOne("ServerCore.DataModel.Puzzle", "Puzzle") + .WithMany() + .HasForeignKey("PuzzleID") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ServerCore.DataModel.Submission", b => + { + b.HasOne("ServerCore.DataModel.Puzzle", "Puzzle") + .WithMany("Submissions") + .HasForeignKey("PuzzleID"); + + b.HasOne("ServerCore.DataModel.Response", "Response") + .WithMany() + .HasForeignKey("ResponseID"); + + b.HasOne("ServerCore.DataModel.PuzzleUser", "Submitter") + .WithMany() + .HasForeignKey("SubmitterID"); + + b.HasOne("ServerCore.DataModel.Team", "Team") + .WithMany("Submissions") + .HasForeignKey("TeamID"); + }); + + modelBuilder.Entity("ServerCore.DataModel.Team", b => + { + b.HasOne("ServerCore.DataModel.Event", "Event") + .WithMany() + .HasForeignKey("EventID"); + }); + + modelBuilder.Entity("ServerCore.DataModel.TeamApplication", b => + { + b.HasOne("ServerCore.DataModel.PuzzleUser", "Player") + .WithMany() + .HasForeignKey("PlayerID") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("ServerCore.DataModel.Team", "Team") + .WithMany() + .HasForeignKey("TeamID") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ServerCore.DataModel.TeamMembers", b => + { + b.HasOne("ServerCore.DataModel.Team", "Team") + .WithMany() + .HasForeignKey("Team.ID"); + + b.HasOne("ServerCore.DataModel.PuzzleUser", "Member") + .WithMany() + .HasForeignKey("User.ID"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Data/Migrations/20190126205252_HomePartial.cs b/Data/Migrations/20190126205252_HomePartial.cs new file mode 100644 index 00000000..40a1e9db --- /dev/null +++ b/Data/Migrations/20190126205252_HomePartial.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Data.Migrations +{ + public partial class HomePartial : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "HomePartial", + table: "Events", + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "HomePartial", + table: "Events"); + } + } +} diff --git a/Data/Migrations/PuzzleServerContextModelSnapshot.cs b/Data/Migrations/PuzzleServerContextModelSnapshot.cs index 60cca6bf..34001bb2 100644 --- a/Data/Migrations/PuzzleServerContextModelSnapshot.cs +++ b/Data/Migrations/PuzzleServerContextModelSnapshot.cs @@ -229,6 +229,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("EventBegin"); + b.Property("HomePartial"); + b.Property("IsInternEvent"); b.Property("LockoutDurationMultiplier"); diff --git a/ServerCore/Pages/EventSpecific/FAQ.cshtml b/ServerCore/Pages/EventSpecific/FAQ.cshtml index ff3f87e1..e3b9c4ac 100644 --- a/ServerCore/Pages/EventSpecific/FAQ.cshtml +++ b/ServerCore/Pages/EventSpecific/FAQ.cshtml @@ -7,7 +7,4 @@ ViewData["PlayRoute"] = "/EventSpecific/FAQ"; } -

FAQ

- -

Question: Best animal ever?

-

Answer: Rabbits

+ \ No newline at end of file diff --git a/ServerCore/Pages/EventSpecific/Index.cshtml b/ServerCore/Pages/EventSpecific/Index.cshtml index 45cf7607..a22522ae 100644 --- a/ServerCore/Pages/EventSpecific/Index.cshtml +++ b/ServerCore/Pages/EventSpecific/Index.cshtml @@ -7,10 +7,6 @@ ViewData["PlayRoute"] = "/EventSpecific/Index"; } -

Welcome to @Model.Event.Name!

- -

Yay! Puzzles! Excitement!

- @if (Model.EventRole == ModelBases.EventRole.admin) { -} \ No newline at end of file +} + + \ No newline at end of file diff --git a/ServerCore/Pages/EventSpecific/Rules.cshtml b/ServerCore/Pages/EventSpecific/Rules.cshtml index 14aeae19..70aac1c4 100644 --- a/ServerCore/Pages/EventSpecific/Rules.cshtml +++ b/ServerCore/Pages/EventSpecific/Rules.cshtml @@ -7,6 +7,4 @@ ViewData["PlayRoute"] = "/EventSpecific/Rules"; } -

Rules

- -

Don't do bad things :(

+ \ No newline at end of file diff --git a/ServerCore/Pages/Events/Create.cshtml b/ServerCore/Pages/Events/Create.cshtml index 15b983f0..3ffdb1fb 100644 --- a/ServerCore/Pages/Events/Create.cshtml +++ b/ServerCore/Pages/Events/Create.cshtml @@ -23,6 +23,11 @@ +
+ + + +
diff --git a/ServerCore/Pages/Events/Delete.cshtml b/ServerCore/Pages/Events/Delete.cshtml index cf3672c1..8b4e5da4 100644 --- a/ServerCore/Pages/Events/Delete.cshtml +++ b/ServerCore/Pages/Events/Delete.cshtml @@ -23,6 +23,9 @@
@Html.DisplayNameFor(model => model.Event.UrlString)
+
+ @Html.DisplayNameFor(model => model.Event.HomePartial) +
@Html.DisplayFor(model => model.Event.UrlString)
diff --git a/ServerCore/Pages/Events/Details.cshtml b/ServerCore/Pages/Events/Details.cshtml index 81479627..60180558 100644 --- a/ServerCore/Pages/Events/Details.cshtml +++ b/ServerCore/Pages/Events/Details.cshtml @@ -25,6 +25,12 @@
@Html.DisplayFor(model => model.Event.UrlString)
+
+ @Html.DisplayNameFor(model => model.Event.HomePartial) +
+
+ @Html.DisplayFor(model => model.Event.HomePartial) +
@Html.DisplayNameFor(model => model.Event.ContactEmail)
diff --git a/ServerCore/Pages/Events/Edit.cshtml b/ServerCore/Pages/Events/Edit.cshtml index cc74703a..db0ca0cc 100644 --- a/ServerCore/Pages/Events/Edit.cshtml +++ b/ServerCore/Pages/Events/Edit.cshtml @@ -26,6 +26,11 @@
+
+ + + +
diff --git a/ServerCore/Pages/Resources/Default/FAQPartial.cshtml b/ServerCore/Pages/Resources/Default/FAQPartial.cshtml new file mode 100644 index 00000000..56ee15ed --- /dev/null +++ b/ServerCore/Pages/Resources/Default/FAQPartial.cshtml @@ -0,0 +1,3 @@ +
+

Default FAQ!

+
\ No newline at end of file diff --git a/ServerCore/Pages/Resources/Default/HomePartial.cshtml b/ServerCore/Pages/Resources/Default/HomePartial.cshtml new file mode 100644 index 00000000..aa0e71a3 --- /dev/null +++ b/ServerCore/Pages/Resources/Default/HomePartial.cshtml @@ -0,0 +1,3 @@ +
+

Default Homepage!

+
\ No newline at end of file diff --git a/ServerCore/Pages/Resources/Default/RulesPartial.cshtml b/ServerCore/Pages/Resources/Default/RulesPartial.cshtml new file mode 100644 index 00000000..f4a15bee --- /dev/null +++ b/ServerCore/Pages/Resources/Default/RulesPartial.cshtml @@ -0,0 +1,3 @@ +
+

Default Rules!

+
\ No newline at end of file diff --git a/ServerCore/Pages/Resources/PH20/FAQPartial.cshtml b/ServerCore/Pages/Resources/PH20/FAQPartial.cshtml new file mode 100644 index 00000000..ed6f2b9c --- /dev/null +++ b/ServerCore/Pages/Resources/PH20/FAQPartial.cshtml @@ -0,0 +1,98 @@ +
+

FAQ

+ +

What is Puzzlehunt?

+

+ The Microsoft Puzzlehunt is a quasi-annual Microsoft tradition dating back to just before the turn of the century. + The hunt is a weekend-long team puzzle competition that challenges each team to solve a large number of original puzzles of all different kinds. + The answers typically lead to a hidden treasure concealed somewhere on campus. Participants will generally enjoy being puzzled by anything from traditional puzzles like crosswords, + cryptograms, jigsaws, word play and logic problems to wandering around campus to find landmarks or puzzles that have to be solved on location. + The best way to see what's involved in a hunt is to peruse the archives of past hunts. +

+

+ The Microsoft Puzzlehunt takes inspiration from the MIT IAP Mystery Hunt, which is very similar in concept. Like the Mystery Hunt, all action + takes place on, or nearby, the Microsoft campus. +

+

Who is Puzzlehunt for?

+

+ The hunt is for anyone at Microsoft interested in solving puzzles. It's a team competition so people of all different skill and interest levels + can enjoy it. Teams can include non-Microsoft employees, so spouses and friends are welcome. Read about Teams below for details about team registration. +

+

+ Participants can play through the night or take a mid-hunt break. Historically, winning teams have puzzled away through the night rather than + sleep. But, the hunt is designed so that less dedicated teams will also have fun, even if you never intend to go the distance. It's also all + right to have mixed teams that consist of some hard-core and some casual participants. See the Teams Section for details about team registration. +

+

When is Puzzlehunt?

+

Puzzlehunt begins at 10:00 AM on Saturday May 4th, 2019 in TBD. It runs continuously (i.e. overnight) through the weekend, concluding on Sunday May 5th, 2019 at 5:00 pm with an awards and puzzle-demystification ceremony shortly thereafter in TBD.

+

I’ve never done this before. What should I expect?

+

Puzzlehunt is probably unlike any event you have done before. You may be used to Sudoku or crosswords or Games magazine, but this is more than that. You will collectively see more than 50 puzzles of all sorts of varieties some of which you may recognize and some you won't. Sometimes your whole team will be collectively working on one puzzle. Some puzzles will be straightforward and only require execution. Others will require a leap to figure out what to do.

+

Often times, you will want more than one person looking at a puzzle. Don't be afraid to call over help from a teammate. What we mean is, if something isn't working for you don't hesitate swapping puzzles with teammates.

+

You will be given a subset of puzzles to work on, and as those are answered new ones are revealed. There will also be one or more metapuzzles that take things from other puzzles and puts them together in a new puzzle.

+

Also, Microsoft employees can look at http://puzzlehunt on the Microsoft corpnet to see examples from past hunts and puzzles.

+

What’s a ‘normal’ Puzzlehunt?

+

Previous Puzzlehunts have always been ‘hosted’ (i.e. written and administered) by a high ranking team from the previous year’s hunt. Usually this involves a top-tier team with enough members willing to selflessly donate countless hours of their time. Team members are tasked with writing and “playtesting” dozens of puzzles. Obviously, the hosting team is unable to compete in the event since (A) they’re too busy handling day-of logistics and (B) they already know the answers (duh). Most top teams had only a minority of members with both the puzzle writing experience and the ability to commit enough puzzles to fill a full-sized Puzzlehunt. Unfortunately, this fraction-of-a-fraction has declined over the years, resulting in fewer teams that are willing and/or able to host Puzzlehunt.

+

What’s different about Puzzlehunt 15/16/17/19/20?

+

Puzzlehunt 20, like Puzzlehunts 15, 16, 17, and 19, was created with a small number of Puzzlehunt Authors, scattered amongst different Puzzlehunt teams. Some Authors have written a module of themed puzzles, each with a Meta. Other Authors have contributed a puzzle into a collective module. Authors know their own content (puzzles and answers), but are otherwise completely isolated from all other content. This enables Authors to (A) have the freedom to write modules of their own creative design, size, and structure and (B) to (almost) fully participate in Puzzlehunt with their regular teams by abstention from their own modules. Yes, we realize Authors could cheat and share answers or hints for their modules with teammates to boost solve count. Authors have assured us that their professional puzzle ethics will prevent any sort of this nonsense.

+

In Puzzlehunts 15 and 16, a small Logistics team did all the tasks required to run Puzzlehunt beyond writing puzzles. For Puzzlehunt 17, nobody volunteered to run Logistics, and Logistics was distributed amongst all Author teams. Puzzlehunt 20 is using the same model as Puzzlehunts 17 and 19. As there is no individual who has seen the entire event, there is a chance that some unusual puzzle duplication may occur.

+

Puzzlehunt is looking for any volunteers interested in (A) Helping run future Puzzlehunts, (B) Helping Author for future Puzzlehunts, or (C) helping with the tech for future Puzzlehunts. If interested, please contact puzzadv@microsoft.com to be included in future Puzzlehunt planning meetings.

+

Puzzlehunt is a Team Sport

+

Solving puzzles in a group is fun and easier with more people, so you might not have as much fun if your team has just a few people. If you need more people on your team, check out the puzzmate e-mail list.

+

How should I assemble a Team?

+

Find other people who like to solve puzzles or can be convinced to give it a try. Microsoft is full of smart people who like to solve puzzles. Try showing friends or co-workers the Puzzlehunt site. You can also use the puzzmate e-mail list to find other people without a team.

+

Each team must have no more than 12 players total, and must have at least three members who have valid Microsoft badges; this number is set on a per-hunt basis and may be larger in the next or any subsequent hunt. Since many of the puzzles will be posted on the internet, your team can include members who are in other locations. However, because some puzzles may require you to visit locations on campus, we recommend that most members of your team plan to be on the main campus during the hunt.

+

All visitors (anyone without a valid Microsoft badge) will be issued Visitor badges at sign-in. Visitors must provide government-issued photo to verify identity before being granted access to Microsoft facilities. Visitors must be escorted by a Microsoft employee while out and about.

+

How can I be a good team captain?

+

At the very least, you should reserve a conference room on the Redmond campus as your Team's HQ and register this location on this web site. Teams lacking appropriate contact and HQ information will not be allowed to participate.

+

Keeping your team organized is important both to having fun and doing well. It's a good idea to make sure that the members of your team understand and agree to the levels of commitment that everyone is making. It can cause problems if some people are committed to work through the night and others are not, especially if not everyone understands and agrees to this in advance. Team dynamics generally work better if all team members have similar levels of commitment.

+

Does everyone need to register?

+

Individual and Team registration is mandatory. @Model.Event.Name and Microsoft Security need to be able to contact all teams at all times. Also, advance registration allows us to ensure team sign-in goes smoothly and the hunt begins on time. Any Microsoft employee may create a team. Simply login, mark yourself as ‘Team Captain’, and send out invites.

+

Teams may continue to change names, modify members, and edit their biographical information until the hunt begins.

+

How to Solve ‘Puzzlehunt’ Puzzles

+

Some of the puzzles don't have instructions!?!

+

The implicit instruction for all puzzles is “Figure out the final answer.” Puzzles without instructions are either classic puzzle forms, perhaps with a twist, or puzzles where the challenge is figuring out how to solve the puzzle.

+

Are there types of Standard Puzzles I should know?

+

Several puzzle types frequently appear in Puzzlehunt, so you would be well advised to be familiar with them. Those types include cross sum, crostic, cryptic crossword, cryptogram, drop quote, jigsaw puzzle, paint-by-numbers, rebus, sudoku, and many more. See the Resources section of the website for more information.

+

How do you feel about un-clued anagrams?

+

Anagramming is often a part of certain puzzles (e.g. cryptic crosswords), but anagramming will not be used as the final step to a puzzle unless there is a clue specifically suggesting that step. If you have an un-ordered set of letters, and there is no clue suggesting you should anagram them, then don't anagram them. Look for a way to determine their order. Note that some puzzles might ask you to anagram blocks of letters as a final step. If so, the letters within a block should be kept in the order you found them.

+

Anagramming might be clued in various ways. For instance, cryptic crossword clues use certain words to indicate you should anagram a set of letters. The puzzle Siegfried & Roy from Puzzlehunt 8 contained a pattern in which a set of words could all be anagrammed to make cities.

+

Extracting the final answer is part of the puzzle.

+

Each puzzle has a simple final answer, typically a single word or a short phrase. In some puzzles you are explicitly told how to get the final answer. In others, figuring out how to extract the final answer is part of the puzzle. If you solve a puzzle and you get a long phrase, it's probably a clue to a shorter answer.

+

Sometimes getting to the final answer is trivial or may be explicitly explained. Other times, you may get an intermediate answer which could hint at, or highlight part of, the final answer. The final answer could be signaled by adding an extra or missing word to the intermediate answer, perhaps. Sometimes there are no hints, in which case you should look for some way to combine or connect the intermediate answers. Common techniques are to use acrostics (where the first letter of each word spells something) or for the intermediate answer to be another puzzle of the same kind (i.e. recursion).

+

In all puzzles, once you have the correct final answer you should know it.

+

For example, in Puzzlehunt 1 some teams guessed "wine glass" as the answer to the puzzle ‘Sarajevo’ because it looked like a wineglass. The puzzle would have been rather uninteresting if that were the answer. The correct answer to ‘Sarajevo’ involves Morse code; it is not a coincidence that all flags had stripes or dots that formed Morse letters to spell out a word. Teams solved the puzzle by looking for similarities among the flag designs and were pretty sure they had the correct answer before they confirmed it. What are the odds that a collection of flags just happens to spell out a message in Morse code by chance?

+

What is a Meta puzzle?

+

A Meta puzzle is a special puzzle that takes the final answers of other puzzles and combines them in some way. In previous hunts, the Meta puzzle might look like a regular puzzle except it’s unsolvable until you plug in the final answers to other puzzles. Other times, the Meta puzzle was something you have to figure out and becomes more apparent as you have more answers. Sometimes there is just one Meta puzzle, and sometimes there are several. Authors will label each puzzle as regular or Meta for easy identification.

+

Solving Puzzles, literally.

+

All answers should be submitted through the Puzzlehunt Site. The system will (A) confirm final answers, and (B) provide helpful clues for common guesses. Teams must confirm the final answer to receive points.

+

Teams who spam the answer submission system will have their system frozen for an appropriate amount of time, determined by @Model.Event.Name organizers. The limits have been increased and decoupled between short-term guessing and over the weekend guessing, so teams who reasonably use the submission system to confirm suspected partial progress should be OK.

+

Winning & Losing

+

How to win

+

The first three teams to solve a sufficient number of puzzles (whatever that means) and then actually do it (whatever that means) win, regardless of how many puzzles they've solved. Finishing the hunt usually means solving a final puzzle, or series of puzzles, which often identifies a location on campus where you need to go to find a hidden treasure or complete a final challenge.

+

The best way to win is to solve the most puzzles before any other team and then solve the final puzzle and finish the hunt. The best way to do that is teamwork. Work individually on the easier puzzles so everyone is effective. Work together on the harder puzzles so you can solve them more quickly. If you get stuck, ask your teammates for help or switch to another puzzle. Make sure you keep track of which puzzles you've already solved and confirmed.

+

How to lose

+

Not have fun. If you're not having fun working on a particular puzzle, switch to another one.

+

How to finish

+

You finish the hunt by successfully completing the final puzzle. Typically, solving the final puzzle involves using answers from previous puzzles and meta puzzles.

+

You don’t have to solve all puzzles to finish the hunt, as long as you solve the final puzzle…. but you'll probably need to solve most of the puzzles.

+

Closing Ceremonies & Awards

+

If your team is in the top three, please attend the closing ceremonies. Otherwise, attendance is optional. But, it’s nice to learn the answers for unsolved puzzles with others and share trials, tribulations, and interesting stories with other teams.

+

Scoring

+

Teams receive points for each puzzle they solve. Some puzzles may be worth more points than others. If fewer than three teams finish the hunt, prizes will be awarded according to point count. The goal of the hunt should be to win by solving the final puzzle, not by scoring points. Therefore, it is possible to lose the hunt even though your team solves more puzzles than other teams.

+

Tie Breakers

+

Ties will be broken using the following criteria, in this order. All @Model.Event.Name organizers' decisions are final.

+
    +
  1. The first team that correctly finished the hunt.
  2. +
  3. The team with the highest number of points
  4. +
  5. The team that solved the most puzzles
  6. +
  7. The team that had the most “1st puzzle solves”
  8. +
  9. The team that had the most “2nd puzzle solves”
  10. +
  11. The team that had the most “3rd puzzle solves”
  12. +
  13. A random drawing
  14. +
+

Prizes

+

Bragging rights!

+ +

Rules and Equipment

+

See the Rules page for the rules, suggested equipment, and prohibited locations across campus. If you find a rule ambiguous, even after reading the rest of this FAQ, please ask your teammates, your team captain, and finally @(Model.Event?.ContactEmail ?? "puzzhunt@microsoft.com").

+
diff --git a/ServerCore/Pages/Resources/PH20/HomePartial.cshtml b/ServerCore/Pages/Resources/PH20/HomePartial.cshtml new file mode 100644 index 00000000..5f563dfa --- /dev/null +++ b/ServerCore/Pages/Resources/PH20/HomePartial.cshtml @@ -0,0 +1,6 @@ +
+
+ +
+

Watch this space for more details!

+
\ No newline at end of file diff --git a/ServerCore/Pages/Resources/PH20/RulesPartial.cshtml b/ServerCore/Pages/Resources/PH20/RulesPartial.cshtml new file mode 100644 index 00000000..894d27c5 --- /dev/null +++ b/ServerCore/Pages/Resources/PH20/RulesPartial.cshtml @@ -0,0 +1,61 @@ +
+

Rules

+
    +
  1. HAVE FUN! +
  2. There are ONLY two ways that you might be instructed to travel.
  3. +
      +
    • The puzzle has explicit instructions to travel.
    • +
    • You submit an answer and the response from the website gives you explicit instructions to travel.
    • +
    +
  4. + The more prepared you are for Puzzlehunt weekend, the better time you'll have participating in it. Here's a list of supplies that you may find helpful: +
      +
    • + Office supplies: Pens, pencils, colored pencils, graph paper, scissors, + clear tape, ruler/straight edge, protractor, highlighters, glue stick, compass +
    • +
    • Flashlights and/or headlamps
    • +
    • Cell phones
    • +
    • Digital camera
    • +
    • Food
    • +
    • As many Internet-connected computers as possible
    • +
    • Headphones and/or speakers
    • +
    • + Access to a color printer (if using Microsoft printers, please verify you have working credentials & drivers prior to the event; we will not be able to assist + with any printing issues) +
    • +
    • Chess set
    • +
    +
  5. Teams can have a maximum of 12 players, and a minimum of 8 players. Each team must have at least three members who have valid Microsoft badges; this number is set on a per-hunt basis and may be larger in the next or any subsequent hunt. Since many of the puzzles will be posted on the internet, your team can include members who are in other locations. However, because some puzzles may require you to visit locations on campus, we recommend that most members of your team plan to be on the main campus during the hunt. +
  6. To participate, you must register your team prior to the team registration deadline (May 2nd, 2018). You will be allowed to add and remove members after that time, but not to add new teams.

    +

  7. Vehicles without a parking permit will need to be registered with security. Use the vehicle registration tool on the web site to register guest vehicles. Park only in designated spaces.

    +

  8. + Visitors (anyone without a valid Microsoft badge) must be escorted by someone with a badge at all times. + Visitors must display a name badge of some kind. Visitor badges will be provided for your convenience at the start of the hunt. + Visitors must provide a government-issued photo to verify identity before being granted access to Microsoft facilities.

    +

  9. + None of the puzzles require you to do anything illegal, immoral, or that would cause Microsoft + security to be concerned. You must not enter any person's private office during the course of the hunt unless it is the office of a member of your team.

    +

  10. If any travel is required, it will take place on Microsoft property in or near East Campus, West Campus, North Campus, and/or RedWest. In other words, east of 148th Avenue NE, north of NE 24th Street, northwest of Bel-Red Road, and south of NE 60th Street. Some of these zones may have more activity than others. You are strongly encouraged to have a conference room in this general area.

    +

  11. + Within the area described above, buildings 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 24, 30, 50, 87, 111, 120, Redwest D, Redwest E, Studio A, Studio B, Studio C, and Studio X are off limits and should not be entered, other than to go your private office if it is located in one of these buildings.

    + Cafeterias adjacent to a restricted or off-limits building are fair game, as are other areas on the main campus, west campus, and north campus. This list may change from hunt to hunt. +

    + If you believe a puzzle instructs you to go to an off-limits or restricted building, you've made a mistake. +

    +

  12. + Hacking puzzles is not in the spirit of the hunt and is strictly prohibited. This includes: +
      +
    • hacking into any computer system to find the answer +
    • modifying something needed by other teams to solve the puzzle (e.g., moving an object referenced in a puzzle) +
    • giving false information to another team +
    • trying to purloin answers from another team, and +
    • colluding with other teams +
    + Writing a computer program to solve a puzzle is allowed, but this may take longer than solving the puzzle in its intended manner.

    +

  13. Each team must be reachable by telephone and email during the hunt. New puzzles and corrections to puzzles will be sent out via email. We may need to send critical updates to the puzznews alias.

    +

  14. + Teams should clean up their conference rooms after the end of the hunt. + The regular cleaning schedule does not cover weekends. You should leave the room in an appropriate condition to be used for a Monday morning meeting.

    +

+
\ No newline at end of file diff --git a/ServerCore/wwwroot/images/PH20Logosmall.png b/ServerCore/wwwroot/images/PH20Logosmall.png new file mode 100644 index 0000000000000000000000000000000000000000..aff68e0bb374531b85a00b097bba8666b3010d53 GIT binary patch literal 117797 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

v^GP$4Bo-LkZ@?)#J_^6|$x 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 a-#;D`uS!HaVuyNtH_I`~DBGGSr9w literal 0 HcmV?d00001