diff --git a/config/credits/jobs/new_year_staffjobs.txt b/config/credits/jobs/new_year_staffjobs.txt new file mode 100644 index 000000000000..ee79492d060b --- /dev/null +++ b/config/credits/jobs/new_year_staffjobs.txt @@ -0,0 +1,11 @@ +Рудольф +Ответственный за сани +Эльф +Снеговик +Сосулька +Гринч +Снежинка +Дух Прошлого Рождества +Дух Настоящего Рождества +Дух Будущего Рождества +Скрудж diff --git a/config/credits/sounds/LICENSE.MD b/config/credits/sounds/LICENSE.MD index 1408d050da31..e7eded6586a8 100644 --- a/config/credits/sounds/LICENSE.MD +++ b/config/credits/sounds/LICENSE.MD @@ -1 +1,5 @@ +################################################################################################## + Twin Musicom - Spooky Ride.mp3 by Twin Musicom, under https://creativecommons.org/licenses/by/4.0/ + +################################################################################################## diff --git a/config/credits/sounds/new_year_title_music.txt b/config/credits/sounds/new_year_title_music.txt new file mode 100644 index 000000000000..ddfc35b65439 --- /dev/null +++ b/config/credits/sounds/new_year_title_music.txt @@ -0,0 +1 @@ +config/credits/sounds/space_asshole.ogg diff --git a/config/credits/titles/new_year_titles.txt b/config/credits/titles/new_year_titles.txt new file mode 100644 index 000000000000..cbfc9f70ab44 --- /dev/null +++ b/config/credits/titles/new_year_titles.txt @@ -0,0 +1 @@ +НОВОГОДНИЙ СПЕШЛ diff --git a/config/credits/titles/random_new_year_titles_masculine_2_1.txt b/config/credits/titles/random_new_year_titles_masculine_2_1.txt new file mode 100644 index 000000000000..dc61394588a7 --- /dev/null +++ b/config/credits/titles/random_new_year_titles_masculine_2_1.txt @@ -0,0 +1,9 @@ +НОВОГОДНИЙ +ПРАЗДНИЧНЫЙ +ЛЕДЯНОЙ +ПОДАРОЧНЫЙ +СКАЗОЧНЫЙ +СНЕЖНЫЙ +УЮТНЫЙ +ХОХОХОШНЫЙ +РАЗВЛЕКАТЕЛЬНЫЙ diff --git a/config/credits/titles/random_new_year_titles_masculine_2_2.txt b/config/credits/titles/random_new_year_titles_masculine_2_2.txt new file mode 100644 index 000000000000..94610eebc57f --- /dev/null +++ b/config/credits/titles/random_new_year_titles_masculine_2_2.txt @@ -0,0 +1,18 @@ +СНЕГОВИК +ПРАЗДНИК +ГЛИНТВЕЙН +ХОЛОДИЛЬНИК +ОЛЕНЬ +РАУНД +ДВИГАТЕЛЬ +КАПИТАН +МЕДБЕЙ +ОФИЦЕР +ПОВАР +ШАХТЕР +УЧЕНЫЙ +ИНЖЕНЕР +ПИЗДЕЦ +ЩИТСПАВН +СРОЧНИК +ОЛЕГ diff --git a/modular_ss220/cinematics/code/cinematics/credits.dm b/modular_ss220/cinematics/code/cinematics/credits.dm index 42c70e870b94..388e7580a878 100644 --- a/modular_ss220/cinematics/code/cinematics/credits.dm +++ b/modular_ss220/cinematics/code/cinematics/credits.dm @@ -51,6 +51,13 @@ screen = new /obj/screen/cinematic/credits/halloween() +/datum/cinematic/credits/new_year + +/datum/cinematic/credits/new_year/New(watcher, datum/callback/special_callback) + . = ..() + + screen = new /obj/screen/cinematic/credits/new_year() + /obj/screen/cinematic/credits icon_state = "blank" alpha = 0 @@ -64,6 +71,10 @@ icon = 'modular_ss220/cinematics/icons/backdrops.dmi' icon_state = "halloween" +/obj/screen/cinematic/credits/new_year + icon = 'modular_ss220/cinematics/icons/backdrops.dmi' + icon_state = "new_year" + /obj/screen/fullscreen/cinematic_backdrop/credits alpha = 0 diff --git a/modular_ss220/cinematics/icons/LICENSE.MD b/modular_ss220/cinematics/icons/LICENSE.MD index 5b44d04b5dd3..82d18486ab4e 100644 --- a/modular_ss220/cinematics/icons/LICENSE.MD +++ b/modular_ss220/cinematics/icons/LICENSE.MD @@ -1 +1,5 @@ +##################################################################################################################################################################### pumpkin screen image by Yuri_b from https://pixabay.com/illustrations/halloween-pumpkin-dark-background-1702677/ under https://pixabay.com/service/license-summary/ +##################################################################################################################################################################### +red christmas background by monicore from https://pixabay.com/illustrations/red-christmas-tree-christmas-2892235/ under https://pixabay.com/service/license-summary/ +##################################################################################################################################################################### diff --git a/modular_ss220/cinematics/icons/backdrops.dmi b/modular_ss220/cinematics/icons/backdrops.dmi index b6ad27e07c41..3d9155641767 100644 Binary files a/modular_ss220/cinematics/icons/backdrops.dmi and b/modular_ss220/cinematics/icons/backdrops.dmi differ diff --git a/modular_ss220/credits/_credits.dme b/modular_ss220/credits/_credits.dme index 450ab83a8f85..fc10fbe7d1e0 100644 --- a/modular_ss220/credits/_credits.dme +++ b/modular_ss220/credits/_credits.dme @@ -1,5 +1,6 @@ #include "code\SScredits.dm" #include "code\credits.dm" #include "code\halloween_credits.dm" +#include "code\new_year_credits.dm" #include "_credits.dm" diff --git a/modular_ss220/credits/code/SScredits.dm b/modular_ss220/credits/code/SScredits.dm index 4bda40135774..6a7252bde272 100644 --- a/modular_ss220/credits/code/SScredits.dm +++ b/modular_ss220/credits/code/SScredits.dm @@ -18,7 +18,10 @@ SUBSYSTEM_DEF(credits) /datum/controller/subsystem/credits/proc/play_credits_cinematic() var/cinematic_type - if(HALLOWEEN in SSholiday.holidays) + if(NEW_YEAR in SSholiday.holidays) + end_titles = new /datum/credits/new_year() + cinematic_type = /datum/cinematic/credits/new_year + else if(HALLOWEEN in SSholiday.holidays) end_titles = new /datum/credits/halloween() cinematic_type = /datum/cinematic/credits/halloween else @@ -33,10 +36,7 @@ SUBSYSTEM_DEF(credits) end_titles.roll_credits_for_clients(clients) /datum/controller/subsystem/credits/proc/clear_credits(client/client) - if(!client) + if(!client?.credits) return - for(var/credit in client.credits) - client.screen -= credit - client.credits.Cut() diff --git a/modular_ss220/credits/code/credits.dm b/modular_ss220/credits/code/credits.dm index 5bc7f252fd1c..746db5113493 100644 --- a/modular_ss220/credits/code/credits.dm +++ b/modular_ss220/credits/code/credits.dm @@ -17,8 +17,10 @@ . = ..() credit_animate_height = 16 * world.icon_size + var/list/title_musics = file2list("config/credits/sounds/title_music.txt") + title_musics.Remove("") - soundtrack = pick(file2list("config/credits/sounds/title_music.txt")) + soundtrack = pick(title_musics) fill_credits() diff --git a/modular_ss220/credits/code/new_year_credits.dm b/modular_ss220/credits/code/new_year_credits.dm new file mode 100644 index 000000000000..78e8aed3e323 --- /dev/null +++ b/modular_ss220/credits/code/new_year_credits.dm @@ -0,0 +1,150 @@ +/datum/credits/new_year/New() + . = ..() + var/list/new_year_musics = file2list("config/credits/sounds/new_year_title_music.txt") + new_year_musics.Remove("") + + soundtrack = pick(new_year_musics) + +/datum/credits/new_year/fill_credits() + credits += new /datum/credit/episode_title/new_year() + credits += new /datum/credit/streamers() + credits += new /datum/credit/donators/new_year() + credits += new /datum/credit/crewlist/new_year() + credits += new /datum/credit/corpses/new_year() + credits += new /datum/credit/staff/new_year() + credits += new /datum/credit/disclaimer() + +/datum/credit/episode_title/new_year/New() + var/episode_title = "" + + var/list/titles = list() + + titles["finished"] = file2list("config/credits/titles/new_year_titles.txt") + titles["masculine1"] = file2list("config/credits/titles/random_new_year_titles_masculine_2_1.txt") + titles["masculine2"] = file2list("config/credits/titles/random_new_year_titles_masculine_2_2.txt") + + for(var/possible_titles in titles) + LAZYREMOVEASSOC(titles, possible_titles, "") + + switch(rand(1,100)) + if(1 to 10) + episode_title += pick(titles["finished"]) + if(11 to 100) + episode_title += "[pick(titles["masculine1"])] [pick(titles["masculine2"])]" + + content += "

