diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm
index cd1bf63cccb1..f63f03242a8e 100644
--- a/code/__DEFINES/atom_hud.dm
+++ b/code/__DEFINES/atom_hud.dm
@@ -75,6 +75,7 @@
#define ANTAG_HUD_ALIEN "antag_hud_alien"
#define ANTAG_HUD_DEATHCOM "antag_hud_deathcom"
#define ANTAG_HUD_ERT "antag_hud_ert"
+#define ANTAG_HUD_LATE_PARTY "antag_hud_late_party"
#define ANTAG_HUD_MALF "antag_hud_malf"
#define ANTAG_HUD_ZOMB "antag_hud_zomb"
#define ANTAG_HUD_GANGSTER "antag_hud_gangster"
diff --git a/code/__DEFINES/gamemodes.dm b/code/__DEFINES/gamemodes.dm
index 24aa2cde80a7..68a9ebb1aabb 100644
--- a/code/__DEFINES/gamemodes.dm
+++ b/code/__DEFINES/gamemodes.dm
@@ -14,6 +14,8 @@
#define F_FAMILIES "Families"
#define F_HEIST "Vox Shoal"
#define F_HIVEMIND "Changeling Hivemind"
+#define F_LATE_PARTY "Late Party"
+#define F_LP_COMMUNISTS "Late Party: Communists"
#define F_PROPS "Props"
#define F_REVOLUTION "Revolution"
#define F_SYNDIOPS "Syndicate Operatives"
@@ -43,6 +45,7 @@
#define GANGSTER_LEADER "Gangster Leader"
#define GANGSTER_DEALER "Gangster Dealer"
#define HEADREV "Head Revolutionary"
+#define LATE_PARTY_MEMBER "Late Party Member"
#define MALF "Malf AI"
#define MALFBOT "Malf-Slaved Cyborg"
#define NUKE_OP "Nuclear Operative"
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index 16f115d421c2..b2e787fa10d2 100644
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -603,6 +603,7 @@ SUBSYSTEM_DEF(ticker)
create_spawner(/datum/spawner/mouse)
if(config.allow_drone_spawn)
create_spawner(/datum/spawner/drone)
+ create_spawners(/datum/spawner/late_party, 0)
/datum/controller/subsystem/ticker/proc/teleport_players_to_eorg_area()
if(!config.deathmatch_arena)
diff --git a/code/datums/atom_huds/atom_hud.dm b/code/datums/atom_huds/atom_hud.dm
index f0a9151221f8..56a7c12d5fa3 100644
--- a/code/datums/atom_huds/atom_hud.dm
+++ b/code/datums/atom_huds/atom_hud.dm
@@ -25,6 +25,7 @@ var/global/list/huds = list(
ANTAG_HUD_ALIEN = new/datum/atom_hud/antag/hidden,
ANTAG_HUD_DEATHCOM = new/datum/atom_hud/antag,
ANTAG_HUD_ERT = new/datum/atom_hud/antag,
+ ANTAG_HUD_LATE_PARTY = new/datum/atom_hud/antag/hidden,
ANTAG_HUD_MALF = new/datum/atom_hud/antag/hidden,
ANTAG_HUD_ZOMB = new/datum/atom_hud/antag,
ANTAG_HUD_GANGSTER = new/datum/atom_hud/antag/hidden,
diff --git a/code/datums/spawners_menu/spawners_lateparty.dm b/code/datums/spawners_menu/spawners_lateparty.dm
new file mode 100644
index 000000000000..c3473f633bcd
--- /dev/null
+++ b/code/datums/spawners_menu/spawners_lateparty.dm
@@ -0,0 +1,118 @@
+var/global/datum/late_party/current_late_party
+
+/datum/spawner/late_party
+ name = "Поздняя Группа"
+ desc = "."
+ ranks = list(ROLE_GHOSTLY)
+ priority = 1001
+
+ register_only = TRUE
+
+ var/datum/late_party/late_party_type
+ var/list/datum/late_party/possible_parties = list()
+
+
+/datum/spawner/late_party/New()
+ for(var/party_type in subtypesof(/datum/late_party))
+ var/datum/late_party/party = new party_type
+ if(!party.name)
+ qdel(party)
+ continue
+ LAZYADD(possible_parties, party)
+ late_party_type = pick(possible_parties)
+ global.current_late_party = late_party_type
+ //time_for_registration = rand(25 MINUTES, 45 MINUTES)
+ time_for_registration = rand(30 SECONDS, 45 SECONDS)
+ positions = late_party_type.members.len
+ to_chat(world, "[late_party_type.name]")
+ to_chat(world, "[late_party_type.members.len]")
+ ..()
+
+
+/datum/spawner/late_party/roll_registrations()
+ if(registered_candidates.len < late_party_type.members.len)
+ //REROLL
+ for(var/party_type in subtypesof(/datum/late_party))
+ var/datum/late_party/party = new party_type
+ if(!party.name)
+ qdel(party)
+ continue
+ LAZYADD(possible_parties, party)
+ late_party_type = pick(possible_parties)
+ time_for_registration = 5 MINUTES
+ positions = late_party_type.members.len
+ global.current_late_party = late_party_type
+ start_timers()
+ for(var/mob/dead/M in registered_candidates)
+ to_chat(M, "Недостаточно кандидатов для создания поздней группы! Следующая попытка набора через 5 минут!")
+ return
+ ..()
+
+/datum/spawner/late_party/spawn_body(mob/dead/spectator)
+ var/list/potential_roles = list()
+ for(var/datum/late_party_member/members_in_list in late_party_type.members)
+ LAZYADD(potential_roles, members_in_list)
+ to_chat(world, "[members_in_list.name]")
+ var/datum/late_party_member/member = pick(potential_roles)
+ //LAZYREMOVE(late_party_type.members, member)
+
+ var/client/C = spectator.client
+
+ var/datum/faction/F = find_faction_by_type(member.faction)
+ member.holder = new(null)
+ C.create_human_apperance(member.holder)
+
+ var/turf/T = pick(landmarks_list[member.spawnloc])
+ member.holder.loc = get_turf(T)
+ member.holder.key = C.key
+
+ create_and_setup_role(member.role, member.holder)
+ add_faction_member(F, member.holder, FALSE, TRUE)
+ member.holder.equipOutfit(member.outfit)
+ to_chat(member.holder, "Вот ты и здесь...")
+
+
+/datum/late_party
+ var/name
+ var/list/datum/late_party_member/members = list() //members of lateparty (/datum/late_party_member)
+
+/datum/late_party/proc/post_spawn() //for announcements and events after the party appears.
+ return
+
+/datum/late_party_member
+ var/name = "Generic Name"
+ var/datum/role/role //member role
+ var/datum/faction/faction //member faction
+ var/spawnloc //spawn landmark
+ var/mob/living/carbon/human/holder //spectator new body
+ var/outfit //holder outfit
+
+////////////////////////////////Communists!///////////////////////////////////////////////////////////
+
+/datum/late_party/commy
+ name = "Отряд СССП"
+ members = list(
+ /datum/late_party_member/soviet_soldier
+ ///datum/late_party_member/soviet_soldier,
+ ///datum/late_party_member/soviet_soldier,
+ ///datum/late_party_member/soviet_soldier,
+ ///datum/late_party_member/soviet_soldier,
+ ///datum/late_party_member/soviet_soldier,
+ ///datum/late_party_member/soviet_soldier,
+ ///datum/late_party_member/soviet_comissar
+ )
+
+
+/datum/late_party_member/soviet_soldier
+ name = "Красноармеец"
+ role = /datum/role/late_party_member
+ faction = /datum/faction/late_party/communists
+ spawnloc = "lp_communist"
+ outfit = /datum/outfit/responders/ussp
+
+///datum/late_party_member/soviet_comissar
+// name = "Коммисар СССП"
+// role =
+// faction =
+// spawnloc =
+// outfit = /datum/outfit/responders/ussp/leader
diff --git a/code/game/gamemodes/factions/late_parties.dm b/code/game/gamemodes/factions/late_parties.dm
new file mode 100644
index 000000000000..d7007766c4b1
--- /dev/null
+++ b/code/game/gamemodes/factions/late_parties.dm
@@ -0,0 +1,12 @@
+/datum/faction/late_party
+ name = "Late Party"
+ ID = F_LATE_PARTY
+ logo_state = "late_party_logo"
+
+ initroletype = /datum/role/late_party_member
+
+/datum/faction/late_party/communists
+ name = F_LP_COMMUNISTS
+ ID = F_LP_COMMUNISTS
+ logo_state = "soviet"
+
diff --git a/code/game/gamemodes/roles/late_party_members.dm b/code/game/gamemodes/roles/late_party_members.dm
new file mode 100644
index 000000000000..6ad819f4948c
--- /dev/null
+++ b/code/game/gamemodes/roles/late_party_members.dm
@@ -0,0 +1,9 @@
+/datum/role/late_party_member
+ name = LATE_PARTY_MEMBER
+ id = LATE_PARTY_MEMBER
+ disallow_job = TRUE
+
+ logo_state = "late_party_logo"
+ antag_hud_type = ANTAG_HUD_LATE_PARTY
+ antag_hud_name = "hud_late_party_member"
+ skillset_type = /datum/skillset/max
diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm
index 7d2842d7e65f..6513663dffe5 100644
--- a/code/game/objects/effects/landmarks.dm
+++ b/code/game/objects/effects/landmarks.dm
@@ -356,6 +356,13 @@ var/global/list/list/landmarks_list = list() // assoc list of all landmarks crea
/obj/effect/landmark/heist_spawn
name = "Heist"
+/obj/effect/landmark/late_party
+ icon = 'icons/effects/landmarks_static.dmi'
+
+/obj/effect/landmark/late_party/communist
+ name = "lp_communist"
+ icon_state = "late_party_commy"
+
/obj/effect/landmark/latejoin
name = "JoinLate"
diff --git a/icons/effects/landmarks_static.dmi b/icons/effects/landmarks_static.dmi
index 9fe069642c2b..5082bccd098d 100644
Binary files a/icons/effects/landmarks_static.dmi and b/icons/effects/landmarks_static.dmi differ
diff --git a/icons/hud/hud.dmi b/icons/hud/hud.dmi
index 68173b4e195d..a742e27cc959 100644
Binary files a/icons/hud/hud.dmi and b/icons/hud/hud.dmi differ
diff --git a/icons/misc/logos.dmi b/icons/misc/logos.dmi
index d394141d74f5..c694e738779f 100644
Binary files a/icons/misc/logos.dmi and b/icons/misc/logos.dmi differ
diff --git a/maps/centcom/centcom.dmm b/maps/centcom/centcom.dmm
index 37ed2bec28ff..c96d2e2181ed 100644
--- a/maps/centcom/centcom.dmm
+++ b/maps/centcom/centcom.dmm
@@ -29755,6 +29755,10 @@
},
/turf/environment/space,
/area/shuttle/escape/centcom)
+"pVk" = (
+/obj/effect/landmark/late_party/communist,
+/turf/unsimulated/floor,
+/area/centcom/specops)
"pWb" = (
/obj/structure/object_wall/evac{
density = 0;
@@ -60005,7 +60009,7 @@ aCV
aDi
bpb
aEc
-aCV
+pVk
aBQ
bib
aBY
diff --git a/taucetistation.dme b/taucetistation.dme
index af1090459254..de83246fb4af 100644
--- a/taucetistation.dme
+++ b/taucetistation.dme
@@ -441,6 +441,7 @@
#include "code\datums\qualities\quirkieish.dm"
#include "code\datums\round_aspects\round_aspects.dm"
#include "code\datums\spawners_menu\spawners.dm"
+#include "code\datums\spawners_menu\spawners_lateparty.dm"
#include "code\datums\spawners_menu\spawners_living.dm"
#include "code\datums\spawners_menu\spawners_menu.dm"
#include "code\datums\spawners_menu\spawners_replicators.dm"
@@ -556,6 +557,7 @@
#include "code\game\gamemodes\factions\families.dm"
#include "code\game\gamemodes\factions\heist.dm"
#include "code\game\gamemodes\factions\infestation.dm"
+#include "code\game\gamemodes\factions\late_parties.dm"
#include "code\game\gamemodes\factions\malf_silicons.dm"
#include "code\game\gamemodes\factions\ninja.dm"
#include "code\game\gamemodes\factions\props.dm"
@@ -759,6 +761,7 @@
#include "code\game\gamemodes\roles\evil_shade.dm"
#include "code\game\gamemodes\roles\families.dm"
#include "code\game\gamemodes\roles\heist.dm"
+#include "code\game\gamemodes\roles\late_party_members.dm"
#include "code\game\gamemodes\roles\malf_unit.dm"
#include "code\game\gamemodes\roles\ninja.dm"
#include "code\game\gamemodes\roles\prisoner.dm"