🎃EPISODE [GLOB.round_id]🎃

[episode_title]

" + +/datum/credit/donators/new_year/New() + var/list/donators = list() + var/list/chunk = list() + + var/chunksize = 0 + + for(var/client/client in GLOB.clients) + if(!client.donator_level) + continue + if(client.donator_level > DONATOR_LEVEL_MAX) + continue + if(!length(donators)) + donators += "
" + donators += "

Дети которые хорошо себя вели:

" + + chunk += "[client.ckey] [client.donator_level]-ого уровеня подписки" + chunksize++ + + if(chunksize > 2) + donators += "
[jointext(chunk,"
")]
" + chunk.Cut() + chunksize = 0 + + if(length(chunk)) + donators += "
[jointext(chunk,"
")]
" + + content += donators + +/datum/credit/crewlist/new_year/New() + var/list/cast = list() + var/list/chunk = list() + var/chunksize = 0 + + for(var/mob/living/carbon/human/human in GLOB.alive_mob_list | GLOB.dead_mob_list) + if(findtext(human.real_name,"(mannequin)")) + continue + if(ismonkeybasic(human)) + continue + if(!human.last_known_ckey) + continue + if(!human.mind?.assigned_role) + continue + + if(!length(cast)) + cast += "
" + cast += "

Участники новогоднего представления:

" + chunk += "[human.real_name] в роли [uppertext(human.mind.assigned_role)]" + chunksize++ + if(chunksize > 2) + cast += "
[jointext(chunk,"
")]
" + chunk.Cut() + chunksize = 0 + + if(length(chunk)) + cast += "
[jointext(chunk,"
")]
" + + content += cast + +/datum/credit/corpses/new_year/New() + . = ..() + + var/list/corpses = list() + + for(var/mob/living/carbon/human/human in GLOB.dead_mob_list) + if(!human.last_known_ckey) + continue + else if(human.real_name) + corpses += human.real_name + + if(length(corpses)) + content += "
" + content += "

Дети которые плохо себя вели:

" + while(length(corpses) > 10) + content += "
[jointext(corpses, ", ", 1, 10)],
" + corpses.Cut(1, 10) + + if(length(corpses)) + content += "
[jointext(corpses, ", ")].
" + +/datum/credit/staff/new_year/New() + var/list/staff = list() + var/list/chunk = list() + var/list/goodboys = list() + var/list/staffjobs = file2list("config/credits/jobs/new_year_staffjobs.txt") + + staffjobs.Remove("") + + var/chunksize = 0 + + for(var/client/client in GLOB.clients) + if(!client.holder) + continue + if(!length(staff)) + staff += "
" + staff += "

Помощники Санты:

" + + if(check_rights_client(R_DEBUG|R_ADMIN|R_MOD, FALSE, client)) + chunk += "[uppertext(pick(staffjobs))] - '[client.key]'" + chunksize++ + else if(check_rights_client(R_MENTOR, FALSE, client)) + goodboys += "[client.key]" + + if(chunksize > 2) + staff += "
[jointext(chunk,"
")]
" + chunk.Cut() + chunksize = 0 + + if(length(chunk)) + staff += "
[jointext(chunk,"
")]
" + + content += staff + + if(length(goodboys)) + content += "

Олени Санты:

[english_list(goodboys, and_text = " и " )]

"